On Mon, 13 Apr 2020 07:59:29 +0100 (BST)
"Maciej W. Rozycki" <macro@xxxxxxxxxxxxxx> wrote:
On Mon, 13 Apr 2020, Jiaxun Yang wrote:
> LLD failed to link vmlinux with 64bit load address for 32bit ELF
> while bfd will strip 64bit address into 32bit silently.
> To fix LLD build, we should truncate load address provided by
> platform into 32bit for 32bit kernel.
Reviewed-by: Maciej W. Rozycki <macro@xxxxxxxxxxxxxx>
> diff --git a/arch/mips/kernel/vmlinux.lds.S
> b/arch/mips/kernel/vmlinux.lds.S index a5f00ec73ea6..5226cd8e4bee
> 100644 --- a/arch/mips/kernel/vmlinux.lds.S
> +++ b/arch/mips/kernel/vmlinux.lds.S
> @@ -55,7 +55,7 @@ SECTIONS
> /* . = 0xa800000000300000; */
> . = 0xffffffff80300000;
> #endif
> - . = VMLINUX_LOAD_ADDRESS;
> + . = VMLINUX_LINK_ADDRESS;
The CONFIG_BOOT_ELF64 cruft right above it looks interesting to me,
never have ever been used. We have had the current arrangement since:
It confused me either.
It's only used by SGI so probably it's time to rename it as
BOOT_SEG_ELF64.
Wish someone could clarify what is it.
Thanks.
commit 923ec3d20eef9e36456868b590873ce39f17fe71
Author: Ralf Baechle <ralf@xxxxxxxxxxxxxx>
Date: Wed Nov 6 22:16:38 2002 +0000
Define load address in linker script instead of relying on the
deprecated and notoriously unreliable option -Ttext.
and previously `-Ttext' was used with this script anyway, though not
very long, as the script was entirely ignored until:
commit 7a782968041ffc4c2d89816238e2f8ea5cceddba
Author: Ralf Baechle <ralf@xxxxxxxxxxxxxx>
Date: Thu Oct 31 23:54:21 2002 +0000
Merge with Linux 2.5.36.
Maciej
--
Jiaxun Yang