[PATCH] D16224: [llvm-reaobj] Add support for TLSDESC_PLT and TLSDESC_GOT dynamic section tags to the llvm-readobj.

George Rimar via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 15 07:35:39 PST 2016


grimar created this revision.
grimar added reviewers: Bigcheese, echristo, rafael.
grimar added subscribers: llvm-commits, grimar.

If module uses uses lazy TLSDESC relocations it should define DT_TLSDESC_PLT and DT_TLSDESC_GOT entries.
They were unknown for llvm-readobj before this patch.

http://reviews.llvm.org/D16224

Files:
  test/tools/llvm-readobj/Inputs/dynamic-table-so.aarch64
  test/tools/llvm-readobj/Inputs/dynamic-table.c
  test/tools/llvm-readobj/dynamic.test
  tools/llvm-readobj/ELFDumper.cpp

Index: tools/llvm-readobj/ELFDumper.cpp
===================================================================
--- tools/llvm-readobj/ELFDumper.cpp
+++ tools/llvm-readobj/ELFDumper.cpp
@@ -1338,6 +1338,8 @@
   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);
Index: test/tools/llvm-readobj/dynamic.test
===================================================================
--- test/tools/llvm-readobj/dynamic.test
+++ test/tools/llvm-readobj/dynamic.test
@@ -111,3 +111,40 @@
 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: ]
Index: test/tools/llvm-readobj/Inputs/dynamic-table.c
===================================================================
--- test/tools/llvm-readobj/Inputs/dynamic-table.c
+++ test/tools/llvm-readobj/Inputs/dynamic-table.c
@@ -2,8 +2,13 @@
 //       -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;
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D16224.44989.patch
Type: text/x-patch
Size: 3648 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160115/bc3d5426/attachment.bin>


More information about the llvm-commits mailing list