This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

ARM STM32L4XX erratum test failure


Fixes a failure seen with MALLOC_PERTURB_=1.  Applied.

	* elf32-arm.c (elf32_arm_write_section): Don't leave
	error case of STM32L4XX_ERRATUM_BRANCH_TO_VENEER with
	unitialised section contents.

diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 337961d26e..a8d57019c8 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -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);
 	      }

-- 
Alan Modra
Australia Development Lab, IBM


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]