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:
Alan Modra 2019-05-15 16:31:28 +09:30
parent 8f02ae5bac
commit 3a1bb98c3c
2 changed files with 12 additions and 3 deletions

View File

@ -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

View File

@ -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);
}