[Lldb-commits] [lldb] [lldb][AIX] Extract CPU type and set up process architecture accordingly (PR #189910)
Hemang Gadhavi via lldb-commits
lldb-commits at lists.llvm.org
Wed Apr 1 05:42:34 PDT 2026
================
@@ -133,44 +133,35 @@ ModuleSpecList ObjectFileXCOFF::GetModuleSpecifications(
return {};
ModuleSpecList specs;
- if (ObjectFileXCOFF::MagicBytesMatch(extractor_sp, 0,
- extractor_sp->GetByteSize())) {
+ uint16_t magic = 0;
+ if ((magic = ObjectFileXCOFF::GetMagicBytes(
+ extractor_sp, 0, extractor_sp->GetByteSize())) != 0) {
+ const uint32_t cpu_type =
+ (magic == XCOFF::XCOFF64) ? XCOFF::TCPU_PPC64 : XCOFF::TCPU_PPC;
ArchSpec arch_spec =
- ArchSpec(eArchTypeXCOFF, XCOFF::TCPU_PPC64, LLDB_INVALID_CPUTYPE);
+ ArchSpec(eArchTypeXCOFF, cpu_type, LLDB_INVALID_CPUTYPE);
ModuleSpec spec(file, arch_spec);
- spec.GetArchitecture().SetArchitecture(eArchTypeXCOFF, XCOFF::TCPU_PPC64,
- LLDB_INVALID_CPUTYPE,
- llvm::Triple::AIX);
+ spec.GetArchitecture().SetArchitecture(
+ eArchTypeXCOFF, cpu_type, LLDB_INVALID_CPUTYPE, llvm::Triple::AIX);
specs.Append(spec);
}
return specs;
}
-static uint32_t XCOFFHeaderSizeFromMagic(uint32_t magic) {
- switch (magic) {
- case XCOFF::XCOFF32:
- return sizeof(struct llvm::object::XCOFFFileHeader32);
- break;
- case XCOFF::XCOFF64:
- return sizeof(struct llvm::object::XCOFFFileHeader64);
- break;
-
- default:
- break;
- }
- return 0;
-}
-
-bool ObjectFileXCOFF::MagicBytesMatch(DataExtractorSP &extractor_sp,
- lldb::addr_t data_offset,
- lldb::addr_t data_length) {
+uint16_t ObjectFileXCOFF::GetMagicBytes(DataExtractorSP &extractor_sp,
+ lldb::addr_t data_offset,
+ lldb::addr_t data_length) {
DataExtractorSP magic_extractor_sp =
extractor_sp->GetSubsetExtractorSP(data_offset);
// Need to set this as XCOFF is only compatible with Big Endian
magic_extractor_sp->SetByteOrder(eByteOrderBig);
lldb::offset_t offset = 0;
uint16_t magic = magic_extractor_sp->GetU16(&offset);
- return XCOFFHeaderSizeFromMagic(magic) != 0;
+ // Validating magic
+ if (magic == XCOFF::XCOFF64 || magic == XCOFF::XCOFF32)
+ return magic;
+ else
+ return 0;
----------------
HemangGadhavi wrote:
Done.
https://github.com/llvm/llvm-project/pull/189910
More information about the lldb-commits
mailing list