mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 13:56:22 +08:00
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:
@ -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>
|
2019-05-14 Jamey Hicks <jamey.hicks@gmail.com>
|
||||||
|
|
||||||
PR 19921
|
PR 19921
|
||||||
|
@ -19693,6 +19693,9 @@ elf32_arm_write_section (bfd *output_bfd,
|
|||||||
bfd_vma branch_to_veneer =
|
bfd_vma branch_to_veneer =
|
||||||
stm32l4xx_errnode->u.b.veneer->vma - stm32l4xx_errnode->vma;
|
stm32l4xx_errnode->u.b.veneer->vma - stm32l4xx_errnode->vma;
|
||||||
|
|
||||||
|
/* The instruction is before the label. */
|
||||||
|
target -= 4;
|
||||||
|
|
||||||
if ((signed) branch_to_veneer < -(1 << 24)
|
if ((signed) branch_to_veneer < -(1 << 24)
|
||||||
|| (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,
|
output_bfd,
|
||||||
(uint64_t) (stm32l4xx_errnode->vma - 4),
|
(uint64_t) (stm32l4xx_errnode->vma - 4),
|
||||||
(int64_t) out_of_range);
|
(int64_t) out_of_range);
|
||||||
|
|
||||||
|
/* Don't leave contents uninitialised. */
|
||||||
|
bfd_put_16 (output_bfd, 0, contents + target);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
insn = create_instruction_branch_absolute
|
insn = create_instruction_branch_absolute
|
||||||
(stm32l4xx_errnode->u.b.veneer->vma - stm32l4xx_errnode->vma);
|
(stm32l4xx_errnode->u.b.veneer->vma - stm32l4xx_errnode->vma);
|
||||||
|
|
||||||
/* The instruction is before the label. */
|
|
||||||
target -= 4;
|
|
||||||
|
|
||||||
put_thumb2_insn (globals, output_bfd,
|
put_thumb2_insn (globals, output_bfd,
|
||||||
(bfd_vma) insn, contents + target);
|
(bfd_vma) insn, contents + target);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user