blob: cfbf1c4f37a3e861a916d16819c4eba69c5c7657 [file] [log] [blame]
# RUN: llvm-readobj -A %p/Inputs/dynamic-table-exe.mips | \
# RUN: FileCheck %s -check-prefix GOT-EXE
# RUN: llvm-readobj -A %p/Inputs/dynamic-table-so.mips | \
# RUN: FileCheck %s -check-prefix GOT-SO
# RUN: llvm-readobj -A %p/Inputs/got-tls.so.elf-mips64el | \
# RUN: FileCheck %s -check-prefix GOT-TLS
# RUN: llvm-readobj -A %p/Inputs/got-empty.exe.mipsel | \
# RUN: FileCheck %s -check-prefix GOT-EMPTY
# RUN: llvm-readobj -A %p/Inputs/got-static.exe.mips | \
# RUN: FileCheck %s -check-prefix GOT-STATIC
# RUN: llvm-readelf -A %p/Inputs/dynamic-table-exe.mips | \
# RUN: FileCheck %s --strict-whitespace -check-prefix GNU-GOT-EXE
# RUN: llvm-readelf -A %p/Inputs/dynamic-table-so.mips | \
# RUN: FileCheck %s --strict-whitespace -check-prefix GNU-GOT-SO
# RUN: llvm-readelf -A %p/Inputs/got-tls.so.elf-mips64el | \
# RUN: FileCheck %s --strict-whitespace -check-prefix GNU-GOT-TLS
# RUN: llvm-readelf -A %p/Inputs/got-empty.exe.mipsel | \
# RUN: FileCheck %s --strict-whitespace -check-prefix GNU-GOT-EMPTY
# RUN: llvm-readelf -A %p/Inputs/got-static.exe.mips | \
# RUN: FileCheck %s --strict-whitespace -check-prefix GNU-GOT-STATIC
# 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: }
# GOT-STATIC: Static GOT {
# GOT-STATIC-NEXT: Canonical gp value: 0x418100
# GOT-STATIC-NEXT: Reserved entries [
# GOT-STATIC-NEXT: Entry {
# GOT-STATIC-NEXT: Address: 0x410110
# GOT-STATIC-NEXT: Access: -32752
# GOT-STATIC-NEXT: Initial: 0x0
# GOT-STATIC-NEXT: Purpose: Lazy resolver
# GOT-STATIC-NEXT: }
# GOT-STATIC-NEXT: Entry {
# GOT-STATIC-NEXT: Address: 0x410114
# GOT-STATIC-NEXT: Access: -32748
# GOT-STATIC-NEXT: Initial: 0x80000000
# GOT-STATIC-NEXT: Purpose: Module pointer (GNU extension)
# GOT-STATIC-NEXT: }
# GOT-STATIC-NEXT: ]
# GOT-STATIC-NEXT: Local entries [
# GOT-STATIC-NEXT: Entry {
# GOT-STATIC-NEXT: Address: 0x410118
# GOT-STATIC-NEXT: Access: -32744
# GOT-STATIC-NEXT: Initial: 0x400000
# GOT-STATIC-NEXT: }
# GOT-STATIC-NEXT: Entry {
# GOT-STATIC-NEXT: Address: 0x41011C
# GOT-STATIC-NEXT: Access: -32740
# GOT-STATIC-NEXT: Initial: 0x400100
# GOT-STATIC-NEXT: }
# GOT-STATIC-NEXT: Entry {
# GOT-STATIC-NEXT: Address: 0x410120
# GOT-STATIC-NEXT: Access: -32736
# GOT-STATIC-NEXT: Initial: 0x400104
# GOT-STATIC-NEXT: }
# GOT-STATIC-NEXT: ]
# GOT-STATIC-NEXT: }
# GNU-GOT-EXE: Primary GOT:
# GNU-GOT-EXE-NEXT: Canonical gp value: 00418880
# GNU-GOT-EXE: Reserved entries:
# GNU-GOT-EXE-NEXT: Address Access Initial Purpose
# GNU-GOT-EXE-NEXT: 00410890 -32752(gp) 00000000 Lazy resolver
# GNU-GOT-EXE-NEXT: 00410894 -32748(gp) 80000000 Module pointer (GNU extension)
# GNU-GOT-EXE: Local entries:
# GNU-GOT-EXE-NEXT: Address Access Initial
# GNU-GOT-EXE-NEXT: 00410898 -32744(gp) 00400418
# GNU-GOT-EXE-NEXT: 0041089c -32740(gp) 00410840
# GNU-GOT-EXE-NEXT: 004108a0 -32736(gp) 00000000
# GNU-GOT-EXE: Global entries:
# GNU-GOT-EXE-NEXT: Address Access Initial Sym.Val. Type Ndx Name
# GNU-GOT-EXE-NEXT: 004108a4 -32732(gp) 00000000 00000000 FUNC UND __gmon_start__
# GNU-GOT-EXE: PLT GOT:
# GNU-GOT-EXE: Reserved entries:
# GNU-GOT-EXE-NEXT: Address Initial Purpose
# GNU-GOT-EXE-NEXT: 00410854 00000000 PLT lazy resolver
# GNU-GOT-EXE-NEXT: 00410858 00000000 Module pointer
# GNU-GOT-EXE: Entries:
# GNU-GOT-EXE-NEXT: Address Initial Sym.Val. Type Ndx Name
# GNU-GOT-EXE-NEXT: 0041085c 00400800 00000000 FUNC UND puts
# GNU-GOT-EXE-NEXT: 00410860 00400800 00000000 FUNC UND __libc_start_main
# GNU-GOT-SO: Primary GOT:
# GNU-GOT-SO-NEXT: Canonical gp value: 000188d0
# GNU-GOT-SO: Reserved entries:
# GNU-GOT-SO-NEXT: Address Access Initial Purpose
# GNU-GOT-SO-NEXT: 000108e0 -32752(gp) 00000000 Lazy resolver
# GNU-GOT-SO-NEXT: 000108e4 -32748(gp) 80000000 Module pointer (GNU extension)
# GNU-GOT-SO: Local entries:
# GNU-GOT-SO-NEXT: Address Access Initial
# GNU-GOT-SO-NEXT: 000108e8 -32744(gp) 000108e0
# GNU-GOT-SO-NEXT: 000108ec -32740(gp) 00010000
# GNU-GOT-SO-NEXT: 000108f0 -32736(gp) 00010920
# GNU-GOT-SO-NEXT: 000108f4 -32732(gp) 000108cc
# GNU-GOT-SO-NEXT: 000108f8 -32728(gp) 00000000
# GNU-GOT-SO-NEXT: 000108fc -32724(gp) 00000000
# GNU-GOT-SO-NEXT: 00010900 -32720(gp) 00000000
# GNU-GOT-SO-NEXT: 00010904 -32716(gp) 00000000
# GNU-GOT-SO: Global entries:
# GNU-GOT-SO-NEXT: Address Access Initial Sym.Val. Type Ndx Name
# GNU-GOT-SO-NEXT: 00010908 -32712(gp) 00000000 00000000 NOTYPE UND _ITM_registerTMCloneTable
# GNU-GOT-SO-NEXT: 0001090c -32708(gp) 00000000 00000000 NOTYPE UND _Jv_RegisterClasses
# GNU-GOT-SO-NEXT: 00010910 -32704(gp) 00000000 00000000 FUNC UND __gmon_start__
# GNU-GOT-SO-NEXT: 00010914 -32700(gp) 00000840 00000840 FUNC UND puts
# GNU-GOT-SO-NEXT: 00010918 -32696(gp) 00000000 00000000 NOTYPE UND _ITM_deregisterTMCloneTable
# GNU-GOT-SO-NEXT: 0001091c -32692(gp) 00000000 00000000 FUNC UND __cxa_finalize
# GNU-GOT-TLS: Primary GOT:
# GNU-GOT-TLS-NEXT: Canonical gp value: 0000000000018bf0
# GNU-GOT-TLS: Reserved entries:
# GNU-GOT-TLS-NEXT: Address Access Initial Purpose
# GNU-GOT-TLS-NEXT: 0000000000010c00 -32752(gp) 0000000000000000 Lazy resolver
# GNU-GOT-TLS-NEXT: 0000000000010c08 -32744(gp) 8000000000000000 Module pointer (GNU extension)
# GNU-GOT-TLS: Local entries:
# GNU-GOT-TLS-NEXT: Address Access Initial
# GNU-GOT-TLS-NEXT: 0000000000010c10 -32736(gp) 0000000000010000
# GNU-GOT-TLS-NEXT: 0000000000010c18 -32728(gp) 0000000000010c00
# GNU-GOT-TLS-NEXT: 0000000000010c20 -32720(gp) 0000000000010cb8
# GNU-GOT-TLS-NEXT: 0000000000010c28 -32712(gp) 0000000000010bf0
# GNU-GOT-TLS-NEXT: 0000000000010c30 -32704(gp) 0000000000000000
# GNU-GOT-TLS-NEXT: 0000000000010c38 -32696(gp) 0000000000000948
# GNU-GOT-TLS-NEXT: 0000000000010c40 -32688(gp) 0000000000000a20
# GNU-GOT-TLS-NEXT: 0000000000010c48 -32680(gp) 0000000000000af0
# GNU-GOT-TLS-NEXT: 0000000000010c50 -32672(gp) 0000000000000000
# GNU-GOT-TLS-NEXT: 0000000000010c58 -32664(gp) 0000000000000000
# GNU-GOT-TLS-NEXT: 0000000000010c60 -32656(gp) 0000000000000000
# GNU-GOT-TLS: Global entries:
# GNU-GOT-TLS-NEXT: Address Access Initial Sym.Val. Type Ndx Name
# GNU-GOT-TLS-NEXT: 0000000000010c68 -32648(gp) 0000000000000000 0000000000000000 NOTYPE UND _ITM_registerTMCloneTable
# GNU-GOT-TLS-NEXT: 0000000000010c70 -32640(gp) 0000000000000000 0000000000000000 NOTYPE UND _Jv_RegisterClasses
# GNU-GOT-TLS-NEXT: 0000000000010c78 -32632(gp) 0000000000000000 0000000000000000 FUNC UND __gmon_start__
# GNU-GOT-TLS-NEXT: 0000000000010c80 -32624(gp) 0000000000000b60 0000000000000b60 FUNC UND __tls_get_addr
# GNU-GOT-TLS-NEXT: 0000000000010c88 -32616(gp) 0000000000000000 0000000000000000 NOTYPE UND _ITM_deregisterTMCloneTable
# GNU-GOT-TLS-NEXT: 0000000000010c90 -32608(gp) 0000000000000000 0000000000000000 FUNC UND __cxa_finalize
# GNU-GOTY : Primary GOT:
# GNU-GOT-EMPTY: Canonical gp value: 00409ff0
# GNU-GOTY : Reserved entries:
# GNU-GOT-EMPTY: Address Access Initial Purpose
# GNU-GOT-EMPTY: 00402000 -32752(gp) 00000000 Lazy resolver
# GNU-GOT-EMPTY: 00402004 -32748(gp) 80000000 Module pointer (GNU extension)
# GNU-GOT-STATIC: Static GOT:
# GNU-GOT-STATIC-NEXT: Canonical gp value: 00418100
# GNU-GOT-STATIC: Reserved entries:
# GNU-GOT-STATIC-NEXT: Address Access Initial Purpose
# GNU-GOT-STATIC-NEXT: 00410110 -32752(gp) 00000000 Lazy resolver
# GNU-GOT-STATIC-NEXT: 00410114 -32748(gp) 80000000 Module pointer (GNU extension)
# GNU-GOT-STATIC: Local entries:
# GNU-GOT-STATIC-NEXT: Address Access Initial
# GNU-GOT-STATIC-NEXT: 00410118 -32744(gp) 00400000
# GNU-GOT-STATIC-NEXT: 0041011c -32740(gp) 00400100
# GNU-GOT-STATIC-NEXT: 00410120 -32736(gp) 00400104
## Check we report errors when dynamic tags, needed for dumping GOT, are missing.
# RUN: yaml2obj --docnum=1 -DTAG1=DT_MIPS_LOCAL_GOTNO -DTAG2=DT_MIPS_GOTSYM %s -o %t.err1.o
# RUN: not llvm-readobj -A %t.err1.o 2>&1 | FileCheck %s -DFILE=%t.err1.o -check-prefix ERR1
# ERR1: error: '[[FILE]]': cannot find PLTGOT dynamic tag
# RUN: yaml2obj --docnum=1 -DTAG1=DT_PLTGOT -DTAG2=DT_MIPS_GOTSYM %s -o %t.err2.o
# RUN: not llvm-readobj -A %t.err2.o 2>&1 | FileCheck %s -DFILE=%t.err2.o -check-prefix ERR2
# ERR2: error: '[[FILE]]': cannot find MIPS_LOCAL_GOTNO dynamic tag
# RUN: yaml2obj --docnum=1 -DTAG1=DT_PLTGOT -DTAG2=DT_MIPS_LOCAL_GOTNO %s -o %t.err3.o
# RUN: not llvm-readobj -A %t.err3.o 2>&1 | FileCheck %s -DFILE=%t.err3.o -check-prefix ERR3
# ERR3: error: '[[FILE]]': cannot find MIPS_GOTSYM dynamic tag
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_MIPS
Sections:
- Name: .dynamic
Type: SHT_DYNAMIC
Entries:
- Tag: [[TAG1]]
Value: 0
- Tag: [[TAG2]]
Value: 0
- Tag: DT_NULL
Value: 0
DynamicSymbols: []
# RUN: yaml2obj --docnum=2 -DVAL1=0xffff %s -o %t.err4.o
# RUN: not llvm-readobj -A %t.err4.o 2>&1 | FileCheck %s -DFILE=%t.err4.o -check-prefix=ERR4
# ERR4: error: '[[FILE]]': DT_MIPS_GOTSYM value (65535) exceeds the number of dynamic symbols (1)
# RUN: yaml2obj --docnum=2 -DVAL2=0xffff %s -o %t.err5.o
# RUN: not llvm-readobj -A %t.err5.o 2>&1 | FileCheck %s -DFILE=%t.err5.o -check-prefix=ERR5
# ERR5: error: '[[FILE]]': there is no non-empty GOT section at 0xffff
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_MIPS
Sections:
- Name: .dynamic
Type: SHT_DYNAMIC
Entries:
- Tag: DT_MIPS_LOCAL_GOTNO
Value: 0
- Tag: DT_MIPS_GOTSYM
Value: [[VAL1=0]]
- Tag: DT_PLTGOT
Value: [[VAL2=0]]
DynamicSymbols: []