[lld] r263063 - ELF: Remove non-standard ELF features from AMDGPU target.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 9 13:57:07 PST 2016


Now that the amount of code in LLD to support AMDGPU is amazingly small. It
is just 17 LOC. Can't be simpler than it.

On Wed, Mar 9, 2016 at 1:37 PM, Rafael Espindola via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: rafael
> Date: Wed Mar  9 15:37:22 2016
> New Revision: 263063
>
> URL: http://llvm.org/viewvc/llvm-project?rev=263063&view=rev
> Log:
> ELF: Remove non-standard ELF features from AMDGPU target.
>
> Patch by Tom Stellard!
>
> Modified:
>     lld/trunk/ELF/OutputSections.cpp
>     lld/trunk/ELF/Symbols.cpp
>     lld/trunk/ELF/Writer.cpp
>     lld/trunk/test/ELF/amdgpu-globals.s
>     lld/trunk/test/ELF/amdgpu-kernels.s
>
> Modified: lld/trunk/ELF/OutputSections.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=263063&r1=263062&r2=263063&view=diff
>
> ==============================================================================
> --- lld/trunk/ELF/OutputSections.cpp (original)
> +++ lld/trunk/ELF/OutputSections.cpp Wed Mar  9 15:37:22 2016
> @@ -1463,13 +1463,7 @@ void SymbolTableSection<ELFT>::writeLoca
>          const OutputSectionBase<ELFT> *OutSec = Section->OutSec;
>          ESym->st_shndx = OutSec->SectionIndex;
>          VA = Section->getOffset(*Sym);
> -
> -        // 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();
> +        VA += OutSec->getVA();
>        }
>        ESym->st_name = P.second;
>        ESym->st_size = Sym->st_size;
>
> Modified: lld/trunk/ELF/Symbols.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.cpp?rev=263063&r1=263062&r2=263063&view=diff
>
> ==============================================================================
> --- lld/trunk/ELF/Symbols.cpp (original)
> +++ lld/trunk/ELF/Symbols.cpp Wed Mar  9 15:37:22 2016
> @@ -44,12 +44,6 @@ typename ELFFile<ELFT>::uintX_t SymbolBo
>        return D->Sym.st_value;
>      assert(SC->Live);
>
> -    // 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;
>
> Modified: lld/trunk/ELF/Writer.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=263063&r1=263062&r2=263063&view=diff
>
> ==============================================================================
> --- lld/trunk/ELF/Writer.cpp (original)
> +++ lld/trunk/ELF/Writer.cpp Wed Mar  9 15:37:22 2016
> @@ -1221,18 +1221,6 @@ static uint32_t toPhdrFlags(uint64_t Fla
>    return Ret;
>  }
>
> -/// For AMDGPU we need to use custom segment kinds in order to specify
> which
> -/// address space data should be loaded into.
> -template <class ELFT>
> -static uint32_t getAmdgpuPhdr(OutputSectionBase<ELFT> *Sec) {
> -  uint32_t Flags = Sec->getFlags();
> -  if (Flags & SHF_AMDGPU_HSA_CODE)
> -    return PT_AMDGPU_HSA_LOAD_CODE_AGENT;
> -  if ((Flags & SHF_AMDGPU_HSA_GLOBAL) && !(Flags & SHF_AMDGPU_HSA_AGENT))
> -    return PT_AMDGPU_HSA_LOAD_GLOBAL_PROGRAM;
> -  return PT_LOAD;
> -}
> -
>  // Decide which program headers to create and which sections to include
> in each
>  // one.
>  template <class ELFT> void Writer<ELFT>::createPhdrs() {
> @@ -1281,9 +1269,7 @@ template <class ELFT> void Writer<ELFT>:
>      // If flags changed then we want new load segment.
>      uintX_t NewFlags = toPhdrFlags(Sec->getFlags());
>      if (Flags != NewFlags) {
> -      uint32_t LoadType = (Config->EMachine == EM_AMDGPU) ?
> getAmdgpuPhdr(Sec)
> -                                                          :
> (uint32_t)PT_LOAD;
> -      Load = AddHdr(LoadType, NewFlags);
> +      Load = AddHdr(PT_LOAD, NewFlags);
>        Flags = NewFlags;
>      }
>
>
> Modified: lld/trunk/test/ELF/amdgpu-globals.s
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/amdgpu-globals.s?rev=263063&r1=263062&r2=263063&view=diff
>
> ==============================================================================
> --- lld/trunk/test/ELF/amdgpu-globals.s (original)
> +++ lld/trunk/test/ELF/amdgpu-globals.s Wed Mar  9 15:37:22 2016
> @@ -77,7 +77,7 @@ program_global_readonly:
>
>  # CHECK: Symbol {
>  # CHECK: Name: module_global_agent
> -# CHECK: Value: 0x0
> +# CHECK: Value:
>  # CHECK: Size: 4
>  # CHECK: Binding: Local
>  # CHECK: Section: .hsadata_global_agent
> @@ -85,7 +85,7 @@ program_global_readonly:
>
>  # CHECK: Symbol {
>  # CHECK: Name: module_global_program
> -# CHECK: Value: 0x0
> +# CHECK: Value:
>  # CHECK: Size: 4
>  # CHECK: Binding: Local
>  # CHECK: Section: .hsadata_global_program
> @@ -93,7 +93,7 @@ program_global_readonly:
>
>  # CHECK: Symbol {
>  # CHECK: Name: module_global_readonly
> -# CHECK: Value: 0x0
> +# CHECK: Value:
>  # CHECK: Size: 4
>  # CHECK: Binding: Local
>  # CHECK: Type: Object
> @@ -102,7 +102,7 @@ program_global_readonly:
>
>  # CHECK: Symbol {
>  # CHECK: Name: program_global_agent
> -# CHECK: Value: 0x4
> +# CHECK: Value:
>  # CHECK: Size: 4
>  # CHECK: Binding: Global
>  # CHECK: Type: Object
> @@ -111,7 +111,7 @@ program_global_readonly:
>
>  # CHECK: Symbol {
>  # CHECK: Name: program_global_program
> -# CHECK: Value: 0x4
> +# CHECK: Value:
>  # CHECK: Size: 4
>  # CHECK: Binding: Global
>  # CHECK: Type: Object
> @@ -120,7 +120,7 @@ program_global_readonly:
>
>  # CHECK: Symbol {
>  # CHECK: Name: program_global_readonly
> -# CHECK: Value: 0x4
> +# CHECK: Value:
>  # CHECK: Size: 4
>  # CHECK: Binding: Global
>  # CHECK: Type: Object
> @@ -128,11 +128,11 @@ program_global_readonly:
>  # CHECK: }
>
>  # CHECK: ProgramHeader {
> -# CHECK: Type: PT_AMDGPU_HSA_LOAD_GLOBAL_PROGRAM
> -# CHECK: VirtualAddress: [[HSADATA_GLOBAL_PROGRAM_ADDR]]
> +# CHECK: Type: PT_LOAD
> +# CHECK: VirtualAddress:
>  # CHECK: }
>
>  # CHECK: ProgramHeader {
> -# CHECK: Type: PT_AMDGPU_HSA_LOAD_CODE_AGENT
> -# CHECK: VirtualAddress: [[HSATEXT_ADDR]]
> +# CHECK: Type: PT_LOAD
> +# CHECK: VirtualAddress:
>  # CHECK: }
>
> Modified: lld/trunk/test/ELF/amdgpu-kernels.s
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/amdgpu-kernels.s?rev=263063&r1=263062&r2=263063&view=diff
>
> ==============================================================================
> --- lld/trunk/test/ELF/amdgpu-kernels.s (original)
> +++ lld/trunk/test/ELF/amdgpu-kernels.s Wed Mar  9 15:37:22 2016
> @@ -41,7 +41,7 @@ kernel1:
>
>  # CHECK: Symbol {
>  # CHECK: Name: kernel0
> -# CHECK: Value: 0x0
> +# CHECK: Value:
>  # CHECK: Size: 4
>  # CHECK: Binding: Global
>  # CHECK: Type: AMDGPU_HSA_KERNEL
> @@ -50,7 +50,7 @@ kernel1:
>
>  # CHECK: Symbol {
>  # CHECK: Name: kernel1
> -# CHECK: Value: 0x100
> +# CHECK: Value:
>  # CHECK: Size: 8
>  # CHECK: Binding: Global
>  # CHECK: Type: AMDGPU_HSA_KERNEL
> @@ -58,6 +58,6 @@ kernel1:
>  # CHECK: }
>
>  # CHECK: ProgramHeader {
> -# CHECK: Type: PT_AMDGPU_HSA_LOAD_CODE_AGENT
> -# CHECK: VirtualAddress: [[HSATEXT_ADDR]]
> +# CHECK: Type: PT_LOAD
> +# CHECK: VirtualAddress:
>  # CHECK: }
>
>
> _______________________________________________
> 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/20160309/bd258703/attachment.html>


More information about the llvm-commits mailing list