|
16 | 16 | #include "llvm/BinaryFormat/COFF.h"
|
17 | 17 | #include "llvm/BinaryFormat/ELF.h"
|
18 | 18 | #include "llvm/BinaryFormat/MachO.h"
|
| 19 | +#include "llvm/BinaryFormat/XCOFF.h" |
19 | 20 | #include "llvm/Support/Compiler.h"
|
20 | 21 | #include "llvm/TargetParser/ARMTargetParser.h"
|
21 | 22 |
|
@@ -459,10 +460,23 @@ static const ArchDefinition g_coff_arch_def = {
|
459 | 460 | "pe-coff",
|
460 | 461 | };
|
461 | 462 |
|
| 463 | +static const ArchDefinitionEntry g_xcoff_arch_entries[] = { |
| 464 | + {ArchSpec::eCore_ppc_generic, llvm::XCOFF::TCPU_COM, LLDB_INVALID_CPUTYPE, |
| 465 | + 0xFFFFFFFFu, 0xFFFFFFFFu}, |
| 466 | + {ArchSpec::eCore_ppc64_generic, llvm::XCOFF::TCPU_PPC64, |
| 467 | + LLDB_INVALID_CPUTYPE, 0xFFFFFFFFu, 0xFFFFFFFFu}}; |
| 468 | + |
| 469 | +static const ArchDefinition g_xcoff_arch_def = { |
| 470 | + eArchTypeXCOFF, |
| 471 | + std::size(g_xcoff_arch_entries), |
| 472 | + g_xcoff_arch_entries, |
| 473 | + "xcoff", |
| 474 | +}; |
| 475 | + |
462 | 476 | //===----------------------------------------------------------------------===//
|
463 | 477 | // Table of all ArchDefinitions
|
464 | 478 | static const ArchDefinition *g_arch_definitions[] = {
|
465 |
| - &g_macho_arch_def, &g_elf_arch_def, &g_coff_arch_def}; |
| 479 | + &g_macho_arch_def, &g_elf_arch_def, &g_coff_arch_def, &g_xcoff_arch_def}; |
466 | 480 |
|
467 | 481 | //===----------------------------------------------------------------------===//
|
468 | 482 | // Static helper functions.
|
@@ -903,6 +917,9 @@ bool ArchSpec::SetArchitecture(ArchitectureType arch_type, uint32_t cpu,
|
903 | 917 | } else if (arch_type == eArchTypeCOFF && os == llvm::Triple::Win32) {
|
904 | 918 | m_triple.setVendor(llvm::Triple::PC);
|
905 | 919 | m_triple.setOS(llvm::Triple::Win32);
|
| 920 | + } else if (arch_type == eArchTypeXCOFF && os == llvm::Triple::AIX) { |
| 921 | + m_triple.setVendor(llvm::Triple::IBM); |
| 922 | + m_triple.setOS(llvm::Triple::AIX); |
906 | 923 | } else {
|
907 | 924 | m_triple.setVendor(llvm::Triple::UnknownVendor);
|
908 | 925 | m_triple.setOS(llvm::Triple::UnknownOS);
|
|
0 commit comments