[llvm] [llvm-readobj][ELF] Implement JSON output for --dynamic-table (PR #95976)
Fred Grim via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 21 07:58:55 PDT 2024
================
@@ -7365,6 +7369,55 @@ template <class ELFT> void LLVMELFDumper<ELFT>::printDynamicTable() {
W.startLine() << "]\n";
}
+template <class ELFT>
+void JSONELFDumper<ELFT>::printAuxillaryDynamicTableEntryInfo(
+ const Elf_Dyn &Entry) {
+ switch (Entry.getTag()) {
+ case DT_SONAME:
+ this->W.printString("Name", this->getDynamicString(Entry.getVal()));
+ break;
+ case DT_AUXILIARY:
+ LLVM_FALLTHROUGH;
+ case DT_FILTER:
+ LLVM_FALLTHROUGH;
+ case DT_NEEDED: {
+ ListScope L(this->W, "Libraries");
+ this->W.printString(this->getDynamicString(Entry.getVal()));
+ } break;
+ case DT_USED: {
+ ListScope L(this->W, "Objects");
+ this->W.printString(this->getDynamicString(Entry.getVal()));
+ } break;
+ case DT_RPATH:
+ LLVM_FALLTHROUGH;
+ case DT_RUNPATH: {
+ ListScope L(this->W, "Path");
+ this->W.printString(this->getDynamicString(Entry.getVal()));
+ } break;
+ case DT_FLAGS:
+ LLVM_FALLTHROUGH;
+ case DT_FLAGS_1:
+ this->W.printString("Flags",
+ this->getDynamicEntry(Entry.getTag(), Entry.getVal()));
+ break;
+ default:
+ break;
----------------
feg208 wrote:
I am not super sure how to make this work? I tried doing a printString for the label and then a printString() below but that caused crashes. Could you give me a short example for what you are looking for here?
https://github.com/llvm/llvm-project/pull/95976
More information about the llvm-commits
mailing list