[llvm] [llvm-readobj] --needed-libs: support --elf-output-style=JSON (PR #75028)

via llvm-commits llvm-commits at lists.llvm.org
Sun Dec 10 23:28:35 PST 2023


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-llvm-binary-utilities

Author: Fangrui Song (MaskRay)

<details>
<summary>Changes</summary>

Close #<!-- -->74529


---
Full diff: https://github.com/llvm/llvm-project/pull/75028.diff


2 Files Affected:

- (modified) llvm/test/tools/llvm-readobj/ELF/needed-libs.test (+13) 
- (modified) llvm/tools/llvm-readobj/ELFDumper.cpp (+1-1) 


``````````diff
diff --git a/llvm/test/tools/llvm-readobj/ELF/needed-libs.test b/llvm/test/tools/llvm-readobj/ELF/needed-libs.test
index d37ab6238e137..d2d0bdad26ed0 100644
--- a/llvm/test/tools/llvm-readobj/ELF/needed-libs.test
+++ b/llvm/test/tools/llvm-readobj/ELF/needed-libs.test
@@ -5,6 +5,8 @@
 # RUN:   | FileCheck %s -DFILE=%t1 --implicit-check-not=warning: --strict-whitespace --check-prefix=NEEDED-LIBS
 # RUN: llvm-readelf --needed-libs %t1 2>&1 \
 # RUN:   | FileCheck %s -DFILE=%t1 --implicit-check-not=warning: --strict-whitespace --check-prefix=NEEDED-LIBS
+# RUN: llvm-readobj --elf-output-style=JSON --needed-libs --pretty-print %t1 2>&1 \
+# RUN:   | FileCheck %s -DFILE=%t1 --implicit-check-not=warning: --match-full-lines --strict-whitespace --check-prefix=JSON
 
 ## Check that library names are sorted when printed.
 ## Document that we also sort error entries.
@@ -19,6 +21,17 @@
 # NEEDED-LIBS-NEXT:{{^}}  ccc{{$}}
 # NEEDED-LIBS-NEXT:{{^}}]{{$}}
 
+#      JSON:    "FileSummary": {
+#      JSON:    "NeededLibraries": [{{.*}}warning: '[[FILE]]': string table at offset 0x78: unable to read the string at 0x9999a11: it goes past the end of the table (0x85)
+# JSON-NEXT:{{.*}}warning: '[[FILE]]': string table at offset 0x78: unable to read the string at 0x1111189: it goes past the end of the table (0x85)
+# JSON-EMPTY:
+# JSON-NEXT:      "<?>",
+# JSON-NEXT:      "<?>",
+# JSON-NEXT:      "aaa",
+# JSON-NEXT:      "bbb",
+# JSON-NEXT:      "ccc"
+# JSON-NEXT:    ]
+
 --- !ELF
 FileHeader:
   Class: ELFCLASS64
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp
index 85d5ab68b495c..a9a31ae6c4740 100644
--- a/llvm/tools/llvm-readobj/ELFDumper.cpp
+++ b/llvm/tools/llvm-readobj/ELFDumper.cpp
@@ -2581,7 +2581,7 @@ template <class ELFT> void ELFDumper<ELFT>::printNeededLibraries() {
   llvm::sort(Libs);
 
   for (StringRef L : Libs)
-    W.startLine() << L << "\n";
+    W.printString(L);
 }
 
 template <class ELFT>

``````````

</details>


https://github.com/llvm/llvm-project/pull/75028


More information about the llvm-commits mailing list