Re: [PATCH] x86/tools/relocs: Add _etext and __end_of_kernel_reserve to S_REL

From: Borislav Petkov
Date: Sat Jan 11 2020 - 08:03:16 EST


On Fri, Jan 10, 2020 at 03:50:29PM -0500, Arvind Sankar wrote:
> On Fri, Jan 10, 2020 at 09:38:28PM +0100, Borislav Petkov wrote:
> > On Fri, Jan 10, 2020 at 03:23:49PM -0500, Arvind Sankar wrote:
> > > Pre-2.23 binutils makes symbols defined outside sections absolute, so
> > > these two symbols break the build on old linkers.
> >
> > -ENOTENOUGHINFO
> >
> > Which old linkers, how exactly do they break the build, etc etc?
> >
> > Please give exact reproduction steps.
> >
> > Thx.
> >
>
> binutils-2.21 and -2.22. An x86-64 defconfig will fail with
> Invalid absolute R_X86_64_32S relocation: _etext
> and after fixing that one, with
> Invalid absolute R_X86_64_32S relocation: __end_of_kernel_reserve

I'm still not clear as to why this happens. I tried reproducing on
openSUSE 12.1 which has

Repository: openSUSE-12.1-Oss
Name: binutils
Version: 2.21.1-12.1.4

and the build there fails with:

objdump: arch/x86/lib/clear_page_64.o: File format not recognized
objdump: arch/x86/lib/cmdline.o: File format not recognized
objdump: arch/x86/lib/cmpxchg16b_emu.o: File format not recognized
objdump: arch/x86/lib/copy_page_64.o: File format not recognized
objdump: arch/x86/lib/copy_user_64.o: File format not recognized
objdump: arch/x86/lib/cpu.o: File format not recognized
...

and objdump is part of binutils.

Now, this looks like another symptom of what you're reporting but what
we're missing is the rootcause about *why* this happens.

Because if the issue is hard to fix or similar, then we probably should
raise the minimum supported binutils version from 2.21 to something
newer and not do this fix.

But before we do that, we need a proper analysis as to why it happens.

Also, what distro are you using to reproduce it on?

Thx.

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette