Add cantunwind when unwind info does not match start of section.

bfd     * elf32-arm.c (elf32_arm_fix_exidx_coverage): Insert cantunwind when
        address in first unwind entry does not match start of section.

tests   * ld-arm/arm-elf.exp: New test.
        * ld-arm/unwind-mix.d: New file.
        * ld-arm/unwind-mix1.s: New file.
        * ld-arm/unwind-mix2.s: New file.
This commit is contained in:
Yury Usishchev
2016-01-12 16:33:20 +00:00
committed by Nick Clifton
parent ce5e165eae
commit ac06903dcf
7 changed files with 79 additions and 0 deletions

View File

@@ -1,3 +1,9 @@
2016-01-12 Yury Usishchev <y.usishchev@samsung.com>
* elf32-arm.c (elf32_arm_fix_exidx_coverage): Insert cantunwind
when address in first unwind entry does not match start of
section.
2016-01-08 Richard Sandiford <richard.sandiford@arm.com>
Jiong Wang <jiong.wang@arm.com>

View File

@@ -11740,6 +11740,18 @@ elf32_arm_fix_exidx_coverage (asection **text_section_order,
/* An error? */
continue;
if (last_unwind_type > 0)
{
unsigned int first_word = bfd_get_32 (ibfd, contents);
/* Add cantunwind if first unwind item does not match section
start. */
if (first_word != sec->vma)
{
insert_cantunwind_after (last_text_sec, last_exidx_sec);
last_unwind_type = 0;
}
}
for (j = 0; j < hdr->sh_size; j += 8)
{
unsigned int second_word = bfd_get_32 (ibfd, contents + j + 4);