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.
_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to