[lld] r222266 - [mach-o] for 32-bit arm, in -r mode support B (not BL) to undefined symbol
Nick Kledzik
kledzik at apple.com
Tue Nov 18 14:08:50 PST 2014
Author: kledzik
Date: Tue Nov 18 16:08:50 2014
New Revision: 222266
URL: http://llvm.org/viewvc/llvm-project?rev=222266&view=rev
Log:
[mach-o] for 32-bit arm, in -r mode support B (not BL) to undefined symbol
When fixing up BL instructions, the linker has to compare the thumbness of the
target to decide if the instruction needs to be converted to BLX. But with B
instruction there is no BX, so the linker asserts if the target is not the
same thumbness. This assert was firing in -r mode when the target was undefined
which it interpreted as being non-thumb.
Test case change is to add a B (in both thumb and arm code) to an undefined
symbol and round trip through -r mode.
Modified:
lld/trunk/lib/ReaderWriter/MachO/ArchHandler_arm.cpp
lld/trunk/test/mach-o/parse-arm-relocs.yaml
Modified: lld/trunk/lib/ReaderWriter/MachO/ArchHandler_arm.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/ArchHandler_arm.cpp?rev=222266&r1=222265&r2=222266&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/MachO/ArchHandler_arm.cpp (original)
+++ lld/trunk/lib/ReaderWriter/MachO/ArchHandler_arm.cpp Tue Nov 18 16:08:50 2014
@@ -1074,6 +1074,7 @@ void ArchHandler_arm::applyFixupRelocata
int32_t displacement;
uint16_t value16;
uint32_t value32;
+ bool targetIsUndef = isa<UndefinedAtom>(ref.target());
switch (ref.kindValue()) {
case modeThumbCode:
thumbMode = true;
@@ -1091,7 +1092,8 @@ void ArchHandler_arm::applyFixupRelocata
else
displacement = (targetAddress - (fixupAddress + 4)) + ref.addend();
value32 = setDisplacementInThumbBranch(*loc32, fixupAddress,
- displacement, targetIsThumb);
+ displacement,
+ targetIsUndef || targetIsThumb);
*loc32 = value32;
break;
case thumb_movw:
Modified: lld/trunk/test/mach-o/parse-arm-relocs.yaml
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/mach-o/parse-arm-relocs.yaml?rev=222266&r1=222265&r2=222266&view=diff
==============================================================================
--- lld/trunk/test/mach-o/parse-arm-relocs.yaml (original)
+++ lld/trunk/test/mach-o/parse-arm-relocs.yaml Tue Nov 18 16:08:50 2014
@@ -1,5 +1,5 @@
-# RUN: lld -flavor darwin -arch armv7 -r -print_atoms %s -o %t | FileCheck %s \
-# RUN: && lld -flavor darwin -arch armv7 -r -print_atoms %t -o %t2 | FileCheck %s
+# RUN: lld -flavor darwin -arch armv7 -r -print_atoms %s -o %t | FileCheck %s
+# RUN: lld -flavor darwin -arch armv7 -r -print_atoms %t -o %t2 | FileCheck %s
#
# Test parsing of armv7 relocations.
#
@@ -9,8 +9,6 @@
arch: armv7
file-type: MH_OBJECT
flags: [ MH_SUBSECTIONS_VIA_SYMBOLS ]
-has-UUID: false
-OS: unknown
sections:
- segment: __TEXT
section: __text
@@ -18,27 +16,28 @@ sections:
attributes: [ S_ATTR_PURE_INSTRUCTIONS, S_ATTR_SOME_INSTRUCTIONS ]
alignment: 2
address: 0x0000000000000000
- content: [ 0x00, 0xF0, 0x4A, 0xF8, 0x00, 0xF0, 0x4A, 0xF8,
- 0xFF, 0xF7, 0xFA, 0xFF, 0xFF, 0xF7, 0xFA, 0xFF,
- 0x40, 0xF2, 0x6E, 0x01, 0xC0, 0xF2, 0x00, 0x01,
- 0x40, 0xF2, 0x76, 0x02, 0xC0, 0xF2, 0x00, 0x02,
- 0x40, 0xF2, 0x29, 0x01, 0xC0, 0xF2, 0x00, 0x01,
- 0x79, 0x44, 0x40, 0xF2, 0x98, 0x03, 0xC0, 0xF2,
- 0x00, 0x03, 0x40, 0xF2, 0xA0, 0x04, 0xC0, 0xF2,
- 0x00, 0x04, 0x40, 0xF2, 0x53, 0x03, 0xC0, 0xF2,
- 0x00, 0x03, 0x40, 0xF2, 0x00, 0x05, 0xC0, 0xF2,
- 0x00, 0x05, 0x40, 0xF2, 0x08, 0x06, 0xC0, 0xF2,
- 0x00, 0x06, 0xC0, 0x46, 0x0F, 0x00, 0x00, 0xEB,
- 0x0F, 0x00, 0x00, 0xEB, 0xE7, 0xFF, 0xFF, 0xEB,
- 0xE7, 0xFF, 0xFF, 0xEB, 0x20, 0x10, 0x00, 0xE3,
- 0x00, 0x10, 0x40, 0xE3, 0x28, 0x20, 0x00, 0xE3,
- 0x00, 0x20, 0x40, 0xE3, 0x0F, 0x10, 0x81, 0xE0,
- 0x98, 0x30, 0x00, 0xE3, 0x00, 0x30, 0x40, 0xE3,
- 0xA0, 0x40, 0x00, 0xE3, 0x00, 0x40, 0x40, 0xE3,
- 0x00, 0x50, 0x00, 0xE3, 0x00, 0x50, 0x40, 0xE3,
+ content: [ 0x00, 0xF0, 0x4E, 0xF8, 0x00, 0xF0, 0x4E, 0xF8,
+ 0xFF, 0xF7, 0xFA, 0xFF, 0xFF, 0xF7, 0xFA, 0xFF,
+ 0xFF, 0xF7, 0xF6, 0xBF, 0x40, 0xF2, 0x72, 0x01,
+ 0xC0, 0xF2, 0x00, 0x01, 0x40, 0xF2, 0x7A, 0x02,
+ 0xC0, 0xF2, 0x00, 0x02, 0x40, 0xF2, 0x29, 0x01,
+ 0xC0, 0xF2, 0x00, 0x01, 0x79, 0x44, 0x40, 0xF2,
+ 0xA0, 0x03, 0xC0, 0xF2, 0x00, 0x03, 0x40, 0xF2,
+ 0xA8, 0x04, 0xC0, 0xF2, 0x00, 0x04, 0x40, 0xF2,
+ 0x57, 0x03, 0xC0, 0xF2, 0x00, 0x03, 0x40, 0xF2,
+ 0x00, 0x05, 0xC0, 0xF2, 0x00, 0x05, 0x40, 0xF2,
+ 0x08, 0x06, 0xC0, 0xF2, 0x00, 0x06, 0xC0, 0x46,
+ 0x10, 0x00, 0x00, 0xEB, 0x10, 0x00, 0x00, 0xEB,
+ 0xE6, 0xFF, 0xFF, 0xEB, 0xE6, 0xFF, 0xFF, 0xEB,
+ 0xE4, 0xFF, 0xFF, 0xEA, 0x20, 0x10, 0x00, 0xE3,
+ 0x00, 0x10, 0x40, 0xE3, 0x28, 0x20, 0x00, 0xE3,
+ 0x00, 0x20, 0x40, 0xE3, 0x0F, 0x10, 0x81, 0xE0,
+ 0xA0, 0x30, 0x00, 0xE3, 0x00, 0x30, 0x40, 0xE3,
+ 0xA8, 0x40, 0x00, 0xE3, 0x00, 0x40, 0x40, 0xE3,
+ 0x00, 0x50, 0x00, 0xE3, 0x00, 0x50, 0x40, 0xE3,
0x08, 0x60, 0x00, 0xE3, 0x00, 0x60, 0x40, 0xE3 ]
relocations:
- - offset: 0x00000094
+ - offset: 0x0000009C
type: ARM_RELOC_HALF
length: 1
pc-rel: false
@@ -50,7 +49,7 @@ sections:
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x00000090
+ - offset: 0x00000098
type: ARM_RELOC_HALF
length: 0
pc-rel: false
@@ -62,7 +61,7 @@ sections:
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x0000008C
+ - offset: 0x00000094
type: ARM_RELOC_HALF
length: 1
pc-rel: false
@@ -74,7 +73,7 @@ sections:
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x00000088
+ - offset: 0x00000090
type: ARM_RELOC_HALF
length: 0
pc-rel: false
@@ -86,43 +85,43 @@ sections:
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x00000084
+ - offset: 0x0000008C
scattered: true
type: ARM_RELOC_HALF
length: 1
pc-rel: false
- value: 0x00000098
- - offset: 0x000000A0
+ value: 0x000000A0
+ - offset: 0x000000A8
type: ARM_RELOC_PAIR
length: 1
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x00000080
+ - offset: 0x00000088
scattered: true
type: ARM_RELOC_HALF
length: 0
pc-rel: false
- value: 0x00000098
+ value: 0x000000A0
- offset: 0x00000000
type: ARM_RELOC_PAIR
length: 0
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x0000007C
+ - offset: 0x00000084
type: ARM_RELOC_HALF
length: 1
pc-rel: false
extern: false
symbol: 2
- - offset: 0x00000098
+ - offset: 0x000000A0
type: ARM_RELOC_PAIR
length: 1
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x00000078
+ - offset: 0x00000080
type: ARM_RELOC_HALF
length: 0
pc-rel: false
@@ -134,79 +133,85 @@ sections:
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x00000070
+ - offset: 0x00000078
scattered: true
type: ARM_RELOC_HALF_SECTDIFF
length: 1
pc-rel: false
- value: 0x00000098
+ value: 0x000000A0
- offset: 0x00000028
scattered: true
type: ARM_RELOC_PAIR
length: 1
pc-rel: false
- value: 0x00000078
- - offset: 0x0000006C
+ value: 0x00000080
+ - offset: 0x00000074
scattered: true
type: ARM_RELOC_HALF_SECTDIFF
length: 0
pc-rel: false
- value: 0x00000098
+ value: 0x000000A0
- offset: 0x00000000
scattered: true
type: ARM_RELOC_PAIR
length: 0
pc-rel: false
- value: 0x00000078
- - offset: 0x00000068
+ value: 0x00000080
+ - offset: 0x00000070
scattered: true
type: ARM_RELOC_HALF_SECTDIFF
length: 1
pc-rel: false
- value: 0x00000098
+ value: 0x000000A0
- offset: 0x00000020
scattered: true
type: ARM_RELOC_PAIR
length: 1
pc-rel: false
- value: 0x00000078
- - offset: 0x00000064
+ value: 0x00000080
+ - offset: 0x0000006C
scattered: true
type: ARM_RELOC_HALF_SECTDIFF
length: 0
pc-rel: false
- value: 0x00000098
+ value: 0x000000A0
- offset: 0x00000000
scattered: true
type: ARM_RELOC_PAIR
length: 0
pc-rel: false
- value: 0x00000078
- - offset: 0x00000060
+ value: 0x00000080
+ - offset: 0x00000068
type: ARM_RELOC_BR24
length: 2
pc-rel: true
extern: true
symbol: 4
- - offset: 0x0000005C
+ - offset: 0x00000064
type: ARM_RELOC_BR24
length: 2
pc-rel: true
extern: true
symbol: 4
- - offset: 0x00000058
+ - offset: 0x00000060
+ type: ARM_RELOC_BR24
+ length: 2
+ pc-rel: true
+ extern: true
+ symbol: 4
+ - offset: 0x0000005C
scattered: true
type: ARM_RELOC_BR24
length: 2
pc-rel: true
- value: 0x00000098
- - offset: 0x00000054
+ value: 0x000000A0
+ - offset: 0x00000058
type: ARM_RELOC_BR24
length: 2
pc-rel: true
extern: false
symbol: 2
- - offset: 0x0000004E
+ - offset: 0x00000052
type: ARM_RELOC_HALF
length: 3
pc-rel: false
@@ -218,7 +223,7 @@ sections:
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x0000004A
+ - offset: 0x0000004E
type: ARM_RELOC_HALF
length: 2
pc-rel: false
@@ -230,7 +235,7 @@ sections:
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x00000046
+ - offset: 0x0000004A
type: ARM_RELOC_HALF
length: 3
pc-rel: false
@@ -242,7 +247,7 @@ sections:
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x00000042
+ - offset: 0x00000046
type: ARM_RELOC_HALF
length: 2
pc-rel: false
@@ -254,19 +259,19 @@ sections:
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x0000003E
+ - offset: 0x00000042
type: ARM_RELOC_HALF
length: 3
pc-rel: false
extern: false
symbol: 1
- - offset: 0x00000053
+ - offset: 0x00000057
type: ARM_RELOC_PAIR
length: 3
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x0000003A
+ - offset: 0x0000003E
type: ARM_RELOC_HALF
length: 2
pc-rel: false
@@ -278,43 +283,43 @@ sections:
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x00000036
+ - offset: 0x0000003A
scattered: true
type: ARM_RELOC_HALF
length: 3
pc-rel: false
- value: 0x00000098
- - offset: 0x000000A0
+ value: 0x000000A0
+ - offset: 0x000000A8
type: ARM_RELOC_PAIR
length: 3
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x00000032
+ - offset: 0x00000036
scattered: true
type: ARM_RELOC_HALF
length: 2
pc-rel: false
- value: 0x00000098
+ value: 0x000000A0
- offset: 0x00000000
type: ARM_RELOC_PAIR
length: 2
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x0000002E
+ - offset: 0x00000032
type: ARM_RELOC_HALF
length: 3
pc-rel: false
extern: false
symbol: 2
- - offset: 0x00000098
+ - offset: 0x000000A0
type: ARM_RELOC_PAIR
length: 3
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x0000002A
+ - offset: 0x0000002E
type: ARM_RELOC_HALF
length: 2
pc-rel: false
@@ -326,78 +331,84 @@ sections:
pc-rel: false
extern: false
symbol: 16777215
- - offset: 0x00000024
+ - offset: 0x00000028
scattered: true
type: ARM_RELOC_HALF_SECTDIFF
length: 3
pc-rel: false
- value: 0x00000052
+ value: 0x00000056
- offset: 0x00000028
scattered: true
type: ARM_RELOC_PAIR
length: 3
pc-rel: false
- value: 0x0000002A
- - offset: 0x00000020
+ value: 0x0000002E
+ - offset: 0x00000024
scattered: true
type: ARM_RELOC_HALF_SECTDIFF
length: 2
pc-rel: false
- value: 0x00000052
+ value: 0x00000056
- offset: 0x00000000
scattered: true
type: ARM_RELOC_PAIR
length: 2
pc-rel: false
- value: 0x0000002A
- - offset: 0x0000001C
+ value: 0x0000002E
+ - offset: 0x00000020
scattered: true
type: ARM_RELOC_HALF_SECTDIFF
length: 3
pc-rel: false
- value: 0x00000098
- - offset: 0x00000076
+ value: 0x000000A0
+ - offset: 0x0000007A
scattered: true
type: ARM_RELOC_PAIR
length: 3
pc-rel: false
- value: 0x0000002A
- - offset: 0x00000018
+ value: 0x0000002E
+ - offset: 0x0000001C
scattered: true
type: ARM_RELOC_HALF_SECTDIFF
length: 2
pc-rel: false
- value: 0x00000098
+ value: 0x000000A0
- offset: 0x00000000
scattered: true
type: ARM_RELOC_PAIR
length: 2
pc-rel: false
- value: 0x0000002A
- - offset: 0x00000014
+ value: 0x0000002E
+ - offset: 0x00000018
scattered: true
type: ARM_RELOC_HALF_SECTDIFF
length: 3
pc-rel: false
- value: 0x00000098
- - offset: 0x0000006E
+ value: 0x000000A0
+ - offset: 0x00000072
scattered: true
type: ARM_RELOC_PAIR
length: 3
pc-rel: false
- value: 0x0000002A
- - offset: 0x00000010
+ value: 0x0000002E
+ - offset: 0x00000014
scattered: true
type: ARM_RELOC_HALF_SECTDIFF
length: 2
pc-rel: false
- value: 0x00000098
+ value: 0x000000A0
- offset: 0x00000000
scattered: true
type: ARM_RELOC_PAIR
length: 2
pc-rel: false
- value: 0x0000002A
+ value: 0x0000002E
+ - offset: 0x00000010
+ type: ARM_THUMB_RELOC_BR22
+ length: 2
+ pc-rel: true
+ extern: true
+ symbol: 4
- offset: 0x0000000C
type: ARM_THUMB_RELOC_BR22
length: 2
@@ -415,7 +426,7 @@ sections:
type: ARM_THUMB_RELOC_BR22
length: 2
pc-rel: true
- value: 0x00000098
+ value: 0x000000A0
- offset: 0x00000000
type: ARM_THUMB_RELOC_BR22
length: 2
@@ -426,12 +437,12 @@ sections:
section: __data
type: S_REGULAR
attributes: [ ]
- address: 0x0000000000000098
+ address: 0x00000000000000A0
content: [ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x04, 0x00, 0x00, 0x00, 0xA8, 0xFF, 0xFF, 0xFF,
- 0xA8, 0xFF, 0xFF, 0xFF, 0x4D, 0xFF, 0xFF, 0xFF,
- 0x4D, 0xFF, 0xFF, 0xFF ]
+ 0x04, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0xFF, 0xFF,
+ 0xA4, 0xFF, 0xFF, 0xFF, 0x45, 0xFF, 0xFF, 0xFF,
+ 0x45, 0xFF, 0xFF, 0xFF ]
relocations:
- offset: 0x00000020
scattered: true
@@ -444,7 +455,7 @@ sections:
type: ARM_RELOC_PAIR
length: 2
pc-rel: false
- value: 0x000000B8
+ value: 0x000000C0
- offset: 0x0000001C
scattered: true
type: ARM_RELOC_SECTDIFF
@@ -456,31 +467,31 @@ sections:
type: ARM_RELOC_PAIR
length: 2
pc-rel: false
- value: 0x000000B4
+ value: 0x000000BC
- offset: 0x00000018
scattered: true
type: ARM_RELOC_SECTDIFF
length: 2
pc-rel: false
- value: 0x00000054
+ value: 0x00000058
- offset: 0x00000000
scattered: true
type: ARM_RELOC_PAIR
length: 2
pc-rel: false
- value: 0x000000B0
+ value: 0x000000B8
- offset: 0x00000014
scattered: true
type: ARM_RELOC_SECTDIFF
length: 2
pc-rel: false
- value: 0x00000054
+ value: 0x00000058
- offset: 0x00000000
scattered: true
type: ARM_RELOC_PAIR
length: 2
pc-rel: false
- value: 0x000000AC
+ value: 0x000000B4
- offset: 0x00000010
type: ARM_RELOC_VANILLA
length: 2
@@ -514,22 +525,21 @@ local-symbols:
- name: _x
type: N_SECT
sect: 2
- value: 0x0000000000000098
+ value: 0x00000000000000A0
- name: _t1
type: N_SECT
sect: 1
desc: [ N_ARM_THUMB_DEF ]
- value: 0x0000000000000052
+ value: 0x0000000000000056
- name: _foo_arm
type: N_SECT
sect: 1
- value: 0x0000000000000054
-undefined-symbols:
+ value: 0x0000000000000058
+undefined-symbols:
- name: _undef
type: N_UNDF
scope: [ N_EXT ]
value: 0x0000000000000000
-
...
# CHECK: defined-atoms:
@@ -588,68 +598,72 @@ undefined-symbols:
# CHECK: offset: 12
# CHECK: target: _undef
# CHECK: addend: 4
-# CHECK: - kind: thumb_movw_funcRel
+# CHECK: - kind: thumb_b22
# CHECK: offset: 16
+# CHECK: target: _undef
+# CHECK-NOT: addend:
+# CHECK: - kind: thumb_movw_funcRel
+# CHECK: offset: 20
# CHECK: target: _x
-# CHECK: addend: -42
+# CHECK: addend: -46
# CHECK: - kind: thumb_movt_funcRel
-# CHECK: offset: 20
+# CHECK: offset: 24
# CHECK: target: _x
-# CHECK: addend: -42
+# CHECK: addend: -46
# CHECK: - kind: thumb_movw_funcRel
-# CHECK: offset: 24
+# CHECK: offset: 28
# CHECK: target: _x
-# CHECK: addend: -34
+# CHECK: addend: -38
# CHECK: - kind: thumb_movt_funcRel
-# CHECK: offset: 28
+# CHECK: offset: 32
# CHECK: target: _x
-# CHECK: addend: -34
+# CHECK: addend: -38
# CHECK: - kind: thumb_movw_funcRel
-# CHECK: offset: 32
+# CHECK: offset: 36
# CHECK: target: _t1
-# CHECK: addend: -42
+# CHECK: addend: -46
# CHECK: - kind: thumb_movt_funcRel
-# CHECK: offset: 36
+# CHECK: offset: 40
# CHECK: target: _t1
-# CHECK: addend: -42
+# CHECK: addend: -46
# CHECK: - kind: thumb_movw
-# CHECK: offset: 42
+# CHECK: offset: 46
# CHECK: target: _x
# CHECK-NOT: addend:
# CHECK: - kind: thumb_movt
-# CHECK: offset: 46
+# CHECK: offset: 50
# CHECK: target: _x
# CHECK-NOT: addend:
# CHECK: - kind: thumb_movw
-# CHECK: offset: 50
+# CHECK: offset: 54
# CHECK: target: _x
# CHECK: addend: 8
# CHECK: - kind: thumb_movt
-# CHECK: offset: 54
+# CHECK: offset: 58
# CHECK: target: _x
# CHECK: addend: 8
# CHECK: - kind: thumb_movw
-# CHECK: offset: 58
+# CHECK: offset: 62
# CHECK: target: _t1
# CHECK-NOT: addend:
# CHECK: - kind: thumb_movt
-# CHECK: offset: 62
+# CHECK: offset: 66
# CHECK: target: _t1
# CHECK-NOT: addend:
# CHECK: - kind: thumb_movw
-# CHECK: offset: 66
+# CHECK: offset: 70
# CHECK: target: _undef
# CHECK-NOT: addend:
# CHECK: - kind: thumb_movt
-# CHECK: offset: 70
+# CHECK: offset: 74
# CHECK: target: _undef
# CHECK-NOT: addend:
# CHECK: - kind: thumb_movw
-# CHECK: offset: 74
+# CHECK: offset: 78
# CHECK: target: _undef
# CHECK: addend: 8
# CHECK: - kind: thumb_movt
-# CHECK: offset: 78
+# CHECK: offset: 82
# CHECK: target: _undef
# CHECK: addend: 8
# CHECK: - name: _t1
@@ -676,52 +690,56 @@ undefined-symbols:
# CHECK: offset: 12
# CHECK: target: _undef
# CHECK: addend: 4
-# CHECK: - kind: arm_movw_funcRel
+# CHECK: - kind: arm_b24
# CHECK: offset: 16
+# CHECK: target: _undef
+# CHECK-NOT: addend:
+# CHECK: - kind: arm_movw_funcRel
+# CHECK: offset: 20
# CHECK: target: _x
-# CHECK: addend: -36
+# CHECK: addend: -40
# CHECK: - kind: arm_movt_funcRel
-# CHECK: offset: 20
+# CHECK: offset: 24
# CHECK: target: _x
-# CHECK: addend: -36
+# CHECK: addend: -40
# CHECK: - kind: arm_movw_funcRel
-# CHECK: offset: 24
+# CHECK: offset: 28
# CHECK: target: _x
-# CHECK: addend: -28
+# CHECK: addend: -32
# CHECK: - kind: arm_movt_funcRel
-# CHECK: offset: 28
+# CHECK: offset: 32
# CHECK: target: _x
-# CHECK: addend: -28
+# CHECK: addend: -32
# CHECK: - kind: arm_movw
-# CHECK: offset: 36
+# CHECK: offset: 40
# CHECK: target: _x
# CHECK-NOT: addend:
# CHECK: - kind: arm_movt
-# CHECK: offset: 40
+# CHECK: offset: 44
# CHECK: target: _x
# CHECK-NOT: addend:
# CHECK: - kind: arm_movw
-# CHECK: offset: 44
+# CHECK: offset: 48
# CHECK: target: _x
# CHECK: addend: 8
# CHECK: - kind: arm_movt
-# CHECK: offset: 48
+# CHECK: offset: 52
# CHECK: target: _x
# CHECK: addend: 8
# CHECK: - kind: arm_movw
-# CHECK: offset: 52
+# CHECK: offset: 56
# CHECK: target: _undef
# CHECK-NOT: addend:
# CHECK: - kind: arm_movt
-# CHECK: offset: 56
+# CHECK: offset: 60
# CHECK: target: _undef
# CHECK-NOT: addend:
# CHECK: - kind: arm_movw
-# CHECK: offset: 60
+# CHECK: offset: 64
# CHECK: target: _undef
# CHECK: addend: 8
# CHECK: - kind: arm_movt
-# CHECK: offset: 64
+# CHECK: offset: 68
# CHECK: target: _undef
# CHECK: addend: 8
# CHECK: undefined-atoms:
@@ -738,6 +756,7 @@ undefined-symbols:
# bl _x+4
# bl _undef
# bl _undef+4
+# b _undef
# movw r1, :lower16:(_x-L1)
# movt r1, :upper16:(_x-L1)
# movw r2, :lower16:(_x+8-L1)
@@ -769,6 +788,7 @@ undefined-symbols:
# bl _x+4
# bl _undef
# bl _undef+4
+# b _undef
# movw r1, :lower16:(_x-L2)
# movt r1, :upper16:(_x-L2)
# movw r2, :lower16:(_x+8-L2)
More information about the llvm-commits
mailing list