Skip to content

Commit 87b45f1

Browse files
authored
[llvm-readobj] Print AMDGPU specific values in GNU mode (#75661)
Summary: Currently, we don't emit any of the AMDGPU specific flags and options when printing in GNU-mode (the default). This patch adds extra code to handle outputting these values to match the output from GNU's `readelf` when used on an AMDGPU image.
1 parent a5f3415 commit 87b45f1

File tree

2 files changed

+167
-134
lines changed

2 files changed

+167
-134
lines changed

llvm/test/tools/llvm-readobj/ELF/file-header-os-abi.test

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,21 +167,21 @@ FileHeader:
167167
# RUN: llvm-readelf --file-headers %t.osabi.amd.hsa | FileCheck %s --match-full-lines --check-prefix=OSABI-AMDHSA-GNU
168168

169169
# OSABI-AMDHSA-LLVM: OS/ABI: AMDGPU_HSA (0x40)
170-
# OSABI-AMDHSA-GNU: OS/ABI: 40
170+
# OSABI-AMDHSA-GNU: OS/ABI: AMDGPU - HSA
171171

172172
# RUN: yaml2obj %s -DOSABI=ELFOSABI_AMDGPU_PAL -DMACHINE=EM_AMDGPU -o %t.osabi.amd.pal
173173
# RUN: llvm-readobj --file-headers %t.osabi.amd.pal | FileCheck %s --match-full-lines --check-prefix=OSABI-AMDPAL-LLVM
174174
# RUN: llvm-readelf --file-headers %t.osabi.amd.pal | FileCheck %s --match-full-lines --check-prefix=OSABI-AMDPAL-GNU
175175

176176
# OSABI-AMDPAL-LLVM: OS/ABI: AMDGPU_PAL (0x41)
177-
# OSABI-AMDPAL-GNU: OS/ABI: 41
177+
# OSABI-AMDPAL-GNU: OS/ABI: AMDGPU - PAL
178178

179179
# RUN: yaml2obj %s -DOSABI=ELFOSABI_AMDGPU_MESA3D -DMACHINE=EM_AMDGPU -o %t.osabi.amd.mesa3d
180180
# RUN: llvm-readobj --file-headers %t.osabi.amd.mesa3d | FileCheck %s --match-full-lines --check-prefix=OSABI-AMDMESA3D-LLVM
181181
# RUN: llvm-readelf --file-headers %t.osabi.amd.mesa3d | FileCheck %s --match-full-lines --check-prefix=OSABI-AMDMESA3D-GNU
182182

183183
# OSABI-AMDMESA3D-LLVM: OS/ABI: AMDGPU_MESA3D (0x42)
184-
# OSABI-AMDMESA3D-GNU: OS/ABI: 42
184+
# OSABI-AMDMESA3D-GNU: OS/ABI: AMDGPU - MESA3D
185185

186186
# Check all EM_ARM specific values.
187187

llvm/tools/llvm-readobj/ELFDumper.cpp

Lines changed: 164 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -1558,139 +1558,139 @@ const EnumEntry<unsigned> ElfHeaderMipsFlags[] = {
15581558
};
15591559

15601560
const EnumEntry<unsigned> ElfHeaderAMDGPUFlagsABIVersion3[] = {
1561-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_NONE),
1562-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_R600),
1563-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_R630),
1564-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_RS880),
1565-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_RV670),
1566-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_RV710),
1567-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_RV730),
1568-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_RV770),
1569-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_CEDAR),
1570-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_CYPRESS),
1571-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_JUNIPER),
1572-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_REDWOOD),
1573-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_SUMO),
1574-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_BARTS),
1575-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_CAICOS),
1576-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_CAYMAN),
1577-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_TURKS),
1578-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX600),
1579-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX601),
1580-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX602),
1581-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX700),
1582-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX701),
1583-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX702),
1584-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX703),
1585-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX704),
1586-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX705),
1587-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX801),
1588-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX802),
1589-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX803),
1590-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX805),
1591-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX810),
1592-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX900),
1593-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX902),
1594-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX904),
1595-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX906),
1596-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX908),
1597-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX909),
1598-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX90A),
1599-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX90C),
1600-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX940),
1601-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX941),
1602-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX942),
1603-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010),
1604-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011),
1605-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012),
1606-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1013),
1607-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1030),
1608-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1031),
1609-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1032),
1610-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1033),
1611-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1034),
1612-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1035),
1613-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1036),
1614-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1100),
1615-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1101),
1616-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1102),
1617-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1103),
1618-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1150),
1619-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1151),
1620-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1200),
1621-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1201),
1622-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_FEATURE_XNACK_V3),
1623-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_FEATURE_SRAMECC_V3),
1561+
ENUM_ENT(EF_AMDGPU_MACH_NONE, "none"),
1562+
ENUM_ENT(EF_AMDGPU_MACH_R600_R600, "r600"),
1563+
ENUM_ENT(EF_AMDGPU_MACH_R600_R630, "r630"),
1564+
ENUM_ENT(EF_AMDGPU_MACH_R600_RS880, "rs880"),
1565+
ENUM_ENT(EF_AMDGPU_MACH_R600_RV670, "rv670"),
1566+
ENUM_ENT(EF_AMDGPU_MACH_R600_RV710, "rv710"),
1567+
ENUM_ENT(EF_AMDGPU_MACH_R600_RV730, "rv730"),
1568+
ENUM_ENT(EF_AMDGPU_MACH_R600_RV770, "rv770"),
1569+
ENUM_ENT(EF_AMDGPU_MACH_R600_CEDAR, "cedar"),
1570+
ENUM_ENT(EF_AMDGPU_MACH_R600_CYPRESS, "cypress"),
1571+
ENUM_ENT(EF_AMDGPU_MACH_R600_JUNIPER, "juniper"),
1572+
ENUM_ENT(EF_AMDGPU_MACH_R600_REDWOOD, "redwood"),
1573+
ENUM_ENT(EF_AMDGPU_MACH_R600_SUMO, "sumo"),
1574+
ENUM_ENT(EF_AMDGPU_MACH_R600_BARTS, "barts"),
1575+
ENUM_ENT(EF_AMDGPU_MACH_R600_CAICOS, "caicos"),
1576+
ENUM_ENT(EF_AMDGPU_MACH_R600_CAYMAN, "cayman"),
1577+
ENUM_ENT(EF_AMDGPU_MACH_R600_TURKS, "turks"),
1578+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX600, "gfx600"),
1579+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX601, "gfx601"),
1580+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX602, "gfx602"),
1581+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX700, "gfx700"),
1582+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX701, "gfx701"),
1583+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX702, "gfx702"),
1584+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX703, "gfx703"),
1585+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX704, "gfx704"),
1586+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX705, "gfx705"),
1587+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX801, "gfx801"),
1588+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX802, "gfx802"),
1589+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX803, "gfx803"),
1590+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX805, "gfx805"),
1591+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX810, "gfx810"),
1592+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX900, "gfx900"),
1593+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX902, "gfx902"),
1594+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX904, "gfx904"),
1595+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX906, "gfx906"),
1596+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX908, "gfx908"),
1597+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX909, "gfx909"),
1598+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX90A, "gfx90a"),
1599+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX90C, "gfx90c"),
1600+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX940, "gfx940"),
1601+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX941, "gfx941"),
1602+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX942, "gfx942"),
1603+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1010, "gfx1010"),
1604+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1011, "gfx1011"),
1605+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1012, "gfx1012"),
1606+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1013, "gfx1013"),
1607+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1030, "gfx1030"),
1608+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1031, "gfx1031"),
1609+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1032, "gfx1032"),
1610+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1033, "gfx1033"),
1611+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1034, "gfx1034"),
1612+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1035, "gfx1035"),
1613+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1036, "gfx1036"),
1614+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1100, "gfx1100"),
1615+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1101, "gfx1101"),
1616+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1102, "gfx1102"),
1617+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1103, "gfx1103"),
1618+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1150, "gfx1150"),
1619+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1151, "gfx1151"),
1620+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1200, "gfx1200"),
1621+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1201, "gfx1201"),
1622+
ENUM_ENT(EF_AMDGPU_FEATURE_XNACK_V3, "xnack"),
1623+
ENUM_ENT(EF_AMDGPU_FEATURE_SRAMECC_V3, "sramecc"),
16241624
};
16251625

16261626
const EnumEntry<unsigned> ElfHeaderAMDGPUFlagsABIVersion4[] = {
1627-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_NONE),
1628-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_R600),
1629-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_R630),
1630-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_RS880),
1631-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_RV670),
1632-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_RV710),
1633-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_RV730),
1634-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_RV770),
1635-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_CEDAR),
1636-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_CYPRESS),
1637-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_JUNIPER),
1638-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_REDWOOD),
1639-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_SUMO),
1640-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_BARTS),
1641-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_CAICOS),
1642-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_CAYMAN),
1643-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_TURKS),
1644-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX600),
1645-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX601),
1646-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX602),
1647-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX700),
1648-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX701),
1649-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX702),
1650-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX703),
1651-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX704),
1652-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX705),
1653-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX801),
1654-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX802),
1655-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX803),
1656-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX805),
1657-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX810),
1658-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX900),
1659-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX902),
1660-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX904),
1661-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX906),
1662-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX908),
1663-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX909),
1664-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX90A),
1665-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX90C),
1666-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX940),
1667-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX941),
1668-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX942),
1669-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010),
1670-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011),
1671-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012),
1672-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1013),
1673-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1030),
1674-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1031),
1675-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1032),
1676-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1033),
1677-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1034),
1678-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1035),
1679-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1036),
1680-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1100),
1681-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1101),
1682-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1102),
1683-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1103),
1684-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1150),
1685-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1151),
1686-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1200),
1687-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1201),
1688-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_FEATURE_XNACK_ANY_V4),
1689-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_FEATURE_XNACK_OFF_V4),
1690-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_FEATURE_XNACK_ON_V4),
1691-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_FEATURE_SRAMECC_ANY_V4),
1692-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_FEATURE_SRAMECC_OFF_V4),
1693-
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_FEATURE_SRAMECC_ON_V4),
1627+
ENUM_ENT(EF_AMDGPU_MACH_NONE, "none"),
1628+
ENUM_ENT(EF_AMDGPU_MACH_R600_R600, "r600"),
1629+
ENUM_ENT(EF_AMDGPU_MACH_R600_R630, "r630"),
1630+
ENUM_ENT(EF_AMDGPU_MACH_R600_RS880, "rs880"),
1631+
ENUM_ENT(EF_AMDGPU_MACH_R600_RV670, "rv670"),
1632+
ENUM_ENT(EF_AMDGPU_MACH_R600_RV710, "rv710"),
1633+
ENUM_ENT(EF_AMDGPU_MACH_R600_RV730, "rv730"),
1634+
ENUM_ENT(EF_AMDGPU_MACH_R600_RV770, "rv770"),
1635+
ENUM_ENT(EF_AMDGPU_MACH_R600_CEDAR, "cedar"),
1636+
ENUM_ENT(EF_AMDGPU_MACH_R600_CYPRESS, "cypress"),
1637+
ENUM_ENT(EF_AMDGPU_MACH_R600_JUNIPER, "juniper"),
1638+
ENUM_ENT(EF_AMDGPU_MACH_R600_REDWOOD, "redwood"),
1639+
ENUM_ENT(EF_AMDGPU_MACH_R600_SUMO, "sumo"),
1640+
ENUM_ENT(EF_AMDGPU_MACH_R600_BARTS, "barts"),
1641+
ENUM_ENT(EF_AMDGPU_MACH_R600_CAICOS, "caicos"),
1642+
ENUM_ENT(EF_AMDGPU_MACH_R600_CAYMAN, "cayman"),
1643+
ENUM_ENT(EF_AMDGPU_MACH_R600_TURKS, "turks"),
1644+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX600, "gfx600"),
1645+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX601, "gfx601"),
1646+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX602, "gfx602"),
1647+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX700, "gfx700"),
1648+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX701, "gfx701"),
1649+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX702, "gfx702"),
1650+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX703, "gfx703"),
1651+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX704, "gfx704"),
1652+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX705, "gfx705"),
1653+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX801, "gfx801"),
1654+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX802, "gfx802"),
1655+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX803, "gfx803"),
1656+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX805, "gfx805"),
1657+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX810, "gfx810"),
1658+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX900, "gfx900"),
1659+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX902, "gfx902"),
1660+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX904, "gfx904"),
1661+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX906, "gfx906"),
1662+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX908, "gfx908"),
1663+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX909, "gfx909"),
1664+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX90A, "gfx90a"),
1665+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX90C, "gfx90c"),
1666+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX940, "gfx940"),
1667+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX941, "gfx941"),
1668+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX942, "gfx942"),
1669+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1010, "gfx1010"),
1670+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1011, "gfx1011"),
1671+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1012, "gfx1012"),
1672+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1013, "gfx1013"),
1673+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1030, "gfx1030"),
1674+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1031, "gfx1031"),
1675+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1032, "gfx1032"),
1676+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1033, "gfx1033"),
1677+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1034, "gfx1034"),
1678+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1035, "gfx1035"),
1679+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1036, "gfx1036"),
1680+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1100, "gfx1100"),
1681+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1101, "gfx1101"),
1682+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1102, "gfx1102"),
1683+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1103, "gfx1103"),
1684+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1150, "gfx1150"),
1685+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1151, "gfx1151"),
1686+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1200, "gfx1200"),
1687+
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX1201, "gfx1201"),
1688+
ENUM_ENT(EF_AMDGPU_FEATURE_XNACK_ANY_V4, "xnack"),
1689+
ENUM_ENT(EF_AMDGPU_FEATURE_XNACK_OFF_V4, "xnack-"),
1690+
ENUM_ENT(EF_AMDGPU_FEATURE_XNACK_ON_V4, "xnack+"),
1691+
ENUM_ENT(EF_AMDGPU_FEATURE_SRAMECC_ANY_V4, "sramecc"),
1692+
ENUM_ENT(EF_AMDGPU_FEATURE_SRAMECC_OFF_V4, "sramecc-"),
1693+
ENUM_ENT(EF_AMDGPU_FEATURE_SRAMECC_ON_V4, "sramecc+"),
16941694
};
16951695

16961696
const EnumEntry<unsigned> ElfHeaderNVPTXFlags[] = {
@@ -3599,7 +3599,18 @@ template <class ELFT> void GNUELFDumper<ELFT>::printFileHeaders() {
35993599
if (e.e_version == ELF::EV_CURRENT)
36003600
OS << " (current)";
36013601
OS << "\n";
3602-
Str = enumToString(e.e_ident[ELF::EI_OSABI], ArrayRef(ElfOSABI));
3602+
auto OSABI = ArrayRef(ElfOSABI);
3603+
if (e.e_ident[ELF::EI_OSABI] >= ELF::ELFOSABI_FIRST_ARCH &&
3604+
e.e_ident[ELF::EI_OSABI] <= ELF::ELFOSABI_LAST_ARCH) {
3605+
switch (e.e_machine) {
3606+
case ELF::EM_AMDGPU:
3607+
OSABI = ArrayRef(AMDGPUElfOSABI);
3608+
break;
3609+
default:
3610+
break;
3611+
}
3612+
}
3613+
Str = enumToString(e.e_ident[ELF::EI_OSABI], OSABI);
36033614
printFields(OS, "OS/ABI:", Str);
36043615
printFields(OS,
36053616
"ABI Version:", std::to_string(e.e_ident[ELF::EI_ABIVERSION]));
@@ -3646,6 +3657,28 @@ template <class ELFT> void GNUELFDumper<ELFT>::printFileHeaders() {
36463657
else if (e.e_machine == EM_CUDA)
36473658
ElfFlags = printFlags(e.e_flags, ArrayRef(ElfHeaderNVPTXFlags),
36483659
unsigned(ELF::EF_CUDA_SM));
3660+
else if (e.e_machine == EM_AMDGPU) {
3661+
switch (e.e_ident[ELF::EI_ABIVERSION]) {
3662+
default:
3663+
break;
3664+
case 0:
3665+
// ELFOSABI_AMDGPU_PAL, ELFOSABI_AMDGPU_MESA3D support *_V3 flags.
3666+
[[fallthrough]];
3667+
case ELF::ELFABIVERSION_AMDGPU_HSA_V3:
3668+
ElfFlags =
3669+
printFlags(e.e_flags, ArrayRef(ElfHeaderAMDGPUFlagsABIVersion3),
3670+
unsigned(ELF::EF_AMDGPU_MACH));
3671+
break;
3672+
case ELF::ELFABIVERSION_AMDGPU_HSA_V4:
3673+
case ELF::ELFABIVERSION_AMDGPU_HSA_V5:
3674+
ElfFlags =
3675+
printFlags(e.e_flags, ArrayRef(ElfHeaderAMDGPUFlagsABIVersion4),
3676+
unsigned(ELF::EF_AMDGPU_MACH),
3677+
unsigned(ELF::EF_AMDGPU_FEATURE_XNACK_V4),
3678+
unsigned(ELF::EF_AMDGPU_FEATURE_SRAMECC_V4));
3679+
break;
3680+
}
3681+
}
36493682
Str = "0x" + utohexstr(e.e_flags);
36503683
if (!ElfFlags.empty())
36513684
Str = Str + ", " + ElfFlags;

0 commit comments

Comments
 (0)