Blame view
scripts/Makefile.modpost
4.43 KB
b24413180 License cleanup: ... |
1 |
# SPDX-License-Identifier: GPL-2.0 |
1da177e4c Linux-2.6.12-rc2 |
2 3 4 5 6 7 |
# =========================================================================== # Module versions # =========================================================================== # # Stage one of module building created the following: # a) The individual .o files used for the module |
c30fe7f73 fix typos "wich" ... |
8 |
# b) A <module>.o file which is the .o files above linked together |
b7dca6dd1 kbuild: create *.... |
9 10 |
# c) A <module>.mod file, listing the name of the preliminary <module>.o file, # plus all .o files |
ff9b45c55 kbuild: modpost: ... |
11 |
# d) modules.order, which lists all the modules |
1da177e4c Linux-2.6.12-rc2 |
12 13 |
# Stage 2 is handled by this file and does the following |
ff9b45c55 kbuild: modpost: ... |
14 |
# 1) Find all modules listed in modules.order |
1da177e4c Linux-2.6.12-rc2 |
15 16 17 |
# 2) modpost is then used to # 3) create one <module>.mod.c file pr. module # 4) create one Module.symvers file with CRC for all exported symbols |
1da177e4c Linux-2.6.12-rc2 |
18 19 20 |
# Step 3 is used to place certain information in the module's ELF # section, including information such as: |
163d3fe6a kbuild: Fix refer... |
21 |
# Version magic (see include/linux/vermagic.h for full details) |
1da177e4c Linux-2.6.12-rc2 |
22 23 |
# - Kernel release # - SMP is CONFIG_SMP |
4b950bb9a Kbuild: Handle PR... |
24 |
# - PREEMPT is CONFIG_PREEMPT[_RT] |
1da177e4c Linux-2.6.12-rc2 |
25 26 27 28 29 30 31 32 |
# - GCC Version # Module info # - Module version (MODULE_VERSION) # - Module alias'es (MODULE_ALIAS) # - Module license (MODULE_LICENSE) # - See include/linux/module.h for more details # Step 4 is solely used to allow module versioning in external modules, |
4696e2958 trivial: fix a ty... |
33 |
# where the CRC of each module is retrieved from the Module.symvers file. |
1da177e4c Linux-2.6.12-rc2 |
34 |
|
ea837f1c0 kbuild: make modp... |
35 36 37 |
# KBUILD_MODPOST_WARN can be set to avoid error out in case of undefined # symbols in the final module linking stage # KBUILD_MODPOST_NOFINAL can be set to skip the final link of modules. |
25985edce Fix common misspe... |
38 |
# This is solely useful to speed up test compiles |
a721588d9 kbuild: modpost: ... |
39 40 41 |
PHONY := __modpost __modpost: |
1da177e4c Linux-2.6.12-rc2 |
42 |
|
c955ccafc kconfig: fix .con... |
43 |
include include/config/auto.conf |
8ec4b4ff1 kbuild: introduce... |
44 |
include scripts/Kbuild.include |
0d96fb20b kbuild: Add new K... |
45 |
|
ba01e93b4 FROMLIST: kbuild:... |
46 47 |
# for ld_flags include scripts/Makefile.lib |
54b778476 modpost: return e... |
48 49 50 |
MODPOST = scripts/mod/modpost \ $(if $(CONFIG_MODVERSIONS),-m) \ $(if $(CONFIG_MODULE_SRCVERSION_ALL),-a) \ |
54b778476 modpost: return e... |
51 |
$(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \ |
bcfedae7d modpost: print sy... |
52 53 |
$(if $(KBUILD_MODPOST_WARN),-w) \ -o $@ |
a721588d9 kbuild: modpost: ... |
54 55 |
ifdef MODPOST_VMLINUX |
bcfedae7d modpost: print sy... |
56 57 |
quiet_cmd_modpost = MODPOST $@ cmd_modpost = $(MODPOST) $< |
a721588d9 kbuild: modpost: ... |
58 |
|
269a535ca modpost: generate... |
59 |
vmlinux.symvers: vmlinux.o |
a721588d9 kbuild: modpost: ... |
60 |
$(call cmd,modpost) |
269a535ca modpost: generate... |
61 |
__modpost: vmlinux.symvers |
bcfedae7d modpost: print sy... |
62 |
|
a721588d9 kbuild: modpost: ... |
63 |
else |
1747269ab modpost: do not p... |
64 |
ifeq ($(KBUILD_EXTMOD),) |
269a535ca modpost: generate... |
65 66 |
input-symdump := vmlinux.symvers |
bcfedae7d modpost: print sy... |
67 |
output-symdump := Module.symvers |
1747269ab modpost: do not p... |
68 |
else |
96d97f262 kbuild: fix $(src... |
69 |
|
fab546e6c kbuild: update co... |
70 |
# set src + obj - they may be used in the modules's Makefile |
96d97f262 kbuild: fix $(src... |
71 72 |
obj := $(KBUILD_EXTMOD) src := $(obj) |
0d96fb20b kbuild: Add new K... |
73 74 75 |
# Include the module's Makefile to find KBUILD_EXTRA_SYMBOLS include $(if $(wildcard $(KBUILD_EXTMOD)/Kbuild), \ $(KBUILD_EXTMOD)/Kbuild, $(KBUILD_EXTMOD)/Makefile) |
e3fb4df7f modpost: re-add -... |
76 77 78 |
# modpost option for external modules MODPOST += -e |
f1005b30a modpost: refactor... |
79 |
input-symdump := Module.symvers $(KBUILD_EXTRA_SYMBOLS) |
bcfedae7d modpost: print sy... |
80 |
output-symdump := $(KBUILD_EXTMOD)/Module.symvers |
0d96fb20b kbuild: Add new K... |
81 |
endif |
4e5ab74c3 modpost: pass -N ... |
82 83 |
# modpost options for modules (both in-kernel and external) MODPOST += \ |
436b2ac60 modpost: invoke m... |
84 |
$(addprefix -i ,$(wildcard $(input-symdump))) \ |
859c926ae modpost: move -d ... |
85 |
$(if $(KBUILD_NSDEPS),-d $(MODULES_NSDEPS)) \ |
4e5ab74c3 modpost: pass -N ... |
86 |
$(if $(CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS)$(KBUILD_NSDEPS),-N) |
91e6ee581 modpost: fix -i (... |
87 88 89 90 |
# 'make -i -k' ignores compile errors, and builds as many modules as possible. ifneq ($(findstring i,$(filter-out --%,$(MAKEFLAGS))),) MODPOST += -n endif |
48a0f7279 modpost: show war... |
91 92 |
# Clear VPATH to not search for *.symvers in $(srctree). Check only $(objtree). VPATH := |
436b2ac60 modpost: invoke m... |
93 |
$(input-symdump): |
48a0f7279 modpost: show war... |
94 95 |
@echo >&2 'WARNING: Symbol version dump "$@" is missing.' @echo >&2 ' Modules may not have dependencies or modversions.' |
436b2ac60 modpost: invoke m... |
96 |
|
ba01e93b4 FROMLIST: kbuild:... |
97 98 99 100 101 102 |
ifdef CONFIG_LTO_CLANG # With CONFIG_LTO_CLANG, .o files might be LLVM bitcode, so we need to run # LTO to compile them into native code before running modpost prelink-ext := .lto quiet_cmd_cc_lto_link_modules = LTO [M] $@ |
93f3831e2 FROMLIST: kbuild:... |
103 104 105 106 107 |
cmd_cc_lto_link_modules = \ $(LD) $(ld_flags) -r -o $@ \ $(shell [ -s $(@:.lto.o=.o.symversions) ] && \ echo -T $(@:.lto.o=.o.symversions)) \ --whole-archive $^ |
ba01e93b4 FROMLIST: kbuild:... |
108 109 110 111 112 113 |
%.lto.o: %.o $(call if_changed,cc_lto_link_modules) endif modules := $(sort $(shell cat $(MODORDER))) |
bcfedae7d modpost: print sy... |
114 |
# Read out modules.order to pass in modpost. |
9b9a3f20c kbuild: split fin... |
115 |
# Otherwise, allmodconfig would fail with "Argument list too long". |
bcfedae7d modpost: print sy... |
116 |
quiet_cmd_modpost = MODPOST $@ |
ba01e93b4 FROMLIST: kbuild:... |
117 |
cmd_modpost = sed 's/\.ko$$/$(prelink-ext)\.o/' $< | $(MODPOST) -T - |
1da177e4c Linux-2.6.12-rc2 |
118 |
|
ba01e93b4 FROMLIST: kbuild:... |
119 |
$(output-symdump): $(MODORDER) $(input-symdump) $(modules:.ko=$(prelink-ext).o) FORCE |
436b2ac60 modpost: invoke m... |
120 121 122 |
$(call if_changed,modpost) targets += $(output-symdump) |
bcfedae7d modpost: print sy... |
123 124 |
__modpost: $(output-symdump) |
9b9a3f20c kbuild: split fin... |
125 126 127 |
ifneq ($(KBUILD_MODPOST_NOFINAL),1) $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modfinal endif |
4f1933620 kbuild: change kb... |
128 |
|
bcfedae7d modpost: print sy... |
129 130 |
PHONY += FORCE FORCE: |
436b2ac60 modpost: invoke m... |
131 132 133 |
existing-targets := $(wildcard $(sort $(targets))) -include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd) |
a721588d9 kbuild: modpost: ... |
134 |
endif |
4f1933620 kbuild: change kb... |
135 |
.PHONY: $(PHONY) |