diff options
| author | George Rimar <grimar@accesssoftek.com> | 2019-02-19 14:53:48 +0000 |
|---|---|---|
| committer | George Rimar <grimar@accesssoftek.com> | 2019-02-19 14:53:48 +0000 |
| commit | 0621b795878c1105f2aff097e6a217c700676540 (patch) | |
| tree | 8bfac8ca07fbfea1ec471c897fc3aa72a7f1384a /llvm/test | |
| parent | 6aae216109544a9d87b1332642632292595ca7a6 (diff) | |
| download | bcm5719-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.yaml | 69 | ||||
| -rw-r--r-- | llvm/test/tools/yaml2obj/verneed-section.yaml | 73 |
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 |

