diff options
author | George Rimar <grimar@accesssoftek.com> | 2018-08-16 12:44:17 +0000 |
---|---|---|
committer | George Rimar <grimar@accesssoftek.com> | 2018-08-16 12:44:17 +0000 |
commit | f23f849bd174865e081c609d36efe475533afd28 (patch) | |
tree | 78395dd2dd349ca215604b8a66dc0a9faaa80eb1 | |
parent | 4b96e82fd2760e3922798d4e84da9eaa1a36f2c2 (diff) |
[yaml2obj] - Allow to use numeric sh_link (Link) value for sections.
That change allows using numeric values for Link field.
It is consistent with the code for another fields in this method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339873 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/tools/yaml2obj/section-link.yaml | 25 | ||||
-rw-r--r-- | tools/yaml2obj/yaml2elf.cpp | 2 |
2 files changed, 26 insertions, 1 deletions
diff --git a/test/tools/yaml2obj/section-link.yaml b/test/tools/yaml2obj/section-link.yaml new file mode 100644 index 00000000000..3045d36910d --- /dev/null +++ b/test/tools/yaml2obj/section-link.yaml @@ -0,0 +1,25 @@ +# RUN: yaml2obj %s -o %t +# RUN: llvm-readobj -sections %t | FileCheck %s + +# CHECK: Name: .text +# CHECK-NEXT: Type: SHT_PROGBITS +# CHECK-NEXT: Flags [ +# CHECK-NEXT: SHF_ALLOC +# CHECK-NEXT: SHF_EXECINSTR +# CHECK-NEXT: ] +# CHECK-NEXT: Address: +# CHECK-NEXT: Offset: +# CHECK-NEXT: Size: +# CHECK-NEXT: Link: 12345 + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_X86_64 +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Link: 12345 diff --git a/tools/yaml2obj/yaml2elf.cpp b/tools/yaml2obj/yaml2elf.cpp index 99f55d11cff..28ffa885080 100644 --- a/tools/yaml2obj/yaml2elf.cpp +++ b/tools/yaml2obj/yaml2elf.cpp @@ -245,7 +245,7 @@ bool ELFState<ELFT>::initSectionHeaders(std::vector<Elf_Shdr> &SHeaders, if (!Sec->Link.empty()) { unsigned Index; - if (SN2I.lookup(Sec->Link, Index)) { + if (SN2I.lookup(Sec->Link, Index) && !to_integer(Sec->Link, Index)) { WithColor::error() << "Unknown section referenced: '" << Sec->Link << "' at YAML section '" << Sec->Name << "'.\n"; return false; |