Le 16/09/2022 à 06:07, Nicholas Piggin a écrit : > Follow the binutils ld internal linker script and merge .got and .toc > input sections in the .got output section. > > Signed-off-by: Nicholas Piggin <npig...@gmail.com> > --- > arch/powerpc/kernel/vmlinux.lds.S | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/arch/powerpc/kernel/vmlinux.lds.S > b/arch/powerpc/kernel/vmlinux.lds.S > index 737825ae2ae0..3d96d51c8a5f 100644 > --- a/arch/powerpc/kernel/vmlinux.lds.S > +++ b/arch/powerpc/kernel/vmlinux.lds.S > @@ -169,13 +169,12 @@ SECTIONS > } > > .got : AT(ADDR(.got) - LOAD_OFFSET) ALIGN(256) { > - *(.got) > + *(.got .toc)
At the begining I was thinking that this change would jeopardise the below, but in fact the #ifdef below is pointless, because prom_init.o is built only when CONFIG_PPC_OF_BOOT_TRAMPOLINE is selected but CONFIG_PPC_OF_BOOT_TRAMPOLINE selects CONFIG_RELOCATABLE So all __prom_init_toc_ stuff can go away : arch/powerpc/include/asm/sections.h:extern char __prom_init_toc_start[]; arch/powerpc/include/asm/sections.h:extern char __prom_init_toc_end[]; arch/powerpc/kernel/prom_init_check.sh:__prom_init_toc_start __prom_init_toc_end btext_setup_display TOC. arch/powerpc/kernel/vmlinux.lds.S: __prom_init_toc_start = .; arch/powerpc/kernel/vmlinux.lds.S: __prom_init_toc_end = .; > #ifndef CONFIG_RELOCATABLE > __prom_init_toc_start = .; > arch/powerpc/kernel/prom_init.o*(.toc) > __prom_init_toc_end = .; > #endif > - *(.toc) > } > > SOFT_MASK_TABLE(8)