Message ID | 20191011000609.29728-12-keescook@chromium.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | vmlinux.lds.h: Refactor EXCEPTION_TABLE and NOTES | expand |
Hi Kees, On Fri, Oct 11, 2019 at 2:07 AM Kees Cook <keescook@chromium.org> wrote: > There's no reason to keep the RODATA macro: replace the callers with > the expected RO_DATA macro. > > Signed-off-by: Kees Cook <keescook@chromium.org> > --- > arch/alpha/kernel/vmlinux.lds.S | 2 +- > arch/ia64/kernel/vmlinux.lds.S | 2 +- > arch/microblaze/kernel/vmlinux.lds.S | 2 +- > arch/mips/kernel/vmlinux.lds.S | 2 +- > arch/um/include/asm/common.lds.S | 2 +- > arch/xtensa/kernel/vmlinux.lds.S | 2 +- > include/asm-generic/vmlinux.lds.h | 4 +--- > 7 files changed, 7 insertions(+), 9 deletions(-) Somehow you missed: arch/m68k/kernel/vmlinux-std.lds: RODATA arch/m68k/kernel/vmlinux-sun3.lds: RODATA Leading to build failures in next-20191111: /opt/cross/kisskb/gcc-4.6.3-nolibc/m68k-linux/bin/m68k-linux-ld:./arch/m68k/kernel/vmlinux.lds:29: syntax error make[1]: *** [/kisskb/src/Makefile:1075: vmlinux] Error 1 Reported-by: noreply@ellerman.id.au http://kisskb.ellerman.id.au/kisskb/buildresult/14022846/ Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
On Mon, Nov 11, 2019 at 05:58:06PM +0100, Geert Uytterhoeven wrote: > Hi Kees, > > On Fri, Oct 11, 2019 at 2:07 AM Kees Cook <keescook@chromium.org> wrote: > > There's no reason to keep the RODATA macro: replace the callers with > > the expected RO_DATA macro. > > > > Signed-off-by: Kees Cook <keescook@chromium.org> > > --- > > arch/alpha/kernel/vmlinux.lds.S | 2 +- > > arch/ia64/kernel/vmlinux.lds.S | 2 +- > > arch/microblaze/kernel/vmlinux.lds.S | 2 +- > > arch/mips/kernel/vmlinux.lds.S | 2 +- > > arch/um/include/asm/common.lds.S | 2 +- > > arch/xtensa/kernel/vmlinux.lds.S | 2 +- > > include/asm-generic/vmlinux.lds.h | 4 +--- > > 7 files changed, 7 insertions(+), 9 deletions(-) > > Somehow you missed: > > arch/m68k/kernel/vmlinux-std.lds: RODATA > arch/m68k/kernel/vmlinux-sun3.lds: RODATA Argh. I've sent a patch; sorry and thanks for catching this. For my own cross-build testing, which defconfig targets will hit these two linker scripts? -Kees > > Leading to build failures in next-20191111: > > /opt/cross/kisskb/gcc-4.6.3-nolibc/m68k-linux/bin/m68k-linux-ld:./arch/m68k/kernel/vmlinux.lds:29: > syntax error > make[1]: *** [/kisskb/src/Makefile:1075: vmlinux] Error 1 > > Reported-by: noreply@ellerman.id.au > http://kisskb.ellerman.id.au/kisskb/buildresult/14022846/ > > Gr{oetje,eeting}s, > > Geert > > > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org > > In personal conversations with technical people, I call myself a hacker. But > when I'm talking to journalists I just say "programmer" or something like that. > -- Linus Torvalds
Hi Kees, On Mon, Nov 11, 2019 at 6:23 PM Kees Cook <keescook@chromium.org> wrote: > On Mon, Nov 11, 2019 at 05:58:06PM +0100, Geert Uytterhoeven wrote: > > On Fri, Oct 11, 2019 at 2:07 AM Kees Cook <keescook@chromium.org> wrote: > > > There's no reason to keep the RODATA macro: replace the callers with > > > the expected RO_DATA macro. > > > > > > Signed-off-by: Kees Cook <keescook@chromium.org> > > > --- > > > arch/alpha/kernel/vmlinux.lds.S | 2 +- > > > arch/ia64/kernel/vmlinux.lds.S | 2 +- > > > arch/microblaze/kernel/vmlinux.lds.S | 2 +- > > > arch/mips/kernel/vmlinux.lds.S | 2 +- > > > arch/um/include/asm/common.lds.S | 2 +- > > > arch/xtensa/kernel/vmlinux.lds.S | 2 +- > > > include/asm-generic/vmlinux.lds.h | 4 +--- > > > 7 files changed, 7 insertions(+), 9 deletions(-) > > > > Somehow you missed: > > > > arch/m68k/kernel/vmlinux-std.lds: RODATA > > arch/m68k/kernel/vmlinux-sun3.lds: RODATA > > Argh. I've sent a patch; sorry and thanks for catching this. For my own > cross-build testing, which defconfig targets will hit these two linker > scripts? vmlinux-sun3.lds: sun3_defconfig vmlinux-std.lds: All other classic 680x0 targets with an MMU, e.g. plain defconfig aka multi_defconfig. > > Leading to build failures in next-20191111: > > > > /opt/cross/kisskb/gcc-4.6.3-nolibc/m68k-linux/bin/m68k-linux-ld:./arch/m68k/kernel/vmlinux.lds:29: > > syntax error > > make[1]: *** [/kisskb/src/Makefile:1075: vmlinux] Error 1 > > > > Reported-by: noreply@ellerman.id.au > > http://kisskb.ellerman.id.au/kisskb/buildresult/14022846/ Gr{oetje,eeting}s, Geert
On Mon, Nov 11, 2019 at 07:08:51PM +0100, Geert Uytterhoeven wrote: > vmlinux-std.lds: All other classic 680x0 targets with an MMU, e.g. plain > defconfig aka multi_defconfig. FWIW, the defconfig doesn't build with the cross compiler¹ here, even with Kees' patch applied but for a different reason: $ make.cross ARCH=m68k defconfig ... $make.cross ARCH=m68k 2>w.log ... drivers/video/fbdev/c2p_planar.o: In function `transp8': c2p_planar.c:(.text+0x13a): undefined reference to `c2p_unsupported' c2p_planar.c:(.text+0x1de): undefined reference to `c2p_unsupported' drivers/video/fbdev/c2p_iplan2.o: In function `transp4x.constprop.0': c2p_iplan2.c:(.text+0x98): undefined reference to `c2p_unsupported' make: *** [Makefile:1094: vmlinux] Error 1 ¹ https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.1.0/
Hi Borislav, On Tue, Nov 12, 2019 at 10:08 AM Borislav Petkov <bp@alien8.de> wrote: > On Mon, Nov 11, 2019 at 07:08:51PM +0100, Geert Uytterhoeven wrote: > > vmlinux-std.lds: All other classic 680x0 targets with an MMU, e.g. plain > > defconfig aka multi_defconfig. > > FWIW, the defconfig doesn't build with the cross compiler¹ here, even with Kees' > patch applied but for a different reason: > > $ make.cross ARCH=m68k defconfig > ... > > $make.cross ARCH=m68k 2>w.log > ... > drivers/video/fbdev/c2p_planar.o: In function `transp8': > c2p_planar.c:(.text+0x13a): undefined reference to `c2p_unsupported' > c2p_planar.c:(.text+0x1de): undefined reference to `c2p_unsupported' > drivers/video/fbdev/c2p_iplan2.o: In function `transp4x.constprop.0': > c2p_iplan2.c:(.text+0x98): undefined reference to `c2p_unsupported' > make: *** [Makefile:1094: vmlinux] Error 1 The fix for that regression (finally) made it in rc7: b330f3972f4f2a82 ("fbdev: c2p: Fix link failure on non-inlining"). Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
On Mon, Nov 11, 2019 at 07:08:51PM +0100, Geert Uytterhoeven wrote: > Hi Kees, > > On Mon, Nov 11, 2019 at 6:23 PM Kees Cook <keescook@chromium.org> wrote: > > On Mon, Nov 11, 2019 at 05:58:06PM +0100, Geert Uytterhoeven wrote: > > > On Fri, Oct 11, 2019 at 2:07 AM Kees Cook <keescook@chromium.org> wrote: > > > > There's no reason to keep the RODATA macro: replace the callers with > > > > the expected RO_DATA macro. > > > > > > > > Signed-off-by: Kees Cook <keescook@chromium.org> > > > > --- > > > > arch/alpha/kernel/vmlinux.lds.S | 2 +- > > > > arch/ia64/kernel/vmlinux.lds.S | 2 +- > > > > arch/microblaze/kernel/vmlinux.lds.S | 2 +- > > > > arch/mips/kernel/vmlinux.lds.S | 2 +- > > > > arch/um/include/asm/common.lds.S | 2 +- > > > > arch/xtensa/kernel/vmlinux.lds.S | 2 +- > > > > include/asm-generic/vmlinux.lds.h | 4 +--- > > > > 7 files changed, 7 insertions(+), 9 deletions(-) > > > > > > Somehow you missed: > > > > > > arch/m68k/kernel/vmlinux-std.lds: RODATA > > > arch/m68k/kernel/vmlinux-sun3.lds: RODATA > > > > Argh. I've sent a patch; sorry and thanks for catching this. For my own > > cross-build testing, which defconfig targets will hit these two linker > > scripts? > > vmlinux-sun3.lds: sun3_defconfig > vmlinux-std.lds: All other classic 680x0 targets with an MMU, e.g. plain > defconfig aka multi_defconfig. Excellent, thank you; I've updated my multi-arch build list. :)
diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S index bf28043485f6..af411817dd7d 100644 --- a/arch/alpha/kernel/vmlinux.lds.S +++ b/arch/alpha/kernel/vmlinux.lds.S @@ -34,7 +34,7 @@ SECTIONS swapper_pg_dir = SWAPPER_PGD; _etext = .; /* End of text section */ - RODATA + RO_DATA(4096) EXCEPTION_TABLE(16) /* Will be freed after init */ diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S index fae077595756..11d5115bc44d 100644 --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S @@ -104,7 +104,7 @@ SECTIONS { code_continues2 : { } :text - RODATA + RO_DATA(4096) .opd : AT(ADDR(.opd) - LOAD_OFFSET) { __start_opd = .; diff --git a/arch/microblaze/kernel/vmlinux.lds.S b/arch/microblaze/kernel/vmlinux.lds.S index d008e50bb212..2299694748ea 100644 --- a/arch/microblaze/kernel/vmlinux.lds.S +++ b/arch/microblaze/kernel/vmlinux.lds.S @@ -51,7 +51,7 @@ SECTIONS { } . = ALIGN(16); - RODATA + RO_DATA(4096) EXCEPTION_TABLE(16) /* diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S index 91e566defc16..a5f00ec73ea6 100644 --- a/arch/mips/kernel/vmlinux.lds.S +++ b/arch/mips/kernel/vmlinux.lds.S @@ -82,7 +82,7 @@ SECTIONS } _sdata = .; /* Start of data section */ - RODATA + RO_DATA(4096) /* writeable */ .data : { /* Data */ diff --git a/arch/um/include/asm/common.lds.S b/arch/um/include/asm/common.lds.S index 91aca356095f..7145ce699982 100644 --- a/arch/um/include/asm/common.lds.S +++ b/arch/um/include/asm/common.lds.S @@ -9,7 +9,7 @@ _sdata = .; PROVIDE (sdata = .); - RODATA + RO_DATA(4096) .unprotected : { *(.unprotected) } . = ALIGN(4096); diff --git a/arch/xtensa/kernel/vmlinux.lds.S b/arch/xtensa/kernel/vmlinux.lds.S index a0a843745695..b97e5798b9cf 100644 --- a/arch/xtensa/kernel/vmlinux.lds.S +++ b/arch/xtensa/kernel/vmlinux.lds.S @@ -124,7 +124,7 @@ SECTIONS . = ALIGN(16); - RODATA + RO_DATA(4096) /* Relocation table */ diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index dc3390ec6b60..a0a989fbe411 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -518,9 +518,7 @@ . = ALIGN((align)); \ __end_rodata = .; -/* RODATA & RO_DATA provided for backward compatibility. - * All archs are supposed to use RO_DATA() */ -#define RODATA RO_DATA_SECTION(4096) +/* All archs are supposed to use RO_DATA() */ #define RO_DATA(align) RO_DATA_SECTION(align) /*
There's no reason to keep the RODATA macro: replace the callers with the expected RO_DATA macro. Signed-off-by: Kees Cook <keescook@chromium.org> --- arch/alpha/kernel/vmlinux.lds.S | 2 +- arch/ia64/kernel/vmlinux.lds.S | 2 +- arch/microblaze/kernel/vmlinux.lds.S | 2 +- arch/mips/kernel/vmlinux.lds.S | 2 +- arch/um/include/asm/common.lds.S | 2 +- arch/xtensa/kernel/vmlinux.lds.S | 2 +- include/asm-generic/vmlinux.lds.h | 4 +--- 7 files changed, 7 insertions(+), 9 deletions(-)