# RUN: yaml2obj %s -o %t
# RUN: llvm-objcopy --remove-section=.foo --strip-symbol=unused %t %t.out
# RUN: llvm-readelf -Sr %t.out | FileCheck %s
# CHECK: [Nr] Name Type Address Off Size ES Flg Lk Inf Al
# CHECK-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0
# CHECK-NEXT: [ 1] .text PROGBITS 0000000000000000 {{.*}} 000008 00 A 0 0 0
# CHECK-NEXT: [ 2] .crel.text CREL 0000000000000000 {{.*}} 000022 00 5 1 0
# CHECK-NEXT: [ 3] nonalloc PROGBITS 0000000000000000 {{.*}} 000030 00 0 0 0
# CHECK-NEXT: [ 4] .crelnonalloc CREL 0000000000000000 {{.*}} 00000b 00 5 3 0
# CHECK: Relocation section '.crel.text' at offset {{.*}} contains 4 entries:
# CHECK-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend
# CHECK-NEXT: 0000000000000001 {{.*}} R_X86_64_32 0000000000000000 g1 + 1
# CHECK-NEXT: 0000000000000002 {{.*}} R_X86_64_64 0000000000000000 l1 + 2
# CHECK-NEXT: 0000000000000000 {{.*}} R_X86_64_32S 0000000000000000 g1 - 1
# CHECK-NEXT: 0000000000000004 {{.*}} R_X86_64_32S 0000000000000000 .text - 8000000000000000
# CHECK-EMPTY:
# CHECK-NEXT: Relocation section '.crelnonalloc' at offset {{.*}} contains 3 entries:
# CHECK-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend
# CHECK-NEXT: 0000000000000010 {{.*}} R_X86_64_64 0000000000000000 g1 + 1
# CHECK-NEXT: 0000000000000020 {{.*}} R_X86_64_64 0000000000000000 g2 + 2
# CHECK-NEXT: 0000000000000030 {{.*}} R_X86_64_64 0
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_X86_64
Sections:
- Name: .foo
Type: SHT_PROGBITS
Flags: [SHF_ALLOC]
- Name: .text
Type: SHT_PROGBITS
Content: "0000000000000000"
Flags: [SHF_ALLOC]
- Name: .crel.text
Type: SHT_CREL
Info: .text
Link: .symtab
Relocations:
- Offset: 0x1
Symbol: g1
Type: R_X86_64_32
Addend: 1
- Offset: 0x2
Symbol: l1
Type: R_X86_64_64
Addend: 2
- Offset: 0x0
Symbol: g1
Type: R_X86_64_32S
Addend: 0xffffffffffffffff
- Offset: 0x4
Symbol: .text
Type: R_X86_64_32S
Addend: 0x8000000000000000
- Name: nonalloc
Type: SHT_PROGBITS
Size: 0x30
- Name: .crelnonalloc
Type: SHT_CREL
Info: nonalloc
Link: .symtab
Relocations:
- Offset: 0x10
Symbol: g1
Type: R_X86_64_64
Addend: 1
- Offset: 0x20
Symbol: g2
Type: R_X86_64_64
Addend: 2
- Offset: 0x30
Symbol: 0
Type: R_X86_64_64
Symbols:
- Name: unused
Section: .text
- Name: .text
Type: STT_SECTION
Section: .text
- Name: l1
- Name: g1
Section: .text
Value: 0x0
Size: 4
Binding: STB_GLOBAL
- Name: g2
Binding: STB_GLOBAL
# RUN: yaml2obj --docnum=2 %s -o %t.32
# RUN: llvm-objcopy %t.32 %t.32.out
# RUN: llvm-readobj -r %t.32.out | FileCheck %s --check-prefix=CHECK2
# CHECK2: Relocations [
# CHECK2-NEXT: Section (2) .crel.text {
# CHECK2-NEXT: 0x0 R_X86_64_32S g1 0xFFFFFFFF
# CHECK2-NEXT: 0x4 R_X86_64_32S .text 0x80000000
# CHECK2-NEXT: }
# CHECK2-NEXT: ]
--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_X86_64
Sections:
- Name: .text
Type: SHT_PROGBITS
Content: "0000000000000000"
Flags: [SHF_ALLOC]
- Name: .crel.text
Type: SHT_CREL
Info: .text
Link: .symtab
Relocations:
- Offset: 0x0
Symbol: g1
Type: R_X86_64_32S
Addend: 0xffffffff
- Offset: 0x4
Symbol: .text
Type: R_X86_64_32S
Addend: 0x80000000
Symbols:
- Name: .text
Type: STT_SECTION
Section: .text
- Name: g1
Section: .text
Size: 4
Binding: STB_GLOBAL