Re: [PATCH v4] MIPS: Truncate link address into 32bit for 32bit kernel

From: Jiaxun Yang
Date: Mon Apr 13 2020 - 03:32:22 EST


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