summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorGeorge Rimar <grimar@accesssoftek.com>2019-02-19 14:53:48 +0000
committerGeorge Rimar <grimar@accesssoftek.com>2019-02-19 14:53:48 +0000
commit0621b795878c1105f2aff097e6a217c700676540 (patch)
tree8bfac8ca07fbfea1ec471c897fc3aa72a7f1384a /llvm/test
parent6aae216109544a9d87b1332642632292595ca7a6 (diff)
downloadbcm5719-llvm-0621b795878c1105f2aff097e6a217c700676540.tar.gz
bcm5719-llvm-0621b795878c1105f2aff097e6a217c700676540.zip
Recommit r354328, r354329 "[obj2yaml][yaml2obj] - Add support of parsing/dumping of the .gnu.version_r section."
Fix: Replace assert(!IO.getContext() && "The IO context is initialized already"); with assert(IO.getContext() && "The IO context is not initialized"); (this was introduced in r354329, where I tried to quickfix the darwin BB and seems copypasted the assert from the wrong place). Original commit message: The section is described here: https://refspecs.linuxfoundation.org/LSB_1.3.0/gLSB/gLSB/symverrqmts.html Patch just teaches obj2yaml/yaml2obj to dump and parse such sections. We did the finalization of string tables very late, and I had to move the logic to make it a bit earlier. That was needed in this patch since .gnu.version_r adds strings to .dynstr. This might also be useful for implementing other special sections. Everything else changed in this patch seems to be straightforward. Differential revision: https://reviews.llvm.org/D58119 llvm-svn: 354335
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/tools/obj2yaml/verneed-section.yaml69
-rw-r--r--llvm/test/tools/yaml2obj/verneed-section.yaml73
2 files changed, 142 insertions, 0 deletions
diff --git a/llvm/test/tools/obj2yaml/verneed-section.yaml b/llvm/test/tools/obj2yaml/verneed-section.yaml
new file mode 100644
index 00000000000..6ca7cb2d88e
--- /dev/null
+++ b/llvm/test/tools/obj2yaml/verneed-section.yaml
@@ -0,0 +1,69 @@
+# RUN: yaml2obj %s -o %t
+# RUN: obj2yaml %t | FileCheck %s
+
+## Check we are able to yamalize SHT_GNU_verneed section.
+
+# CHECK: - Name: .gnu.version_r
+# CHECK-NEXT: Type: SHT_GNU_verneed
+# CHECK-NEXT: Flags: [ SHF_ALLOC ]
+# CHECK-NEXT: Address: 0x0000000000200250
+# CHECK-NEXT: Link: .dynstr
+# CHECK-NEXT: AddressAlign: 0x0000000000000004
+# CHECK-NEXT: Info: 0x0000000000000002
+# CHECK-NEXT: Dependencies:
+# CHECK-NEXT: - Version: 1
+# CHECK-NEXT: File: dso.so.0
+# CHECK-NEXT: Entries:
+# CHECK-NEXT: - Name: v1
+# CHECK-NEXT: Hash: 1937
+# CHECK-NEXT: Flags: 10
+# CHECK-NEXT: Other: 3
+# CHECK-NEXT: - Name: v2
+# CHECK-NEXT: Hash: 1938
+# CHECK-NEXT: Flags: 11
+# CHECK-NEXT: Other: 4
+# CHECK-NEXT: - Version: 1
+# CHECK-NEXT: File: dso.so.1
+# CHECK-NEXT: Entries:
+# CHECK-NEXT: - Name: v3
+# CHECK-NEXT: Hash: 1939
+# CHECK-NEXT: Flags: 12
+# CHECK-NEXT: Other: 2
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+ Entry: 0x0000000000201000
+Sections:
+ - Name: .gnu.version_r
+ Type: SHT_GNU_verneed
+ Flags: [ SHF_ALLOC ]
+ Address: 0x200250
+ Link: .dynstr
+ AddressAlign: 4
+ Info: 2
+ Dependencies:
+ - Version: 1
+ File: dso.so.0
+ Entries:
+ - Name: v1
+ Hash: 1937
+ Flags: 10
+ Other: 3
+ - Name: v2
+ Hash: 1938
+ Flags: 11
+ Other: 4
+ - Version: 1
+ File: dso.so.1
+ Entries:
+ - Name: v3
+ Hash: 1939
+ Flags: 12
+ Other: 2
+DynamicSymbols:
+ Global:
+ - Name: f1
diff --git a/llvm/test/tools/yaml2obj/verneed-section.yaml b/llvm/test/tools/yaml2obj/verneed-section.yaml
new file mode 100644
index 00000000000..436e54ba089
--- /dev/null
+++ b/llvm/test/tools/yaml2obj/verneed-section.yaml
@@ -0,0 +1,73 @@
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-readelf -V %t | FileCheck %s
+
+# Check we are able to handle the SHT_GNU_verneed sections.
+
+# CHECK: SHT_GNU_verneed {
+# CHECK-NEXT: Dependency {
+# CHECK-NEXT: Version: 1
+# CHECK-NEXT: Count: 2
+# CHECK-NEXT: FileName: dso.so.0
+# CHECK-NEXT: Entry {
+# CHECK-NEXT: Hash: 1937
+# CHECK-NEXT: Flags: 0xA
+# CHECK-NEXT: Index: 3
+# CHECK-NEXT: Name: v1
+# CHECK-NEXT: }
+# CHECK-NEXT: Entry {
+# CHECK-NEXT: Hash: 1938
+# CHECK-NEXT: Flags: 0xB
+# CHECK-NEXT: Index: 4
+# CHECK-NEXT: Name: v2
+# CHECK-NEXT: }
+# CHECK-NEXT: }
+# CHECK-NEXT: Dependency {
+# CHECK-NEXT: Version: 1
+# CHECK-NEXT: Count: 1
+# CHECK-NEXT: FileName: dso.so.1
+# CHECK-NEXT: Entry {
+# CHECK-NEXT: Hash: 1939
+# CHECK-NEXT: Flags: 0xC
+# CHECK-NEXT: Index: 2
+# CHECK-NEXT: Name: v3
+# CHECK-NEXT: }
+# CHECK-NEXT: }
+# CHECK-NEXT: }
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+ Entry: 0x0000000000201000
+Sections:
+ - Name: .gnu.version_r
+ Type: SHT_GNU_verneed
+ Flags: [ SHF_ALLOC ]
+ Address: 0x0000000000200250
+ Link: .dynstr
+ AddressAlign: 0x0000000000000004
+ Info: 0x0000000000000002
+ Dependencies:
+ - Version: 1
+ File: dso.so.0
+ Entries:
+ - Name: v1
+ Hash: 1937
+ Flags: 10
+ Other: 3
+ - Name: v2
+ Hash: 1938
+ Flags: 11
+ Other: 4
+ - Version: 1
+ File: dso.so.1
+ Entries:
+ - Name: v3
+ Hash: 1939
+ Flags: 12
+ Other: 2
+DynamicSymbols:
+ Global:
+ - Name: f1
OpenPOWER on IntegriCloud