1# RUN: yaml2obj %s -o %t 2# RUN: llvm-objcopy --remove-section=.foo --strip-symbol=unused %t %t.out 3# RUN: llvm-readelf -Sr %t.out | FileCheck %s 4 5# CHECK: [Nr] Name Type Address Off Size ES Flg Lk Inf Al 6# CHECK-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0 7# CHECK-NEXT: [ 1] .text PROGBITS 0000000000000000 {{.*}} 000008 00 A 0 0 0 8# CHECK-NEXT: [ 2] .crel.text CREL 0000000000000000 {{.*}} 000022 00 5 1 0 9# CHECK-NEXT: [ 3] nonalloc PROGBITS 0000000000000000 {{.*}} 000030 00 0 0 0 10# CHECK-NEXT: [ 4] .crelnonalloc CREL 0000000000000000 {{.*}} 00000b 00 5 3 0 11 12# CHECK: Relocation section '.crel.text' at offset {{.*}} contains 4 entries: 13# CHECK-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend 14# CHECK-NEXT: 0000000000000001 {{.*}} R_X86_64_32 0000000000000000 g1 + 1 15# CHECK-NEXT: 0000000000000002 {{.*}} R_X86_64_64 0000000000000000 l1 + 2 16# CHECK-NEXT: 0000000000000000 {{.*}} R_X86_64_32S 0000000000000000 g1 - 1 17# CHECK-NEXT: 0000000000000004 {{.*}} R_X86_64_32S 0000000000000000 .text - 8000000000000000 18# CHECK-EMPTY: 19# CHECK-NEXT: Relocation section '.crelnonalloc' at offset {{.*}} contains 3 entries: 20# CHECK-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend 21# CHECK-NEXT: 0000000000000010 {{.*}} R_X86_64_64 0000000000000000 g1 + 1 22# CHECK-NEXT: 0000000000000020 {{.*}} R_X86_64_64 0000000000000000 g2 + 2 23# CHECK-NEXT: 0000000000000030 {{.*}} R_X86_64_64 0 24 25--- !ELF 26FileHeader: 27 Class: ELFCLASS64 28 Data: ELFDATA2LSB 29 Type: ET_REL 30 Machine: EM_X86_64 31 32Sections: 33- Name: .foo 34 Type: SHT_PROGBITS 35 Flags: [SHF_ALLOC] 36- Name: .text 37 Type: SHT_PROGBITS 38 Content: "0000000000000000" 39 Flags: [SHF_ALLOC] 40- Name: .crel.text 41 Type: SHT_CREL 42 Info: .text 43 Link: .symtab 44 Relocations: 45 - Offset: 0x1 46 Symbol: g1 47 Type: R_X86_64_32 48 Addend: 1 49 - Offset: 0x2 50 Symbol: l1 51 Type: R_X86_64_64 52 Addend: 2 53 - Offset: 0x0 54 Symbol: g1 55 Type: R_X86_64_32S 56 Addend: 0xffffffffffffffff 57 - Offset: 0x4 58 Symbol: .text 59 Type: R_X86_64_32S 60 Addend: 0x8000000000000000 61- Name: nonalloc 62 Type: SHT_PROGBITS 63 Size: 0x30 64- Name: .crelnonalloc 65 Type: SHT_CREL 66 Info: nonalloc 67 Link: .symtab 68 Relocations: 69 - Offset: 0x10 70 Symbol: g1 71 Type: R_X86_64_64 72 Addend: 1 73 - Offset: 0x20 74 Symbol: g2 75 Type: R_X86_64_64 76 Addend: 2 77 - Offset: 0x30 78 Symbol: 0 79 Type: R_X86_64_64 80 81Symbols: 82 - Name: unused 83 Section: .text 84 - Name: .text 85 Type: STT_SECTION 86 Section: .text 87 - Name: l1 88 - Name: g1 89 Section: .text 90 Value: 0x0 91 Size: 4 92 Binding: STB_GLOBAL 93 - Name: g2 94 Binding: STB_GLOBAL 95 96# RUN: yaml2obj --docnum=2 %s -o %t.32 97# RUN: llvm-objcopy %t.32 %t.32.out 98# RUN: llvm-readobj -r %t.32.out | FileCheck %s --check-prefix=CHECK2 99 100# CHECK2: Relocations [ 101# CHECK2-NEXT: Section (2) .crel.text { 102# CHECK2-NEXT: 0x0 R_X86_64_32S g1 0xFFFFFFFF 103# CHECK2-NEXT: 0x4 R_X86_64_32S .text 0x80000000 104# CHECK2-NEXT: } 105# CHECK2-NEXT: ] 106 107--- !ELF 108FileHeader: 109 Class: ELFCLASS32 110 Data: ELFDATA2LSB 111 Type: ET_REL 112 Machine: EM_X86_64 113 114Sections: 115- Name: .text 116 Type: SHT_PROGBITS 117 Content: "0000000000000000" 118 Flags: [SHF_ALLOC] 119- Name: .crel.text 120 Type: SHT_CREL 121 Info: .text 122 Link: .symtab 123 Relocations: 124 - Offset: 0x0 125 Symbol: g1 126 Type: R_X86_64_32S 127 Addend: 0xffffffff 128 - Offset: 0x4 129 Symbol: .text 130 Type: R_X86_64_32S 131 Addend: 0x80000000 132 133Symbols: 134 - Name: .text 135 Type: STT_SECTION 136 Section: .text 137 - Name: g1 138 Section: .text 139 Size: 4 140 Binding: STB_GLOBAL 141