Index: llvm/trunk/include/llvm/Object/ELFObjectFile.h =================================================================== --- llvm/trunk/include/llvm/Object/ELFObjectFile.h +++ llvm/trunk/include/llvm/Object/ELFObjectFile.h @@ -846,6 +846,8 @@ return "ELF32-sparc"; case ELF::EM_WEBASSEMBLY: return "ELF32-wasm"; + case ELF::EM_AMDGPU: + return "ELF32-amdgpu"; default: return "ELF32-unknown"; } @@ -867,6 +869,10 @@ return "ELF64-mips"; case ELF::EM_WEBASSEMBLY: return "ELF64-wasm"; + case ELF::EM_AMDGPU: + return (EF.getHeader()->e_ident[ELF::EI_OSABI] == ELF::ELFOSABI_AMDGPU_HSA + && IsLittleEndian) ? + "ELF64-amdgpu-hsacobj" : "ELF64-amdgpu"; default: return "ELF64-unknown"; } @@ -923,6 +929,12 @@ default: return Triple::UnknownArch; } + case ELF::EM_AMDGPU: + return (EF.getHeader()->e_ident[ELF::EI_CLASS] == ELF::ELFCLASS64 + && EF.getHeader()->e_ident[ELF::EI_OSABI] == ELF::ELFOSABI_AMDGPU_HSA + && IsLittleEndian) ? + Triple::amdgcn : Triple::UnknownArch; + default: return Triple::UnknownArch; } Index: llvm/trunk/lib/ObjectYAML/ELFYAML.cpp =================================================================== --- llvm/trunk/lib/ObjectYAML/ELFYAML.cpp +++ llvm/trunk/lib/ObjectYAML/ELFYAML.cpp @@ -239,6 +239,7 @@ ECase(ELFOSABI_FENIXOS) ECase(ELFOSABI_CLOUDABI) ECase(ELFOSABI_C6000_ELFABI) + ECase(ELFOSABI_AMDGPU_HSA) ECase(ELFOSABI_C6000_LINUX) ECase(ELFOSABI_ARM) ECase(ELFOSABI_STANDALONE) Index: llvm/trunk/test/Object/AMDGPU/elf-definitios.yaml =================================================================== --- llvm/trunk/test/Object/AMDGPU/elf-definitios.yaml +++ llvm/trunk/test/Object/AMDGPU/elf-definitios.yaml @@ -1,6 +1,8 @@ # RUN: yaml2obj -format=elf %s > %t.o # RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s +# CHECK: Format: ELF64-amdgpu-hsacobj +# CHECK: Arch: amdgcn # CHECK: Machine: EM_AMDGPU (0xE0) # CHECK: Sections [ # CHECK: Section { @@ -18,6 +20,7 @@ Data: ELFDATA2LSB Type: ET_REL Machine: EM_AMDGPU + OSABI: ELFOSABI_AMDGPU_HSA Sections: - Name: .shf_amdgpu Index: llvm/trunk/test/Object/AMDGPU/elf32-unknown.yaml =================================================================== --- llvm/trunk/test/Object/AMDGPU/elf32-unknown.yaml +++ llvm/trunk/test/Object/AMDGPU/elf32-unknown.yaml @@ -0,0 +1,11 @@ +# RUN: yaml2obj -format=elf %s > %t.o +# RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s + +# CHECK: Format: ELF32-amdgpu + +--- +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_AMDGPU Index: llvm/trunk/test/Object/AMDGPU/elf64-unknown.yaml =================================================================== --- llvm/trunk/test/Object/AMDGPU/elf64-unknown.yaml +++ llvm/trunk/test/Object/AMDGPU/elf64-unknown.yaml @@ -0,0 +1,11 @@ +# RUN: yaml2obj -format=elf %s > %t.o +# RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s + +# CHECK: Format: ELF64-amdgpu + +--- +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_AMDGPU