Commit a4126826 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'kbuild-fixes-v6.8' of...

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

Pull Kbuild fixes from Masahiro Yamada:

 - Fix UML build with clang-18 and newer

 - Avoid using the alias attribute in host programs

 - Replace tabs with spaces when followed by conditionals for future GNU
   Make versions

 - Fix rpm-pkg for the systemd-provided kernel-install tool

 - Fix the undefined behavior in Kconfig for a 'int' symbol used in a
   conditional

* tag 'kbuild-fixes-v6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
  kconfig: initialize sym->curr.tri to 'no' for all symbol types again
  kbuild: rpm-pkg: simplify installkernel %post
  kbuild: Replace tabs with spaces when followed by conditionals
  modpost: avoid using the alias attribute
  kbuild: fix W= flags in the help message
  modpost: Add '.ltext' and '.ltext.*' to TEXT_SECTIONS
  um: Fix adding '-no-pie' for clang
  kbuild: defconf: use SRCARCH to find merged configs
parents cfdf0c09 bfef491d
...@@ -294,15 +294,15 @@ may-sync-config := 1 ...@@ -294,15 +294,15 @@ may-sync-config := 1
single-build := single-build :=
ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),) ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),) ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
need-config := need-config :=
endif endif
endif endif
ifneq ($(filter $(no-sync-config-targets), $(MAKECMDGOALS)),) ifneq ($(filter $(no-sync-config-targets), $(MAKECMDGOALS)),)
ifeq ($(filter-out $(no-sync-config-targets), $(MAKECMDGOALS)),) ifeq ($(filter-out $(no-sync-config-targets), $(MAKECMDGOALS)),)
may-sync-config := may-sync-config :=
endif endif
endif endif
need-compiler := $(may-sync-config) need-compiler := $(may-sync-config)
...@@ -323,9 +323,9 @@ endif ...@@ -323,9 +323,9 @@ endif
# We cannot build single targets and the others at the same time # We cannot build single targets and the others at the same time
ifneq ($(filter $(single-targets), $(MAKECMDGOALS)),) ifneq ($(filter $(single-targets), $(MAKECMDGOALS)),)
single-build := 1 single-build := 1
ifneq ($(filter-out $(single-targets), $(MAKECMDGOALS)),) ifneq ($(filter-out $(single-targets), $(MAKECMDGOALS)),)
mixed-build := 1 mixed-build := 1
endif endif
endif endif
# For "make -j clean all", "make -j mrproper defconfig all", etc. # For "make -j clean all", "make -j mrproper defconfig all", etc.
...@@ -1666,7 +1666,7 @@ help: ...@@ -1666,7 +1666,7 @@ help:
@echo ' (sparse by default)' @echo ' (sparse by default)'
@echo ' make C=2 [targets] Force check of all c source with $$CHECK' @echo ' make C=2 [targets] Force check of all c source with $$CHECK'
@echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections' @echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections'
@echo ' make W=n [targets] Enable extra build checks, n=1,2,3 where' @echo ' make W=n [targets] Enable extra build checks, n=1,2,3,c,e where'
@echo ' 1: warnings which may be relevant and do not occur too often' @echo ' 1: warnings which may be relevant and do not occur too often'
@echo ' 2: warnings which occur quite often but may still be relevant' @echo ' 2: warnings which occur quite often but may still be relevant'
@echo ' 3: more obscure warnings, can most likely be ignored' @echo ' 3: more obscure warnings, can most likely be ignored'
......
...@@ -15,10 +15,10 @@ ...@@ -15,10 +15,10 @@
KBUILD_DEFCONFIG := multi_defconfig KBUILD_DEFCONFIG := multi_defconfig
ifdef cross_compiling ifdef cross_compiling
ifeq ($(CROSS_COMPILE),) ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE := $(call cc-cross-prefix, \ CROSS_COMPILE := $(call cc-cross-prefix, \
m68k-linux-gnu- m68k-linux- m68k-unknown-linux-gnu-) m68k-linux-gnu- m68k-linux- m68k-unknown-linux-gnu-)
endif endif
endif endif
# #
......
...@@ -50,12 +50,12 @@ export CROSS32CC ...@@ -50,12 +50,12 @@ export CROSS32CC
# Set default cross compiler for kernel build # Set default cross compiler for kernel build
ifdef cross_compiling ifdef cross_compiling
ifeq ($(CROSS_COMPILE),) ifeq ($(CROSS_COMPILE),)
CC_SUFFIXES = linux linux-gnu unknown-linux-gnu suse-linux CC_SUFFIXES = linux linux-gnu unknown-linux-gnu suse-linux
CROSS_COMPILE := $(call cc-cross-prefix, \ CROSS_COMPILE := $(call cc-cross-prefix, \
$(foreach a,$(CC_ARCHES), \ $(foreach a,$(CC_ARCHES), \
$(foreach s,$(CC_SUFFIXES),$(a)-$(s)-))) $(foreach s,$(CC_SUFFIXES),$(a)-$(s)-)))
endif endif
endif endif
ifdef CONFIG_DYNAMIC_FTRACE ifdef CONFIG_DYNAMIC_FTRACE
......
...@@ -115,7 +115,9 @@ archprepare: ...@@ -115,7 +115,9 @@ archprepare:
$(Q)$(MAKE) $(build)=$(HOST_DIR)/um include/generated/user_constants.h $(Q)$(MAKE) $(build)=$(HOST_DIR)/um include/generated/user_constants.h
LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static
LINK-$(CONFIG_LD_SCRIPT_DYN) += $(call cc-option, -no-pie) ifdef CONFIG_LD_SCRIPT_DYN
LINK-$(call gcc-min-version, 60100)$(CONFIG_CC_IS_CLANG) += -no-pie
endif
LINK-$(CONFIG_LD_SCRIPT_DYN_RPATH) += -Wl,-rpath,/lib LINK-$(CONFIG_LD_SCRIPT_DYN_RPATH) += -Wl,-rpath,/lib
CFLAGS_NO_HARDENING := $(call cc-option, -fno-PIC,) $(call cc-option, -fno-pic,) \ CFLAGS_NO_HARDENING := $(call cc-option, -fno-PIC,) $(call cc-option, -fno-pic,) \
......
...@@ -112,13 +112,13 @@ ifeq ($(CONFIG_X86_32),y) ...@@ -112,13 +112,13 @@ ifeq ($(CONFIG_X86_32),y)
# temporary until string.h is fixed # temporary until string.h is fixed
KBUILD_CFLAGS += -ffreestanding KBUILD_CFLAGS += -ffreestanding
ifeq ($(CONFIG_STACKPROTECTOR),y) ifeq ($(CONFIG_STACKPROTECTOR),y)
ifeq ($(CONFIG_SMP),y) ifeq ($(CONFIG_SMP),y)
KBUILD_CFLAGS += -mstack-protector-guard-reg=fs -mstack-protector-guard-symbol=__stack_chk_guard KBUILD_CFLAGS += -mstack-protector-guard-reg=fs -mstack-protector-guard-symbol=__stack_chk_guard
else else
KBUILD_CFLAGS += -mstack-protector-guard=global KBUILD_CFLAGS += -mstack-protector-guard=global
endif endif
endif endif
else else
BITS := 64 BITS := 64
UTS_MACHINE := x86_64 UTS_MACHINE := x86_64
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
# Input config fragments without '.config' suffix # Input config fragments without '.config' suffix
define merge_into_defconfig define merge_into_defconfig
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \
-m -O $(objtree) $(srctree)/arch/$(ARCH)/configs/$(1) \ -m -O $(objtree) $(srctree)/arch/$(SRCARCH)/configs/$(1) \
$(foreach config,$(2),$(srctree)/arch/$(ARCH)/configs/$(config).config) $(foreach config,$(2),$(srctree)/arch/$(SRCARCH)/configs/$(config).config)
+$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig
endef endef
...@@ -23,7 +23,7 @@ endef ...@@ -23,7 +23,7 @@ endef
# Input config fragments without '.config' suffix # Input config fragments without '.config' suffix
define merge_into_defconfig_override define merge_into_defconfig_override
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \
-Q -m -O $(objtree) $(srctree)/arch/$(ARCH)/configs/$(1) \ -Q -m -O $(objtree) $(srctree)/arch/$(SRCARCH)/configs/$(1) \
$(foreach config,$(2),$(srctree)/arch/$(ARCH)/configs/$(config).config) $(foreach config,$(2),$(srctree)/arch/$(SRCARCH)/configs/$(config).config)
+$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig
endef endef
...@@ -345,6 +345,8 @@ void sym_calc_value(struct symbol *sym) ...@@ -345,6 +345,8 @@ void sym_calc_value(struct symbol *sym)
oldval = sym->curr; oldval = sym->curr;
newval.tri = no;
switch (sym->type) { switch (sym->type) {
case S_INT: case S_INT:
newval.val = "0"; newval.val = "0";
...@@ -357,7 +359,7 @@ void sym_calc_value(struct symbol *sym) ...@@ -357,7 +359,7 @@ void sym_calc_value(struct symbol *sym)
break; break;
case S_BOOLEAN: case S_BOOLEAN:
case S_TRISTATE: case S_TRISTATE:
newval = symbol_no.curr; newval.val = "n";
break; break;
default: default:
sym->curr.val = sym->name; sym->curr.val = sym->name;
......
...@@ -70,9 +70,7 @@ void modpost_log(enum loglevel loglevel, const char *fmt, ...) ...@@ -70,9 +70,7 @@ void modpost_log(enum loglevel loglevel, const char *fmt, ...)
break; break;
case LOG_ERROR: case LOG_ERROR:
fprintf(stderr, "ERROR: "); fprintf(stderr, "ERROR: ");
break; error_occurred = true;
case LOG_FATAL:
fprintf(stderr, "FATAL: ");
break; break;
default: /* invalid loglevel, ignore */ default: /* invalid loglevel, ignore */
break; break;
...@@ -83,16 +81,8 @@ void modpost_log(enum loglevel loglevel, const char *fmt, ...) ...@@ -83,16 +81,8 @@ void modpost_log(enum loglevel loglevel, const char *fmt, ...)
va_start(arglist, fmt); va_start(arglist, fmt);
vfprintf(stderr, fmt, arglist); vfprintf(stderr, fmt, arglist);
va_end(arglist); va_end(arglist);
if (loglevel == LOG_FATAL)
exit(1);
if (loglevel == LOG_ERROR)
error_occurred = true;
} }
void __attribute__((alias("modpost_log")))
modpost_log_noret(enum loglevel loglevel, const char *fmt, ...);
static inline bool strends(const char *str, const char *postfix) static inline bool strends(const char *str, const char *postfix)
{ {
if (strlen(str) < strlen(postfix)) if (strlen(str) < strlen(postfix))
...@@ -806,7 +796,8 @@ static void check_section(const char *modname, struct elf_info *elf, ...@@ -806,7 +796,8 @@ static void check_section(const char *modname, struct elf_info *elf,
#define DATA_SECTIONS ".data", ".data.rel" #define DATA_SECTIONS ".data", ".data.rel"
#define TEXT_SECTIONS ".text", ".text.*", ".sched.text", \ #define TEXT_SECTIONS ".text", ".text.*", ".sched.text", \
".kprobes.text", ".cpuidle.text", ".noinstr.text" ".kprobes.text", ".cpuidle.text", ".noinstr.text", \
".ltext", ".ltext.*"
#define OTHER_TEXT_SECTIONS ".ref.text", ".head.text", ".spinlock.text", \ #define OTHER_TEXT_SECTIONS ".ref.text", ".head.text", ".spinlock.text", \
".fixup", ".entry.text", ".exception.text", \ ".fixup", ".entry.text", ".exception.text", \
".coldtext", ".softirqentry.text" ".coldtext", ".softirqentry.text"
......
...@@ -194,15 +194,11 @@ void *sym_get_data(const struct elf_info *info, const Elf_Sym *sym); ...@@ -194,15 +194,11 @@ void *sym_get_data(const struct elf_info *info, const Elf_Sym *sym);
enum loglevel { enum loglevel {
LOG_WARN, LOG_WARN,
LOG_ERROR, LOG_ERROR,
LOG_FATAL
}; };
void __attribute__((format(printf, 2, 3))) void __attribute__((format(printf, 2, 3)))
modpost_log(enum loglevel loglevel, const char *fmt, ...); modpost_log(enum loglevel loglevel, const char *fmt, ...);
void __attribute__((format(printf, 2, 3), noreturn))
modpost_log_noret(enum loglevel loglevel, const char *fmt, ...);
/* /*
* warn - show the given message, then let modpost continue running, still * warn - show the given message, then let modpost continue running, still
* allowing modpost to exit successfully. This should be used when * allowing modpost to exit successfully. This should be used when
...@@ -218,4 +214,4 @@ modpost_log_noret(enum loglevel loglevel, const char *fmt, ...); ...@@ -218,4 +214,4 @@ modpost_log_noret(enum loglevel loglevel, const char *fmt, ...);
*/ */
#define warn(fmt, args...) modpost_log(LOG_WARN, fmt, ##args) #define warn(fmt, args...) modpost_log(LOG_WARN, fmt, ##args)
#define error(fmt, args...) modpost_log(LOG_ERROR, fmt, ##args) #define error(fmt, args...) modpost_log(LOG_ERROR, fmt, ##args)
#define fatal(fmt, args...) modpost_log_noret(LOG_FATAL, fmt, ##args) #define fatal(fmt, args...) do { error(fmt, ##args); exit(1); } while (1)
...@@ -55,12 +55,12 @@ patch -p1 < %{SOURCE2} ...@@ -55,12 +55,12 @@ patch -p1 < %{SOURCE2}
%{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release} %{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release}
%install %install
mkdir -p %{buildroot}/boot mkdir -p %{buildroot}/lib/modules/%{KERNELRELEASE}
cp $(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE} cp $(%{make} %{makeflags} -s image_name) %{buildroot}/lib/modules/%{KERNELRELEASE}/vmlinuz
%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install
%{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE} cp System.map %{buildroot}/lib/modules/%{KERNELRELEASE}
cp .config %{buildroot}/boot/config-%{KERNELRELEASE} cp .config %{buildroot}/lib/modules/%{KERNELRELEASE}/config
ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build
%if %{with_devel} %if %{with_devel}
%{make} %{makeflags} run-command KBUILD_RUN_COMMAND='${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}' %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
...@@ -70,13 +70,14 @@ ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEA ...@@ -70,13 +70,14 @@ ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEA
rm -rf %{buildroot} rm -rf %{buildroot}
%post %post
if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KERNELRELEASE} -a -r /boot/System.map-%{KERNELRELEASE} ]; then if [ -x /usr/bin/kernel-install ]; then
cp /boot/vmlinuz-%{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /usr/bin/kernel-install add %{KERNELRELEASE} /lib/modules/%{KERNELRELEASE}/vmlinuz
cp /boot/System.map-%{KERNELRELEASE} /boot/.System.map-%{KERNELRELEASE}-rpm
rm -f /boot/vmlinuz-%{KERNELRELEASE} /boot/System.map-%{KERNELRELEASE}
/sbin/installkernel %{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
rm -f /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
fi fi
for file in vmlinuz System.map config; do
if ! cmp --silent "/lib/modules/%{KERNELRELEASE}/${file}" "/boot/${file}-%{KERNELRELEASE}"; then
cp "/lib/modules/%{KERNELRELEASE}/${file}" "/boot/${file}-%{KERNELRELEASE}"
fi
done
%preun %preun
if [ -x /sbin/new-kernel-pkg ]; then if [ -x /sbin/new-kernel-pkg ]; then
...@@ -94,7 +95,6 @@ fi ...@@ -94,7 +95,6 @@ fi
%defattr (-, root, root) %defattr (-, root, root)
/lib/modules/%{KERNELRELEASE} /lib/modules/%{KERNELRELEASE}
%exclude /lib/modules/%{KERNELRELEASE}/build %exclude /lib/modules/%{KERNELRELEASE}/build
/boot/*
%files headers %files headers
%defattr (-, root, root) %defattr (-, root, root)
......
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