|
@@ -81,6 +81,7 @@ endif
|
|
|
|
|
|
ifneq ($(strip $(lib-y) $(lib-m) $(lib-)),)
|
|
ifneq ($(strip $(lib-y) $(lib-m) $(lib-)),)
|
|
lib-target := $(obj)/lib.a
|
|
lib-target := $(obj)/lib.a
|
|
|
|
+obj-y += $(obj)/lib-ksyms.o
|
|
endif
|
|
endif
|
|
|
|
|
|
ifneq ($(strip $(obj-y) $(obj-m) $(obj-) $(subdir-m) $(lib-target)),)
|
|
ifneq ($(strip $(obj-y) $(obj-m) $(obj-) $(subdir-m) $(lib-target)),)
|
|
@@ -395,6 +396,25 @@ $(lib-target): $(lib-y) FORCE
|
|
$(call if_changed,link_l_target)
|
|
$(call if_changed,link_l_target)
|
|
|
|
|
|
targets += $(lib-target)
|
|
targets += $(lib-target)
|
|
|
|
+
|
|
|
|
+dummy-object = $(obj)/.lib_exports.o
|
|
|
|
+ksyms-lds = $(dot-target).lds
|
|
|
|
+ifdef CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX
|
|
|
|
+ref_prefix = EXTERN(_
|
|
|
|
+else
|
|
|
|
+ref_prefix = EXTERN(
|
|
|
|
+endif
|
|
|
|
+
|
|
|
|
+quiet_cmd_export_list = EXPORTS $@
|
|
|
|
+cmd_export_list = $(OBJDUMP) -h $< | \
|
|
|
|
+ sed -ne '/___ksymtab/{s/.*+/$(ref_prefix)/;s/ .*/)/;p}' >$(ksyms-lds);\
|
|
|
|
+ rm -f $(dummy-object);\
|
|
|
|
+ $(AR) rcs$(KBUILD_ARFLAGS) $(dummy-object);\
|
|
|
|
+ $(LD) $(ld_flags) -r -o $@ -T $(ksyms-lds) $(dummy-object);\
|
|
|
|
+ rm $(dummy-object) $(ksyms-lds)
|
|
|
|
+
|
|
|
|
+$(obj)/lib-ksyms.o: $(lib-target) FORCE
|
|
|
|
+ $(call if_changed,export_list)
|
|
endif
|
|
endif
|
|
|
|
|
|
#
|
|
#
|