[llvm] [llvm-objdump] Print out xcoff file header and load section header for xcoff object file with option private-headers (PR #96350)
James Henderson via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 9 01:58:23 PDT 2024
================
@@ -30,10 +32,87 @@ using namespace llvm::support;
namespace {
class XCOFFDumper : public objdump::Dumper {
+ const XCOFFObjectFile &Obj;
+ unsigned Width;
+
public:
- XCOFFDumper(const object::XCOFFObjectFile &O) : Dumper(O) {}
- void printPrivateHeaders() override {}
+ XCOFFDumper(const object::XCOFFObjectFile &O) : Dumper(O), Obj(O) {}
+
+private:
+ void printPrivateHeaders() override;
+ void printFileHeader();
+ FormattedString formatName(StringRef Name);
+ void printHex(StringRef Name, uint64_t Value);
+ void printNumber(StringRef Name, uint64_t Value);
+ void printStrHex(StringRef Name, StringRef Str, uint64_t Value);
+ void setWidth(unsigned W) { Width = W; };
};
+
+void XCOFFDumper::printPrivateHeaders() { printFileHeader(); }
+
+FormattedString XCOFFDumper::formatName(StringRef Name) {
+ return FormattedString(Name, Width, FormattedString::JustifyLeft);
+}
+
+void XCOFFDumper::printHex(StringRef Name, uint64_t Value) {
+ outs() << formatName(Name) << format_hex(Value, 0) << "\n";
+}
+
+void XCOFFDumper::printNumber(StringRef Name, uint64_t Value) {
+ outs() << formatName(Name) << format_decimal(Value, 0) << "\n";
+}
+
+void XCOFFDumper::printStrHex(StringRef Name, StringRef Str, uint64_t Value) {
+ outs() << formatName(Name) << Str << " (" << format_decimal(Value, 0) << ")"
+ << "\n";
----------------
jh7370 wrote:
```suggestion
outs() << formatName(Name) << Str << " (" << format_decimal(Value, 0) << ")\n";
```
The closing `)` and `\n` can be folded together into a single string. Make sure to clang-format after this, as this suggested line is slightly too long.
https://github.com/llvm/llvm-project/pull/96350
More information about the llvm-commits
mailing list