1// REQUIRES: arm
2// RUN: llvm-mc -filetype=obj -triple=armv7a-linux-gnueabi %s -o %t.o
3// RUN: ld.lld %t.o -o %t
4// RUN: llvm-readobj -S -r --symbols %t | FileCheck %s
5// RUN: llvm-objdump --triple=armv7a-linux-gnueabi -d %t | FileCheck --check-prefix=DISASM %s
6
7// Test the R_ARM_GOTOFF32 relocation
8
9// CHECK:      Name: .got
10// CHECK-NEXT:    Type: SHT_PROGBITS (0x1)
11// CHECK-NEXT:    Flags [
12// CHECK-NEXT:      SHF_ALLOC
13// CHECK-NEXT:      SHF_WRITE
14// CHECK-NEXT:    ]
15// CHECK-NEXT:    Address: 0x30124
16// CHECK-NEXT:    Offset: 0x124
17// CHECK-NEXT:    Size: 0
18// CHECK-NEXT:    Link:
19// CHECK-NEXT:    Info:
20// CHECK-NEXT:    AddressAlignment:
21
22// CHECK:    Name: .bss
23// CHECK-NEXT:    Type: SHT_NOBITS
24// CHECK-NEXT:    Flags [
25// CHECK-NEXT:      SHF_ALLOC
26// CHECK-NEXT:      SHF_WRITE
27// CHECK-NEXT:    ]
28// CHECK-NEXT:    Address: 0x40124
29// CHECK-NEXT:    Offset:
30// CHECK-NEXT:    Size: 20
31// CHECK-NEXT:    Link:
32// CHECK-NEXT:    Info:
33// CHECK-NEXT:    AddressAlignment: 1
34
35// CHECK-NEXT:    EntrySize: 0
36
37// CHECK:       Symbol {
38// CHECK:       Name: bar
39// CHECK-NEXT:    Value: 0x40124
40// CHECK-NEXT:    Size: 10
41// CHECK-NEXT:    Binding: Global
42// CHECK-NEXT:    Type: Object
43// CHECK-NEXT:    Other: 0
44// CHECK-NEXT:    Section: .bss
45// CHECK-NEXT:  }
46// CHECK-NEXT:  Symbol {
47// CHECK-NEXT:    Name: obj
48// CHECK-NEXT:    Value: 0x4012E
49// CHECK-NEXT:    Size: 10
50// CHECK-NEXT:    Binding: Global
51// CHECK-NEXT:    Type: Object
52// CHECK-NEXT:    Other: 0
53// CHECK-NEXT:    Section: .bss
54
55// DISASM:      Disassembly of section .text:
56// DISASM-EMPTY:
57// DISASM-NEXT :_start:
58// DISASM-NEXT   11114:       1e ff 2f e1     bx      lr
59// Offset 0 from .got = bar
60// DISASM        11118:       00 10 00 00
61// Offset 10 from .got = obj
62// DISASM-NEXT   1111c:       0a 10 00 00
63// Offset 15 from .got = obj +5
64// DISASM-NEXT   11120:       0f 10 00 00
65 .syntax unified
66 .globl _start
67_start:
68 bx lr
69 .word bar(GOTOFF)
70 .word obj(GOTOFF)
71 .word obj(GOTOFF)+5
72 .type bar, %object
73 .comm bar, 10
74 .type obj, %object
75 .comm obj, 10
76