[lld] r262026 - Add comment on AMDGPU that the difference has no obvious reason.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 26 10:42:17 PST 2016


I don't know what the intention there, but at least the current output for
AMDGPU has a program header, which you can't get with -r. So, does that
work?

On Fri, Feb 26, 2016 at 10:40 AM, Rafael EspĂ­ndola <
rafael.espindola at gmail.com> wrote:

> Hi Tom,
>
> As mentioned before, according to the ELF spec executable and shared
> object files *must* use virtual addresses, not offsets. This is simply
> not valid ELF and a very slippery slope I would much prefer lld and
> llvm to not be on. This has the potential of hitting far more places
> than the IsMips64EL issue.
>
> We are now adding support for -r, where it is correct (required) to
> use offsets. Could you please delete this code and just require that
> -r be used with the AMDGPU target?
>
> Cheers,
> Rafael
>
>
>
> On 26 February 2016 at 10:39, Rui Ueyama via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
> > Author: ruiu
> > Date: Fri Feb 26 09:39:26 2016
> > New Revision: 262026
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=262026&view=rev
> > Log:
> > Add comment on AMDGPU that the difference has no obvious reason.
> >
> > Modified:
> >     lld/trunk/ELF/OutputSections.cpp
> >     lld/trunk/ELF/Symbols.cpp
> >
> > Modified: lld/trunk/ELF/OutputSections.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=262026&r1=262025&r2=262026&view=diff
> >
> ==============================================================================
> > --- lld/trunk/ELF/OutputSections.cpp (original)
> > +++ lld/trunk/ELF/OutputSections.cpp Fri Feb 26 09:39:26 2016
> > @@ -1456,8 +1456,11 @@ void SymbolTableSection<ELFT>::writeLoca
> >          const OutputSectionBase<ELFT> *OutSec = Section->OutSec;
> >          ESym->st_shndx = OutSec->SectionIndex;
> >          VA = Section->getOffset(*Sym);
> > -        // Symbol offsets for AMDGPU need to be the offset in bytes of
> the
> > -        // symbol from the beginning of the section.
> > +
> > +        // Symbol offsets for AMDGPU are the offsets in bytes of the
> > +        // symbols from the beginning of the section. There seems to be
> no
> > +        // reason for that deviation -- it's just that the definition of
> > +        // st_value field in AMDGPU's ELF is odd.
> >          if (Config->EMachine != EM_AMDGPU)
> >            VA += OutSec->getVA();
> >        }
> >
> > Modified: lld/trunk/ELF/Symbols.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.cpp?rev=262026&r1=262025&r2=262026&view=diff
> >
> ==============================================================================
> > --- lld/trunk/ELF/Symbols.cpp (original)
> > +++ lld/trunk/ELF/Symbols.cpp Fri Feb 26 09:39:26 2016
> > @@ -44,10 +44,12 @@ typename ELFFile<ELFT>::uintX_t SymbolBo
> >        return D->Sym.st_value;
> >      assert(SC->Live);
> >
> > -    // Symbol offsets for AMDGPU need to be the offset in bytes of the
> symbol
> > -    // from the beginning of the section.
> > +    // Symbol offsets for AMDGPU are the offsets in bytes of the symbols
> > +    // from the beginning of the section. Note that this part of
> AMDGPU's
> > +    // ELF spec is odd and not in line with the standard ELF.
> >      if (Config->EMachine == EM_AMDGPU)
> >        return SC->getOffset(D->Sym);
> > +
> >      if (D->Sym.getType() == STT_TLS)
> >        return SC->OutSec->getVA() + SC->getOffset(D->Sym) -
> >               Out<ELFT>::TlsPhdr->p_vaddr;
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160226/64a3a167/attachment.html>


More information about the llvm-commits mailing list