RUN: llvm-readobj -mips-plt-got %p/Inputs/relocs.obj.elf-mips | \ RUN: FileCheck %s -check-prefix GOT-OBJ RUN: llvm-readobj -mips-plt-got %p/Inputs/dynamic-table-exe.mips | \ RUN: FileCheck %s -check-prefix GOT-EXE RUN: llvm-readobj -mips-plt-got %p/Inputs/dynamic-table-so.mips | \ RUN: FileCheck %s -check-prefix GOT-SO RUN: llvm-readobj -mips-plt-got %p/Inputs/got-tls.so.elf-mips64el | \ RUN: FileCheck %s -check-prefix GOT-TLS RUN: llvm-readobj -mips-plt-got %p/Inputs/got-empty.exe.mipsel | \ RUN: FileCheck %s -check-prefix GOT-EMPTY GOT-OBJ: Cannot find PLTGOT dynamic table tag. GOT-EXE: Primary GOT { GOT-EXE-NEXT: Canonical gp value: 0x418880 GOT-EXE-NEXT: Reserved entries [ GOT-EXE-NEXT: Entry { GOT-EXE-NEXT: Address: 0x410890 GOT-EXE-NEXT: Access: -32752 GOT-EXE-NEXT: Initial: 0x0 GOT-EXE-NEXT: Purpose: Lazy resolver GOT-EXE-NEXT: } GOT-EXE-NEXT: Entry { GOT-EXE-NEXT: Address: 0x410894 GOT-EXE-NEXT: Access: -32748 GOT-EXE-NEXT: Initial: 0x80000000 GOT-EXE-NEXT: Purpose: Module pointer (GNU extension) GOT-EXE-NEXT: } GOT-EXE-NEXT: ] GOT-EXE-NEXT: Local entries [ GOT-EXE-NEXT: Entry { GOT-EXE-NEXT: Address: 0x410898 GOT-EXE-NEXT: Access: -32744 GOT-EXE-NEXT: Initial: 0x400418 GOT-EXE-NEXT: } GOT-EXE-NEXT: Entry { GOT-EXE-NEXT: Address: 0x41089C GOT-EXE-NEXT: Access: -32740 GOT-EXE-NEXT: Initial: 0x410840 GOT-EXE-NEXT: } GOT-EXE-NEXT: Entry { GOT-EXE-NEXT: Address: 0x4108A0 GOT-EXE-NEXT: Access: -32736 GOT-EXE-NEXT: Initial: 0x0 GOT-EXE-NEXT: } GOT-EXE-NEXT: ] GOT-EXE-NEXT: Global entries [ GOT-EXE-NEXT: Entry { GOT-EXE-NEXT: Address: 0x4108A4 GOT-EXE-NEXT: Access: -32732 GOT-EXE-NEXT: Initial: 0x0 GOT-EXE-NEXT: Value: 0x0 GOT-EXE-NEXT: Type: Function (0x2) GOT-EXE-NEXT: Section: Undefined (0x0) GOT-EXE-NEXT: Name: __gmon_start__@ (1) GOT-EXE-NEXT: } GOT-EXE-NEXT: ] GOT-EXE-NEXT: Number of TLS and multi-GOT entries: 0 GOT-EXE-NEXT: } GOT-SO: Primary GOT { GOT-SO-NEXT: Canonical gp value: 0x188D0 GOT-SO-NEXT: Reserved entries [ GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x108E0 GOT-SO-NEXT: Access: -32752 GOT-SO-NEXT: Initial: 0x0 GOT-SO-NEXT: Purpose: Lazy resolver GOT-SO-NEXT: } GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x108E4 GOT-SO-NEXT: Access: -32748 GOT-SO-NEXT: Initial: 0x80000000 GOT-SO-NEXT: Purpose: Module pointer (GNU extension) GOT-SO-NEXT: } GOT-SO-NEXT: ] GOT-SO-NEXT: Local entries [ GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x108E8 GOT-SO-NEXT: Access: -32744 GOT-SO-NEXT: Initial: 0x108E0 GOT-SO-NEXT: } GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x108EC GOT-SO-NEXT: Access: -32740 GOT-SO-NEXT: Initial: 0x10000 GOT-SO-NEXT: } GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x108F0 GOT-SO-NEXT: Access: -32736 GOT-SO-NEXT: Initial: 0x10920 GOT-SO-NEXT: } GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x108F4 GOT-SO-NEXT: Access: -32732 GOT-SO-NEXT: Initial: 0x108CC GOT-SO-NEXT: } GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x108F8 GOT-SO-NEXT: Access: -32728 GOT-SO-NEXT: Initial: 0x0 GOT-SO-NEXT: } GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x108FC GOT-SO-NEXT: Access: -32724 GOT-SO-NEXT: Initial: 0x0 GOT-SO-NEXT: } GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x10900 GOT-SO-NEXT: Access: -32720 GOT-SO-NEXT: Initial: 0x0 GOT-SO-NEXT: } GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x10904 GOT-SO-NEXT: Access: -32716 GOT-SO-NEXT: Initial: 0x0 GOT-SO-NEXT: } GOT-SO-NEXT: ] GOT-SO-NEXT: Global entries [ GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x10908 GOT-SO-NEXT: Access: -32712 GOT-SO-NEXT: Initial: 0x0 GOT-SO-NEXT: Value: 0x0 GOT-SO-NEXT: Type: None (0x0) GOT-SO-NEXT: Section: Undefined (0x0) GOT-SO-NEXT: Name: _ITM_registerTMCloneTable@ (87) GOT-SO-NEXT: } GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x1090C GOT-SO-NEXT: Access: -32708 GOT-SO-NEXT: Initial: 0x0 GOT-SO-NEXT: Value: 0x0 GOT-SO-NEXT: Type: None (0x0) GOT-SO-NEXT: Section: Undefined (0x0) GOT-SO-NEXT: Name: _Jv_RegisterClasses@ (128) GOT-SO-NEXT: } GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x10910 GOT-SO-NEXT: Access: -32704 GOT-SO-NEXT: Initial: 0x0 GOT-SO-NEXT: Value: 0x0 GOT-SO-NEXT: Type: Function (0x2) GOT-SO-NEXT: Section: Undefined (0x0) GOT-SO-NEXT: Name: __gmon_start__@ (23) GOT-SO-NEXT: } GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x10914 GOT-SO-NEXT: Access: -32700 GOT-SO-NEXT: Initial: 0x840 GOT-SO-NEXT: Value: 0x840 GOT-SO-NEXT: Type: Function (0x2) GOT-SO-NEXT: Section: Undefined (0x0) GOT-SO-NEXT: Name: puts@GLIBC_2.0 (162) GOT-SO-NEXT: } GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x10918 GOT-SO-NEXT: Access: -32696 GOT-SO-NEXT: Initial: 0x0 GOT-SO-NEXT: Value: 0x0 GOT-SO-NEXT: Type: None (0x0) GOT-SO-NEXT: Section: Undefined (0x0) GOT-SO-NEXT: Name: _ITM_deregisterTMCloneTable@ (59) GOT-SO-NEXT: } GOT-SO-NEXT: Entry { GOT-SO-NEXT: Address: 0x1091C GOT-SO-NEXT: Access: -32692 GOT-SO-NEXT: Initial: 0x0 GOT-SO-NEXT: Value: 0x0 GOT-SO-NEXT: Type: Function (0x2) GOT-SO-NEXT: Section: Undefined (0x0) GOT-SO-NEXT: Name: __cxa_finalize@GLIBC_2.2 (113) GOT-SO-NEXT: } GOT-SO-NEXT: ] GOT-SO-NEXT: Number of TLS and multi-GOT entries: 0 GOT-SO-NEXT: } GOT-TLS: Primary GOT { GOT-TLS-NEXT: Canonical gp value: 0x18BF0 GOT-TLS-NEXT: Reserved entries [ GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C00 GOT-TLS-NEXT: Access: -32752 GOT-TLS-NEXT: Initial: 0x0 GOT-TLS-NEXT: Purpose: Lazy resolver GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C08 GOT-TLS-NEXT: Access: -32744 GOT-TLS-NEXT: Initial: 0x8000000000000000 GOT-TLS-NEXT: Purpose: Module pointer (GNU extension) GOT-TLS-NEXT: } GOT-TLS-NEXT: ] GOT-TLS-NEXT: Local entries [ GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C10 GOT-TLS-NEXT: Access: -32736 GOT-TLS-NEXT: Initial: 0x10000 GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C18 GOT-TLS-NEXT: Access: -32728 GOT-TLS-NEXT: Initial: 0x10C00 GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C20 GOT-TLS-NEXT: Access: -32720 GOT-TLS-NEXT: Initial: 0x10CB8 GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C28 GOT-TLS-NEXT: Access: -32712 GOT-TLS-NEXT: Initial: 0x10BF0 GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C30 GOT-TLS-NEXT: Access: -32704 GOT-TLS-NEXT: Initial: 0x0 GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C38 GOT-TLS-NEXT: Access: -32696 GOT-TLS-NEXT: Initial: 0x948 GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C40 GOT-TLS-NEXT: Access: -32688 GOT-TLS-NEXT: Initial: 0xA20 GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C48 GOT-TLS-NEXT: Access: -32680 GOT-TLS-NEXT: Initial: 0xAF0 GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C50 GOT-TLS-NEXT: Access: -32672 GOT-TLS-NEXT: Initial: 0x0 GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C58 GOT-TLS-NEXT: Access: -32664 GOT-TLS-NEXT: Initial: 0x0 GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C60 GOT-TLS-NEXT: Access: -32656 GOT-TLS-NEXT: Initial: 0x0 GOT-TLS-NEXT: } GOT-TLS-NEXT: ] GOT-TLS-NEXT: Global entries [ GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C68 GOT-TLS-NEXT: Access: -32648 GOT-TLS-NEXT: Initial: 0x0 GOT-TLS-NEXT: Value: 0x0 GOT-TLS-NEXT: Type: None (0x0) GOT-TLS-NEXT: Section: Undefined (0x0) GOT-TLS-NEXT: Name: _ITM_registerTMCloneTable@ (78) GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C70 GOT-TLS-NEXT: Access: -32640 GOT-TLS-NEXT: Initial: 0x0 GOT-TLS-NEXT: Value: 0x0 GOT-TLS-NEXT: Type: None (0x0) GOT-TLS-NEXT: Section: Undefined (0x0) GOT-TLS-NEXT: Name: _Jv_RegisterClasses@ (119) GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C78 GOT-TLS-NEXT: Access: -32632 GOT-TLS-NEXT: Initial: 0x0 GOT-TLS-NEXT: Value: 0x0 GOT-TLS-NEXT: Type: Function (0x2) GOT-TLS-NEXT: Section: Undefined (0x0) GOT-TLS-NEXT: Name: __gmon_start__@ (23) GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C80 GOT-TLS-NEXT: Access: -32624 GOT-TLS-NEXT: Initial: 0xB60 GOT-TLS-NEXT: Value: 0xB60 GOT-TLS-NEXT: Type: Function (0x2) GOT-TLS-NEXT: Section: Undefined (0x0) GOT-TLS-NEXT: Name: __tls_get_addr@GLIBC_2.3 (150) GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C88 GOT-TLS-NEXT: Access: -32616 GOT-TLS-NEXT: Initial: 0x0 GOT-TLS-NEXT: Value: 0x0 GOT-TLS-NEXT: Type: None (0x0) GOT-TLS-NEXT: Section: Undefined (0x0) GOT-TLS-NEXT: Name: _ITM_deregisterTMCloneTable@ (50) GOT-TLS-NEXT: } GOT-TLS-NEXT: Entry { GOT-TLS-NEXT: Address: 0x10C90 GOT-TLS-NEXT: Access: -32608 GOT-TLS-NEXT: Initial: 0x0 GOT-TLS-NEXT: Value: 0x0 GOT-TLS-NEXT: Type: Function (0x2) GOT-TLS-NEXT: Section: Undefined (0x0) GOT-TLS-NEXT: Name: __cxa_finalize@GLIBC_2.2 (104) GOT-TLS-NEXT: } GOT-TLS-NEXT: ] GOT-TLS-NEXT: Number of TLS and multi-GOT entries: 4 GOT-TLS-NEXT: } GOT-EMPTY: Primary GOT { GOT-EMPTY-NEXT: Canonical gp value: 0x409FF0 GOT-EMPTY-NEXT: Reserved entries [ GOT-EMPTY-NEXT: Entry { GOT-EMPTY-NEXT: Address: 0x402000 GOT-EMPTY-NEXT: Access: -32752 GOT-EMPTY-NEXT: Initial: 0x0 GOT-EMPTY-NEXT: Purpose: Lazy resolver GOT-EMPTY-NEXT: } GOT-EMPTY-NEXT: Entry { GOT-EMPTY-NEXT: Address: 0x402004 GOT-EMPTY-NEXT: Access: -32748 GOT-EMPTY-NEXT: Initial: 0x80000000 GOT-EMPTY-NEXT: Purpose: Module pointer (GNU extension) GOT-EMPTY-NEXT: } GOT-EMPTY-NEXT: ] GOT-EMPTY-NEXT: Local entries [ GOT-EMPTY-NEXT: ] GOT-EMPTY-NEXT: Global entries [ GOT-EMPTY-NEXT: ] GOT-EMPTY-NEXT: Number of TLS and multi-GOT entries: 2 GOT-EMPTY-NEXT: }