diff options
Diffstat (limited to 'lld/ELF/Arch/AMDGPU.cpp')
| -rw-r--r-- | lld/ELF/Arch/AMDGPU.cpp | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/lld/ELF/Arch/AMDGPU.cpp b/lld/ELF/Arch/AMDGPU.cpp index cd7e7830d374..0368f82c6a65 100644 --- a/lld/ELF/Arch/AMDGPU.cpp +++ b/lld/ELF/Arch/AMDGPU.cpp @@ -10,7 +10,7 @@ #include "Symbols.h" #include "Target.h" #include "lld/Common/ErrorHandler.h" -#include "llvm/Object/ELF.h" +#include "llvm/BinaryFormat/ELF.h" #include "llvm/Support/Endian.h" using namespace llvm; @@ -48,10 +48,10 @@ static uint32_t getEFlags(InputFile *file) { } uint32_t AMDGPU::calcEFlagsV3() const { - uint32_t ret = getEFlags(objectFiles[0]); + uint32_t ret = getEFlags(ctx->objectFiles[0]); // Verify that all input files have the same e_flags. - for (InputFile *f : makeArrayRef(objectFiles).slice(1)) { + for (InputFile *f : makeArrayRef(ctx->objectFiles).slice(1)) { if (ret == getEFlags(f)) continue; error("incompatible e_flags: " + toString(f)); @@ -61,14 +61,15 @@ uint32_t AMDGPU::calcEFlagsV3() const { } uint32_t AMDGPU::calcEFlagsV4() const { - uint32_t retMach = getEFlags(objectFiles[0]) & EF_AMDGPU_MACH; - uint32_t retXnack = getEFlags(objectFiles[0]) & EF_AMDGPU_FEATURE_XNACK_V4; + uint32_t retMach = getEFlags(ctx->objectFiles[0]) & EF_AMDGPU_MACH; + uint32_t retXnack = + getEFlags(ctx->objectFiles[0]) & EF_AMDGPU_FEATURE_XNACK_V4; uint32_t retSramEcc = - getEFlags(objectFiles[0]) & EF_AMDGPU_FEATURE_SRAMECC_V4; + getEFlags(ctx->objectFiles[0]) & EF_AMDGPU_FEATURE_SRAMECC_V4; // Verify that all input files have compatible e_flags (same mach, all // features in the same category are either ANY, ANY and ON, or ANY and OFF). - for (InputFile *f : makeArrayRef(objectFiles).slice(1)) { + for (InputFile *f : makeArrayRef(ctx->objectFiles).slice(1)) { if (retMach != (getEFlags(f) & EF_AMDGPU_MACH)) { error("incompatible mach: " + toString(f)); return 0; @@ -105,15 +106,19 @@ uint32_t AMDGPU::calcEFlagsV4() const { } uint32_t AMDGPU::calcEFlags() const { - assert(!objectFiles.empty()); + if (ctx->objectFiles.empty()) + return 0; - uint8_t abiVersion = cast<ObjFile<ELF64LE>>(objectFiles[0])->getObj() - .getHeader().e_ident[EI_ABIVERSION]; + uint8_t abiVersion = cast<ObjFile<ELF64LE>>(ctx->objectFiles[0]) + ->getObj() + .getHeader() + .e_ident[EI_ABIVERSION]; switch (abiVersion) { case ELFABIVERSION_AMDGPU_HSA_V2: case ELFABIVERSION_AMDGPU_HSA_V3: return calcEFlagsV3(); case ELFABIVERSION_AMDGPU_HSA_V4: + case ELFABIVERSION_AMDGPU_HSA_V5: return calcEFlagsV4(); default: error("unknown abi version: " + Twine(abiVersion)); |
