diff options
| author | Jordan Rupprecht <rupprecht@google.com> | 2018-09-04 22:28:49 +0000 |
|---|---|---|
| committer | Jordan Rupprecht <rupprecht@google.com> | 2018-09-04 22:28:49 +0000 |
| commit | ec277a827815015e516ea08d79bbd4c64259c3d1 (patch) | |
| tree | 5a7b0b395611a8c7d89b446909b62f4f9aa81bbe /llvm/test/tools | |
| parent | 034423377cf8ef69ff248b69b4487b0b7b00ab81 (diff) | |
| download | bcm5719-llvm-ec277a827815015e516ea08d79bbd4c64259c3d1.tar.gz bcm5719-llvm-ec277a827815015e516ea08d79bbd4c64259c3d1.zip | |
[llvm-strip] Allow copying relocation sections without symbol tables.
Summary:
Fixes the error "Link field value 0 in section .rela.plt is invalid" when copying/stripping certain binaries. Minimal repro:
```
$ cat /tmp/a.c
int main() { return 0; }
$ clang -static /tmp/a.c -o /tmp/a
$ llvm-strip /tmp/a -o /tmp/b
llvm-strip: error: Link field value 0 in section .rela.plt is invalid.
```
Reviewers: jakehehrlich, alexshap
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D51493
llvm-svn: 341419
Diffstat (limited to 'llvm/test/tools')
| -rw-r--r-- | llvm/test/tools/llvm-objcopy/reloc-no-symtab.test | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/reloc-no-symtab.test b/llvm/test/tools/llvm-objcopy/reloc-no-symtab.test new file mode 100644 index 00000000000..ea593613df0 --- /dev/null +++ b/llvm/test/tools/llvm-objcopy/reloc-no-symtab.test @@ -0,0 +1,45 @@ +# Regression test for the following case: +# $ cat /tmp/a.c +# int main() { return 0; } +# $ clang -static /tmp/a.c -o /tmp/a +# $ llvm-strip /tmp/a -o /tmp/b +# llvm-strip: error: Link field value 0 in section .rela.plt is invalid. + +# RUN: yaml2obj %s > %t.original +# RUN: llvm-strip %t.original -o %t.stripped +# RUN: llvm-readobj -sections %t.original | FileCheck %s +# RUN: llvm-readobj -sections %t.stripped | 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 ] + - Name: .rela.plt + Type: SHT_RELA + Flags: [ SHF_ALLOC, SHF_INFO_LINK ] + Info: .got.plt + Link: 0 + - Name: .plt + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + - Name: .got.plt + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_WRITE ] + +# CHECK: Name: .rela.plt +# CHECK-NEXT: Type: SHT_RELA +# CHECK-NEXT: Flags [ +# CHECK-NEXT: SHF_ALLOC +# CHECK-NEXT: SHF_INFO_LINK +# CHECK-NEXT: ] +# CHECK-NEXT: Address: +# CHECK-NEXT: Offset: +# CHECK-NEXT: Size: 0 +# CHECK-NEXT: Link: 0 +# CHECK-NEXT: Info: 4 |

