summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'llvm')
-rw-r--r--llvm/test/tools/llvm-readobj/Inputs/dynamic-table-so.aarch64bin0 -> 8960 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/Inputs/dynamic-table.c21
-rw-r--r--llvm/test/tools/llvm-readobj/dynamic.test43
-rw-r--r--llvm/tools/llvm-readobj/ELFDumper.cpp14
4 files changed, 61 insertions, 17 deletions
diff --git a/llvm/test/tools/llvm-readobj/Inputs/dynamic-table-so.aarch64 b/llvm/test/tools/llvm-readobj/Inputs/dynamic-table-so.aarch64
new file mode 100644
index 00000000000..1e992294dc0
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/Inputs/dynamic-table-so.aarch64
Binary files differ
diff --git a/llvm/test/tools/llvm-readobj/Inputs/dynamic-table.c b/llvm/test/tools/llvm-readobj/Inputs/dynamic-table.c
index 6b01ba5388b..f1b2c70692a 100644
--- a/llvm/test/tools/llvm-readobj/Inputs/dynamic-table.c
+++ b/llvm/test/tools/llvm-readobj/Inputs/dynamic-table.c
@@ -1,9 +1,14 @@
// clang -target mipsel-linux-gnu -shared -fPIC -lc dynamic-table.c \
-// -o dynamic-table-so.mips
-// clang -target mipsel-linux-gnu -lc dynamic-table.c \
-// -o dynamic-table-exe.mips
-int puts(const char *);
-
-int main(void) {
- puts("Hello, World");
-}
+// -o dynamic-table-so.mips
+// clang -target mipsel-linux-gnu -lc dynamic-table.c \
+// -o dynamic-table-exe.mips
+// clang -target aarch64-linux-gnu -fPIC -shared dynamic-table.c \
+// -o dynamic-table-so.aarch64
+int puts(const char *);
+
+__thread int foo;
+
+int main(void) {
+ puts("Hello, World");
+ foo = 0;
+}
diff --git a/llvm/test/tools/llvm-readobj/dynamic.test b/llvm/test/tools/llvm-readobj/dynamic.test
index 08f29fcd40a..1cbd7052d2c 100644
--- a/llvm/test/tools/llvm-readobj/dynamic.test
+++ b/llvm/test/tools/llvm-readobj/dynamic.test
@@ -108,6 +108,43 @@ ELF-X86-EXE: 0x0000001E FLAGS TEXTREL
ELF-X86-EXE: 0x6FFFFFFE VERNEED 0x4E4
ELF-X86-EXE: 0x6FFFFFFF VERNEEDNUM 3
ELF-X86-EXE: 0x6FFFFFF0 VERSYM 0x4C0
-ELF-X86-EXE: 0x6FFFFFFA RELCOUNT 6
-ELF-X86-EXE: 0x00000000 NULL 0x0
-ELF-X86-EXE: ]
+ELF-X86-EXE: 0x6FFFFFFA RELCOUNT 6
+ELF-X86-EXE: 0x00000000 NULL 0x0
+ELF-X86-EXE: ]
+
+RUN: llvm-readobj -dynamic-table %p/Inputs/dynamic-table-so.aarch64 \
+RUN: | FileCheck %s -check-prefix ELF-AARCH64-SO
+
+ELF-AARCH64-SO: Format: ELF64-aarch64-little
+ELF-AARCH64-SO: Arch: aarch64
+ELF-AARCH64-SO: AddressSize: 64bit
+ELF-AARCH64-SO: LoadName:
+ELF-AARCH64-SO: DynamicSection [ (26 entries)
+ELF-AARCH64-SO: Tag Type Name/Value
+ELF-AARCH64-SO: 0x0000000000000001 NEEDED SharedLibrary (libc.so.6)
+ELF-AARCH64-SO: 0x000000000000000C INIT 0x660
+ELF-AARCH64-SO: 0x000000000000000D FINI 0x83C
+ELF-AARCH64-SO: 0x0000000000000019 INIT_ARRAY 0x10DB8
+ELF-AARCH64-SO: 0x000000000000001B INIT_ARRAYSZ 8 (bytes)
+ELF-AARCH64-SO: 0x000000000000001A FINI_ARRAY 0x10DC0
+ELF-AARCH64-SO: 0x000000000000001C FINI_ARRAYSZ 8 (bytes)
+ELF-AARCH64-SO: 0x000000006FFFFEF5 GNU_HASH 0x1F0
+ELF-AARCH64-SO: 0x0000000000000005 STRTAB 0x420
+ELF-AARCH64-SO: 0x0000000000000006 SYMTAB 0x240
+ELF-AARCH64-SO: 0x000000000000000A STRSZ 210 (bytes)
+ELF-AARCH64-SO: 0x000000000000000B SYMENT 24 (bytes)
+ELF-AARCH64-SO: 0x0000000000000003 PLTGOT 0x10FE8
+ELF-AARCH64-SO: 0x0000000000000002 PLTRELSZ 96 (bytes)
+ELF-AARCH64-SO: 0x0000000000000014 PLTREL RELA
+ELF-AARCH64-SO: 0x0000000000000017 JMPREL 0x600
+ELF-AARCH64-SO: 0x000000006FFFFEF6 TLSDESC_PLT 0x6D0
+ELF-AARCH64-SO: 0x000000006FFFFEF7 TLSDESC_GOT 0x10FE0
+ELF-AARCH64-SO: 0x0000000000000007 RELA 0x540
+ELF-AARCH64-SO: 0x0000000000000008 RELASZ 192 (bytes)
+ELF-AARCH64-SO: 0x0000000000000009 RELAENT 24 (bytes)
+ELF-AARCH64-SO: 0x000000006FFFFFFE VERNEED 0x520
+ELF-AARCH64-SO: 0x000000006FFFFFFF VERNEEDNUM 1
+ELF-AARCH64-SO: 0x000000006FFFFFF0 VERSYM 0x4F2
+ELF-AARCH64-SO: 0x000000006FFFFFF9 unknown 0x3
+ELF-AARCH64-SO: 0x0000000000000000 NULL 0x0
+ELF-AARCH64-SO: ]
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp
index be84f3c0f1b..50dc6a85d24 100644
--- a/llvm/tools/llvm-readobj/ELFDumper.cpp
+++ b/llvm/tools/llvm-readobj/ELFDumper.cpp
@@ -1335,12 +1335,14 @@ static const char *getTypeString(uint64_t Type) {
LLVM_READOBJ_TYPE_CASE(VERDEFNUM);
LLVM_READOBJ_TYPE_CASE(VERNEED);
LLVM_READOBJ_TYPE_CASE(VERNEEDNUM);
- LLVM_READOBJ_TYPE_CASE(VERSYM);
- LLVM_READOBJ_TYPE_CASE(RELCOUNT);
- LLVM_READOBJ_TYPE_CASE(GNU_HASH);
- LLVM_READOBJ_TYPE_CASE(MIPS_RLD_VERSION);
- LLVM_READOBJ_TYPE_CASE(MIPS_RLD_MAP_REL);
- LLVM_READOBJ_TYPE_CASE(MIPS_FLAGS);
+ LLVM_READOBJ_TYPE_CASE(VERSYM);
+ LLVM_READOBJ_TYPE_CASE(RELCOUNT);
+ LLVM_READOBJ_TYPE_CASE(GNU_HASH);
+ LLVM_READOBJ_TYPE_CASE(TLSDESC_PLT);
+ LLVM_READOBJ_TYPE_CASE(TLSDESC_GOT);
+ LLVM_READOBJ_TYPE_CASE(MIPS_RLD_VERSION);
+ LLVM_READOBJ_TYPE_CASE(MIPS_RLD_MAP_REL);
+ LLVM_READOBJ_TYPE_CASE(MIPS_FLAGS);
LLVM_READOBJ_TYPE_CASE(MIPS_BASE_ADDRESS);
LLVM_READOBJ_TYPE_CASE(MIPS_LOCAL_GOTNO);
LLVM_READOBJ_TYPE_CASE(MIPS_SYMTABNO);
OpenPOWER on IntegriCloud