Skip to content

Commit c04022d

Browse files
committed
Merge tag 'kbuild-fixes-6.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux
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
2 parents 98906f9 + b0f2942 commit c04022d

File tree

5 files changed

+38
-28
lines changed

5 files changed

+38
-28
lines changed

arch/s390/kernel/vmlinux.lds.S

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,28 @@ SECTIONS
214214
DWARF_DEBUG
215215
ELF_DETAILS
216216

217+
/*
218+
* Make sure that the .got.plt is either completely empty or it
219+
* contains only the three reserved double words.
220+
*/
221+
.got.plt : {
222+
*(.got.plt)
223+
}
224+
ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, "Unexpected GOT/PLT entries detected!")
225+
226+
/*
227+
* Sections that should stay zero sized, which is safer to
228+
* explicitly check instead of blindly discarding.
229+
*/
230+
.plt : {
231+
*(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt)
232+
}
233+
ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
234+
.rela.dyn : {
235+
*(.rela.*) *(.rela_*)
236+
}
237+
ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
238+
217239
/*
218240
* uncompressed image info used by the decompressor
219241
* it should match struct vmlinux_info
@@ -244,28 +266,6 @@ SECTIONS
244266
#endif
245267
} :NONE
246268

247-
/*
248-
* Make sure that the .got.plt is either completely empty or it
249-
* contains only the three reserved double words.
250-
*/
251-
.got.plt : {
252-
*(.got.plt)
253-
}
254-
ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, "Unexpected GOT/PLT entries detected!")
255-
256-
/*
257-
* Sections that should stay zero sized, which is safer to
258-
* explicitly check instead of blindly discarding.
259-
*/
260-
.plt : {
261-
*(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt)
262-
}
263-
ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
264-
.rela.dyn : {
265-
*(.rela.*) *(.rela_*)
266-
}
267-
ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
268-
269269
/* Sections to be discarded */
270270
DISCARDS
271271
/DISCARD/ : {

scripts/Makefile.extrawarn

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,11 @@ KBUILD_USERCFLAGS += -Werror
223223
KBUILD_USERLDFLAGS += -Wl,--fatal-warnings
224224
KBUILD_RUSTFLAGS += -Dwarnings
225225

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

scripts/Makefile.vmlinux

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,12 @@ endif
8282
# ---------------------------------------------------------------------------
8383

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

87-
remove-symbols := -w --strip-symbol='__mod_device_table__*'
90+
remove-symbols := -w --strip-unneeded-symbol='__mod_device_table__*'
8891

8992
# To avoid warnings: "empty loadable segment detected at ..." from GNU objcopy,
9093
# it is necessary to remove the PT_LOAD flag from the segment.

usr/gen_init_cpio.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,10 @@ static int cpio_trailer(void)
112112
push_pad(padlen(offset, 512)) < 0)
113113
return -1;
114114

115-
return fsync(outfd);
115+
if (fsync(outfd) < 0 && errno != EINVAL)
116+
return -1;
117+
118+
return 0;
116119
}
117120

118121
static int cpio_mkslink(const char *name, const char *target,

usr/include/headers_check.pl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,8 @@ sub check_sizetypes
155155
if (my $included = ($line =~ /^\s*#\s*include\s+[<"](\S+)[>"]/)[0]) {
156156
check_include_typesh($included);
157157
}
158+
# strip single-line comments, as types may be referenced within them
159+
$line =~ s@/\*.*?\*/@@;
158160
if ($line =~ m/__[us](8|16|32|64)\b/) {
159161
printf STDERR "$filename:$lineno: " .
160162
"found __[us]{8,16,32,64} type " .

0 commit comments

Comments
 (0)