[PATCH] D89049: [AIX][XCOFF] print out the traceback info

Stephen Peckham via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 5 12:25:18 PST 2023


stephenpeckham added inline comments.


================
Comment at: llvm/lib/Object/XCOFFObjectFile.cpp:1437
       for (uint32_t I = 0; I < NumOfCtlAnchors && Cur; ++I)
-        Disp.push_back(DE.getU32(Cur));
+        Disp.push_back(Is64BitObj ? DE.getU64(Cur) : DE.getU32(Cur));
       if (Cur)
----------------
The controlled storage offsets are always 4 bytes, even for 64-bit binaries


================
Comment at: llvm/tools/llvm-objdump/XCOFFDump.cpp:271
+      OS << "\t  ControlledStorageInfoDisp[" << I << "] = " << Disp[I];
+      // Print another 4 bytes for 64 bit.
+      if (Is64Bit) {
----------------
The controlled storage offsets are always 4 bytes, even for 64-bit binaries.


================
Comment at: llvm/tools/llvm-objdump/llvm-objdump.cpp:1736
+          (Symbols[SI - 1].XCOFFSymInfo.StorageMappingClass.value() ==
+           XCOFF::XMC_PR);
+
----------------
Programs have glink code which also has traceback tables, so you should check for XMC_GL as well as XMC_PR.


================
Comment at: llvm/tools/llvm-objdump/llvm-objdump.cpp:1793
+            dumpTracebackTable(Bytes.slice(Index),
+                               SectionAddr + Index + VMAAdjustment, FOS, End,
+                               *STI, &Obj);
----------------
Programs are usually linked with a non-zero .text origin, so I think you need SectionAddr + End instead of End.  


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D89049/new/

https://reviews.llvm.org/D89049



More information about the llvm-commits mailing list