diff --git a/llvm/include/llvm/MC/MCDisassembler/MCDisassembler.h b/llvm/include/llvm/MC/MCDisassembler/MCDisassembler.h index 865d81f70073..d3e9bfecd29f 100644 --- a/llvm/include/llvm/MC/MCDisassembler/MCDisassembler.h +++ b/llvm/include/llvm/MC/MCDisassembler/MCDisassembler.h @@ -37,9 +37,8 @@ private: bool HasType; public: - SymbolInfoTy(uint64_t Addr, StringRef Name, - std::optional Smc, - std::optional Idx, bool Label) + SymbolInfoTy(std::optional Smc, uint64_t Addr, + StringRef Name, std::optional Idx, bool Label) : Addr(Addr), Name(Name), XCOFFSymInfo{Smc, Idx, Label}, Type(0), IsXCOFF(true), HasType(false) {} SymbolInfoTy(uint64_t Addr, StringRef Name, uint8_t Type, diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 98de0fa8df27..edf36eb6a1c0 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -1210,7 +1210,7 @@ SymbolInfoTy objdump::createSymbolInfo(const ObjectFile &Obj, const uint32_t SymbolIndex = XCOFFObj.getSymbolIndex(SymbolDRI.p); std::optional Smc = getXCOFFSymbolCsectSMC(XCOFFObj, Symbol); - return SymbolInfoTy(Addr, Name, Smc, SymbolIndex, + return SymbolInfoTy(Smc, Addr, Name, SymbolIndex, isLabel(XCOFFObj, Symbol)); } else if (Obj.isXCOFF()) { const SymbolRef::Type SymType = unwrapOrError(Symbol.getType(), FileName); @@ -1225,7 +1225,7 @@ static SymbolInfoTy createDummySymbolInfo(const ObjectFile &Obj, const uint64_t Addr, StringRef &Name, uint8_t Type) { if (Obj.isXCOFF() && (SymbolDescription || TracebackTable)) - return SymbolInfoTy(Addr, Name, std::nullopt, std::nullopt, false); + return SymbolInfoTy(std::nullopt, Addr, Name, std::nullopt, false); else return SymbolInfoTy(Addr, Name, Type); } diff --git a/llvm/unittests/MC/MCDisassemblerTest.cpp b/llvm/unittests/MC/MCDisassemblerTest.cpp index 252dbc6be5bf..c5bfc1a73737 100644 --- a/llvm/unittests/MC/MCDisassemblerTest.cpp +++ b/llvm/unittests/MC/MCDisassemblerTest.cpp @@ -12,13 +12,12 @@ using namespace llvm; TEST(MCDisassembler, XCOFFSymbolPriorityTest) { - - SymbolInfoTy SIT1(0x100000, "sym1", std::nullopt, 1, false); - SymbolInfoTy SIT2(0x110000, "sym2", std::nullopt, 2, false); - SymbolInfoTy SIT3(0x120000, ".func", XCOFF::XMC_PR, 3, true); - SymbolInfoTy SIT4(0x120000, ".text", XCOFF::XMC_PR, 4, false); - SymbolInfoTy SIT5(0x130000, "TOC", XCOFF::XMC_TC0, 5, false); - SymbolInfoTy SIT6(0x130000, "func", XCOFF::XMC_TC, 6, false); + SymbolInfoTy SIT1(std::nullopt, 0x100000, "sym1", 1, false); + SymbolInfoTy SIT2(std::nullopt, 0x110000, "sym2", 2, false); + SymbolInfoTy SIT3(XCOFF::XMC_PR, 0x120000, ".func", 3, true); + SymbolInfoTy SIT4(XCOFF::XMC_PR, 0x120000, ".text", 4, false); + SymbolInfoTy SIT5(XCOFF::XMC_TC0, 0x130000, "TOC", 5, false); + SymbolInfoTy SIT6(XCOFF::XMC_TC, 0x130000, "func", 6, false); // Test that higher addresses would appear later than lower ones when symbols // are sorted in ascending order.