aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-arm.c3
-rw-r--r--ld/testsuite/ChangeLog7
-rw-r--r--ld/testsuite/ld-arm/arm-elf.exp1
-rw-r--r--ld/testsuite/ld-arm/attr-merge-incompatible.d5
-rw-r--r--ld/testsuite/ld-arm/attr-merge-incompatiblea.s1
-rw-r--r--ld/testsuite/ld-arm/attr-merge-incompatibleb.s1
7 files changed, 22 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 1c08054..d1ce00c 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2010-03-02 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ * elf32-arm.c (elf32_arm_merge_eabi_attributes): Add a check of the
+ return value from the call to _bfd_elf_merge_object_attributes.
+
2010-03-02 Christophe Lyon <christophe.lyon@st.com>
Alan Modra <amodra@gmail.com>
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index fd40315..29fb295 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -10340,7 +10340,8 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
}
/* Merge Tag_compatibility attributes and any common GNU ones. */
- _bfd_elf_merge_object_attributes (ibfd, obfd);
+ if (!_bfd_elf_merge_object_attributes (ibfd, obfd))
+ return FALSE;
/* Check for any attributes not known on ARM. */
in_list = elf_other_obj_attributes_proc (ibfd);
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 1652611..3ceacd4 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2010-03-02 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ * ld-arm/arm-merge-incompatible.d: New test.
+ * ld-arm/arm-merge-incompatiblea.s: Likewise.
+ * ld-arm/arm-merge-incompatibleb.s: Likewise.
+ * ld-arm/arm-elf.exp: Run the new test.
+
2010-03-02 Christophe Lyon <christophe.lyon@st.com>
Alan Modra <amodra@gmail.com>
diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp
index 87ea187..26552b9 100644
--- a/ld/testsuite/ld-arm/arm-elf.exp
+++ b/ld/testsuite/ld-arm/arm-elf.exp
@@ -510,3 +510,4 @@ run_dump_test "attr-merge-vfp-4"
run_dump_test "attr-merge-vfp-4r"
run_dump_test "attr-merge-vfp-5"
run_dump_test "attr-merge-vfp-5r"
+run_dump_test "attr-merge-incompatible"
diff --git a/ld/testsuite/ld-arm/attr-merge-incompatible.d b/ld/testsuite/ld-arm/attr-merge-incompatible.d
new file mode 100644
index 0000000..41711da
--- /dev/null
+++ b/ld/testsuite/ld-arm/attr-merge-incompatible.d
@@ -0,0 +1,5 @@
+#source: attr-merge-incompatibleb.s
+#source: attr-merge-incompatiblea.s
+#as:
+#ld:
+#error: Object has vendor-specific contents that must be processed by the '.+' toolchain
diff --git a/ld/testsuite/ld-arm/attr-merge-incompatiblea.s b/ld/testsuite/ld-arm/attr-merge-incompatiblea.s
new file mode 100644
index 0000000..03e0f7e
--- /dev/null
+++ b/ld/testsuite/ld-arm/attr-merge-incompatiblea.s
@@ -0,0 +1 @@
+ .eabi_attribute Tag_compatibility, 1, "Random Toolchain Vendor"
diff --git a/ld/testsuite/ld-arm/attr-merge-incompatibleb.s b/ld/testsuite/ld-arm/attr-merge-incompatibleb.s
new file mode 100644
index 0000000..583d253
--- /dev/null
+++ b/ld/testsuite/ld-arm/attr-merge-incompatibleb.s
@@ -0,0 +1 @@
+ .eabi_attribute Tag_compatibility, 1, "gnu"