Re: [PATCH 0/3] Relocate GOT before calling EFI stub

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 07, 2020 at 08:03:18PM +0100, Ard Biesheuvel wrote:
> On Tue, 7 Jan 2020 at 19:32, Arvind Sankar <nivedita@xxxxxxxxxxxx> wrote:
> >
> > On Tue, Jan 07, 2020 at 07:10:34PM +0100, Ard Biesheuvel wrote:
> > > On Tue, 7 Jan 2020 at 19:08, Arvind Sankar <nivedita@xxxxxxxxxxxx> wrote:
> > > >
> > > > On Tue, Jan 07, 2020 at 06:59:57PM +0100, Ard Biesheuvel wrote:
> > > > > On Tue, 7 Jan 2020 at 18:58, Arvind Sankar <nivedita@xxxxxxxxxxxx> wrote:
> > > > > >
> > > > > > On Tue, Jan 07, 2020 at 03:28:31PM +0100, Ard Biesheuvel wrote:
> > > > > > >
> > > > > > > Unfortunately, the command line option implements a weaker form of
> > > > > > > visibility than the pragma, so it probably comes down to setting the
> > > > > > > pragma in a .h file that gets -include'd via the command line so it is
> > > > > > > guaranteed to be seen first.
> > > > > >
> > > > > > Tried hacking that in and it works, tested with gcc 4.6.4.
> > > > >
> > > > > Excellent. But in my testing locally, I don't get any GOT entries in
> > > > > the first place, strangely enough. So what changes in the output for
> > > > > you with visibility hidden compared to before?
> > > >
> > > > Works with 32-bit as well.
> > > >
> > > > Are you checking libstub or boot/compressed? Below is with gcc 4.6 (but
> > > > latest binutils). With gcc 9, there's only one left -- trampoline_32bit_src
> > > > in pgtable_64.
> > > >
> > >
> > > I am looking at the size of the .got section in
> > > boot/compressed/vmlinux, and it is 0x0 on 64-bit, and 0xc (i.e., only
> > > the .got.plt fixup code) on 32-bit.
> > >
> > > Could you please check whether passing -Bsymbolic to the linker gives
> > > the same result btw?
> > >
> >
> > With new ld all those GOTPCRELX's get eliminated. If you add --no-relax
> > you'll get them in the .got. I don't have an old version of binutils so
> > I can't check, but I think they will be assembled as GOTPCREL and remain
> > in the .got section after linking.
> >
> 
> Right, unless you use hidden visibility, no?
> 

Right, that's what I said works before -- with hidden visibility the
compiler (even an old one) does not generate any GOT-using relocations.
We're trying to debug why you don't see any .got entries even before
turning on hidden visibility, while I do, no?

> > A linker option can't help I'd think, because once these relocations are
> > there in the object files, you need the new binutils to get rid of them.
> > I didn't get any difference with -Bsymbolic -- also that seems to be for
> > shared libraries, with executables the references should already be
> > bound within the executable, shared libraries can't override them.
> 
> PIE and .so support share a *lot* of code in binutils. In the arm64
> kernel, we use Bsymbolic to get rid of a few absolute symbol
> references, even though the -pie linker option should take care of
> that, but it doesn't in all cases.



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux