Index: llvm/trunk/lib/Object/ELFYAML.cpp =================================================================== --- llvm/trunk/lib/Object/ELFYAML.cpp +++ llvm/trunk/lib/Object/ELFYAML.cpp @@ -402,6 +402,7 @@ void ScalarBitSetTraits::bitset(IO &IO, ELFYAML::ELF_SHF &Value) { + const auto *Object = static_cast(IO.getContext()); #define BCase(X) IO.bitSetCase(Value, #X, ELF::X); BCase(SHF_WRITE) BCase(SHF_ALLOC) @@ -414,6 +415,17 @@ BCase(SHF_OS_NONCONFORMING) BCase(SHF_GROUP) BCase(SHF_TLS) + switch(Object->Header.Machine) { + case ELF::EM_AMDGPU: + BCase(SHF_AMDGPU_HSA_GLOBAL) + BCase(SHF_AMDGPU_HSA_READONLY) + BCase(SHF_AMDGPU_HSA_CODE) + BCase(SHF_AMDGPU_HSA_AGENT) + break; + default: + // Nothing to do. + break; + } #undef BCase } 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,7 +1,16 @@ # RUN: yaml2obj -format=elf %s > %t.o -# RUN: llvm-readobj -file-headers %t.o | FileCheck %s +# RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s # CHECK: Machine: EM_AMDGPU (0xE0) +# CHECK: Sections [ +# CHECK: Section { +# CHECK: Name: .shf_amdgpu +# CHECK: Flags [ (0xF00000) +# CHECK: SHF_AMDGPU_HSA_AGENT (0x800000) +# CHECK: SHF_AMDGPU_HSA_CODE (0x400000) +# CHECK: SHF_AMDGPU_HSA_GLOBAL (0x100000) +# CHECK: SHF_AMDGPU_HSA_READONLY (0x200000) +# CHECK: } --- FileHeader: @@ -9,4 +18,10 @@ Data: ELFDATA2LSB Type: ET_REL Machine: EM_AMDGPU + +Sections: + - Name: .shf_amdgpu + Type: SHT_PROGBITS + Flags: [ SHF_AMDGPU_HSA_GLOBAL, SHF_AMDGPU_HSA_READONLY, + SHF_AMDGPU_HSA_CODE, SHF_AMDGPU_HSA_AGENT] ...