1// REQUIRES: arm 2// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t.o 3// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %p/Inputs/relocation-copy-arm.s -o %t2.o 4// RUN: ld.lld -shared %t2.o -soname fixed-length-string.so -o %t2.so 5// RUN: ld.lld --hash-style=sysv %t.o %t2.so -o %t3 6// RUN: llvm-readobj -S -r --expand-relocs --symbols %t3 | FileCheck %s 7// RUN: llvm-objdump -d --triple=armv7a-none-linux-gnueabi --no-show-raw-insn %t3 | FileCheck --check-prefix=CODE %s 8// RUN: llvm-objdump -s --triple=armv7a-none-linux-gnueabi --section=.rodata %t3 | FileCheck --check-prefix=RODATA %s 9 10// Copy relocations R_ARM_COPY are required for y and z 11 .syntax unified 12 .text 13 .globl _start 14_start: 15 movw r2,:lower16: y 16 movt r2,:upper16: y 17 ldr r3,[pc,#4] 18 ldr r3,[r3,#0] 19 .rodata 20 .word z 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: 0x40220 29// CHECK-NEXT: Offset: 30// CHECK-NEXT: Size: 8 31// CHECK-NEXT: Link: 32// CHECK-NEXT: Info: 33// CHECK-NEXT: AddressAlignment: 16 34 35// CHECK: Relocations [ 36// CHECK-NEXT: Section {{.*}} .rel.dyn { 37// CHECK-NEXT: Relocation { 38// CHECK-NEXT: Offset: 0x40220 39// CHECK-NEXT: Type: R_ARM_COPY 40// CHECK-NEXT: Symbol: y 41// CHECK-NEXT: Addend: 0x0 42// CHECK-NEXT: } 43// CHECK-NEXT: Relocation { 44// CHECK-NEXT: Offset: 0x40224 45// CHECK-NEXT: Type: R_ARM_COPY 46// CHECK-NEXT: Symbol: z 47// CHECK-NEXT: Addend: 0x0 48// CHECK-NEXT: } 49// CHECK-NEXT: } 50 51// CHECK: Symbols [ 52// CHECK: Name: y 53// CHECK-NEXT: Value: 0x40220 54// CHECK-NEXT: Size: 4 55// CHECK-NEXT: Binding: Global 56// CHECK-NEXT: Type: Object 57// CHECK-NEXT: Other: 58// CHECK-NEXT: Section: .bss 59// CHECK: Name: z 60// CHECK-NEXT: Value: 0x40224 61// CHECK-NEXT: Size: 4 62// CHECK-NEXT: Binding: Global 63// CHECK-NEXT: Type: Object 64// CHECK-NEXT: Other: 0 65// CHECK-NEXT: Section: .bss 66 67// CODE: Disassembly of section .text: 68// CODE-EMPTY: 69// CODE-NEXT: <_start>: 70/// S + A = 0x40220 + 0 = 65536 * 1 + 544 71// CODE-NEXT: 201b4: movw r2, #544 72// CODE-NEXT: 201b8: movt r2, #4 73// CODE-NEXT: 201bc: ldr r3, [pc, #4] 74// CODE-NEXT: 201c0: ldr r3, [r3] 75 76 77// RODATA: Contents of section .rodata: 78/// S(z) = 0x40004 79// RODATA-NEXT: 101b0 24020400 80