1# The binary blobs in this file were created like this: 2# llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu Inputs/elf-packed-relocs1.s -o - | obj2yaml | grep Content: 3 4# RUN: yaml2obj --docnum=1 %s -o %t1 5# RUN: llvm-readobj --relocations %t1 | FileCheck --check-prefix=LLVM1 %s 6# LLVM1: Section (1) .rela.dyn { 7# LLVM1-NEXT: 0x1100 R_X86_64_RELATIVE - 0x0 8# LLVM1-NEXT: 0x1180 R_X86_64_RELATIVE - 0x0 9# LLVM1-NEXT: 0x1188 R_X86_64_64 sym1 0x0 10# LLVM1-NEXT: 0x1190 R_X86_64_64 sym2 0x0 11# LLVM1-NEXT: 0x1191 R_X86_64_64 sym1 0x8 12# LLVM1-NEXT: 0x1193 R_X86_64_64 sym2 0xC 13# LLVM1-NEXT: 0x1197 R_X86_64_64 sym1 0xA 14# LLVM1-NEXT: 0x119F R_X86_64_64 sym2 0xA 15# LLVM1-NEXT: } 16 17# RUN: llvm-readelf --relocations %t1 | FileCheck --check-prefix=GNU1 %s 18# GNU1: Relocation section '.rela.dyn' at offset 0x40 contains 8 entries: 19# GNU1: 0000000000001100 0000000000000008 R_X86_64_RELATIVE 0 20# GNU1-NEXT: 0000000000001180 0000000000000008 R_X86_64_RELATIVE 0 21# GNU1-NEXT: 0000000000001188 0000000100000001 R_X86_64_64 0000000000000000 sym1 + 0 22# GNU1-NEXT: 0000000000001190 0000000200000001 R_X86_64_64 0000000000000000 sym2 + 0 23# GNU1-NEXT: 0000000000001191 0000000100000001 R_X86_64_64 0000000000000000 sym1 + 8 24# GNU1-NEXT: 0000000000001193 0000000200000001 R_X86_64_64 0000000000000000 sym2 + c 25# GNU1-NEXT: 0000000000001197 0000000100000001 R_X86_64_64 0000000000000000 sym1 + a 26# GNU1-NEXT: 000000000000119f 0000000200000001 R_X86_64_64 0000000000000000 sym2 + a 27 28# elf-packed-relocs1.s 29--- !ELF 30FileHeader: 31 Class: ELFCLASS64 32 Data: ELFDATA2LSB 33 Type: ET_DYN 34 Machine: EM_X86_64 35Sections: 36 - Name: .rela.dyn 37 Type: SHT_ANDROID_RELA 38 Flags: [ SHF_ALLOC ] 39 Link: [[LINK=.symtab]] 40 Content: 41505332088020020108800280010202088180808010818080802002080181808080100802818080802004020C7E048180808010088180808020 41 ShOffset: [[SHOFFSET=<none>]] 42Symbols: 43 - Name: sym1 44 Binding: STB_GLOBAL 45 - Name: sym2 46 Binding: STB_GLOBAL 47 48## Check we report a warning when we are unable to dump relocations for a SHT_ANDROID_RELA section. 49 50# RUN: yaml2obj --docnum=1 -DSHOFFSET=0xffffffff %s -o %t1.broken 51# RUN: llvm-readobj --relocations %t1.broken 2>&1 | FileCheck -DFILE=%t1.broken --check-prefix=BROKEN-RELA-LLVM %s 52# RUN: llvm-readelf --relocations %t1.broken 2>&1 | FileCheck -DFILE=%t1.broken --check-prefix=BROKEN-RELA-GNU %s 53 54# BROKEN-RELA-LLVM: Relocations [ 55# BROKEN-RELA-LLVM-NEXT: Section (1) .rela.dyn { 56# BROKEN-RELA-LLVM-NEXT: warning: '[[FILE]]': unable to read relocations from SHT_ANDROID_RELA section with index 1: section [index 1] has a sh_offset (0xffffffff) + sh_size (0x3a) that is greater than the file size (0x238) 57# BROKEN-RELA-LLVM-NEXT: } 58# BROKEN-RELA-LLVM-NEXT: ] 59 60# BROKEN-RELA-GNU: warning: '[[FILE]]': unable to get the number of relocations in SHT_ANDROID_RELA section with index 1: section [index 1] has a sh_offset (0xffffffff) + sh_size (0x3a) that is greater than the file size (0x238) 61# BROKEN-RELA-GNU: Relocation section '.rela.dyn' at offset 0xffffffff contains <?> entries: 62# BROKEN-RELA-GNU-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend 63# BROKEN-RELA-GNU-NEXT: warning: '[[FILE]]': unable to read relocations from SHT_ANDROID_RELA section with index 1: section [index 1] has a sh_offset (0xffffffff) + sh_size (0x3a) that is greater than the file size (0x238) 64 65## Check we report a warning when the sh_link field of the SHT_ANDROID_RELA section is broken. 66 67# RUN: yaml2obj --docnum=1 -DLINK=0xffffffff %s -o %t1.broken.link 68# RUN: llvm-readobj --relocations %t1.broken.link 2>&1 | \ 69# RUN: FileCheck -DFILE=%t1.broken.link --check-prefix=BROKEN-RELA-LINK-LLVM %s 70# RUN: llvm-readelf --relocations %t1.broken.link 2>&1 | \ 71# RUN: FileCheck -DFILE=%t1.broken.link --check-prefix=BROKEN-RELA-LINK-GNU %s 72 73# BROKEN-RELA-LINK-LLVM: Relocations [ 74# BROKEN-RELA-LINK-LLVM-NEXT: Section (1) .rela.dyn { 75# BROKEN-RELA-LINK-LLVM-NEXT: warning: '[[FILE]]': unable to locate a symbol table for SHT_ANDROID_RELA section with index 1: invalid section index: 4294967295 76# BROKEN-RELA-LINK-LLVM-NEXT: } 77# BROKEN-RELA-LINK-LLVM-NEXT: ] 78 79# BROKEN-RELA-LINK-GNU: Relocation section '.rela.dyn' at offset 0x40 contains 8 entries: 80# BROKEN-RELA-LINK-GNU-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend 81# BROKEN-RELA-LINK-GNU-NEXT: warning: '[[FILE]]': unable to locate a symbol table for SHT_ANDROID_RELA section with index 1: invalid section index: 4294967295 82 83# RUN: yaml2obj --docnum=2 %s -o %t2 84# RUN: llvm-readobj --relocations %t2 | FileCheck --check-prefix=LLVM2 %s 85# LLVM2: Section (1) .rel.dyn { 86# LLVM2-NEXT: 0x1008 R_386_32 sym1 0x0 87# LLVM2-NEXT: 0x1010 R_386_GOT32 sym2 0x0 88# LLVM2-NEXT: 0x100C R_386_RELATIVE - 0x0 89# LLVM2-NEXT: 0x1008 R_386_RELATIVE - 0x0 90# LLVM2-NEXT: 0x1004 R_386_RELATIVE - 0x0 91# LLVM2-NEXT: 0x1000 R_386_RELATIVE - 0x0 92# LLVM2-NEXT: 0xFFC R_386_RELATIVE - 0x0 93# LLVM2-NEXT: 0xFF8 R_386_RELATIVE - 0x0 94# LLVM2-NEXT: 0xFF4 R_386_RELATIVE - 0x0 95# LLVM2-NEXT: 0xFF0 R_386_RELATIVE - 0x0 96# LLVM2-NEXT: } 97 98# RUN: llvm-readelf --relocations %t2 | FileCheck --check-prefix=GNU2 %s 99# GNU2: Relocation section '.rel.dyn' at offset 0x34 contains 10 entries: 100# GNU2: 00001008 00000101 R_386_32 00000000 sym1 101# GNU2-NEXT: 00001010 00000203 R_386_GOT32 00000000 sym2 102# GNU2-NEXT: 0000100c 00000008 R_386_RELATIVE 103# GNU2-NEXT: 00001008 00000008 R_386_RELATIVE 104# GNU2-NEXT: 00001004 00000008 R_386_RELATIVE 105# GNU2-NEXT: 00001000 00000008 R_386_RELATIVE 106# GNU2-NEXT: 00000ffc 00000008 R_386_RELATIVE 107# GNU2-NEXT: 00000ff8 00000008 R_386_RELATIVE 108# GNU2-NEXT: 00000ff4 00000008 R_386_RELATIVE 109# GNU2-NEXT: 00000ff0 00000008 R_386_RELATIVE 110 111# elf-packed-relocs2.s 112--- !ELF 113FileHeader: 114 Class: ELFCLASS32 115 Data: ELFDATA2LSB 116 Type: ET_DYN 117 Machine: EM_386 118Sections: 119 - Name: .rel.dyn 120 Type: SHT_ANDROID_REL 121 Flags: [ SHF_ALLOC ] 122 Link: [[LINK=.symtab]] 123 Content: 415053320A80200202088102830408037C08 124 ShOffset: [[SHOFFSET=<none>]] 125Symbols: 126 - Name: sym1 127 Binding: STB_GLOBAL 128 - Name: sym2 129 Binding: STB_GLOBAL 130 131## Check we report a warning when we are unable to dump relocations for a SHT_ANDROID_REL section. 132 133# RUN: yaml2obj --docnum=2 -DSHOFFSET=0xffffffff %s -o %t2.broken 134# RUN: llvm-readobj --relocations %t2.broken 2>&1 | FileCheck -DFILE=%t2.broken --check-prefix=BROKEN-REL-LLVM %s 135# RUN: llvm-readelf --relocations %t2.broken 2>&1 | FileCheck -DFILE=%t2.broken --check-prefix=BROKEN-REL-GNU %s 136 137# BROKEN-REL-LLVM: Relocations [ 138# BROKEN-REL-LLVM-NEXT: Section (1) .rel.dyn { 139# BROKEN-REL-LLVM-NEXT: warning: '[[FILE]]': unable to read relocations from SHT_ANDROID_REL section with index 1: section [index 1] has a sh_offset (0xffffffff) + sh_size (0x12) that cannot be represented 140# BROKEN-REL-LLVM-NEXT: } 141# BROKEN-REL-LLVM-NEXT: ] 142 143# BROKEN-REL-GNU: warning: '[[FILE]]': unable to get the number of relocations in SHT_ANDROID_REL section with index 1: section [index 1] has a sh_offset (0xffffffff) + sh_size (0x12) that cannot be represented 144# BROKEN-REL-GNU: Relocation section '.rel.dyn' at offset 0xffffffff contains <?> entries: 145# BROKEN-REL-GNU-NEXT: Offset Info Type Sym. Value Symbol's Name 146# BROKEN-REL-GNU-NEXT: warning: '[[FILE]]': unable to read relocations from SHT_ANDROID_REL section with index 1: section [index 1] has a sh_offset (0xffffffff) + sh_size (0x12) that cannot be represented 147 148## Check we report a warning when the sh_link field of the SHT_ANDROID_REL section is broken. 149 150# RUN: yaml2obj --docnum=2 -DLINK=0xffffffff %s -o %t2.broken.link 151# RUN: llvm-readobj --relocations %t2.broken.link 2>&1 | \ 152# RUN: FileCheck -DFILE=%t2.broken.link --check-prefix=BROKEN-REL-LINK-LLVM %s 153# RUN: llvm-readelf --relocations %t2.broken.link 2>&1 | \ 154# RUN: FileCheck -DFILE=%t2.broken.link --check-prefix=BROKEN-REL-LINK-GNU %s 155 156# BROKEN-REL-LINK-LLVM: Relocations [ 157# BROKEN-REL-LINK-LLVM-NEXT: Section (1) .rel.dyn { 158# BROKEN-REL-LINK-LLVM-NEXT: warning: '[[FILE]]': unable to locate a symbol table for SHT_ANDROID_REL section with index 1: invalid section index: 4294967295 159# BROKEN-REL-LINK-LLVM-NEXT: } 160# BROKEN-REL-LINK-LLVM-NEXT: ] 161 162# BROKEN-REL-LINK-GNU: Relocation section '.rel.dyn' at offset 0x34 contains 10 entries: 163# BROKEN-REL-LINK-GNU-NEXT: Offset Info Type Sym. Value Symbol's Name 164# BROKEN-REL-LINK-GNU-NEXT: warning: '[[FILE]]': unable to locate a symbol table for SHT_ANDROID_REL section with index 1: invalid section index: 4294967295 165 166# RUN: yaml2obj --docnum=3 %s | llvm-readobj --relocations - | FileCheck --check-prefix=LLVM3 %s 167# 168# LLVM3: Section (1) .rela.dyn { 169# LLVM3-NEXT: 0x1100 R_X86_64_RELATIVE - 0x0 170# LLVM3-NEXT: 0x1180 R_X86_64_RELATIVE - 0x8 171# LLVM3-NEXT: 0x1200 R_X86_64_64 sym1 0x0 172# LLVM3-NEXT: 0x1208 R_X86_64_64 sym2 0x0 173# LLVM3-NEXT: 0x1210 R_X86_64_64 sym1 0x0 174# LLVM3-NEXT: 0x1218 R_X86_64_64 sym2 0x8 175# LLVM3-NEXT: } 176 177# RUN: yaml2obj --docnum=3 %s | llvm-readelf -r - | FileCheck --check-prefix=GNU3 %s 178# GNU3: Relocation section '.rela.dyn' at offset 0x40 contains 6 entries: 179# GNU3: 0000000000001100 0000000000000008 R_X86_64_RELATIVE 0 180# GNU3-NEXT: 0000000000001180 0000000000000008 R_X86_64_RELATIVE 8 181# GNU3-NEXT: 0000000000001200 0000000100000001 R_X86_64_64 0000000000000000 sym1 + 0 182# GNU3-NEXT: 0000000000001208 0000000200000001 R_X86_64_64 0000000000000000 sym2 + 0 183# GNU3-NEXT: 0000000000001210 0000000100000001 R_X86_64_64 0000000000000000 sym1 + 0 184# GNU3-NEXT: 0000000000001218 0000000200000001 R_X86_64_64 0000000000000000 sym2 + 8 185 186# elf-packed-relocs3.s 187--- !ELF 188FileHeader: 189 Class: ELFCLASS64 190 Data: ELFDATA2LSB 191 Type: ET_DYN 192 Machine: EM_X86_64 193Sections: 194 - Name: .rela.dyn 195 Type: SHT_ANDROID_RELA 196 Flags: [ SHF_ALLOC ] 197 Link: .symtab 198 Content: 415053320680200208800208008001080802008001818080801008818080802002080881808080100008818080802008 199Symbols: 200 - Name: sym1 201 Binding: STB_GLOBAL 202 - Name: sym2 203 Binding: STB_GLOBAL 204