35 lines
1.4 KiB
Plaintext
35 lines
1.4 KiB
Plaintext
|
# RUN: yaml2obj %s -o %t
|
||
|
|
||
|
## Check we cannot remove the .dynsym symbol table because dynamic
|
||
|
## relocation section .rela.dyn still references it via sh_link field.
|
||
|
# RUN: not llvm-objcopy -R .dynsym %t %t2 2>&1 >/dev/null | FileCheck %s --check-prefix=ERR -DINPUT=%t
|
||
|
# ERR: error: '[[INPUT]]': symbol table '.dynsym' cannot be removed because it is referenced by the relocation section '.rela.dyn'
|
||
|
|
||
|
## Check we can remove .dynsym after removing the reference.
|
||
|
# RUN: llvm-objcopy -R .dynsym -R .rela.dyn %t %t2
|
||
|
# RUN: llvm-readelf --sections %t2 | FileCheck %s --implicit-check-not=".dynsym"
|
||
|
|
||
|
## Check we zero out sh_link field and allow producing output with the --allow-broken-links switch.
|
||
|
# RUN: llvm-objcopy -R .dynsym --allow-broken-links %t %t2
|
||
|
# RUN: llvm-readelf --sections %t2 | FileCheck %s --check-prefix=DROP-LINK
|
||
|
# DROP-LINK: [Nr] Name Type Address Off Size ES Flg L
|
||
|
# DROP-LINK: [ 1] .rela.dyn RELA 0000000000000270 000040 000000 18 A 0
|
||
|
# DROP-LINK-NOT: .dynsym
|
||
|
|
||
|
!ELF
|
||
|
FileHeader:
|
||
|
Class: ELFCLASS64
|
||
|
Data: ELFDATA2LSB
|
||
|
Type: ET_DYN
|
||
|
Machine: EM_X86_64
|
||
|
Sections:
|
||
|
- Name: .rela.dyn
|
||
|
Type: SHT_RELA
|
||
|
Flags: [ SHF_ALLOC ]
|
||
|
Address: 0x0000000000000270
|
||
|
Link: .dynsym
|
||
|
EntSize: 0x0000000000000018
|
||
|
DynamicSymbols:
|
||
|
- Name: bar
|
||
|
Binding: STB_GLOBAL
|