@@ -122,13 +122,22 @@ cmd_cpp_i_c = $(CPP) $(c_flags) -o $@ $<
122
122
$(obj)/%.i: $(obj)/%.c FORCE
123
123
$(call if_changed_dep,cpp_i_c)
124
124
125
+ gendwarfksyms := scripts/gendwarfksyms/gendwarfksyms
126
+ getexportsymbols = $(NM) $(1) | sed -n 's/.* __export_symbol_\(.*\)/$(2)/p'
127
+
125
128
genksyms = scripts/genksyms/genksyms \
126
129
$(if $(1), -T $(2)) \
127
130
$(if $(KBUILD_PRESERVE), -p) \
128
131
-r $(or $(wildcard $(2:.symtypes=.symref)), /dev/null)
129
132
130
133
# These mirror gensymtypes_S and co below, keep them in synch.
134
+ ifdef CONFIG_GENDWARFKSYMS
135
+ cmd_gensymtypes_c = $(if $(skip_gendwarfksyms),, \
136
+ $(call getexportsymbols,$(2:.symtypes=.o),\1) | \
137
+ $(gendwarfksyms) $(2:.symtypes=.o) $(if $(1), --symtypes $(2)))
138
+ else
131
139
cmd_gensymtypes_c = $(CPP) -D__GENKSYMS__ $(c_flags) $< | $(genksyms)
140
+ endif # CONFIG_GENDWARFKSYMS
132
141
133
142
quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@
134
143
cmd_cc_symtypes_c = $(call cmd_gensymtypes_c,true,$@) >/dev/null
@@ -324,14 +333,27 @@ $(obj)/%.ll: $(obj)/%.rs FORCE
324
333
# This is convoluted. The .S file must first be preprocessed to run guards and
325
334
# expand names, then the resulting exports must be constructed into plain
326
335
# EXPORT_SYMBOL(symbol); to build our dummy C file, and that gets preprocessed
327
- # to make the genksyms input.
336
+ # to make the genksyms input or compiled into an object for gendwarfksyms .
328
337
#
329
338
# These mirror gensymtypes_c and co above, keep them in synch.
330
- cmd_gensymtypes_S = \
331
- { echo "\#include <linux/kernel.h>" ; \
332
- echo "\#include <asm/asm-prototypes.h>" ; \
333
- $(NM) $@ | sed -n 's/.* __export_symbol_\(.*\)/EXPORT_SYMBOL(\1);/p' ; } | \
334
- $(CPP) -D__GENKSYMS__ $(c_flags) -xc - | $(genksyms)
339
+ getasmexports = \
340
+ { echo "\#include <linux/kernel.h>" ; \
341
+ echo "\#include <linux/string.h>" ; \
342
+ echo "\#include <asm/asm-prototypes.h>" ; \
343
+ $(call getexportsymbols,$@,EXPORT_SYMBOL(\1);) ; }
344
+
345
+ ifdef CONFIG_GENDWARFKSYMS
346
+ cmd_gensymtypes_S = \
347
+ $(getasmexports) | \
348
+ $(CC) $(c_flags) -c -o $(@:.o=.gendwarfksyms.o) -xc -; \
349
+ $(call getexportsymbols,$@,\1) | \
350
+ $(gendwarfksyms) $(@:.o=.gendwarfksyms.o) \
351
+ $(if $(1), --symtypes $(2))
352
+ else
353
+ cmd_gensymtypes_S = \
354
+ $(getasmexports) | \
355
+ $(CPP) -D__GENKSYMS__ $(c_flags) -xc - | $(genksyms)
356
+ endif # CONFIG_GENDWARFKSYMS
335
357
336
358
quiet_cmd_cc_symtypes_S = SYM $(quiet_modtag) $@
337
359
cmd_cc_symtypes_S = $(call cmd_gensymtypes_S,true,$@) >/dev/null
0 commit comments