Commit ff9a7930 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'kbuild-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild

Pull Kbuild updates from Masahiro Yamada:

 - Avoid 'constexpr', which is a keyword in C23

 - Allow 'dtbs_check' and 'dt_compatible_check' run independently of
   'dt_binding_check'

 - Fix weak references to avoid GOT entries in position-independent code
   generation

 - Convert the last use of 'optional' property in arch/sh/Kconfig

 - Remove support for the 'optional' property in Kconfig

 - Remove support for Clang's ThinLTO caching, which does not work with
   the .incbin directive

 - Change the semantics of $(src) so it always points to the source
   directory, which fixes Makefile inconsistencies between upstream and
   downstream

 - Fix 'make tar-pkg' for RISC-V to produce a consistent package

 - Provide reasonable default coverage for objtool, sanitizers, and
   profilers

 - Remove redundant OBJECT_FILES_NON_STANDARD, KASAN_SANITIZE, etc.

 - Remove the last use of tristate choice in drivers/rapidio/Kconfig

 - Various cleanups and fixes in Kconfig

* tag 'kbuild-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (46 commits)
  kconfig: use sym_get_choice_menu() in sym_check_prop()
  rapidio: remove choice for enumeration
  kconfig: lxdialog: remove initialization with A_NORMAL
  kconfig: m/nconf: merge two item_add_str() calls
  kconfig: m/nconf: remove dead code to display value of bool choice
  kconfig: m/nconf: remove dead code to display children of choice members
  kconfig: gconf: show checkbox for choice correctly
  kbuild: use GCOV_PROFILE and KCSAN_SANITIZE in scripts/Makefile.modfinal
  Makefile: remove redundant tool coverage variables
  kbuild: provide reasonable defaults for tool coverage
  modules: Drop the .export_symbol section from the final modules
  kconfig: use menu_list_for_each_sym() in sym_check_choice_deps()
  kconfig: use sym_get_choice_menu() in conf_write_defconfig()
  kconfig: add sym_get_choice_menu() helper
  kconfig: turn defaults and additional prompt for choice members into error
  kconfig: turn missing prompt for choice members into error
  kconfig: turn conf_choice() into void function
  kconfig: use linked list in sym_set_changed()
  kconfig: gconf: use MENU_CHANGED instead of SYMBOL_CHANGED
  kconfig: gconf: remove debug code
  ...
parents 0cc6f45c 6ffe4fdf
...@@ -80,22 +80,22 @@ loop_cmd = $(echo-cmd) $(cmd_$(1)) || exit; ...@@ -80,22 +80,22 @@ loop_cmd = $(echo-cmd) $(cmd_$(1)) || exit;
# * dest folder relative to $(BUILDDIR) and # * dest folder relative to $(BUILDDIR) and
# * cache folder relative to $(BUILDDIR)/.doctrees # * cache folder relative to $(BUILDDIR)/.doctrees
# $4 dest subfolder e.g. "man" for man pages at userspace-api/media/man # $4 dest subfolder e.g. "man" for man pages at userspace-api/media/man
# $5 reST source folder relative to $(srctree)/$(src), # $5 reST source folder relative to $(src),
# e.g. "userspace-api/media" for the linux-tv book-set at ./Documentation/userspace-api/media # e.g. "userspace-api/media" for the linux-tv book-set at ./Documentation/userspace-api/media
quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(BUILDDIR)/$3/$4) quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media $2 && \ cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media $2 && \
PYTHONDONTWRITEBYTECODE=1 \ PYTHONDONTWRITEBYTECODE=1 \
BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(srctree)/$(src)/$5/$(SPHINX_CONF)) \ BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(src)/$5/$(SPHINX_CONF)) \
$(PYTHON3) $(srctree)/scripts/jobserver-exec \ $(PYTHON3) $(srctree)/scripts/jobserver-exec \
$(CONFIG_SHELL) $(srctree)/Documentation/sphinx/parallel-wrapper.sh \ $(CONFIG_SHELL) $(srctree)/Documentation/sphinx/parallel-wrapper.sh \
$(SPHINXBUILD) \ $(SPHINXBUILD) \
-b $2 \ -b $2 \
-c $(abspath $(srctree)/$(src)) \ -c $(abspath $(src)) \
-d $(abspath $(BUILDDIR)/.doctrees/$3) \ -d $(abspath $(BUILDDIR)/.doctrees/$3) \
-D version=$(KERNELVERSION) -D release=$(KERNELRELEASE) \ -D version=$(KERNELVERSION) -D release=$(KERNELRELEASE) \
$(ALLSPHINXOPTS) \ $(ALLSPHINXOPTS) \
$(abspath $(srctree)/$(src)/$5) \ $(abspath $(src)/$5) \
$(abspath $(BUILDDIR)/$3/$4) && \ $(abspath $(BUILDDIR)/$3/$4) && \
if [ "x$(DOCS_CSS)" != "x" ]; then \ if [ "x$(DOCS_CSS)" != "x" ]; then \
cp $(if $(patsubst /%,,$(DOCS_CSS)),$(abspath $(srctree)/$(DOCS_CSS)),$(DOCS_CSS)) $(BUILDDIR)/$3/_static/; \ cp $(if $(patsubst /%,,$(DOCS_CSS)),$(abspath $(srctree)/$(DOCS_CSS)),$(DOCS_CSS)) $(BUILDDIR)/$3/_static/; \
......
...@@ -25,23 +25,25 @@ quiet_cmd_extract_ex = DTEX $@ ...@@ -25,23 +25,25 @@ quiet_cmd_extract_ex = DTEX $@
$(obj)/%.example.dts: $(src)/%.yaml check_dtschema_version FORCE $(obj)/%.example.dts: $(src)/%.yaml check_dtschema_version FORCE
$(call if_changed,extract_ex) $(call if_changed,extract_ex)
find_all_cmd = find $(srctree)/$(src) \( -name '*.yaml' ! \ find_all_cmd = find $(src) \( -name '*.yaml' ! \
-name 'processed-schema*' \) -name 'processed-schema*' \)
find_cmd = $(find_all_cmd) | \ find_cmd = $(find_all_cmd) | \
sed 's|^$(srctree)/||' | \ sed 's|^$(srctree)/||' | \
grep -F -e "$(subst :," -e ",$(DT_SCHEMA_FILES))" | \ grep -F -e "$(subst :," -e ",$(DT_SCHEMA_FILES))" | \
sed 's|^|$(srctree)/|' sed 's|^|$(srctree)/|'
CHK_DT_DOCS := $(shell $(find_cmd)) CHK_DT_EXAMPLES := $(patsubst $(srctree)/%.yaml,%.example.dtb, $(shell $(find_cmd)))
quiet_cmd_yamllint = LINT $(src) quiet_cmd_yamllint = LINT $(src)
cmd_yamllint = ($(find_cmd) | \ cmd_yamllint = ($(find_cmd) | \
xargs -n200 -P$$(nproc) \ xargs -n200 -P$$(nproc) \
$(DT_SCHEMA_LINT) -f parsable -c $(srctree)/$(src)/.yamllint >&2) || true $(DT_SCHEMA_LINT) -f parsable -c $(src)/.yamllint >&2) \
&& touch $@ || true
quiet_cmd_chk_bindings = CHKDT $@ quiet_cmd_chk_bindings = CHKDT $(src)
cmd_chk_bindings = ($(find_cmd) | \ cmd_chk_bindings = ($(find_cmd) | \
xargs -n200 -P$$(nproc) $(DT_DOC_CHECKER) -u $(srctree)/$(src)) || true xargs -n200 -P$$(nproc) $(DT_DOC_CHECKER) -u $(src)) \
&& touch $@ || true
quiet_cmd_mk_schema = SCHEMA $@ quiet_cmd_mk_schema = SCHEMA $@
cmd_mk_schema = f=$$(mktemp) ; \ cmd_mk_schema = f=$$(mktemp) ; \
...@@ -49,12 +51,6 @@ quiet_cmd_mk_schema = SCHEMA $@ ...@@ -49,12 +51,6 @@ quiet_cmd_mk_schema = SCHEMA $@
$(DT_MK_SCHEMA) -j $(DT_MK_SCHEMA_FLAGS) @$$f > $@ ; \ $(DT_MK_SCHEMA) -j $(DT_MK_SCHEMA_FLAGS) @$$f > $@ ; \
rm -f $$f rm -f $$f
define rule_chkdt
$(if $(DT_SCHEMA_LINT),$(call cmd,yamllint),)
$(call cmd,chk_bindings)
$(call cmd,mk_schema)
endef
DT_DOCS = $(patsubst $(srctree)/%,%,$(shell $(find_all_cmd))) DT_DOCS = $(patsubst $(srctree)/%,%,$(shell $(find_all_cmd)))
override DTC_FLAGS := \ override DTC_FLAGS := \
...@@ -64,12 +60,19 @@ override DTC_FLAGS := \ ...@@ -64,12 +60,19 @@ override DTC_FLAGS := \
-Wno-unique_unit_address \ -Wno-unique_unit_address \
-Wunique_unit_address_if_enabled -Wunique_unit_address_if_enabled
$(obj)/processed-schema.json: $(DT_DOCS) $(src)/.yamllint check_dtschema_version FORCE $(obj)/processed-schema.json: $(DT_DOCS) check_dtschema_version FORCE
$(call if_changed_rule,chkdt) $(call if_changed,mk_schema)
targets += .dt-binding.checked .yamllint.checked
$(obj)/.yamllint.checked: $(DT_DOCS) $(src)/.yamllint FORCE
$(if $(DT_SCHEMA_LINT),$(call if_changed,yamllint),)
$(obj)/.dt-binding.checked: $(DT_DOCS) FORCE
$(call if_changed,chk_bindings)
always-y += processed-schema.json always-y += processed-schema.json
always-$(CHECK_DT_BINDING) += $(patsubst $(srctree)/$(src)/%.yaml,%.example.dts, $(CHK_DT_DOCS)) targets += $(patsubst $(obj)/%,%, $(CHK_DT_EXAMPLES))
always-$(CHECK_DT_BINDING) += $(patsubst $(srctree)/$(src)/%.yaml,%.example.dtb, $(CHK_DT_DOCS)) targets += $(patsubst $(obj)/%.dtb,%.dts, $(CHK_DT_EXAMPLES))
# Hack: avoid 'Argument list too long' error for 'make clean'. Remove most of # Hack: avoid 'Argument list too long' error for 'make clean'. Remove most of
# build artifacts here before they are processed by scripts/Makefile.clean # build artifacts here before they are processed by scripts/Makefile.clean
...@@ -78,3 +81,6 @@ clean-files = $(shell find $(obj) \( -name '*.example.dts' -o \ ...@@ -78,3 +81,6 @@ clean-files = $(shell find $(obj) \( -name '*.example.dts' -o \
dt_compatible_check: $(obj)/processed-schema.json dt_compatible_check: $(obj)/processed-schema.json
$(Q)$(srctree)/scripts/dtc/dt-extract-compatibles $(srctree) | xargs dt-check-compatible -v -s $< $(Q)$(srctree)/scripts/dtc/dt-extract-compatibles $(srctree) | xargs dt-check-compatible -v -s $<
PHONY += dt_binding_check
dt_binding_check: $(obj)/.dt-binding.checked $(obj)/.yamllint.checked $(CHK_DT_EXAMPLES)
...@@ -410,9 +410,6 @@ to be set to 'm'. This can be used if multiple drivers for a single ...@@ -410,9 +410,6 @@ to be set to 'm'. This can be used if multiple drivers for a single
hardware exists and only a single driver can be compiled/loaded into hardware exists and only a single driver can be compiled/loaded into
the kernel, but all drivers can be compiled as modules. the kernel, but all drivers can be compiled as modules.
A choice accepts another option "optional", which allows to set the
choice to 'n' and no entry needs to be selected.
comment:: comment::
"comment" <prompt> "comment" <prompt>
......
...@@ -346,7 +346,7 @@ ccflags-y, asflags-y and ldflags-y ...@@ -346,7 +346,7 @@ ccflags-y, asflags-y and ldflags-y
Example:: Example::
#arch/cris/boot/compressed/Makefile #arch/cris/boot/compressed/Makefile
ldflags-y += -T $(srctree)/$(src)/decompress_$(arch-y).lds ldflags-y += -T $(src)/decompress_$(arch-y).lds
subdir-ccflags-y, subdir-asflags-y subdir-ccflags-y, subdir-asflags-y
The two flags listed above are similar to ccflags-y and asflags-y. The two flags listed above are similar to ccflags-y and asflags-y.
...@@ -426,14 +426,14 @@ path to prerequisite files and target files. ...@@ -426,14 +426,14 @@ path to prerequisite files and target files.
Two variables are used when defining custom rules: Two variables are used when defining custom rules:
$(src) $(src)
$(src) is a relative path which points to the directory $(src) is the directory where the Makefile is located. Always use $(src) when
where the Makefile is located. Always use $(src) when
referring to files located in the src tree. referring to files located in the src tree.
$(obj) $(obj)
$(obj) is a relative path which points to the directory $(obj) is the directory where the target is saved. Always use $(obj) when
where the target is saved. Always use $(obj) when referring to generated files. Use $(obj) for pattern rules that need to work
referring to generated files. for both generated files and real sources (VPATH will help to find the
prerequisites not only in the object tree but also in the source tree).
Example:: Example::
......
...@@ -263,7 +263,14 @@ srctree := $(abs_srctree) ...@@ -263,7 +263,14 @@ srctree := $(abs_srctree)
endif endif
objtree := . objtree := .
VPATH :=
ifeq ($(KBUILD_EXTMOD),)
ifdef building_out_of_srctree
VPATH := $(srctree) VPATH := $(srctree)
endif
endif
export building_out_of_srctree srctree objtree VPATH export building_out_of_srctree srctree objtree VPATH
...@@ -942,7 +949,6 @@ endif ...@@ -942,7 +949,6 @@ endif
ifdef CONFIG_LTO_CLANG ifdef CONFIG_LTO_CLANG
ifdef CONFIG_LTO_CLANG_THIN ifdef CONFIG_LTO_CLANG_THIN
CC_FLAGS_LTO := -flto=thin -fsplit-lto-unit CC_FLAGS_LTO := -flto=thin -fsplit-lto-unit
KBUILD_LDFLAGS += --thinlto-cache-dir=$(extmod_prefix).thinlto-cache
else else
CC_FLAGS_LTO := -flto CC_FLAGS_LTO := -flto
endif endif
...@@ -1248,8 +1254,8 @@ define filechk_version.h ...@@ -1248,8 +1254,8 @@ define filechk_version.h
echo \#define LINUX_VERSION_SUBLEVEL $(SUBLEVEL) echo \#define LINUX_VERSION_SUBLEVEL $(SUBLEVEL)
endef endef
$(version_h): PATCHLEVEL := $(or $(PATCHLEVEL), 0) $(version_h): private PATCHLEVEL := $(or $(PATCHLEVEL), 0)
$(version_h): SUBLEVEL := $(or $(SUBLEVEL), 0) $(version_h): private SUBLEVEL := $(or $(SUBLEVEL), 0)
$(version_h): FORCE $(version_h): FORCE
$(call filechk,version.h) $(call filechk,version.h)
...@@ -1403,7 +1409,7 @@ export CHECK_DTBS=y ...@@ -1403,7 +1409,7 @@ export CHECK_DTBS=y
endif endif
ifneq ($(CHECK_DTBS),) ifneq ($(CHECK_DTBS),)
dtbs_prepare: dt_binding_check dtbs_prepare: dt_binding_schemas
endif endif
dtbs_check: dtbs dtbs_check: dtbs
...@@ -1422,15 +1428,18 @@ scripts_dtc: scripts_basic ...@@ -1422,15 +1428,18 @@ scripts_dtc: scripts_basic
$(Q)$(MAKE) $(build)=scripts/dtc $(Q)$(MAKE) $(build)=scripts/dtc
ifneq ($(filter dt_binding_check, $(MAKECMDGOALS)),) ifneq ($(filter dt_binding_check, $(MAKECMDGOALS)),)
export CHECK_DT_BINDING=y export CHECK_DTBS=y
endif endif
PHONY += dt_binding_check PHONY += dt_binding_check dt_binding_schemas
dt_binding_check: scripts_dtc dt_binding_check: dt_binding_schemas scripts_dtc
$(Q)$(MAKE) $(build)=Documentation/devicetree/bindings $@
dt_binding_schemas:
$(Q)$(MAKE) $(build)=Documentation/devicetree/bindings $(Q)$(MAKE) $(build)=Documentation/devicetree/bindings
PHONY += dt_compatible_check PHONY += dt_compatible_check
dt_compatible_check: dt_binding_check dt_compatible_check: dt_binding_schemas
$(Q)$(MAKE) $(build)=Documentation/devicetree/bindings $@ $(Q)$(MAKE) $(build)=Documentation/devicetree/bindings $@
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
...@@ -1477,7 +1486,7 @@ endif # CONFIG_MODULES ...@@ -1477,7 +1486,7 @@ endif # CONFIG_MODULES
# Directories & files removed with 'make clean' # Directories & files removed with 'make clean'
CLEAN_FILES += vmlinux.symvers modules-only.symvers \ CLEAN_FILES += vmlinux.symvers modules-only.symvers \
modules.builtin modules.builtin.modinfo modules.nsdeps \ modules.builtin modules.builtin.modinfo modules.nsdeps \
compile_commands.json .thinlto-cache rust/test \ compile_commands.json rust/test \
rust-project.json .vmlinux.objs .vmlinux.export.c rust-project.json .vmlinux.objs .vmlinux.export.c
# Directories & files removed with 'make mrproper' # Directories & files removed with 'make mrproper'
...@@ -1494,7 +1503,7 @@ MRPROPER_FILES += include/config include/generated \ ...@@ -1494,7 +1503,7 @@ MRPROPER_FILES += include/config include/generated \
# clean - Delete most, but leave enough to build external modules # clean - Delete most, but leave enough to build external modules
# #
clean: rm-files := $(CLEAN_FILES) clean: private rm-files := $(CLEAN_FILES)
PHONY += archclean vmlinuxclean PHONY += archclean vmlinuxclean
...@@ -1506,7 +1515,7 @@ clean: archclean vmlinuxclean resolve_btfids_clean ...@@ -1506,7 +1515,7 @@ clean: archclean vmlinuxclean resolve_btfids_clean
# mrproper - Delete all generated files, including .config # mrproper - Delete all generated files, including .config
# #
mrproper: rm-files := $(wildcard $(MRPROPER_FILES)) mrproper: private rm-files := $(MRPROPER_FILES)
mrproper-dirs := $(addprefix _mrproper_,scripts) mrproper-dirs := $(addprefix _mrproper_,scripts)
PHONY += $(mrproper-dirs) mrproper PHONY += $(mrproper-dirs) mrproper
...@@ -1626,10 +1635,11 @@ help: ...@@ -1626,10 +1635,11 @@ help:
@echo '' @echo ''
@$(if $(dtstree), \ @$(if $(dtstree), \
echo 'Devicetree:'; \ echo 'Devicetree:'; \
echo '* dtbs - Build device tree blobs for enabled boards'; \ echo '* dtbs - Build device tree blobs for enabled boards'; \
echo ' dtbs_install - Install dtbs to $(INSTALL_DTBS_PATH)'; \ echo ' dtbs_install - Install dtbs to $(INSTALL_DTBS_PATH)'; \
echo ' dt_binding_check - Validate device tree binding documents'; \ echo ' dt_binding_check - Validate device tree binding documents and examples'; \
echo ' dtbs_check - Validate device tree source files';\ echo ' dt_binding_schema - Build processed device tree binding schemas'; \
echo ' dtbs_check - Validate device tree source files';\
echo '') echo '')
@echo 'Userspace tools targets:' @echo 'Userspace tools targets:'
...@@ -1782,8 +1792,8 @@ compile_commands.json: $(extmod_prefix)compile_commands.json ...@@ -1782,8 +1792,8 @@ compile_commands.json: $(extmod_prefix)compile_commands.json
PHONY += compile_commands.json PHONY += compile_commands.json
clean-dirs := $(KBUILD_EXTMOD) clean-dirs := $(KBUILD_EXTMOD)
clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers $(KBUILD_EXTMOD)/modules.nsdeps \ clean: private rm-files := $(KBUILD_EXTMOD)/Module.symvers $(KBUILD_EXTMOD)/modules.nsdeps \
$(KBUILD_EXTMOD)/compile_commands.json $(KBUILD_EXTMOD)/.thinlto-cache $(KBUILD_EXTMOD)/compile_commands.json
PHONY += prepare PHONY += prepare
# now expand this into a simple variable to reduce the cost of shell evaluations # now expand this into a simple variable to reduce the cost of shell evaluations
......
...@@ -10,8 +10,7 @@ obj-y += $(builtindtb-y).dtb.o ...@@ -10,8 +10,7 @@ obj-y += $(builtindtb-y).dtb.o
dtb-y := $(builtindtb-y).dtb dtb-y := $(builtindtb-y).dtb
# for CONFIG_OF_ALL_DTBS test # for CONFIG_OF_ALL_DTBS test
dtstree := $(srctree)/$(src) dtb- := $(patsubst $(src)/%.dts,%.dtb, $(wildcard $(src)/*.dts))
dtb- := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
# board-specific dtc flags # board-specific dtc flags
DTC_FLAGS_hsdk += --pad 20 DTC_FLAGS_hsdk += --pad 20
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
obj-$(CONFIG_FPE_NWFPE) += nwfpe/ obj-$(CONFIG_FPE_NWFPE) += nwfpe/
# Put arch/arm/fastfpe/ to use this. # Put arch/arm/fastfpe/ to use this.
obj-$(CONFIG_FPE_FASTFPE) += $(patsubst $(srctree)/$(src)/%,%,$(wildcard $(srctree)/$(src)/fastfpe/)) obj-$(CONFIG_FPE_FASTFPE) += $(patsubst $(src)/%,%,$(wildcard $(src)/fastfpe/))
obj-$(CONFIG_VFP) += vfp/ obj-$(CONFIG_VFP) += vfp/
obj-$(CONFIG_XEN) += xen/ obj-$(CONFIG_XEN) += xen/
obj-$(CONFIG_VDSO) += vdso/ obj-$(CONFIG_VDSO) += vdso/
......
...@@ -25,8 +25,7 @@ targets := Image zImage xipImage bootpImage uImage ...@@ -25,8 +25,7 @@ targets := Image zImage xipImage bootpImage uImage
ifeq ($(CONFIG_XIP_KERNEL),y) ifeq ($(CONFIG_XIP_KERNEL),y)
cmd_deflate_xip_data = $(CONFIG_SHELL) -c \ cmd_deflate_xip_data = $(CONFIG_SHELL) -c '$(src)/deflate_xip_data.sh $< $@'
'$(srctree)/$(src)/deflate_xip_data.sh $< $@'
ifeq ($(CONFIG_XIP_DEFLATED_DATA),y) ifeq ($(CONFIG_XIP_DEFLATED_DATA),y)
quiet_cmd_mkxip = XIPZ $@ quiet_cmd_mkxip = XIPZ $@
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
# This file is included by the global makefile so that you can add your own # This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies. # architecture-specific flags and dependencies.
# #
GCOV_PROFILE := n
ifdef PHYS_OFFSET ifdef PHYS_OFFSET
add_hex = $(shell printf 0x%x $$(( $(1) + $(2) )) ) add_hex = $(shell printf 0x%x $$(( $(1) + $(2) )) )
......
...@@ -22,13 +22,6 @@ ifeq ($(CONFIG_ARM_VIRT_EXT),y) ...@@ -22,13 +22,6 @@ ifeq ($(CONFIG_ARM_VIRT_EXT),y)
OBJS += hyp-stub.o OBJS += hyp-stub.o
endif endif
GCOV_PROFILE := n
KASAN_SANITIZE := n
# Prevents link failures: __sanitizer_cov_trace_pc() is not linked in.
KCOV_INSTRUMENT := n
UBSAN_SANITIZE := n
# #
# Architecture dependencies # Architecture dependencies
# #
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# #
# Copyright 2009 Simtec Electronics # Copyright 2009 Simtec Electronics
include $(srctree)/$(src)/Makefile.s3c64xx include $(src)/Makefile.s3c64xx
# Objects we always build independent of SoC choice # Objects we always build independent of SoC choice
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# #
# Makefile for the linux kernel. # Makefile for the linux kernel.
# #
ccflags-y := -I$(srctree)/$(src)/include ccflags-y := -I$(src)/include
orion-gpio-$(CONFIG_GPIOLIB) += gpio.o orion-gpio-$(CONFIG_GPIOLIB) += gpio.o
obj-$(CONFIG_PLAT_ORION_LEGACY) += irq.o pcie.o time.o common.o mpp.o obj-$(CONFIG_PLAT_ORION_LEGACY) += irq.o pcie.o time.o common.o mpp.o
......
...@@ -9,7 +9,7 @@ gen := arch/$(ARCH)/include/generated ...@@ -9,7 +9,7 @@ gen := arch/$(ARCH)/include/generated
kapi := $(gen)/asm kapi := $(gen)/asm
uapi := $(gen)/uapi/asm uapi := $(gen)/uapi/asm
syshdr := $(srctree)/scripts/syscallhdr.sh syshdr := $(srctree)/scripts/syscallhdr.sh
sysnr := $(srctree)/$(src)/syscallnr.sh sysnr := $(src)/syscallnr.sh
systbl := $(srctree)/scripts/syscalltbl.sh systbl := $(srctree)/scripts/syscalltbl.sh
syscall := $(src)/syscall.tbl syscall := $(src)/syscall.tbl
......
...@@ -33,15 +33,6 @@ else ...@@ -33,15 +33,6 @@ else
CFLAGS_vgettimeofday.o = -O2 -include $(c-gettimeofday-y) CFLAGS_vgettimeofday.o = -O2 -include $(c-gettimeofday-y)
endif endif
# Disable gcov profiling for VDSO code
GCOV_PROFILE := n
UBSAN_SANITIZE := n
# Prevents link failures: __sanitizer_cov_trace_pc() is not linked in.
KCOV_INSTRUMENT := n
KASAN_SANITIZE := n
# Force dependency # Force dependency
$(obj)/vdso.o : $(obj)/vdso.so $(obj)/vdso.o : $(obj)/vdso.so
......
...@@ -19,12 +19,6 @@ KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_SCS), $(KBUILD_CFLAGS)) ...@@ -19,12 +19,6 @@ KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_SCS), $(KBUILD_CFLAGS))
# disable LTO # disable LTO
KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_LTO), $(KBUILD_CFLAGS)) KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_LTO), $(KBUILD_CFLAGS))
GCOV_PROFILE := n
KASAN_SANITIZE := n
KCSAN_SANITIZE := n
UBSAN_SANITIZE := n
KCOV_INSTRUMENT := n
hostprogs := relacheck hostprogs := relacheck
quiet_cmd_piobjcopy = $(quiet_cmd_objcopy) quiet_cmd_piobjcopy = $(quiet_cmd_objcopy)
......
...@@ -40,11 +40,6 @@ CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os $(CC_FLAGS_SCS) \ ...@@ -40,11 +40,6 @@ CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os $(CC_FLAGS_SCS) \
$(RANDSTRUCT_CFLAGS) $(GCC_PLUGINS_CFLAGS) \ $(RANDSTRUCT_CFLAGS) $(GCC_PLUGINS_CFLAGS) \
$(CC_FLAGS_LTO) $(CC_FLAGS_CFI) \ $(CC_FLAGS_LTO) $(CC_FLAGS_CFI) \
-Wmissing-prototypes -Wmissing-declarations -Wmissing-prototypes -Wmissing-declarations
KASAN_SANITIZE := n
KCSAN_SANITIZE := n
UBSAN_SANITIZE := n
OBJECT_FILES_NON_STANDARD := y
KCOV_INSTRUMENT := n
CFLAGS_vgettimeofday.o = -O2 -mcmodel=tiny -fasynchronous-unwind-tables CFLAGS_vgettimeofday.o = -O2 -mcmodel=tiny -fasynchronous-unwind-tables
...@@ -52,9 +47,6 @@ ifneq ($(c-gettimeofday-y),) ...@@ -52,9 +47,6 @@ ifneq ($(c-gettimeofday-y),)
CFLAGS_vgettimeofday.o += -include $(c-gettimeofday-y) CFLAGS_vgettimeofday.o += -include $(c-gettimeofday-y)
endif endif
# Disable gcov profiling for VDSO code
GCOV_PROFILE := n
targets += vdso.lds targets += vdso.lds
CPPFLAGS_vdso.lds += -P -C -U$(ARCH) CPPFLAGS_vdso.lds += -P -C -U$(ARCH)
...@@ -68,7 +60,7 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE ...@@ -68,7 +60,7 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
$(call if_changed,objcopy) $(call if_changed,objcopy)
# Generate VDSO offsets using helper script # Generate VDSO offsets using helper script
gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh gen-vdsosym := $(src)/gen_vdso_offsets.sh
quiet_cmd_vdsosym = VDSOSYM $@ quiet_cmd_vdsosym = VDSOSYM $@
cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
......
...@@ -136,7 +136,7 @@ $(obj)/vdso32.so.dbg: $(obj)/vdso.so.raw $(obj)/$(munge) FORCE ...@@ -136,7 +136,7 @@ $(obj)/vdso32.so.dbg: $(obj)/vdso.so.raw $(obj)/$(munge) FORCE
$(call if_changed,vdsomunge) $(call if_changed,vdsomunge)
# Link rule for the .so file, .lds has to be first # Link rule for the .so file, .lds has to be first
$(obj)/vdso.so.raw: $(src)/vdso.lds $(obj-vdso) FORCE $(obj)/vdso.so.raw: $(obj)/vdso.lds $(obj-vdso) FORCE
$(call if_changed,vdsold_and_vdso_check) $(call if_changed,vdsold_and_vdso_check)
# Compilation rules for the vDSO sources # Compilation rules for the vDSO sources
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# Makefile for Kernel-based Virtual Machine module # Makefile for Kernel-based Virtual Machine module
# #
ccflags-y += -I $(srctree)/$(src) ccflags-y += -I $(src)
include $(srctree)/virt/kvm/Makefile.kvm include $(srctree)/virt/kvm/Makefile.kvm
...@@ -31,7 +31,7 @@ define rule_gen_hyp_constants ...@@ -31,7 +31,7 @@ define rule_gen_hyp_constants
$(call filechk,offsets,__HYP_CONSTANTS_H__) $(call filechk,offsets,__HYP_CONSTANTS_H__)
endef endef
CFLAGS_hyp-constants.o = -I $(srctree)/$(src)/hyp/include CFLAGS_hyp-constants.o = -I $(src)/hyp/include
$(obj)/hyp-constants.s: $(src)/hyp/hyp-constants.c FORCE $(obj)/hyp-constants.s: $(src)/hyp/hyp-constants.c FORCE
$(call if_changed_dep,cc_s_c) $(call if_changed_dep,cc_s_c)
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# Makefile for Kernel-based Virtual Machine module, HYP part # Makefile for Kernel-based Virtual Machine module, HYP part
# #
incdir := $(srctree)/$(src)/include incdir := $(src)/include
subdir-asflags-y := -I$(incdir) subdir-asflags-y := -I$(incdir)
subdir-ccflags-y := -I$(incdir) subdir-ccflags-y := -I$(incdir)
......
...@@ -97,16 +97,3 @@ KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS) $(CC_FLAGS_CFI) ...@@ -97,16 +97,3 @@ KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS) $(CC_FLAGS_CFI)
# causes a build failure. Remove profile optimization flags. # causes a build failure. Remove profile optimization flags.
KBUILD_CFLAGS := $(filter-out -fprofile-sample-use=% -fprofile-use=%, $(KBUILD_CFLAGS)) KBUILD_CFLAGS := $(filter-out -fprofile-sample-use=% -fprofile-use=%, $(KBUILD_CFLAGS))
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables
# KVM nVHE code is run at a different exception code with a different map, so
# compiler instrumentation that inserts callbacks or checks into the code may
# cause crashes. Just disable it.
GCOV_PROFILE := n
KASAN_SANITIZE := n
KCSAN_SANITIZE := n
UBSAN_SANITIZE := n
KCOV_INSTRUMENT := n
# Skip objtool checking for this directory because nVHE code is compiled with
# non-standard build rules.
OBJECT_FILES_NON_STANDARD := y
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
dtstree := $(srctree)/$(src) dtb-y := $(patsubst $(src)/%.dts,%.dtb, $(wildcard $(src)/*.dts))
dtb-y := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
...@@ -23,15 +23,11 @@ obj-vdso := $(addprefix $(obj)/, $(obj-vdso)) ...@@ -23,15 +23,11 @@ obj-vdso := $(addprefix $(obj)/, $(obj-vdso))
obj-y += vdso.o vdso-syms.o obj-y += vdso.o vdso-syms.o
CPPFLAGS_vdso.lds += -P -C -U$(ARCH) CPPFLAGS_vdso.lds += -P -C -U$(ARCH)
# Disable gcov profiling for VDSO code
GCOV_PROFILE := n
KCOV_INSTRUMENT := n
# Force dependency # Force dependency
$(obj)/vdso.o: $(obj)/vdso.so $(obj)/vdso.o: $(obj)/vdso.so
SYSCFLAGS_vdso.so.dbg = $(c_flags) SYSCFLAGS_vdso.so.dbg = $(c_flags)
$(obj)/vdso.so.dbg: $(src)/vdso.lds $(obj-vdso) FORCE $(obj)/vdso.so.dbg: $(obj)/vdso.lds $(obj-vdso) FORCE
$(call if_changed,vdsold) $(call if_changed,vdsold)
SYSCFLAGS_vdso.so.dbg = -shared -s -Wl,-soname=linux-vdso.so.1 \ SYSCFLAGS_vdso.so.dbg = -shared -s -Wl,-soname=linux-vdso.so.1 \
-Wl,--build-id=sha1 -Wl,--hash-style=both -Wl,--build-id=sha1 -Wl,--hash-style=both
...@@ -57,4 +53,4 @@ quiet_cmd_vdsold = VDSOLD $@ ...@@ -57,4 +53,4 @@ quiet_cmd_vdsold = VDSOLD $@
# Extracts symbol offsets from the VDSO, converting them into an assembly file # Extracts symbol offsets from the VDSO, converting them into an assembly file
# that contains the same symbols at the same offsets. # that contains the same symbols at the same offsets.
quiet_cmd_so2s = SO2S $@ quiet_cmd_so2s = SO2S $@
cmd_so2s = $(NM) -D $< | $(srctree)/$(src)/so2s.sh > $@ cmd_so2s = $(NM) -D $< | $(src)/so2s.sh > $@
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# Makefile for LoongArch KVM support # Makefile for LoongArch KVM support
# #
ccflags-y += -I $(srctree)/$(src) ccflags-y += -I $(src)
include $(srctree)/virt/kvm/Makefile.kvm include $(srctree)/virt/kvm/Makefile.kvm
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# Objects to go into the VDSO. # Objects to go into the VDSO.
KASAN_SANITIZE := n
UBSAN_SANITIZE := n
KCOV_INSTRUMENT := n
OBJECT_FILES_NON_STANDARD := y
# Include the generic Makefile to check the built vdso. # Include the generic Makefile to check the built vdso.
include $(srctree)/lib/vdso/Makefile include $(srctree)/lib/vdso/Makefile
...@@ -39,8 +34,6 @@ ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \ ...@@ -39,8 +34,6 @@ ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \
$(filter -E%,$(KBUILD_CFLAGS)) -nostdlib -shared \ $(filter -E%,$(KBUILD_CFLAGS)) -nostdlib -shared \
--hash-style=sysv --build-id -T --hash-style=sysv --build-id -T
GCOV_PROFILE := n
# #
# Shared build commands. # Shared build commands.
# #
...@@ -52,7 +45,7 @@ quiet_cmd_vdsoas_o_S = AS $@ ...@@ -52,7 +45,7 @@ quiet_cmd_vdsoas_o_S = AS $@
cmd_vdsoas_o_S = $(CC) $(a_flags) -c -o $@ $< cmd_vdsoas_o_S = $(CC) $(a_flags) -c -o $@ $<
# Generate VDSO offsets using helper script # Generate VDSO offsets using helper script
gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh gen-vdsosym := $(src)/gen_vdso_offsets.sh
quiet_cmd_vdsosym = VDSOSYM $@ quiet_cmd_vdsosym = VDSOSYM $@
cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
......
...@@ -34,12 +34,6 @@ KBUILD_AFLAGS := $(KBUILD_AFLAGS) -D__ASSEMBLY__ \ ...@@ -34,12 +34,6 @@ KBUILD_AFLAGS := $(KBUILD_AFLAGS) -D__ASSEMBLY__ \
-DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \ -DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \
-DKERNEL_ENTRY=$(VMLINUX_ENTRY_ADDRESS) -DKERNEL_ENTRY=$(VMLINUX_ENTRY_ADDRESS)
# Prevents link failures: __sanitizer_cov_trace_pc() is not linked in.
KCOV_INSTRUMENT := n
GCOV_PROFILE := n
UBSAN_SANITIZE := n
KCSAN_SANITIZE := n
# decompressor objects (linked with vmlinuz) # decompressor objects (linked with vmlinuz)
vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o $(obj)/bswapsi.o vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o $(obj)/bswapsi.o
......
...@@ -5,7 +5,7 @@ uapi := arch/$(SRCARCH)/include/generated/uapi/asm ...@@ -5,7 +5,7 @@ uapi := arch/$(SRCARCH)/include/generated/uapi/asm
$(shell mkdir -p $(uapi) $(kapi)) $(shell mkdir -p $(uapi) $(kapi))
syshdr := $(srctree)/scripts/syscallhdr.sh syshdr := $(srctree)/scripts/syscallhdr.sh
sysnr := $(srctree)/$(src)/syscallnr.sh sysnr := $(src)/syscallnr.sh
systbl := $(srctree)/scripts/syscalltbl.sh systbl := $(srctree)/scripts/syscalltbl.sh
quiet_cmd_syshdr = SYSHDR $@ quiet_cmd_syshdr = SYSHDR $@
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# Objects to go into the VDSO. # Objects to go into the VDSO.
# Sanitizer runtimes are unavailable and cannot be linked here.
KCSAN_SANITIZE := n
# Include the generic Makefile to check the built vdso. # Include the generic Makefile to check the built vdso.
include $(srctree)/lib/vdso/Makefile include $(srctree)/lib/vdso/Makefile
...@@ -43,8 +40,8 @@ CFLAGS_vgettimeofday.o = -include $(c-gettimeofday-y) ...@@ -43,8 +40,8 @@ CFLAGS_vgettimeofday.o = -include $(c-gettimeofday-y)
# config-n32-o32-env.c prepares the environment to build a 32bit vDSO # config-n32-o32-env.c prepares the environment to build a 32bit vDSO
# library on a 64bit kernel. # library on a 64bit kernel.
# Note: Needs to be included before than the generic library. # Note: Needs to be included before than the generic library.
CFLAGS_vgettimeofday-o32.o = -include $(srctree)/$(src)/config-n32-o32-env.c -include $(c-gettimeofday-y) CFLAGS_vgettimeofday-o32.o = -include $(src)/config-n32-o32-env.c -include $(c-gettimeofday-y)
CFLAGS_vgettimeofday-n32.o = -include $(srctree)/$(src)/config-n32-o32-env.c -include $(c-gettimeofday-y) CFLAGS_vgettimeofday-n32.o = -include $(src)/config-n32-o32-env.c -include $(c-gettimeofday-y)
endif endif
CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE)
...@@ -60,10 +57,6 @@ ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \ ...@@ -60,10 +57,6 @@ ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \
CFLAGS_REMOVE_vdso.o = $(CC_FLAGS_FTRACE) CFLAGS_REMOVE_vdso.o = $(CC_FLAGS_FTRACE)
GCOV_PROFILE := n
UBSAN_SANITIZE := n
KCOV_INSTRUMENT := n
# Check that we don't have PIC 'jalr t9' calls left # Check that we don't have PIC 'jalr t9' calls left
quiet_cmd_vdso_mips_check = VDSOCHK $@ quiet_cmd_vdso_mips_check = VDSOCHK $@
cmd_vdso_mips_check = if $(OBJDUMP) --disassemble $@ | grep -E -h "jalr.*t9" > /dev/null; \ cmd_vdso_mips_check = if $(OBJDUMP) --disassemble $@ | grep -E -h "jalr.*t9" > /dev/null; \
......
...@@ -2,5 +2,4 @@ ...@@ -2,5 +2,4 @@
obj-y := $(patsubst %.dts,%.dtb.o,$(CONFIG_NIOS2_DTB_SOURCE)) obj-y := $(patsubst %.dts,%.dtb.o,$(CONFIG_NIOS2_DTB_SOURCE))
dtstree := $(srctree)/$(src) dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(src)/%.dts,%.dtb, $(wildcard $(src)/*.dts))
dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
...@@ -5,10 +5,6 @@ ...@@ -5,10 +5,6 @@
# create a compressed self-extracting vmlinux image from the original vmlinux # create a compressed self-extracting vmlinux image from the original vmlinux
# #
KCOV_INSTRUMENT := n
GCOV_PROFILE := n
UBSAN_SANITIZE := n
OBJECTS := head.o real2.o firmware.o misc.o piggy.o OBJECTS := head.o real2.o firmware.o misc.o piggy.o
targets := vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 targets := vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2
targets += vmlinux.bin.xz vmlinux.bin.lzma vmlinux.bin.lzo vmlinux.bin.lz4 targets += vmlinux.bin.xz vmlinux.bin.lzma vmlinux.bin.lzo vmlinux.bin.lz4
......
...@@ -26,26 +26,21 @@ $(obj)/vdso32_wrapper.o : $(obj)/vdso32.so FORCE ...@@ -26,26 +26,21 @@ $(obj)/vdso32_wrapper.o : $(obj)/vdso32.so FORCE
# Force dependency (incbin is bad) # Force dependency (incbin is bad)
# link rule for the .so file, .lds has to be first # link rule for the .so file, .lds has to be first
$(obj)/vdso32.so: $(src)/vdso32.lds $(obj-vdso32) $(obj-cvdso32) $(VDSO_LIBGCC) FORCE $(obj)/vdso32.so: $(obj)/vdso32.lds $(obj-vdso32) $(VDSO_LIBGCC) FORCE
$(call if_changed,vdso32ld) $(call if_changed,vdso32ld)
# assembly rules for the .S files # assembly rules for the .S files
$(obj-vdso32): %.o: %.S FORCE $(obj-vdso32): %.o: %.S FORCE
$(call if_changed_dep,vdso32as) $(call if_changed_dep,vdso32as)
$(obj-cvdso32): %.o: %.c FORCE
$(call if_changed_dep,vdso32cc)
# actual build commands # actual build commands
quiet_cmd_vdso32ld = VDSO32L $@ quiet_cmd_vdso32ld = VDSO32L $@
cmd_vdso32ld = $(CROSS32CC) $(c_flags) -Wl,-T $(filter-out FORCE, $^) -o $@ cmd_vdso32ld = $(CROSS32CC) $(c_flags) -Wl,-T $(filter-out FORCE, $^) -o $@
quiet_cmd_vdso32as = VDSO32A $@ quiet_cmd_vdso32as = VDSO32A $@
cmd_vdso32as = $(CROSS32CC) $(a_flags) -c -o $@ $< cmd_vdso32as = $(CROSS32CC) $(a_flags) -c -o $@ $<
quiet_cmd_vdso32cc = VDSO32C $@
cmd_vdso32cc = $(CROSS32CC) $(c_flags) -c -fPIC -mno-fast-indirect-calls -o $@ $<
# Generate VDSO offsets using helper script # Generate VDSO offsets using helper script
gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh gen-vdsosym := $(src)/gen_vdso_offsets.sh
quiet_cmd_vdsosym = VDSOSYM $@ quiet_cmd_vdsosym = VDSOSYM $@
cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
......
...@@ -26,7 +26,7 @@ $(obj)/vdso64_wrapper.o : $(obj)/vdso64.so FORCE ...@@ -26,7 +26,7 @@ $(obj)/vdso64_wrapper.o : $(obj)/vdso64.so FORCE
# Force dependency (incbin is bad) # Force dependency (incbin is bad)
# link rule for the .so file, .lds has to be first # link rule for the .so file, .lds has to be first
$(obj)/vdso64.so: $(src)/vdso64.lds $(obj-vdso64) $(VDSO_LIBGCC) FORCE $(obj)/vdso64.so: $(obj)/vdso64.lds $(obj-vdso64) $(VDSO_LIBGCC) FORCE
$(call if_changed,vdso64ld) $(call if_changed,vdso64ld)
# assembly rules for the .S files # assembly rules for the .S files
...@@ -40,7 +40,7 @@ quiet_cmd_vdso64as = VDSO64A $@ ...@@ -40,7 +40,7 @@ quiet_cmd_vdso64as = VDSO64A $@
cmd_vdso64as = $(CC) $(a_flags) -c -o $@ $< cmd_vdso64as = $(CC) $(a_flags) -c -o $@ $<
# Generate VDSO offsets using helper script # Generate VDSO offsets using helper script
gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh gen-vdsosym := $(src)/gen_vdso_offsets.sh
quiet_cmd_vdsosym = VDSOSYM $@ quiet_cmd_vdsosym = VDSOSYM $@
cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
......
...@@ -218,7 +218,7 @@ $(addprefix $(obj)/,$(libfdt) $(libfdtheader)): $(obj)/%: $(srctree)/scripts/dtc ...@@ -218,7 +218,7 @@ $(addprefix $(obj)/,$(libfdt) $(libfdtheader)): $(obj)/%: $(srctree)/scripts/dtc
$(obj)/empty.c: $(obj)/empty.c:
$(Q)touch $@ $(Q)touch $@
$(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds : $(obj)/%: $(srctree)/$(src)/%.S $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds : $(obj)/%: $(src)/%.S
$(Q)cp $< $@ $(Q)cp $< $@
clean-files := $(zlib-) $(zlibheader-) $(zliblinuxheader-) \ clean-files := $(zlib-) $(zlibheader-) $(zliblinuxheader-) \
...@@ -252,9 +252,9 @@ targets += $(patsubst $(obj)/%,%,$(obj-boot) wrapper.a) zImage.lds ...@@ -252,9 +252,9 @@ targets += $(patsubst $(obj)/%,%,$(obj-boot) wrapper.a) zImage.lds
extra-y := $(obj)/wrapper.a $(obj-plat) $(obj)/empty.o \ extra-y := $(obj)/wrapper.a $(obj-plat) $(obj)/empty.o \
$(obj)/zImage.lds $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds $(obj)/zImage.lds $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds
dtstree := $(srctree)/$(src)/dts dtstree := $(src)/dts
wrapper :=$(srctree)/$(src)/wrapper wrapper := $(src)/wrapper
wrapperbits := $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \ wrapperbits := $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \
$(wrapper) FORCE $(wrapper) FORCE
......
...@@ -2,5 +2,4 @@ ...@@ -2,5 +2,4 @@
subdir-y += fsl subdir-y += fsl
dtstree := $(srctree)/$(src) dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(src)/%.dts,%.dtb, $(wildcard $(src)/*.dts))
dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
dtstree := $(srctree)/$(src) dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(src)/%.dts,%.dtb, $(wildcard $(src)/*.dts))
dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
...@@ -47,12 +47,6 @@ obj-vdso32 := $(addprefix $(obj)/, $(obj-vdso32)) ...@@ -47,12 +47,6 @@ obj-vdso32 := $(addprefix $(obj)/, $(obj-vdso32))
targets += $(obj-vdso64) vdso64.so.dbg vgettimeofday-64.o targets += $(obj-vdso64) vdso64.so.dbg vgettimeofday-64.o
obj-vdso64 := $(addprefix $(obj)/, $(obj-vdso64)) obj-vdso64 := $(addprefix $(obj)/, $(obj-vdso64))
GCOV_PROFILE := n
KCOV_INSTRUMENT := n
UBSAN_SANITIZE := n
KASAN_SANITIZE := n
KCSAN_SANITIZE := n
ccflags-y := -fno-common -fno-builtin ccflags-y := -fno-common -fno-builtin
ldflags-y := -Wl,--hash-style=both -nostdlib -shared -z noexecstack $(CLANG_FLAGS) ldflags-y := -Wl,--hash-style=both -nostdlib -shared -z noexecstack $(CLANG_FLAGS)
ldflags-$(CONFIG_LD_IS_LLD) += $(call cc-option,--ld-path=$(LD),-fuse-ld=lld) ldflags-$(CONFIG_LD_IS_LLD) += $(call cc-option,--ld-path=$(LD),-fuse-ld=lld)
...@@ -74,9 +68,9 @@ targets += vdso64.lds ...@@ -74,9 +68,9 @@ targets += vdso64.lds
CPPFLAGS_vdso64.lds += -P -C CPPFLAGS_vdso64.lds += -P -C
# link rule for the .so file, .lds has to be first # link rule for the .so file, .lds has to be first
$(obj)/vdso32.so.dbg: $(src)/vdso32.lds $(obj-vdso32) $(obj)/vgettimeofday-32.o FORCE $(obj)/vdso32.so.dbg: $(obj)/vdso32.lds $(obj-vdso32) $(obj)/vgettimeofday-32.o FORCE
$(call if_changed,vdso32ld_and_check) $(call if_changed,vdso32ld_and_check)
$(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64) $(obj)/vgettimeofday-64.o FORCE $(obj)/vdso64.so.dbg: $(obj)/vdso64.lds $(obj-vdso64) $(obj)/vgettimeofday-64.o FORCE
$(call if_changed,vdso64ld_and_check) $(call if_changed,vdso64ld_and_check)
# assembly rules for the .S files # assembly rules for the .S files
...@@ -90,10 +84,10 @@ $(obj)/vgettimeofday-64.o: %-64.o: %.c FORCE ...@@ -90,10 +84,10 @@ $(obj)/vgettimeofday-64.o: %-64.o: %.c FORCE
$(call if_changed_dep,cc_o_c) $(call if_changed_dep,cc_o_c)
# Generate VDSO offsets using helper script # Generate VDSO offsets using helper script
gen-vdso32sym := $(srctree)/$(src)/gen_vdso32_offsets.sh gen-vdso32sym := $(src)/gen_vdso32_offsets.sh
quiet_cmd_vdso32sym = VDSO32SYM $@ quiet_cmd_vdso32sym = VDSO32SYM $@
cmd_vdso32sym = $(NM) $< | $(gen-vdso32sym) | LC_ALL=C sort > $@ cmd_vdso32sym = $(NM) $< | $(gen-vdso32sym) | LC_ALL=C sort > $@
gen-vdso64sym := $(srctree)/$(src)/gen_vdso64_offsets.sh gen-vdso64sym := $(src)/gen_vdso64_offsets.sh
quiet_cmd_vdso64sym = VDSO64SYM $@ quiet_cmd_vdso64sym = VDSO64SYM $@
cmd_vdso64sym = $(NM) $< | $(gen-vdso64sym) | LC_ALL=C sort > $@ cmd_vdso64sym = $(NM) $< | $(gen-vdso64sym) | LC_ALL=C sort > $@
...@@ -114,5 +108,3 @@ quiet_cmd_vdso64ld_and_check = VDSO64L $@ ...@@ -114,5 +108,3 @@ quiet_cmd_vdso64ld_and_check = VDSO64L $@
cmd_vdso64ld_and_check = $(VDSOCC) $(ldflags-y) $(LD64FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^); $(cmd_vdso_check) cmd_vdso64ld_and_check = $(VDSOCC) $(ldflags-y) $(LD64FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^); $(cmd_vdso_check)
quiet_cmd_vdso64as = VDSO64A $@ quiet_cmd_vdso64as = VDSO64A $@
cmd_vdso64as = $(VDSOCC) $(a_flags) $(AS64FLAGS) -c -o $@ $< cmd_vdso64as = $(VDSOCC) $(a_flags) $(AS64FLAGS) -c -o $@ $<
OBJECT_FILES_NON_STANDARD := y
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
KASAN_SANITIZE := n
KCSAN_SANITIZE := n
targets += trampoline_$(BITS).o purgatory.ro targets += trampoline_$(BITS).o purgatory.ro
# When profile-guided optimization is enabled, llvm emits two different # When profile-guided optimization is enabled, llvm emits two different
......
...@@ -14,8 +14,6 @@ ...@@ -14,8 +14,6 @@
# Based on the ia64 and arm64 boot/Makefile. # Based on the ia64 and arm64 boot/Makefile.
# #
KCOV_INSTRUMENT := n
OBJCOPYFLAGS_Image :=-O binary -R .note -R .note.gnu.build-id -R .comment -S OBJCOPYFLAGS_Image :=-O binary -R .note -R .note.gnu.build-id -R .comment -S
OBJCOPYFLAGS_loader.bin :=-O binary OBJCOPYFLAGS_loader.bin :=-O binary
OBJCOPYFLAGS_xipImage :=-O binary -R .note -R .note.gnu.build-id -R .comment -S OBJCOPYFLAGS_xipImage :=-O binary -R .note -R .note.gnu.build-id -R .comment -S
......
...@@ -34,12 +34,6 @@ obj-compat_vdso := $(addprefix $(obj)/, $(obj-compat_vdso)) ...@@ -34,12 +34,6 @@ obj-compat_vdso := $(addprefix $(obj)/, $(obj-compat_vdso))
obj-y += compat_vdso.o obj-y += compat_vdso.o
CPPFLAGS_compat_vdso.lds += -P -C -DCOMPAT_VDSO -U$(ARCH) CPPFLAGS_compat_vdso.lds += -P -C -DCOMPAT_VDSO -U$(ARCH)
# Disable profiling and instrumentation for VDSO code
GCOV_PROFILE := n
KCOV_INSTRUMENT := n
KASAN_SANITIZE := n
UBSAN_SANITIZE := n
# Force dependency # Force dependency
$(obj)/compat_vdso.o: $(obj)/compat_vdso.so $(obj)/compat_vdso.o: $(obj)/compat_vdso.so
...@@ -58,7 +52,7 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE ...@@ -58,7 +52,7 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
$(call if_changed,objcopy) $(call if_changed,objcopy)
# Generate VDSO offsets using helper script # Generate VDSO offsets using helper script
gen-compat_vdsosym := $(srctree)/$(src)/gen_compat_vdso_offsets.sh gen-compat_vdsosym := $(src)/gen_compat_vdso_offsets.sh
quiet_cmd_compat_vdsosym = VDSOSYM $@ quiet_cmd_compat_vdsosym = VDSOSYM $@
cmd_compat_vdsosym = $(NM) $< | $(gen-compat_vdsosym) | LC_ALL=C sort > $@ cmd_compat_vdsosym = $(NM) $< | $(gen-compat_vdsosym) | LC_ALL=C sort > $@
......
...@@ -17,12 +17,6 @@ KBUILD_CFLAGS += -mcmodel=medany ...@@ -17,12 +17,6 @@ KBUILD_CFLAGS += -mcmodel=medany
CFLAGS_cmdline_early.o += -D__NO_FORTIFY CFLAGS_cmdline_early.o += -D__NO_FORTIFY
CFLAGS_lib-fdt_ro.o += -D__NO_FORTIFY CFLAGS_lib-fdt_ro.o += -D__NO_FORTIFY
GCOV_PROFILE := n
KASAN_SANITIZE := n
KCSAN_SANITIZE := n
UBSAN_SANITIZE := n
KCOV_INSTRUMENT := n
$(obj)/%.pi.o: OBJCOPYFLAGS := --prefix-symbols=__pi_ \ $(obj)/%.pi.o: OBJCOPYFLAGS := --prefix-symbols=__pi_ \
--remove-section=.note.gnu.property \ --remove-section=.note.gnu.property \
--prefix-alloc-sections=.init.pi --prefix-alloc-sections=.init.pi
......
...@@ -39,12 +39,6 @@ endif ...@@ -39,12 +39,6 @@ endif
CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS) CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS)
CFLAGS_REMOVE_hwprobe.o = $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS) CFLAGS_REMOVE_hwprobe.o = $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS)
# Disable profiling and instrumentation for VDSO code
GCOV_PROFILE := n
KCOV_INSTRUMENT := n
KASAN_SANITIZE := n
UBSAN_SANITIZE := n
# Force dependency # Force dependency
$(obj)/vdso.o: $(obj)/vdso.so $(obj)/vdso.o: $(obj)/vdso.so
...@@ -60,7 +54,7 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE ...@@ -60,7 +54,7 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
$(call if_changed,objcopy) $(call if_changed,objcopy)
# Generate VDSO offsets using helper script # Generate VDSO offsets using helper script
gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh gen-vdsosym := $(src)/gen_vdso_offsets.sh
quiet_cmd_vdsosym = VDSOSYM $@ quiet_cmd_vdsosym = VDSOSYM $@
cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# Makefile for RISC-V KVM support # Makefile for RISC-V KVM support
# #
ccflags-y += -I $(srctree)/$(src) ccflags-y += -I $(src)
include $(srctree)/virt/kvm/Makefile.kvm include $(srctree)/virt/kvm/Makefile.kvm
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
OBJECT_FILES_NON_STANDARD := y
purgatory-y := purgatory.o sha256.o entry.o string.o ctype.o memcpy.o memset.o purgatory-y := purgatory.o sha256.o entry.o string.o ctype.o memcpy.o memset.o
purgatory-y += strcmp.o strlen.o strncmp.o purgatory-y += strcmp.o strlen.o strncmp.o
...@@ -47,13 +46,6 @@ LDFLAGS_purgatory.ro := -r $(PURGATORY_LDFLAGS) ...@@ -47,13 +46,6 @@ LDFLAGS_purgatory.ro := -r $(PURGATORY_LDFLAGS)
LDFLAGS_purgatory.chk := $(PURGATORY_LDFLAGS) LDFLAGS_purgatory.chk := $(PURGATORY_LDFLAGS)
targets += purgatory.ro purgatory.chk targets += purgatory.ro purgatory.chk
# Sanitizer, etc. runtimes are unavailable and cannot be linked here.
GCOV_PROFILE := n
KASAN_SANITIZE := n
UBSAN_SANITIZE := n
KCSAN_SANITIZE := n
KCOV_INSTRUMENT := n
# These are adjustments to the compiler flags used for objects that # These are adjustments to the compiler flags used for objects that
# make up the standalone purgatory.ro # make up the standalone purgatory.ro
......
...@@ -4,8 +4,8 @@ gen := arch/$(ARCH)/include/generated ...@@ -4,8 +4,8 @@ gen := arch/$(ARCH)/include/generated
kapi := $(gen)/asm kapi := $(gen)/asm
uapi := $(gen)/uapi/asm uapi := $(gen)/uapi/asm
syscall := $(srctree)/$(src)/syscall.tbl syscall := $(src)/syscall.tbl
systbl := $(srctree)/$(src)/syscalltbl systbl := $(src)/syscalltbl
gen-y := $(kapi)/syscall_table.h gen-y := $(kapi)/syscall_table.h
kapi-hdrs-y := $(kapi)/unistd_nr.h kapi-hdrs-y := $(kapi)/unistd_nr.h
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# List of files in the vdso # List of files in the vdso
KCOV_INSTRUMENT := n
# Include the generic Makefile to check the built vdso. # Include the generic Makefile to check the built vdso.
include $(srctree)/lib/vdso/Makefile include $(srctree)/lib/vdso/Makefile
obj-vdso32 = vdso_user_wrapper-32.o note-32.o obj-vdso32 = vdso_user_wrapper-32.o note-32.o
...@@ -32,19 +30,13 @@ obj-y += vdso32_wrapper.o ...@@ -32,19 +30,13 @@ obj-y += vdso32_wrapper.o
targets += vdso32.lds targets += vdso32.lds
CPPFLAGS_vdso32.lds += -P -C -U$(ARCH) CPPFLAGS_vdso32.lds += -P -C -U$(ARCH)
# Disable gcov profiling, ubsan and kasan for VDSO code
GCOV_PROFILE := n
UBSAN_SANITIZE := n
KASAN_SANITIZE := n
KCSAN_SANITIZE := n
# Force dependency (incbin is bad) # Force dependency (incbin is bad)
$(obj)/vdso32_wrapper.o : $(obj)/vdso32.so $(obj)/vdso32_wrapper.o : $(obj)/vdso32.so
quiet_cmd_vdso_and_check = VDSO $@ quiet_cmd_vdso_and_check = VDSO $@
cmd_vdso_and_check = $(cmd_ld); $(cmd_vdso_check) cmd_vdso_and_check = $(cmd_ld); $(cmd_vdso_check)
$(obj)/vdso32.so.dbg: $(src)/vdso32.lds $(obj-vdso32) FORCE $(obj)/vdso32.so.dbg: $(obj)/vdso32.lds $(obj-vdso32) FORCE
$(call if_changed,vdso_and_check) $(call if_changed,vdso_and_check)
# strip rule for the .so file # strip rule for the .so file
...@@ -62,7 +54,7 @@ quiet_cmd_vdso32cc = VDSO32C $@ ...@@ -62,7 +54,7 @@ quiet_cmd_vdso32cc = VDSO32C $@
cmd_vdso32cc = $(CC) $(c_flags) -c -o $@ $< cmd_vdso32cc = $(CC) $(c_flags) -c -o $@ $<
# Generate VDSO offsets using helper script # Generate VDSO offsets using helper script
gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh gen-vdsosym := $(src)/gen_vdso_offsets.sh
quiet_cmd_vdsosym = VDSOSYM $@ quiet_cmd_vdsosym = VDSOSYM $@
cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# List of files in the vdso # List of files in the vdso
KCOV_INSTRUMENT := n
# Include the generic Makefile to check the built vdso. # Include the generic Makefile to check the built vdso.
include $(srctree)/lib/vdso/Makefile include $(srctree)/lib/vdso/Makefile
obj-vdso64 = vdso_user_wrapper.o note.o obj-vdso64 = vdso_user_wrapper.o note.o
...@@ -37,12 +35,6 @@ obj-y += vdso64_wrapper.o ...@@ -37,12 +35,6 @@ obj-y += vdso64_wrapper.o
targets += vdso64.lds targets += vdso64.lds
CPPFLAGS_vdso64.lds += -P -C -U$(ARCH) CPPFLAGS_vdso64.lds += -P -C -U$(ARCH)
# Disable gcov profiling, ubsan and kasan for VDSO code
GCOV_PROFILE := n
UBSAN_SANITIZE := n
KASAN_SANITIZE := n
KCSAN_SANITIZE := n
# Force dependency (incbin is bad) # Force dependency (incbin is bad)
$(obj)/vdso64_wrapper.o : $(obj)/vdso64.so $(obj)/vdso64_wrapper.o : $(obj)/vdso64.so
...@@ -50,7 +42,7 @@ quiet_cmd_vdso_and_check = VDSO $@ ...@@ -50,7 +42,7 @@ quiet_cmd_vdso_and_check = VDSO $@
cmd_vdso_and_check = $(cmd_ld); $(cmd_vdso_check) cmd_vdso_and_check = $(cmd_ld); $(cmd_vdso_check)
# link rule for the .so file, .lds has to be first # link rule for the .so file, .lds has to be first
$(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64) $(obj-cvdso64) FORCE $(obj)/vdso64.so.dbg: $(obj)/vdso64.lds $(obj-vdso64) $(obj-cvdso64) FORCE
$(call if_changed,vdso_and_check) $(call if_changed,vdso_and_check)
# strip rule for the .so file # strip rule for the .so file
...@@ -72,7 +64,7 @@ quiet_cmd_vdso64cc = VDSO64C $@ ...@@ -72,7 +64,7 @@ quiet_cmd_vdso64cc = VDSO64C $@
cmd_vdso64cc = $(CC) $(c_flags) -c -o $@ $< cmd_vdso64cc = $(CC) $(c_flags) -c -o $@ $<
# Generate VDSO offsets using helper script # Generate VDSO offsets using helper script
gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh gen-vdsosym := $(src)/gen_vdso_offsets.sh
quiet_cmd_vdsosym = VDSOSYM $@ quiet_cmd_vdsosym = VDSOSYM $@
cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
OBJECT_FILES_NON_STANDARD := y
purgatory-y := head.o purgatory.o string.o sha256.o mem.o purgatory-y := head.o purgatory.o string.o sha256.o mem.o
targets += $(purgatory-y) purgatory.lds purgatory purgatory.chk purgatory.ro targets += $(purgatory-y) purgatory.lds purgatory purgatory.chk purgatory.ro
...@@ -15,12 +13,6 @@ CFLAGS_sha256.o := -D__DISABLE_EXPORTS -D__NO_FORTIFY ...@@ -15,12 +13,6 @@ CFLAGS_sha256.o := -D__DISABLE_EXPORTS -D__NO_FORTIFY
$(obj)/mem.o: $(srctree)/arch/s390/lib/mem.S FORCE $(obj)/mem.o: $(srctree)/arch/s390/lib/mem.S FORCE
$(call if_changed_rule,as_o_S) $(call if_changed_rule,as_o_S)
KCOV_INSTRUMENT := n
GCOV_PROFILE := n
UBSAN_SANITIZE := n
KASAN_SANITIZE := n
KCSAN_SANITIZE := n
KBUILD_CFLAGS := -fno-strict-aliasing -Wall -Wstrict-prototypes KBUILD_CFLAGS := -fno-strict-aliasing -Wall -Wstrict-prototypes
KBUILD_CFLAGS += -Wno-pointer-sign -Wno-sign-compare KBUILD_CFLAGS += -Wno-pointer-sign -Wno-sign-compare
KBUILD_CFLAGS += -fno-zero-initialized-in-bss -fno-builtin -ffreestanding KBUILD_CFLAGS += -fno-zero-initialized-in-bss -fno-builtin -ffreestanding
......
...@@ -710,7 +710,6 @@ config ROMIMAGE_MMCIF ...@@ -710,7 +710,6 @@ config ROMIMAGE_MMCIF
choice choice
prompt "Kernel command line" prompt "Kernel command line"
optional
default CMDLINE_OVERWRITE default CMDLINE_OVERWRITE
help help
Setting this option allows the kernel command line arguments Setting this option allows the kernel command line arguments
...@@ -728,6 +727,11 @@ config CMDLINE_EXTEND ...@@ -728,6 +727,11 @@ config CMDLINE_EXTEND
Given string will be concatenated with arguments passed in Given string will be concatenated with arguments passed in
by a bootloader. by a bootloader.
config CMDLINE_FROM_BOOTLOADER
bool "Use bootloader kernel arguments"
help
Uses the command-line options passed by the boot loader.
endchoice endchoice
config CMDLINE config CMDLINE
......
...@@ -11,9 +11,6 @@ OBJECTS := head_32.o misc.o piggy.o \ ...@@ -11,9 +11,6 @@ OBJECTS := head_32.o misc.o piggy.o \
targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 \ targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 \
vmlinux.bin.lzma vmlinux.bin.xz vmlinux.bin.lzo $(OBJECTS) vmlinux.bin.lzma vmlinux.bin.xz vmlinux.bin.lzo $(OBJECTS)
GCOV_PROFILE := n
UBSAN_SANITIZE := n
# #
# IMAGE_OFFSET is the load offset of the compression loader # IMAGE_OFFSET is the load offset of the compression loader
# #
......
...@@ -15,6 +15,7 @@ CONFIG_MEMORY_START=0x0C000000 ...@@ -15,6 +15,7 @@ CONFIG_MEMORY_START=0x0C000000
CONFIG_FLATMEM_MANUAL=y CONFIG_FLATMEM_MANUAL=y
CONFIG_SH_STORE_QUEUES=y CONFIG_SH_STORE_QUEUES=y
CONFIG_SH_APSH4A3A=y CONFIG_SH_APSH4A3A=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_HIGH_RES_TIMERS=y CONFIG_HIGH_RES_TIMERS=y
CONFIG_KEXEC=y CONFIG_KEXEC=y
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
......
...@@ -42,6 +42,7 @@ CONFIG_SECCOMP=y ...@@ -42,6 +42,7 @@ CONFIG_SECCOMP=y
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
CONFIG_BINFMT_MISC=y CONFIG_BINFMT_MISC=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_PM=y CONFIG_PM=y
CONFIG_PM_DEBUG=y CONFIG_PM_DEBUG=y
CONFIG_PM=y CONFIG_PM=y
......
...@@ -19,6 +19,7 @@ CONFIG_BASE_SMALL=y ...@@ -19,6 +19,7 @@ CONFIG_BASE_SMALL=y
CONFIG_CPU_SUBTYPE_SH7705=y CONFIG_CPU_SUBTYPE_SH7705=y
CONFIG_SH_EDOSK7705=y CONFIG_SH_EDOSK7705=y
CONFIG_SH_PCLK_FREQ=31250000 CONFIG_SH_PCLK_FREQ=31250000
CONFIG_CMDLINE_FROM_BOOTLOADER=y
# CONFIG_PREVENT_FIRMWARE_BUILD is not set # CONFIG_PREVENT_FIRMWARE_BUILD is not set
# CONFIG_INPUT is not set # CONFIG_INPUT is not set
# CONFIG_SERIO is not set # CONFIG_SERIO is not set
......
...@@ -15,6 +15,7 @@ CONFIG_SH_DMA_API=y ...@@ -15,6 +15,7 @@ CONFIG_SH_DMA_API=y
CONFIG_HD64461_ENABLER=y CONFIG_HD64461_ENABLER=y
CONFIG_PCCARD=y CONFIG_PCCARD=y
CONFIG_PM=y CONFIG_PM=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_APM_EMULATION=y CONFIG_APM_EMULATION=y
# CONFIG_STANDALONE is not set # CONFIG_STANDALONE is not set
CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SD=y
......
...@@ -15,6 +15,7 @@ CONFIG_KEXEC=y ...@@ -15,6 +15,7 @@ CONFIG_KEXEC=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_PCCARD=y CONFIG_PCCARD=y
CONFIG_YENTA=y CONFIG_YENTA=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y
CONFIG_UNIX=y CONFIG_UNIX=y
......
...@@ -22,6 +22,7 @@ CONFIG_SH_PCLK_FREQ=24000000 ...@@ -22,6 +22,7 @@ CONFIG_SH_PCLK_FREQ=24000000
CONFIG_SH_DMA=y CONFIG_SH_DMA=y
CONFIG_SH_DMA_API=y CONFIG_SH_DMA_API=y
CONFIG_HEARTBEAT=y CONFIG_HEARTBEAT=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y
CONFIG_UNIX=y CONFIG_UNIX=y
......
...@@ -21,6 +21,7 @@ CONFIG_MEMORY_START=0x0c000000 ...@@ -21,6 +21,7 @@ CONFIG_MEMORY_START=0x0c000000
CONFIG_FLATMEM_MANUAL=y CONFIG_FLATMEM_MANUAL=y
CONFIG_CPU_BIG_ENDIAN=y CONFIG_CPU_BIG_ENDIAN=y
CONFIG_SH_RSK=y CONFIG_SH_RSK=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
# CONFIG_SH_TIMER_MTU2 is not set # CONFIG_SH_TIMER_MTU2 is not set
CONFIG_BINFMT_FLAT=y CONFIG_BINFMT_FLAT=y
CONFIG_NET=y CONFIG_NET=y
......
...@@ -10,6 +10,7 @@ CONFIG_MEMORY_SIZE=0x02000000 ...@@ -10,6 +10,7 @@ CONFIG_MEMORY_SIZE=0x02000000
CONFIG_FLATMEM_MANUAL=y CONFIG_FLATMEM_MANUAL=y
CONFIG_CPU_BIG_ENDIAN=y CONFIG_CPU_BIG_ENDIAN=y
CONFIG_SH_RSK=y CONFIG_SH_RSK=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
# CONFIG_SH_TIMER_MTU2 is not set # CONFIG_SH_TIMER_MTU2 is not set
CONFIG_SH_PCLK_FREQ=66700000 CONFIG_SH_PCLK_FREQ=66700000
CONFIG_BINFMT_FLAT=y CONFIG_BINFMT_FLAT=y
......
...@@ -14,6 +14,7 @@ CONFIG_FLATMEM_MANUAL=y ...@@ -14,6 +14,7 @@ CONFIG_FLATMEM_MANUAL=y
CONFIG_CPU_BIG_ENDIAN=y CONFIG_CPU_BIG_ENDIAN=y
CONFIG_SH_7619_SOLUTION_ENGINE=y CONFIG_SH_7619_SOLUTION_ENGINE=y
CONFIG_HZ_100=y CONFIG_HZ_100=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_BINFMT_FLAT=y CONFIG_BINFMT_FLAT=y
CONFIG_BINFMT_ZFLAT=y CONFIG_BINFMT_ZFLAT=y
# CONFIG_STANDALONE is not set # CONFIG_STANDALONE is not set
......
...@@ -13,6 +13,7 @@ CONFIG_FLATMEM_MANUAL=y ...@@ -13,6 +13,7 @@ CONFIG_FLATMEM_MANUAL=y
# CONFIG_SH_ADC is not set # CONFIG_SH_ADC is not set
CONFIG_SH_SOLUTION_ENGINE=y CONFIG_SH_SOLUTION_ENGINE=y
CONFIG_HEARTBEAT=y CONFIG_HEARTBEAT=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y
......
...@@ -17,6 +17,7 @@ CONFIG_SH_7722_SOLUTION_ENGINE=y ...@@ -17,6 +17,7 @@ CONFIG_SH_7722_SOLUTION_ENGINE=y
CONFIG_NO_HZ=y CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y CONFIG_HIGH_RES_TIMERS=y
CONFIG_HEARTBEAT=y CONFIG_HEARTBEAT=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_KEXEC=y CONFIG_KEXEC=y
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
CONFIG_NET=y CONFIG_NET=y
......
...@@ -15,6 +15,7 @@ CONFIG_FLATMEM_MANUAL=y ...@@ -15,6 +15,7 @@ CONFIG_FLATMEM_MANUAL=y
CONFIG_SH_SOLUTION_ENGINE=y CONFIG_SH_SOLUTION_ENGINE=y
CONFIG_SH_PCLK_FREQ=33333333 CONFIG_SH_PCLK_FREQ=33333333
CONFIG_HEARTBEAT=y CONFIG_HEARTBEAT=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y
CONFIG_UNIX=y CONFIG_UNIX=y
......
...@@ -10,6 +10,7 @@ CONFIG_SH_SECUREEDGE5410=y ...@@ -10,6 +10,7 @@ CONFIG_SH_SECUREEDGE5410=y
CONFIG_SH_DMA=y CONFIG_SH_DMA=y
CONFIG_SH_DMA_API=y CONFIG_SH_DMA_API=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_NET=y CONFIG_NET=y
CONFIG_INET=y CONFIG_INET=y
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set # CONFIG_INET_XFRM_MODE_TRANSPORT is not set
......
...@@ -15,6 +15,7 @@ CONFIG_MEMORY_SIZE=0x00800000 ...@@ -15,6 +15,7 @@ CONFIG_MEMORY_SIZE=0x00800000
CONFIG_FLATMEM_MANUAL=y CONFIG_FLATMEM_MANUAL=y
# CONFIG_SH_ADC is not set # CONFIG_SH_ADC is not set
CONFIG_SH_PCLK_FREQ=32768000 CONFIG_SH_PCLK_FREQ=32768000
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y
CONFIG_UNIX=y CONFIG_UNIX=y
......
...@@ -12,6 +12,7 @@ CONFIG_CPU_FREQ=y ...@@ -12,6 +12,7 @@ CONFIG_CPU_FREQ=y
CONFIG_SH_CPU_FREQ=y CONFIG_SH_CPU_FREQ=y
CONFIG_KEXEC=y CONFIG_KEXEC=y
CONFIG_KEXEC_JUMP=y CONFIG_KEXEC_JUMP=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_HIBERNATION=y CONFIG_HIBERNATION=y
CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE=y
# CONFIG_PREVENT_FIRMWARE_BUILD is not set # CONFIG_PREVENT_FIRMWARE_BUILD is not set
......
...@@ -14,6 +14,7 @@ CONFIG_SH_CPU_FREQ=y ...@@ -14,6 +14,7 @@ CONFIG_SH_CPU_FREQ=y
CONFIG_KEXEC=y CONFIG_KEXEC=y
CONFIG_KEXEC_JUMP=y CONFIG_KEXEC_JUMP=y
CONFIG_PM=y CONFIG_PM=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_HIBERNATION=y CONFIG_HIBERNATION=y
CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE=y
# CONFIG_PREVENT_FIRMWARE_BUILD is not set # CONFIG_PREVENT_FIRMWARE_BUILD is not set
......
...@@ -32,6 +32,7 @@ CONFIG_PREEMPT=y ...@@ -32,6 +32,7 @@ CONFIG_PREEMPT=y
CONFIG_INTC_USERIMASK=y CONFIG_INTC_USERIMASK=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_PCI_DEBUG=y CONFIG_PCI_DEBUG=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_PM=y CONFIG_PM=y
CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE=y
CONFIG_NET=y CONFIG_NET=y
......
...@@ -17,6 +17,7 @@ CONFIG_HEARTBEAT=y ...@@ -17,6 +17,7 @@ CONFIG_HEARTBEAT=y
CONFIG_KEXEC=y CONFIG_KEXEC=y
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y
CONFIG_UNIX=y CONFIG_UNIX=y
......
...@@ -34,6 +34,7 @@ CONFIG_PCIEPORTBUS=y ...@@ -34,6 +34,7 @@ CONFIG_PCIEPORTBUS=y
CONFIG_PCIEASPM_DEBUG=y CONFIG_PCIEASPM_DEBUG=y
CONFIG_PCI_DEBUG=y CONFIG_PCI_DEBUG=y
CONFIG_BINFMT_MISC=y CONFIG_BINFMT_MISC=y
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_PM=y CONFIG_PM=y
CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE=y
CONFIG_NET=y CONFIG_NET=y
......
...@@ -19,14 +19,14 @@ vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1 -Wl,--hash-style=sysv ...@@ -19,14 +19,14 @@ vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1 -Wl,--hash-style=sysv
SYSCFLAGS_vsyscall-trapa.so = $(vsyscall-flags) SYSCFLAGS_vsyscall-trapa.so = $(vsyscall-flags)
$(obj)/vsyscall-trapa.so: \ $(obj)/vsyscall-trapa.so: \
$(obj)/vsyscall-%.so: $(src)/vsyscall.lds $(obj)/vsyscall-%.o FORCE $(obj)/vsyscall-%.so: $(obj)/vsyscall.lds $(obj)/vsyscall-%.o FORCE
$(call if_changed,syscall) $(call if_changed,syscall)
# We also create a special relocatable object that should mirror the symbol # We also create a special relocatable object that should mirror the symbol
# table and layout of the linked DSO. With ld -R we can then refer to # table and layout of the linked DSO. With ld -R we can then refer to
# these symbols in the kernel code rather than hand-coded addresses. # these symbols in the kernel code rather than hand-coded addresses.
SYSCFLAGS_vsyscall-dummy.o = -r SYSCFLAGS_vsyscall-dummy.o = -r
$(obj)/vsyscall-dummy.o: $(src)/vsyscall.lds \ $(obj)/vsyscall-dummy.o: $(obj)/vsyscall.lds \
$(obj)/vsyscall-trapa.o $(obj)/vsyscall-note.o FORCE $(obj)/vsyscall-trapa.o $(obj)/vsyscall-note.o FORCE
$(call if_changed,syscall) $(call if_changed,syscall)
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
# #
# Building vDSO images for sparc. # Building vDSO images for sparc.
# #
UBSAN_SANITIZE := n
# files to link into the vdso # files to link into the vdso
vobjs-y := vdso-note.o vclock_gettime.o vobjs-y := vdso-note.o vclock_gettime.o
...@@ -103,7 +102,6 @@ quiet_cmd_vdso = VDSO $@ ...@@ -103,7 +102,6 @@ quiet_cmd_vdso = VDSO $@
cmd_vdso = $(LD) -nostdlib -o $@ \ cmd_vdso = $(LD) -nostdlib -o $@ \
$(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \ $(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \
-T $(filter %.lds,$^) $(filter %.o,$^) && \ -T $(filter %.lds,$^) $(filter %.o,$^) && \
sh $(srctree)/$(src)/checkundef.sh '$(OBJDUMP)' '$@' sh $(src)/checkundef.sh '$(OBJDUMP)' '$@'
VDSO_LDFLAGS = -shared --hash-style=both --build-id=sha1 -Bsymbolic VDSO_LDFLAGS = -shared --hash-style=both --build-id=sha1 -Bsymbolic
GCOV_PROFILE := n
...@@ -47,7 +47,7 @@ $(obj)/config.c: $(src)/config.c.in $(obj)/config.tmp FORCE ...@@ -47,7 +47,7 @@ $(obj)/config.c: $(src)/config.c.in $(obj)/config.tmp FORCE
$(call if_changed,quote2) $(call if_changed,quote2)
quiet_cmd_mkcapflags = MKCAP $@ quiet_cmd_mkcapflags = MKCAP $@
cmd_mkcapflags = $(CONFIG_SHELL) $(srctree)/$(src)/../../x86/kernel/cpu/mkcapflags.sh $@ $^ cmd_mkcapflags = $(CONFIG_SHELL) $(src)/../../x86/kernel/cpu/mkcapflags.sh $@ $^
cpufeature = $(src)/../../x86/include/asm/cpufeatures.h cpufeature = $(src)/../../x86/include/asm/cpufeatures.h
vmxfeature = $(src)/../../x86/include/asm/vmxfeatures.h vmxfeature = $(src)/../../x86/include/asm/vmxfeatures.h
......
...@@ -9,19 +9,6 @@ ...@@ -9,19 +9,6 @@
# Changed by many, many contributors over the years. # Changed by many, many contributors over the years.
# #
# Sanitizer runtimes are unavailable and cannot be linked for early boot code.
KASAN_SANITIZE := n
KCSAN_SANITIZE := n
KMSAN_SANITIZE := n
OBJECT_FILES_NON_STANDARD := y
# Kernel does not boot with kcov instrumentation here.
# One of the problems observed was insertion of __sanitizer_cov_trace_pc()
# callback into middle of per-cpu data enabling code. Thus the callback observed
# inconsistent state and crashed. We are interested mostly in syscall coverage,
# so boot code is not interesting anyway.
KCOV_INSTRUMENT := n
# If you want to preset the SVGA mode, uncomment the next line and # If you want to preset the SVGA mode, uncomment the next line and
# set SVGA_MODE to whatever number you want. # set SVGA_MODE to whatever number you want.
# Set it to -DSVGA_MODE=NORMAL_VGA if you just want the EGA/VGA mode. # Set it to -DSVGA_MODE=NORMAL_VGA if you just want the EGA/VGA mode.
...@@ -69,8 +56,6 @@ KBUILD_CFLAGS := $(REALMODE_CFLAGS) -D_SETUP ...@@ -69,8 +56,6 @@ KBUILD_CFLAGS := $(REALMODE_CFLAGS) -D_SETUP
KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=) KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=)
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
GCOV_PROFILE := n
UBSAN_SANITIZE := n
$(obj)/bzImage: asflags-y := $(SVGA_MODE) $(obj)/bzImage: asflags-y := $(SVGA_MODE)
...@@ -129,7 +114,7 @@ targets += mtools.conf ...@@ -129,7 +114,7 @@ targets += mtools.conf
# genimage.sh requires bash, but it also has a bunch of other # genimage.sh requires bash, but it also has a bunch of other
# external dependencies. # external dependencies.
quiet_cmd_genimage = GENIMAGE $3 quiet_cmd_genimage = GENIMAGE $3
cmd_genimage = $(BASH) $(srctree)/$(src)/genimage.sh $2 $3 $(obj)/bzImage \ cmd_genimage = $(BASH) $(src)/genimage.sh $2 $3 $(obj)/bzImage \
$(obj)/mtools.conf '$(FDARGS)' $(FDINITRD) $(obj)/mtools.conf '$(FDARGS)' $(FDINITRD)
PHONY += bzdisk fdimage fdimage144 fdimage288 hdimage isoimage PHONY += bzdisk fdimage fdimage144 fdimage288 hdimage isoimage
......
...@@ -17,15 +17,6 @@ ...@@ -17,15 +17,6 @@
# (see scripts/Makefile.lib size_append) # (see scripts/Makefile.lib size_append)
# compressed vmlinux.bin.all + u32 size of vmlinux.bin.all # compressed vmlinux.bin.all + u32 size of vmlinux.bin.all
# Sanitizer runtimes are unavailable and cannot be linked for early boot code.
KASAN_SANITIZE := n
KCSAN_SANITIZE := n
KMSAN_SANITIZE := n
OBJECT_FILES_NON_STANDARD := y
# Prevents link failures: __sanitizer_cov_trace_pc() is not linked in.
KCOV_INSTRUMENT := n
targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \ targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \
vmlinux.bin.xz vmlinux.bin.lzo vmlinux.bin.lz4 vmlinux.bin.zst vmlinux.bin.xz vmlinux.bin.lzo vmlinux.bin.lz4 vmlinux.bin.zst
...@@ -59,8 +50,6 @@ KBUILD_CFLAGS += -include $(srctree)/include/linux/hidden.h ...@@ -59,8 +50,6 @@ KBUILD_CFLAGS += -include $(srctree)/include/linux/hidden.h
CFLAGS_sev.o += -I$(objtree)/arch/x86/lib/ CFLAGS_sev.o += -I$(objtree)/arch/x86/lib/
KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
GCOV_PROFILE := n
UBSAN_SANITIZE :=n
KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE) KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE)
KBUILD_LDFLAGS += $(call ld-option,--no-ld-generated-unwind-info) KBUILD_LDFLAGS += $(call ld-option,--no-ld-generated-unwind-info)
......
...@@ -6,20 +6,6 @@ ...@@ -6,20 +6,6 @@
# Include the generic Makefile to check the built vDSO: # Include the generic Makefile to check the built vDSO:
include $(srctree)/lib/vdso/Makefile include $(srctree)/lib/vdso/Makefile
# Sanitizer runtimes are unavailable and cannot be linked here.
KASAN_SANITIZE := n
KMSAN_SANITIZE_vclock_gettime.o := n
KMSAN_SANITIZE_vdso32/vclock_gettime.o := n
KMSAN_SANITIZE_vgetcpu.o := n
KMSAN_SANITIZE_vdso32/vgetcpu.o := n
UBSAN_SANITIZE := n
KCSAN_SANITIZE := n
OBJECT_FILES_NON_STANDARD := y
# Prevents link failures: __sanitizer_cov_trace_pc() is not linked in.
KCOV_INSTRUMENT := n
# Files to link into the vDSO: # Files to link into the vDSO:
vobjs-y := vdso-note.o vclock_gettime.o vgetcpu.o vobjs-y := vdso-note.o vclock_gettime.o vgetcpu.o
vobjs32-y := vdso32/note.o vdso32/system_call.o vdso32/sigreturn.o vobjs32-y := vdso32/note.o vdso32/system_call.o vdso32/sigreturn.o
...@@ -28,23 +14,12 @@ vobjs-$(CONFIG_X86_SGX) += vsgx.o ...@@ -28,23 +14,12 @@ vobjs-$(CONFIG_X86_SGX) += vsgx.o
# Files to link into the kernel: # Files to link into the kernel:
obj-y += vma.o extable.o obj-y += vma.o extable.o
KASAN_SANITIZE_vma.o := y
UBSAN_SANITIZE_vma.o := y
KCSAN_SANITIZE_vma.o := y
OBJECT_FILES_NON_STANDARD_vma.o := n
OBJECT_FILES_NON_STANDARD_extable.o := n
# vDSO images to build: # vDSO images to build:
obj-$(CONFIG_X86_64) += vdso-image-64.o obj-$(CONFIG_X86_64) += vdso-image-64.o
obj-$(CONFIG_X86_X32_ABI) += vdso-image-x32.o obj-$(CONFIG_X86_X32_ABI) += vdso-image-x32.o
obj-$(CONFIG_COMPAT_32) += vdso-image-32.o vdso32-setup.o obj-$(CONFIG_COMPAT_32) += vdso-image-32.o vdso32-setup.o
OBJECT_FILES_NON_STANDARD_vdso-image-32.o := n
OBJECT_FILES_NON_STANDARD_vdso-image-x32.o := n
OBJECT_FILES_NON_STANDARD_vdso-image-64.o := n
OBJECT_FILES_NON_STANDARD_vdso32-setup.o := n
vobjs := $(addprefix $(obj)/, $(vobjs-y)) vobjs := $(addprefix $(obj)/, $(vobjs-y))
vobjs32 := $(addprefix $(obj)/, $(vobjs32-y)) vobjs32 := $(addprefix $(obj)/, $(vobjs32-y))
...@@ -176,11 +151,10 @@ quiet_cmd_vdso = VDSO $@ ...@@ -176,11 +151,10 @@ quiet_cmd_vdso = VDSO $@
cmd_vdso = $(LD) -o $@ \ cmd_vdso = $(LD) -o $@ \
$(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \ $(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \
-T $(filter %.lds,$^) $(filter %.o,$^) && \ -T $(filter %.lds,$^) $(filter %.o,$^) && \
sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@' sh $(src)/checkundef.sh '$(NM)' '$@'
VDSO_LDFLAGS = -shared --hash-style=both --build-id=sha1 \ VDSO_LDFLAGS = -shared --hash-style=both --build-id=sha1 \
$(call ld-option, --eh-frame-hdr) -Bsymbolic -z noexecstack $(call ld-option, --eh-frame-hdr) -Bsymbolic -z noexecstack
GCOV_PROFILE := n
quiet_cmd_vdso_and_check = VDSO $@ quiet_cmd_vdso_and_check = VDSO $@
cmd_vdso_and_check = $(cmd_vdso); $(cmd_vdso_check) cmd_vdso_and_check = $(cmd_vdso); $(cmd_vdso_check)
...@@ -40,7 +40,7 @@ KMSAN_SANITIZE_sev.o := n ...@@ -40,7 +40,7 @@ KMSAN_SANITIZE_sev.o := n
KCOV_INSTRUMENT_head$(BITS).o := n KCOV_INSTRUMENT_head$(BITS).o := n
KCOV_INSTRUMENT_sev.o := n KCOV_INSTRUMENT_sev.o := n
CFLAGS_irq.o := -I $(srctree)/$(src)/../include/asm/trace CFLAGS_irq.o := -I $(src)/../include/asm/trace
obj-y += head_$(BITS).o obj-y += head_$(BITS).o
obj-y += head$(BITS).o obj-y += head$(BITS).o
......
...@@ -60,7 +60,7 @@ obj-$(CONFIG_ACRN_GUEST) += acrn.o ...@@ -60,7 +60,7 @@ obj-$(CONFIG_ACRN_GUEST) += acrn.o
obj-$(CONFIG_DEBUG_FS) += debugfs.o obj-$(CONFIG_DEBUG_FS) += debugfs.o
quiet_cmd_mkcapflags = MKCAP $@ quiet_cmd_mkcapflags = MKCAP $@
cmd_mkcapflags = $(CONFIG_SHELL) $(srctree)/$(src)/mkcapflags.sh $@ $^ cmd_mkcapflags = $(CONFIG_SHELL) $(src)/mkcapflags.sh $@ $^
cpufeature = $(src)/../../include/asm/cpufeatures.h cpufeature = $(src)/../../include/asm/cpufeatures.h
vmxfeature = $(src)/../../include/asm/vmxfeatures.h vmxfeature = $(src)/../../include/asm/vmxfeatures.h
......
...@@ -34,7 +34,7 @@ obj-y += pat/ ...@@ -34,7 +34,7 @@ obj-y += pat/
CFLAGS_physaddr.o := -fno-stack-protector CFLAGS_physaddr.o := -fno-stack-protector
CFLAGS_mem_encrypt_identity.o := -fno-stack-protector CFLAGS_mem_encrypt_identity.o := -fno-stack-protector
CFLAGS_fault.o := -I $(srctree)/$(src)/../include/asm/trace CFLAGS_fault.o := -I $(src)/../include/asm/trace
obj-$(CONFIG_X86_32) += pgtable_32.o iomap_32.o obj-$(CONFIG_X86_32) += pgtable_32.o iomap_32.o
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
OBJECT_FILES_NON_STANDARD := y
purgatory-y := purgatory.o stack.o setup-x86_$(BITS).o sha256.o entry64.o string.o purgatory-y := purgatory.o stack.o setup-x86_$(BITS).o sha256.o entry64.o string.o
...@@ -30,14 +29,6 @@ LDFLAGS_purgatory.ro := -r $(PURGATORY_LDFLAGS) ...@@ -30,14 +29,6 @@ LDFLAGS_purgatory.ro := -r $(PURGATORY_LDFLAGS)
LDFLAGS_purgatory.chk := $(PURGATORY_LDFLAGS) LDFLAGS_purgatory.chk := $(PURGATORY_LDFLAGS)
targets += purgatory.ro purgatory.chk targets += purgatory.ro purgatory.chk
# Sanitizer, etc. runtimes are unavailable and cannot be linked here.
GCOV_PROFILE := n
KASAN_SANITIZE := n
UBSAN_SANITIZE := n
KCSAN_SANITIZE := n
KMSAN_SANITIZE := n
KCOV_INSTRUMENT := n
# These are adjustments to the compiler flags used for objects that # These are adjustments to the compiler flags used for objects that
# make up the standalone purgatory.ro # make up the standalone purgatory.ro
......
...@@ -7,15 +7,6 @@ ...@@ -7,15 +7,6 @@
# #
# #
# Sanitizer runtimes are unavailable and cannot be linked here.
KASAN_SANITIZE := n
KCSAN_SANITIZE := n
KMSAN_SANITIZE := n
OBJECT_FILES_NON_STANDARD := y
# Prevents link failures: __sanitizer_cov_trace_pc() is not linked in.
KCOV_INSTRUMENT := n
always-y := realmode.bin realmode.relocs always-y := realmode.bin realmode.relocs
wakeup-objs := wakeup_asm.o wakemain.o video-mode.o wakeup-objs := wakeup_asm.o wakemain.o video-mode.o
...@@ -76,5 +67,3 @@ KBUILD_CFLAGS := $(REALMODE_CFLAGS) -D_SETUP -D_WAKEUP \ ...@@ -76,5 +67,3 @@ KBUILD_CFLAGS := $(REALMODE_CFLAGS) -D_SETUP -D_WAKEUP \
-I$(srctree)/arch/x86/boot -I$(srctree)/arch/x86/boot
KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
GCOV_PROFILE := n
UBSAN_SANITIZE := n
...@@ -3,12 +3,6 @@ ...@@ -3,12 +3,6 @@
# Building vDSO images for x86. # Building vDSO images for x86.
# #
# do not instrument on vdso because KASAN is not compatible with user mode
KASAN_SANITIZE := n
# Prevents link failures: __sanitizer_cov_trace_pc() is not linked in.
KCOV_INSTRUMENT := n
VDSO64-y := y VDSO64-y := y
vdso-install-$(VDSO64-y) += vdso.so vdso-install-$(VDSO64-y) += vdso.so
...@@ -63,7 +57,6 @@ quiet_cmd_vdso = VDSO $@ ...@@ -63,7 +57,6 @@ quiet_cmd_vdso = VDSO $@
cmd_vdso = $(CC) -nostdlib -o $@ \ cmd_vdso = $(CC) -nostdlib -o $@ \
$(CC_FLAGS_LTO) $(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \ $(CC_FLAGS_LTO) $(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \
-Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) && \ -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) && \
sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@' sh $(src)/checkundef.sh '$(NM)' '$@'
VDSO_LDFLAGS = -fPIC -shared -Wl,--hash-style=sysv -z noexecstack VDSO_LDFLAGS = -fPIC -shared -Wl,--hash-style=sysv -z noexecstack
GCOV_PROFILE := n
...@@ -10,5 +10,4 @@ ...@@ -10,5 +10,4 @@
obj-$(CONFIG_OF) += $(addsuffix .dtb.o, $(CONFIG_BUILTIN_DTB_SOURCE)) obj-$(CONFIG_OF) += $(addsuffix .dtb.o, $(CONFIG_BUILTIN_DTB_SOURCE))
# for CONFIG_OF_ALL_DTBS test # for CONFIG_OF_ALL_DTBS test
dtstree := $(srctree)/$(src) dtb- := $(patsubst $(src)/%.dts,%.dtb, $(wildcard $(src)/*.dts))
dtb- := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
...@@ -13,7 +13,7 @@ CFLAGS_blacklist_hashes.o := -I $(obj) ...@@ -13,7 +13,7 @@ CFLAGS_blacklist_hashes.o := -I $(obj)
quiet_cmd_check_and_copy_blacklist_hash_list = GEN $@ quiet_cmd_check_and_copy_blacklist_hash_list = GEN $@
cmd_check_and_copy_blacklist_hash_list = \ cmd_check_and_copy_blacklist_hash_list = \
$(if $(CONFIG_SYSTEM_BLACKLIST_HASH_LIST), \ $(if $(CONFIG_SYSTEM_BLACKLIST_HASH_LIST), \
$(AWK) -f $(srctree)/$(src)/check-blacklist-hashes.awk $(CONFIG_SYSTEM_BLACKLIST_HASH_LIST) >&2; \ $(AWK) -f $(src)/check-blacklist-hashes.awk $(CONFIG_SYSTEM_BLACKLIST_HASH_LIST) >&2; \
{ cat $(CONFIG_SYSTEM_BLACKLIST_HASH_LIST); echo $(comma) NULL; } > $@, \ { cat $(CONFIG_SYSTEM_BLACKLIST_HASH_LIST); echo $(comma) NULL; } > $@, \
echo NULL > $@) echo NULL > $@)
...@@ -55,7 +55,7 @@ $(obj)/signing_key.pem: $(obj)/x509.genkey FORCE ...@@ -55,7 +55,7 @@ $(obj)/signing_key.pem: $(obj)/x509.genkey FORCE
targets += signing_key.pem targets += signing_key.pem
quiet_cmd_copy_x509_config = COPY $@ quiet_cmd_copy_x509_config = COPY $@
cmd_copy_x509_config = cat $(srctree)/$(src)/default_x509.genkey > $@ cmd_copy_x509_config = cat $(src)/default_x509.genkey > $@
# You can provide your own config file. If not present, copy the default one. # You can provide your own config file. If not present, copy the default one.
$(obj)/x509.genkey: $(obj)/x509.genkey:
......
...@@ -6,11 +6,6 @@ ...@@ -6,11 +6,6 @@
# Rewritten to use lists instead of if-statements. # Rewritten to use lists instead of if-statements.
# #
# Some driver Makefiles miss $(srctree)/ for include directive.
ifdef building_out_of_srctree
MAKEFLAGS += --include-dir=$(srctree)
endif
obj-y += cache/ obj-y += cache/
obj-y += irqchip/ obj-y += irqchip/
obj-y += bus/ obj-y += bus/
......
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
ccflags-y := -I $(srctree)/$(src)/../qat_common ccflags-y := -I $(src)/../qat_common
obj-$(CONFIG_CRYPTO_DEV_QAT_420XX) += qat_420xx.o obj-$(CONFIG_CRYPTO_DEV_QAT_420XX) += qat_420xx.o
qat_420xx-objs := adf_drv.o adf_420xx_hw_data.o qat_420xx-objs := adf_drv.o adf_420xx_hw_data.o
# SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) # SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
ccflags-y := -I $(srctree)/$(src)/../qat_common ccflags-y := -I $(src)/../qat_common
obj-$(CONFIG_CRYPTO_DEV_QAT_4XXX) += qat_4xxx.o obj-$(CONFIG_CRYPTO_DEV_QAT_4XXX) += qat_4xxx.o
qat_4xxx-objs := adf_drv.o adf_4xxx_hw_data.o qat_4xxx-objs := adf_drv.o adf_4xxx_hw_data.o
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
ccflags-y := -I $(srctree)/$(src)/../qat_common ccflags-y := -I $(src)/../qat_common
obj-$(CONFIG_CRYPTO_DEV_QAT_C3XXX) += qat_c3xxx.o obj-$(CONFIG_CRYPTO_DEV_QAT_C3XXX) += qat_c3xxx.o
qat_c3xxx-objs := adf_drv.o adf_c3xxx_hw_data.o qat_c3xxx-objs := adf_drv.o adf_c3xxx_hw_data.o
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
ccflags-y := -I $(srctree)/$(src)/../qat_common ccflags-y := -I $(src)/../qat_common
obj-$(CONFIG_CRYPTO_DEV_QAT_C3XXXVF) += qat_c3xxxvf.o obj-$(CONFIG_CRYPTO_DEV_QAT_C3XXXVF) += qat_c3xxxvf.o
qat_c3xxxvf-objs := adf_drv.o adf_c3xxxvf_hw_data.o qat_c3xxxvf-objs := adf_drv.o adf_c3xxxvf_hw_data.o
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
ccflags-y := -I $(srctree)/$(src)/../qat_common ccflags-y := -I $(src)/../qat_common
obj-$(CONFIG_CRYPTO_DEV_QAT_C62X) += qat_c62x.o obj-$(CONFIG_CRYPTO_DEV_QAT_C62X) += qat_c62x.o
qat_c62x-objs := adf_drv.o adf_c62x_hw_data.o qat_c62x-objs := adf_drv.o adf_c62x_hw_data.o
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
ccflags-y := -I $(srctree)/$(src)/../qat_common ccflags-y := -I $(src)/../qat_common
obj-$(CONFIG_CRYPTO_DEV_QAT_C62XVF) += qat_c62xvf.o obj-$(CONFIG_CRYPTO_DEV_QAT_C62XVF) += qat_c62xvf.o
qat_c62xvf-objs := adf_drv.o adf_c62xvf_hw_data.o qat_c62xvf-objs := adf_drv.o adf_c62xvf_hw_data.o
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
ccflags-y := -I $(srctree)/$(src)/../qat_common ccflags-y := -I $(src)/../qat_common
obj-$(CONFIG_CRYPTO_DEV_QAT_DH895xCC) += qat_dh895xcc.o obj-$(CONFIG_CRYPTO_DEV_QAT_DH895xCC) += qat_dh895xcc.o
qat_dh895xcc-objs := adf_drv.o adf_dh895xcc_hw_data.o qat_dh895xcc-objs := adf_drv.o adf_dh895xcc_hw_data.o
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
ccflags-y := -I $(srctree)/$(src)/../qat_common ccflags-y := -I $(src)/../qat_common
obj-$(CONFIG_CRYPTO_DEV_QAT_DH895xCCVF) += qat_dh895xccvf.o obj-$(CONFIG_CRYPTO_DEV_QAT_DH895xCCVF) += qat_dh895xccvf.o
qat_dh895xccvf-objs := adf_drv.o adf_dh895xccvf_hw_data.o qat_dh895xccvf-objs := adf_drv.o adf_dh895xccvf_hw_data.o
...@@ -56,17 +56,6 @@ KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_CFI), $(KBUILD_CFLAGS)) ...@@ -56,17 +56,6 @@ KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_CFI), $(KBUILD_CFLAGS))
# disable LTO # disable LTO
KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_LTO), $(KBUILD_CFLAGS)) KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_LTO), $(KBUILD_CFLAGS))
GCOV_PROFILE := n
# Sanitizer runtimes are unavailable and cannot be linked here.
KASAN_SANITIZE := n
KCSAN_SANITIZE := n
KMSAN_SANITIZE := n
UBSAN_SANITIZE := n
OBJECT_FILES_NON_STANDARD := y
# Prevents link failures: __sanitizer_cov_trace_pc() is not linked in.
KCOV_INSTRUMENT := n
lib-y := efi-stub-helper.o gop.o secureboot.o tpm.o \ lib-y := efi-stub-helper.o gop.o secureboot.o tpm.o \
file.o mem.o random.o randomalloc.o pci.o \ file.o mem.o random.o randomalloc.o pci.o \
skip_spaces.o lib-cmdline.o lib-ctype.o \ skip_spaces.o lib-cmdline.o lib-ctype.o \
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
# Makefile for the drm device driver. This driver provides support for the # Makefile for the drm device driver. This driver provides support for the
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. # Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
FULL_AMD_PATH=$(srctree)/$(src)/.. FULL_AMD_PATH=$(src)/..
DISPLAY_FOLDER_NAME=display DISPLAY_FOLDER_NAME=display
FULL_AMD_DISPLAY_PATH = $(FULL_AMD_PATH)/$(DISPLAY_FOLDER_NAME) FULL_AMD_DISPLAY_PATH = $(FULL_AMD_PATH)/$(DISPLAY_FOLDER_NAME)
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
ccflags-y := \ ccflags-y := \
-I $(srctree)/$(src)/../include \ -I $(src)/../include \
-I $(srctree)/$(src) -I $(src)
komeda-y := \ komeda-y := \
komeda_drv.o \ komeda_drv.o \
......
...@@ -36,7 +36,7 @@ subdir-ccflags-$(CONFIG_DRM_I915_WERROR) += -Werror ...@@ -36,7 +36,7 @@ subdir-ccflags-$(CONFIG_DRM_I915_WERROR) += -Werror
# drivers. Define I915 when building i915. # drivers. Define I915 when building i915.
subdir-ccflags-y += -DI915 subdir-ccflags-y += -DI915
subdir-ccflags-y += -I$(srctree)/$(src) subdir-ccflags-y += -I$(src)
# Please keep these build lists sorted! # Please keep these build lists sorted!
...@@ -430,7 +430,7 @@ no-header-test := \ ...@@ -430,7 +430,7 @@ no-header-test := \
always-$(CONFIG_DRM_I915_WERROR) += \ always-$(CONFIG_DRM_I915_WERROR) += \
$(patsubst %.h,%.hdrtest, $(filter-out $(no-header-test), \ $(patsubst %.h,%.hdrtest, $(filter-out $(no-header-test), \
$(shell cd $(srctree)/$(src) && find * -name '*.h'))) $(shell cd $(src) && find * -name '*.h')))
quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@) quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
cmd_hdrtest = $(CC) $(filter-out $(CFLAGS_GCOV), $(c_flags)) -S -o /dev/null -x c /dev/null -include $<; \ cmd_hdrtest = $(CC) $(filter-out $(CFLAGS_GCOV), $(c_flags)) -S -o /dev/null -x c /dev/null -include $<; \
......
# SPDX-License-Identifier: GPL-2.0-only OR MIT # SPDX-License-Identifier: GPL-2.0-only OR MIT
# Copyright (c) 2023 Imagination Technologies Ltd. # Copyright (c) 2023 Imagination Technologies Ltd.
subdir-ccflags-y := -I$(srctree)/$(src) subdir-ccflags-y := -I$(src)
powervr-y := \ powervr-y := \
pvr_ccb.o \ pvr_ccb.o \
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
ccflags-y := -I $(srctree)/$(src) ccflags-y := -I $(src)
ccflags-y += -I $(obj)/generated ccflags-y += -I $(obj)/generated
ccflags-y += -I $(srctree)/$(src)/disp/dpu1 ccflags-y += -I $(src)/disp/dpu1
ccflags-$(CONFIG_DRM_MSM_DSI) += -I $(srctree)/$(src)/dsi ccflags-$(CONFIG_DRM_MSM_DSI) += -I $(src)/dsi
ccflags-$(CONFIG_DRM_MSM_DP) += -I $(srctree)/$(src)/dp ccflags-$(CONFIG_DRM_MSM_DP) += -I $(src)/dp
adreno-y := \ adreno-y := \
adreno/adreno_device.o \ adreno/adreno_device.o \
...@@ -163,8 +163,8 @@ else ...@@ -163,8 +163,8 @@ else
endif endif
quiet_cmd_headergen = GENHDR $@ quiet_cmd_headergen = GENHDR $@
cmd_headergen = mkdir -p $(obj)/generated && $(PYTHON3) $(srctree)/$(src)/registers/gen_header.py \ cmd_headergen = mkdir -p $(obj)/generated && $(PYTHON3) $(src)/registers/gen_header.py \
$(headergen-opts) --rnn $(srctree)/$(src)/registers --xml $< c-defines > $@ $(headergen-opts) --rnn $(src)/registers --xml $< c-defines > $@
$(obj)/generated/%.xml.h: $(src)/registers/adreno/%.xml \ $(obj)/generated/%.xml.h: $(src)/registers/adreno/%.xml \
$(src)/registers/adreno/adreno_common.xml \ $(src)/registers/adreno/adreno_common.xml \
......
NOUVEAU_PATH ?= $(srctree)
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
ccflags-y += -I $(NOUVEAU_PATH)/$(src)/include ccflags-y += -I $(src)/include
ccflags-y += -I $(NOUVEAU_PATH)/$(src)/include/nvkm ccflags-y += -I $(src)/include/nvkm
ccflags-y += -I $(NOUVEAU_PATH)/$(src)/nvkm ccflags-y += -I $(src)/nvkm
ccflags-y += -I $(NOUVEAU_PATH)/$(src) ccflags-y += -I $(src)
# NVKM - HW resource manager # NVKM - HW resource manager
#- code also used by various userspace tools/tests #- code also used by various userspace tools/tests
......
...@@ -32,7 +32,7 @@ endif ...@@ -32,7 +32,7 @@ endif
# Enable -Werror in CI and development # Enable -Werror in CI and development
subdir-ccflags-$(CONFIG_DRM_XE_WERROR) += -Werror subdir-ccflags-$(CONFIG_DRM_XE_WERROR) += -Werror
subdir-ccflags-y += -I$(obj) -I$(srctree)/$(src) subdir-ccflags-y += -I$(obj) -I$(src)
# generated sources # generated sources
hostprogs := xe_gen_wa_oob hostprogs := xe_gen_wa_oob
...@@ -43,7 +43,7 @@ quiet_cmd_wa_oob = GEN $(notdir $(generated_oob)) ...@@ -43,7 +43,7 @@ quiet_cmd_wa_oob = GEN $(notdir $(generated_oob))
cmd_wa_oob = mkdir -p $(@D); $^ $(generated_oob) cmd_wa_oob = mkdir -p $(@D); $^ $(generated_oob)
$(obj)/generated/%_wa_oob.c $(obj)/generated/%_wa_oob.h: $(obj)/xe_gen_wa_oob \ $(obj)/generated/%_wa_oob.c $(obj)/generated/%_wa_oob.h: $(obj)/xe_gen_wa_oob \
$(srctree)/$(src)/xe_wa_oob.rules $(src)/xe_wa_oob.rules
$(call cmd,wa_oob) $(call cmd,wa_oob)
uses_generated_oob := \ uses_generated_oob := \
...@@ -176,8 +176,8 @@ endif ...@@ -176,8 +176,8 @@ endif
# i915 Display compat #defines and #includes # i915 Display compat #defines and #includes
subdir-ccflags-$(CONFIG_DRM_XE_DISPLAY) += \ subdir-ccflags-$(CONFIG_DRM_XE_DISPLAY) += \
-I$(srctree)/$(src)/display/ext \ -I$(src)/display/ext \
-I$(srctree)/$(src)/compat-i915-headers \ -I$(src)/compat-i915-headers \
-I$(srctree)/drivers/gpu/drm/i915/display/ \ -I$(srctree)/drivers/gpu/drm/i915/display/ \
-Ddrm_i915_gem_object=xe_bo \ -Ddrm_i915_gem_object=xe_bo \
-Ddrm_i915_private=xe_device -Ddrm_i915_private=xe_device
...@@ -319,7 +319,7 @@ ifneq ($(CONFIG_DRM_XE_DISPLAY),y) ...@@ -319,7 +319,7 @@ ifneq ($(CONFIG_DRM_XE_DISPLAY),y)
endif endif
always-$(CONFIG_DRM_XE_WERROR) += \ always-$(CONFIG_DRM_XE_WERROR) += \
$(patsubst %.h,%.hdrtest, $(shell cd $(srctree)/$(src) && find * -name '*.h' $(hdrtest_find_args))) $(patsubst %.h,%.hdrtest, $(shell cd $(src) && find * -name '*.h' $(hdrtest_find_args)))
quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@) quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
cmd_hdrtest = $(CC) -DHDRTEST $(filter-out $(CFLAGS_GCOV), $(c_flags)) -S -o /dev/null -x c /dev/null -include $<; touch $@ cmd_hdrtest = $(CC) -DHDRTEST $(filter-out $(CFLAGS_GCOV), $(c_flags)) -S -o /dev/null -x c /dev/null -include $<; touch $@
......
...@@ -13,4 +13,4 @@ amd_sfh-objs += sfh1_1/amd_sfh_init.o ...@@ -13,4 +13,4 @@ amd_sfh-objs += sfh1_1/amd_sfh_init.o
amd_sfh-objs += sfh1_1/amd_sfh_interface.o amd_sfh-objs += sfh1_1/amd_sfh_interface.o
amd_sfh-objs += sfh1_1/amd_sfh_desc.o amd_sfh-objs += sfh1_1/amd_sfh_desc.o
ccflags-y += -I $(srctree)/$(src)/ ccflags-y += -I $(src)/
...@@ -24,4 +24,4 @@ intel-ishtp-hid-objs += ishtp-hid-client.o ...@@ -24,4 +24,4 @@ intel-ishtp-hid-objs += ishtp-hid-client.o
obj-$(CONFIG_INTEL_ISH_FIRMWARE_DOWNLOADER) += intel-ishtp-loader.o obj-$(CONFIG_INTEL_ISH_FIRMWARE_DOWNLOADER) += intel-ishtp-loader.o
intel-ishtp-loader-objs += ishtp-fw-loader.o intel-ishtp-loader-objs += ishtp-fw-loader.o
ccflags-y += -I $(srctree)/$(src)/ishtp ccflags-y += -I $(src)/ishtp
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
ccflags-y := -I$(srctree)/$(src) -I$(srctree)/$(src)/indexer ccflags-y := -I$(src) -I$(src)/indexer
obj-$(CONFIG_DM_VDO) += dm-vdo.o obj-$(CONFIG_DM_VDO) += dm-vdo.o
......
...@@ -15,10 +15,6 @@ lkdtm-$(CONFIG_PPC_64S_HASH_MMU) += powerpc.o ...@@ -15,10 +15,6 @@ lkdtm-$(CONFIG_PPC_64S_HASH_MMU) += powerpc.o
KASAN_SANITIZE_stackleak.o := n KASAN_SANITIZE_stackleak.o := n
KASAN_SANITIZE_rodata.o := n
KCSAN_SANITIZE_rodata.o := n
KCOV_INSTRUMENT_rodata.o := n
OBJECT_FILES_NON_STANDARD_rodata.o := y
CFLAGS_REMOVE_rodata.o += $(CC_FLAGS_LTO) $(RETHUNK_CFLAGS) $(CC_FLAGS_CFI) CFLAGS_REMOVE_rodata.o += $(CC_FLAGS_LTO) $(RETHUNK_CFLAGS) $(CC_FLAGS_CFI)
OBJCOPYFLAGS := OBJCOPYFLAGS :=
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
obj-$(CONFIG_AQTION) += atlantic.o obj-$(CONFIG_AQTION) += atlantic.o
ccflags-y += -I$(srctree)/$(src) ccflags-y += -I$(src)
atlantic-objs := aq_main.o \ atlantic-objs := aq_main.o \
aq_nic.o \ aq_nic.o \
......
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
ccflags-y := -I $(srctree)/$(src)/../cxgb4 ccflags-y := -I $(src)/../cxgb4
obj-$(CONFIG_CHELSIO_LIB) += libcxgb.o obj-$(CONFIG_CHELSIO_LIB) += libcxgb.o
......
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) # SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
ccflags-y += -I$(srctree)/$(src)/../funcore -I$(srctree)/$(src) ccflags-y += -I$(src)/../funcore -I$(src)
obj-$(CONFIG_FUN_ETH) += funeth.o obj-$(CONFIG_FUN_ETH) += funeth.o
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# Makefile for the HISILICON network device drivers. # Makefile for the HISILICON network device drivers.
# #
ccflags-y += -I$(srctree)/$(src) ccflags-y += -I$(src)
ccflags-y += -I$(srctree)/drivers/net/ethernet/hisilicon/hns3/hns3pf ccflags-y += -I$(srctree)/drivers/net/ethernet/hisilicon/hns3/hns3pf
ccflags-y += -I$(srctree)/drivers/net/ethernet/hisilicon/hns3/hns3vf ccflags-y += -I$(srctree)/drivers/net/ethernet/hisilicon/hns3/hns3vf
ccflags-y += -I$(srctree)/drivers/net/ethernet/hisilicon/hns3/hns3_common ccflags-y += -I$(srctree)/drivers/net/ethernet/hisilicon/hns3/hns3_common
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
# #
ccflags-y += \ ccflags-y += \
-I $(srctree)/$(src) \ -I $(src) \
-I $(srctree)/$(src)/../include -I $(src)/../include
obj-$(CONFIG_BRCMFMAC) += brcmfmac.o obj-$(CONFIG_BRCMFMAC) += brcmfmac.o
brcmfmac-objs += \ brcmfmac-objs += \
......
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
# Copyright (c) 2022 Broadcom Corporation # Copyright (c) 2022 Broadcom Corporation
ccflags-y += \ ccflags-y += \
-I $(srctree)/$(src) \ -I $(src) \
-I $(srctree)/$(src)/.. \ -I $(src)/.. \
-I $(srctree)/$(src)/../../include -I $(src)/../../include
obj-m += brcmfmac-bca.o obj-m += brcmfmac-bca.o
brcmfmac-bca-objs += \ brcmfmac-bca-objs += \
......
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
# Copyright (c) 2022 Broadcom Corporation # Copyright (c) 2022 Broadcom Corporation
ccflags-y += \ ccflags-y += \
-I $(srctree)/$(src) \ -I $(src) \
-I $(srctree)/$(src)/.. \ -I $(src)/.. \
-I $(srctree)/$(src)/../../include -I $(src)/../../include
obj-m += brcmfmac-cyw.o obj-m += brcmfmac-cyw.o
brcmfmac-cyw-objs += \ brcmfmac-cyw-objs += \
......
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
# Copyright (c) 2022 Broadcom Corporation # Copyright (c) 2022 Broadcom Corporation
ccflags-y += \ ccflags-y += \
-I $(srctree)/$(src) \ -I $(src) \
-I $(srctree)/$(src)/.. \ -I $(src)/.. \
-I $(srctree)/$(src)/../../include -I $(src)/../../include
obj-m += brcmfmac-wcc.o obj-m += brcmfmac-wcc.o
brcmfmac-wcc-objs += \ brcmfmac-wcc-objs += \
......
...@@ -16,9 +16,9 @@ ...@@ -16,9 +16,9 @@
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
ccflags-y := \ ccflags-y := \
-I $(srctree)/$(src) \ -I $(src) \
-I $(srctree)/$(src)/phy \ -I $(src)/phy \
-I $(srctree)/$(src)/../include -I $(src)/../include
brcmsmac-y := \ brcmsmac-y := \
mac80211_if.o \ mac80211_if.o \
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
# #
# Copyright (c) 2011 Broadcom Corporation # Copyright (c) 2011 Broadcom Corporation
# #
ccflags-y := -I $(srctree)/$(src)/../include ccflags-y := -I $(src)/../include
obj-$(CONFIG_BRCMUTIL) += brcmutil.o obj-$(CONFIG_BRCMUTIL) += brcmutil.o
brcmutil-objs = utils.o d11.o brcmutil-objs = utils.o d11.o
...@@ -11,4 +11,4 @@ iwldvm-objs += rxon.o devices.o ...@@ -11,4 +11,4 @@ iwldvm-objs += rxon.o devices.o
iwldvm-$(CONFIG_IWLWIFI_LEDS) += led.o iwldvm-$(CONFIG_IWLWIFI_LEDS) += led.o
iwldvm-$(CONFIG_IWLWIFI_DEBUGFS) += debugfs.o iwldvm-$(CONFIG_IWLWIFI_DEBUGFS) += debugfs.o
ccflags-y += -I $(srctree)/$(src)/../ ccflags-y += -I $(src)/../
...@@ -5,4 +5,4 @@ iwlmei-y += net.o ...@@ -5,4 +5,4 @@ iwlmei-y += net.o
iwlmei-$(CONFIG_IWLWIFI_DEVICE_TRACING) += trace.o iwlmei-$(CONFIG_IWLWIFI_DEVICE_TRACING) += trace.o
CFLAGS_trace.o := -I$(src) CFLAGS_trace.o := -I$(src)
ccflags-y += -I $(srctree)/$(src)/../ ccflags-y += -I $(src)/../
...@@ -16,4 +16,4 @@ iwlmvm-$(CONFIG_IWLWIFI_LEDS) += led.o ...@@ -16,4 +16,4 @@ iwlmvm-$(CONFIG_IWLWIFI_LEDS) += led.o
iwlmvm-$(CONFIG_PM) += d3.o iwlmvm-$(CONFIG_PM) += d3.o
iwlmvm-$(CONFIG_IWLMEI) += vendor-cmd.o iwlmvm-$(CONFIG_IWLMEI) += vendor-cmd.o
subdir-ccflags-y += -I $(srctree)/$(src)/../ subdir-ccflags-y += -I $(src)/../
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
iwlwifi-tests-y += module.o devinfo.o iwlwifi-tests-y += module.o devinfo.o
ccflags-y += -I$(srctree)/$(src)/../ ccflags-y += -I$(src)/../
obj-$(CONFIG_IWLWIFI_KUNIT_TESTS) += iwlwifi-tests.o obj-$(CONFIG_IWLWIFI_KUNIT_TESTS) += iwlwifi-tests.o
...@@ -3,4 +3,4 @@ rtl818x_pci-objs := dev.o rtl8225.o sa2400.o max2820.o grf5101.o rtl8225se.o ...@@ -3,4 +3,4 @@ rtl818x_pci-objs := dev.o rtl8225.o sa2400.o max2820.o grf5101.o rtl8225se.o
obj-$(CONFIG_RTL8180) += rtl818x_pci.o obj-$(CONFIG_RTL8180) += rtl818x_pci.o
ccflags-y += -I $(srctree)/$(src)/.. ccflags-y += -I $(src)/..
...@@ -3,4 +3,4 @@ rtl8187-objs := dev.o rtl8225.o leds.o rfkill.o ...@@ -3,4 +3,4 @@ rtl8187-objs := dev.o rtl8225.o leds.o rfkill.o
obj-$(CONFIG_RTL8187) += rtl8187.o obj-$(CONFIG_RTL8187) += rtl8187.o
ccflags-y += -I $(srctree)/$(src)/.. ccflags-y += -I $(src)/..
...@@ -59,26 +59,13 @@ config RAPIDIO_DEBUG ...@@ -59,26 +59,13 @@ config RAPIDIO_DEBUG
If you are unsure about this, say N here. If you are unsure about this, say N here.
choice
prompt "Enumeration method"
depends on RAPIDIO
default RAPIDIO_ENUM_BASIC
help
There are different enumeration and discovery mechanisms offered
for RapidIO subsystem. You may select single built-in method or
or any number of methods to be built as modules.
Selecting a built-in method disables use of loadable methods.
If unsure, select Basic built-in.
config RAPIDIO_ENUM_BASIC config RAPIDIO_ENUM_BASIC
tristate "Basic" tristate "Basic Enumeration method"
depends on RAPIDIO
help help
This option includes basic RapidIO fabric enumeration and discovery This option includes basic RapidIO fabric enumeration and discovery
mechanism similar to one described in RapidIO specification Annex 1. mechanism similar to one described in RapidIO specification Annex 1.
endchoice
config RAPIDIO_CHMAN config RAPIDIO_CHMAN
tristate "RapidIO Channelized Messaging driver" tristate "RapidIO Channelized Messaging driver"
depends on RAPIDIO depends on RAPIDIO
......
...@@ -55,9 +55,9 @@ aicasm-7xxx-opts-$(CONFIG_AIC7XXX_REG_PRETTY_PRINT) := \ ...@@ -55,9 +55,9 @@ aicasm-7xxx-opts-$(CONFIG_AIC7XXX_REG_PRETTY_PRINT) := \
ifeq ($(CONFIG_AIC7XXX_BUILD_FIRMWARE),y) ifeq ($(CONFIG_AIC7XXX_BUILD_FIRMWARE),y)
$(obj)/aic7xxx_seq.h: $(src)/aic7xxx.seq $(src)/aic7xxx.reg $(obj)/aicasm/aicasm $(obj)/aic7xxx_seq.h: $(src)/aic7xxx.seq $(src)/aic7xxx.reg $(obj)/aicasm/aicasm
$(obj)/aicasm/aicasm -I$(srctree)/$(src) -r $(obj)/aic7xxx_reg.h \ $(obj)/aicasm/aicasm -I $(src) -r $(obj)/aic7xxx_reg.h \
$(aicasm-7xxx-opts-y) -o $(obj)/aic7xxx_seq.h \ $(aicasm-7xxx-opts-y) -o $(obj)/aic7xxx_seq.h \
$(srctree)/$(src)/aic7xxx.seq $(src)/aic7xxx.seq
$(aic7xxx-gen-y): $(objtree)/$(obj)/aic7xxx_seq.h $(aic7xxx-gen-y): $(objtree)/$(obj)/aic7xxx_seq.h
@true @true
...@@ -73,9 +73,9 @@ aicasm-79xx-opts-$(CONFIG_AIC79XX_REG_PRETTY_PRINT) := \ ...@@ -73,9 +73,9 @@ aicasm-79xx-opts-$(CONFIG_AIC79XX_REG_PRETTY_PRINT) := \
ifeq ($(CONFIG_AIC79XX_BUILD_FIRMWARE),y) ifeq ($(CONFIG_AIC79XX_BUILD_FIRMWARE),y)
$(obj)/aic79xx_seq.h: $(src)/aic79xx.seq $(src)/aic79xx.reg $(obj)/aicasm/aicasm $(obj)/aic79xx_seq.h: $(src)/aic79xx.seq $(src)/aic79xx.reg $(obj)/aicasm/aicasm
$(obj)/aicasm/aicasm -I$(srctree)/$(src) -r $(obj)/aic79xx_reg.h \ $(obj)/aicasm/aicasm -I $(src) -r $(obj)/aic79xx_reg.h \
$(aicasm-79xx-opts-y) -o $(obj)/aic79xx_seq.h \ $(aicasm-79xx-opts-y) -o $(obj)/aic79xx_seq.h \
$(srctree)/$(src)/aic79xx.seq $(src)/aic79xx.seq
$(aic79xx-gen-y): $(objtree)/$(obj)/aic79xx_seq.h $(aic79xx-gen-y): $(objtree)/$(obj)/aic79xx_seq.h
@true @true
...@@ -83,5 +83,5 @@ else ...@@ -83,5 +83,5 @@ else
$(obj)/aic79xx_reg_print.c: $(src)/aic79xx_reg_print.c_shipped $(obj)/aic79xx_reg_print.c: $(src)/aic79xx_reg_print.c_shipped
endif endif
$(obj)/aicasm/aicasm: $(srctree)/$(src)/aicasm/*.[chyl] $(obj)/aicasm/aicasm: $(src)/aicasm/*.[chyl]
$(MAKE) -C $(srctree)/$(src)/aicasm OUTDIR=$(shell pwd)/$(obj)/aicasm/ $(MAKE) -C $(src)/aicasm OUTDIR=$(shell pwd)/$(obj)/aicasm/
...@@ -62,4 +62,4 @@ r8723bs-y = \ ...@@ -62,4 +62,4 @@ r8723bs-y = \
obj-$(CONFIG_RTL8723BS) := r8723bs.o obj-$(CONFIG_RTL8723BS) := r8723bs.o
ccflags-y += -I$(srctree)/$(src)/include -I$(srctree)/$(src)/hal ccflags-y += -I$(src)/include -I$(src)/hal
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
# All Rights Reserved. # All Rights Reserved.
# #
ccflags-y += -I $(srctree)/$(src) # needed for trace events ccflags-y += -I $(src) # needed for trace events
obj-$(CONFIG_FS_IOMAP) += iomap.o obj-$(CONFIG_FS_IOMAP) += iomap.o
......
...@@ -18,13 +18,13 @@ ifdef REGENERATE_UTF8DATA ...@@ -18,13 +18,13 @@ ifdef REGENERATE_UTF8DATA
quiet_cmd_utf8data = GEN $@ quiet_cmd_utf8data = GEN $@
cmd_utf8data = $< \ cmd_utf8data = $< \
-a $(srctree)/$(src)/DerivedAge.txt \ -a $(src)/DerivedAge.txt \
-c $(srctree)/$(src)/DerivedCombiningClass.txt \ -c $(src)/DerivedCombiningClass.txt \
-p $(srctree)/$(src)/DerivedCoreProperties.txt \ -p $(src)/DerivedCoreProperties.txt \
-d $(srctree)/$(src)/UnicodeData.txt \ -d $(src)/UnicodeData.txt \
-f $(srctree)/$(src)/CaseFolding.txt \ -f $(src)/CaseFolding.txt \
-n $(srctree)/$(src)/NormalizationCorrections.txt \ -n $(src)/NormalizationCorrections.txt \
-t $(srctree)/$(src)/NormalizationTest.txt \ -t $(src)/NormalizationTest.txt \
-o $@ -o $@
$(obj)/utf8data.c: $(obj)/mkutf8data $(filter %.txt, $(cmd_utf8data)) FORCE $(obj)/utf8data.c: $(obj)/mkutf8data $(filter %.txt, $(cmd_utf8data)) FORCE
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
# All Rights Reserved. # All Rights Reserved.
# #
ccflags-y += -I $(srctree)/$(src) # needed for trace events ccflags-y += -I $(src) # needed for trace events
ccflags-y += -I $(srctree)/$(src)/libxfs ccflags-y += -I $(src)/libxfs
obj-$(CONFIG_XFS_FS) += xfs.o obj-$(CONFIG_XFS_FS) += xfs.o
......
...@@ -448,11 +448,30 @@ ...@@ -448,11 +448,30 @@
#endif #endif
#endif #endif
/*
* Some symbol definitions will not exist yet during the first pass of the
* link, but are guaranteed to exist in the final link. Provide preliminary
* definitions that will be superseded in the final link to avoid having to
* rely on weak external linkage, which requires a GOT when used in position
* independent code.
*/
#define PRELIMINARY_SYMBOL_DEFINITIONS \
PROVIDE(kallsyms_addresses = .); \
PROVIDE(kallsyms_offsets = .); \
PROVIDE(kallsyms_names = .); \
PROVIDE(kallsyms_num_syms = .); \
PROVIDE(kallsyms_relative_base = .); \
PROVIDE(kallsyms_token_table = .); \
PROVIDE(kallsyms_token_index = .); \
PROVIDE(kallsyms_markers = .); \
PROVIDE(kallsyms_seqs_of_names = .);
/* /*
* Read only Data * Read only Data
*/ */
#define RO_DATA(align) \ #define RO_DATA(align) \
. = ALIGN((align)); \ . = ALIGN((align)); \
PRELIMINARY_SYMBOL_DEFINITIONS \
.rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \ .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \
__start_rodata = .; \ __start_rodata = .; \
*(.rodata) *(.rodata.*) \ *(.rodata) *(.rodata.*) \
......
...@@ -52,13 +52,10 @@ CFLAGS_version.o := -include $(obj)/utsversion-tmp.h ...@@ -52,13 +52,10 @@ CFLAGS_version.o := -include $(obj)/utsversion-tmp.h
# Build version-timestamp.c with final UTS_VERSION # Build version-timestamp.c with final UTS_VERSION
# #
include/generated/utsversion.h: build-version-auto = $(shell $(srctree)/$(src)/build-version) include/generated/utsversion.h: build-version-auto = $(shell $(src)/build-version)
include/generated/utsversion.h: build-timestamp-auto = $(shell LC_ALL=C date) include/generated/utsversion.h: build-timestamp-auto = $(shell LC_ALL=C date)
include/generated/utsversion.h: FORCE include/generated/utsversion.h: FORCE
$(call filechk,uts_version) $(call filechk,uts_version)
$(obj)/version-timestamp.o: include/generated/utsversion.h $(obj)/version-timestamp.o: include/generated/utsversion.h
CFLAGS_version-timestamp.o := -include include/generated/utsversion.h CFLAGS_version-timestamp.o := -include include/generated/utsversion.h
KASAN_SANITIZE_version-timestamp.o := n
KCSAN_SANITIZE_version-timestamp.o := n
GCOV_PROFILE_version-timestamp.o := n
...@@ -325,12 +325,6 @@ static unsigned long get_symbol_pos(unsigned long addr, ...@@ -325,12 +325,6 @@ static unsigned long get_symbol_pos(unsigned long addr,
unsigned long symbol_start = 0, symbol_end = 0; unsigned long symbol_start = 0, symbol_end = 0;
unsigned long i, low, high, mid; unsigned long i, low, high, mid;
/* This kernel should never had been booted. */
if (!IS_ENABLED(CONFIG_KALLSYMS_BASE_RELATIVE))
BUG_ON(!kallsyms_addresses);
else
BUG_ON(!kallsyms_offsets);
/* Do a binary search on the sorted kallsyms_addresses array. */ /* Do a binary search on the sorted kallsyms_addresses array. */
low = 0; low = 0;
high = kallsyms_num_syms; high = kallsyms_num_syms;
......
...@@ -5,27 +5,21 @@ ...@@ -5,27 +5,21 @@
#include <linux/types.h> #include <linux/types.h>
/* /*
* These will be re-linked against their real values * These will be re-linked against their real values during the second link
* during the second link stage. * stage. Preliminary values must be provided in the linker script using the
* PROVIDE() directive so that the first link stage can complete successfully.
*/ */
extern const unsigned long kallsyms_addresses[] __weak; extern const unsigned long kallsyms_addresses[];
extern const int kallsyms_offsets[] __weak; extern const int kallsyms_offsets[];
extern const u8 kallsyms_names[] __weak; extern const u8 kallsyms_names[];
/* extern const unsigned int kallsyms_num_syms;
* Tell the compiler that the count isn't in the small data section if the arch extern const unsigned long kallsyms_relative_base;
* has one (eg: FRV).
*/
extern const unsigned int kallsyms_num_syms
__section(".rodata") __attribute__((weak));
extern const unsigned long kallsyms_relative_base
__section(".rodata") __attribute__((weak));
extern const char kallsyms_token_table[] __weak; extern const char kallsyms_token_table[];
extern const u16 kallsyms_token_index[] __weak; extern const u16 kallsyms_token_index[];
extern const unsigned int kallsyms_markers[] __weak; extern const unsigned int kallsyms_markers[];
extern const u8 kallsyms_seqs_of_names[] __weak; extern const u8 kallsyms_seqs_of_names[];
#endif // LINUX_KALLSYMS_INTERNAL_H_ #endif // LINUX_KALLSYMS_INTERNAL_H_
...@@ -228,8 +228,8 @@ KERNEL_ATTR_RW(rcu_normal); ...@@ -228,8 +228,8 @@ KERNEL_ATTR_RW(rcu_normal);
/* /*
* Make /sys/kernel/notes give the raw contents of our kernel .notes section. * Make /sys/kernel/notes give the raw contents of our kernel .notes section.
*/ */
extern const void __start_notes __weak; extern const void __start_notes;
extern const void __stop_notes __weak; extern const void __stop_notes;
#define notes_size (&__stop_notes - &__start_notes) #define notes_size (&__stop_notes - &__start_notes)
static ssize_t notes_read(struct file *filp, struct kobject *kobj, static ssize_t notes_read(struct file *filp, struct kobject *kobj,
......
...@@ -353,7 +353,7 @@ $(obj)/oid_registry_data.c: $(srctree)/include/linux/oid_registry.h \ ...@@ -353,7 +353,7 @@ $(obj)/oid_registry_data.c: $(srctree)/include/linux/oid_registry.h \
$(call cmd,build_OID_registry) $(call cmd,build_OID_registry)
quiet_cmd_build_OID_registry = GEN $@ quiet_cmd_build_OID_registry = GEN $@
cmd_build_OID_registry = perl $(srctree)/$(src)/build_OID_registry $< $@ cmd_build_OID_registry = perl $(src)/build_OID_registry $< $@
clean-files += oid_registry_data.c clean-files += oid_registry_data.c
...@@ -411,8 +411,8 @@ obj-$(CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED) += devmem_is_allowed.o ...@@ -411,8 +411,8 @@ obj-$(CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED) += devmem_is_allowed.o
obj-$(CONFIG_FIRMWARE_TABLE) += fw_table.o obj-$(CONFIG_FIRMWARE_TABLE) += fw_table.o
# FORTIFY_SOURCE compile-time behavior tests # FORTIFY_SOURCE compile-time behavior tests
TEST_FORTIFY_SRCS = $(wildcard $(srctree)/$(src)/test_fortify/*-*.c) TEST_FORTIFY_SRCS = $(wildcard $(src)/test_fortify/*-*.c)
TEST_FORTIFY_LOGS = $(patsubst $(srctree)/$(src)/%.c, %.log, $(TEST_FORTIFY_SRCS)) TEST_FORTIFY_LOGS = $(patsubst $(src)/%.c, %.log, $(TEST_FORTIFY_SRCS))
TEST_FORTIFY_LOG = test_fortify.log TEST_FORTIFY_LOG = test_fortify.log
quiet_cmd_test_fortify = TEST $@ quiet_cmd_test_fortify = TEST $@
......
...@@ -182,8 +182,8 @@ unsigned char vmlinux_build_id[BUILD_ID_SIZE_MAX] __ro_after_init; ...@@ -182,8 +182,8 @@ unsigned char vmlinux_build_id[BUILD_ID_SIZE_MAX] __ro_after_init;
*/ */
void __init init_vmlinux_build_id(void) void __init init_vmlinux_build_id(void)
{ {
extern const void __start_notes __weak; extern const void __start_notes;
extern const void __stop_notes __weak; extern const void __stop_notes;
unsigned int size = &__stop_notes - &__start_notes; unsigned int size = &__stop_notes - &__start_notes;
build_id_parse_buf(&__start_notes, vmlinux_build_id, size); build_id_parse_buf(&__start_notes, vmlinux_build_id, size);
......
...@@ -53,7 +53,7 @@ endif ...@@ -53,7 +53,7 @@ endif
endif endif
quiet_cmd_unroll = UNROLL $@ quiet_cmd_unroll = UNROLL $@
cmd_unroll = $(AWK) -v N=$* -f $(srctree)/$(src)/unroll.awk < $< > $@ cmd_unroll = $(AWK) -v N=$* -f $(src)/unroll.awk < $< > $@
targets += int1.c int2.c int4.c int8.c targets += int1.c int2.c int4.c int8.c
$(obj)/int%.c: $(src)/int.uc $(src)/unroll.awk FORCE $(obj)/int%.c: $(src)/int.uc $(src)/unroll.awk FORCE
......
...@@ -25,7 +25,7 @@ ifneq ($(CONFIG_CFG80211_EXTRA_REGDB_KEYDIR),) ...@@ -25,7 +25,7 @@ ifneq ($(CONFIG_CFG80211_EXTRA_REGDB_KEYDIR),)
cfg80211-y += extra-certs.o cfg80211-y += extra-certs.o
endif endif
$(obj)/shipped-certs.c: $(sort $(wildcard $(srctree)/$(src)/certs/*.hex)) $(obj)/shipped-certs.c: $(sort $(wildcard $(src)/certs/*.hex))
@$(kecho) " GEN $@" @$(kecho) " GEN $@"
$(Q)(echo '#include "reg.h"'; \ $(Q)(echo '#include "reg.h"'; \
echo 'const u8 shipped_regdb_certs[] = {'; \ echo 'const u8 shipped_regdb_certs[] = {'; \
......
...@@ -329,7 +329,7 @@ quiet_cmd_bindgen = BINDGEN $@ ...@@ -329,7 +329,7 @@ quiet_cmd_bindgen = BINDGEN $@
$(bindgen_target_cflags) $(bindgen_target_extra) $(bindgen_target_cflags) $(bindgen_target_extra)
$(obj)/bindings/bindings_generated.rs: private bindgen_target_flags = \ $(obj)/bindings/bindings_generated.rs: private bindgen_target_flags = \
$(shell grep -Ev '^#|^$$' $(srctree)/$(src)/bindgen_parameters) $(shell grep -Ev '^#|^$$' $(src)/bindgen_parameters)
$(obj)/bindings/bindings_generated.rs: private bindgen_target_extra = ; \ $(obj)/bindings/bindings_generated.rs: private bindgen_target_extra = ; \
sed -Ei 's/pub const RUST_CONST_HELPER_([a-zA-Z0-9_]*)/pub const \1/g' $@ sed -Ei 's/pub const RUST_CONST_HELPER_([a-zA-Z0-9_]*)/pub const \1/g' $@
$(obj)/bindings/bindings_generated.rs: $(src)/bindings/bindings_helper.h \ $(obj)/bindings/bindings_generated.rs: $(src)/bindings/bindings_helper.h \
...@@ -337,7 +337,7 @@ $(obj)/bindings/bindings_generated.rs: $(src)/bindings/bindings_helper.h \ ...@@ -337,7 +337,7 @@ $(obj)/bindings/bindings_generated.rs: $(src)/bindings/bindings_helper.h \
$(call if_changed_dep,bindgen) $(call if_changed_dep,bindgen)
$(obj)/uapi/uapi_generated.rs: private bindgen_target_flags = \ $(obj)/uapi/uapi_generated.rs: private bindgen_target_flags = \
$(shell grep -Ev '^#|^$$' $(srctree)/$(src)/bindgen_parameters) $(shell grep -Ev '^#|^$$' $(src)/bindgen_parameters)
$(obj)/uapi/uapi_generated.rs: $(src)/uapi/uapi_helper.h \ $(obj)/uapi/uapi_generated.rs: $(src)/uapi/uapi_helper.h \
$(src)/bindgen_parameters FORCE $(src)/bindgen_parameters FORCE
$(call if_changed_dep,bindgen) $(call if_changed_dep,bindgen)
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
BPF_SAMPLES_PATH ?= $(abspath $(srctree)/$(src)) BPF_SAMPLES_PATH ?= $(abspath $(src))
TOOLS_PATH := $(BPF_SAMPLES_PATH)/../../tools TOOLS_PATH := $(BPF_SAMPLES_PATH)/../../tools
pound := \# pound := \#
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
HID_SAMPLES_PATH ?= $(abspath $(srctree)/$(src)) HID_SAMPLES_PATH ?= $(abspath $(src))
TOOLS_PATH := $(HID_SAMPLES_PATH)/../../tools TOOLS_PATH := $(HID_SAMPLES_PATH)/../../tools
pound := \# pound := \#
......
...@@ -62,8 +62,7 @@ stringify = $(squote)$(quote)$1$(quote)$(squote) ...@@ -62,8 +62,7 @@ stringify = $(squote)$(quote)$1$(quote)$(squote)
### ###
# The path to Kbuild or Makefile. Kbuild has precedence over Makefile. # The path to Kbuild or Makefile. Kbuild has precedence over Makefile.
kbuild-dir = $(if $(filter /%,$(src)),$(src),$(srctree)/$(src)) kbuild-file = $(or $(wildcard $(src)/Kbuild),$(src)/Makefile)
kbuild-file = $(or $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Makefile)
### ###
# Read a file, replacing newlines with spaces # Read a file, replacing newlines with spaces
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
PHONY := all PHONY := all
all: all:
src := $(subst /generated,,$(obj)) src := $(srctree)/$(subst /generated,,$(obj))
include $(srctree)/scripts/Kbuild.include include $(srctree)/scripts/Kbuild.include
-include $(kbuild-file) -include $(kbuild-file)
...@@ -20,14 +20,14 @@ include $(srctree)/$(generic)/Kbuild ...@@ -20,14 +20,14 @@ include $(srctree)/$(generic)/Kbuild
endif endif
redundant := $(filter $(mandatory-y) $(generated-y), $(generic-y)) redundant := $(filter $(mandatory-y) $(generated-y), $(generic-y))
redundant += $(foreach f, $(generic-y), $(if $(wildcard $(srctree)/$(src)/$(f)),$(f))) redundant += $(foreach f, $(generic-y), $(if $(wildcard $(src)/$(f)),$(f)))
redundant := $(sort $(redundant)) redundant := $(sort $(redundant))
$(if $(redundant),\ $(if $(redundant),\
$(warning redundant generic-y found in $(src)/Kbuild: $(redundant))) $(warning redundant generic-y found in $(src)/Kbuild: $(redundant)))
# If arch does not implement mandatory headers, fallback to asm-generic ones. # If arch does not implement mandatory headers, fallback to asm-generic ones.
mandatory-y := $(filter-out $(generated-y), $(mandatory-y)) mandatory-y := $(filter-out $(generated-y), $(mandatory-y))
generic-y += $(foreach f, $(mandatory-y), $(if $(wildcard $(srctree)/$(src)/$(f)),,$(f))) generic-y += $(foreach f, $(mandatory-y), $(if $(wildcard $(src)/$(f)),,$(f)))
generic-y := $(addprefix $(obj)/, $(generic-y)) generic-y := $(addprefix $(obj)/, $(generic-y))
generated-y := $(addprefix $(obj)/, $(generated-y)) generated-y := $(addprefix $(obj)/, $(generated-y))
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# Building # Building
# ========================================================================== # ==========================================================================
src := $(obj) src := $(if $(VPATH),$(VPATH)/)$(obj)
PHONY := $(obj)/ PHONY := $(obj)/
$(obj)/: $(obj)/:
...@@ -113,13 +113,13 @@ endif ...@@ -113,13 +113,13 @@ endif
quiet_cmd_cc_s_c = CC $(quiet_modtag) $@ quiet_cmd_cc_s_c = CC $(quiet_modtag) $@
cmd_cc_s_c = $(CC) $(filter-out $(DEBUG_CFLAGS) $(CC_FLAGS_LTO), $(c_flags)) -fverbose-asm -S -o $@ $< cmd_cc_s_c = $(CC) $(filter-out $(DEBUG_CFLAGS) $(CC_FLAGS_LTO), $(c_flags)) -fverbose-asm -S -o $@ $<
$(obj)/%.s: $(src)/%.c FORCE $(obj)/%.s: $(obj)/%.c FORCE
$(call if_changed_dep,cc_s_c) $(call if_changed_dep,cc_s_c)
quiet_cmd_cpp_i_c = CPP $(quiet_modtag) $@ quiet_cmd_cpp_i_c = CPP $(quiet_modtag) $@
cmd_cpp_i_c = $(CPP) $(c_flags) -o $@ $< cmd_cpp_i_c = $(CPP) $(c_flags) -o $@ $<
$(obj)/%.i: $(src)/%.c FORCE $(obj)/%.i: $(obj)/%.c FORCE
$(call if_changed_dep,cpp_i_c) $(call if_changed_dep,cpp_i_c)
genksyms = scripts/genksyms/genksyms \ genksyms = scripts/genksyms/genksyms \
...@@ -133,7 +133,7 @@ cmd_gensymtypes_c = $(CPP) -D__GENKSYMS__ $(c_flags) $< | $(genksyms) ...@@ -133,7 +133,7 @@ cmd_gensymtypes_c = $(CPP) -D__GENKSYMS__ $(c_flags) $< | $(genksyms)
quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@ quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@
cmd_cc_symtypes_c = $(call cmd_gensymtypes_c,true,$@) >/dev/null cmd_cc_symtypes_c = $(call cmd_gensymtypes_c,true,$@) >/dev/null
$(obj)/%.symtypes : $(src)/%.c FORCE $(obj)/%.symtypes : $(obj)/%.c FORCE
$(call cmd,cc_symtypes_c) $(call cmd,cc_symtypes_c)
# LLVM assembly # LLVM assembly
...@@ -141,7 +141,7 @@ $(obj)/%.symtypes : $(src)/%.c FORCE ...@@ -141,7 +141,7 @@ $(obj)/%.symtypes : $(src)/%.c FORCE
quiet_cmd_cc_ll_c = CC $(quiet_modtag) $@ quiet_cmd_cc_ll_c = CC $(quiet_modtag) $@
cmd_cc_ll_c = $(CC) $(c_flags) -emit-llvm -S -fno-discard-value-names -o $@ $< cmd_cc_ll_c = $(CC) $(c_flags) -emit-llvm -S -fno-discard-value-names -o $@ $<
$(obj)/%.ll: $(src)/%.c FORCE $(obj)/%.ll: $(obj)/%.c FORCE
$(call if_changed_dep,cc_ll_c) $(call if_changed_dep,cc_ll_c)
# C (.c) files # C (.c) files
...@@ -214,9 +214,9 @@ endif # CONFIG_FTRACE_MCOUNT_USE_RECORDMCOUNT ...@@ -214,9 +214,9 @@ endif # CONFIG_FTRACE_MCOUNT_USE_RECORDMCOUNT
# 'OBJECT_FILES_NON_STANDARD_foo.o := 'y': skip objtool checking for a file # 'OBJECT_FILES_NON_STANDARD_foo.o := 'y': skip objtool checking for a file
# 'OBJECT_FILES_NON_STANDARD_foo.o := 'n': override directory skip for a file # 'OBJECT_FILES_NON_STANDARD_foo.o := 'n': override directory skip for a file
is-standard-object = $(if $(filter-out y%, $(OBJECT_FILES_NON_STANDARD_$(target-stem).o)$(OBJECT_FILES_NON_STANDARD)n),y) is-standard-object = $(if $(filter-out y%, $(OBJECT_FILES_NON_STANDARD_$(target-stem).o)$(OBJECT_FILES_NON_STANDARD)n),$(is-kernel-object))
$(obj)/%.o: objtool-enabled = $(if $(is-standard-object),$(if $(delay-objtool),$(is-single-obj-m),y)) $(obj)/%.o: private objtool-enabled = $(if $(is-standard-object),$(if $(delay-objtool),$(is-single-obj-m),y))
ifneq ($(findstring 1, $(KBUILD_EXTRA_WARN)),) ifneq ($(findstring 1, $(KBUILD_EXTRA_WARN)),)
cmd_warn_shared_object = $(if $(word 2, $(modname-multi)),$(warning $(kbuild-file): $*.o is added to multiple modules: $(modname-multi))) cmd_warn_shared_object = $(if $(word 2, $(modname-multi)),$(warning $(kbuild-file): $*.o is added to multiple modules: $(modname-multi)))
...@@ -240,7 +240,7 @@ define rule_as_o_S ...@@ -240,7 +240,7 @@ define rule_as_o_S
endef endef
# Built-in and composite module parts # Built-in and composite module parts
$(obj)/%.o: $(src)/%.c $(recordmcount_source) FORCE $(obj)/%.o: $(obj)/%.c $(recordmcount_source) FORCE
$(call if_changed_rule,cc_o_c) $(call if_changed_rule,cc_o_c)
$(call cmd,force_checksrc) $(call cmd,force_checksrc)
...@@ -257,7 +257,7 @@ quiet_cmd_cc_lst_c = MKLST $@ ...@@ -257,7 +257,7 @@ quiet_cmd_cc_lst_c = MKLST $@
$(CONFIG_SHELL) $(srctree)/scripts/makelst $*.o \ $(CONFIG_SHELL) $(srctree)/scripts/makelst $*.o \
System.map $(OBJDUMP) > $@ System.map $(OBJDUMP) > $@
$(obj)/%.lst: $(src)/%.c FORCE $(obj)/%.lst: $(obj)/%.c FORCE
$(call if_changed_dep,cc_lst_c) $(call if_changed_dep,cc_lst_c)
# Compile Rust sources (.rs) # Compile Rust sources (.rs)
...@@ -290,7 +290,7 @@ rust_common_cmd = \ ...@@ -290,7 +290,7 @@ rust_common_cmd = \
quiet_cmd_rustc_o_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@ quiet_cmd_rustc_o_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@
cmd_rustc_o_rs = $(rust_common_cmd) --emit=obj=$@ $< cmd_rustc_o_rs = $(rust_common_cmd) --emit=obj=$@ $<
$(obj)/%.o: $(src)/%.rs FORCE $(obj)/%.o: $(obj)/%.rs FORCE
+$(call if_changed_dep,rustc_o_rs) +$(call if_changed_dep,rustc_o_rs)
quiet_cmd_rustc_rsi_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@ quiet_cmd_rustc_rsi_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@
...@@ -298,19 +298,19 @@ quiet_cmd_rustc_rsi_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@ ...@@ -298,19 +298,19 @@ quiet_cmd_rustc_rsi_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@
$(rust_common_cmd) -Zunpretty=expanded $< >$@; \ $(rust_common_cmd) -Zunpretty=expanded $< >$@; \
command -v $(RUSTFMT) >/dev/null && $(RUSTFMT) $@ command -v $(RUSTFMT) >/dev/null && $(RUSTFMT) $@
$(obj)/%.rsi: $(src)/%.rs FORCE $(obj)/%.rsi: $(obj)/%.rs FORCE
+$(call if_changed_dep,rustc_rsi_rs) +$(call if_changed_dep,rustc_rsi_rs)
quiet_cmd_rustc_s_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@ quiet_cmd_rustc_s_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@
cmd_rustc_s_rs = $(rust_common_cmd) --emit=asm=$@ $< cmd_rustc_s_rs = $(rust_common_cmd) --emit=asm=$@ $<
$(obj)/%.s: $(src)/%.rs FORCE $(obj)/%.s: $(obj)/%.rs FORCE
+$(call if_changed_dep,rustc_s_rs) +$(call if_changed_dep,rustc_s_rs)
quiet_cmd_rustc_ll_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@ quiet_cmd_rustc_ll_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@
cmd_rustc_ll_rs = $(rust_common_cmd) --emit=llvm-ir=$@ $< cmd_rustc_ll_rs = $(rust_common_cmd) --emit=llvm-ir=$@ $<
$(obj)/%.ll: $(src)/%.rs FORCE $(obj)/%.ll: $(obj)/%.rs FORCE
+$(call if_changed_dep,rustc_ll_rs) +$(call if_changed_dep,rustc_ll_rs)
# Compile assembler sources (.S) # Compile assembler sources (.S)
...@@ -336,14 +336,14 @@ cmd_gensymtypes_S = \ ...@@ -336,14 +336,14 @@ cmd_gensymtypes_S = \
quiet_cmd_cc_symtypes_S = SYM $(quiet_modtag) $@ quiet_cmd_cc_symtypes_S = SYM $(quiet_modtag) $@
cmd_cc_symtypes_S = $(call cmd_gensymtypes_S,true,$@) >/dev/null cmd_cc_symtypes_S = $(call cmd_gensymtypes_S,true,$@) >/dev/null
$(obj)/%.symtypes : $(src)/%.S FORCE $(obj)/%.symtypes : $(obj)/%.S FORCE
$(call cmd,cc_symtypes_S) $(call cmd,cc_symtypes_S)
quiet_cmd_cpp_s_S = CPP $(quiet_modtag) $@ quiet_cmd_cpp_s_S = CPP $(quiet_modtag) $@
cmd_cpp_s_S = $(CPP) $(a_flags) -o $@ $< cmd_cpp_s_S = $(CPP) $(a_flags) -o $@ $<
$(obj)/%.s: $(src)/%.S FORCE $(obj)/%.s: $(obj)/%.S FORCE
$(call if_changed_dep,cpp_s_S) $(call if_changed_dep,cpp_s_S)
quiet_cmd_as_o_S = AS $(quiet_modtag) $@ quiet_cmd_as_o_S = AS $(quiet_modtag) $@
...@@ -358,7 +358,7 @@ cmd_gen_symversions_S = $(call gen_symversions,S) ...@@ -358,7 +358,7 @@ cmd_gen_symversions_S = $(call gen_symversions,S)
endif endif
$(obj)/%.o: $(src)/%.S FORCE $(obj)/%.o: $(obj)/%.S FORCE
$(call if_changed_rule,as_o_S) $(call if_changed_rule,as_o_S)
targets += $(filter-out $(subdir-builtin), $(real-obj-y)) targets += $(filter-out $(subdir-builtin), $(real-obj-y))
...@@ -437,8 +437,8 @@ define rule_ld_multi_m ...@@ -437,8 +437,8 @@ define rule_ld_multi_m
$(call cmd,gen_objtooldep) $(call cmd,gen_objtooldep)
endef endef
$(multi-obj-m): objtool-enabled := $(delay-objtool) $(multi-obj-m): private objtool-enabled := $(delay-objtool)
$(multi-obj-m): part-of-module := y $(multi-obj-m): private part-of-module := y
$(multi-obj-m): %.o: %.mod FORCE $(multi-obj-m): %.o: %.mod FORCE
$(call if_changed_rule,ld_multi_m) $(call if_changed_rule,ld_multi_m)
$(call multi_depend, $(multi-obj-m), .o, -objs -y -m) $(call multi_depend, $(multi-obj-m), .o, -objs -y -m)
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# Cleaning up # Cleaning up
# ========================================================================== # ==========================================================================
src := $(obj) src := $(if $(VPATH),$(VPATH)/)$(obj)
PHONY := __clean PHONY := __clean
__clean: __clean:
......
...@@ -112,7 +112,7 @@ endif ...@@ -112,7 +112,7 @@ endif
quiet_cmd_host-csingle = HOSTCC $@ quiet_cmd_host-csingle = HOSTCC $@
cmd_host-csingle = $(HOSTCC) $(hostc_flags) $(KBUILD_HOSTLDFLAGS) -o $@ $< \ cmd_host-csingle = $(HOSTCC) $(hostc_flags) $(KBUILD_HOSTLDFLAGS) -o $@ $< \
$(KBUILD_HOSTLDLIBS) $(HOSTLDLIBS_$(target-stem)) $(KBUILD_HOSTLDLIBS) $(HOSTLDLIBS_$(target-stem))
$(host-csingle): $(obj)/%: $(src)/%.c FORCE $(host-csingle): $(obj)/%: $(obj)/%.c FORCE
$(call if_changed_dep,host-csingle) $(call if_changed_dep,host-csingle)
# Link an executable based on list of .o files, all plain c # Link an executable based on list of .o files, all plain c
...@@ -129,7 +129,7 @@ $(call multi_depend, $(host-cmulti), , -objs) ...@@ -129,7 +129,7 @@ $(call multi_depend, $(host-cmulti), , -objs)
# host-cobjs -> .o # host-cobjs -> .o
quiet_cmd_host-cobjs = HOSTCC $@ quiet_cmd_host-cobjs = HOSTCC $@
cmd_host-cobjs = $(HOSTCC) $(hostc_flags) -c -o $@ $< cmd_host-cobjs = $(HOSTCC) $(hostc_flags) -c -o $@ $<
$(host-cobjs): $(obj)/%.o: $(src)/%.c FORCE $(host-cobjs): $(obj)/%.o: $(obj)/%.c FORCE
$(call if_changed_dep,host-cobjs) $(call if_changed_dep,host-cobjs)
# Link an executable based on list of .o files, a mixture of .c and .cc # Link an executable based on list of .o files, a mixture of .c and .cc
......
...@@ -154,7 +154,7 @@ _cpp_flags = $(KBUILD_CPPFLAGS) $(cppflags-y) $(CPPFLAGS_$(target-stem).lds) ...@@ -154,7 +154,7 @@ _cpp_flags = $(KBUILD_CPPFLAGS) $(cppflags-y) $(CPPFLAGS_$(target-stem).lds)
# #
ifeq ($(CONFIG_GCOV_KERNEL),y) ifeq ($(CONFIG_GCOV_KERNEL),y)
_c_flags += $(if $(patsubst n%,, \ _c_flags += $(if $(patsubst n%,, \
$(GCOV_PROFILE_$(target-stem).o)$(GCOV_PROFILE)$(CONFIG_GCOV_PROFILE_ALL)), \ $(GCOV_PROFILE_$(target-stem).o)$(GCOV_PROFILE)$(if $(is-kernel-object),$(CONFIG_GCOV_PROFILE_ALL))), \
$(CFLAGS_GCOV)) $(CFLAGS_GCOV))
endif endif
...@@ -165,32 +165,32 @@ endif ...@@ -165,32 +165,32 @@ endif
ifeq ($(CONFIG_KASAN),y) ifeq ($(CONFIG_KASAN),y)
ifneq ($(CONFIG_KASAN_HW_TAGS),y) ifneq ($(CONFIG_KASAN_HW_TAGS),y)
_c_flags += $(if $(patsubst n%,, \ _c_flags += $(if $(patsubst n%,, \
$(KASAN_SANITIZE_$(target-stem).o)$(KASAN_SANITIZE)y), \ $(KASAN_SANITIZE_$(target-stem).o)$(KASAN_SANITIZE)$(is-kernel-object)), \
$(CFLAGS_KASAN), $(CFLAGS_KASAN_NOSANITIZE)) $(CFLAGS_KASAN), $(CFLAGS_KASAN_NOSANITIZE))
endif endif
endif endif
ifeq ($(CONFIG_KMSAN),y) ifeq ($(CONFIG_KMSAN),y)
_c_flags += $(if $(patsubst n%,, \ _c_flags += $(if $(patsubst n%,, \
$(KMSAN_SANITIZE_$(target-stem).o)$(KMSAN_SANITIZE)y), \ $(KMSAN_SANITIZE_$(target-stem).o)$(KMSAN_SANITIZE)$(is-kernel-object)), \
$(CFLAGS_KMSAN)) $(CFLAGS_KMSAN))
_c_flags += $(if $(patsubst n%,, \ _c_flags += $(if $(patsubst n%,, \
$(KMSAN_ENABLE_CHECKS_$(target-stem).o)$(KMSAN_ENABLE_CHECKS)y), \ $(KMSAN_ENABLE_CHECKS_$(target-stem).o)$(KMSAN_ENABLE_CHECKS)$(is-kernel-object)), \
, -mllvm -msan-disable-checks=1) , -mllvm -msan-disable-checks=1)
endif endif
ifeq ($(CONFIG_UBSAN),y) ifeq ($(CONFIG_UBSAN),y)
_c_flags += $(if $(patsubst n%,, \ _c_flags += $(if $(patsubst n%,, \
$(UBSAN_SANITIZE_$(target-stem).o)$(UBSAN_SANITIZE)y), \ $(UBSAN_SANITIZE_$(target-stem).o)$(UBSAN_SANITIZE)$(is-kernel-object)), \
$(CFLAGS_UBSAN)) $(CFLAGS_UBSAN))
_c_flags += $(if $(patsubst n%,, \ _c_flags += $(if $(patsubst n%,, \
$(UBSAN_SIGNED_WRAP_$(target-stem).o)$(UBSAN_SANITIZE_$(target-stem).o)$(UBSAN_SIGNED_WRAP)$(UBSAN_SANITIZE)y), \ $(UBSAN_SIGNED_WRAP_$(target-stem).o)$(UBSAN_SANITIZE_$(target-stem).o)$(UBSAN_SIGNED_WRAP)$(UBSAN_SANITIZE)$(is-kernel-object)), \
$(CFLAGS_UBSAN_SIGNED_WRAP)) $(CFLAGS_UBSAN_SIGNED_WRAP))
endif endif
ifeq ($(CONFIG_KCOV),y) ifeq ($(CONFIG_KCOV),y)
_c_flags += $(if $(patsubst n%,, \ _c_flags += $(if $(patsubst n%,, \
$(KCOV_INSTRUMENT_$(target-stem).o)$(KCOV_INSTRUMENT)$(CONFIG_KCOV_INSTRUMENT_ALL)), \ $(KCOV_INSTRUMENT_$(target-stem).o)$(KCOV_INSTRUMENT)$(if $(is-kernel-object),$(CONFIG_KCOV_INSTRUMENT_ALL))), \
$(CFLAGS_KCOV)) $(CFLAGS_KCOV))
endif endif
...@@ -200,7 +200,7 @@ endif ...@@ -200,7 +200,7 @@ endif
# #
ifeq ($(CONFIG_KCSAN),y) ifeq ($(CONFIG_KCSAN),y)
_c_flags += $(if $(patsubst n%,, \ _c_flags += $(if $(patsubst n%,, \
$(KCSAN_SANITIZE_$(target-stem).o)$(KCSAN_SANITIZE)y), \ $(KCSAN_SANITIZE_$(target-stem).o)$(KCSAN_SANITIZE)$(is-kernel-object)), \
$(CFLAGS_KCSAN)) $(CFLAGS_KCSAN))
# Some uninstrumented files provide implied barriers required to avoid false # Some uninstrumented files provide implied barriers required to avoid false
# positives: set KCSAN_INSTRUMENT_BARRIERS for barrier instrumentation only. # positives: set KCSAN_INSTRUMENT_BARRIERS for barrier instrumentation only.
...@@ -209,16 +209,20 @@ _c_flags += $(if $(patsubst n%,, \ ...@@ -209,16 +209,20 @@ _c_flags += $(if $(patsubst n%,, \
-D__KCSAN_INSTRUMENT_BARRIERS__) -D__KCSAN_INSTRUMENT_BARRIERS__)
endif endif
# $(srctree)/$(src) for including checkin headers from generated source files # $(src) for including checkin headers from generated source files
# $(objtree)/$(obj) for including generated headers from checkin source files # $(obj) for including generated headers from checkin source files
ifeq ($(KBUILD_EXTMOD),) ifeq ($(KBUILD_EXTMOD),)
ifdef building_out_of_srctree ifdef building_out_of_srctree
_c_flags += -I $(srctree)/$(src) -I $(objtree)/$(obj) _c_flags += $(addprefix -I, $(src) $(obj))
_a_flags += -I $(srctree)/$(src) -I $(objtree)/$(obj) _a_flags += $(addprefix -I, $(src) $(obj))
_cpp_flags += -I $(srctree)/$(src) -I $(objtree)/$(obj) _cpp_flags += $(addprefix -I, $(src) $(obj))
endif endif
endif endif
# If $(is-kernel-object) is 'y', this object will be linked to vmlinux or modules
is-kernel-object = $(or $(part-of-builtin),$(part-of-module))
part-of-builtin = $(if $(filter $(basename $@).o, $(real-obj-y) $(lib-y)),y)
part-of-module = $(if $(filter $(basename $@).o, $(real-obj-m)),y) part-of-module = $(if $(filter $(basename $@).o, $(real-obj-m)),y)
quiet_modtag = $(if $(part-of-module),[M], ) quiet_modtag = $(if $(part-of-module),[M], )
...@@ -410,7 +414,7 @@ $(multi-dtb-y): FORCE ...@@ -410,7 +414,7 @@ $(multi-dtb-y): FORCE
$(call if_changed,fdtoverlay) $(call if_changed,fdtoverlay)
$(call multi_depend, $(multi-dtb-y), .dtb, -dtbs) $(call multi_depend, $(multi-dtb-y), .dtb, -dtbs)
ifneq ($(CHECK_DTBS)$(CHECK_DT_BINDING),) ifneq ($(CHECK_DTBS),)
DT_CHECKER ?= dt-validate DT_CHECKER ?= dt-validate
DT_CHECKER_FLAGS ?= $(if $(DT_SCHEMA_FILES),-l $(DT_SCHEMA_FILES),-m) DT_CHECKER_FLAGS ?= $(if $(DT_SCHEMA_FILES),-l $(DT_SCHEMA_FILES),-m)
DT_BINDING_DIR := Documentation/devicetree/bindings DT_BINDING_DIR := Documentation/devicetree/bindings
...@@ -423,7 +427,7 @@ quiet_cmd_dtb = $(quiet_cmd_dtc) ...@@ -423,7 +427,7 @@ quiet_cmd_dtb = $(quiet_cmd_dtc)
cmd_dtb = $(cmd_dtc) cmd_dtb = $(cmd_dtc)
endif endif
$(obj)/%.dtb: $(src)/%.dts $(DTC) $(DT_TMP_SCHEMA) FORCE $(obj)/%.dtb: $(obj)/%.dts $(DTC) $(DT_TMP_SCHEMA) FORCE
$(call if_changed_dep,dtb) $(call if_changed_dep,dtb)
$(obj)/%.dtbo: $(src)/%.dtso $(DTC) FORCE $(obj)/%.dtbo: $(src)/%.dtso $(DTC) FORCE
......
...@@ -21,9 +21,11 @@ __modfinal: $(modules:%.o=%.ko) ...@@ -21,9 +21,11 @@ __modfinal: $(modules:%.o=%.ko)
# modname and part-of-module are set to make c_flags define proper module flags # modname and part-of-module are set to make c_flags define proper module flags
modname = $(notdir $(@:.mod.o=)) modname = $(notdir $(@:.mod.o=))
part-of-module = y part-of-module = y
GCOV_PROFILE := n
KCSAN_SANITIZE := n
quiet_cmd_cc_o_c = CC [M] $@ quiet_cmd_cc_o_c = CC [M] $@
cmd_cc_o_c = $(CC) $(filter-out $(CC_FLAGS_CFI) $(CFLAGS_GCOV) $(CFLAGS_KCSAN), $(c_flags)) -c -o $@ $< cmd_cc_o_c = $(CC) $(filter-out $(CC_FLAGS_CFI), $(c_flags)) -c -o $@ $<
%.mod.o: %.mod.c FORCE %.mod.o: %.mod.c FORCE
$(call if_changed_dep,cc_o_c) $(call if_changed_dep,cc_o_c)
......
...@@ -112,7 +112,7 @@ else ...@@ -112,7 +112,7 @@ else
# set src + obj - they may be used in the modules's Makefile # set src + obj - they may be used in the modules's Makefile
obj := $(KBUILD_EXTMOD) obj := $(KBUILD_EXTMOD)
src := $(obj) src := $(if $(VPATH),$(VPATH)/)$(obj)
# Include the module's Makefile to find KBUILD_EXTRA_SYMBOLS # Include the module's Makefile to find KBUILD_EXTRA_SYMBOLS
include $(kbuild-file) include $(kbuild-file)
......
...@@ -13,16 +13,15 @@ install-dir := $(MODLIB)/vdso ...@@ -13,16 +13,15 @@ install-dir := $(MODLIB)/vdso
define gen_install_rules define gen_install_rules
src := $$(firstword $$(subst :,$(space),$(1))) dest := $(install-dir)/$$(patsubst %.dbg,%,$$(notdir $(1)))
dest := $(install-dir)/$$(or $$(word 2,$$(subst :,$(space),$(1))),$$(patsubst %.dbg,%,$$(notdir $(1))))
__default: $$(dest) __default: $$(dest)
$$(dest): $$(src) FORCE $$(dest): $(1) FORCE
$$(call cmd,install) $$(call cmd,install)
# Some architectures create .build-id symlinks # Some architectures create .build-id symlinks
ifneq ($(filter arm sparc x86, $(SRCARCH)),) ifneq ($(filter arm sparc x86, $(SRCARCH)),)
link := $(install-dir)/.build-id/$$(shell $(READELF) -n $$(src) | sed -n 's@^.*Build ID: \(..\)\(.*\)@\1/\2@p').debug link := $(install-dir)/.build-id/$$(shell $(READELF) -n $(1) | sed -n 's@^.*Build ID: \(..\)\(.*\)@\1/\2@p').debug
__default: $$(link) __default: $$(link)
$$(link): $$(dest) FORCE $$(link): $$(dest) FORCE
......
...@@ -18,9 +18,6 @@ quiet_cmd_cc_o_c = CC $@ ...@@ -18,9 +18,6 @@ quiet_cmd_cc_o_c = CC $@
$(call if_changed_dep,cc_o_c) $(call if_changed_dep,cc_o_c)
ifdef CONFIG_MODULES ifdef CONFIG_MODULES
KASAN_SANITIZE_.vmlinux.export.o := n
KCSAN_SANITIZE_.vmlinux.export.o := n
GCOV_PROFILE_.vmlinux.export.o := n
targets += .vmlinux.export.o targets += .vmlinux.export.o
vmlinux: .vmlinux.export.o vmlinux: .vmlinux.export.o
endif endif
......
...@@ -16,12 +16,12 @@ libfdt = $(addprefix libfdt/,$(libfdt-objs)) ...@@ -16,12 +16,12 @@ libfdt = $(addprefix libfdt/,$(libfdt-objs))
fdtoverlay-objs := $(libfdt) fdtoverlay.o util.o fdtoverlay-objs := $(libfdt) fdtoverlay.o util.o
# Source files need to get at the userspace version of libfdt_env.h to compile # Source files need to get at the userspace version of libfdt_env.h to compile
HOST_EXTRACFLAGS += -I $(srctree)/$(src)/libfdt HOST_EXTRACFLAGS += -I $(src)/libfdt
HOST_EXTRACFLAGS += -DNO_YAML HOST_EXTRACFLAGS += -DNO_YAML
# Generated files need one more search path to include headers in source tree # Generated files need one more search path to include headers in source tree
HOSTCFLAGS_dtc-lexer.lex.o := -I $(srctree)/$(src) HOSTCFLAGS_dtc-lexer.lex.o := -I $(src)
HOSTCFLAGS_dtc-parser.tab.o := -I $(srctree)/$(src) HOSTCFLAGS_dtc-parser.tab.o := -I $(src)
# dependencies on generated files need to be listed explicitly # dependencies on generated files need to be listed explicitly
$(obj)/dtc-lexer.lex.o: $(obj)/dtc-parser.tab.h $(obj)/dtc-lexer.lex.o: $(obj)/dtc-parser.tab.h
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
ifdef building_out_of_srctree ifdef building_out_of_srctree
symlinks := $(patsubst $(srctree)/$(src)/%,%,$(wildcard $(srctree)/$(src)/*.py)) symlinks := $(patsubst $(src)/%,%,$(wildcard $(src)/*.py))
quiet_cmd_symlink = SYMLINK $@ quiet_cmd_symlink = SYMLINK $@
cmd_symlink = ln -fsn $(patsubst $(obj)/%,$(abspath $(srctree))/$(src)/%,$@) $@ cmd_symlink = ln -fsn $(patsubst $(obj)/%,$(abspath $(srctree))/$(src)/%,$@) $@
......
...@@ -23,8 +23,8 @@ $(obj)/pars%.tab.c $(obj)/pars%.tab.h: $(src)/pars%.y FORCE ...@@ -23,8 +23,8 @@ $(obj)/pars%.tab.c $(obj)/pars%.tab.h: $(src)/pars%.y FORCE
endif endif
# -I needed for generated C source to include headers in source tree # -I needed for generated C source to include headers in source tree
HOSTCFLAGS_parse.tab.o := -I $(srctree)/$(src) HOSTCFLAGS_parse.tab.o := -I $(src)
HOSTCFLAGS_lex.lex.o := -I $(srctree)/$(src) HOSTCFLAGS_lex.lex.o := -I $(src)
# dependencies on generated files need to be listed explicitly # dependencies on generated files need to be listed explicitly
$(obj)/lex.lex.o: $(obj)/parse.tab.h $(obj)/lex.lex.o: $(obj)/parse.tab.h
...@@ -57,7 +57,7 @@ $(foreach c, config menuconfig nconfig gconfig xconfig, $(eval $(call config_rul ...@@ -57,7 +57,7 @@ $(foreach c, config menuconfig nconfig gconfig xconfig, $(eval $(call config_rul
PHONY += localmodconfig localyesconfig PHONY += localmodconfig localyesconfig
localyesconfig localmodconfig: $(obj)/conf localyesconfig localmodconfig: $(obj)/conf
$(Q)$(PERL) $(srctree)/$(src)/streamline_config.pl --$@ $(srctree) $(Kconfig) > .tmp.config $(Q)$(PERL) $(src)/streamline_config.pl --$@ $(srctree) $(Kconfig) > .tmp.config
$(Q)if [ -f .config ]; then \ $(Q)if [ -f .config ]; then \
cmp -s .tmp.config .config || \ cmp -s .tmp.config .config || \
(mv -f .config .config.old.1; \ (mv -f .config .config.old.1; \
...@@ -118,7 +118,7 @@ tinyconfig: ...@@ -118,7 +118,7 @@ tinyconfig:
# CHECK: -o cache_dir=<path> working? # CHECK: -o cache_dir=<path> working?
PHONY += testconfig PHONY += testconfig
testconfig: $(obj)/conf testconfig: $(obj)/conf
$(Q)$(PYTHON3) -B -m pytest $(srctree)/$(src)/tests \ $(Q)$(PYTHON3) -B -m pytest $(src)/tests \
-o cache_dir=$(abspath $(obj)/tests/.cache) \ -o cache_dir=$(abspath $(obj)/tests/.cache) \
$(if $(findstring 1,$(KBUILD_VERBOSE)),--capture=no) $(if $(findstring 1,$(KBUILD_VERBOSE)),--capture=no)
clean-files += tests/.cache clean-files += tests/.cache
...@@ -165,8 +165,8 @@ common-objs := confdata.o expr.o lexer.lex.o menu.o parser.tab.o \ ...@@ -165,8 +165,8 @@ common-objs := confdata.o expr.o lexer.lex.o menu.o parser.tab.o \
preprocess.o symbol.o util.o preprocess.o symbol.o util.o
$(obj)/lexer.lex.o: $(obj)/parser.tab.h $(obj)/lexer.lex.o: $(obj)/parser.tab.h
HOSTCFLAGS_lexer.lex.o := -I $(srctree)/$(src) HOSTCFLAGS_lexer.lex.o := -I $(src)
HOSTCFLAGS_parser.tab.o := -I $(srctree)/$(src) HOSTCFLAGS_parser.tab.o := -I $(src)
# conf: Used for defconfig, oldconfig and related targets # conf: Used for defconfig, oldconfig and related targets
hostprogs += conf hostprogs += conf
......
...@@ -446,7 +446,7 @@ static int conf_sym(struct menu *menu) ...@@ -446,7 +446,7 @@ static int conf_sym(struct menu *menu)
} }
} }
static int conf_choice(struct menu *menu) static void conf_choice(struct menu *menu)
{ {
struct symbol *sym, *def_sym; struct symbol *sym, *def_sym;
struct menu *child; struct menu *child;
...@@ -459,19 +459,18 @@ static int conf_choice(struct menu *menu) ...@@ -459,19 +459,18 @@ static int conf_choice(struct menu *menu)
sym_calc_value(sym); sym_calc_value(sym);
switch (sym_get_tristate_value(sym)) { switch (sym_get_tristate_value(sym)) {
case no: case no:
return 1;
case mod: case mod:
return 0; return;
case yes: case yes:
break; break;
} }
} else { } else {
switch (sym_get_tristate_value(sym)) { switch (sym_get_tristate_value(sym)) {
case no: case no:
return 1; return;
case mod: case mod:
printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
return 0; return;
case yes: case yes:
break; break;
} }
...@@ -497,9 +496,8 @@ static int conf_choice(struct menu *menu) ...@@ -497,9 +496,8 @@ static int conf_choice(struct menu *menu)
printf("%*c", indent, '>'); printf("%*c", indent, '>');
} else } else
printf("%*c", indent, ' '); printf("%*c", indent, ' ');
printf(" %d. %s", cnt, menu_get_prompt(child)); printf(" %d. %s (%s)", cnt, menu_get_prompt(child),
if (child->sym->name) child->sym->name);
printf(" (%s)", child->sym->name);
if (!sym_has_value(child->sym)) if (!sym_has_value(child->sym))
printf(" (NEW)"); printf(" (NEW)");
printf("\n"); printf("\n");
...@@ -552,7 +550,7 @@ static int conf_choice(struct menu *menu) ...@@ -552,7 +550,7 @@ static int conf_choice(struct menu *menu)
continue; continue;
} }
sym_set_tristate_value(child->sym, yes); sym_set_tristate_value(child->sym, yes);
return 1; return;
} }
} }
......
...@@ -502,7 +502,7 @@ int conf_read(const char *name) ...@@ -502,7 +502,7 @@ int conf_read(const char *name)
for_all_symbols(sym) { for_all_symbols(sym) {
sym_calc_value(sym); sym_calc_value(sym);
if (sym_is_choice(sym) || (sym->flags & SYMBOL_NO_WRITE)) if (sym_is_choice(sym))
continue; continue;
if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) { if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) {
/* check that calculated value agrees with saved value */ /* check that calculated value agrees with saved value */
...@@ -793,59 +793,39 @@ int conf_write_defconfig(const char *filename) ...@@ -793,59 +793,39 @@ int conf_write_defconfig(const char *filename)
sym_clear_all_valid(); sym_clear_all_valid();
/* Traverse all menus to find all relevant symbols */ menu_for_each_entry(menu) {
menu = rootmenu.list; struct menu *choice;
while (menu != NULL)
{
sym = menu->sym; sym = menu->sym;
if (sym && !sym_is_choice(sym)) { if (sym && !sym_is_choice(sym)) {
sym_calc_value(sym); sym_calc_value(sym);
if (!(sym->flags & SYMBOL_WRITE)) if (!(sym->flags & SYMBOL_WRITE))
goto next_menu; continue;
sym->flags &= ~SYMBOL_WRITE; sym->flags &= ~SYMBOL_WRITE;
/* If we cannot change the symbol - skip */ /* If we cannot change the symbol - skip */
if (!sym_is_changeable(sym)) if (!sym_is_changeable(sym))
goto next_menu; continue;
/* If symbol equals to default value - skip */ /* If symbol equals to default value - skip */
if (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0) if (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0)
goto next_menu; continue;
/* /*
* If symbol is a choice value and equals to the * If symbol is a choice value and equals to the
* default for a choice - skip. * default for a choice - skip.
* But only if value is bool and equal to "y" and
* choice is not "optional".
* (If choice is "optional" then all values can be "n")
*/ */
if (sym_is_choice_value(sym)) { choice = sym_get_choice_menu(sym);
struct symbol *cs; if (choice) {
struct symbol *ds; struct symbol *ds;
cs = prop_get_symbol(sym_get_choice_prop(sym)); ds = sym_choice_default(choice->sym);
ds = sym_choice_default(cs); if (sym == ds) {
if (!sym_is_optional(cs) && sym == ds) {
if ((sym->type == S_BOOLEAN) && if ((sym->type == S_BOOLEAN) &&
sym_get_tristate_value(sym) == yes) sym_get_tristate_value(sym) == yes)
goto next_menu; continue;
} }
} }
print_symbol_for_dotconfig(out, sym); print_symbol_for_dotconfig(out, sym);
} }
next_menu:
if (menu->list != NULL) {
menu = menu->list;
}
else if (menu->next != NULL) {
menu = menu->next;
} else {
while ((menu = menu->parent)) {
if (menu->next != NULL) {
menu = menu->next;
break;
}
}
}
} }
fclose(out); fclose(out);
return 0; return 0;
...@@ -906,7 +886,7 @@ int conf_write(const char *name) ...@@ -906,7 +886,7 @@ int conf_write(const char *name)
"# %s\n" "# %s\n"
"#\n", str); "#\n", str);
need_newline = false; need_newline = false;
} else if (!(sym->flags & SYMBOL_CHOICE) && } else if (!sym_is_choice(sym) &&
!(sym->flags & SYMBOL_WRITTEN)) { !(sym->flags & SYMBOL_WRITTEN)) {
sym_calc_value(sym); sym_calc_value(sym);
if (!(sym->flags & SYMBOL_WRITE)) if (!(sym->flags & SYMBOL_WRITE))
...@@ -1028,7 +1008,7 @@ static int conf_touch_deps(void) ...@@ -1028,7 +1008,7 @@ static int conf_touch_deps(void)
for_all_symbols(sym) { for_all_symbols(sym) {
sym_calc_value(sym); sym_calc_value(sym);
if ((sym->flags & SYMBOL_NO_WRITE) || !sym->name) if (sym_is_choice(sym))
continue; continue;
if (sym->flags & SYMBOL_WRITE) { if (sym->flags & SYMBOL_WRITE) {
if (sym->flags & SYMBOL_DEF_AUTO) { if (sym->flags & SYMBOL_DEF_AUTO) {
......
...@@ -72,8 +72,7 @@ enum { ...@@ -72,8 +72,7 @@ enum {
/* /*
* Represents a configuration symbol. * Represents a configuration symbol.
* *
* Choices are represented as a special kind of symbol and have the * Choices are represented as a special kind of symbol with null name.
* SYMBOL_CHOICE bit set in 'flags'.
*/ */
struct symbol { struct symbol {
/* link node for the hash table */ /* link node for the hash table */
...@@ -131,14 +130,11 @@ struct symbol { ...@@ -131,14 +130,11 @@ struct symbol {
#define SYMBOL_CONST 0x0001 /* symbol is const */ #define SYMBOL_CONST 0x0001 /* symbol is const */
#define SYMBOL_CHECK 0x0008 /* used during dependency checking */ #define SYMBOL_CHECK 0x0008 /* used during dependency checking */
#define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */
#define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */ #define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */
#define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */ #define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */
#define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */
#define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */ #define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */
#define SYMBOL_CHANGED 0x0400 /* ? */ #define SYMBOL_CHANGED 0x0400 /* ? */
#define SYMBOL_WRITTEN 0x0800 /* track info to avoid double-write to .config */ #define SYMBOL_WRITTEN 0x0800 /* track info to avoid double-write to .config */
#define SYMBOL_NO_WRITE 0x1000 /* Symbol for internal use only; it will not be written */
#define SYMBOL_CHECKED 0x2000 /* used during dependency checking */ #define SYMBOL_CHECKED 0x2000 /* used during dependency checking */
#define SYMBOL_WARNED 0x8000 /* warning has been issued */ #define SYMBOL_WARNED 0x8000 /* warning has been issued */
......
...@@ -18,8 +18,6 @@ ...@@ -18,8 +18,6 @@
#include <unistd.h> #include <unistd.h>
#include <time.h> #include <time.h>
//#define DEBUG
enum { enum {
SINGLE_VIEW, SPLIT_VIEW, FULL_VIEW SINGLE_VIEW, SPLIT_VIEW, FULL_VIEW
}; };
...@@ -71,39 +69,6 @@ static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row); ...@@ -71,39 +69,6 @@ static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row);
static gchar **fill_row(struct menu *menu); static gchar **fill_row(struct menu *menu);
static void conf_changed(void); static void conf_changed(void);
/* Helping/Debugging Functions */
#ifdef DEBUG
static const char *dbg_sym_flags(int val)
{
static char buf[256];
bzero(buf, 256);
if (val & SYMBOL_CONST)
strcat(buf, "const/");
if (val & SYMBOL_CHECK)
strcat(buf, "check/");
if (val & SYMBOL_CHOICE)
strcat(buf, "choice/");
if (val & SYMBOL_CHOICEVAL)
strcat(buf, "choiceval/");
if (val & SYMBOL_VALID)
strcat(buf, "valid/");
if (val & SYMBOL_OPTIONAL)
strcat(buf, "optional/");
if (val & SYMBOL_WRITE)
strcat(buf, "write/");
if (val & SYMBOL_CHANGED)
strcat(buf, "changed/");
if (val & SYMBOL_NO_WRITE)
strcat(buf, "no_write/");
buf[strlen(buf) - 1] = '\0';
return buf;
}
#endif
static void replace_button_icon(GladeXML *xml, GdkDrawable *window, static void replace_button_icon(GladeXML *xml, GdkDrawable *window,
GtkStyle *style, gchar *btn_name, gchar **xpm) GtkStyle *style, gchar *btn_name, gchar **xpm)
{ {
...@@ -493,7 +458,7 @@ load_filename(GtkFileSelection * file_selector, gpointer user_data) ...@@ -493,7 +458,7 @@ load_filename(GtkFileSelection * file_selector, gpointer user_data)
if (conf_read(fn)) if (conf_read(fn))
text_insert_msg("Error", "Unable to load configuration !"); text_insert_msg("Error", "Unable to load configuration !");
else else
display_tree(&rootmenu); display_tree_part();
} }
void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data) void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data)
...@@ -1082,15 +1047,13 @@ static gchar **fill_row(struct menu *menu) ...@@ -1082,15 +1047,13 @@ static gchar **fill_row(struct menu *menu)
row[COL_NAME] = g_strdup(sym->name); row[COL_NAME] = g_strdup(sym->name);
sym_calc_value(sym); sym_calc_value(sym);
sym->flags &= ~SYMBOL_CHANGED; menu->flags &= ~MENU_CHANGED;
if (sym_is_choice(sym)) { // parse childs for getting final value if (sym_is_choice(sym)) { // parse childs for getting final value
struct menu *child; struct menu *child;
struct symbol *def_sym = sym_get_choice_value(sym); struct symbol *def_sym = sym_get_choice_value(sym);
struct menu *def_menu = NULL; struct menu *def_menu = NULL;
row[COL_BTNVIS] = GINT_TO_POINTER(FALSE);
for (child = menu->list; child; child = child->next) { for (child = menu->list; child; child = child->next) {
if (menu_is_visible(child) if (menu_is_visible(child)
&& child->sym == def_sym) && child->sym == def_sym)
...@@ -1100,6 +1063,11 @@ static gchar **fill_row(struct menu *menu) ...@@ -1100,6 +1063,11 @@ static gchar **fill_row(struct menu *menu)
if (def_menu) if (def_menu)
row[COL_VALUE] = row[COL_VALUE] =
g_strdup(menu_get_prompt(def_menu)); g_strdup(menu_get_prompt(def_menu));
if (sym_get_type(sym) == S_BOOLEAN) {
row[COL_BTNVIS] = GINT_TO_POINTER(FALSE);
return row;
}
} }
if (sym->flags & SYMBOL_CHOICEVAL) if (sym->flags & SYMBOL_CHOICEVAL)
row[COL_BTNRAD] = GINT_TO_POINTER(TRUE); row[COL_BTNRAD] = GINT_TO_POINTER(TRUE);
...@@ -1107,11 +1075,6 @@ static gchar **fill_row(struct menu *menu) ...@@ -1107,11 +1075,6 @@ static gchar **fill_row(struct menu *menu)
stype = sym_get_type(sym); stype = sym_get_type(sym);
switch (stype) { switch (stype) {
case S_BOOLEAN: case S_BOOLEAN:
if (GPOINTER_TO_INT(row[COL_PIXVIS]) == FALSE)
row[COL_BTNVIS] = GINT_TO_POINTER(TRUE);
if (sym_is_choice(sym))
break;
/* fall through */
case S_TRISTATE: case S_TRISTATE:
val = sym_get_tristate_value(sym); val = sym_get_tristate_value(sym);
switch (val) { switch (val) {
...@@ -1268,12 +1231,6 @@ static void update_tree(struct menu *src, GtkTreeIter * dst) ...@@ -1268,12 +1231,6 @@ static void update_tree(struct menu *src, GtkTreeIter * dst)
else else
menu2 = NULL; // force adding of a first child menu2 = NULL; // force adding of a first child
#ifdef DEBUG
printf("%*c%s | %s\n", indent, ' ',
menu1 ? menu_get_prompt(menu1) : "nil",
menu2 ? menu_get_prompt(menu2) : "nil");
#endif
if ((opt_mode == OPT_NORMAL && !menu_is_visible(child1)) || if ((opt_mode == OPT_NORMAL && !menu_is_visible(child1)) ||
(opt_mode == OPT_PROMPT && !menu_has_prompt(child1)) || (opt_mode == OPT_PROMPT && !menu_has_prompt(child1)) ||
(opt_mode == OPT_ALL && !menu_get_prompt(child1))) { (opt_mode == OPT_ALL && !menu_get_prompt(child1))) {
...@@ -1314,7 +1271,7 @@ static void update_tree(struct menu *src, GtkTreeIter * dst) ...@@ -1314,7 +1271,7 @@ static void update_tree(struct menu *src, GtkTreeIter * dst)
else else
goto reparse; // next child goto reparse; // next child
} }
} else if (sym && (sym->flags & SYMBOL_CHANGED)) { } else if (sym && (child1->flags & MENU_CHANGED)) {
set_node(child2, menu1, fill_row(menu1)); set_node(child2, menu1, fill_row(menu1));
} }
...@@ -1330,7 +1287,6 @@ static void update_tree(struct menu *src, GtkTreeIter * dst) ...@@ -1330,7 +1287,6 @@ static void update_tree(struct menu *src, GtkTreeIter * dst)
/* Display the whole tree (single/split/full view) */ /* Display the whole tree (single/split/full view) */
static void display_tree(struct menu *menu) static void display_tree(struct menu *menu)
{ {
struct symbol *sym;
struct property *prop; struct property *prop;
struct menu *child; struct menu *child;
enum prop_type ptype; enum prop_type ptype;
...@@ -1342,11 +1298,9 @@ static void display_tree(struct menu *menu) ...@@ -1342,11 +1298,9 @@ static void display_tree(struct menu *menu)
for (child = menu->list; child; child = child->next) { for (child = menu->list; child; child = child->next) {
prop = child->prompt; prop = child->prompt;
sym = child->sym;
ptype = prop ? prop->type : P_UNKNOWN; ptype = prop ? prop->type : P_UNKNOWN;
if (sym) menu->flags &= ~MENU_CHANGED;
sym->flags &= ~SYMBOL_CHANGED;
if ((view_mode == SPLIT_VIEW) if ((view_mode == SPLIT_VIEW)
&& !(child->flags & MENU_ROOT) && (tree == tree1)) && !(child->flags & MENU_ROOT) && (tree == tree1))
...@@ -1360,19 +1314,7 @@ static void display_tree(struct menu *menu) ...@@ -1360,19 +1314,7 @@ static void display_tree(struct menu *menu)
(opt_mode == OPT_PROMPT && menu_has_prompt(child)) || (opt_mode == OPT_PROMPT && menu_has_prompt(child)) ||
(opt_mode == OPT_ALL && menu_get_prompt(child))) (opt_mode == OPT_ALL && menu_get_prompt(child)))
place_node(child, fill_row(child)); place_node(child, fill_row(child));
#ifdef DEBUG
printf("%*c%s: ", indent, ' ', menu_get_prompt(child));
printf("%s", child->flags & MENU_ROOT ? "rootmenu | " : "");
printf("%s", prop_get_type_name(ptype));
printf(" | ");
if (sym) {
printf("%s", sym_type_name(sym->type));
printf(" | ");
printf("%s", dbg_sym_flags(sym->flags));
printf("\n");
} else
printf("\n");
#endif
if ((view_mode != FULL_VIEW) && (ptype == P_MENU) if ((view_mode != FULL_VIEW) && (ptype == P_MENU)
&& (tree == tree2)) && (tree == tree2))
continue; continue;
...@@ -1405,6 +1347,8 @@ static void display_tree_part(void) ...@@ -1405,6 +1347,8 @@ static void display_tree_part(void)
display_tree(current); display_tree(current);
else if (view_mode == SPLIT_VIEW) else if (view_mode == SPLIT_VIEW)
display_tree(browsed); display_tree(browsed);
else if (view_mode == FULL_VIEW)
display_tree(&rootmenu);
gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w)); gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w));
} }
......
...@@ -120,7 +120,6 @@ n [A-Za-z0-9_-] ...@@ -120,7 +120,6 @@ n [A-Za-z0-9_-]
"menuconfig" return T_MENUCONFIG; "menuconfig" return T_MENUCONFIG;
"modules" return T_MODULES; "modules" return T_MODULES;
"on" return T_ON; "on" return T_ON;
"optional" return T_OPTIONAL;
"prompt" return T_PROMPT; "prompt" return T_PROMPT;
"range" return T_RANGE; "range" return T_RANGE;
"select" return T_SELECT; "select" return T_SELECT;
......
...@@ -79,6 +79,11 @@ void str_printf(struct gstr *gs, const char *fmt, ...); ...@@ -79,6 +79,11 @@ void str_printf(struct gstr *gs, const char *fmt, ...);
char *str_get(struct gstr *gs); char *str_get(struct gstr *gs);
/* menu.c */ /* menu.c */
struct menu *menu_next(struct menu *menu, struct menu *root);
#define menu_for_each_sub_entry(menu, root) \
for (menu = menu_next(root, root); menu; menu = menu_next(menu, root))
#define menu_for_each_entry(menu) \
menu_for_each_sub_entry(menu, &rootmenu)
void _menu_init(void); void _menu_init(void);
void menu_warn(struct menu *menu, const char *fmt, ...); void menu_warn(struct menu *menu, const char *fmt, ...);
struct menu *menu_add_menu(void); struct menu *menu_add_menu(void);
...@@ -124,7 +129,8 @@ static inline struct symbol *sym_get_choice_value(struct symbol *sym) ...@@ -124,7 +129,8 @@ static inline struct symbol *sym_get_choice_value(struct symbol *sym)
static inline bool sym_is_choice(struct symbol *sym) static inline bool sym_is_choice(struct symbol *sym)
{ {
return sym->flags & SYMBOL_CHOICE ? true : false; /* A choice is a symbol with no name */
return sym->name == NULL;
} }
static inline bool sym_is_choice_value(struct symbol *sym) static inline bool sym_is_choice_value(struct symbol *sym)
...@@ -132,11 +138,6 @@ static inline bool sym_is_choice_value(struct symbol *sym) ...@@ -132,11 +138,6 @@ static inline bool sym_is_choice_value(struct symbol *sym)
return sym->flags & SYMBOL_CHOICEVAL ? true : false; return sym->flags & SYMBOL_CHOICEVAL ? true : false;
} }
static inline bool sym_is_optional(struct symbol *sym)
{
return sym->flags & SYMBOL_OPTIONAL ? true : false;
}
static inline bool sym_has_value(struct symbol *sym) static inline bool sym_has_value(struct symbol *sym)
{ {
return sym->flags & SYMBOL_DEF_USER ? true : false; return sym->flags & SYMBOL_DEF_USER ? true : false;
......
...@@ -34,6 +34,7 @@ bool sym_string_within_range(struct symbol *sym, const char *str); ...@@ -34,6 +34,7 @@ bool sym_string_within_range(struct symbol *sym, const char *str);
bool sym_set_string_value(struct symbol *sym, const char *newval); bool sym_set_string_value(struct symbol *sym, const char *newval);
bool sym_is_changeable(struct symbol *sym); bool sym_is_changeable(struct symbol *sym);
struct property * sym_get_choice_prop(struct symbol *sym); struct property * sym_get_choice_prop(struct symbol *sym);
struct menu *sym_get_choice_menu(struct symbol *sym);
const char * sym_get_string_value(struct symbol *sym); const char * sym_get_string_value(struct symbol *sym);
const char * prop_get_type_name(enum prop_type type); const char * prop_get_type_name(enum prop_type type);
......
...@@ -17,22 +17,13 @@ struct dialog_info dlg; ...@@ -17,22 +17,13 @@ struct dialog_info dlg;
static void set_mono_theme(void) static void set_mono_theme(void)
{ {
dlg.screen.atr = A_NORMAL;
dlg.shadow.atr = A_NORMAL;
dlg.dialog.atr = A_NORMAL;
dlg.title.atr = A_BOLD; dlg.title.atr = A_BOLD;
dlg.border.atr = A_NORMAL;
dlg.button_active.atr = A_REVERSE; dlg.button_active.atr = A_REVERSE;
dlg.button_inactive.atr = A_DIM; dlg.button_inactive.atr = A_DIM;
dlg.button_key_active.atr = A_REVERSE; dlg.button_key_active.atr = A_REVERSE;
dlg.button_key_inactive.atr = A_BOLD; dlg.button_key_inactive.atr = A_BOLD;
dlg.button_label_active.atr = A_REVERSE; dlg.button_label_active.atr = A_REVERSE;
dlg.button_label_inactive.atr = A_NORMAL;
dlg.inputbox.atr = A_NORMAL;
dlg.position_indicator.atr = A_BOLD; dlg.position_indicator.atr = A_BOLD;
dlg.menubox.atr = A_NORMAL;
dlg.menubox_border.atr = A_NORMAL;
dlg.item.atr = A_NORMAL;
dlg.item_selected.atr = A_REVERSE; dlg.item_selected.atr = A_REVERSE;
dlg.tag.atr = A_BOLD; dlg.tag.atr = A_BOLD;
dlg.tag_selected.atr = A_REVERSE; dlg.tag_selected.atr = A_REVERSE;
......
...@@ -525,19 +525,12 @@ static void build_conf(struct menu *menu) ...@@ -525,19 +525,12 @@ static void build_conf(struct menu *menu)
val = sym_get_tristate_value(sym); val = sym_get_tristate_value(sym);
if (sym_is_changeable(sym)) { if (sym_is_changeable(sym)) {
switch (type) { switch (val) {
case S_BOOLEAN: case yes: ch = '*'; break;
item_make("[%c]", val == no ? ' ' : '*'); case mod: ch = 'M'; break;
break; default: ch = ' '; break;
case S_TRISTATE:
switch (val) {
case yes: ch = '*'; break;
case mod: ch = 'M'; break;
default: ch = ' '; break;
}
item_make("<%c>", ch);
break;
} }
item_make("<%c>", ch);
item_set_tag('t'); item_set_tag('t');
item_set_data(menu); item_set_data(menu);
} else { } else {
...@@ -548,15 +541,8 @@ static void build_conf(struct menu *menu) ...@@ -548,15 +541,8 @@ static void build_conf(struct menu *menu)
item_add_str("%*c%s", indent + 1, ' ', menu_get_prompt(menu)); item_add_str("%*c%s", indent + 1, ' ', menu_get_prompt(menu));
if (val == yes) { if (val == yes) {
if (def_menu) { if (def_menu)
item_add_str(" (%s)", menu_get_prompt(def_menu)); item_add_str(" (%s) --->", menu_get_prompt(def_menu));
item_add_str(" --->");
if (def_menu->list) {
indent += 2;
build_conf(def_menu);
indent -= 2;
}
}
return; return;
} }
} else { } else {
...@@ -568,49 +554,43 @@ static void build_conf(struct menu *menu) ...@@ -568,49 +554,43 @@ static void build_conf(struct menu *menu)
} }
child_count++; child_count++;
val = sym_get_tristate_value(sym); val = sym_get_tristate_value(sym);
if (sym_is_choice_value(sym) && val == yes) { switch (type) {
item_make(" "); case S_BOOLEAN:
item_set_tag(':'); if (sym_is_changeable(sym))
item_make("[%c]", val == no ? ' ' : '*');
else
item_make("-%c-", val == no ? ' ' : '*');
item_set_tag('t');
item_set_data(menu); item_set_data(menu);
} else { break;
switch (type) { case S_TRISTATE:
case S_BOOLEAN: switch (val) {
if (sym_is_changeable(sym)) case yes: ch = '*'; break;
item_make("[%c]", val == no ? ' ' : '*'); case mod: ch = 'M'; break;
else default: ch = ' '; break;
item_make("-%c-", val == no ? ' ' : '*');
item_set_tag('t');
item_set_data(menu);
break;
case S_TRISTATE:
switch (val) {
case yes: ch = '*'; break;
case mod: ch = 'M'; break;
default: ch = ' '; break;
}
if (sym_is_changeable(sym)) {
if (sym->rev_dep.tri == mod)
item_make("{%c}", ch);
else
item_make("<%c>", ch);
} else
item_make("-%c-", ch);
item_set_tag('t');
item_set_data(menu);
break;
default:
tmp = 2 + strlen(sym_get_string_value(sym)); /* () = 2 */
item_make("(%s)", sym_get_string_value(sym));
tmp = indent - tmp + 4;
if (tmp < 0)
tmp = 0;
item_add_str("%*c%s%s", tmp, ' ', menu_get_prompt(menu),
(sym_has_value(sym) || !sym_is_changeable(sym)) ?
"" : " (NEW)");
item_set_tag('s');
item_set_data(menu);
goto conf_childs;
} }
if (sym_is_changeable(sym)) {
if (sym->rev_dep.tri == mod)
item_make("{%c}", ch);
else
item_make("<%c>", ch);
} else
item_make("-%c-", ch);
item_set_tag('t');
item_set_data(menu);
break;
default:
tmp = 2 + strlen(sym_get_string_value(sym)); /* () = 2 */
item_make("(%s)", sym_get_string_value(sym));
tmp = indent - tmp + 4;
if (tmp < 0)
tmp = 0;
item_add_str("%*c%s%s", tmp, ' ', menu_get_prompt(menu),
(sym_has_value(sym) || !sym_is_changeable(sym)) ?
"" : " (NEW)");
item_set_tag('s');
item_set_data(menu);
goto conf_childs;
} }
item_add_str("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu), item_add_str("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu),
(sym_has_value(sym) || !sym_is_changeable(sym)) ? (sym_has_value(sym) || !sym_is_changeable(sym)) ?
......
...@@ -17,6 +17,27 @@ static const char nohelp_text[] = "There is no help available for this option."; ...@@ -17,6 +17,27 @@ static const char nohelp_text[] = "There is no help available for this option.";
struct menu rootmenu; struct menu rootmenu;
static struct menu **last_entry_ptr; static struct menu **last_entry_ptr;
/**
* menu_next - return the next menu entry with depth-first traversal
* @menu: pointer to the current menu
* @root: root of the sub-tree to traverse. If NULL is given, the traveral
* continues until it reaches the end of the entire menu tree.
* return: the menu to visit next, or NULL when it reaches the end.
*/
struct menu *menu_next(struct menu *menu, struct menu *root)
{
if (menu->list)
return menu->list;
while (menu != root && !menu->next)
menu = menu->parent;
if (menu == root)
return NULL;
return menu->next;
}
void menu_warn(struct menu *menu, const char *fmt, ...) void menu_warn(struct menu *menu, const char *fmt, ...)
{ {
va_list ap; va_list ap;
...@@ -242,11 +263,9 @@ static void sym_check_prop(struct symbol *sym) ...@@ -242,11 +263,9 @@ static void sym_check_prop(struct symbol *sym)
sym->name); sym->name);
} }
if (sym_is_choice(sym)) { if (sym_is_choice(sym)) {
struct property *choice_prop = struct menu *choice = sym_get_choice_menu(sym2);
sym_get_choice_prop(sym2);
if (!choice_prop || if (!choice || choice->sym != sym)
prop_get_symbol(choice_prop) != sym)
prop_warn(prop, prop_warn(prop,
"choice default symbol '%s' is not contained in the choice", "choice default symbol '%s' is not contained in the choice",
sym2->name); sym2->name);
...@@ -486,18 +505,6 @@ static void _menu_finalize(struct menu *parent, bool inside_choice) ...@@ -486,18 +505,6 @@ static void _menu_finalize(struct menu *parent, bool inside_choice)
menu->sym && !sym_is_choice_value(menu->sym)) { menu->sym && !sym_is_choice_value(menu->sym)) {
current_entry = menu; current_entry = menu;
menu->sym->flags |= SYMBOL_CHOICEVAL; menu->sym->flags |= SYMBOL_CHOICEVAL;
if (!menu->prompt)
menu_warn(menu, "choice value must have a prompt");
for (prop = menu->sym->prop; prop; prop = prop->next) {
if (prop->type == P_DEFAULT)
prop_warn(prop, "defaults for choice "
"values not supported");
if (prop->menu == menu)
continue;
if (prop->type == P_PROMPT &&
prop->menu->parent->sym != sym)
prop_warn(prop, "choice value used outside its choice group");
}
/* Non-tristate choice values of tristate choices must /* Non-tristate choice values of tristate choices must
* depend on the choice being set to Y. The choice * depend on the choice being set to Y. The choice
* values' dependencies were propagated to their * values' dependencies were propagated to their
...@@ -572,15 +579,11 @@ static void _menu_finalize(struct menu *parent, bool inside_choice) ...@@ -572,15 +579,11 @@ static void _menu_finalize(struct menu *parent, bool inside_choice)
} }
/* /*
* For non-optional choices, add a reverse dependency (corresponding to * For choices, add a reverse dependency (corresponding to a select) of
* a select) of '<visibility> && m'. This prevents the user from * '<visibility> && m'. This prevents the user from setting the choice
* setting the choice mode to 'n' when the choice is visible. * mode to 'n' when the choice is visible.
*
* This would also work for non-choice symbols, but only non-optional
* choices clear SYMBOL_OPTIONAL as of writing. Choices are implemented
* as a type of symbol.
*/ */
if (sym && !sym_is_optional(sym) && parent->prompt) { if (sym && sym_is_choice(sym) && parent->prompt) {
sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr, sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr,
expr_alloc_and(parent->prompt->visible.expr, expr_alloc_and(parent->prompt->visible.expr,
expr_alloc_symbol(&symbol_mod))); expr_alloc_symbol(&symbol_mod)));
......
...@@ -826,26 +826,18 @@ static void build_conf(struct menu *menu) ...@@ -826,26 +826,18 @@ static void build_conf(struct menu *menu)
val = sym_get_tristate_value(sym); val = sym_get_tristate_value(sym);
if (sym_is_changeable(sym)) { if (sym_is_changeable(sym)) {
switch (type) { switch (val) {
case S_BOOLEAN: case yes:
item_make(menu, 't', "[%c]", ch = '*';
val == no ? ' ' : '*');
break; break;
case S_TRISTATE: case mod:
switch (val) { ch = 'M';
case yes: break;
ch = '*'; default:
break; ch = ' ';
case mod:
ch = 'M';
break;
default:
ch = ' ';
break;
}
item_make(menu, 't', "<%c>", ch);
break; break;
} }
item_make(menu, 't', "<%c>", ch);
} else { } else {
item_make(menu, def_menu ? 't' : ':', " "); item_make(menu, def_menu ? 't' : ':', " ");
} }
...@@ -853,16 +845,8 @@ static void build_conf(struct menu *menu) ...@@ -853,16 +845,8 @@ static void build_conf(struct menu *menu)
item_add_str("%*c%s", indent + 1, item_add_str("%*c%s", indent + 1,
' ', menu_get_prompt(menu)); ' ', menu_get_prompt(menu));
if (val == yes) { if (val == yes) {
if (def_menu) { if (def_menu)
item_add_str(" (%s)", item_add_str(" (%s) --->", menu_get_prompt(def_menu));
menu_get_prompt(def_menu));
item_add_str(" --->");
if (def_menu->list) {
indent += 2;
build_conf(def_menu);
indent -= 2;
}
}
return; return;
} }
} else { } else {
...@@ -874,54 +858,46 @@ static void build_conf(struct menu *menu) ...@@ -874,54 +858,46 @@ static void build_conf(struct menu *menu)
} }
child_count++; child_count++;
val = sym_get_tristate_value(sym); val = sym_get_tristate_value(sym);
if (sym_is_choice_value(sym) && val == yes) { switch (type) {
item_make(menu, ':', " "); case S_BOOLEAN:
} else { if (sym_is_changeable(sym))
switch (type) { item_make(menu, 't', "[%c]",
case S_BOOLEAN: val == no ? ' ' : '*');
if (sym_is_changeable(sym)) else
item_make(menu, 't', "[%c]", item_make(menu, 't', "-%c-",
val == no ? ' ' : '*'); val == no ? ' ' : '*');
else break;
item_make(menu, 't', "-%c-", case S_TRISTATE:
val == no ? ' ' : '*'); switch (val) {
case yes:
ch = '*';
break; break;
case S_TRISTATE: case mod:
switch (val) { ch = 'M';
case yes:
ch = '*';
break;
case mod:
ch = 'M';
break;
default:
ch = ' ';
break;
}
if (sym_is_changeable(sym)) {
if (sym->rev_dep.tri == mod)
item_make(menu,
't', "{%c}", ch);
else
item_make(menu,
't', "<%c>", ch);
} else
item_make(menu, 't', "-%c-", ch);
break; break;
default: default:
tmp = 2 + strlen(sym_get_string_value(sym)); ch = ' ';
item_make(menu, 's', " (%s)", break;
sym_get_string_value(sym));
tmp = indent - tmp + 4;
if (tmp < 0)
tmp = 0;
item_add_str("%*c%s%s", tmp, ' ',
menu_get_prompt(menu),
(sym_has_value(sym) ||
!sym_is_changeable(sym)) ? "" :
" (NEW)");
goto conf_childs;
} }
if (sym_is_changeable(sym)) {
if (sym->rev_dep.tri == mod)
item_make(menu, 't', "{%c}", ch);
else
item_make(menu, 't', "<%c>", ch);
} else
item_make(menu, 't', "-%c-", ch);
break;
default:
tmp = 2 + strlen(sym_get_string_value(sym));
item_make(menu, 's', " (%s)",
sym_get_string_value(sym));
tmp = indent - tmp + 4;
if (tmp < 0)
tmp = 0;
item_add_str("%*c%s%s", tmp, ' ', menu_get_prompt(menu),
(sym_has_value(sym) ||
!sym_is_changeable(sym)) ? "" : " (NEW)");
goto conf_childs;
} }
item_add_str("%*c%s%s", indent + 1, ' ', item_add_str("%*c%s%s", indent + 1, ' ',
menu_get_prompt(menu), menu_get_prompt(menu),
......
...@@ -30,6 +30,8 @@ static bool zconf_endtoken(const char *tokenname, ...@@ -30,6 +30,8 @@ static bool zconf_endtoken(const char *tokenname,
struct menu *current_menu, *current_entry; struct menu *current_menu, *current_entry;
static bool inside_choice = false;
%} %}
%union %union
...@@ -69,7 +71,6 @@ struct menu *current_menu, *current_entry; ...@@ -69,7 +71,6 @@ struct menu *current_menu, *current_entry;
%token T_MODULES %token T_MODULES
%token T_ON %token T_ON
%token T_OPEN_PAREN %token T_OPEN_PAREN
%token T_OPTIONAL
%token T_PLUS_EQUAL %token T_PLUS_EQUAL
%token T_PROMPT %token T_PROMPT
%token T_RANGE %token T_RANGE
...@@ -140,19 +141,25 @@ stmt_list_in_choice: ...@@ -140,19 +141,25 @@ stmt_list_in_choice:
config_entry_start: T_CONFIG nonconst_symbol T_EOL config_entry_start: T_CONFIG nonconst_symbol T_EOL
{ {
$2->flags |= SYMBOL_OPTIONAL;
menu_add_entry($2); menu_add_entry($2);
printd(DEBUG_PARSE, "%s:%d:config %s\n", cur_filename, cur_lineno, $2->name); printd(DEBUG_PARSE, "%s:%d:config %s\n", cur_filename, cur_lineno, $2->name);
}; };
config_stmt: config_entry_start config_option_list config_stmt: config_entry_start config_option_list
{ {
if (inside_choice) {
if (!current_entry->prompt) {
fprintf(stderr, "%s:%d: error: choice member must have a prompt\n",
current_entry->filename, current_entry->lineno);
yynerrs++;
}
}
printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno);
}; };
menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL
{ {
$2->flags |= SYMBOL_OPTIONAL;
menu_add_entry($2); menu_add_entry($2);
printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", cur_filename, cur_lineno, $2->name); printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", cur_filename, cur_lineno, $2->name);
}; };
...@@ -224,8 +231,8 @@ config_option: T_MODULES T_EOL ...@@ -224,8 +231,8 @@ config_option: T_MODULES T_EOL
choice: T_CHOICE T_EOL choice: T_CHOICE T_EOL
{ {
struct symbol *sym = sym_lookup(NULL, SYMBOL_CHOICE); struct symbol *sym = sym_lookup(NULL, 0);
sym->flags |= SYMBOL_NO_WRITE;
menu_add_entry(sym); menu_add_entry(sym);
menu_add_expr(P_CHOICE, NULL, NULL); menu_add_expr(P_CHOICE, NULL, NULL);
printd(DEBUG_PARSE, "%s:%d:choice\n", cur_filename, cur_lineno); printd(DEBUG_PARSE, "%s:%d:choice\n", cur_filename, cur_lineno);
...@@ -240,10 +247,14 @@ choice_entry: choice choice_option_list ...@@ -240,10 +247,14 @@ choice_entry: choice choice_option_list
} }
$$ = menu_add_menu(); $$ = menu_add_menu();
inside_choice = true;
}; };
choice_end: end choice_end: end
{ {
inside_choice = false;
if (zconf_endtoken($1, "choice")) { if (zconf_endtoken($1, "choice")) {
menu_end_menu(); menu_end_menu();
printd(DEBUG_PARSE, "%s:%d:endchoice\n", cur_filename, cur_lineno); printd(DEBUG_PARSE, "%s:%d:endchoice\n", cur_filename, cur_lineno);
...@@ -272,12 +283,6 @@ choice_option: logic_type prompt_stmt_opt T_EOL ...@@ -272,12 +283,6 @@ choice_option: logic_type prompt_stmt_opt T_EOL
printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, $1); printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, $1);
}; };
choice_option: T_OPTIONAL T_EOL
{
current_entry->sym->flags |= SYMBOL_OPTIONAL;
printd(DEBUG_PARSE, "%s:%d:optional\n", cur_filename, cur_lineno);
};
choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL
{ {
menu_add_symbol(P_DEFAULT, $2, $3); menu_add_symbol(P_DEFAULT, $2, $3);
...@@ -471,6 +476,38 @@ assign_val: ...@@ -471,6 +476,38 @@ assign_val:
%% %%
/**
* choice_check_sanity - check sanity of a choice member
*
* @menu: menu of the choice member
*
* Return: -1 if an error is found, 0 otherwise.
*/
static int choice_check_sanity(struct menu *menu)
{
struct property *prop;
int ret = 0;
for (prop = menu->sym->prop; prop; prop = prop->next) {
if (prop->type == P_DEFAULT) {
fprintf(stderr, "%s:%d: error: %s",
prop->filename, prop->lineno,
"defaults for choice values not supported\n");
ret = -1;
}
if (prop->menu != menu && prop->type == P_PROMPT &&
prop->menu->parent != menu->parent) {
fprintf(stderr, "%s:%d: error: %s",
prop->filename, prop->lineno,
"choice value has a prompt outside its choice group\n");
ret = -1;
}
}
return ret;
}
void conf_parse(const char *name) void conf_parse(const char *name)
{ {
struct menu *menu; struct menu *menu;
...@@ -517,20 +554,17 @@ void conf_parse(const char *name) ...@@ -517,20 +554,17 @@ void conf_parse(const char *name)
menu_finalize(); menu_finalize();
menu = &rootmenu; menu_for_each_entry(menu) {
while (menu) { struct menu *child;
if (menu->sym && sym_check_deps(menu->sym)) if (menu->sym && sym_check_deps(menu->sym))
yynerrs++; yynerrs++;
if (menu->list) { if (menu->sym && sym_is_choice(menu->sym)) {
menu = menu->list; menu_for_each_sub_entry(child, menu)
continue; if (child->sym && choice_check_sanity(child))
yynerrs++;
} }
while (!menu->next && menu->parent)
menu = menu->parent;
menu = menu->next;
} }
if (yynerrs) if (yynerrs)
......
...@@ -78,6 +78,41 @@ struct property *sym_get_choice_prop(struct symbol *sym) ...@@ -78,6 +78,41 @@ struct property *sym_get_choice_prop(struct symbol *sym)
return NULL; return NULL;
} }
/**
* sym_get_choice_menu - get the parent choice menu if present
*
* @sym: a symbol pointer
*
* Return: a choice menu if this function is called against a choice member.
*/
struct menu *sym_get_choice_menu(struct symbol *sym)
{
struct menu *menu = NULL;
struct menu *m;
/*
* Choice members must have a prompt. Find a menu entry with a prompt,
* and assume it resides inside a choice block.
*/
list_for_each_entry(m, &sym->menus, link)
if (m->prompt) {
menu = m;
break;
}
if (!menu)
return NULL;
do {
menu = menu->parent;
} while (menu && !menu->sym);
if (menu && menu->sym && sym_is_choice(menu->sym))
return menu;
return NULL;
}
static struct property *sym_get_default_prop(struct symbol *sym) static struct property *sym_get_default_prop(struct symbol *sym)
{ {
struct property *prop; struct property *prop;
...@@ -152,13 +187,11 @@ static void sym_validate_range(struct symbol *sym) ...@@ -152,13 +187,11 @@ static void sym_validate_range(struct symbol *sym)
static void sym_set_changed(struct symbol *sym) static void sym_set_changed(struct symbol *sym)
{ {
struct property *prop; struct menu *menu;
sym->flags |= SYMBOL_CHANGED; sym->flags |= SYMBOL_CHANGED;
for (prop = sym->prop; prop; prop = prop->next) { list_for_each_entry(menu, &sym->menus, link)
if (prop->menu) menu->flags |= MENU_CHANGED;
prop->menu->flags |= MENU_CHANGED;
}
} }
static void sym_set_all_changed(void) static void sym_set_all_changed(void)
...@@ -466,10 +499,9 @@ void sym_calc_value(struct symbol *sym) ...@@ -466,10 +499,9 @@ void sym_calc_value(struct symbol *sym)
if (sym->flags & SYMBOL_CHANGED) if (sym->flags & SYMBOL_CHANGED)
sym_set_changed(choice_sym); sym_set_changed(choice_sym);
} }
}
if (sym->flags & SYMBOL_NO_WRITE)
sym->flags &= ~SYMBOL_WRITE; sym->flags &= ~SYMBOL_WRITE;
}
if (sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES) if (sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES)
set_all_choice_values(sym); set_all_choice_values(sym);
...@@ -827,7 +859,7 @@ struct symbol *sym_lookup(const char *name, int flags) ...@@ -827,7 +859,7 @@ struct symbol *sym_lookup(const char *name, int flags)
if (symbol->name && if (symbol->name &&
!strcmp(symbol->name, name) && !strcmp(symbol->name, name) &&
(flags ? symbol->flags & flags (flags ? symbol->flags & flags
: !(symbol->flags & (SYMBOL_CONST|SYMBOL_CHOICE)))) : !(symbol->flags & SYMBOL_CONST)))
return symbol; return symbol;
} }
new_name = xstrdup(name); new_name = xstrdup(name);
...@@ -1172,16 +1204,18 @@ static struct symbol *sym_check_sym_deps(struct symbol *sym) ...@@ -1172,16 +1204,18 @@ static struct symbol *sym_check_sym_deps(struct symbol *sym)
static struct symbol *sym_check_choice_deps(struct symbol *choice) static struct symbol *sym_check_choice_deps(struct symbol *choice)
{ {
struct symbol *sym, *sym2; struct menu *choice_menu, *menu;
struct property *prop; struct symbol *sym2;
struct expr *e;
struct dep_stack stack; struct dep_stack stack;
dep_stack_insert(&stack, choice); dep_stack_insert(&stack, choice);
prop = sym_get_choice_prop(choice); choice_menu = list_first_entry(&choice->menus, struct menu, link);
expr_list_for_each_sym(prop->expr, e, sym)
sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED); menu_for_each_sub_entry(menu, choice_menu) {
if (menu->sym)
menu->sym->flags |= SYMBOL_CHECK | SYMBOL_CHECKED;
}
choice->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED); choice->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
sym2 = sym_check_sym_deps(choice); sym2 = sym_check_sym_deps(choice);
...@@ -1189,14 +1223,17 @@ static struct symbol *sym_check_choice_deps(struct symbol *choice) ...@@ -1189,14 +1223,17 @@ static struct symbol *sym_check_choice_deps(struct symbol *choice)
if (sym2) if (sym2)
goto out; goto out;
expr_list_for_each_sym(prop->expr, e, sym) { menu_for_each_sub_entry(menu, choice_menu) {
sym2 = sym_check_sym_deps(sym); if (!menu->sym)
continue;
sym2 = sym_check_sym_deps(menu->sym);
if (sym2) if (sym2)
break; break;
} }
out: out:
expr_list_for_each_sym(prop->expr, e, sym) menu_for_each_sub_entry(menu, choice_menu)
sym->flags &= ~SYMBOL_CHECK; if (menu->sym)
menu->sym->flags &= ~SYMBOL_CHECK;
if (sym2 && sym_is_choice_value(sym2) && if (sym2 && sym_is_choice_value(sym2) &&
prop_get_symbol(sym_get_choice_prop(sym2)) == choice) prop_get_symbol(sym_get_choice_prop(sym2)) == choice)
......
...@@ -17,19 +17,6 @@ config BOOL_CHOICE1 ...@@ -17,19 +17,6 @@ config BOOL_CHOICE1
endchoice endchoice
choice
prompt "optional boolean choice"
optional
default OPT_BOOL_CHOICE1
config OPT_BOOL_CHOICE0
bool "choice 0"
config OPT_BOOL_CHOICE1
bool "choice 1"
endchoice
choice choice
prompt "tristate choice" prompt "tristate choice"
default TRI_CHOICE1 default TRI_CHOICE1
...@@ -41,16 +28,3 @@ config TRI_CHOICE1 ...@@ -41,16 +28,3 @@ config TRI_CHOICE1
tristate "choice 1" tristate "choice 1"
endchoice endchoice
choice
prompt "optional tristate choice"
optional
default OPT_TRI_CHOICE1
config OPT_TRI_CHOICE0
tristate "choice 0"
config OPT_TRI_CHOICE1
tristate "choice 1"
endchoice
...@@ -6,8 +6,6 @@ The handling of 'choice' is a bit complicated part in Kconfig. ...@@ -6,8 +6,6 @@ The handling of 'choice' is a bit complicated part in Kconfig.
The behavior of 'y' choice is intuitive. If choice values are tristate, The behavior of 'y' choice is intuitive. If choice values are tristate,
the choice can be 'm' where each value can be enabled independently. the choice can be 'm' where each value can be enabled independently.
Also, if a choice is marked as 'optional', the whole choice can be
invisible.
""" """
......
CONFIG_MODULES=y CONFIG_MODULES=y
# CONFIG_BOOL_CHOICE0 is not set # CONFIG_BOOL_CHOICE0 is not set
CONFIG_BOOL_CHOICE1=y CONFIG_BOOL_CHOICE1=y
# CONFIG_OPT_BOOL_CHOICE0 is not set
CONFIG_OPT_BOOL_CHOICE1=y
CONFIG_TRI_CHOICE0=m CONFIG_TRI_CHOICE0=m
CONFIG_TRI_CHOICE1=m CONFIG_TRI_CHOICE1=m
CONFIG_OPT_TRI_CHOICE0=m
CONFIG_OPT_TRI_CHOICE1=m
CONFIG_MODULES=y CONFIG_MODULES=y
# CONFIG_BOOL_CHOICE0 is not set # CONFIG_BOOL_CHOICE0 is not set
CONFIG_BOOL_CHOICE1=y CONFIG_BOOL_CHOICE1=y
# CONFIG_OPT_BOOL_CHOICE0 is not set
CONFIG_OPT_BOOL_CHOICE1=y
# CONFIG_TRI_CHOICE0 is not set # CONFIG_TRI_CHOICE0 is not set
CONFIG_TRI_CHOICE1=y CONFIG_TRI_CHOICE1=y
# CONFIG_OPT_TRI_CHOICE0 is not set
CONFIG_OPT_TRI_CHOICE1=y
...@@ -3,8 +3,6 @@ boolean choice ...@@ -3,8 +3,6 @@ boolean choice
1. choice 0 (BOOL_CHOICE0) (NEW) 1. choice 0 (BOOL_CHOICE0) (NEW)
> 2. choice 1 (BOOL_CHOICE1) (NEW) > 2. choice 1 (BOOL_CHOICE1) (NEW)
choice[1-2?]: choice[1-2?]:
optional boolean choice [N/y/?] (NEW)
tristate choice [M/y/?] (NEW) tristate choice [M/y/?] (NEW)
choice 0 (TRI_CHOICE0) [N/m/?] (NEW) choice 0 (TRI_CHOICE0) [N/m/?] (NEW)
choice 1 (TRI_CHOICE1) [N/m/?] (NEW) choice 1 (TRI_CHOICE1) [N/m/?] (NEW)
optional tristate choice [N/m/y/?] (NEW)
# CONFIG_MODULES is not set # CONFIG_MODULES is not set
CONFIG_OPT_BOOL_CHOICE0=y
...@@ -3,13 +3,7 @@ boolean choice ...@@ -3,13 +3,7 @@ boolean choice
1. choice 0 (BOOL_CHOICE0) (NEW) 1. choice 0 (BOOL_CHOICE0) (NEW)
> 2. choice 1 (BOOL_CHOICE1) (NEW) > 2. choice 1 (BOOL_CHOICE1) (NEW)
choice[1-2?]: choice[1-2?]:
optional boolean choice [Y/n/?] (NEW)
optional boolean choice
> 1. choice 0 (OPT_BOOL_CHOICE0)
2. choice 1 (OPT_BOOL_CHOICE1) (NEW)
choice[1-2?]:
tristate choice tristate choice
1. choice 0 (TRI_CHOICE0) (NEW) 1. choice 0 (TRI_CHOICE0) (NEW)
> 2. choice 1 (TRI_CHOICE1) (NEW) > 2. choice 1 (TRI_CHOICE1) (NEW)
choice[1-2?]: choice[1-2?]:
optional tristate choice [N/y/?]
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
OBJECT_FILES_NON_STANDARD := y
CFLAGS_REMOVE_empty.o += $(CC_FLAGS_LTO) CFLAGS_REMOVE_empty.o += $(CC_FLAGS_LTO)
hostprogs-always-y += modpost mk_elfconfig hostprogs-always-y += modpost mk_elfconfig
......
...@@ -13,6 +13,7 @@ SECTIONS { ...@@ -13,6 +13,7 @@ SECTIONS {
/DISCARD/ : { /DISCARD/ : {
*(.discard) *(.discard)
*(.discard.*) *(.discard.*)
*(.export_symbol)
} }
__ksymtab 0 : { *(SORT(___ksymtab+*)) } __ksymtab 0 : { *(SORT(___ksymtab+*)) }
......
...@@ -53,18 +53,20 @@ cp -v -- "${objtree}/vmlinux" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}" ...@@ -53,18 +53,20 @@ cp -v -- "${objtree}/vmlinux" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
# #
# Install arch-specific kernel image(s) # Install arch-specific kernel image(s)
# #
# Note:
# mips and arm64 copy the first image found. This may not produce the desired
# outcome because it may pick up a stale file remaining in the build tree.
#
case "${ARCH}" in case "${ARCH}" in
x86|i386|x86_64)
[ -f "${objtree}/arch/x86/boot/bzImage" ] && cp -v -- "${objtree}/arch/x86/boot/bzImage" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
;;
alpha) alpha)
[ -f "${objtree}/arch/alpha/boot/vmlinux.gz" ] && cp -v -- "${objtree}/arch/alpha/boot/vmlinux.gz" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}" cp -v -- "${objtree}/arch/alpha/boot/vmlinux.gz" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
;; ;;
parisc*) parisc*)
[ -f "${KBUILD_IMAGE}" ] && cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}" cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
[ -f "${objtree}/lifimage" ] && cp -v -- "${objtree}/lifimage" "${tmpdir}/boot/lifimage-${KERNELRELEASE}" [ -f "${objtree}/lifimage" ] && cp -v -- "${objtree}/lifimage" "${tmpdir}/boot/lifimage-${KERNELRELEASE}"
;; ;;
mips) mips)
# Please note the following code may copy a stale file.
if [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.bin" ]; then if [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.bin" ]; then
cp -v -- "${objtree}/arch/mips/boot/compressed/vmlinux.bin" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}" cp -v -- "${objtree}/arch/mips/boot/compressed/vmlinux.bin" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
elif [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.ecoff" ]; then elif [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.ecoff" ]; then
...@@ -86,6 +88,7 @@ case "${ARCH}" in ...@@ -86,6 +88,7 @@ case "${ARCH}" in
fi fi
;; ;;
arm64) arm64)
# Please note the following code may copy a stale file.
for i in Image.bz2 Image.gz Image.lz4 Image.lzma Image.lzo vmlinuz.efi ; do for i in Image.bz2 Image.gz Image.lz4 Image.lzma Image.lzo vmlinuz.efi ; do
if [ -f "${objtree}/arch/arm64/boot/${i}" ] ; then if [ -f "${objtree}/arch/arm64/boot/${i}" ] ; then
cp -v -- "${objtree}/arch/arm64/boot/${i}" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}" cp -v -- "${objtree}/arch/arm64/boot/${i}" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
...@@ -94,21 +97,14 @@ case "${ARCH}" in ...@@ -94,21 +97,14 @@ case "${ARCH}" in
done done
;; ;;
riscv) riscv)
for i in Image.bz2 Image.gz Image; do case "${KBUILD_IMAGE##*/}" in
if [ -f "${objtree}/arch/riscv/boot/${i}" ] ; then Image.*|vmlinuz.efi)
cp -v -- "${objtree}/arch/riscv/boot/${i}" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}" cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}";;
break *)
fi cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}";;
done esac
;; ;;
*) *)
[ -f "${KBUILD_IMAGE}" ] && cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinux-kbuild-${KERNELRELEASE}" cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
echo "" >&2
echo '** ** ** WARNING ** ** **' >&2
echo "" >&2
echo "Your architecture did not define any architecture-dependent files" >&2
echo "to be placed into the tarball. Please add those to ${0} ..." >&2
echo "" >&2
sleep 5
;; ;;
esac esac
...@@ -203,7 +203,7 @@ static int depth; /* current #if nesting */ ...@@ -203,7 +203,7 @@ static int depth; /* current #if nesting */
static int delcount; /* count of deleted lines */ static int delcount; /* count of deleted lines */
static unsigned blankcount; /* count of blank lines */ static unsigned blankcount; /* count of blank lines */
static unsigned blankmax; /* maximum recent blankcount */ static unsigned blankmax; /* maximum recent blankcount */
static bool constexpr; /* constant #if expression */ static bool constexpression; /* constant #if expression */
static bool zerosyms = true; /* to format symdepth output */ static bool zerosyms = true; /* to format symdepth output */
static bool firstsym; /* ditto */ static bool firstsym; /* ditto */
...@@ -819,7 +819,7 @@ static const struct ops { ...@@ -819,7 +819,7 @@ static const struct ops {
/* /*
* Function for evaluating the innermost parts of expressions, * Function for evaluating the innermost parts of expressions,
* viz. !expr (expr) number defined(symbol) symbol * viz. !expr (expr) number defined(symbol) symbol
* We reset the constexpr flag in the last two cases. * We reset the constexpression flag in the last two cases.
*/ */
static Linetype static Linetype
eval_unary(const struct ops *ops, int *valp, const char **cpp) eval_unary(const struct ops *ops, int *valp, const char **cpp)
...@@ -877,7 +877,7 @@ eval_unary(const struct ops *ops, int *valp, const char **cpp) ...@@ -877,7 +877,7 @@ eval_unary(const struct ops *ops, int *valp, const char **cpp)
cp = skipcomment(cp); cp = skipcomment(cp);
if (defparen && *cp++ != ')') if (defparen && *cp++ != ')')
return (LT_ERROR); return (LT_ERROR);
constexpr = false; constexpression = false;
} else if (!endsym(*cp)) { } else if (!endsym(*cp)) {
debug("eval%d symbol", ops - eval_ops); debug("eval%d symbol", ops - eval_ops);
sym = findsym(cp); sym = findsym(cp);
...@@ -895,7 +895,7 @@ eval_unary(const struct ops *ops, int *valp, const char **cpp) ...@@ -895,7 +895,7 @@ eval_unary(const struct ops *ops, int *valp, const char **cpp)
lt = *valp ? LT_TRUE : LT_FALSE; lt = *valp ? LT_TRUE : LT_FALSE;
cp = skipargs(cp); cp = skipargs(cp);
} }
constexpr = false; constexpression = false;
} else { } else {
debug("eval%d bad expr", ops - eval_ops); debug("eval%d bad expr", ops - eval_ops);
return (LT_ERROR); return (LT_ERROR);
...@@ -955,10 +955,10 @@ ifeval(const char **cpp) ...@@ -955,10 +955,10 @@ ifeval(const char **cpp)
int val = 0; int val = 0;
debug("eval %s", *cpp); debug("eval %s", *cpp);
constexpr = killconsts ? false : true; constexpression = killconsts ? false : true;
ret = eval_table(eval_ops, &val, cpp); ret = eval_table(eval_ops, &val, cpp);
debug("eval = %d", val); debug("eval = %d", val);
return (constexpr ? LT_IF : ret == LT_ERROR ? LT_IF : ret); return (constexpression ? LT_IF : ret == LT_ERROR ? LT_IF : ret);
} }
/* /*
......
...@@ -11,7 +11,7 @@ quiet_cmd_policy = POLICY $@ ...@@ -11,7 +11,7 @@ quiet_cmd_policy = POLICY $@
printf '\t"";\n';) \ printf '\t"";\n';) \
} > $@ } > $@
$(obj)/builtin-policy.h: $(wildcard $(obj)/policy/*.conf $(srctree)/$(src)/policy/*.conf.default) FORCE $(obj)/builtin-policy.h: $(wildcard $(obj)/policy/*.conf $(src)/policy/*.conf.default) FORCE
$(call if_changed,policy) $(call if_changed,policy)
ifndef CONFIG_SECURITY_TOMOYO_INSECURE_BUILTIN_SETTING ifndef CONFIG_SECURITY_TOMOYO_INSECURE_BUILTIN_SETTING
......
...@@ -22,7 +22,7 @@ cpio-data := ...@@ -22,7 +22,7 @@ cpio-data :=
# If CONFIG_INITRAMFS_SOURCE is empty, generate a small initramfs with the # If CONFIG_INITRAMFS_SOURCE is empty, generate a small initramfs with the
# default contents. # default contents.
ifeq ($(ramfs-input),) ifeq ($(ramfs-input),)
ramfs-input := $(srctree)/$(src)/default_cpio_list ramfs-input := $(src)/default_cpio_list
endif endif
ifeq ($(words $(ramfs-input)),1) ifeq ($(words $(ramfs-input)),1)
......
...@@ -78,7 +78,7 @@ quiet_cmd_hdrtest = HDRTEST $< ...@@ -78,7 +78,7 @@ quiet_cmd_hdrtest = HDRTEST $<
cmd_hdrtest = \ cmd_hdrtest = \
$(CC) $(c_flags) -fsyntax-only -x c /dev/null \ $(CC) $(c_flags) -fsyntax-only -x c /dev/null \
$(if $(filter-out $(no-header-test), $*.h), -include $< -include $<); \ $(if $(filter-out $(no-header-test), $*.h), -include $< -include $<); \
$(PERL) $(srctree)/$(src)/headers_check.pl $(obj) $(SRCARCH) $<; \ $(PERL) $(src)/headers_check.pl $(obj) $(SRCARCH) $<; \
touch $@ touch $@
$(obj)/%.hdrtest: $(obj)/%.h FORCE $(obj)/%.hdrtest: $(obj)/%.h FORCE
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment