summaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-tic6x
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2010-06-16 00:36:04 +0000
committerJoseph Myers <joseph@codesourcery.com>2010-06-16 00:36:04 +0000
commit59e6276b64b1a3b248d851e5a3f5acd63e346399 (patch)
tree67703b84ce60420523bc7446757adab7be390419 /ld/testsuite/ld-tic6x
parentc562eb737ab97d1efc460606632f78bbb80169cb (diff)
downloadbinutils-gdb-59e6276b64b1a3b248d851e5a3f5acd63e346399.tar.gz
bfd:
* elf-bfd.h (LEAST_KNOWN_OBJ_ATTRIBUTE): Decrease to 2. * elf32-tic6x.c (elf32_tic6x_obj_attrs_arg_type, elf32_tic6x_merge_arch_attributes, elf32_tic6x_merge_attributes, elf32_tic6x_merge_private_bfd_data): New. (bfd_elf32_bfd_merge_private_bfd_data, elf_backend_obj_attrs_arg_type, elf_backend_obj_attrs_section, elf_backend_obj_attrs_section_type, elf_backend_obj_attrs_vendor): Define. * elf32-tic6x.h (elf32_tic6x_merge_arch_attributes): Declare. binutils: * readelf.c (display_tic6x_attribute, process_tic6x_specific): New. (process_arch_specific): Call process_tic6x_specific for EM_TI_C6000. gas: * config/tc-tic6x.c: Include elf/tic6x.h. (tic6x_arch_attribute, tic6x_seen_insns): New. (tic6x_arch_table, tic6x_arches): Add attribute values. (tic6x_use_arch): Handle attribute settings. (tic6x_attributes_set_explicitly, s_tic6x_c6xabi_attribute, tic6x_attribute_table, tic6x_attributes, tic6x_convert_symbolic_attribute): New. (md_pseudo_table): Add c6xabi_attribute. (md_assemble): Set tic6x_seen_insns and tic6x_arch_attribute. (tic6x_set_attribute_int, tic6x_set_attributes): New. (tic6x_end): Call tic6x_set_attributes. * config/tc-tic6x.h (CONVERT_SYMBOLIC_ATTRIBUTE): Define. (tic6x_convert_symbolic_attribute): Declare. gas/testsuite: * gas/elf/elf.exp: Set target_machine for tic6x-*-*. * gas/elf/section2.e-tic6x, gas/tic6x/attr-arch-directive-1.d, gas/tic6x/attr-arch-directive-1.s, gas/tic6x/attr-arch-directive-2.d, gas/tic6x/attr-arch-directive-2.s, gas/tic6x/attr-arch-directive-3.d, gas/tic6x/attr-arch-directive-3.s, gas/tic6x/attr-arch-directive-4.d, gas/tic6x/attr-arch-directive-4.s, gas/tic6x/attr-arch-directive-5.d, gas/tic6x/attr-arch-directive-5.s, gas/tic6x/attr-arch-opts-c62x.d, gas/tic6x/attr-arch-opts-c64x+.d, gas/tic6x/attr-arch-opts-c64x.d, gas/tic6x/attr-arch-opts-c674x.d, gas/tic6x/attr-arch-opts-c67x+.d, gas/tic6x/attr-arch-opts-c67x.d, gas/tic6x/attr-arch-opts-none-1.d, gas/tic6x/attr-arch-opts-none-2.d, gas/tic6x/attr-arch-opts-override-1.d, gas/tic6x/attr-arch-opts-override-2.d, gas/tic6x/empty.s: New. include/elf: * tic6x-attrs.h: New. * tic6x.h: Include elf/tic6x-attrs.h for attribute table. (C6XABI_Tag_CPU_arch_none, C6XABI_Tag_CPU_arch_C62X, C6XABI_Tag_CPU_arch_C67X, C6XABI_Tag_CPU_arch_C67XP, C6XABI_Tag_CPU_arch_C64X, C6XABI_Tag_CPU_arch_C64XP, C6XABI_Tag_CPU_arch_C674X): Define. ld: * emulparams/elf32_tic6x_le.sh (ATTRS_SECTIONS): Define. ld/testsuite: * ld-elf/orphan3.d: Allow section names starting '_'. * ld-tic6x/attr-arch-c62x-c62x.d, ld-tic6x/attr-arch-c62x-c64x+.d, ld-tic6x/attr-arch-c62x-c64x.d, ld-tic6x/attr-arch-c62x-c674x.d, ld-tic6x/attr-arch-c62x-c67x+.d, ld-tic6x/attr-arch-c62x-c67x.d, ld-tic6x/attr-arch-c62x.s, ld-tic6x/attr-arch-c64x+-c62x.d, ld-tic6x/attr-arch-c64x+-c64x+.d, ld-tic6x/attr-arch-c64x+-c64x.d, ld-tic6x/attr-arch-c64x+-c674x.d, ld-tic6x/attr-arch-c64x+-c67x+.d, ld-tic6x/attr-arch-c64x+-c67x.d, ld-tic6x/attr-arch-c64x+.s, ld-tic6x/attr-arch-c64x-c62x.d, ld-tic6x/attr-arch-c64x-c64x+.d, ld-tic6x/attr-arch-c64x-c64x.d, ld-tic6x/attr-arch-c64x-c674x.d, ld-tic6x/attr-arch-c64x-c67x+.d, ld-tic6x/attr-arch-c64x-c67x.d, ld-tic6x/attr-arch-c64x.s, ld-tic6x/attr-arch-c674x-c62x.d, ld-tic6x/attr-arch-c674x-c64x+.d, ld-tic6x/attr-arch-c674x-c64x.d, ld-tic6x/attr-arch-c674x-c674x.d, ld-tic6x/attr-arch-c674x-c67x+.d, ld-tic6x/attr-arch-c674x-c67x.d, ld-tic6x/attr-arch-c674x.s, ld-tic6x/attr-arch-c67x+-c62x.d, ld-tic6x/attr-arch-c67x+-c64x+.d, ld-tic6x/attr-arch-c67x+-c64x.d, ld-tic6x/attr-arch-c67x+-c674x.d, ld-tic6x/attr-arch-c67x+-c67x+.d, ld-tic6x/attr-arch-c67x+-c67x.d, ld-tic6x/attr-arch-c67x+.s, ld-tic6x/attr-arch-c67x-c62x.d, ld-tic6x/attr-arch-c67x-c64x+.d, ld-tic6x/attr-arch-c67x-c64x.d, ld-tic6x/attr-arch-c67x-c674x.d, ld-tic6x/attr-arch-c67x-c67x+.d, ld-tic6x/attr-arch-c67x-c67x.d, ld-tic6x/attr-arch-c67x.s: New.
Diffstat (limited to 'ld/testsuite/ld-tic6x')
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c62x-c62x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c62x-c64x+.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c62x-c64x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c62x-c674x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c62x-c67x+.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c62x-c67x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c62x.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c64x+-c62x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c64x+-c64x+.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c64x+-c64x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c64x+-c674x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c64x+-c67x+.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c64x+-c67x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c64x+.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c64x-c62x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c64x-c64x+.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c64x-c64x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c64x-c674x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c64x-c67x+.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c64x-c67x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c64x.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c674x-c62x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c674x-c64x+.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c674x-c64x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c674x-c674x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c674x-c67x+.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c674x-c67x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c674x.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c67x+-c62x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c67x+-c64x+.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c67x+-c64x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c67x+-c674x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c67x+-c67x+.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c67x+-c67x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c67x+.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c67x-c62x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c67x-c64x+.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c67x-c64x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c67x-c674x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c67x-c67x+.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c67x-c67x.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-arch-c67x.s1
42 files changed, 366 insertions, 0 deletions
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c62x-c62x.d b/ld/testsuite/ld-tic6x/attr-arch-c62x-c62x.d
new file mode 100644
index 00000000000..7d339666e46
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c62x-c62x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c62x c62x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c62x.s
+#source: attr-arch-c62x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C62x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c62x-c64x+.d b/ld/testsuite/ld-tic6x/attr-arch-c62x-c64x+.d
new file mode 100644
index 00000000000..f097363432b
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c62x-c64x+.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c62x c64x+
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c62x.s
+#source: attr-arch-c64x+.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C64x\+
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c62x-c64x.d b/ld/testsuite/ld-tic6x/attr-arch-c62x-c64x.d
new file mode 100644
index 00000000000..6ebb94f61da
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c62x-c64x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c62x c64x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c62x.s
+#source: attr-arch-c64x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C64x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c62x-c674x.d b/ld/testsuite/ld-tic6x/attr-arch-c62x-c674x.d
new file mode 100644
index 00000000000..5fa0d9edd4e
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c62x-c674x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c62x c674x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c62x.s
+#source: attr-arch-c674x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c62x-c67x+.d b/ld/testsuite/ld-tic6x/attr-arch-c62x-c67x+.d
new file mode 100644
index 00000000000..449d5dd61ab
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c62x-c67x+.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c62x c67x+
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c62x.s
+#source: attr-arch-c67x+.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C67x\+
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c62x-c67x.d b/ld/testsuite/ld-tic6x/attr-arch-c62x-c67x.d
new file mode 100644
index 00000000000..47e295cecac
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c62x-c67x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c62x c67x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c62x.s
+#source: attr-arch-c67x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C67x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c62x.s b/ld/testsuite/ld-tic6x/attr-arch-c62x.s
new file mode 100644
index 00000000000..e69fbf4e581
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c62x.s
@@ -0,0 +1 @@
+.arch c62x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c64x+-c62x.d b/ld/testsuite/ld-tic6x/attr-arch-c64x+-c62x.d
new file mode 100644
index 00000000000..d05dbb6daee
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c64x+-c62x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c64x+ c62x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c64x+.s
+#source: attr-arch-c62x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C64x\+
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c64x+-c64x+.d b/ld/testsuite/ld-tic6x/attr-arch-c64x+-c64x+.d
new file mode 100644
index 00000000000..29f00c0cf1b
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c64x+-c64x+.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c64x+ c64x+
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c64x+.s
+#source: attr-arch-c64x+.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C64x\+
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c64x+-c64x.d b/ld/testsuite/ld-tic6x/attr-arch-c64x+-c64x.d
new file mode 100644
index 00000000000..d007b23e3d7
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c64x+-c64x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c64x+ c64x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c64x+.s
+#source: attr-arch-c64x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C64x\+
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c64x+-c674x.d b/ld/testsuite/ld-tic6x/attr-arch-c64x+-c674x.d
new file mode 100644
index 00000000000..bef1c3f631a
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c64x+-c674x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c64x+ c674x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c64x+.s
+#source: attr-arch-c674x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c64x+-c67x+.d b/ld/testsuite/ld-tic6x/attr-arch-c64x+-c67x+.d
new file mode 100644
index 00000000000..7bcfa8d1f2d
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c64x+-c67x+.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c64x+ c67x+
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c64x+.s
+#source: attr-arch-c67x+.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c64x+-c67x.d b/ld/testsuite/ld-tic6x/attr-arch-c64x+-c67x.d
new file mode 100644
index 00000000000..68a3d2d8bb3
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c64x+-c67x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c64x+ c67x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c64x+.s
+#source: attr-arch-c67x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c64x+.s b/ld/testsuite/ld-tic6x/attr-arch-c64x+.s
new file mode 100644
index 00000000000..2c2f2102293
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c64x+.s
@@ -0,0 +1 @@
+.arch c64x+
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c64x-c62x.d b/ld/testsuite/ld-tic6x/attr-arch-c64x-c62x.d
new file mode 100644
index 00000000000..47f87dbd396
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c64x-c62x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c64x c62x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c64x.s
+#source: attr-arch-c62x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C64x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c64x-c64x+.d b/ld/testsuite/ld-tic6x/attr-arch-c64x-c64x+.d
new file mode 100644
index 00000000000..648915c468a
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c64x-c64x+.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c64x c64x+
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c64x.s
+#source: attr-arch-c64x+.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C64x\+
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c64x-c64x.d b/ld/testsuite/ld-tic6x/attr-arch-c64x-c64x.d
new file mode 100644
index 00000000000..1f2e286f83d
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c64x-c64x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c64x c64x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c64x.s
+#source: attr-arch-c64x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C64x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c64x-c674x.d b/ld/testsuite/ld-tic6x/attr-arch-c64x-c674x.d
new file mode 100644
index 00000000000..d27fa577602
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c64x-c674x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c64x c674x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c64x.s
+#source: attr-arch-c674x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c64x-c67x+.d b/ld/testsuite/ld-tic6x/attr-arch-c64x-c67x+.d
new file mode 100644
index 00000000000..ee809a7c944
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c64x-c67x+.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c64x c67x+
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c64x.s
+#source: attr-arch-c67x+.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c64x-c67x.d b/ld/testsuite/ld-tic6x/attr-arch-c64x-c67x.d
new file mode 100644
index 00000000000..9df8d0fc174
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c64x-c67x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c64x c67x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c64x.s
+#source: attr-arch-c67x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c64x.s b/ld/testsuite/ld-tic6x/attr-arch-c64x.s
new file mode 100644
index 00000000000..438d0f8af66
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c64x.s
@@ -0,0 +1 @@
+.arch c64x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c674x-c62x.d b/ld/testsuite/ld-tic6x/attr-arch-c674x-c62x.d
new file mode 100644
index 00000000000..53dc64de554
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c674x-c62x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c674x c62x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c674x.s
+#source: attr-arch-c62x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c674x-c64x+.d b/ld/testsuite/ld-tic6x/attr-arch-c674x-c64x+.d
new file mode 100644
index 00000000000..b7d9c64bfa0
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c674x-c64x+.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c674x c64x+
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c674x.s
+#source: attr-arch-c64x+.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c674x-c64x.d b/ld/testsuite/ld-tic6x/attr-arch-c674x-c64x.d
new file mode 100644
index 00000000000..5a06c9a6cb0
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c674x-c64x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c674x c64x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c674x.s
+#source: attr-arch-c64x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c674x-c674x.d b/ld/testsuite/ld-tic6x/attr-arch-c674x-c674x.d
new file mode 100644
index 00000000000..41b41e5f059
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c674x-c674x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c674x c674x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c674x.s
+#source: attr-arch-c674x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c674x-c67x+.d b/ld/testsuite/ld-tic6x/attr-arch-c674x-c67x+.d
new file mode 100644
index 00000000000..77be063c084
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c674x-c67x+.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c674x c67x+
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c674x.s
+#source: attr-arch-c67x+.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c674x-c67x.d b/ld/testsuite/ld-tic6x/attr-arch-c674x-c67x.d
new file mode 100644
index 00000000000..38acd9ac023
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c674x-c67x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c674x c67x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c674x.s
+#source: attr-arch-c67x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c674x.s b/ld/testsuite/ld-tic6x/attr-arch-c674x.s
new file mode 100644
index 00000000000..41b3886a45c
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c674x.s
@@ -0,0 +1 @@
+.arch c674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c67x+-c62x.d b/ld/testsuite/ld-tic6x/attr-arch-c67x+-c62x.d
new file mode 100644
index 00000000000..0d58d50cef1
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c67x+-c62x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c67x+ c62x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c67x+.s
+#source: attr-arch-c62x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C67x\+
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c67x+-c64x+.d b/ld/testsuite/ld-tic6x/attr-arch-c67x+-c64x+.d
new file mode 100644
index 00000000000..65baf14638e
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c67x+-c64x+.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c67x+ c64x+
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c67x+.s
+#source: attr-arch-c64x+.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c67x+-c64x.d b/ld/testsuite/ld-tic6x/attr-arch-c67x+-c64x.d
new file mode 100644
index 00000000000..e4c55d9619b
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c67x+-c64x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c67x+ c64x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c67x+.s
+#source: attr-arch-c64x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c67x+-c674x.d b/ld/testsuite/ld-tic6x/attr-arch-c67x+-c674x.d
new file mode 100644
index 00000000000..41207d643af
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c67x+-c674x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c67x+ c674x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c67x+.s
+#source: attr-arch-c674x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c67x+-c67x+.d b/ld/testsuite/ld-tic6x/attr-arch-c67x+-c67x+.d
new file mode 100644
index 00000000000..27b717ba9f6
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c67x+-c67x+.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c67x+ c67x+
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c67x+.s
+#source: attr-arch-c67x+.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C67x\+
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c67x+-c67x.d b/ld/testsuite/ld-tic6x/attr-arch-c67x+-c67x.d
new file mode 100644
index 00000000000..73d23126f2d
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c67x+-c67x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c67x+ c67x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c67x+.s
+#source: attr-arch-c67x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C67x\+
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c67x+.s b/ld/testsuite/ld-tic6x/attr-arch-c67x+.s
new file mode 100644
index 00000000000..f4c22def9de
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c67x+.s
@@ -0,0 +1 @@
+.arch c67x+
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c67x-c62x.d b/ld/testsuite/ld-tic6x/attr-arch-c67x-c62x.d
new file mode 100644
index 00000000000..e0dc26c1ce6
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c67x-c62x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c67x c62x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c67x.s
+#source: attr-arch-c62x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C67x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c67x-c64x+.d b/ld/testsuite/ld-tic6x/attr-arch-c67x-c64x+.d
new file mode 100644
index 00000000000..82a3d12b9ce
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c67x-c64x+.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c67x c64x+
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c67x.s
+#source: attr-arch-c64x+.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c67x-c64x.d b/ld/testsuite/ld-tic6x/attr-arch-c67x-c64x.d
new file mode 100644
index 00000000000..b7e7cba923b
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c67x-c64x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c67x c64x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c67x.s
+#source: attr-arch-c64x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c67x-c674x.d b/ld/testsuite/ld-tic6x/attr-arch-c67x-c674x.d
new file mode 100644
index 00000000000..83e671ca0d6
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c67x-c674x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c67x c674x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c67x.s
+#source: attr-arch-c674x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c67x-c67x+.d b/ld/testsuite/ld-tic6x/attr-arch-c67x-c67x+.d
new file mode 100644
index 00000000000..d51886c333b
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c67x-c67x+.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c67x c67x+
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c67x.s
+#source: attr-arch-c67x+.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C67x\+
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c67x-c67x.d b/ld/testsuite/ld-tic6x/attr-arch-c67x-c67x.d
new file mode 100644
index 00000000000..aaa49fcae7d
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c67x-c67x.d
@@ -0,0 +1,10 @@
+#name: C6X arch attribute merging, c67x c67x
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-arch-c67x.s
+#source: attr-arch-c67x.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_C6XABI_Tag_CPU_arch: C67x
diff --git a/ld/testsuite/ld-tic6x/attr-arch-c67x.s b/ld/testsuite/ld-tic6x/attr-arch-c67x.s
new file mode 100644
index 00000000000..a7e5ba67dd5
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-arch-c67x.s
@@ -0,0 +1 @@
+.arch c67x