Skip to content

Commit 024bf27

Browse files
committed
[ELF][ARM] Allow PT_LOAD to have overlapping p_offset ranges on EM_ARM
Port the D64906 technique to ARM. It deletes 3 alignments at PT_LOAD boundaries for the default case: the size of an arm binary decreases by at most 12kb. Reviewed By: grimar Differential Revision: https://reviews.llvm.org/D66749 llvm-svn: 370049
1 parent fdbc2bd commit 024bf27

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+668
-671
lines changed

lld/ELF/Writer.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2228,7 +2228,8 @@ template <class ELFT> void Writer<ELFT>::fixSectionAlignments() {
22282228
// TODO Enable this technique on all targets.
22292229
bool enable = config->emachine == EM_386 ||
22302230
config->emachine == EM_AARCH64 ||
2231-
config->emachine == EM_PPC || config->emachine == EM_PPC64;
2231+
config->emachine == EM_ARM || config->emachine == EM_PPC ||
2232+
config->emachine == EM_PPC64;
22322233

22332234
if (!enable || (config->zSeparateCode && prev &&
22342235
(prev->p_flags & PF_X) != (p->p_flags & PF_X)))

lld/test/ELF/arm-abs32-dyn.s

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,18 @@ bar:
2424
// RUN: llvm-readelf -x .data %t.so | FileCheck --check-prefix=HEX %s
2525

2626
// CHECK: Dynamic Relocations {
27-
// CHECK-NEXT: 0x2004 R_ARM_RELATIVE
28-
// CHECK-NEXT: 0x2008 R_ARM_RELATIVE
29-
// CHECK-NEXT: 0x2000 R_ARM_ABS32 foo 0x0
27+
// CHECK-NEXT: 0x3204 R_ARM_RELATIVE
28+
// CHECK-NEXT: 0x3208 R_ARM_RELATIVE
29+
// CHECK-NEXT: 0x3200 R_ARM_ABS32 foo 0x0
3030
// CHECK-NEXT: }
3131

3232
// CHECK: Symbols [
3333
// CHECK: Symbol {
3434
// CHECK: Name: bar
35-
// CHECK-NEXT: Value: 0x1000
35+
// CHECK-NEXT: Value: 0x11A8
3636

3737
// CHECK: Symbol {
3838
// CHECK: Name: foo
39-
// CHECK-NEXT: Value: 0x1000
39+
// CHECK-NEXT: Value: 0x11A8
4040

41-
// HEX: 0x00002000 00000000 00100000 00100000
41+
// HEX: 0x00003200 00000000 a8110000 a8110000

lld/test/ELF/arm-bl-v6.s

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// REQUIRES: arm
22
// RUN: llvm-mc -arm-add-build-attributes -filetype=obj -triple=armv6-none-linux-gnueabi %s -o %t
33
// RUN: ld.lld %t -o %t2
4-
// RUN: llvm-objdump -d -triple=armv6-none-linux-gnueabi -start-address=69632 -stop-address=69640 %t2 | FileCheck -check-prefix=CHECK-ARM1 %s
5-
// RUN: llvm-objdump -d -triple=thumbv6-none-linux-gnueabi %t2 -start-address=69640 -stop-address=69644 | FileCheck -check-prefix=CHECK-THUMB1 %s
6-
// RUN: llvm-objdump -d -triple=armv6-none-linux-gnueabi -start-address=2166796 -stop-address=2166804 %t2 | FileCheck -check-prefix=CHECK-ARM2 %s
7-
// RUN: llvm-objdump -d -triple=thumbv6-none-linux-gnueabi %t2 -start-address=6365184 -stop-address=6365186 | FileCheck -check-prefix=CHECK-THUMB2 %s
4+
// RUN: llvm-objdump -d -triple=armv6-none-linux-gnueabi -start-address=0x12000 -stop-address=0x12008 %t2 | FileCheck -check-prefix=CHECK-ARM1 %s
5+
// RUN: llvm-objdump -d -triple=thumbv6-none-linux-gnueabi %t2 -start-address=0x12008 -stop-address=0x1200c | FileCheck -check-prefix=CHECK-THUMB1 %s
6+
// RUN: llvm-objdump -d -triple=armv6-none-linux-gnueabi -start-address=0x21200c -stop-address=0x212014 %t2 | FileCheck -check-prefix=CHECK-ARM2 %s
7+
// RUN: llvm-objdump -d -triple=thumbv6-none-linux-gnueabi %t2 -start-address=0x613000 -stop-address=0x613002 | FileCheck -check-prefix=CHECK-THUMB2 %s
88

99
// On Arm v6 the range of a Thumb BL instruction is only 4 megabytes as the
1010
// extended range encoding is not supported. The following example has a Thumb
@@ -28,8 +28,8 @@ _start:
2828
// CHECK-ARM1: Disassembly of section .text:
2929
// CHECK-ARM1-EMPTY:
3030
// CHECK-ARM1-NEXT: _start:
31-
// CHECK-ARM1-NEXT: 11000: 00 00 00 fa blx #0 <thumbfunc>
32-
// CHECK-ARM1-NEXT: 11004: 1e ff 2f e1 bx lr
31+
// CHECK-ARM1-NEXT: 12000: 00 00 00 fa blx #0 <thumbfunc>
32+
// CHECK-ARM1-NEXT: 12004: 1e ff 2f e1 bx lr
3333
.thumb
3434
.section .text.2, "ax", %progbits
3535
.globl thumbfunc
@@ -38,16 +38,16 @@ thumbfunc:
3838
bl farthumbfunc
3939

4040
// CHECK-THUMB1: thumbfunc:
41-
// CHECK-THUMB1-NEXT: 11008: 00 f2 00 e8 blx #2097152
41+
// CHECK-THUMB1-NEXT: 12008: 00 f2 00 e8 blx #2097152
4242
// 6 Megabytes, enough to make farthumbfunc out of range of caller
4343
// on a v6 Arm, but not on a v7 Arm.
4444

4545
.section .text.3, "ax", %progbits
4646
.space 0x200000
4747
// CHECK-ARM2: __ARMv5ABSLongThunk_farthumbfunc:
48-
// CHECK-ARM2-NEXT: 21100c: 04 f0 1f e5 ldr pc, [pc, #-4]
48+
// CHECK-ARM2-NEXT: 21200c: 04 f0 1f e5 ldr pc, [pc, #-4]
4949
// CHECK-ARM2: $d:
50-
// CHECK-ARM2-NEXT: 211010: 01 20 61 00 .word 0x00612001
50+
// CHECK-ARM2-NEXT: 212010: 01 30 61 00 .word 0x00613001
5151
.section .text.4, "ax", %progbits
5252
.space 0x200000
5353

@@ -62,4 +62,4 @@ thumbfunc:
6262
farthumbfunc:
6363
bx lr
6464
// CHECK-THUMB2: farthumbfunc:
65-
// CHECK-THUMB2-NEXT: 612000: 70 47 bx lr
65+
// CHECK-THUMB2-NEXT: 613000: 70 47 bx lr

lld/test/ELF/arm-branch-undef-weak-plt-thunk.s

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// RUN: ld.lld %t1.o --shared -soname=t1.so -o %t1.so
44
// RUN: llvm-mc -arm-add-build-attributes -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t.o
55
// RUN: ld.lld %t.o %t1.so -o %t
6-
// RUN: llvm-objdump -d -triple=armv7a-none-linux-gnueabi -start-address=0x11000 -stop-address=0x11020 %t | FileCheck %s
6+
// RUN: llvm-objdump -d -triple=armv7a-none-linux-gnueabi -start-address=0x111e4 -stop-address=0x11204 %t | FileCheck %s
77

88
// When we are dynamic linking, undefined weak references have a PLT entry so
99
// we must create a thunk for the branch to the PLT entry.
@@ -24,13 +24,13 @@ _start:
2424
// CHECK: Disassembly of section .text:
2525
// CHECK-EMPTY:
2626
// CHECK-NEXT: _start:
27-
// CHECK-NEXT: 11000: 00 00 00 ea b #0 <__ARMv7ABSLongThunk_undefined_weak_we_expect_a_plt_entry_for>
28-
// CHECK-NEXT: 11004: 02 00 00 eb bl #8 <__ARMv7ABSLongThunk_bar2>
27+
// CHECK-NEXT: 111e4: 00 00 00 ea b #0 <__ARMv7ABSLongThunk_undefined_weak_we_expect_a_plt_entry_for>
28+
// CHECK-NEXT: 111e8: 02 00 00 eb bl #8 <__ARMv7ABSLongThunk_bar2>
2929
// CHECK: __ARMv7ABSLongThunk_undefined_weak_we_expect_a_plt_entry_for:
30-
// CHECK-NEXT: 11008: 40 c0 01 e3 movw r12, #4160
31-
// CHECK-NEXT: 1100c: 01 c2 40 e3 movt r12, #513
32-
// CHECK-NEXT: 11010: 1c ff 2f e1 bx r12
30+
// CHECK-NEXT: 111ec: 30 c2 01 e3 movw r12, #4656
31+
// CHECK-NEXT: 111f0: 01 c2 40 e3 movt r12, #513
32+
// CHECK-NEXT: 111f4: 1c ff 2f e1 bx r12
3333
// CHECK: __ARMv7ABSLongThunk_bar2:
34-
// CHECK-NEXT: 11014: 50 c0 01 e3 movw r12, #4176
35-
// CHECK-NEXT: 11018: 01 c2 40 e3 movt r12, #513
36-
// CHECK-NEXT: 1101c: 1c ff 2f e1 bx r12
34+
// CHECK-NEXT: 111f8: 40 c2 01 e3 movw r12, #4672
35+
// CHECK-NEXT: 111fc: 01 c2 40 e3 movt r12, #513
36+
// CHECK-NEXT: 11200: 1c ff 2f e1 bx r12

lld/test/ELF/arm-copy.s

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ _start:
2525
// CHECK-NEXT: SHF_ALLOC
2626
// CHECK-NEXT: SHF_WRITE
2727
// CHECK-NEXT: ]
28-
// CHECK-NEXT: Address: 0x13000
28+
// CHECK-NEXT: Address: 0x13220
2929
// CHECK-NEXT: Offset:
3030
// CHECK-NEXT: Size: 8
3131
// CHECK-NEXT: Link:
@@ -35,13 +35,13 @@ _start:
3535
// CHECK: Relocations [
3636
// CHECK-NEXT: Section {{.*}} .rel.dyn {
3737
// CHECK-NEXT: Relocation {
38-
// CHECK-NEXT: Offset: 0x13000
38+
// CHECK-NEXT: Offset: 0x13220
3939
// CHECK-NEXT: Type: R_ARM_COPY
4040
// CHECK-NEXT: Symbol: y
4141
// CHECK-NEXT: Addend: 0x0
4242
// CHECK-NEXT: }
4343
// CHECK-NEXT: Relocation {
44-
// CHECK-NEXT: Offset: 0x13004
44+
// CHECK-NEXT: Offset: 0x13224
4545
// CHECK-NEXT: Type: R_ARM_COPY
4646
// CHECK-NEXT: Symbol: z
4747
// CHECK-NEXT: Addend: 0x0
@@ -50,14 +50,14 @@ _start:
5050

5151
// CHECK: Symbols [
5252
// CHECK: Name: y
53-
// CHECK-NEXT: Value: 0x13000
53+
// CHECK-NEXT: Value: 0x13220
5454
// CHECK-NEXT: Size: 4
5555
// CHECK-NEXT: Binding: Global
5656
// CHECK-NEXT: Type: Object
5757
// CHECK-NEXT: Other:
5858
// CHECK-NEXT: Section: .bss
5959
// CHECK: Name: z
60-
// CHECK-NEXT: Value: 0x13004
60+
// CHECK-NEXT: Value: 0x13224
6161
// CHECK-NEXT: Size: 4
6262
// CHECK-NEXT: Binding: Global
6363
// CHECK-NEXT: Type: Object
@@ -67,16 +67,13 @@ _start:
6767
// CODE: Disassembly of section .text:
6868
// CODE-EMPTY:
6969
// CODE-NEXT: _start:
70-
// S(y) = 0x13000, A = 0
71-
// (S + A) & 0x0000ffff = 0x3000 = #12288
72-
// CODE-NEXT: 11000: movw r2, #12288
73-
// S(y) = 0x13000, A = 0
74-
// ((S + A) & 0xffff0000) >> 16 = 0x1
75-
// CODE-NEXT: 11004: movt r2, #1
76-
// CODE-NEXT: 11008: ldr r3, [pc, #4]
77-
// CODE-NEXT: 1100c: ldr r3, [r3]
70+
// S + A = 0x13220 + 0 = 65536 * 1 + 12832
71+
// CODE-NEXT: 111b4: movw r2, #12832
72+
// CODE-NEXT: 111b8: movt r2, #1
73+
// CODE-NEXT: 111bc: ldr r3, [pc, #4]
74+
// CODE-NEXT: 111c0: ldr r3, [r3]
7875

7976

8077
// RODATA: Contents of section .rodata:
8178
// S(z) = 0x13004
82-
// RODATA-NEXT: 101b0 04300100
79+
// RODATA-NEXT: 101b0 24320100

lld/test/ELF/arm-execute-only.s

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,18 @@
1111
// RUN: llvm-readelf -l %t.so | FileCheck --check-prefix=DIFF --implicit-check-not=LOAD %s
1212

1313
// CHECK: LOAD 0x000000 0x00000000 0x00000000 0x0016d 0x0016d R 0x1000
14-
// CHECK: LOAD 0x001000 0x00001000 0x00001000 0x{{.*}} 0x{{.*}} R E 0x1000
15-
// CHECK: LOAD 0x002000 0x00002000 0x00002000 0x{{.*}} 0x{{.*}} E 0x1000
16-
// CHECK: LOAD 0x003000 0x00003000 0x00003000 0x00038 0x00038 RW 0x1000
14+
// CHECK: LOAD 0x000170 0x00001170 0x00001170 0x{{.*}} 0x{{.*}} R E 0x1000
15+
// CHECK: LOAD 0x000174 0x00002174 0x00002174 0x{{.*}} 0x{{.*}} E 0x1000
16+
// CHECK: LOAD 0x000178 0x00003178 0x00003178 0x00038 0x00038 RW 0x1000
1717

1818
// CHECK: 01 .dynsym .gnu.hash .hash .dynstr
1919
// CHECK: 02 .text
2020
// CHECK: 03 .foo
2121
// CHECK: 04 .dynamic
2222

2323
// DIFF: LOAD 0x000000 0x00000000 0x00000000 0x0014d 0x0014d R 0x1000
24-
// DIFF: LOAD 0x001000 0x00001000 0x00001000 0x0000c 0x0000c R E 0x1000
25-
// DIFF: LOAD 0x002000 0x00002000 0x00002000 0x00038 0x00038 RW 0x1000
24+
// DIFF: LOAD 0x000150 0x00001150 0x00001150 0x0000c 0x0000c R E 0x1000
25+
// DIFF: LOAD 0x00015c 0x0000215c 0x0000215c 0x00038 0x00038 RW 0x1000
2626

2727
// DIFF: 01 .dynsym .gnu.hash .hash .dynstr
2828
// DIFF: 02 .text .foo

lld/test/ELF/arm-exidx-add-missing.s

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,14 @@ __aeabi_unwind_cpp_pr0:
5353
bx lr
5454

5555
// f1, f2
56-
// CHECK: 100d4 2c0f0000 08849780 280f0000 01000000
56+
// CHECK: 100d4 28100000 08849780 24100000 01000000
5757
// f3, __aeabi_unwind_cpp_pr0
58-
// CHECK-NEXT: 100e4 240f0000 01000000 200f0000 01000000
58+
// CHECK-NEXT: 100e4 20100000 01000000 1c100000 01000000
5959
// sentinel
60-
// CHECK-NEXT: 100f4 1c0f0000 01000000
60+
// CHECK-NEXT: 100f4 18100000 01000000
6161

6262
// f1, (f2, f3, __aeabi_unwind_cpp_pr0)
63-
// CHECK-MERGE: 100d4 2c0f0000 08849780 280f0000 01000000
63+
// CHECK-MERGE: 100d4 18100000 08849780 14100000 01000000
6464
// sentinel
65-
// CHECK-MERGE-NEXT: 100e4 2c0f0000 01000000
65+
// CHECK-MERGE-NEXT: 100e4 18100000 01000000
6666

lld/test/ELF/arm-exidx-canunwind.s

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -55,26 +55,26 @@ _start:
5555
// CHECK: Disassembly of section .text:
5656
// CHECK-EMPTY:
5757
// CHECK-NEXT: _start:
58-
// CHECK-NEXT: 11000: bl #4 <func1>
59-
// CHECK-NEXT: 11004: bl #4 <func2>
60-
// CHECK-NEXT: 11008: bx lr
58+
// CHECK-NEXT: 11108: bl #4 <func1>
59+
// CHECK-NEXT: bl #4 <func2>
60+
// CHECK-NEXT: bx lr
6161
// CHECK: func1:
62-
// CHECK-NEXT: 1100c: bx lr
62+
// CHECK-NEXT: 11114: bx lr
6363
// CHECK: func2:
64-
// CHECK-NEXT: 11010: bx lr
64+
// CHECK-NEXT: 11118: bx lr
6565
// CHECK: __gxx_personality_v0:
66-
// CHECK-NEXT: 11014: bx lr
66+
// CHECK-NEXT: 1111c: bx lr
6767
// CHECK: __aeabi_unwind_cpp_pr0:
68-
// CHECK-NEXT: 11018: bx lr
68+
// CHECK-NEXT: 11120: bx lr
6969

70-
// 100d4 + f2c = 11000 = main (linker generated cantunwind)
71-
// 100dc + f30 = 1100c = func1 (inline unwinding data)
72-
// CHECK-EXIDX: 100d4 2c0f0000 01000000 300f0000 08849780
73-
// 100e4 + f2c = 11010 = func2 (100e8 + 14 = 100fc = .ARM.extab entry)
74-
// 100ec + f28 = 11014 = __gcc_personality_v0 (linker generated cantunwind)
75-
// CHECK-EXIDX-NEXT: 100e4 2c0f0000 14000000 280f0000 01000000
76-
// 100f4 + f28 = 1101c = sentinel
77-
// CHECK-EXIDX-NEXT: 100f4 280f0000 01000000
70+
// 100d4 + 0x1034 = 0x11108 = main (linker generated cantunwind)
71+
// 100dc + 0x1038 = 0x11114 = func1 (inline unwinding data)
72+
// CHECK-EXIDX: 100d4 34100000 01000000 38100000 08849780
73+
// 100e4 + 0x1034 = 0x11118 = func2 (100e8 + 14 = 100fc = .ARM.extab entry)
74+
// 100ec + 0x1030 = 0x1111c = __gxx_personality_v0 (linker generated cantunwind)
75+
// CHECK-EXIDX-NEXT: 100e4 34100000 14000000 30100000 01000000
76+
// 100f4 + 0x1030 = 1101c = sentinel
77+
// CHECK-EXIDX-NEXT: 100f4 30100000 01000000
7878

7979
// CHECK-PT: Name: .ARM.exidx
8080
// CHECK-PT-NEXT: Type: SHT_ARM_EXIDX (0x70000001)

lld/test/ELF/arm-exidx-dedup.s

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,19 @@
1111

1212
// With duplicate entries
1313
// CHECK-DUPS: Contents of section .ARM.exidx:
14-
// CHECK-DUPS-NEXT: 100d4 2c0f0000 01000000 280f0000 01000000
15-
// CHECK-DUPS-NEXT: 100e4 240f0000 01000000 200f0000 01000000
16-
// CHECK-DUPS-NEXT: 100f4 1c0f0000 08849780 180f0000 08849780
17-
// CHECK-DUPS-NEXT: 10104 140f0000 08849780 100f0000 24000000
18-
// CHECK-DUPS-NEXT: 10114 0c0f0000 28000000 080f0000 01000000
19-
// CHECK-DUPS-NEXT: 10124 040f0000 01000000 000f0000 01000000
14+
// CHECK-DUPS-NEXT: 100d4 78100000 01000000 74100000 01000000
15+
// CHECK-DUPS-NEXT: 100e4 70100000 01000000 6c100000 01000000
16+
// CHECK-DUPS-NEXT: 100f4 68100000 08849780 64100000 08849780
17+
// CHECK-DUPS-NEXT: 10104 60100000 08849780 5c100000 24000000
18+
// CHECK-DUPS-NEXT: 10114 58100000 28000000 54100000 01000000
19+
// CHECK-DUPS-NEXT: 10124 50100000 01000000 4c100000 01000000
2020
// CHECK-DUPS-NEXT: Contents of section .ARM.extab:
2121

2222
// After duplicate entry removal
2323
// CHECK: Contents of section .ARM.exidx:
24-
// CHECK-NEXT: 100d4 2c0f0000 01000000 340f0000 08849780
25-
// CHECK-NEXT: 100e4 380f0000 1c000000 340f0000 20000000
26-
// CHECK-NEXT: 100f4 300f0000 01000000 300f0000 01000000
24+
// CHECK-NEXT: 100d4 48100000 01000000 50100000 08849780
25+
// CHECK-NEXT: 100e4 54100000 1c000000 50100000 20000000
26+
// CHECK-NEXT: 100f4 4c100000 01000000 4c100000 01000000
2727
// CHECK-NEXT: Contents of section .ARM.extab:
2828
.syntax unified
2929

lld/test/ELF/arm-exidx-emit-relocs.s

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ __aeabi_unwind_cpp_pr0:
6464
bx lr
6565

6666
// CHECK: Contents of section .ARM.exidx:
67-
// CHECK-NEXT: 100d4 2c0f0000 08849780 2c0f0000 01000000
68-
// CHECK-NEXT: 100e4 2c0f0000 08849780 280f0000 01000000
69-
// CHECK-NEXT: 100f4 240f0000 01000000
67+
// CHECK-NEXT: 100d4 28100000 08849780 28100000 01000000
68+
// CHECK-NEXT: 100e4 28100000 08849780 24100000 01000000
69+
// CHECK-NEXT: 100f4 20100000 01000000
7070

7171
// CHECK-RELOCS-NOT: Relocation section '.rel.ARM.exidx'

lld/test/ELF/arm-exidx-gc.s

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -93,17 +93,17 @@ _start:
9393
// CHECK: Disassembly of section .text:
9494
// CHECK-EMPTY:
9595
// CHECK-NEXT: _start:
96-
// CHECK-NEXT: 11000: bl #4 <func1>
97-
// CHECK-NEXT: 11004: bl #4 <func2>
98-
// CHECK-NEXT: 11008: bx lr
96+
// CHECK-NEXT: 1110c: bl #4 <func1>
97+
// CHECK-NEXT: 11110: bl #4 <func2>
98+
// CHECK-NEXT: 11114: bx lr
9999
// CHECK: func1:
100-
// CHECK-NEXT: 1100c: bx lr
100+
// CHECK-NEXT: 11118: bx lr
101101
// CHECK: func2:
102-
// CHECK-NEXT: 11010: bx lr
102+
// CHECK-NEXT: 1111c: bx lr
103103
// CHECK: __gxx_personality_v0:
104-
// CHECK-NEXT: 11014: bx lr
104+
// CHECK-NEXT: 11120: bx lr
105105
// CHECK: __aeabi_unwind_cpp_pr0:
106-
// CHECK-NEXT: 11018: bx lr
106+
// CHECK-NEXT: 11124: bx lr
107107

108108
// GC should have removed table entries for unusedfunc1, unusedfunc2
109109
// and __gxx_personality_v1
@@ -112,15 +112,15 @@ _start:
112112
// CHECK-NOT: __gxx_personality_v1
113113

114114
// CHECK-EXIDX: Contents of section .ARM.exidx:
115-
// 100d4 + f2c = 11000
116-
// 100dc + f30 = 1100c = func1
117-
// CHECK-EXIDX-NEXT: 100d4 2c0f0000 01000000 300f0000 08849780
118-
// 100e4 + f2c = 11010 = func2 (100e8 + 1c = 10104 = .ARM.extab)
119-
// 100ec + f28 = 11014 = __gxx_personality_v0
120-
// CHECK-EXIDX-NEXT: 100e4 2c0f0000 1c000000 280f0000 01000000
121-
// 100f4 + f24 = 11018 = __aeabi_unwind_cpp_pr0
122-
// 100fc + f20 = 1101c = __aeabi_unwind_cpp_pr0 + sizeof(__aeabi_unwind_cpp_pr0)
123-
// CHECK-EXIDX-NEXT: 100f4 240f0000 01000000 200f0000 01000000
115+
// 100d4 + 1038 = 1110c = _start
116+
// 100dc + 103c = 11118 = func1
117+
// CHECK-EXIDX-NEXT: 100d4 38100000 01000000 3c100000 08849780
118+
// 100e4 + 1038 = 1111c = func2 (100e8 + 1c = 10104 = .ARM.extab)
119+
// 100ec + 1034 = 11120 = __gxx_personality_v0
120+
// CHECK-EXIDX-NEXT: 100e4 38100000 1c000000 34100000 01000000
121+
// 100f4 + 1030 = 11018 = __aeabi_unwind_cpp_pr0
122+
// 100fc + 102c = 1101c = __aeabi_unwind_cpp_pr0 + sizeof(__aeabi_unwind_cpp_pr0)
123+
// CHECK-EXIDX-NEXT: 100f4 30100000 01000000 2c100000 01000000
124124
// CHECK-EXIDX-NEXT: Contents of section .ARM.extab:
125-
// 10104 + f10 = 11014 = __gxx_personality_v0
126-
// CHECK-EXIDX-NEXT: 10104 100f0000 b0b0b000
125+
// 10104 + 101c = 11120 = __gxx_personality_v0
126+
// CHECK-EXIDX-NEXT: 10104 1c100000 b0b0b000

0 commit comments

Comments
 (0)