Hi Greg, CC mingo, Hiramatsu-san, linux-arch, lkml On Tue, Nov 14, 2017 at 7:04 AM, Greg Ungerer <gerg@xxxxxxxxxxxxxx> wrote: > Commit be7635e7287e ("arch, ftrace: for KASAN put hard/soft IRQ entries > into separate sections") added a new linker section, SOFTIRQENTRY_TEXT, > to the linker scripts for most architectures. It didn't add it to any of > the linker scripts for the m68k architecture. This was not really a problem > because it is only defined if either of CONFIG_FUNCTION_GRAPH_TRACER or > CONFIG_KASAN are enabled - which can never be true for m68k. > > However commit 229a71860547 ("irq: Make the irqentry text section > unconditional") means that SOFTIRQENTRY_TEXT is now always defined. So on > m68k we now end up with a separate ELF section for .softirqentry.text > instead of it being part of the .text section. On some m68k targets in some Nice catch! +10 other architectures also don't have the section. > configurations this can also cause a fatal link error: > > LD vmlinux > /usr/local/bin/../m68k-uclinux/bin/ld.real: section .softirqentry.text loaded at [0000000010de10c0,0000000010de12dd] overlaps section .rodata loaded at [0000000010de10c0,0000000010e0fd67] How does it cause the overlap? For me, "readelf -S vmlinux" gives: There are 21 section headers, starting at offset 0x524850: Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .text PROGBITS 00001000 001000 2dacb4 00 AX 0 0 4 [ 2] .softirqentry.tex PROGBITS 002dbcb4 2dbcb4 0001a0 00 AX 0 0 2 [ 3] __ex_table PROGBITS 002dbe60 2dbe60 0027f0 00 A 0 0 4 [ 4] .rodata PROGBITS 002df000 2df000 09ee20 00 WA 0 0 16 [ 5] __ksymtab PROGBITS 0037de20 37de20 006538 00 A 0 0 2 [ 6] __ksymtab_gpl PROGBITS 00384358 384358 003f08 00 A 0 0 2 [ 7] __ksymtab_strings PROGBITS 00388260 388260 01747d 00 A 0 0 1 [ 8] __param PROGBITS 0039f6e0 39f6e0 000924 00 A 0 0 4 [ 9] __modver PROGBITS 003a0004 3a0004 000ffc 00 A 0 0 2 [10] .data PROGBITS 003a1000 3a1000 021c20 00 WA 0 0 32 [11] .bss NOBITS 003c2c20 3c2c20 02b2fc 00 WA 0 0 16 [12] .init.text PROGBITS 003ee000 3c4000 01a4b2 00 AX 0 0 4 [13] .init.data PROGBITS 004084b4 3de4b4 008180 00 WA 0 0 4 [14] .m68k_fixup PROGBITS 00410634 3e6634 001140 00 WA 0 0 1 [15] .notes NOTE 00411774 3e7774 000024 00 A 0 0 4 [16] .init_end NOBITS 00411798 3e7798 000868 00 WA 0 0 1 [17] .comment PROGBITS 00000000 3e7798 000039 01 MS 0 0 1 [18] .shstrtab STRTAB 00000000 524791 0000bd 00 0 0 1 [19] .symtab SYMTAB 00000000 3e77d4 0a66e0 10 20 32238 4 [20] .strtab STRTAB 00000000 48deb4 0968dd 00 0 0 1 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings) I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific) > To fix add in the missing SOFTIRQENTRY_TEXT section into the m68k linker > scripts. I noticed that m68k is also missing the IRQENTRY_TEXT section, > so this patch also adds an entry for that too. > > Signed-off-by: Greg Ungerer <gerg@xxxxxxxxxxxxxx> > --- > arch/m68k/kernel/vmlinux-nommu.lds | 2 ++ > arch/m68k/kernel/vmlinux-std.lds | 2 ++ > arch/m68k/kernel/vmlinux-sun3.lds | 2 ++ > 3 files changed, 6 insertions(+) > > diff --git a/arch/m68k/kernel/vmlinux-nommu.lds b/arch/m68k/kernel/vmlinux-nommu.lds > index 3aa571a..cf6edda 100644 > --- a/arch/m68k/kernel/vmlinux-nommu.lds > +++ b/arch/m68k/kernel/vmlinux-nommu.lds > @@ -45,6 +45,8 @@ SECTIONS { > .text : { > HEAD_TEXT > TEXT_TEXT > + IRQENTRY_TEXT > + SOFTIRQENTRY_TEXT > SCHED_TEXT > CPUIDLE_TEXT > LOCK_TEXT > diff --git a/arch/m68k/kernel/vmlinux-std.lds b/arch/m68k/kernel/vmlinux-std.lds > index 89172b8..625a578 100644 > --- a/arch/m68k/kernel/vmlinux-std.lds > +++ b/arch/m68k/kernel/vmlinux-std.lds > @@ -16,6 +16,8 @@ SECTIONS > .text : { > HEAD_TEXT > TEXT_TEXT > + IRQENTRY_TEXT > + SOFTIRQENTRY_TEXT > SCHED_TEXT > CPUIDLE_TEXT > LOCK_TEXT > diff --git a/arch/m68k/kernel/vmlinux-sun3.lds b/arch/m68k/kernel/vmlinux-sun3.lds > index 293990e..9868270 100644 > --- a/arch/m68k/kernel/vmlinux-sun3.lds > +++ b/arch/m68k/kernel/vmlinux-sun3.lds > @@ -16,6 +16,8 @@ SECTIONS > .text : { > HEAD_TEXT > TEXT_TEXT > + IRQENTRY_TEXT > + SOFTIRQENTRY_TEXT > SCHED_TEXT > CPUIDLE_TEXT > LOCK_TEXT Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx 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