Peter Smith | 8646ced | 2016-06-07 09:31:52 | [diff] [blame] | 1 | // REQUIRES: arm |
| 2 | // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux %s -o %t.o |
| 3 | |
Tobias Hieta | 87383e4 | 2020-04-18 15:06:37 | [diff] [blame^] | 4 | /// Creates a R_ARM_ABS32 relocation against foo and bar, bar has hidden |
| 5 | /// visibility so we expect a R_ARM_RELATIVE |
Peter Smith | 8646ced | 2016-06-07 09:31:52 | [diff] [blame] | 6 | .syntax unified |
| 7 | .globl foo |
| 8 | foo: |
| 9 | .globl bar |
| 10 | .hidden bar |
| 11 | bar: |
| 12 | |
| 13 | .data |
| 14 | .word foo |
| 15 | .word bar |
| 16 | |
Tobias Hieta | 87383e4 | 2020-04-18 15:06:37 | [diff] [blame^] | 17 | /// In PIC mode, if R_ARM_TARGET1 represents R_ARM_ABS32 (the default), an |
| 18 | /// R_ARM_TARGET1 to a non-preemptable symbol also creates an R_ARM_RELATIVE in |
| 19 | /// a writable section. |
Fangrui Song | 249fde8 | 2019-06-20 14:00:08 | [diff] [blame] | 20 | .word bar(target1) |
| 21 | |
Peter Smith | 8646ced | 2016-06-07 09:31:52 | [diff] [blame] | 22 | // RUN: ld.lld -shared -o %t.so %t.o |
Fangrui Song | b159906 | 2019-05-01 05:49:01 | [diff] [blame] | 23 | // RUN: llvm-readobj --symbols --dyn-relocations %t.so | FileCheck %s |
Fangrui Song | 249fde8 | 2019-06-20 14:00:08 | [diff] [blame] | 24 | // RUN: llvm-readelf -x .data %t.so | FileCheck --check-prefix=HEX %s |
Peter Smith | 8646ced | 2016-06-07 09:31:52 | [diff] [blame] | 25 | |
| 26 | // CHECK: Dynamic Relocations { |
Tobias Hieta | 87383e4 | 2020-04-18 15:06:37 | [diff] [blame^] | 27 | // CHECK-NEXT: 0x30204 R_ARM_RELATIVE |
| 28 | // CHECK-NEXT: 0x30208 R_ARM_RELATIVE |
| 29 | // CHECK-NEXT: 0x30200 R_ARM_ABS32 foo 0x0 |
Peter Smith | 8646ced | 2016-06-07 09:31:52 | [diff] [blame] | 30 | // CHECK-NEXT: } |
| 31 | |
| 32 | // CHECK: Symbols [ |
| 33 | // CHECK: Symbol { |
| 34 | // CHECK: Name: bar |
Tobias Hieta | 87383e4 | 2020-04-18 15:06:37 | [diff] [blame^] | 35 | // CHECK-NEXT: Value: 0x101A8 |
Peter Smith | 8646ced | 2016-06-07 09:31:52 | [diff] [blame] | 36 | |
| 37 | // CHECK: Symbol { |
| 38 | // CHECK: Name: foo |
Tobias Hieta | 87383e4 | 2020-04-18 15:06:37 | [diff] [blame^] | 39 | // CHECK-NEXT: Value: 0x101A8 |
Fangrui Song | 249fde8 | 2019-06-20 14:00:08 | [diff] [blame] | 40 | |
Tobias Hieta | 87383e4 | 2020-04-18 15:06:37 | [diff] [blame^] | 41 | // HEX: 0x00030200 00000000 a8010100 a8010100 |