1## Show that llvm-objdump can dump dynamic relocations. 2## Specifically, we are checking that the tags DT_RELA, DT_REL and DT_JMPREL 3## properly identify relocation tables. 4 5# RUN: yaml2obj --docnum=1 %s -o %t.empty 6# RUN: not llvm-objdump -R %t.empty 2>&1 | FileCheck %s --check-prefix=NO-DYNAMIC 7 8# NO-DYNAMIC: error: '{{.*}}': not a dynamic object 9 10--- !ELF 11FileHeader: 12 Class: ELFCLASS64 13 Data: ELFDATA2LSB 14 Type: ET_DYN 15 16# RUN: yaml2obj --docnum=2 -DTYPE=ET_EXEC %s -o %t1 17# RUN: llvm-objdump --dynamic-reloc %t1 | FileCheck %s --strict-whitespace --match-full-lines 18 19## e_type doesn't matter at all. 20# RUN: yaml2obj --docnum=2 -DTYPE=0x1234 %s -o %t2 21# RUN: llvm-objdump -R %t2 | FileCheck %s --strict-whitespace --match-full-lines 22 23# CHECK:{{.*}}file format elf64-x86-64 24#CHECK-EMPTY: 25# CHECK-NEXT:DYNAMIC RELOCATION RECORDS 26# CHECK-NEXT:OFFSET TYPE VALUE 27# CHECK-NEXT:0000000000000000 R_X86_64_RELATIVE *ABS* 28# CHECK-NEXT:0000000000000000 R_X86_64_JUMP_SLOT bar 29# CHECK-NEXT:0000000000000008 R_X86_64_NONE foo 30#CHECK-EMPTY: 31 32## -r ignores dynamic relocations. 33# RUN: llvm-objdump -r %t2 | FileCheck %s --check-prefix=STATIC-RELOC 34 35# STATIC-RELOC-NOT: RELOCATION RECORDS 36 37--- !ELF 38FileHeader: 39 Class: ELFCLASS64 40 Data: ELFDATA2LSB 41 Type: [[TYPE]] 42 Machine: EM_X86_64 43Sections: 44 - Name: .foo 45 Type: SHT_PROGBITS 46 Size: 16 47 Flags: [SHF_ALLOC] 48 Address: 0x100000 49 AddressAlign: 0x100 50 - Name: .got.plt 51 Type: SHT_PROGBITS 52 Flags: [SHF_WRITE, SHF_ALLOC] 53 Address: 0x100100 54 AddressAlign: 0x1000 55 - Name: .rela.dyn 56 Type: SHT_RELA 57 Address: 0x100200 58 AddressAlign: 0x100 59 Info: .foo 60 Link: .dynsym 61 Flags: [SHF_ALLOC] 62 Relocations: 63 - Offset: 0 64 Type: R_X86_64_RELATIVE 65 Addend: 0 66 - Name: .rela.plt 67 Type: SHT_RELA 68 Address: 0x100300 69 AddressAlign: 0x100 70 Info: .got.plt 71 Link: .dynsym 72 Flags: [SHF_ALLOC] 73 Relocations: 74 - Offset: 0 75 Symbol: bar 76 Type: R_X86_64_JUMP_SLOT 77 - Name: .rel.dyn 78 Type: SHT_REL 79 Address: 0x100400 80 AddressAlign: 0x100 81 Info: .foo 82 Link: .dynsym 83 Flags: [SHF_ALLOC] 84 Relocations: 85 - Offset: 8 86 Symbol: foo 87 Type: R_X86_64_NONE 88 - Name: .dynamic 89 Type: SHT_DYNAMIC 90 Address: 0x100500 91 AddressAlign: 0x100 92 Link: .dynstr 93 Flags: [SHF_ALLOC] 94 Entries: 95 - Tag: DT_RELA 96 Value: 0x100200 97 - Tag: DT_RELASZ 98 Value: 24 99 - Tag: DT_RELAENT 100 Value: 24 101 - Tag: DT_JMPREL 102 Value: 0x100300 103 - Tag: DT_PLTREL 104 Value: 7 105 - Tag: DT_PLTRELSZ 106 Value: 24 107 - Tag: DT_REL 108 Value: 0x100400 109 - Tag: DT_RELSZ 110 Value: 16 111 - Tag: DT_RELENT 112 Value: 16 113 - Tag: DT_NULL 114 Value: 0 115ProgramHeaders: 116 - Type: PT_LOAD 117 VAddr: 0x100000 118 Align: 0x100 119 FirstSec: .foo 120 LastSec: .dynamic 121 - Type: PT_DYNAMIC 122 VAddr: 0x100500 123 Align: 0x100 124 FirstSec: .dynamic 125 LastSec: .dynamic 126DynamicSymbols: 127 - Name: foo 128 Section: .foo 129 Binding: STB_GLOBAL 130 - Name: bar 131 Type: STT_FUNC 132 Binding: STB_GLOBAL 133 134## Test a 32-bit object. 135# RUN: yaml2obj --docnum=3 %s -o %t.i386 136# RUN: llvm-objdump -R %t.i386 | FileCheck %s --check-prefix=I386 --strict-whitespace --match-full-lines 137 138# I386:{{.*}}file format elf32-i386 139#I386-EMPTY: 140# I386-NEXT:DYNAMIC RELOCATION RECORDS 141# I386-NEXT:OFFSET TYPE VALUE 142# I386-NEXT:00000030 R_386_RELATIVE *ABS* 143# I386-NEXT:00000010 R_386_NONE foo 144#I386-EMPTY: 145 146--- !ELF 147FileHeader: 148 Class: ELFCLASS32 149 Data: ELFDATA2LSB 150 Type: ET_DYN 151 Machine: EM_386 152ProgramHeaders: 153 - Type: PT_LOAD 154 FirstSec: .rel.dyn 155 LastSec: .data 156 - Type: PT_DYNAMIC 157 VAddr: 0x10 158 FirstSec: .dynamic 159 LastSec: .dynamic 160Sections: 161 - Name: .rel.dyn 162 Type: SHT_REL 163 Link: .dynsym 164 Flags: [ SHF_ALLOC ] 165 AddressAlign: 0x4 166 Relocations: 167 - Offset: 0x30 168 Type: R_386_RELATIVE 169 - Offset: 0x10 170 Symbol: foo 171 Type: R_386_NONE 172 - Name: .dynamic 173 Type: SHT_DYNAMIC 174 Flags: [ SHF_ALLOC ] 175 Link: .dynstr 176 AddressAlign: 0x4 177 Entries: 178 - Tag: DT_REL 179 Value: 0x0 180 - Tag: DT_RELSZ 181 Value: 0x10 182 - Tag: DT_RELENT 183 Value: 0x8 184 - Tag: DT_RELCOUNT 185 Value: 0x1 186 - Tag: DT_NULL 187 Value: 0x0 188 - Name: .data 189 Type: SHT_PROGBITS 190 Flags: [ SHF_WRITE, SHF_ALLOC ] 191 AddressAlign: 0x4 192 Content: '80110000' 193DynamicSymbols: 194 - Name: foo 195 Section: .data 196