1RUN: llvm-readobj -mips-plt-got %p/Inputs/relocs.obj.elf-mips | \ 2RUN: FileCheck %s -check-prefix GOT-OBJ 3RUN: llvm-readobj -mips-plt-got %p/Inputs/dynamic-table-exe.mips | \ 4RUN: FileCheck %s -check-prefix GOT-EXE 5RUN: llvm-readobj -mips-plt-got %p/Inputs/dynamic-table-so.mips | \ 6RUN: FileCheck %s -check-prefix GOT-SO 7RUN: llvm-readobj -mips-plt-got %p/Inputs/got-tls.so.elf-mips64el | \ 8RUN: FileCheck %s -check-prefix GOT-TLS 9RUN: llvm-readobj -mips-plt-got %p/Inputs/got-empty.exe.mipsel | \ 10RUN: FileCheck %s -check-prefix GOT-EMPTY 11 12GOT-OBJ: Cannot find PLTGOT dynamic table tag. 13 14GOT-EXE: Primary GOT { 15GOT-EXE-NEXT: Canonical gp value: 0x418880 16GOT-EXE-NEXT: Reserved entries [ 17GOT-EXE-NEXT: Entry { 18GOT-EXE-NEXT: Address: 0x410890 19GOT-EXE-NEXT: Access: -32752 20GOT-EXE-NEXT: Initial: 0x0 21GOT-EXE-NEXT: Purpose: Lazy resolver 22GOT-EXE-NEXT: } 23GOT-EXE-NEXT: Entry { 24GOT-EXE-NEXT: Address: 0x410894 25GOT-EXE-NEXT: Access: -32748 26GOT-EXE-NEXT: Initial: 0x80000000 27GOT-EXE-NEXT: Purpose: Module pointer (GNU extension) 28GOT-EXE-NEXT: } 29GOT-EXE-NEXT: ] 30GOT-EXE-NEXT: Local entries [ 31GOT-EXE-NEXT: Entry { 32GOT-EXE-NEXT: Address: 0x410898 33GOT-EXE-NEXT: Access: -32744 34GOT-EXE-NEXT: Initial: 0x400418 35GOT-EXE-NEXT: } 36GOT-EXE-NEXT: Entry { 37GOT-EXE-NEXT: Address: 0x41089C 38GOT-EXE-NEXT: Access: -32740 39GOT-EXE-NEXT: Initial: 0x410840 40GOT-EXE-NEXT: } 41GOT-EXE-NEXT: Entry { 42GOT-EXE-NEXT: Address: 0x4108A0 43GOT-EXE-NEXT: Access: -32736 44GOT-EXE-NEXT: Initial: 0x0 45GOT-EXE-NEXT: } 46GOT-EXE-NEXT: ] 47GOT-EXE-NEXT: Global entries [ 48GOT-EXE-NEXT: Entry { 49GOT-EXE-NEXT: Address: 0x4108A4 50GOT-EXE-NEXT: Access: -32732 51GOT-EXE-NEXT: Initial: 0x0 52GOT-EXE-NEXT: Value: 0x0 53GOT-EXE-NEXT: Type: Function (0x2) 54GOT-EXE-NEXT: Section: Undefined (0x0) 55GOT-EXE-NEXT: Name: __gmon_start__@ (1) 56GOT-EXE-NEXT: } 57GOT-EXE-NEXT: ] 58GOT-EXE-NEXT: Number of TLS and multi-GOT entries: 0 59GOT-EXE-NEXT: } 60 61GOT-SO: Primary GOT { 62GOT-SO-NEXT: Canonical gp value: 0x188D0 63GOT-SO-NEXT: Reserved entries [ 64GOT-SO-NEXT: Entry { 65GOT-SO-NEXT: Address: 0x108E0 66GOT-SO-NEXT: Access: -32752 67GOT-SO-NEXT: Initial: 0x0 68GOT-SO-NEXT: Purpose: Lazy resolver 69GOT-SO-NEXT: } 70GOT-SO-NEXT: Entry { 71GOT-SO-NEXT: Address: 0x108E4 72GOT-SO-NEXT: Access: -32748 73GOT-SO-NEXT: Initial: 0x80000000 74GOT-SO-NEXT: Purpose: Module pointer (GNU extension) 75GOT-SO-NEXT: } 76GOT-SO-NEXT: ] 77GOT-SO-NEXT: Local entries [ 78GOT-SO-NEXT: Entry { 79GOT-SO-NEXT: Address: 0x108E8 80GOT-SO-NEXT: Access: -32744 81GOT-SO-NEXT: Initial: 0x108E0 82GOT-SO-NEXT: } 83GOT-SO-NEXT: Entry { 84GOT-SO-NEXT: Address: 0x108EC 85GOT-SO-NEXT: Access: -32740 86GOT-SO-NEXT: Initial: 0x10000 87GOT-SO-NEXT: } 88GOT-SO-NEXT: Entry { 89GOT-SO-NEXT: Address: 0x108F0 90GOT-SO-NEXT: Access: -32736 91GOT-SO-NEXT: Initial: 0x10920 92GOT-SO-NEXT: } 93GOT-SO-NEXT: Entry { 94GOT-SO-NEXT: Address: 0x108F4 95GOT-SO-NEXT: Access: -32732 96GOT-SO-NEXT: Initial: 0x108CC 97GOT-SO-NEXT: } 98GOT-SO-NEXT: Entry { 99GOT-SO-NEXT: Address: 0x108F8 100GOT-SO-NEXT: Access: -32728 101GOT-SO-NEXT: Initial: 0x0 102GOT-SO-NEXT: } 103GOT-SO-NEXT: Entry { 104GOT-SO-NEXT: Address: 0x108FC 105GOT-SO-NEXT: Access: -32724 106GOT-SO-NEXT: Initial: 0x0 107GOT-SO-NEXT: } 108GOT-SO-NEXT: Entry { 109GOT-SO-NEXT: Address: 0x10900 110GOT-SO-NEXT: Access: -32720 111GOT-SO-NEXT: Initial: 0x0 112GOT-SO-NEXT: } 113GOT-SO-NEXT: Entry { 114GOT-SO-NEXT: Address: 0x10904 115GOT-SO-NEXT: Access: -32716 116GOT-SO-NEXT: Initial: 0x0 117GOT-SO-NEXT: } 118GOT-SO-NEXT: ] 119GOT-SO-NEXT: Global entries [ 120GOT-SO-NEXT: Entry { 121GOT-SO-NEXT: Address: 0x10908 122GOT-SO-NEXT: Access: -32712 123GOT-SO-NEXT: Initial: 0x0 124GOT-SO-NEXT: Value: 0x0 125GOT-SO-NEXT: Type: None (0x0) 126GOT-SO-NEXT: Section: Undefined (0x0) 127GOT-SO-NEXT: Name: _ITM_registerTMCloneTable@ (87) 128GOT-SO-NEXT: } 129GOT-SO-NEXT: Entry { 130GOT-SO-NEXT: Address: 0x1090C 131GOT-SO-NEXT: Access: -32708 132GOT-SO-NEXT: Initial: 0x0 133GOT-SO-NEXT: Value: 0x0 134GOT-SO-NEXT: Type: None (0x0) 135GOT-SO-NEXT: Section: Undefined (0x0) 136GOT-SO-NEXT: Name: _Jv_RegisterClasses@ (128) 137GOT-SO-NEXT: } 138GOT-SO-NEXT: Entry { 139GOT-SO-NEXT: Address: 0x10910 140GOT-SO-NEXT: Access: -32704 141GOT-SO-NEXT: Initial: 0x0 142GOT-SO-NEXT: Value: 0x0 143GOT-SO-NEXT: Type: Function (0x2) 144GOT-SO-NEXT: Section: Undefined (0x0) 145GOT-SO-NEXT: Name: __gmon_start__@ (23) 146GOT-SO-NEXT: } 147GOT-SO-NEXT: Entry { 148GOT-SO-NEXT: Address: 0x10914 149GOT-SO-NEXT: Access: -32700 150GOT-SO-NEXT: Initial: 0x840 151GOT-SO-NEXT: Value: 0x840 152GOT-SO-NEXT: Type: Function (0x2) 153GOT-SO-NEXT: Section: Undefined (0x0) 154GOT-SO-NEXT: Name: puts@GLIBC_2.0 (162) 155GOT-SO-NEXT: } 156GOT-SO-NEXT: Entry { 157GOT-SO-NEXT: Address: 0x10918 158GOT-SO-NEXT: Access: -32696 159GOT-SO-NEXT: Initial: 0x0 160GOT-SO-NEXT: Value: 0x0 161GOT-SO-NEXT: Type: None (0x0) 162GOT-SO-NEXT: Section: Undefined (0x0) 163GOT-SO-NEXT: Name: _ITM_deregisterTMCloneTable@ (59) 164GOT-SO-NEXT: } 165GOT-SO-NEXT: Entry { 166GOT-SO-NEXT: Address: 0x1091C 167GOT-SO-NEXT: Access: -32692 168GOT-SO-NEXT: Initial: 0x0 169GOT-SO-NEXT: Value: 0x0 170GOT-SO-NEXT: Type: Function (0x2) 171GOT-SO-NEXT: Section: Undefined (0x0) 172GOT-SO-NEXT: Name: __cxa_finalize@GLIBC_2.2 (113) 173GOT-SO-NEXT: } 174GOT-SO-NEXT: ] 175GOT-SO-NEXT: Number of TLS and multi-GOT entries: 0 176GOT-SO-NEXT: } 177 178GOT-TLS: Primary GOT { 179GOT-TLS-NEXT: Canonical gp value: 0x18BF0 180GOT-TLS-NEXT: Reserved entries [ 181GOT-TLS-NEXT: Entry { 182GOT-TLS-NEXT: Address: 0x10C00 183GOT-TLS-NEXT: Access: -32752 184GOT-TLS-NEXT: Initial: 0x0 185GOT-TLS-NEXT: Purpose: Lazy resolver 186GOT-TLS-NEXT: } 187GOT-TLS-NEXT: Entry { 188GOT-TLS-NEXT: Address: 0x10C08 189GOT-TLS-NEXT: Access: -32744 190GOT-TLS-NEXT: Initial: 0x8000000000000000 191GOT-TLS-NEXT: Purpose: Module pointer (GNU extension) 192GOT-TLS-NEXT: } 193GOT-TLS-NEXT: ] 194GOT-TLS-NEXT: Local entries [ 195GOT-TLS-NEXT: Entry { 196GOT-TLS-NEXT: Address: 0x10C10 197GOT-TLS-NEXT: Access: -32736 198GOT-TLS-NEXT: Initial: 0x10000 199GOT-TLS-NEXT: } 200GOT-TLS-NEXT: Entry { 201GOT-TLS-NEXT: Address: 0x10C18 202GOT-TLS-NEXT: Access: -32728 203GOT-TLS-NEXT: Initial: 0x10C00 204GOT-TLS-NEXT: } 205GOT-TLS-NEXT: Entry { 206GOT-TLS-NEXT: Address: 0x10C20 207GOT-TLS-NEXT: Access: -32720 208GOT-TLS-NEXT: Initial: 0x10CB8 209GOT-TLS-NEXT: } 210GOT-TLS-NEXT: Entry { 211GOT-TLS-NEXT: Address: 0x10C28 212GOT-TLS-NEXT: Access: -32712 213GOT-TLS-NEXT: Initial: 0x10BF0 214GOT-TLS-NEXT: } 215GOT-TLS-NEXT: Entry { 216GOT-TLS-NEXT: Address: 0x10C30 217GOT-TLS-NEXT: Access: -32704 218GOT-TLS-NEXT: Initial: 0x0 219GOT-TLS-NEXT: } 220GOT-TLS-NEXT: Entry { 221GOT-TLS-NEXT: Address: 0x10C38 222GOT-TLS-NEXT: Access: -32696 223GOT-TLS-NEXT: Initial: 0x948 224GOT-TLS-NEXT: } 225GOT-TLS-NEXT: Entry { 226GOT-TLS-NEXT: Address: 0x10C40 227GOT-TLS-NEXT: Access: -32688 228GOT-TLS-NEXT: Initial: 0xA20 229GOT-TLS-NEXT: } 230GOT-TLS-NEXT: Entry { 231GOT-TLS-NEXT: Address: 0x10C48 232GOT-TLS-NEXT: Access: -32680 233GOT-TLS-NEXT: Initial: 0xAF0 234GOT-TLS-NEXT: } 235GOT-TLS-NEXT: Entry { 236GOT-TLS-NEXT: Address: 0x10C50 237GOT-TLS-NEXT: Access: -32672 238GOT-TLS-NEXT: Initial: 0x0 239GOT-TLS-NEXT: } 240GOT-TLS-NEXT: Entry { 241GOT-TLS-NEXT: Address: 0x10C58 242GOT-TLS-NEXT: Access: -32664 243GOT-TLS-NEXT: Initial: 0x0 244GOT-TLS-NEXT: } 245GOT-TLS-NEXT: Entry { 246GOT-TLS-NEXT: Address: 0x10C60 247GOT-TLS-NEXT: Access: -32656 248GOT-TLS-NEXT: Initial: 0x0 249GOT-TLS-NEXT: } 250GOT-TLS-NEXT: ] 251GOT-TLS-NEXT: Global entries [ 252GOT-TLS-NEXT: Entry { 253GOT-TLS-NEXT: Address: 0x10C68 254GOT-TLS-NEXT: Access: -32648 255GOT-TLS-NEXT: Initial: 0x0 256GOT-TLS-NEXT: Value: 0x0 257GOT-TLS-NEXT: Type: None (0x0) 258GOT-TLS-NEXT: Section: Undefined (0x0) 259GOT-TLS-NEXT: Name: _ITM_registerTMCloneTable@ (78) 260GOT-TLS-NEXT: } 261GOT-TLS-NEXT: Entry { 262GOT-TLS-NEXT: Address: 0x10C70 263GOT-TLS-NEXT: Access: -32640 264GOT-TLS-NEXT: Initial: 0x0 265GOT-TLS-NEXT: Value: 0x0 266GOT-TLS-NEXT: Type: None (0x0) 267GOT-TLS-NEXT: Section: Undefined (0x0) 268GOT-TLS-NEXT: Name: _Jv_RegisterClasses@ (119) 269GOT-TLS-NEXT: } 270GOT-TLS-NEXT: Entry { 271GOT-TLS-NEXT: Address: 0x10C78 272GOT-TLS-NEXT: Access: -32632 273GOT-TLS-NEXT: Initial: 0x0 274GOT-TLS-NEXT: Value: 0x0 275GOT-TLS-NEXT: Type: Function (0x2) 276GOT-TLS-NEXT: Section: Undefined (0x0) 277GOT-TLS-NEXT: Name: __gmon_start__@ (23) 278GOT-TLS-NEXT: } 279GOT-TLS-NEXT: Entry { 280GOT-TLS-NEXT: Address: 0x10C80 281GOT-TLS-NEXT: Access: -32624 282GOT-TLS-NEXT: Initial: 0xB60 283GOT-TLS-NEXT: Value: 0xB60 284GOT-TLS-NEXT: Type: Function (0x2) 285GOT-TLS-NEXT: Section: Undefined (0x0) 286GOT-TLS-NEXT: Name: __tls_get_addr@GLIBC_2.3 (150) 287GOT-TLS-NEXT: } 288GOT-TLS-NEXT: Entry { 289GOT-TLS-NEXT: Address: 0x10C88 290GOT-TLS-NEXT: Access: -32616 291GOT-TLS-NEXT: Initial: 0x0 292GOT-TLS-NEXT: Value: 0x0 293GOT-TLS-NEXT: Type: None (0x0) 294GOT-TLS-NEXT: Section: Undefined (0x0) 295GOT-TLS-NEXT: Name: _ITM_deregisterTMCloneTable@ (50) 296GOT-TLS-NEXT: } 297GOT-TLS-NEXT: Entry { 298GOT-TLS-NEXT: Address: 0x10C90 299GOT-TLS-NEXT: Access: -32608 300GOT-TLS-NEXT: Initial: 0x0 301GOT-TLS-NEXT: Value: 0x0 302GOT-TLS-NEXT: Type: Function (0x2) 303GOT-TLS-NEXT: Section: Undefined (0x0) 304GOT-TLS-NEXT: Name: __cxa_finalize@GLIBC_2.2 (104) 305GOT-TLS-NEXT: } 306GOT-TLS-NEXT: ] 307GOT-TLS-NEXT: Number of TLS and multi-GOT entries: 4 308GOT-TLS-NEXT: } 309 310GOT-EMPTY: Primary GOT { 311GOT-EMPTY-NEXT: Canonical gp value: 0x409FF0 312GOT-EMPTY-NEXT: Reserved entries [ 313GOT-EMPTY-NEXT: Entry { 314GOT-EMPTY-NEXT: Address: 0x402000 315GOT-EMPTY-NEXT: Access: -32752 316GOT-EMPTY-NEXT: Initial: 0x0 317GOT-EMPTY-NEXT: Purpose: Lazy resolver 318GOT-EMPTY-NEXT: } 319GOT-EMPTY-NEXT: Entry { 320GOT-EMPTY-NEXT: Address: 0x402004 321GOT-EMPTY-NEXT: Access: -32748 322GOT-EMPTY-NEXT: Initial: 0x80000000 323GOT-EMPTY-NEXT: Purpose: Module pointer (GNU extension) 324GOT-EMPTY-NEXT: } 325GOT-EMPTY-NEXT: ] 326GOT-EMPTY-NEXT: Local entries [ 327GOT-EMPTY-NEXT: ] 328GOT-EMPTY-NEXT: Global entries [ 329GOT-EMPTY-NEXT: ] 330GOT-EMPTY-NEXT: Number of TLS and multi-GOT entries: 2 331GOT-EMPTY-NEXT: } 332