1 RUN: llvm-readobj -s -t -dt -dynamic-table -needed-libs \ 2 RUN: %p/Inputs/shared-object-test.elf-i386 \ 3 RUN: | FileCheck %s -check-prefix ELF 4 RUN: llvm-readobj -s -t -dt -dynamic-table -needed-libs \ 5 RUN: %p/Inputs/shared-object-test.elf-i386 \ 6 RUN: | FileCheck %s -check-prefix ELF32 7 8 RUN: llvm-readobj -s -t -dt -dynamic-table -needed-libs \ 9 RUN: %p/Inputs/shared-object-test.elf-x86-64 \ 10 RUN: | FileCheck %s -check-prefix ELF 11 RUN: llvm-readobj -s -t -dt -dynamic-table -needed-libs \ 12 RUN: %p/Inputs/shared-object-test.elf-x86-64 \ 13 RUN: | FileCheck %s -check-prefix ELF64 14 15 ELF64: Format: ELF64-x86-64 16 ELF64: Arch: x86_64 17 ELF64: AddressSize: 64bit 18 ELF64: LoadName: libfoo.so 19 20 ELF32: Format: ELF32-i386 21 ELF32: Arch: i386 22 ELF32: AddressSize: 32bit 23 ELF32: LoadName: libfoo.so 24 25 ELF: Sections [ 26 ELF: Section { 27 ELF: Name: (0) 28 ELF: Type: SHT_NULL 29 ELF: Flags [ (0x0) 30 ELF: ] 31 ELF: } 32 ELF: Section { 33 ELF: Name: .hash 34 ELF: Type: SHT_HASH 35 ELF: Flags [ (0x2) 36 ELF: SHF_ALLOC 37 ELF: ] 38 ELF: } 39 ELF: Section { 40 ELF: Name: .dynsym 41 ELF: Type: SHT_DYNSYM 42 ELF: Flags [ (0x2) 43 ELF: SHF_ALLOC 44 ELF: ] 45 ELF: } 46 ELF: Section { 47 ELF: Name: .dynstr 48 ELF: Type: SHT_STRTAB 49 ELF: Flags [ (0x2) 50 ELF: SHF_ALLOC 51 ELF: ] 52 ELF: } 53 ELF: Section { 54 ELF: Name: .text 55 ELF: Type: SHT_PROGBITS 56 ELF: Flags [ (0x6) 57 ELF: SHF_ALLOC 58 ELF: SHF_EXECINSTR 59 ELF: ] 60 ELF: } 61 ELF: Section { 62 ELF: Name: .eh_frame 63 ELF: Type: SHT_PROGBITS 64 ELF: Flags [ (0x2) 65 ELF: SHF_ALLOC 66 ELF: ] 67 ELF: } 68 ELF: Section { 69 ELF: Name: .tdata 70 ELF: Type: SHT_PROGBITS 71 ELF: Flags [ (0x403) 72 ELF: SHF_ALLOC 73 ELF: SHF_TLS 74 ELF: SHF_WRITE 75 ELF: ] 76 ELF: } 77 ELF: Section { 78 ELF: Name: .dynamic 79 ELF: Type: SHT_DYNAMIC 80 ELF: Flags [ (0x3) 81 ELF: SHF_ALLOC 82 ELF: SHF_WRITE 83 ELF: ] 84 ELF: } 85 ELF: Section { 86 ELF: Name: .got.plt 87 ELF: Type: SHT_PROGBITS 88 ELF: Flags [ (0x3) 89 ELF: SHF_ALLOC 90 ELF: SHF_WRITE 91 ELF: ] 92 ELF: } 93 ELF: Section { 94 ELF: Name: .data 95 ELF: Type: SHT_PROGBITS 96 ELF: Flags [ (0x3) 97 ELF: SHF_ALLOC 98 ELF: SHF_WRITE 99 ELF: ] 100 ELF: } 101 ELF: Section { 102 ELF: Name: .bss 103 ELF: Type: SHT_NOBITS 104 ELF: Flags [ (0x3) 105 ELF: SHF_ALLOC 106 ELF: SHF_WRITE 107 ELF: ] 108 ELF: } 109 ELF: Section { 110 ELF: Name: .shstrtab 111 ELF: Type: SHT_STRTAB 112 ELF: Flags [ (0x0) 113 ELF: ] 114 ELF: } 115 ELF: Section { 116 ELF: Name: .symtab 117 ELF: Type: SHT_SYMTAB 118 ELF: Flags [ (0x0) 119 ELF: ] 120 ELF: } 121 ELF: Section { 122 ELF: Name: .strtab 123 ELF: Type: SHT_STRTAB 124 ELF: Flags [ (0x0) 125 ELF: ] 126 ELF: } 127 ELF: ] 128 129 ELF: Symbols [ 130 ELF: Symbol { 131 ELF: Name: .hash 132 ELF: Binding: Local 133 ELF: Type: Section 134 ELF: Section: .hash 135 ELF: } 136 ELF: Symbol { 137 ELF: Name: .dynsym 138 ELF: Binding: Local 139 ELF: Type: Section 140 ELF: Section: .dynsym 141 ELF: } 142 ELF: Symbol { 143 ELF: Name: .dynstr 144 ELF: Binding: Local 145 ELF: Type: Section 146 ELF: Section: .dynstr 147 ELF: } 148 ELF: Symbol { 149 ELF: Name: .text 150 ELF: Binding: Local 151 ELF: Type: Section 152 ELF: Section: .text 153 ELF: } 154 ELF: Symbol { 155 ELF: Name: .eh_frame 156 ELF: Binding: Local 157 ELF: Type: Section 158 ELF: Section: .eh_frame 159 ELF: } 160 ELF: Symbol { 161 ELF: Name: .tdata 162 ELF: Binding: Local 163 ELF: Type: Section 164 ELF: Section: .tdata 165 ELF: } 166 ELF: Symbol { 167 ELF: Name: .dynamic 168 ELF: Binding: Local 169 ELF: Type: Section 170 ELF: Section: .dynamic 171 ELF: } 172 ELF: Symbol { 173 ELF: Name: .got.plt 174 ELF: Binding: Local 175 ELF: Type: Section 176 ELF: Section: .got.plt 177 ELF: } 178 ELF: Symbol { 179 ELF: Name: .data 180 ELF: Binding: Local 181 ELF: Type: Section 182 ELF: Section: .data 183 ELF: } 184 ELF: Symbol { 185 ELF: Name: .bss 186 ELF: Binding: Local 187 ELF: Type: Section 188 ELF: Section: .bss 189 ELF: } 190 ELF: Symbol { 191 ELF: Name: shared.ll 192 ELF: Binding: Local 193 ELF: Type: File 194 ELF: Section: (0xFFF1) 195 ELF: } 196 ELF: Symbol { 197 ELF: Name: local_func 198 ELF: Binding: Local 199 ELF: Type: Function 200 ELF: Section: .text 201 ELF: } 202 ELF: Symbol { 203 ELF: Name: _GLOBAL_OFFSET_TABLE_ 204 ELF: Binding: Local 205 ELF: Type: Object 206 ELF: Section: (0xFFF1) 207 ELF: } 208 ELF: Symbol { 209 ELF: Name: _DYNAMIC 210 ELF: Binding: Local 211 ELF: Type: Object 212 ELF: Section: (0xFFF1) 213 ELF: } 214 ELF: Symbol { 215 ELF: Name: common_sym 216 ELF: Binding: Global 217 ELF: Type: Object 218 ELF: Section: .bss 219 ELF: } 220 ELF: Symbol { 221 ELF: Name: tls_sym 222 ELF: Binding: Global 223 ELF: Type: TLS 224 ELF: Section: .tdata 225 ELF: } 226 ELF: Symbol { 227 ELF: Name: defined_sym 228 ELF: Binding: Global 229 ELF: Type: Object 230 ELF: Section: .data 231 ELF: } 232 ELF: Symbol { 233 ELF: Name: __bss_start 234 ELF: Binding: Global 235 ELF: Type: None 236 ELF: Section: (0xFFF1) 237 ELF: } 238 ELF: Symbol { 239 ELF: Name: _end 240 ELF: Binding: Global 241 ELF: Type: None 242 ELF: Section: (0xFFF1) 243 ELF: } 244 ELF: Symbol { 245 ELF: Name: global_func 246 ELF: Binding: Global 247 ELF: Type: Function 248 ELF: Section: .text 249 ELF: } 250 ELF: Symbol { 251 ELF: Name: _edata 252 ELF: Binding: Global 253 ELF: Type: None 254 ELF: Section: (0xFFF1) 255 ELF: } 256 ELF: ] 257 258 ELF: DynamicSymbols [ 259 ELF: Symbol { 260 ELF: Name: common_sym 261 ELF: Binding: Global 262 ELF: Type: Object 263 ELF: Section: .bss 264 ELF: } 265 ELF: Symbol { 266 ELF: Name: tls_sym 267 ELF: Binding: Global 268 ELF: Type: TLS 269 ELF: Section: .tdata 270 ELF: } 271 ELF: Symbol { 272 ELF: Name: defined_sym 273 ELF: Binding: Global 274 ELF: Type: Object 275 ELF: Section: .data 276 ELF: } 277 ELF: Symbol { 278 ELF: Name: __bss_start 279 ELF: Binding: Global 280 ELF: Type: None 281 ELF: Section: (0xFFF1) 282 ELF: } 283 ELF: Symbol { 284 ELF: Name: _end 285 ELF: Binding: Global 286 ELF: Type: None 287 ELF: Section: (0xFFF1) 288 ELF: } 289 ELF: Symbol { 290 ELF: Name: global_func 291 ELF: Binding: Global 292 ELF: Type: Function 293 ELF: Section: .text 294 ELF: } 295 ELF: Symbol { 296 ELF: Name: _edata 297 ELF: Binding: Global 298 ELF: Type: None 299 ELF: Section: (0xFFF1) 300 ELF: } 301 ELF: ] 302 303 ELF: DynamicSection [ (9 entries) 304 ELF: Tag Type Name/Value 305 ELF: 00000001 NEEDED SharedLibrary (libc.so.6) 306 ELF: 00000001 NEEDED SharedLibrary (libm.so.6) 307 ELF: 0000000E SONAME LibrarySoname (libfoo.so) 308 ELF: 00000004 HASH {{[0-9a-f]+}} 309 ELF: 00000005 STRTAB {{[0-9a-f]+}} 310 ELF: 00000006 SYMTAB {{[0-9a-f]+}} 311 ELF: 0000000A STRSZ {{[0-9]+}} (bytes) 312 ELF: 0000000B SYMENT {{[0-9]+}} (bytes) 313 ELF: 00000000 NULL 0x0 314 ELF: ] 315 316 ELF: NeededLibraries [ 317 ELF-NEXT: libc.so.6 318 ELF-NEXT: libm.so.6 319 ELF-NEXT: ] 320