ARM STM32L4XX erratum test failure
Fixes a failure seen with MALLOC_PERTURB_=1. * elf32-arm.c (elf32_arm_write_section): Don't leave error case of STM32L4XX_ERRATUM_BRANCH_TO_VENEER with unitialised section contents.
This commit is contained in:
parent
8f02ae5bac
commit
3a1bb98c3c
@ -1,3 +1,9 @@
|
||||
2019-05-15 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf32-arm.c (elf32_arm_write_section): Don't leave
|
||||
error case of STM32L4XX_ERRATUM_BRANCH_TO_VENEER with
|
||||
unitialised section contents.
|
||||
|
||||
2019-05-14 Jamey Hicks <jamey.hicks@gmail.com>
|
||||
|
||||
PR 19921
|
||||
|
@ -19693,6 +19693,9 @@ elf32_arm_write_section (bfd *output_bfd,
|
||||
bfd_vma branch_to_veneer =
|
||||
stm32l4xx_errnode->u.b.veneer->vma - stm32l4xx_errnode->vma;
|
||||
|
||||
/* The instruction is before the label. */
|
||||
target -= 4;
|
||||
|
||||
if ((signed) branch_to_veneer < -(1 << 24)
|
||||
|| (signed) branch_to_veneer >= (1 << 24))
|
||||
{
|
||||
@ -19710,15 +19713,15 @@ elf32_arm_write_section (bfd *output_bfd,
|
||||
output_bfd,
|
||||
(uint64_t) (stm32l4xx_errnode->vma - 4),
|
||||
(int64_t) out_of_range);
|
||||
|
||||
/* Don't leave contents uninitialised. */
|
||||
bfd_put_16 (output_bfd, 0, contents + target);
|
||||
continue;
|
||||
}
|
||||
|
||||
insn = create_instruction_branch_absolute
|
||||
(stm32l4xx_errnode->u.b.veneer->vma - stm32l4xx_errnode->vma);
|
||||
|
||||
/* The instruction is before the label. */
|
||||
target -= 4;
|
||||
|
||||
put_thumb2_insn (globals, output_bfd,
|
||||
(bfd_vma) insn, contents + target);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user