diff --git a/arch/lib/Makefile b/arch/lib/Makefile index 40749982c3df..a205a62e4540 100644 --- a/arch/lib/Makefile +++ b/arch/lib/Makefile @@ -169,9 +169,19 @@ KERNEL_BUILTIN=$(addprefix $(srctree)/,$(addsuffix builtin.o,$(dirs))) OBJS=$(LIB_OBJ) $(foreach builtin,$(KERNEL_BUILTIN),$(if $($(builtin)),$($(builtin)))) export OBJS KERNEL_LIB COV covl_yes covl_no +# objcopy trick is taken from rumpkernel +EXP_SYMRENAME=rump|RUMP|lib_|g_imported|g_kernel|__initcall_start|__initcall_end|_GLOBAL_OFFSET_TABLE'${_SYMQUIRK}'${RUMP_SYM_NORENAME:D|${RUMP_SYM_NORENAME}} + quiet_cmd_cc = CC $@ cmd_cc = mkdir -p $(dir $@); \ - $(CC) $(CFLAGS) -c $< -o $@ + $(CC) $(CFLAGS) -c $< -o $@; \ + ${NM} -go $@ | awk ' \ + $$NF!~/^'${_PQ}'(${EXP_SYMRENAME})/ \ + {s=$$NF;sub(/^'${_PQ}'/, "&rumpns_", s); print $$NF, s}'\ + | sort | uniq > $@.renametab; \ + objcopy --preserve-dates --redefine-syms $@.renametab $@; \ + rm -f $@.renametab + quiet_cmd_linkko = KO $@ cmd_linkko = $(CC) -shared -o $@ -nostdlib $^ quiet_cmd_builtin = BUILTIN $@