152854504SSimon Atanasyan# REQUIRES: mips 252854504SSimon Atanasyan# Check the primary GOT cannot be made to overflow 352854504SSimon Atanasyan 452854504SSimon Atanasyan# RUN: llvm-mc -filetype=obj -triple=mips64-unknown-linux \ 552854504SSimon Atanasyan# RUN: %p/Inputs/mips-64-got-load.s -o %t1.so.o 652854504SSimon Atanasyan# RUN: llvm-mc -filetype=obj -triple=mips64-unknown-linux %s -o %t2.so.o 752854504SSimon Atanasyan# RUN: ld.lld -shared -mips-got-size 32 %t1.so.o %t2.so.o -o %t-sgot.so 852854504SSimon Atanasyan# RUN: ld.lld -shared -mips-got-size 24 %t1.so.o %t2.so.o -o %t-mgot.so 9*afe7197fSSimon Atanasyan# RUN: llvm-readelf -s -A %t-sgot.so | FileCheck -check-prefixes=SYM,SGOT %s 10*afe7197fSSimon Atanasyan# RUN: llvm-readelf -s -A %t-mgot.so | FileCheck -check-prefixes=SYM,MGOT %s 11ff2172c9SSimon Atanasyan 12ff2172c9SSimon Atanasyan# SYM: Symbol table '.symtab' 13ff2172c9SSimon Atanasyan# SYM: {{.*}}: [[LOC1:[0-9a-f]+]] {{.*}} local1 14ff2172c9SSimon Atanasyan# SYM: {{.*}}: [[LOC2:[0-9a-f]+]] {{.*}} local2 1552854504SSimon Atanasyan 1674b791b4SSimon Atanasyan# SGOT: Primary GOT: 17ff2172c9SSimon Atanasyan# SGOT-NEXT: Canonical gp value: 1874b791b4SSimon Atanasyan# SGOT-EMPTY: 1974b791b4SSimon Atanasyan# SGOT-NEXT: Reserved entries: 2074b791b4SSimon Atanasyan# SGOT-NEXT: Address Access Initial Purpose 21ff2172c9SSimon Atanasyan# SGOT-NEXT: {{.*}} -32752(gp) 0000000000000000 Lazy resolver 22ff2172c9SSimon Atanasyan# SGOT-NEXT: {{.*}} -32744(gp) 8000000000000000 Module pointer (GNU extension) 2374b791b4SSimon Atanasyan# SGOT-EMPTY: 2474b791b4SSimon Atanasyan# SGOT-NEXT: Local entries: 2574b791b4SSimon Atanasyan# SGOT-NEXT: Address Access Initial 26ff2172c9SSimon Atanasyan# SGOT-NEXT: {{.*}} -32736(gp) [[LOC1]] 27ff2172c9SSimon Atanasyan# SGOT-NEXT: {{.*}} -32728(gp) [[LOC2]] 2852854504SSimon Atanasyan 2974b791b4SSimon Atanasyan# MGOT: Primary GOT: 30ff2172c9SSimon Atanasyan# MGOT-NEXT: Canonical gp value: 3174b791b4SSimon Atanasyan# MGOT-EMPTY: 3274b791b4SSimon Atanasyan# MGOT-NEXT: Reserved entries: 3374b791b4SSimon Atanasyan# MGOT-NEXT: Address Access Initial Purpose 34ff2172c9SSimon Atanasyan# MGOT-NEXT: {{.*}} -32752(gp) 0000000000000000 Lazy resolver 35ff2172c9SSimon Atanasyan# MGOT-NEXT: {{.*}} -32744(gp) 8000000000000000 Module pointer (GNU extension) 3674b791b4SSimon Atanasyan# MGOT-EMPTY: 3774b791b4SSimon Atanasyan# MGOT-NEXT: Local entries: 3874b791b4SSimon Atanasyan# MGOT-NEXT: Address Access Initial 39ff2172c9SSimon Atanasyan# MGOT-NEXT: {{.*}} -32736(gp) [[LOC1]] 4074b791b4SSimon Atanasyan# MGOT-EMPTY: 4174b791b4SSimon Atanasyan# MGOT-NEXT: Number of TLS and multi-GOT entries 1 4252854504SSimon Atanasyan 4352854504SSimon Atanasyan .text 4452854504SSimon Atanasyan .global foo2 4552854504SSimon Atanasyanfoo2: 4652854504SSimon Atanasyan ld $2, %got_disp(local2)($gp) 4752854504SSimon Atanasyan 4852854504SSimon Atanasyan .bss 4952854504SSimon Atanasyanlocal2: 5052854504SSimon Atanasyan .word 0 51