[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/24709] [arm] linker crash and assertion failure with CMSE
From: |
clyon at gcc dot gnu.org |
Subject: |
[Bug ld/24709] [arm] linker crash and assertion failure with CMSE |
Date: |
Mon, 24 Jun 2019 16:50:38 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=24709
--- Comment #1 from Christophe Lyon <clyon at gcc dot gnu.org> ---
When using 0x00400000 as section start address, we generate this:
00400000 <foo>:
400000: e97f e97f sg
400004: f408 b8b2 b.w 816c <__acle_se_foo>
[...]
0000816c <__acle_se_foo>:
816c: b480 push {r7}
816e: b083 sub sp, #12
[...]
If we use 0x20400000 instead, the CMSE stub is located too far away from
__acle_se_foo (still at 0x816c), and we fail when trying to insert a far-call
stub.
The failing assertion is in elf32_arm_get_stub_entry:
BFD_ASSERT (input_section->id <= htab->top_id);
in this case we have htab->top_id==478 and input_section_id==509 (input_section
is .gnu.sgstubs.__stub)
Can we iterate and mix different types of stubs insertion?
Alternatively, we could add a new type of stub "far-CMSE-stub" to deal with the
case where the CMSE stub is too far from its destination.
--
You are receiving this mail because:
You are on the CC list for the bug.