]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/ELF/mips-got-extsym.s
Vendor import of lld trunk r338150:
[FreeBSD/FreeBSD.git] / test / ELF / mips-got-extsym.s
1 # REQUIRES: mips
2 # Check creation of GOT entries for global symbols in case of executable
3 # file linking. Symbols defined in DSO should get entries in the global part
4 # of the GOT. Symbols defined in the executable itself should get local GOT
5 # entries and does not need a row in .dynsym table.
6
7 # RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux \
8 # RUN:         %S/Inputs/mips-dynamic.s -o %t.so.o
9 # RUN: ld.lld -shared %t.so.o -o %t.so
10 # RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %t.o
11 # RUN: ld.lld %t.o %t.so -o %t.exe
12 # RUN: llvm-readobj -dt -t -mips-plt-got %t.exe | FileCheck %s
13
14 # CHECK:      Symbols [
15 # CHECK:        Symbol {
16 # CHECK:          Name: _foo
17 # CHECK-NEXT:     Value: 0x0
18 # CHECK-NEXT:     Size: 0
19 # CHECK-NEXT:     Binding: Global
20
21 # CHECK:        Symbol {
22 # CHECK:          Name: bar
23 # CHECK-NEXT:     Value: 0x20008
24 # CHECK-NEXT:     Size: 0
25 # CHECK-NEXT:     Binding: Global
26
27 # CHECK:     DynamicSymbols [
28 # CHECK-NOT:      Name: bar
29
30 # CHECK:      Local entries [
31 # CHECK-NEXT:   Entry {
32 # CHECK-NEXT:     Address:
33 # CHECK-NEXT:     Access: -32744
34 # CHECK-NEXT:     Initial: 0x20008
35 #                          ^-- bar
36 # CHECK-NEXT:   }
37 # CHECK-NEXT: ]
38 # CHECK-NEXT: Global entries [
39 # CHECK-NEXT:   Entry {
40 # CHECK-NEXT:     Address:
41 # CHECK-NEXT:     Access: -32740
42 # CHECK-NEXT:     Initial: 0x0
43 # CHECK-NEXT:     Value: 0x0
44 # CHECK-NEXT:     Type: None
45 # CHECK-NEXT:     Section: Undefined
46 # CHECK-NEXT:     Name: _foo@
47 # CHECK-NEXT:   }
48 # CHECK-NEXT: ]
49
50   .text
51   .globl  __start
52 __start:
53   lw      $t0,%got(bar)($gp)
54   lw      $t0,%got(_foo)($gp)
55
56 .global bar
57 bar:
58   .word 0