# 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