[llvm-objdump] Add dynamic section printing to private-headers option

Differential Revision: https://reviews.llvm.org/D49016

llvm-svn: 337902
diff --git a/llvm/test/tools/llvm-objdump/Inputs/private-headers-x86_64.elf b/llvm/test/tools/llvm-objdump/Inputs/private-headers-x86_64.elf
new file mode 100755
index 0000000..d92d9f1
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/Inputs/private-headers-x86_64.elf
Binary files differ
diff --git a/llvm/test/tools/llvm-objdump/private-headers-dynamic-section.test b/llvm/test/tools/llvm-objdump/private-headers-dynamic-section.test
new file mode 100644
index 0000000..ba93d0b
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/private-headers-dynamic-section.test
@@ -0,0 +1,35 @@
+# RUN: llvm-objdump -p %p/Inputs/private-headers-x86_64.elf | FileCheck %s
+# RUN: llvm-objcopy --strip-sections %p/Inputs/private-headers-x86_64.elf %t
+# RUN: llvm-objdump -p %t | FileCheck %s
+
+# CHECK:  NEEDED               libstdc++.so.6
+# CHECK:  NEEDED               libm.so.6
+# CHECK:  NEEDED               libgcc_s.so.1
+# CHECK:  NEEDED               libc.so.6
+# CHECK:  INIT                 0x00000000000006a0
+# CHECK:  FINI                 0x0000000000000924
+# CHECK:  INIT_ARRAY           0x0000000000200da8
+# CHECK:  INIT_ARRAYSZ         0x0000000000000010
+# CHECK:  FINI_ARRAY           0x0000000000200db8
+# CHECK:  FINI_ARRAYSZ         0x0000000000000008
+# CHECK:  GNU_HASH             0x0000000000000298
+# CHECK:  STRTAB               0x00000000000003c8
+# CHECK:  SYMTAB               0x00000000000002c0
+# CHECK:  STRSZ                0x000000000000012f
+# CHECK:  SYMENT               0x0000000000000018
+# CHECK:  DEBUG                0x0000000000000000
+# CHECK:  PLTGOT               0x0000000000201000
+# CHECK:  PLTRELSZ             0x0000000000000048
+# CHECK:  PLTREL               0x0000000000000007
+# CHECK:  JMPREL               0x0000000000000658
+# CHECK:  RELA                 0x0000000000000550
+# CHECK:  RELASZ               0x0000000000000108
+# CHECK:  RELAENT              0x0000000000000018
+# CHECK:  FLAGS_1              0x0000000008000000
+# CHECK:  VERNEED              0x0000000000000510
+# CHECK:  VERNEEDNUM           0x0000000000000002
+# CHECK:  VERSYM               0x00000000000004f8
+# CHECK:  RELACOUNT            0x0000000000000004
+# CHECK:  RELRSZ               0x0000000000000014
+# CHECK:  RELR                 0x0000000087654321
+# CHECK:  RELRENT              0x0000000000000010
diff --git a/llvm/test/tools/llvm-objdump/private-headers-no-dynamic-segment.test b/llvm/test/tools/llvm-objdump/private-headers-no-dynamic-segment.test
new file mode 100644
index 0000000..0aec1fe
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/private-headers-no-dynamic-segment.test
@@ -0,0 +1,42 @@
+# RUN: yaml2obj %s > %t
+# RUN: llvm-objdump -p %t | FileCheck %s
+
+!ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_X86_64
+Sections:
+  - Name:            .dynamic
+    Type:            SHT_DYNAMIC
+    Flags:           [ SHF_ALLOC, SHF_WRITE ]
+    Content: 0c00000000000000a0060000000000000d0000000000000024090000000000001900000000000000a80d2000000000001b0000000000000010000000000000001a00000000000000b80d2000000000001c000000000000000800000000000000f5feff6f0000000098020000000000000500000000000000c8030000000000000600000000000000c0020000000000000a000000000000002f010000000000000b0000000000000018000000000000001500000000000000000000000000000003000000000000000010200000000000020000000000000048000000000000001400000000000000070000000000000017000000000000005806000000000000070000000000000050050000000000000800000000000000080100000000000009000000000000001800000000000000fbffff6f000000000000000800000000feffff6f000000001005000000000000ffffff6f000000000200000000000000f0ffff6f00000000f804000000000000f9ffff6f0000000004000000000000002300000000000000140000000000000024000000000000002143658700000000250000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000
+
+# CHECK:  INIT                 0x00000000000006a0
+# CHECK:  FINI                 0x0000000000000924
+# CHECK:  INIT_ARRAY           0x0000000000200da8
+# CHECK:  INIT_ARRAYSZ         0x0000000000000010
+# CHECK:  FINI_ARRAY           0x0000000000200db8
+# CHECK:  FINI_ARRAYSZ         0x0000000000000008
+# CHECK:  GNU_HASH             0x0000000000000298
+# CHECK:  STRTAB               0x00000000000003c8
+# CHECK:  SYMTAB               0x00000000000002c0
+# CHECK:  STRSZ                0x000000000000012f
+# CHECK:  SYMENT               0x0000000000000018
+# CHECK:  DEBUG                0x0000000000000000
+# CHECK:  PLTGOT               0x0000000000201000
+# CHECK:  PLTRELSZ             0x0000000000000048
+# CHECK:  PLTREL               0x0000000000000007
+# CHECK:  JMPREL               0x0000000000000658
+# CHECK:  RELA                 0x0000000000000550
+# CHECK:  RELASZ               0x0000000000000108
+# CHECK:  RELAENT              0x0000000000000018
+# CHECK:  FLAGS_1              0x0000000008000000
+# CHECK:  VERNEED              0x0000000000000510
+# CHECK:  VERNEEDNUM           0x0000000000000002
+# CHECK:  VERSYM               0x00000000000004f8
+# CHECK:  RELACOUNT            0x0000000000000004
+# CHECK:  RELRSZ               0x0000000000000014
+# CHECK:  RELR                 0x0000000087654321
+# CHECK:  RELRENT              0x0000000000000010
diff --git a/llvm/test/tools/llvm-objdump/private-headers-no-dynamic.test b/llvm/test/tools/llvm-objdump/private-headers-no-dynamic.test
new file mode 100644
index 0000000..80c6841
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/private-headers-no-dynamic.test
@@ -0,0 +1,19 @@
+# RUN: yaml2obj %s > %t
+# RUN: llvm-objdump -p %t | FileCheck %s
+
+!ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_X86_64
+Sections:
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x1000
+    AddressAlign:    0x0000000000000010
+    Size:            64
+
+# CHECK: Dynamic Section:
+# CHECK-NOT: {{.}}