diff options
-rw-r--r-- | lld/test/ELF/new-dtags.test | 4 | ||||
-rw-r--r-- | lld/test/ELF/shared-ppc64.s | 2 | ||||
-rw-r--r-- | lld/test/ELF/shared.s | 2 | ||||
-rw-r--r-- | llvm/test/tools/llvm-readobj/elf-dynamic-malformed.test | 8 | ||||
-rw-r--r-- | llvm/test/tools/llvm-readobj/elf-dynamic-tags.test | 8 | ||||
-rw-r--r-- | llvm/test/tools/llvm-readobj/rpath.test | 2 | ||||
-rw-r--r-- | llvm/tools/llvm-readobj/ELFDumper.cpp | 35 |
7 files changed, 24 insertions, 37 deletions
diff --git a/lld/test/ELF/new-dtags.test b/lld/test/ELF/new-dtags.test index bceea4bd6d6..3801ef71a1c 100644 --- a/lld/test/ELF/new-dtags.test +++ b/lld/test/ELF/new-dtags.test @@ -10,11 +10,11 @@ // RUN: llvm-readobj --dynamic-table %t2 | FileCheck --check-prefix=ENABLE %s // DISABLE: DynamicSection [ -// DISABLE: 0x000000000000000F RPATH /somepath +// DISABLE: 0x000000000000000F RPATH Library rpath: [/somepath] // DISABLE-NOT: RUNPATH // DISABLE: ] // ENABLE: DynamicSection [ -// ENABLE: 0x000000000000001D RUNPATH /somepath +// ENABLE: 0x000000000000001D RUNPATH Library runpath: [/somepath] // ENABLE-NOT: RPATH // ENABLE: ] diff --git a/lld/test/ELF/shared-ppc64.s b/lld/test/ELF/shared-ppc64.s index 884da809097..f317cedc843 100644 --- a/lld/test/ELF/shared-ppc64.s +++ b/lld/test/ELF/shared-ppc64.s @@ -27,7 +27,7 @@ // CHECK: DynamicSection [ // CHECK-NEXT: Tag Type Name/Value -// CHECK-NEXT: 0x000000000000001D RUNPATH foo:bar +// CHECK-NEXT: 0x000000000000001D RUNPATH Library runpath: [foo:bar] // CHECK-NEXT: 0x0000000000000001 NEEDED Shared library: [{{.*}}2.so] // CHECK-NEXT: 0x0000000000000015 DEBUG 0x0 // CHECK-NEXT: 0x0000000000000007 RELA [[RELADDR]] diff --git a/lld/test/ELF/shared.s b/lld/test/ELF/shared.s index 3dcffb3ce48..592c5e3c177 100644 --- a/lld/test/ELF/shared.s +++ b/lld/test/ELF/shared.s @@ -250,7 +250,7 @@ // CHECK: DynamicSection [ // CHECK-NEXT: Tag Type Name/Value -// CHECK-NEXT: 0x0000001D RUNPATH foo:bar +// CHECK-NEXT: 0x0000001D RUNPATH Library runpath: [foo:bar] // CHECK-NEXT: 0x00000001 NEEDED Shared library: [{{.*}}2.so] // CHECK-NEXT: 0x00000015 DEBUG 0x0 // CHECK-NEXT: 0x00000011 REL [[RELADDR]] diff --git a/llvm/test/tools/llvm-readobj/elf-dynamic-malformed.test b/llvm/test/tools/llvm-readobj/elf-dynamic-malformed.test index 337fedec5a5..a8302d37d82 100644 --- a/llvm/test/tools/llvm-readobj/elf-dynamic-malformed.test +++ b/llvm/test/tools/llvm-readobj/elf-dynamic-malformed.test @@ -79,8 +79,8 @@ ProgramHeaders: # BAD-STRING-LLVM: 0x000000007FFFFFFD AUXILIARY Auxiliary library: <Invalid offset 0x1> # BAD-STRING-LLVM: 0x000000007FFFFFFE USED Not needed object: <Invalid offset 0x1> # BAD-STRING-LLVM: 0x000000000000000E SONAME Library soname: <Invalid offset 0x1> -# BAD-STRING-LLVM: 0x000000000000000F RPATH <Invalid offset 0x1> -# BAD-STRING-LLVM: 0x000000000000001D RUNPATH <Invalid offset 0x1> +# BAD-STRING-LLVM: 0x000000000000000F RPATH Library rpath: <Invalid offset 0x1> +# BAD-STRING-LLVM: 0x000000000000001D RUNPATH Library runpath: <Invalid offset 0x1> # BAD-STRING-GNU: 0x000000000000000a (STRSZ) 1 (bytes) # BAD-STRING-GNU: 0x0000000000000001 (NEEDED) Shared library: <Invalid offset 0x1> @@ -88,8 +88,8 @@ ProgramHeaders: # BAD-STRING-GNU: 0x000000007ffffffd (AUXILIARY) Auxiliary library: <Invalid offset 0x1> # BAD-STRING-GNU: 0x000000007ffffffe (USED) Not needed object: <Invalid offset 0x1> # BAD-STRING-GNU: 0x000000000000000e (SONAME) Library soname: <Invalid offset 0x1> -# BAD-STRING-GNU: 0x000000000000000f (RPATH) <Invalid offset 0x1> -# BAD-STRING-GNU: 0x000000000000001d (RUNPATH) <Invalid offset 0x1> +# BAD-STRING-GNU: 0x000000000000000f (RPATH) Library rpath: <Invalid offset 0x1> +# BAD-STRING-GNU: 0x000000000000001d (RUNPATH) Library runpath: <Invalid offset 0x1> --- !ELF FileHeader: diff --git a/llvm/test/tools/llvm-readobj/elf-dynamic-tags.test b/llvm/test/tools/llvm-readobj/elf-dynamic-tags.test index 2e4f390920f..dea94bee9ad 100644 --- a/llvm/test/tools/llvm-readobj/elf-dynamic-tags.test +++ b/llvm/test/tools/llvm-readobj/elf-dynamic-tags.test @@ -19,7 +19,7 @@ # LLVM-NEXT: 0x000000000000000C INIT 0x1000 # LLVM-NEXT: 0x000000000000000D FINI 0x1000 # LLVM-NEXT: 0x000000000000000E SONAME Library soname: [U] -# LLVM-NEXT: 0x000000000000000F RPATH f +# LLVM-NEXT: 0x000000000000000F RPATH Library rpath: [f] # LLVM-NEXT: 0x0000000000000010 SYMBOLIC 0x1234567890ABCDEF # LLVM-NEXT: 0x0000000000000011 REL 0x1000 # LLVM-NEXT: 0x0000000000000012 RELSZ 16 (bytes) @@ -33,7 +33,7 @@ # LLVM-NEXT: 0x000000000000001A FINI_ARRAY 0x1000 # LLVM-NEXT: 0x000000000000001B INIT_ARRAYSZ 16 (bytes) # LLVM-NEXT: 0x000000000000001C FINI_ARRAYSZ 16 (bytes) -# LLVM-NEXT: 0x000000000000001D RUNPATH w +# LLVM-NEXT: 0x000000000000001D RUNPATH Library runpath: [w] # LLVM-NEXT: 0x000000000000001E FLAGS ORIGIN SYMBOLIC TEXTREL BIND_NOW STATIC_TLS {{$}} # LLVM-NEXT: 0x0000000000000020 PREINIT_ARRAY 0x1000 # LLVM-NEXT: 0x0000000000000021 PREINIT_ARRAYSZ 16 (bytes) @@ -84,7 +84,7 @@ # GNU-NEXT: 0x000000000000000c (INIT) 0x1000 # GNU-NEXT: 0x000000000000000d (FINI) 0x1000 # GNU-NEXT: 0x000000000000000e (SONAME) Library soname: [U] -# GNU-NEXT: 0x000000000000000f (RPATH) f +# GNU-NEXT: 0x000000000000000f (RPATH) Library rpath: [f] # GNU-NEXT: 0x0000000000000010 (SYMBOLIC) 0x1234567890abcdef # GNU-NEXT: 0x0000000000000011 (REL) 0x1000 # GNU-NEXT: 0x0000000000000012 (RELSZ) 16 (bytes) @@ -98,7 +98,7 @@ # GNU-NEXT: 0x000000000000001a (FINI_ARRAY) 0x1000 # GNU-NEXT: 0x000000000000001b (INIT_ARRAYSZ) 16 (bytes) # GNU-NEXT: 0x000000000000001c (FINI_ARRAYSZ) 16 (bytes) -# GNU-NEXT: 0x000000000000001d (RUNPATH) w +# GNU-NEXT: 0x000000000000001d (RUNPATH) Library runpath: [w] # GNU-NEXT: 0x000000000000001e (FLAGS) ORIGIN SYMBOLIC TEXTREL BIND_NOW STATIC_TLS {{$}} # GNU-NEXT: 0x0000000000000020 (PREINIT_ARRAY) 0x1000 # GNU-NEXT: 0x0000000000000021 (PREINIT_ARRAYSZ) 16 (bytes) diff --git a/llvm/test/tools/llvm-readobj/rpath.test b/llvm/test/tools/llvm-readobj/rpath.test index c615adaa7a7..75be5e2c668 100644 --- a/llvm/test/tools/llvm-readobj/rpath.test +++ b/llvm/test/tools/llvm-readobj/rpath.test @@ -1,4 +1,4 @@ RUN: llvm-readobj --dynamic-table %p/Inputs/rpath.exe.elf-x86_64 \ RUN: | FileCheck %s -CHECK: 0x000000000000000F RPATH /usr/local/lib +CHECK: 0x000000000000000F RPATH Library rpath: [/usr/local/lib] diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index 4a5be0ba84f..324bd5cac05 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -206,8 +206,6 @@ private: void loadDynamicTable(const ELFFile<ELFT> *Obj); void parseDynamicTable(); - void printDynamicString(uint64_t Offset, raw_ostream &OS, - bool WithBracket = true) const; StringRef getSymbolVersion(StringRef StrTab, const Elf_Sym *symb, bool &IsDefault) const; void LoadVersionMap() const; @@ -1791,22 +1789,6 @@ void printFlags(T Value, ArrayRef<EnumEntry<TFlag>> Flags, raw_ostream &OS) { } template <class ELFT> -void ELFDumper<ELFT>::printDynamicString(uint64_t Value, - raw_ostream &OS, - bool WithBracket) const { - if (DynamicStringTable.empty()) - OS << "<String table is empty or was not found> "; - else if (Value < DynamicStringTable.size()) { - if (WithBracket) - OS << "["; - OS << StringRef(DynamicStringTable.data() + Value); - if (WithBracket) - OS << "]"; - } else - OS << "<Invalid offset 0x" << utohexstr(Value) << ">"; -} - -template <class ELFT> void ELFDumper<ELFT>::printDynamicEntry(raw_ostream &OS, uint64_t Type, uint64_t Value) const { const char *ConvChar = @@ -1952,22 +1934,27 @@ void ELFDumper<ELFT>::printDynamicEntry(raw_ostream &OS, uint64_t Type, case DT_SONAME: case DT_AUXILIARY: case DT_USED: - case DT_FILTER: { + case DT_FILTER: + case DT_RPATH: + 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"}, }; OS << TagNames.at(Type) << ": "; - printDynamicString(Value, OS); + if (DynamicStringTable.empty()) + OS << "<String table is empty or was not found> "; + else if (Value < DynamicStringTable.size()) + OS << "[" << StringRef(DynamicStringTable.data() + Value) << "]"; + else + OS << "<Invalid offset 0x" << utohexstr(Value) << ">"; break; } - case DT_RPATH: - case DT_RUNPATH: - printDynamicString(Value, OS, false); - break; case DT_FLAGS: printFlags(Value, makeArrayRef(ElfDynamicDTFlags), OS); break; |