forked from OSchip/llvm-project
118 lines
2.8 KiB
Plaintext
118 lines
2.8 KiB
Plaintext
## Under some circumstances, GNU tools strip/objcopy change REL to RELA. https://sourceware.org/bugzilla/show_bug.cgi?id=28035
|
|
## Test that LLD can handle call graph profile data relocated with RELA relocations.
|
|
# REQUIRES: x86
|
|
|
|
# RUN: yaml2obj %s -o %t.o
|
|
# RUN: ld.lld %t.o -o %t
|
|
# RUN: llvm-nm --no-sort %t | FileCheck %s
|
|
# RUN: ld.lld --no-call-graph-profile-sort %t.o -o %t
|
|
# RUN: llvm-nm --no-sort %t | FileCheck %s --check-prefix=NO-CG
|
|
|
|
# CHECK: 0000000000201124 t D
|
|
# CHECK: 0000000000201122 t C
|
|
# CHECK: 0000000000201128 t B
|
|
# CHECK: 0000000000201120 t A
|
|
# CHECK: 0000000000201126 T _start
|
|
|
|
# NO-CG: 0000000000201120 t D
|
|
# NO-CG: 0000000000201122 t C
|
|
# NO-CG: 0000000000201124 t B
|
|
# NO-CG: 0000000000201126 t A
|
|
# NO-CG: 0000000000201128 T _start
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_REL
|
|
Machine: EM_X86_64
|
|
Sections:
|
|
- Name: .text.D
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
Size: 2
|
|
- Name: .text.C
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
Size: 2
|
|
- Name: .text.B
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
Size: 2
|
|
- Name: .text.A
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
Size: 2
|
|
- Name: .text._start
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
Size: 2
|
|
- Name: .llvm.call-graph-profile
|
|
Type: SHT_LLVM_CALL_GRAPH_PROFILE
|
|
Flags: [ SHF_EXCLUDE ]
|
|
Link: .symtab
|
|
AddressAlign: 0x1
|
|
Entries:
|
|
- Weight: 10
|
|
- Weight: 10
|
|
- Weight: 80
|
|
- Weight: 40
|
|
- Weight: 30
|
|
- Weight: 90
|
|
- Name: .rela.llvm.call-graph-profile
|
|
Type: SHT_RELA
|
|
Info: .llvm.call-graph-profile
|
|
Relocations:
|
|
- Offset: 0x0
|
|
Symbol: A
|
|
Type: R_X86_64_NONE
|
|
- Offset: 0x0
|
|
Symbol: B
|
|
Type: R_X86_64_NONE
|
|
- Offset: 0x8
|
|
Symbol: A
|
|
Type: R_X86_64_NONE
|
|
- Offset: 0x8
|
|
Symbol: B
|
|
Type: R_X86_64_NONE
|
|
- Offset: 0x10
|
|
Symbol: _start
|
|
Type: R_X86_64_NONE
|
|
- Offset: 0x10
|
|
Symbol: B
|
|
Type: R_X86_64_NONE
|
|
- Offset: 0x18
|
|
Symbol: A
|
|
Type: R_X86_64_NONE
|
|
- Offset: 0x18
|
|
Symbol: C
|
|
Type: R_X86_64_NONE
|
|
- Offset: 0x20
|
|
Symbol: B
|
|
Type: R_X86_64_NONE
|
|
- Offset: 0x20
|
|
Symbol: C
|
|
Type: R_X86_64_NONE
|
|
- Offset: 0x28
|
|
Symbol: C
|
|
Type: R_X86_64_NONE
|
|
- Offset: 0x28
|
|
Symbol: D
|
|
Type: R_X86_64_NONE
|
|
Symbols:
|
|
- Name: D
|
|
Type: STT_FUNC
|
|
Section: .text.D
|
|
- Name: C
|
|
Type: STT_FUNC
|
|
Section: .text.C
|
|
- Name: B
|
|
Type: STT_FUNC
|
|
Section: .text.B
|
|
- Name: A
|
|
Type: STT_FUNC
|
|
Section: .text.A
|
|
- Name: _start
|
|
Binding: STB_GLOBAL
|
|
Section: .text._start
|