Commit c04022dc authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull Kbuild fixes from Nathan Chancellor:

 - Fix UAPI types check in headers_check.pl

 - Only enable -Werror for hostprogs with CONFIG_WERROR / W=e

 - Ignore fsync() error when output of gen_init_cpio is a pipe

 - Several little build fixes for recent modules.builtin.modinfo series

* tag 'kbuild-fixes-6.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux:
  kbuild: Use '--strip-unneeded-symbol' for removing module device table symbols
  s390/vmlinux.lds.S: Move .vmlinux.info to end of allocatable sections
  kbuild: Add '.rel.*' strip pattern for vmlinux
  kbuild: Restore pattern to avoid stripping .rela.dyn from vmlinux
  gen_init_cpio: Ignore fsync() returning EINVAL on pipes
  scripts/Makefile.extrawarn: Respect CONFIG_WERROR / W=e for hostprogs
  kbuild: uapi: Strip comments before size type check
parents 98906f9d b0f2942a
Loading
Loading
Loading
Loading
+22 −22
Original line number Diff line number Diff line
@@ -214,6 +214,28 @@ SECTIONS
	DWARF_DEBUG
	ELF_DETAILS

	/*
	 * Make sure that the .got.plt is either completely empty or it
	 * contains only the three reserved double words.
	 */
	.got.plt : {
		*(.got.plt)
	}
	ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, "Unexpected GOT/PLT entries detected!")

	/*
	 * Sections that should stay zero sized, which is safer to
	 * explicitly check instead of blindly discarding.
	 */
	.plt : {
		*(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt)
	}
	ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
	.rela.dyn : {
		*(.rela.*) *(.rela_*)
	}
	ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")

	/*
	 * uncompressed image info used by the decompressor
	 * it should match struct vmlinux_info
@@ -244,28 +266,6 @@ SECTIONS
#endif
	} :NONE

	/*
	 * Make sure that the .got.plt is either completely empty or it
	 * contains only the three reserved double words.
	 */
	.got.plt : {
		*(.got.plt)
	}
	ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, "Unexpected GOT/PLT entries detected!")

	/*
	 * Sections that should stay zero sized, which is safer to
	 * explicitly check instead of blindly discarding.
	 */
	.plt : {
		*(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt)
	}
	ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
	.rela.dyn : {
		*(.rela.*) *(.rela_*)
	}
	ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")

	/* Sections to be discarded */
	DISCARDS
	/DISCARD/ : {
+5 −3
Original line number Diff line number Diff line
@@ -223,9 +223,11 @@ KBUILD_USERCFLAGS += -Werror
KBUILD_USERLDFLAGS	+= -Wl,--fatal-warnings
KBUILD_RUSTFLAGS	+= -Dwarnings

endif

# Hostprog flags are used during build bootstrapping and can not rely on CONFIG_ symbols.
# While hostprog flags are used during build bootstrapping (thus should not
# depend on CONFIG_ symbols), -Werror is disruptive and should be opted into.
# Only apply -Werror to hostprogs built after the initial Kconfig stage.
KBUILD_HOSTCFLAGS	+= -Werror
KBUILD_HOSTLDFLAGS	+= -Wl,--fatal-warnings
KBUILD_HOSTRUSTFLAGS	+= -Dwarnings

endif
+5 −2
Original line number Diff line number Diff line
@@ -82,9 +82,12 @@ endif
# ---------------------------------------------------------------------------

remove-section-y                                   := .modinfo
remove-section-$(CONFIG_ARCH_VMLINUX_NEEDS_RELOCS) += '.rel*'
remove-section-$(CONFIG_ARCH_VMLINUX_NEEDS_RELOCS) += '.rel*' '!.rel*.dyn'
# for compatibility with binutils < 2.32
# https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=c12d9fa2afe7abcbe407a00e15719e1a1350c2a7
remove-section-$(CONFIG_ARCH_VMLINUX_NEEDS_RELOCS) += '.rel.*'

remove-symbols := -w --strip-symbol='__mod_device_table__*'
remove-symbols := -w --strip-unneeded-symbol='__mod_device_table__*'

# To avoid warnings: "empty loadable segment detected at ..." from GNU objcopy,
# it is necessary to remove the PT_LOAD flag from the segment.
+4 −1
Original line number Diff line number Diff line
@@ -112,7 +112,10 @@ static int cpio_trailer(void)
	    push_pad(padlen(offset, 512)) < 0)
		return -1;

	return fsync(outfd);
	if (fsync(outfd) < 0 && errno != EINVAL)
		return -1;

	return 0;
}

static int cpio_mkslink(const char *name, const char *target,
+2 −0
Original line number Diff line number Diff line
@@ -155,6 +155,8 @@ sub check_sizetypes
	if (my $included = ($line =~ /^\s*#\s*include\s+[<"](\S+)[>"]/)[0]) {
		check_include_typesh($included);
	}
	# strip single-line comments, as types may be referenced within them
	$line =~ s@/\*.*?\*/@@;
	if ($line =~ m/__[us](8|16|32|64)\b/) {
		printf STDERR "$filename:$lineno: " .
		              "found __[us]{8,16,32,64} type " .