From 4f90d84b2f2995829d6af475077598d45ef1d127 Mon Sep 17 00:00:00 2001 From: Thomas Preud'homme Date: Wed, 14 Sep 2016 16:02:17 +0100 Subject: Fix ld --gc-section segfault with ARMv8-M entry function in absolute section bfd/ 2016-09-14 Thomas Preud'homme * elf32-arm.c (elf32_arm_gc_mark_extra_sections): Only mark section not already marked. ld/ 2016-09-14 Thomas Preud'homme * testsuite/ld-arm/cmse-veneers.s: Add a test for ARMv8-M Security Extensions entry functions in absolute section. * testsuite/ld-arm/cmse-veneers.rd: Adapt expected output accordingly. --- bfd/ChangeLog | 5 +++++ bfd/elf32-arm.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'bfd') diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 567e18f..b54d0c9 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2016-09-14 Thomas Preud'homme + + * elf32-arm.c (elf32_arm_gc_mark_extra_sections): Only mark section + not already marked. + 2016-09-14 Nick Clifton PR binutils/20605 diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 5275cae..6e68be1 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -14906,7 +14906,8 @@ elf32_arm_gc_mark_extra_sections (struct bfd_link_info *info, if (ARM_GET_SYM_CMSE_SPCL (cmse_hash->root.target_internal)) { cmse_sec = cmse_hash->root.root.u.def.section; - if (!_bfd_elf_gc_mark (info, cmse_sec, gc_mark_hook)) + if (!cmse_sec->gc_mark && + !_bfd_elf_gc_mark (info, cmse_sec, gc_mark_hook)) return FALSE; } } -- cgit v1.1