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 | d2f90ea3375a401f971400b93004ad7773dc56b4 (patch) | |
tree | 4ff07df23d593c41fb060e7fb1a7c0ba58621692 | |
parent | 17257bb0b51d4fb889b68d082f0a8272c7271f16 (diff) | |
download | bcm5719-llvm-d2f90ea3375a401f971400b93004ad7773dc56b4.tar.gz bcm5719-llvm-d2f90ea3375a401f971400b93004ad7773dc56b4.zip |
[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.
llvm-svn: 339873
-rw-r--r-- | llvm/test/tools/yaml2obj/section-link.yaml | 25 | ||||
-rw-r--r-- | llvm/tools/yaml2obj/yaml2elf.cpp | 2 |
2 files changed, 26 insertions, 1 deletions
diff --git a/llvm/test/tools/yaml2obj/section-link.yaml b/llvm/test/tools/yaml2obj/section-link.yaml new file mode 100644 index 00000000000..3045d36910d --- /dev/null +++ b/llvm/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/llvm/tools/yaml2obj/yaml2elf.cpp b/llvm/tools/yaml2obj/yaml2elf.cpp index 99f55d11cff..28ffa885080 100644 --- a/llvm/tools/yaml2obj/yaml2elf.cpp +++ b/llvm/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; |