[PATCH] D81585: [AIX][XCOFF][Patch1] Provide decoding trace back table information API for xcoff object file for llvm-objdump -d
Jason Liu via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 7 13:57:05 PDT 2020
jasonliu added inline comments.
================
Comment at: llvm/include/llvm/BinaryFormat/XCOFF.h:346
+ static constexpr uint32_t ParmsOnStackMask = 0x0000'0001;
+ static constexpr uint8_t NumberOfFPParaShift = 01;
+
----------------
01 -> 1?
================
Comment at: llvm/include/llvm/Object/XCOFFObjectFile.h:396
+ const uint8_t *TBPtr;
+ const uint64_t Size;
+ Optional<std::string> ParaType;
----------------
Do you actually need the Size as data member?
================
Comment at: llvm/lib/Object/XCOFFObjectFile.cpp:872
+Expected<XCOFFTracebackTable> XCOFFTracebackTable::create(const uint8_t *Ptr,
+ const uint64_t S) {
+ Error Err = Error::success();
----------------
Remove `const` to match with declaration.
================
Comment at: llvm/lib/Object/XCOFFObjectFile.cpp:884
+ ErrorAsOutParameter EAO(&Err);
+ DataExtractor DE(ArrayRef<uint8_t>(Ptr, S), false, 4);
+ uint64_t offset_ptr = 0;
----------------
Suggestion:
```
DataExtractor DE(ArrayRef<uint8_t>(Ptr, S), /* IsLittleEndian */ false, AddressSize);
```
AddressSize is not necessarily 4, it's 8 in 64 bit mode (although we don't actually use member functions in DataExtractor which uses AddressSize, in that case not sure if we could just pass in `/* AddressSize */ 0` to avoid confusion).
================
Comment at: llvm/lib/Object/XCOFFObjectFile.cpp:904
+ if (!Err && isFuncNamePresent()) {
+ uint16_t Len = DE.getU16(&offset_ptr, &Err);
+ if (!Err)
----------------
Why do we need to declare a new variable?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D81585/new/
https://reviews.llvm.org/D81585
More information about the llvm-commits
mailing list