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

Sean Silva via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 26 11:49:49 PST 2016


On Fri, Feb 26, 2016 at 10:42 AM, Rui Ueyama via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> I don't know what the intention there,
>

I think this is the most important thing: we need to understand what they
are trying to model.

We can probably model this within ELF by just putting each section inside a
PT_LOAD (or whatever getAmdgpuPhdr returns) with vaddr of 0.

-- Sean Silva


> 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
>>
>
>
> _______________________________________________
> 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/1d7f6fa6/attachment.html>


More information about the llvm-commits mailing list