https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115937
--- Comment #8 from Ellery <ellery1016 at 163 dot com> --- (In reply to Andrew Pinski from comment #7) > Can you attach the file ./arch/arm64/kernel/module.lds ? Thanks a lot. It turns out that my scripts/module-common.lds and arch/arm64/kernel/module.lds both define a plt, I remove plt defination from scripts/module-common.lds and now messages not show again. Still I'm curious why things goes differently in gcc 7.3.0.According to the result of readelf, two plt are merged into one(for the section size is 2, while each plt keeps 1 actually) so there is no duplicate plt in section header. Can I get an answer for this? My scripts/module-common.lds: ``` /* * Common module linker script, always used when linking a module. * Archs are free to supply their own linker scripts. ld will * combine them automatically. */ SECTIONS { /DISCARD/ : { *(.discard) *(.discard.*) } __ksymtab 0 : { *(SORT(___ksymtab+*)) } __ksymtab_gpl 0 : { *(SORT(___ksymtab_gpl+*)) } __ksymtab_unused 0 : { *(SORT(___ksymtab_unused+*)) } __ksymtab_unused_gpl 0 : { *(SORT(___ksymtab_unused_gpl+*)) } __ksymtab_gpl_future 0 : { *(SORT(___ksymtab_gpl_future+*)) } __kcrctab 0 : { *(SORT(___kcrctab+*)) } __kcrctab_gpl 0 : { *(SORT(___kcrctab_gpl+*)) } __kcrctab_unused 0 : { *(SORT(___kcrctab_unused+*)) } __kcrctab_unused_gpl 0 : { *(SORT(___kcrctab_unused_gpl+*)) } __kcrctab_gpl_future 0 : { *(SORT(___kcrctab_gpl_future+*)) } .init_array 0 : ALIGN(8) { *(SORT(.init_array.*)) *(.init_array) } __jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) } } SECTIONS { . = ALIGN(4); .plt : { BYTE(0) } .plt.idx : { BYTE(0) } } ``` My arch/arm64/kernel/module.lds: ``` SECTIONS { .plt (NOLOAD) : { BYTE(0) } .init.plt (NOLOAD) : { BYTE(0) } .text.ftrace_trampoline (NOLOAD) : { BYTE(0) } } ```