aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-arm
diff options
context:
space:
mode:
authorTerry Guo <terry.guo@arm.com>2014-09-16 13:08:22 +0100
committerNick Clifton <nickc@redhat.com>2014-09-16 13:08:22 +0100
commit70e99720f9d558263756a482ae750b263ffd92ba (patch)
tree893354caf187ada3cfa61d98392b320a99d324ea /ld/testsuite/ld-arm
parent428b16bd5a3947e3a608f0c6751a8be7dbd88959 (diff)
downloadgdb-70e99720f9d558263756a482ae750b263ffd92ba.zip
gdb-70e99720f9d558263756a482ae750b263ffd92ba.tar.gz
gdb-70e99720f9d558263756a482ae750b263ffd92ba.tar.bz2
Make the linker return an error status if it fails to merge ARM binaries with
different architecture tags. Add a test case to make sure that this works, and update readelf so that it will not seg-fault when trying to display the attributes of binaries with invalid architecture tags. * elf32-arm.c (elf32_arm_merge_eabi_attributes): Return false if failed to merge. * ld-arm/attr-merge-arch-2.d: New test case. * ld-arm/attr-merge-arch-2a.s: New test case source file. * ld-arm/attr-merge-arch-2b.s: Likewise. * ld-arm/arm-elf.exp: Run new test case. * readelf.c (display_arm_attribute): Use unsigned int type for tag, val and type variables.
Diffstat (limited to 'ld/testsuite/ld-arm')
-rw-r--r--ld/testsuite/ld-arm/arm-elf.exp1
-rw-r--r--ld/testsuite/ld-arm/attr-merge-arch-2.d5
-rw-r--r--ld/testsuite/ld-arm/attr-merge-arch-2a.s18
-rw-r--r--ld/testsuite/ld-arm/attr-merge-arch-2b.s8
4 files changed, 32 insertions, 0 deletions
diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp
index f971afc..3c8cc68 100644
--- a/ld/testsuite/ld-arm/arm-elf.exp
+++ b/ld/testsuite/ld-arm/arm-elf.exp
@@ -878,6 +878,7 @@ run_dump_test "attr-merge-vfp-6r"
run_dump_test "attr-merge-vfp-7"
run_dump_test "attr-merge-vfp-7r"
run_dump_test "attr-merge-incompatible"
+run_dump_test "attr-merge-arch-2"
run_dump_test "unresolved-1"
if { ![istarget "arm*-*-nacl*"] } {
run_dump_test "unresolved-1-dyn"
diff --git a/ld/testsuite/ld-arm/attr-merge-arch-2.d b/ld/testsuite/ld-arm/attr-merge-arch-2.d
new file mode 100644
index 0000000..0e98edb
--- /dev/null
+++ b/ld/testsuite/ld-arm/attr-merge-arch-2.d
@@ -0,0 +1,5 @@
+#source: attr-merge-arch-2a.s
+#source: attr-merge-arch-2b.s
+#as:
+#ld: -e main
+#error: Conflicting CPU architectures 13/0
diff --git a/ld/testsuite/ld-arm/attr-merge-arch-2a.s b/ld/testsuite/ld-arm/attr-merge-arch-2a.s
new file mode 100644
index 0000000..6235a3e
--- /dev/null
+++ b/ld/testsuite/ld-arm/attr-merge-arch-2a.s
@@ -0,0 +1,18 @@
+ .syntax unified
+ .cpu cortex-m4
+ .fpu softvfp
+ .thumb
+ .file "m.c"
+ .text
+ .align 2
+ .global main
+ .thumb
+ .thumb_func
+ .type main, %function
+main:
+ push {r7, lr}
+ add r7, sp, #0
+ bl foo
+ mov r3, r0
+ mov r0, r3
+ pop {r7, pc}
diff --git a/ld/testsuite/ld-arm/attr-merge-arch-2b.s b/ld/testsuite/ld-arm/attr-merge-arch-2b.s
new file mode 100644
index 0000000..5771835
--- /dev/null
+++ b/ld/testsuite/ld-arm/attr-merge-arch-2b.s
@@ -0,0 +1,8 @@
+ .eabi_attribute 6, 0 @Tag_CPU_arch, 0 means pre-v4.
+ .file "f.c"
+ .text
+ .align 2
+ .global foo
+ .type foo, %function
+foo:
+ bx lr