[PATCH v3] elf/x86-64: Subtract __ImageBase for R_AMD64_IMAGEBASE

Alan Modra amodra@gmail.com
Mon Mar 1 12:19:26 GMT 2021

On Sat, Feb 27, 2021 at 06:38:24PM -0800, H.J. Lu wrote:
> On Wed, Feb 24, 2021 at 6:09 PM Alan Modra <amodra@gmail.com> wrote:
> >
> > On Tue, Feb 23, 2021 at 09:50:20AM -0800, H.J. Lu via Binutils wrote:
> > >       * reloc.c (bfd_perform_relocation): Add a link_info argument.
> > >       Subtract __ImageBase for R_AMD64_IMAGEBASE.
> >
> > H.J., did you consider moving all of this, including the code you
> > added in git commit 36068e2fa54, to the relevant howto special
> > functions?  None of it really belongs in bfd_perform_relocation.
> The howto special function, coff_amd64_reloc, isn't changed since
> 1. Any changes to coff_amd64_reloc may break Windows x86-64 linker.

I am sure you are capable of making those changes without breaking

> 2. bfd_perform_relocation changes are safe since they are limited to
> generating x86-64 ELF executable from Windows x86-64 relocatable object
> files.

It is the wrong place.  Every time bfd_perform_relocation is called
with a coff input it now needs to test for output to ELF.  If you did
this properly in a howto function then the extra tests would only be
done for x86_64 coff.  Besides the performance impact, nobody
maintaining reloc.c wants to deal with code specially for pe-x86-64
and elf64-x84-64.  The special case for coff there is already
horrible.  It shouldn't be made worse.

Did anyone review your commit 36068e2fa54?

Alan Modra
Australia Development Lab, IBM

More information about the Binutils mailing list