mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-04 09:34:12 +08:00
397c66c2c9
On alpha str{n,}{cpy,cat}() implementations are playing fun games with shared chunks of code. The problem is, they are using direct branches and need to be next to each other. Currently it's done by building them in separate object files, then using ld -r to link those together. Unfortunately, genksyms machinery has no idea what to do with that - we have generated in arch/alpha/lib/.strcat.S.cmd, but there's nothing to propagate that into .stycpy.S.cmd, so modpost doesn't find anything for those symbols, resulting in WARNING: modpost: EXPORT symbol "strcpy" [vmlinux] version generation failed, symbol will not be versioned. Is "strcpy" prototyped in <asm/asm-prototypes.h>? WARNING: modpost: EXPORT symbol "strcat" [vmlinux] version generation failed, symbol will not be versioned. Is "strcat" prototyped in <asm/asm-prototypes.h>? WARNING: modpost: EXPORT symbol "strncpy" [vmlinux] version generation failed, symbol will not be versioned. Is "strncpy" prototyped in <asm/asm-prototypes.h>? WARNING: modpost: EXPORT symbol "strncat" [vmlinux] version generation failed, symbol will not be versioned. Is "strncat" prototyped in <asm/asm-prototypes.h>? spew on modversion-enabled builds (all 4 functions in question are in fact prototyped in asm-prototypes.h) Fixing doesn't require messing with kbuild, thankfully - just build one object (i.e. have sty{n,}cpy.S with includes of relevant *.S instead of playing with ld -r) and that's it. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Acked-by: Paul E. McKenney <paulmck@kernel.org> Acked-by: Matt Turner <mattst88@gmail.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
47 lines
1.1 KiB
Makefile
47 lines
1.1 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Makefile for alpha-specific library files..
|
|
#
|
|
|
|
asflags-y := $(KBUILD_CFLAGS)
|
|
|
|
# Many of these routines have implementations tuned for ev6.
|
|
# Choose them iff we're targeting ev6 specifically.
|
|
ev6-$(CONFIG_ALPHA_EV6) := ev6-
|
|
|
|
# Several make use of the cttz instruction introduced in ev67.
|
|
ev67-$(CONFIG_ALPHA_EV67) := ev67-
|
|
|
|
lib-y = __divqu.o __remqu.o __divlu.o __remlu.o \
|
|
udiv-qrnnd.o \
|
|
udelay.o \
|
|
$(ev6-y)memset.o \
|
|
$(ev6-y)memcpy.o \
|
|
memmove.o \
|
|
checksum.o \
|
|
csum_partial_copy.o \
|
|
$(ev67-y)strlen.o \
|
|
stycpy.o \
|
|
styncpy.o \
|
|
$(ev67-y)strchr.o \
|
|
$(ev67-y)strrchr.o \
|
|
$(ev6-y)memchr.o \
|
|
$(ev6-y)copy_user.o \
|
|
$(ev6-y)clear_user.o \
|
|
$(ev6-y)csum_ipv6_magic.o \
|
|
$(ev6-y)clear_page.o \
|
|
$(ev6-y)copy_page.o \
|
|
fpreg.o \
|
|
callback_srm.o srm_puts.o srm_printk.o \
|
|
fls.o
|
|
|
|
# The division routines are built from single source, with different defines.
|
|
AFLAGS___divqu.o = -DDIV
|
|
AFLAGS___remqu.o = -DREM
|
|
AFLAGS___divlu.o = -DDIV -DINTSIZE
|
|
AFLAGS___remlu.o = -DREM -DINTSIZE
|
|
|
|
$(addprefix $(obj)/,__divqu.o __remqu.o __divlu.o __remlu.o): \
|
|
$(src)/$(ev6-y)divide.S FORCE
|
|
$(call if_changed_rule,as_o_S)
|