[llvm] 488fdb7 - Revert "[llvm-readobj][ELF] Test multivalued rpath entries and alter the output for readobj to emphasize the single valued nature of NEEDED, SONAME, USED etc. (#96562)"

via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 3 05:24:20 PDT 2024


Author: serge-sans-paille
Date: 2024-07-03T14:24:08+02:00
New Revision: 488fdb7d1245af5651ba77630f81412648ba7ae3

URL: https://github.com/llvm/llvm-project/commit/488fdb7d1245af5651ba77630f81412648ba7ae3
DIFF: https://github.com/llvm/llvm-project/commit/488fdb7d1245af5651ba77630f81412648ba7ae3.diff

LOG: Revert "[llvm-readobj][ELF] Test multivalued rpath entries and alter the output for readobj to emphasize the single valued nature of NEEDED, SONAME, USED etc. (#96562)"

Reverted due to output change that breaks downstream project, see

https://github.com/llvm/llvm-project/pull/96562#issuecomment-2204938038

This reverts commit 161e1689ba98fabba71cac21f536708c78e9d7b0.

Added: 
    

Modified: 
    lld/test/ELF/as-needed-no-reloc.s
    lld/test/ELF/as-needed.s
    lld/test/ELF/auxiliary.s
    lld/test/ELF/dynamic-reloc.s
    lld/test/ELF/filter.s
    lld/test/ELF/gc-sections-shared.s
    lld/test/ELF/no-soname.s
    lld/test/ELF/partition-synthetic-sections.s
    lld/test/ELF/push-state.s
    lld/test/ELF/shared-ppc64.s
    lld/test/ELF/shared.s
    lld/test/ELF/soname.s
    lld/test/ELF/soname2.s
    lld/test/ELF/wrap-drop-shared-original.s
    llvm/test/tools/llvm-ifs/write-stub.test
    llvm/test/tools/llvm-readobj/ELF/dynamic-malformed.test
    llvm/test/tools/llvm-readobj/ELF/dynamic-tags.test
    llvm/test/tools/llvm-readobj/ELF/loadname.test
    llvm/tools/llvm-readobj/ELFDumper.cpp

Removed: 
    


################################################################################
diff  --git a/lld/test/ELF/as-needed-no-reloc.s b/lld/test/ELF/as-needed-no-reloc.s
index 07b291a4940ef..6cedeec3155d6 100644
--- a/lld/test/ELF/as-needed-no-reloc.s
+++ b/lld/test/ELF/as-needed-no-reloc.s
@@ -8,7 +8,7 @@
 
 # There must be a NEEDED entry for each undefined
 
-# CHECK: (NEEDED) Shared library: {{.*}}as-needed-no-reloc{{.*}}2.so
+# CHECK: (NEEDED) Shared library: [{{.*}}as-needed-no-reloc{{.*}}2.so]
 # CHECK: UND bar
 
         .globl _start

diff  --git a/lld/test/ELF/as-needed.s b/lld/test/ELF/as-needed.s
index d115c672dda8c..1623f324892b4 100644
--- a/lld/test/ELF/as-needed.s
+++ b/lld/test/ELF/as-needed.s
@@ -32,13 +32,13 @@
 // RUN: ld.lld %t.o %t.script -o %t2
 // RUN: llvm-readobj --dynamic-table %t2 | FileCheck -check-prefix=CHECK2 %s
 
-// CHECK: NEEDED Shared library: shared1
-// CHECK: NEEDED Shared library: shared2
-// CHECK: NEEDED Shared library: shared3
+// CHECK: NEEDED Shared library: [shared1]
+// CHECK: NEEDED Shared library: [shared2]
+// CHECK: NEEDED Shared library: [shared3]
 
-// CHECK2:     NEEDED Shared library: shared1
-// CHECK2-NOT: NEEDED Shared library: shared2
-// CHECK2-NOT: NEEDED Shared library: shared3
+// CHECK2:     NEEDED Shared library: [shared1]
+// CHECK2-NOT: NEEDED Shared library: [shared2]
+// CHECK2-NOT: NEEDED Shared library: [shared3]
 
 .global _start
 _start:

diff  --git a/lld/test/ELF/auxiliary.s b/lld/test/ELF/auxiliary.s
index dd978b0c423a5..5a74060cc851d 100644
--- a/lld/test/ELF/auxiliary.s
+++ b/lld/test/ELF/auxiliary.s
@@ -7,8 +7,8 @@
 
 # CHECK:      DynamicSection [
 # CHECK-NEXT: Tag                Type          Name/Value
-# CHECK-NEXT: 0x000000007FFFFFFD AUXILIARY     Auxiliary library: aaa
-# CHECK-NEXT: 0x000000007FFFFFFD AUXILIARY     Auxiliary library: bbb
+# CHECK-NEXT: 0x000000007FFFFFFD AUXILIARY     Auxiliary library: [aaa]
+# CHECK-NEXT: 0x000000007FFFFFFD AUXILIARY     Auxiliary library: [bbb]
 
 # RUN: not ld.lld %t.o -f aaa --auxiliary bbb -o /dev/null 2>&1 \
 # RUN:    | FileCheck -check-prefix=ERR %s

diff  --git a/lld/test/ELF/dynamic-reloc.s b/lld/test/ELF/dynamic-reloc.s
index 6dae02cae125a..6d98db0c2468e 100644
--- a/lld/test/ELF/dynamic-reloc.s
+++ b/lld/test/ELF/dynamic-reloc.s
@@ -32,7 +32,7 @@
 
 // CHECK: DynamicSection [
 // CHECK-NEXT:  Tag                Type                 Name/Value
-// CHECK-NEXT:  0x0000000000000001 NEEDED               Shared library: so
+// CHECK-NEXT:  0x0000000000000001 NEEDED               Shared library: [so]
 // CHECK-NEXT:  0x0000000000000015 DEBUG                0x0
 // CHECK-NEXT:  0x0000000000000017 JMPREL
 // CHECK-NEXT:  0x0000000000000002 PLTRELSZ             24 (bytes)

diff  --git a/lld/test/ELF/filter.s b/lld/test/ELF/filter.s
index 3f34febacf659..2b07c01013dfa 100644
--- a/lld/test/ELF/filter.s
+++ b/lld/test/ELF/filter.s
@@ -13,8 +13,8 @@
 
 # CHECK:      DynamicSection [
 # CHECK-NEXT: Tag                Type          Name/Value
-# CHECK-NEXT: 0x000000007FFFFFFF FILTER        Filter library: foo.so
-# CHECK-NEXT: 0x000000007FFFFFFF FILTER        Filter library: boo.so
+# CHECK-NEXT: 0x000000007FFFFFFF FILTER        Filter library: [foo.so]
+# CHECK-NEXT: 0x000000007FFFFFFF FILTER        Filter library: [boo.so]
 
 # RUN: not ld.lld %t.o -F x -o /dev/null 2>&1 | FileCheck -check-prefix=ERR %s
 # ERR: -F may not be used without -shared

diff  --git a/lld/test/ELF/gc-sections-shared.s b/lld/test/ELF/gc-sections-shared.s
index 9174bdc6f2a8f..d32c15d4187fe 100644
--- a/lld/test/ELF/gc-sections-shared.s
+++ b/lld/test/ELF/gc-sections-shared.s
@@ -15,7 +15,7 @@
 # this case is checked with symbol qux and %t4.so.
 
 # CHECK-NOT: NEEDED
-# CHECK:     (NEEDED) Shared library: {{.*}}3.so
+# CHECK:     (NEEDED) Shared library: [{{.*}}3.so]
 # CHECK-NOT: NEEDED
 
 # CHECK-DAG: FUNC    WEAK   DEFAULT  UND qux

diff  --git a/lld/test/ELF/no-soname.s b/lld/test/ELF/no-soname.s
index f86b74eb15c12..69b17cd6cc1c8 100644
--- a/lld/test/ELF/no-soname.s
+++ b/lld/test/ELF/no-soname.s
@@ -6,26 +6,26 @@
 // RUN: ld.lld %t.o %t.dir/no-soname/libfoo.so -o %t
 // RUN: llvm-readobj --dynamic-table %t | FileCheck %s
 
-// CHECK:  0x0000000000000001 NEEDED               Shared library: {{.*}}/no-soname/libfoo.so
+// CHECK:  0x0000000000000001 NEEDED               Shared library: [{{.*}}/no-soname/libfoo.so]
 // CHECK-NOT: NEEDED
 
 // RUN: ld.lld %t.o %t.dir/no-soname/../no-soname/libfoo.so -o %t
 // RUN: llvm-readobj --dynamic-table %t | FileCheck %s --check-prefix=CHECK2
 
-// CHECK2:  0x0000000000000001 NEEDED               Shared library: {{.*}}/no-soname/../no-soname/libfoo.so
+// CHECK2:  0x0000000000000001 NEEDED               Shared library: [{{.*}}/no-soname/../no-soname/libfoo.so]
 // CHECK2-NOT: NEEDED
 
 // RUN: ld.lld %t.o -L%t.dir/no-soname/../no-soname -lfoo -o %t
 // RUN: llvm-readobj --dynamic-table %t | FileCheck %s --check-prefix=CHECK3
 
-// CHECK3:  0x0000000000000001 NEEDED               Shared library: libfoo.so
+// CHECK3:  0x0000000000000001 NEEDED               Shared library: [libfoo.so]
 // CHECK3-NOT: NEEDED
 
 // RUN: ld.lld %t.o -shared -soname libbar.so -o %t.dir/no-soname/libbar.so
 // RUN: ld.lld %t.o %t.dir/no-soname/libbar.so -o %t
 // RUN: llvm-readobj --dynamic-table %t | FileCheck %s --check-prefix=CHECK4
 
-// CHECK4:  0x0000000000000001 NEEDED               Shared library: libbar.so
+// CHECK4:  0x0000000000000001 NEEDED               Shared library: [libbar.so]
 // CHECK4-NOT: NEEDED
 
 .global _start

diff  --git a/lld/test/ELF/partition-synthetic-sections.s b/lld/test/ELF/partition-synthetic-sections.s
index 0ae11fed1395a..d38597856e165 100644
--- a/lld/test/ELF/partition-synthetic-sections.s
+++ b/lld/test/ELF/partition-synthetic-sections.s
@@ -74,10 +74,10 @@
 
 // CHECK: Dynamic section
 // CHECK-NEXT: Tag
-// CHECK-NEXT: 0x0000000000000001 (NEEDED)             Shared library: verneed1.so.0
-// PART0-NEXT: 0x000000000000000e (SONAME)             Library soname: main.so
-// PART1-NEXT: 0x0000000000000001 (NEEDED)             Shared library: main.so
-// PART1-NEXT: 0x000000000000000e (SONAME)             Library soname: part1
+// CHECK-NEXT: 0x0000000000000001 (NEEDED)             Shared library: [verneed1.so.0]
+// PART0-NEXT: 0x000000000000000e (SONAME)             Library soname: [main.so]
+// PART1-NEXT: 0x0000000000000001 (NEEDED)             Shared library: [main.so]
+// PART1-NEXT: 0x000000000000000e (SONAME)             Library soname: [part1]
 // CHECK-NEXT: 0x0000000000000007 (RELA)               0x[[RELA_DYN_ADDR]]
 // CHECK-NEXT: 0x0000000000000008 (RELASZ)
 // CHECK-NEXT: 0x0000000000000009 (RELAENT)            24 (bytes)

diff  --git a/lld/test/ELF/push-state.s b/lld/test/ELF/push-state.s
index 038382d2f6a94..6477d9d9150b6 100644
--- a/lld/test/ELF/push-state.s
+++ b/lld/test/ELF/push-state.s
@@ -24,7 +24,7 @@
 
 // RUN: ld.lld -o %t.exe -push-state -as-needed -pop-state %t.so %t1.o
 // RUN: llvm-readobj --dynamic-table %t.exe | FileCheck -check-prefix=NO-AS-NEEDED %s
-// NO-AS-NEEDED: NEEDED Shared library: libfoo
+// NO-AS-NEEDED: NEEDED Shared library: [libfoo]
 
 
 // RUN: mkdir -p %t.dir

diff  --git a/lld/test/ELF/shared-ppc64.s b/lld/test/ELF/shared-ppc64.s
index 2258db2cc4592..00a27ad0d004e 100644
--- a/lld/test/ELF/shared-ppc64.s
+++ b/lld/test/ELF/shared-ppc64.s
@@ -28,7 +28,7 @@
 // CHECK:      DynamicSection [
 // CHECK-NEXT:   Tag                Type                 Name/Value
 // CHECK-NEXT:   0x000000000000001D RUNPATH              Library runpath: [foo:bar]
-// CHECK-NEXT:   0x0000000000000001 NEEDED               Shared library: {{.*}}2.so
+// CHECK-NEXT:   0x0000000000000001 NEEDED               Shared library: [{{.*}}2.so]
 // CHECK-NEXT:   0x0000000000000015 DEBUG                0x0
 // CHECK-NEXT:   0x0000000000000007 RELA                 [[RELADDR]]
 // CHECK-NEXT:   0x0000000000000008 RELASZ               [[RELSIZE]] (bytes)

diff  --git a/lld/test/ELF/shared.s b/lld/test/ELF/shared.s
index d8a690d3fd27d..800570e63b953 100644
--- a/lld/test/ELF/shared.s
+++ b/lld/test/ELF/shared.s
@@ -157,7 +157,7 @@
 // CHECK:      DynamicSection [
 // CHECK-NEXT:   Tag        Type                 Name/Value
 // CHECK-NEXT:   0x0000001D RUNPATH              Library runpath: [foo:bar]
-// CHECK-NEXT:   0x00000001 NEEDED               Shared library: {{.*}}2.so
+// CHECK-NEXT:   0x00000001 NEEDED               Shared library: [{{.*}}2.so]
 // CHECK-NEXT:   0x00000015 DEBUG                0x0
 // CHECK-NEXT:   0x00000011 REL                  [[RELADDR]]
 // CHECK-NEXT:   0x00000012 RELSZ                [[RELSIZE]] (bytes)

diff  --git a/lld/test/ELF/soname.s b/lld/test/ELF/soname.s
index 904b506f4b2c3..25c969dab7457 100644
--- a/lld/test/ELF/soname.s
+++ b/lld/test/ELF/soname.s
@@ -5,7 +5,7 @@
 // RUN: ld.lld %t.o %t.so %t2.so -o %t
 // RUN: llvm-readobj --dynamic-table %t | FileCheck %s
 
-// CHECK:  0x0000000000000001 NEEDED               Shared library: bar
+// CHECK:  0x0000000000000001 NEEDED               Shared library: [bar]
 // CHECK-NOT: NEEDED
 
 .global _start

diff  --git a/lld/test/ELF/soname2.s b/lld/test/ELF/soname2.s
index 6866f9802c198..67a9c24af5cdd 100644
--- a/lld/test/ELF/soname2.s
+++ b/lld/test/ELF/soname2.s
@@ -3,7 +3,7 @@
 // RUN: ld.lld %t.o -shared -soname=foo.so -o %t
 // RUN: llvm-readobj --dynamic-table %t | FileCheck %s
 
-// CHECK: 0x000000000000000E SONAME  Library soname: foo.so
+// CHECK: 0x000000000000000E SONAME  Library soname: [foo.so]
 
 .global _start
 _start:

diff  --git a/lld/test/ELF/wrap-drop-shared-original.s b/lld/test/ELF/wrap-drop-shared-original.s
index 59fef1493a567..f3784aa972796 100644
--- a/lld/test/ELF/wrap-drop-shared-original.s
+++ b/lld/test/ELF/wrap-drop-shared-original.s
@@ -20,13 +20,13 @@
 # RUN: llvm-readelf --dynamic --dyn-syms %t/libref-with-original-and-wrapped.so | \
 # RUN:   FileCheck --check-prefix=ORIGINAL-AND-WRAPPED %s
 
-# ORIGINAL-NOT: (NEEDED) Shared library: liboriginal.so
+# ORIGINAL-NOT: (NEEDED) Shared library: [liboriginal.so]
 # ORIGINAL:      Symbol table '.dynsym' contains 3 entries:
 # ORIGINAL:      NOTYPE  LOCAL  DEFAULT   UND
 # ORIGINAL-NEXT: NOTYPE  GLOBAL DEFAULT   UND __wrap_foo
 # ORIGINAL-NEXT: NOTYPE  GLOBAL DEFAULT     6 ref
 
-# ORIGINAL-AND-WRAPPED: (NEEDED) Shared library: liboriginal-and-wrapped.so
+# ORIGINAL-AND-WRAPPED: (NEEDED) Shared library: [liboriginal-and-wrapped.so]
 # ORIGINAL-AND-WRAPPED:      Symbol table '.dynsym' contains 3 entries:
 # ORIGINAL-AND-WRAPPED:      NOTYPE  LOCAL  DEFAULT   UND
 # ORIGINAL-AND-WRAPPED-NEXT: NOTYPE  GLOBAL DEFAULT   UND __wrap_foo

diff  --git a/llvm/test/tools/llvm-ifs/write-stub.test b/llvm/test/tools/llvm-ifs/write-stub.test
index e9f2d4f147b2c..44c194b77abc7 100644
--- a/llvm/test/tools/llvm-ifs/write-stub.test
+++ b/llvm/test/tools/llvm-ifs/write-stub.test
@@ -151,7 +151,7 @@ Symbols:
 # CHECK-NEXT:   0x[[DYNTABZ]]0000006 SYMTAB
 # CHECK-NEXT:   0x[[DYNTABZ]]0000005 STRTAB
 # CHECK-NEXT:   0x[[DYNTABZ]]000000A STRSZ
-# CHECK-NEXT:   0x[[DYNTABZ]]0000001 NEEDED Shared library: libc.so.6
+# CHECK-NEXT:   0x[[DYNTABZ]]0000001 NEEDED Shared library: [libc.so.6]
 # CHECK-NEXT:   0x[[DYNTABZ]]0000000 NULL
 # CHECK-NEXT: ]
 

diff  --git a/llvm/test/tools/llvm-readobj/ELF/dynamic-malformed.test b/llvm/test/tools/llvm-readobj/ELF/dynamic-malformed.test
index 05be15775e9e7..d160ea87208c3 100644
--- a/llvm/test/tools/llvm-readobj/ELF/dynamic-malformed.test
+++ b/llvm/test/tools/llvm-readobj/ELF/dynamic-malformed.test
@@ -100,15 +100,15 @@ ProgramHeaders:
 # BAD-STRING-LLVM-NEXT:   0x0000000000000005 STRTAB    0x1000
 # BAD-STRING-LLVM-NEXT:   0x000000000000000A STRSZ     1 (bytes)
 # BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb2: it goes past the end of the table (0xb1)
-# BAD-STRING-LLVM-NEXT:   0x0000000000000001 NEEDED    Shared library: <?>
+# BAD-STRING-LLVM-NEXT:   0x0000000000000001 NEEDED    Shared library: [<?>]
 # BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb3: it goes past the end of the table (0xb1)
-# BAD-STRING-LLVM-NEXT:   0x000000007FFFFFFF FILTER    Filter library: <?>
+# BAD-STRING-LLVM-NEXT:   0x000000007FFFFFFF FILTER    Filter library: [<?>]
 # BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb4: it goes past the end of the table (0xb1)
-# BAD-STRING-LLVM-NEXT:   0x000000007FFFFFFD AUXILIARY Auxiliary library: <?>
+# BAD-STRING-LLVM-NEXT:   0x000000007FFFFFFD AUXILIARY Auxiliary library: [<?>]
 # BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb5: it goes past the end of the table (0xb1)
-# BAD-STRING-LLVM-NEXT:   0x000000007FFFFFFE USED      Not needed object: <?>
+# BAD-STRING-LLVM-NEXT:   0x000000007FFFFFFE USED      Not needed object: [<?>]
 ## Note: there is no "string table at offset 0xb0..." warning here, because it was printed earlier.
-# BAD-STRING-LLVM-NEXT:   0x000000000000000E SONAME    Library soname: <?>
+# BAD-STRING-LLVM-NEXT:   0x000000000000000E SONAME    Library soname: [<?>]
 # BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb7: it goes past the end of the table (0xb1)
 # BAD-STRING-LLVM-NEXT:   0x000000000000000F RPATH     Library rpath: [<?>]
 # BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb8: it goes past the end of the table (0xb1)
@@ -121,15 +121,15 @@ ProgramHeaders:
 # BAD-STRING-GNU-NEXT:   0x0000000000000005 (STRTAB)    0x1000
 # BAD-STRING-GNU-NEXT:   0x000000000000000a (STRSZ)     1 (bytes)
 # BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb2: it goes past the end of the table (0xb1)
-# BAD-STRING-GNU-NEXT:   0x0000000000000001 (NEEDED)    Shared library: <?>
+# BAD-STRING-GNU-NEXT:   0x0000000000000001 (NEEDED)    Shared library: [<?>]
 # BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb3: it goes past the end of the table (0xb1)
-# BAD-STRING-GNU-NEXT:   0x000000007fffffff (FILTER)    Filter library: <?>
+# BAD-STRING-GNU-NEXT:   0x000000007fffffff (FILTER)    Filter library: [<?>]
 # BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb4: it goes past the end of the table (0xb1)
-# BAD-STRING-GNU-NEXT:   0x000000007ffffffd (AUXILIARY) Auxiliary library: <?>
+# BAD-STRING-GNU-NEXT:   0x000000007ffffffd (AUXILIARY) Auxiliary library: [<?>]
 # BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb5: it goes past the end of the table (0xb1)
-# BAD-STRING-GNU-NEXT:   0x000000007ffffffe (USED)      Not needed object: <?>
+# BAD-STRING-GNU-NEXT:   0x000000007ffffffe (USED)      Not needed object: [<?>]
 # BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb6: it goes past the end of the table (0xb1)
-# BAD-STRING-GNU-NEXT:   0x000000000000000e (SONAME)    Library soname: <?>
+# BAD-STRING-GNU-NEXT:   0x000000000000000e (SONAME)    Library soname: [<?>]
 # BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb7: it goes past the end of the table (0xb1)
 # BAD-STRING-GNU-NEXT:   0x000000000000000f (RPATH)     Library rpath: [<?>]
 # BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb8: it goes past the end of the table (0xb1)
@@ -199,8 +199,8 @@ ProgramHeaders:
 #      BAD-STRTAB-ERR2: warning: '[[FILE]]': unable to parse DT_STRTAB: virtual address is not in any segment: 0x2000000
 #      BAD-STRTAB-LLVM: LoadName: <Not found>
 #           BAD-STRTAB: warning: '[[FILE]]': string table was not found
-# BAD-STRTAB-LLVM-NEXT: 0x0000000000000001  NEEDED   Shared library: <?>
-#  BAD-STRTAB-GNU-NEXT: 0x0000000000000001 (NEEDED)  Shared library: <?>
+# BAD-STRTAB-LLVM-NEXT: 0x0000000000000001  NEEDED   Shared library: [<?>]
+#  BAD-STRTAB-GNU-NEXT: 0x0000000000000001 (NEEDED)  Shared library: [<?>]
 #           BAD-STRTAB: NeededLibraries [
 #           BAD-STRTAB:   <?>
 #           BAD-STRTAB: ]
@@ -313,15 +313,15 @@ ProgramHeaders:
 
 # NOT-TERMINATED-LLVM: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb4: the string table is not null-terminated
 # NOT-TERMINATED:      warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb0: the string table is not null-terminated
-# NOT-TERMINATED-NEXT: {{[(]?}}NEEDED{{[)]?}}    Shared library: <?>
+# NOT-TERMINATED-NEXT: {{[(]?}}NEEDED{{[)]?}}    Shared library: [<?>]
 # NOT-TERMINATED-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb1: the string table is not null-terminated
-# NOT-TERMINATED-NEXT: {{[(]?}}FILTER{{[)]?}}    Filter library: <?>
+# NOT-TERMINATED-NEXT: {{[(]?}}FILTER{{[)]?}}    Filter library: [<?>]
 # NOT-TERMINATED-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb2: the string table is not null-terminated
-# NOT-TERMINATED-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: <?>
+# NOT-TERMINATED-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: [<?>]
 # NOT-TERMINATED-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb3: the string table is not null-terminated
-# NOT-TERMINATED-NEXT: {{[(]?}}USED{{[)]?}}      Not needed object: <?>
+# NOT-TERMINATED-NEXT: {{[(]?}}USED{{[)]?}}      Not needed object: [<?>]
 # NOT-TERMINATED-GNU-NEXT:  warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb4: the string table is not null-terminated
-# NOT-TERMINATED-NEXT: {{[(]?}}SONAME{{[)]?}}    Library soname: <?>
+# NOT-TERMINATED-NEXT: {{[(]?}}SONAME{{[)]?}}    Library soname: [<?>]
 # NOT-TERMINATED-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb5: the string table is not null-terminated
 # NOT-TERMINATED-NEXT: {{[(]?}}RPATH{{[)]?}}     Library rpath: [<?>]
 # NOT-TERMINATED-GREQ-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb6: the string table is not null-terminated
@@ -390,11 +390,11 @@ ProgramHeaders:
 ## as normal. Since the file ends with a zero byte, strings are dumped, but if it didn't,
 ## we'd get <?> printed instead. The important bit is that we don't get the past the end warning.
 
-# BEFORE-THE-EOF:      {{[(]?}}NEEDED{{[)]?}}    Shared library: test.soabc
-# BEFORE-THE-EOF-NEXT: {{[(]?}}FILTER{{[)]?}}    Filter library: est.soabc
-# BEFORE-THE-EOF-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: st.soabc
-# BEFORE-THE-EOF-NEXT: {{[(]?}}USED{{[)]?}}      Not needed object: t.soabc
-# BEFORE-THE-EOF-NEXT: {{[(]?}}SONAME{{[)]?}}    Library soname: .soabc
+# BEFORE-THE-EOF:      {{[(]?}}NEEDED{{[)]?}}    Shared library: [test.soabc]
+# BEFORE-THE-EOF-NEXT: {{[(]?}}FILTER{{[)]?}}    Filter library: [est.soabc]
+# BEFORE-THE-EOF-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: [st.soabc]
+# BEFORE-THE-EOF-NEXT: {{[(]?}}USED{{[)]?}}      Not needed object: [t.soabc]
+# BEFORE-THE-EOF-NEXT: {{[(]?}}SONAME{{[)]?}}    Library soname: [.soabc]
 # BEFORE-THE-EOF-NEXT: {{[(]?}}RPATH{{[)]?}}     Library rpath: [soabc]
 # BEFORE-THE-EOF-NEXT: {{[(]?}}RUNPATH{{[)]?}}   Library runpath: [oabc]
 # BEFORE-THE-EOF-NEXT: {{[(]?}}NULL{{[)]?}}      0x0
@@ -406,11 +406,11 @@ ProgramHeaders:
 
 # PAST-THE-EOF:      warning: '[[FILE]]': the dynamic string table at 0xb0 goes past the end of the file (0x2c0) with DT_STRSZ = 0x211
 # PAST-THE-EOF:      warning: '[[FILE]]': string table was not found
-# PAST-THE-EOF:      {{[(]?}}NEEDED{{[)]?}}    Shared library: <?>
-# PAST-THE-EOF-NEXT: {{[(]?}}FILTER{{[)]?}}    Filter library: <?>
-# PAST-THE-EOF-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: <?>
-# PAST-THE-EOF-NEXT: {{[(]?}}USED{{[)]?}}      Not needed object: <?>
-# PAST-THE-EOF-NEXT: {{[(]?}}SONAME{{[)]?}}    Library soname: <?>
+# PAST-THE-EOF:      {{[(]?}}NEEDED{{[)]?}}    Shared library: [<?>]
+# PAST-THE-EOF-NEXT: {{[(]?}}FILTER{{[)]?}}    Filter library: [<?>]
+# PAST-THE-EOF-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: [<?>]
+# PAST-THE-EOF-NEXT: {{[(]?}}USED{{[)]?}}      Not needed object: [<?>]
+# PAST-THE-EOF-NEXT: {{[(]?}}SONAME{{[)]?}}    Library soname: [<?>]
 # PAST-THE-EOF-NEXT: {{[(]?}}RPATH{{[)]?}}     Library rpath: [<?>]
 # PAST-THE-EOF-NEXT: {{[(]?}}RUNPATH{{[)]?}}   Library runpath: [<?>]
 # PAST-THE-EOF-NEXT: {{[(]?}}NULL{{[)]?}}      0x0

diff  --git a/llvm/test/tools/llvm-readobj/ELF/dynamic-tags.test b/llvm/test/tools/llvm-readobj/ELF/dynamic-tags.test
index e0f293ae5273f..dec2353fa74dd 100644
--- a/llvm/test/tools/llvm-readobj/ELF/dynamic-tags.test
+++ b/llvm/test/tools/llvm-readobj/ELF/dynamic-tags.test
@@ -13,7 +13,7 @@
 
 #      LLVM64:DynamicSection [ (62 entries)
 # LLVM64-NEXT:  Tag                Type                 Name/Value
-# LLVM64-NEXT:  0x0000000000000001 NEEDED               Shared library: D
+# LLVM64-NEXT:  0x0000000000000001 NEEDED               Shared library: [D]
 # LLVM64-NEXT:  0x0000000000000002 PLTRELSZ             16 (bytes)
 # LLVM64-NEXT:  0x0000000000000003 PLTGOT               0x1000
 # LLVM64-NEXT:  0x0000000000000004 HASH                 0x1000
@@ -26,8 +26,8 @@
 # LLVM64-NEXT:  0x000000000000000B SYMENT               2439 (bytes)
 # LLVM64-NEXT:  0x000000000000000C INIT                 0x1000
 # LLVM64-NEXT:  0x000000000000000D FINI                 0x1000
-# LLVM64-NEXT:  0x000000000000000E SONAME               Library soname: U
-# LLVM64-NEXT:  0x000000000000000F RPATH                Library rpath: [x:w:U]
+# LLVM64-NEXT:  0x000000000000000E SONAME               Library soname: [U]
+# LLVM64-NEXT:  0x000000000000000F RPATH                Library rpath: [f]
 # LLVM64-NEXT:  0x0000000000000010 SYMBOLIC             0x1234567890ABCDEF
 # LLVM64-NEXT:  0x0000000000000011 REL                  0x1000
 # LLVM64-NEXT:  0x0000000000000012 RELSZ                16 (bytes)
@@ -68,9 +68,9 @@
 # LLVM64-NEXT:  0x000000006FFFFFFD VERDEFNUM            0
 # LLVM64-NEXT:  0x000000006FFFFFFE VERNEED              0x1000
 # LLVM64-NEXT:  0x000000006FFFFFFF VERNEEDNUM           0
-# LLVM64-NEXT:  0x000000007FFFFFFD AUXILIARY            Auxiliary library: D
-# LLVM64-NEXT:  0x000000007FFFFFFE USED                 Not needed object: U
-# LLVM64-NEXT:  0x000000007FFFFFFF FILTER               Filter library: U
+# LLVM64-NEXT:  0x000000007FFFFFFD AUXILIARY            Auxiliary library: [D]
+# LLVM64-NEXT:  0x000000007FFFFFFE USED                 Not needed object: [U]
+# LLVM64-NEXT:  0x000000007FFFFFFF FILTER               Filter library: [U]
 # LLVM64-NEXT:  0x0000000012345678 <unknown:>0x12345678 0x8765432187654321
 # LLVM64-NEXT:  0x000000006ABCDEF0 <unknown:>0x6abcdef0 0x9988776655443322
 # LLVM64-NEXT:  0x0000000076543210 <unknown:>0x76543210 0x5555666677778888
@@ -79,7 +79,7 @@
 
 #      GNU64:Dynamic section at offset {{.*}} contains 62 entries:
 # GNU64-NEXT:  Tag                Type                   Name/Value
-# GNU64-NEXT:  0x0000000000000001 (NEEDED)               Shared library: D
+# GNU64-NEXT:  0x0000000000000001 (NEEDED)               Shared library: [D]
 # GNU64-NEXT:  0x0000000000000002 (PLTRELSZ)             16 (bytes)
 # GNU64-NEXT:  0x0000000000000003 (PLTGOT)               0x1000
 # GNU64-NEXT:  0x0000000000000004 (HASH)                 0x1000
@@ -92,8 +92,8 @@
 # GNU64-NEXT:  0x000000000000000b (SYMENT)               2439 (bytes)
 # GNU64-NEXT:  0x000000000000000c (INIT)                 0x1000
 # GNU64-NEXT:  0x000000000000000d (FINI)                 0x1000
-# GNU64-NEXT:  0x000000000000000e (SONAME)               Library soname: U
-# GNU64-NEXT:  0x000000000000000f (RPATH)                Library rpath: [x:w:U]
+# GNU64-NEXT:  0x000000000000000e (SONAME)               Library soname: [U]
+# GNU64-NEXT:  0x000000000000000f (RPATH)                Library rpath: [f]
 # GNU64-NEXT:  0x0000000000000010 (SYMBOLIC)             0x1234567890abcdef
 # GNU64-NEXT:  0x0000000000000011 (REL)                  0x1000
 # GNU64-NEXT:  0x0000000000000012 (RELSZ)                16 (bytes)
@@ -134,9 +134,9 @@
 # GNU64-NEXT:  0x000000006ffffffd (VERDEFNUM)            0
 # GNU64-NEXT:  0x000000006ffffffe (VERNEED)              0x1000
 # GNU64-NEXT:  0x000000006fffffff (VERNEEDNUM)           0
-# GNU64-NEXT:  0x000000007ffffffd (AUXILIARY)            Auxiliary library: D
-# GNU64-NEXT:  0x000000007ffffffe (USED)                 Not needed object: U
-# GNU64-NEXT:  0x000000007fffffff (FILTER)               Filter library: U
+# GNU64-NEXT:  0x000000007ffffffd (AUXILIARY)            Auxiliary library: [D]
+# GNU64-NEXT:  0x000000007ffffffe (USED)                 Not needed object: [U]
+# GNU64-NEXT:  0x000000007fffffff (FILTER)               Filter library: [U]
 # GNU64-NEXT:  0x0000000012345678 (<unknown:>0x12345678) 0x8765432187654321
 # GNU64-NEXT:  0x000000006abcdef0 (<unknown:>0x6abcdef0) 0x9988776655443322
 # GNU64-NEXT:  0x0000000076543210 (<unknown:>0x76543210) 0x5555666677778888
@@ -218,11 +218,9 @@
 # JSON64-NEXT:  {
 # JSON64-NEXT:      "Tag": 15,
 # JSON64-NEXT:      "Type": "RPATH",
-# JSON64-NEXT:      "Value": 9,
+# JSON64-NEXT:      "Value": 5,
 # JSON64-NEXT:      "Path": [
-# JSON64-NEXT:          "x",
-# JSON64-NEXT:          "w",
-# JSON64-NEXT:          "U"
+# JSON64-NEXT:          "f"
 # JSON64-NEXT:      ]
 # JSON64-NEXT:  },
 # JSON64-NEXT:  {
@@ -515,7 +513,7 @@ Sections:
     Type:    SHT_STRTAB
     Address: 0x1000
     Size:    0x10
-    Content: "004400550066007700783A773A5500"
+    Content: "004400550066007700"
   - Name:    .dynamic
     Type:    SHT_DYNAMIC
     Address: 0x1010
@@ -549,7 +547,7 @@ Sections:
       - Tag:   DT_SONAME
         Value: 0x3
       - Tag:   DT_RPATH
-        Value: 0x9
+        Value: 0x5
       - Tag:   DT_SYMBOLIC
         Value: [[SYMBOLIC=0x1234567890abcdef]]
       - Tag:   DT_REL
@@ -670,7 +668,7 @@ ProgramHeaders:
 
 #      LLVM32:DynamicSection [ (62 entries)
 # LLVM32-NEXT:  Tag        Type                 Name/Value
-# LLVM32-NEXT:  0x00000001 NEEDED               Shared library: D
+# LLVM32-NEXT:  0x00000001 NEEDED               Shared library: [D]
 # LLVM32-NEXT:  0x00000002 PLTRELSZ             16 (bytes)
 # LLVM32-NEXT:  0x00000003 PLTGOT               0x1000
 # LLVM32-NEXT:  0x00000004 HASH                 0x1000
@@ -683,8 +681,8 @@ ProgramHeaders:
 # LLVM32-NEXT:  0x0000000B SYMENT               2439 (bytes)
 # LLVM32-NEXT:  0x0000000C INIT                 0x1000
 # LLVM32-NEXT:  0x0000000D FINI                 0x1000
-# LLVM32-NEXT:  0x0000000E SONAME               Library soname: U
-# LLVM32-NEXT:  0x0000000F RPATH                Library rpath: [x:w:U]
+# LLVM32-NEXT:  0x0000000E SONAME               Library soname: [U]
+# LLVM32-NEXT:  0x0000000F RPATH                Library rpath: [f]
 # LLVM32-NEXT:  0x00000010 SYMBOLIC             0x12345678
 # LLVM32-NEXT:  0x00000011 REL                  0x1000
 # LLVM32-NEXT:  0x00000012 RELSZ                16 (bytes)
@@ -725,9 +723,9 @@ ProgramHeaders:
 # LLVM32-NEXT:  0x6FFFFFFD VERDEFNUM            0
 # LLVM32-NEXT:  0x6FFFFFFE VERNEED              0x1000
 # LLVM32-NEXT:  0x6FFFFFFF VERNEEDNUM           0
-# LLVM32-NEXT:  0x7FFFFFFD AUXILIARY            Auxiliary library: D
-# LLVM32-NEXT:  0x7FFFFFFE USED                 Not needed object: U
-# LLVM32-NEXT:  0x7FFFFFFF FILTER               Filter library: U
+# LLVM32-NEXT:  0x7FFFFFFD AUXILIARY            Auxiliary library: [D]
+# LLVM32-NEXT:  0x7FFFFFFE USED                 Not needed object: [U]
+# LLVM32-NEXT:  0x7FFFFFFF FILTER               Filter library: [U]
 # LLVM32-NEXT:  0x12345678 <unknown:>0x12345678 0x87654321
 # LLVM32-NEXT:  0x6ABCDEF0 <unknown:>0x6abcdef0 0x99887766
 # LLVM32-NEXT:  0x76543210 <unknown:>0x76543210 0x55556666
@@ -736,7 +734,7 @@ ProgramHeaders:
 
 #      GNU32:Dynamic section at offset 0x84 contains 62 entries:
 # GNU32-NEXT:  Tag        Type                   Name/Value
-# GNU32-NEXT:  0x00000001 (NEEDED)               Shared library: D
+# GNU32-NEXT:  0x00000001 (NEEDED)               Shared library: [D]
 # GNU32-NEXT:  0x00000002 (PLTRELSZ)             16 (bytes)
 # GNU32-NEXT:  0x00000003 (PLTGOT)               0x1000
 # GNU32-NEXT:  0x00000004 (HASH)                 0x1000
@@ -749,8 +747,8 @@ ProgramHeaders:
 # GNU32-NEXT:  0x0000000b (SYMENT)               2439 (bytes)
 # GNU32-NEXT:  0x0000000c (INIT)                 0x1000
 # GNU32-NEXT:  0x0000000d (FINI)                 0x1000
-# GNU32-NEXT:  0x0000000e (SONAME)               Library soname: U
-# GNU32-NEXT:  0x0000000f (RPATH)                Library rpath: [x:w:U]
+# GNU32-NEXT:  0x0000000e (SONAME)               Library soname: [U]
+# GNU32-NEXT:  0x0000000f (RPATH)                Library rpath: [f]
 # GNU32-NEXT:  0x00000010 (SYMBOLIC)             0x12345678
 # GNU32-NEXT:  0x00000011 (REL)                  0x1000
 # GNU32-NEXT:  0x00000012 (RELSZ)                16 (bytes)
@@ -791,9 +789,9 @@ ProgramHeaders:
 # GNU32-NEXT:  0x6ffffffd (VERDEFNUM)            0
 # GNU32-NEXT:  0x6ffffffe (VERNEED)              0x1000
 # GNU32-NEXT:  0x6fffffff (VERNEEDNUM)           0
-# GNU32-NEXT:  0x7ffffffd (AUXILIARY)            Auxiliary library: D
-# GNU32-NEXT:  0x7ffffffe (USED)                 Not needed object: U
-# GNU32-NEXT:  0x7fffffff (FILTER)               Filter library: U
+# GNU32-NEXT:  0x7ffffffd (AUXILIARY)            Auxiliary library: [D]
+# GNU32-NEXT:  0x7ffffffe (USED)                 Not needed object: [U]
+# GNU32-NEXT:  0x7fffffff (FILTER)               Filter library: [U]
 # GNU32-NEXT:  0x12345678 (<unknown:>0x12345678) 0x87654321
 # GNU32-NEXT:  0x6abcdef0 (<unknown:>0x6abcdef0) 0x99887766
 # GNU32-NEXT:  0x76543210 (<unknown:>0x76543210) 0x55556666
@@ -868,7 +866,7 @@ Sections:
 
 # PHENTSIZE-LLVM:      DynamicSection [ (62 entries)
 # PHENTSIZE-LLVM-NEXT:   Tag                Type                 Name/Value
-# PHENTSIZE-LLVM-NEXT:   0x0000000000000001 NEEDED               Shared library: <?>
+# PHENTSIZE-LLVM-NEXT:   0x0000000000000001 NEEDED               Shared library: [<?>]
 # PHENTSIZE-LLVM-NEXT:   0x0000000000000002 PLTRELSZ             16 (bytes)
 # PHENTSIZE-LLVM-NEXT:   0x0000000000000003 PLTGOT               0x1000
 # PHENTSIZE-LLVM-NEXT:   0x0000000000000004 HASH                 0x1000
@@ -881,7 +879,7 @@ Sections:
 # PHENTSIZE-LLVM-NEXT:   0x000000000000000B SYMENT               2439 (bytes)
 # PHENTSIZE-LLVM-NEXT:   0x000000000000000C INIT                 0x1000
 # PHENTSIZE-LLVM-NEXT:   0x000000000000000D FINI                 0x1000
-# PHENTSIZE-LLVM-NEXT:   0x000000000000000E SONAME               Library soname: <?>
+# PHENTSIZE-LLVM-NEXT:   0x000000000000000E SONAME               Library soname: [<?>]
 # PHENTSIZE-LLVM-NEXT:   0x000000000000000F RPATH                Library rpath: [<?>]
 # PHENTSIZE-LLVM-NEXT:   0x0000000000000010 SYMBOLIC             0x1234567890ABCDEF
 # PHENTSIZE-LLVM-NEXT:   0x0000000000000011 REL                  0x1000
@@ -923,9 +921,9 @@ Sections:
 # PHENTSIZE-LLVM-NEXT:   0x000000006FFFFFFD VERDEFNUM            0
 # PHENTSIZE-LLVM-NEXT:   0x000000006FFFFFFE VERNEED              0x1000
 # PHENTSIZE-LLVM-NEXT:   0x000000006FFFFFFF VERNEEDNUM           0
-# PHENTSIZE-LLVM-NEXT:   0x000000007FFFFFFD AUXILIARY            Auxiliary library: <?>
-# PHENTSIZE-LLVM-NEXT:   0x000000007FFFFFFE USED                 Not needed object: <?>
-# PHENTSIZE-LLVM-NEXT:   0x000000007FFFFFFF FILTER               Filter library: <?>
+# PHENTSIZE-LLVM-NEXT:   0x000000007FFFFFFD AUXILIARY            Auxiliary library: [<?>]
+# PHENTSIZE-LLVM-NEXT:   0x000000007FFFFFFE USED                 Not needed object: [<?>]
+# PHENTSIZE-LLVM-NEXT:   0x000000007FFFFFFF FILTER               Filter library: [<?>]
 # PHENTSIZE-LLVM-NEXT:   0x0000000012345678 <unknown:>0x12345678 0x8765432187654321
 # PHENTSIZE-LLVM-NEXT:   0x000000006ABCDEF0 <unknown:>0x6abcdef0 0x9988776655443322
 # PHENTSIZE-LLVM-NEXT:   0x0000000076543210 <unknown:>0x76543210 0x5555666677778888
@@ -935,7 +933,7 @@ Sections:
 # PHENTSIZE-GNU:      Dynamic section at offset 0xc0 contains 62 entries:
 # PHENTSIZE-GNU-NEXT:   Tag                Type                   Name/Value
 # PHENTSIZE-GNU-NEXT: warning: '[[FILE]]': string table was not found
-# PHENTSIZE-GNU-NEXT:   0x0000000000000001 (NEEDED)               Shared library: <?>
+# PHENTSIZE-GNU-NEXT:   0x0000000000000001 (NEEDED)               Shared library: [<?>]
 # PHENTSIZE-GNU-NEXT:   0x0000000000000002 (PLTRELSZ)             16 (bytes)
 # PHENTSIZE-GNU-NEXT:   0x0000000000000003 (PLTGOT)               0x1000
 # PHENTSIZE-GNU-NEXT:   0x0000000000000004 (HASH)                 0x1000
@@ -948,7 +946,7 @@ Sections:
 # PHENTSIZE-GNU-NEXT:   0x000000000000000b (SYMENT)               2439 (bytes)
 # PHENTSIZE-GNU-NEXT:   0x000000000000000c (INIT)                 0x1000
 # PHENTSIZE-GNU-NEXT:   0x000000000000000d (FINI)                 0x1000
-# PHENTSIZE-GNU-NEXT:   0x000000000000000e (SONAME)               Library soname: <?>
+# PHENTSIZE-GNU-NEXT:   0x000000000000000e (SONAME)               Library soname: [<?>]
 # PHENTSIZE-GNU-NEXT:   0x000000000000000f (RPATH)                Library rpath: [<?>]
 # PHENTSIZE-GNU-NEXT:   0x0000000000000010 (SYMBOLIC)             0x1234567890abcdef
 # PHENTSIZE-GNU-NEXT:   0x0000000000000011 (REL)                  0x1000
@@ -990,9 +988,9 @@ Sections:
 # PHENTSIZE-GNU-NEXT:   0x000000006ffffffd (VERDEFNUM)            0
 # PHENTSIZE-GNU-NEXT:   0x000000006ffffffe (VERNEED)              0x1000
 # PHENTSIZE-GNU-NEXT:   0x000000006fffffff (VERNEEDNUM)           0
-# PHENTSIZE-GNU-NEXT:   0x000000007ffffffd (AUXILIARY)            Auxiliary library: <?>
-# PHENTSIZE-GNU-NEXT:   0x000000007ffffffe (USED)                 Not needed object: <?>
-# PHENTSIZE-GNU-NEXT:   0x000000007fffffff (FILTER)               Filter library: <?>
+# PHENTSIZE-GNU-NEXT:   0x000000007ffffffd (AUXILIARY)            Auxiliary library: [<?>]
+# PHENTSIZE-GNU-NEXT:   0x000000007ffffffe (USED)                 Not needed object: [<?>]
+# PHENTSIZE-GNU-NEXT:   0x000000007fffffff (FILTER)               Filter library: [<?>]
 # PHENTSIZE-GNU-NEXT:   0x0000000012345678 (<unknown:>0x12345678) 0x8765432187654321
 # PHENTSIZE-GNU-NEXT:   0x000000006abcdef0 (<unknown:>0x6abcdef0) 0x9988776655443322
 # PHENTSIZE-GNU-NEXT:   0x0000000076543210 (<unknown:>0x76543210) 0x5555666677778888

diff  --git a/llvm/test/tools/llvm-readobj/ELF/loadname.test b/llvm/test/tools/llvm-readobj/ELF/loadname.test
index 359b9ca762334..18db00845e00b 100644
--- a/llvm/test/tools/llvm-readobj/ELF/loadname.test
+++ b/llvm/test/tools/llvm-readobj/ELF/loadname.test
@@ -15,7 +15,7 @@
 # GNU-NEXT:   Tag                Type     Name/Value
 # GNU-NEXT:   0x0000000000000005 (STRTAB) 0x0
 # GNU-NEXT:   0x000000000000000a (STRSZ)  8 (bytes)
-# GNU-NEXT:   0x000000000000000e (SONAME) Library soname: test.so
+# GNU-NEXT:   0x000000000000000e (SONAME) Library soname: [test.so]
 # GNU-NEXT:   0x0000000000000000 (NULL)   0x0
 
 !ELF
@@ -62,4 +62,4 @@ ProgramHeaders:
 # BROKEN-OFFSET:      warning: '[[FILE]]': unable to parse DT_STRTAB: can't map virtual address 0xfffe to the segment with index 1: the segment ends at 0x10077, which is greater than the file size (0x228)
 # BROKEN-OFFSET:      warning: '[[FILE]]': string table was not found
 # BROKEN-OFFSET-LLVM: LoadName: <?>
-# BROKEN-OFFSET-GNU:  0x000000000000000e (SONAME) Library soname: <?>
+# BROKEN-OFFSET-GNU:  0x000000000000000e (SONAME) Library soname: [<?>]

diff  --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp
index 1b6600637800e..7596d90b4fcd2 100644
--- a/llvm/tools/llvm-readobj/ELFDumper.cpp
+++ b/llvm/tools/llvm-readobj/ELFDumper.cpp
@@ -2323,12 +2323,6 @@ std::string ELFDumper<ELFT>::getDynamicEntry(uint64_t Type,
     return OS.str();
   };
 
-  const std::map<uint64_t, const char *> TagNames = {
-      {DT_NEEDED, "Shared library"},       {DT_SONAME, "Library soname"},
-      {DT_AUXILIARY, "Auxiliary library"}, {DT_USED, "Not needed object"},
-      {DT_FILTER, "Filter library"},       {DT_RPATH, "Library rpath"},
-      {DT_RUNPATH, "Library runpath"},
-  };
   // Handle custom printing of architecture specific tags
   switch (Obj.getHeader().e_machine) {
   case EM_AARCH64:
@@ -2489,11 +2483,18 @@ std::string ELFDumper<ELFT>::getDynamicEntry(uint64_t Type,
   case DT_AUXILIARY:
   case DT_USED:
   case DT_FILTER:
-    return (Twine(TagNames.at(Type)) + ": " + getDynamicString(Value)).str();
   case DT_RPATH:
-  case DT_RUNPATH:
+  case DT_RUNPATH: {
+    const std::map<uint64_t, const char *> TagNames = {
+        {DT_NEEDED, "Shared library"},       {DT_SONAME, "Library soname"},
+        {DT_AUXILIARY, "Auxiliary library"}, {DT_USED, "Not needed object"},
+        {DT_FILTER, "Filter library"},       {DT_RPATH, "Library rpath"},
+        {DT_RUNPATH, "Library runpath"},
+    };
+
     return (Twine(TagNames.at(Type)) + ": [" + getDynamicString(Value) + "]")
         .str();
+  }
   case DT_FLAGS:
     return FormatFlags(Value, ArrayRef(ElfDynamicDTFlags));
   case DT_FLAGS_1:


        


More information about the llvm-commits mailing list