+2014-11-20 Terry Guo <terry.guo@arm.com>
+
+ * elf32-arm.c (elf32_arm_merge_eabi_attributes): Skip if input bfd
+ hasn't attribute section.
+
2014-11-20 Alan Modra <amodra@gmail.com>
* elf64-ppc.c (ppc64_elf_size_stubs): Add __go_go to thread_starters.
static const int order_021[3] = {0, 2, 1};
int i;
bfd_boolean result = TRUE;
+ const char *sec_name = get_elf_backend_data (ibfd)->obj_attrs_section;
/* Skip the linker stubs file. This preserves previous behavior
of accepting unknown attributes in the first input file - but
if (ibfd->flags & BFD_LINKER_CREATED)
return TRUE;
+ /* Skip any input that hasn't attribute section.
+ This enables to link object files without attribute section with
+ any others. */
+ if (bfd_get_section_by_name (ibfd, sec_name) == NULL)
+ return TRUE;
+
if (!elf_known_obj_attributes_proc (obfd)[0].i)
{
/* This is the first object. Copy the attributes. */
+2014-11-20 Terry Guo <terry.guo@arm.com>
+
+ * ld-arm/attr-merge-nosection-1.d: New file.
+ * ld-arm/attr-merge-nosection-1a.s: Likewise.
+ * ld-arm/attr-merge-nosection-1b.s: Likewise.
+ * ld-arm/arm-elf.exp: Include the new test.
+
2014-11-18 H.J. Lu <hongjiu.lu@intel.com>
PR ld/17618
run_dump_test "attr-merge-vfp-7r"
run_dump_test "attr-merge-incompatible"
run_dump_test "attr-merge-arch-2"
+run_dump_test "attr-merge-nosection-1"
run_dump_test "unresolved-1"
if { ![istarget "arm*-*-nacl*"] } {
run_dump_test "unresolved-1-dyn"
--- /dev/null
+#source: attr-merge-nosection-1a.s RUN_OBJCOPY
+#source: attr-merge-nosection-1b.s
+#as:
+#objcopy_objects: -R '.ARM.attributes'
+#ld:
+#readelf: -A
+# This test is only valid on ELF based ports.
+# not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
+
+Attribute Section: aeabi
+File Attributes
+ Tag_CPU_name: "Cortex-M4"
+ Tag_CPU_arch: v7E-M
+ Tag_CPU_arch_profile: Microcontroller
+ Tag_THUMB_ISA_use: Thumb-2
+ Tag_FP_arch: VFPv4-D16
+ Tag_ABI_HardFP_use: SP only
+
--- /dev/null
+ .cpu cortex-m0
+ .fpu softvfp
+ .syntax unified
+ .thumb
+ .text
+ .global foo
+ .thumb_func
+ .type foo, %function
+foo:
+ bx lr
--- /dev/null
+ .syntax unified
+ .cpu cortex-m4
+ .fpu fpv4-sp-d16
+ .thumb
+ .text
+ .global _start
+ .thumb_func
+ .type _start, %function
+_start:
+ bl foo