aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-tic6x
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2010-11-02 14:36:39 +0000
committerJoseph Myers <joseph@codesourcery.com>2010-11-02 14:36:39 +0000
commit877791769e23126090bab077d41f4d6221a23045 (patch)
treed2bb3fc25263f3ff4f0567b690aa6a453b263da2 /ld/testsuite/ld-tic6x
parent34734a010beee3b56b382dc93249b6cd27c9a373 (diff)
downloadgdb-877791769e23126090bab077d41f4d6221a23045.zip
gdb-877791769e23126090bab077d41f4d6221a23045.tar.gz
gdb-877791769e23126090bab077d41f4d6221a23045.tar.bz2
bfd:
* elf32-tic6x.c (elf32_tic6x_obj_attrs_arg_type): Except for Tag_ABI_compatibility, treat odd tags as strings and even ones as integers. (elf32_tic6x_obj_attrs_order, elf32_tic6x_tag_to_array_alignment, elf32_tic6x_array_alignment_to_tag): New. (elf32_tic6x_merge_attributes): Handle more attributes. Set type for merged attributes. (elf_backend_obj_attrs_order): Define. binutils: * readelf.c (display_tic6x_attribute): Handle more attributes. gas: * config/tc-tic6x.c (OPTION_MPID, OPTION_MPIC, OPTION_MNO_PIC): New enum values. (md_longopts): Add options mpid, mpic and mno-pic. (tic6x_pid_type, tic6x_pid, tic6x_pic, tic6x_pid_type_table, tic6x_pid_types, tic6x_use_pid): New. (md_parse_option): Handle new options. (md_show_usage): Output help text for new options. (tic6x_set_attributes): Set PID and PIC attributes. * doc/as.texinfo: Document -mpid=, -mpic and -mno-pic. * doc/c-tic6x.texi (TIC6X Options): Likewise. gas/testsuite: * gas/tic6x/attr-array-directive-1.d, gas/tic6x/attr-array-directive-1.s, gas/tic6x/attr-array-directive-2.d, gas/tic6x/attr-array-directive-2.s, gas/tic6x/attr-array-directive-3.d, gas/tic6x/attr-array-directive-3.s, gas/tic6x/attr-array-directive-4.d, gas/tic6x/attr-array-directive-4.s, gas/tic6x/attr-conformance-directive-1.d, gas/tic6x/attr-conformance-directive-1.s, gas/tic6x/attr-conformance-directive-2.d, gas/tic6x/attr-conformance-directive-2.s, gas/tic6x/attr-pic-directive-1.d, gas/tic6x/attr-pic-directive-1.s, gas/tic6x/attr-pic-directive-2.d, gas/tic6x/attr-pic-directive-2.s, gas/tic6x/attr-pic-opts-mno-pic.d, gas/tic6x/attr-pic-opts-mpic.d, gas/tic6x/attr-pid-directive-1.d, gas/tic6x/attr-pid-directive-1.s, gas/tic6x/attr-pid-directive-2.d, gas/tic6x/attr-pid-directive-2.s, gas/tic6x/attr-pid-opts-mpid-far.d, gas/tic6x/attr-pid-opts-mpid-near.d, gas/tic6x/attr-pid-opts-mpid-no.d, gas/tic6x/attr-stack-directive-1.d, gas/tic6x/attr-stack-directive-1.s, gas/tic6x/attr-stack-directive-2.d, gas/tic6x/attr-stack-directive-2.s, gas/tic6x/attr-wchar-directive-1.d, gas/tic6x/attr-wchar-directive-1.s, gas/tic6x/attr-wchar-directive-2.d, gas/tic6x/attr-wchar-directive-2.s: New tests. include/elf: * tic6x-attrs.h (Tag_ABI_wchar_t, Tag_ABI_stack_align_needed, Tag_ABI_stack_align_preserved, Tag_ABI_PID, Tag_ABI_PIC, Tag_ABI_array_object_alignment, Tag_ABI_array_object_align_expected, Tag_ABI_conformance): Define. ld/testsuite: * ld-tic6x/attr-array-16-16.d, ld-tic6x/attr-array-16-4.d, ld-tic6x/attr-array-16-416.d, ld-tic6x/attr-array-16-48.d, ld-tic6x/attr-array-16-8.d, ld-tic6x/attr-array-16-816.d, ld-tic6x/attr-array-16.s, ld-tic6x/attr-array-4-16.d, ld-tic6x/attr-array-4-4.d, ld-tic6x/attr-array-4-416.d, ld-tic6x/attr-array-4-48.d, ld-tic6x/attr-array-4-8.d, ld-tic6x/attr-array-4-816.d, ld-tic6x/attr-array-4.s, ld-tic6x/attr-array-416-16.d, ld-tic6x/attr-array-416-4.d, ld-tic6x/attr-array-416-416.d, ld-tic6x/attr-array-416-48.d, ld-tic6x/attr-array-416-8.d, ld-tic6x/attr-array-416-816.d, ld-tic6x/attr-array-416.s, ld-tic6x/attr-array-48-16.d, ld-tic6x/attr-array-48-4.d, ld-tic6x/attr-array-48-416.d, ld-tic6x/attr-array-48-48.d, ld-tic6x/attr-array-48-8.d, ld-tic6x/attr-array-48-816.d, ld-tic6x/attr-array-48.s, ld-tic6x/attr-array-8-16.d, ld-tic6x/attr-array-8-4.d, ld-tic6x/attr-array-8-416.d, ld-tic6x/attr-array-8-48.d, ld-tic6x/attr-array-8-8.d, ld-tic6x/attr-array-8-816.d, ld-tic6x/attr-array-8.s, ld-tic6x/attr-array-816-16.d, ld-tic6x/attr-array-816-4.d, ld-tic6x/attr-array-816-416.d, ld-tic6x/attr-array-816-48.d, ld-tic6x/attr-array-816-8.d, ld-tic6x/attr-array-816-816.d, ld-tic6x/attr-array-816.s, ld-tic6x/attr-conformance-10-10.d, ld-tic6x/attr-conformance-10-11.d, ld-tic6x/attr-conformance-10-none.d, ld-tic6x/attr-conformance-10.s, ld-tic6x/attr-conformance-11-10.d, ld-tic6x/attr-conformance-11-11.d, ld-tic6x/attr-conformance-11-none.d, ld-tic6x/attr-conformance-11.s, ld-tic6x/attr-conformance-none-10.d, ld-tic6x/attr-conformance-none-11.d, ld-tic6x/attr-conformance-none-none.d, ld-tic6x/attr-conformance-none.s, ld-tic6x/attr-pic-0.s, ld-tic6x/attr-pic-00.d, ld-tic6x/attr-pic-01.d, ld-tic6x/attr-pic-1.s, ld-tic6x/attr-pic-10.d, ld-tic6x/attr-pic-11.d, ld-tic6x/attr-pid-0.s, ld-tic6x/attr-pid-00.d, ld-tic6x/attr-pid-01.d, ld-tic6x/attr-pid-02.d, ld-tic6x/attr-pid-1.s, ld-tic6x/attr-pid-10.d, ld-tic6x/attr-pid-11.d, ld-tic6x/attr-pid-12.d, ld-tic6x/attr-pid-2.s, ld-tic6x/attr-pid-20.d, ld-tic6x/attr-pid-21.d, ld-tic6x/attr-pid-22.d, ld-tic6x/attr-stack-16-16.d, ld-tic6x/attr-stack-16-8.d, ld-tic6x/attr-stack-16-816.d, ld-tic6x/attr-stack-16.s, ld-tic6x/attr-stack-8-16.d, ld-tic6x/attr-stack-8-8.d, ld-tic6x/attr-stack-8-816.d, ld-tic6x/attr-stack-8.s, ld-tic6x/attr-stack-816-16.d, ld-tic6x/attr-stack-816-8.d, ld-tic6x/attr-stack-816-816.d, ld-tic6x/attr-stack-816.s, ld-tic6x/attr-wchar-0.s, ld-tic6x/attr-wchar-00.d, ld-tic6x/attr-wchar-01.d, ld-tic6x/attr-wchar-02.d, ld-tic6x/attr-wchar-1.s, ld-tic6x/attr-wchar-10.d, ld-tic6x/attr-wchar-11.d, ld-tic6x/attr-wchar-12.d, ld-tic6x/attr-wchar-2.s, ld-tic6x/attr-wchar-20.d, ld-tic6x/attr-wchar-21.d, ld-tic6x/attr-wchar-22.d: New tests.
Diffstat (limited to 'ld/testsuite/ld-tic6x')
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-16-16.d12
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-16-4.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-16-416.d12
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-16-48.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-16-8.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-16-816.d12
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-16.s2
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-4-16.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-4-4.d12
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-4-416.d12
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-4-48.d12
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-4-8.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-4-816.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-4.s2
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-416-16.d12
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-416-4.d12
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-416-416.d12
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-416-48.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-416-8.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-416-816.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-416.s2
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-48-16.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-48-4.d12
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-48-416.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-48-48.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-48-8.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-48-816.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-48.s2
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-8-16.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-8-4.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-8-416.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-8-48.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-8-8.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-8-816.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-8.s2
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-816-16.d12
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-816-4.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-816-416.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-816-48.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-816-8.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-816-816.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-array-816.s2
-rw-r--r--ld/testsuite/ld-tic6x/attr-conformance-10-10.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-conformance-10-11.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-conformance-10-none.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-conformance-10.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-conformance-11-10.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-conformance-11-11.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-conformance-11-none.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-conformance-11.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-conformance-none-10.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-conformance-none-11.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-conformance-none-none.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-conformance-none.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-pic-0.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-pic-00.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-pic-01.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-pic-1.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-pic-10.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-pic-11.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-pid-0.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-pid-00.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-pid-01.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-pid-02.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-pid-1.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-pid-10.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-pid-11.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-pid-12.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-pid-2.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-pid-20.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-pid-21.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-pid-22.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-stack-16-16.d12
-rw-r--r--ld/testsuite/ld-tic6x/attr-stack-16-8.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-stack-16-816.d12
-rw-r--r--ld/testsuite/ld-tic6x/attr-stack-16.s2
-rw-r--r--ld/testsuite/ld-tic6x/attr-stack-8-16.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-stack-8-8.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-stack-8-816.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-stack-8.s2
-rw-r--r--ld/testsuite/ld-tic6x/attr-stack-816-16.d12
-rw-r--r--ld/testsuite/ld-tic6x/attr-stack-816-8.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-stack-816-816.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-stack-816.s2
-rw-r--r--ld/testsuite/ld-tic6x/attr-wchar-0.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-wchar-00.d10
-rw-r--r--ld/testsuite/ld-tic6x/attr-wchar-01.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-wchar-02.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-wchar-1.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-wchar-10.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-wchar-11.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-wchar-12.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-wchar-2.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-wchar-20.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-wchar-21.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-wchar-22.d11
96 files changed, 747 insertions, 0 deletions
diff --git a/ld/testsuite/ld-tic6x/attr-array-16-16.d b/ld/testsuite/ld-tic6x/attr-array-16-16.d
new file mode 100644
index 0000000..d39e045
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-16-16.d
@@ -0,0 +1,12 @@
+#name: C6X array attribute merging, 16 16
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-16.s
+#source: attr-array-16.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_alignment: 16-byte
+ Tag_ABI_array_object_align_expected: 16-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-16-4.d b/ld/testsuite/ld-tic6x/attr-array-16-4.d
new file mode 100644
index 0000000..1d38f2a
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-16-4.d
@@ -0,0 +1,6 @@
+#name: C6X array attribute merging, 16 4
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-16.s
+#source: attr-array-4.s
+#error: .*requires more array alignment than .* preserves
diff --git a/ld/testsuite/ld-tic6x/attr-array-16-416.d b/ld/testsuite/ld-tic6x/attr-array-16-416.d
new file mode 100644
index 0000000..ec74ed5
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-16-416.d
@@ -0,0 +1,12 @@
+#name: C6X array attribute merging, 16 416
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-16.s
+#source: attr-array-416.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_alignment: 16-byte
+ Tag_ABI_array_object_align_expected: 16-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-16-48.d b/ld/testsuite/ld-tic6x/attr-array-16-48.d
new file mode 100644
index 0000000..5ef2908
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-16-48.d
@@ -0,0 +1,6 @@
+#name: C6X array attribute merging, 16 48
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-16.s
+#source: attr-array-48.s
+#error: .*requires more array alignment than .* preserves
diff --git a/ld/testsuite/ld-tic6x/attr-array-16-8.d b/ld/testsuite/ld-tic6x/attr-array-16-8.d
new file mode 100644
index 0000000..e8228f0
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-16-8.d
@@ -0,0 +1,6 @@
+#name: C6X array attribute merging, 16 8
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-16.s
+#source: attr-array-8.s
+#error: .*requires more array alignment than .* preserves
diff --git a/ld/testsuite/ld-tic6x/attr-array-16-816.d b/ld/testsuite/ld-tic6x/attr-array-16-816.d
new file mode 100644
index 0000000..14bc9846
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-16-816.d
@@ -0,0 +1,12 @@
+#name: C6X array attribute merging, 16 816
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-16.s
+#source: attr-array-816.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_alignment: 16-byte
+ Tag_ABI_array_object_align_expected: 16-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-16.s b/ld/testsuite/ld-tic6x/attr-array-16.s
new file mode 100644
index 0000000..70401ff
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-16.s
@@ -0,0 +1,2 @@
+.c6xabi_attribute Tag_ABI_array_object_align_expected, 2
+.c6xabi_attribute Tag_ABI_array_object_alignment, 2
diff --git a/ld/testsuite/ld-tic6x/attr-array-4-16.d b/ld/testsuite/ld-tic6x/attr-array-4-16.d
new file mode 100644
index 0000000..3c2c138
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-4-16.d
@@ -0,0 +1,6 @@
+#name: C6X array attribute merging, 4 16
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-4.s
+#source: attr-array-16.s
+#error: .*requires more array alignment than .* preserves
diff --git a/ld/testsuite/ld-tic6x/attr-array-4-4.d b/ld/testsuite/ld-tic6x/attr-array-4-4.d
new file mode 100644
index 0000000..920ff10
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-4-4.d
@@ -0,0 +1,12 @@
+#name: C6X array attribute merging, 4 4
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-4.s
+#source: attr-array-4.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_alignment: 4-byte
+ Tag_ABI_array_object_align_expected: 4-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-4-416.d b/ld/testsuite/ld-tic6x/attr-array-4-416.d
new file mode 100644
index 0000000..1b5e516
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-4-416.d
@@ -0,0 +1,12 @@
+#name: C6X array attribute merging, 4 416
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-4.s
+#source: attr-array-416.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_alignment: 4-byte
+ Tag_ABI_array_object_align_expected: 4-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-4-48.d b/ld/testsuite/ld-tic6x/attr-array-4-48.d
new file mode 100644
index 0000000..e998162
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-4-48.d
@@ -0,0 +1,12 @@
+#name: C6X array attribute merging, 4 48
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-4.s
+#source: attr-array-48.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_alignment: 4-byte
+ Tag_ABI_array_object_align_expected: 4-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-4-8.d b/ld/testsuite/ld-tic6x/attr-array-4-8.d
new file mode 100644
index 0000000..d8b41c7
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-4-8.d
@@ -0,0 +1,6 @@
+#name: C6X array attribute merging, 4 8
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-4.s
+#source: attr-array-8.s
+#error: .*requires more array alignment than .* preserves
diff --git a/ld/testsuite/ld-tic6x/attr-array-4-816.d b/ld/testsuite/ld-tic6x/attr-array-4-816.d
new file mode 100644
index 0000000..a4dcc01
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-4-816.d
@@ -0,0 +1,6 @@
+#name: C6X array attribute merging, 4 816
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-4.s
+#source: attr-array-816.s
+#error: .*requires more array alignment than .* preserves
diff --git a/ld/testsuite/ld-tic6x/attr-array-4.s b/ld/testsuite/ld-tic6x/attr-array-4.s
new file mode 100644
index 0000000..abaa25f
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-4.s
@@ -0,0 +1,2 @@
+.c6xabi_attribute Tag_ABI_array_object_align_expected, 1
+.c6xabi_attribute Tag_ABI_array_object_alignment, 1
diff --git a/ld/testsuite/ld-tic6x/attr-array-416-16.d b/ld/testsuite/ld-tic6x/attr-array-416-16.d
new file mode 100644
index 0000000..8168658
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-416-16.d
@@ -0,0 +1,12 @@
+#name: C6X array attribute merging, 416 16
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-416.s
+#source: attr-array-16.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_alignment: 16-byte
+ Tag_ABI_array_object_align_expected: 16-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-416-4.d b/ld/testsuite/ld-tic6x/attr-array-416-4.d
new file mode 100644
index 0000000..53d4bc7
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-416-4.d
@@ -0,0 +1,12 @@
+#name: C6X array attribute merging, 416 4
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-416.s
+#source: attr-array-4.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_alignment: 4-byte
+ Tag_ABI_array_object_align_expected: 4-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-416-416.d b/ld/testsuite/ld-tic6x/attr-array-416-416.d
new file mode 100644
index 0000000..9ca864d
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-416-416.d
@@ -0,0 +1,12 @@
+#name: C6X array attribute merging, 416 416
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-416.s
+#source: attr-array-416.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_alignment: 16-byte
+ Tag_ABI_array_object_align_expected: 4-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-416-48.d b/ld/testsuite/ld-tic6x/attr-array-416-48.d
new file mode 100644
index 0000000..760a023
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-416-48.d
@@ -0,0 +1,11 @@
+#name: C6X array attribute merging, 416 48
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-416.s
+#source: attr-array-48.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_align_expected: 4-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-416-8.d b/ld/testsuite/ld-tic6x/attr-array-416-8.d
new file mode 100644
index 0000000..58a4325
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-416-8.d
@@ -0,0 +1,10 @@
+#name: C6X array attribute merging, 416 8
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-416.s
+#source: attr-array-8.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-array-416-816.d b/ld/testsuite/ld-tic6x/attr-array-416-816.d
new file mode 100644
index 0000000..12b4abc
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-416-816.d
@@ -0,0 +1,11 @@
+#name: C6X array attribute merging, 416 816
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-416.s
+#source: attr-array-816.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_alignment: 16-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-416.s b/ld/testsuite/ld-tic6x/attr-array-416.s
new file mode 100644
index 0000000..a9cba9d
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-416.s
@@ -0,0 +1,2 @@
+.c6xabi_attribute Tag_ABI_array_object_align_expected, 1
+.c6xabi_attribute Tag_ABI_array_object_alignment, 2
diff --git a/ld/testsuite/ld-tic6x/attr-array-48-16.d b/ld/testsuite/ld-tic6x/attr-array-48-16.d
new file mode 100644
index 0000000..68fa058
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-48-16.d
@@ -0,0 +1,6 @@
+#name: C6X array attribute merging, 48 16
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-48.s
+#source: attr-array-16.s
+#error: .*requires more array alignment than .* preserves
diff --git a/ld/testsuite/ld-tic6x/attr-array-48-4.d b/ld/testsuite/ld-tic6x/attr-array-48-4.d
new file mode 100644
index 0000000..76faefa
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-48-4.d
@@ -0,0 +1,12 @@
+#name: C6X array attribute merging, 48 4
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-48.s
+#source: attr-array-4.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_alignment: 4-byte
+ Tag_ABI_array_object_align_expected: 4-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-48-416.d b/ld/testsuite/ld-tic6x/attr-array-48-416.d
new file mode 100644
index 0000000..c02d8f9
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-48-416.d
@@ -0,0 +1,11 @@
+#name: C6X array attribute merging, 48 416
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-48.s
+#source: attr-array-416.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_align_expected: 4-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-48-48.d b/ld/testsuite/ld-tic6x/attr-array-48-48.d
new file mode 100644
index 0000000..9801173
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-48-48.d
@@ -0,0 +1,11 @@
+#name: C6X array attribute merging, 48 48
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-48.s
+#source: attr-array-48.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_align_expected: 4-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-48-8.d b/ld/testsuite/ld-tic6x/attr-array-48-8.d
new file mode 100644
index 0000000..cd70604
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-48-8.d
@@ -0,0 +1,10 @@
+#name: C6X array attribute merging, 48 8
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-48.s
+#source: attr-array-8.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-array-48-816.d b/ld/testsuite/ld-tic6x/attr-array-48-816.d
new file mode 100644
index 0000000..795d839
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-48-816.d
@@ -0,0 +1,10 @@
+#name: C6X array attribute merging, 48 816
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-48.s
+#source: attr-array-816.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-array-48.s b/ld/testsuite/ld-tic6x/attr-array-48.s
new file mode 100644
index 0000000..a1cb22a
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-48.s
@@ -0,0 +1,2 @@
+.c6xabi_attribute Tag_ABI_array_object_align_expected, 1
+.c6xabi_attribute Tag_ABI_array_object_alignment, 0
diff --git a/ld/testsuite/ld-tic6x/attr-array-8-16.d b/ld/testsuite/ld-tic6x/attr-array-8-16.d
new file mode 100644
index 0000000..0d6bafb
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-8-16.d
@@ -0,0 +1,6 @@
+#name: C6X array attribute merging, 8 16
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-8.s
+#source: attr-array-16.s
+#error: .*requires more array alignment than .* preserves
diff --git a/ld/testsuite/ld-tic6x/attr-array-8-4.d b/ld/testsuite/ld-tic6x/attr-array-8-4.d
new file mode 100644
index 0000000..c7a6033
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-8-4.d
@@ -0,0 +1,6 @@
+#name: C6X array attribute merging, 8 4
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-8.s
+#source: attr-array-4.s
+#error: .*requires more array alignment than .* preserves
diff --git a/ld/testsuite/ld-tic6x/attr-array-8-416.d b/ld/testsuite/ld-tic6x/attr-array-8-416.d
new file mode 100644
index 0000000..f5f5261
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-8-416.d
@@ -0,0 +1,10 @@
+#name: C6X array attribute merging, 8 416
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-8.s
+#source: attr-array-416.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-array-8-48.d b/ld/testsuite/ld-tic6x/attr-array-8-48.d
new file mode 100644
index 0000000..506ec4c
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-8-48.d
@@ -0,0 +1,10 @@
+#name: C6X array attribute merging, 8 48
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-8.s
+#source: attr-array-48.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-array-8-8.d b/ld/testsuite/ld-tic6x/attr-array-8-8.d
new file mode 100644
index 0000000..86329f3
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-8-8.d
@@ -0,0 +1,10 @@
+#name: C6X array attribute merging, 8 8
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-8.s
+#source: attr-array-8.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-array-8-816.d b/ld/testsuite/ld-tic6x/attr-array-8-816.d
new file mode 100644
index 0000000..ecb9374
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-8-816.d
@@ -0,0 +1,10 @@
+#name: C6X array attribute merging, 8 816
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-8.s
+#source: attr-array-816.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-array-8.s b/ld/testsuite/ld-tic6x/attr-array-8.s
new file mode 100644
index 0000000..2d69687
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-8.s
@@ -0,0 +1,2 @@
+.c6xabi_attribute Tag_ABI_array_object_align_expected, 0
+.c6xabi_attribute Tag_ABI_array_object_alignment, 0
diff --git a/ld/testsuite/ld-tic6x/attr-array-816-16.d b/ld/testsuite/ld-tic6x/attr-array-816-16.d
new file mode 100644
index 0000000..2ef2f8e
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-816-16.d
@@ -0,0 +1,12 @@
+#name: C6X array attribute merging, 816 16
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-816.s
+#source: attr-array-16.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_alignment: 16-byte
+ Tag_ABI_array_object_align_expected: 16-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-816-4.d b/ld/testsuite/ld-tic6x/attr-array-816-4.d
new file mode 100644
index 0000000..bd06a2d
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-816-4.d
@@ -0,0 +1,6 @@
+#name: C6X array attribute merging, 816 4
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-816.s
+#source: attr-array-4.s
+#error: .*requires more array alignment than .* preserves
diff --git a/ld/testsuite/ld-tic6x/attr-array-816-416.d b/ld/testsuite/ld-tic6x/attr-array-816-416.d
new file mode 100644
index 0000000..9563f7e
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-816-416.d
@@ -0,0 +1,11 @@
+#name: C6X array attribute merging, 816 416
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-816.s
+#source: attr-array-416.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_alignment: 16-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-816-48.d b/ld/testsuite/ld-tic6x/attr-array-816-48.d
new file mode 100644
index 0000000..e965643
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-816-48.d
@@ -0,0 +1,10 @@
+#name: C6X array attribute merging, 816 48
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-816.s
+#source: attr-array-48.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-array-816-8.d b/ld/testsuite/ld-tic6x/attr-array-816-8.d
new file mode 100644
index 0000000..7a29cc5
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-816-8.d
@@ -0,0 +1,10 @@
+#name: C6X array attribute merging, 816 8
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-816.s
+#source: attr-array-8.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-array-816-816.d b/ld/testsuite/ld-tic6x/attr-array-816-816.d
new file mode 100644
index 0000000..0888eae
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-816-816.d
@@ -0,0 +1,11 @@
+#name: C6X array attribute merging, 816 816
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-array-816.s
+#source: attr-array-816.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_array_object_alignment: 16-byte
diff --git a/ld/testsuite/ld-tic6x/attr-array-816.s b/ld/testsuite/ld-tic6x/attr-array-816.s
new file mode 100644
index 0000000..49ac948
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-array-816.s
@@ -0,0 +1,2 @@
+.c6xabi_attribute Tag_ABI_array_object_align_expected, 0
+.c6xabi_attribute Tag_ABI_array_object_alignment, 2
diff --git a/ld/testsuite/ld-tic6x/attr-conformance-10-10.d b/ld/testsuite/ld-tic6x/attr-conformance-10-10.d
new file mode 100644
index 0000000..a16e503
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-conformance-10-10.d
@@ -0,0 +1,11 @@
+#name: C6X conformance attribute merging, 10 10
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-conformance-10.s
+#source: attr-conformance-10.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ABI_conformance: "1.0"
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-conformance-10-11.d b/ld/testsuite/ld-tic6x/attr-conformance-10-11.d
new file mode 100644
index 0000000..94993d9
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-conformance-10-11.d
@@ -0,0 +1,10 @@
+#name: C6X conformance attribute merging, 10 11
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-conformance-10.s
+#source: attr-conformance-11.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-conformance-10-none.d b/ld/testsuite/ld-tic6x/attr-conformance-10-none.d
new file mode 100644
index 0000000..2de2b50
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-conformance-10-none.d
@@ -0,0 +1,10 @@
+#name: C6X conformance attribute merging, 10 none
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-conformance-10.s
+#source: attr-conformance-none.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-conformance-10.s b/ld/testsuite/ld-tic6x/attr-conformance-10.s
new file mode 100644
index 0000000..2964084
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-conformance-10.s
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_conformance, "1.0"
diff --git a/ld/testsuite/ld-tic6x/attr-conformance-11-10.d b/ld/testsuite/ld-tic6x/attr-conformance-11-10.d
new file mode 100644
index 0000000..34ebd26
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-conformance-11-10.d
@@ -0,0 +1,10 @@
+#name: C6X conformance attribute merging, 11 10
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-conformance-11.s
+#source: attr-conformance-10.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-conformance-11-11.d b/ld/testsuite/ld-tic6x/attr-conformance-11-11.d
new file mode 100644
index 0000000..43ff4a2
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-conformance-11-11.d
@@ -0,0 +1,11 @@
+#name: C6X conformance attribute merging, 11 11
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-conformance-11.s
+#source: attr-conformance-11.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ABI_conformance: "1.1"
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-conformance-11-none.d b/ld/testsuite/ld-tic6x/attr-conformance-11-none.d
new file mode 100644
index 0000000..ad5c58e
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-conformance-11-none.d
@@ -0,0 +1,10 @@
+#name: C6X conformance attribute merging, 11 none
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-conformance-11.s
+#source: attr-conformance-none.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-conformance-11.s b/ld/testsuite/ld-tic6x/attr-conformance-11.s
new file mode 100644
index 0000000..d33640c
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-conformance-11.s
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_conformance, "1.1"
diff --git a/ld/testsuite/ld-tic6x/attr-conformance-none-10.d b/ld/testsuite/ld-tic6x/attr-conformance-none-10.d
new file mode 100644
index 0000000..94bf8db
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-conformance-none-10.d
@@ -0,0 +1,10 @@
+#name: C6X conformance attribute merging, none 10
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-conformance-none.s
+#source: attr-conformance-10.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-conformance-none-11.d b/ld/testsuite/ld-tic6x/attr-conformance-none-11.d
new file mode 100644
index 0000000..e9ff4c8
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-conformance-none-11.d
@@ -0,0 +1,10 @@
+#name: C6X conformance attribute merging, none 11
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-conformance-none.s
+#source: attr-conformance-11.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-conformance-none-none.d b/ld/testsuite/ld-tic6x/attr-conformance-none-none.d
new file mode 100644
index 0000000..6856355
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-conformance-none-none.d
@@ -0,0 +1,10 @@
+#name: C6X conformance attribute merging, none none
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-conformance-none.s
+#source: attr-conformance-none.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-conformance-none.s b/ld/testsuite/ld-tic6x/attr-conformance-none.s
new file mode 100644
index 0000000..ffd9c71
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-conformance-none.s
@@ -0,0 +1 @@
+# No conformance attribute.
diff --git a/ld/testsuite/ld-tic6x/attr-pic-0.s b/ld/testsuite/ld-tic6x/attr-pic-0.s
new file mode 100644
index 0000000..64b8ec9
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pic-0.s
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_PIC, 0
diff --git a/ld/testsuite/ld-tic6x/attr-pic-00.d b/ld/testsuite/ld-tic6x/attr-pic-00.d
new file mode 100644
index 0000000..b8b3f52
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pic-00.d
@@ -0,0 +1,10 @@
+#name: C6X PIC attribute merging, 0 0
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-pic-0.s
+#source: attr-pic-0.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-pic-01.d b/ld/testsuite/ld-tic6x/attr-pic-01.d
new file mode 100644
index 0000000..a04713f
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pic-01.d
@@ -0,0 +1,6 @@
+#name: C6X PIC attribute merging, 0 1
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-pic-0.s
+#source: attr-pic-1.s
+#warning: .*differ in position-dependence of code addressing
diff --git a/ld/testsuite/ld-tic6x/attr-pic-1.s b/ld/testsuite/ld-tic6x/attr-pic-1.s
new file mode 100644
index 0000000..2bab373
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pic-1.s
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_PIC, 1
diff --git a/ld/testsuite/ld-tic6x/attr-pic-10.d b/ld/testsuite/ld-tic6x/attr-pic-10.d
new file mode 100644
index 0000000..bc781c4
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pic-10.d
@@ -0,0 +1,6 @@
+#name: C6X PIC attribute merging, 1 0
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-pic-1.s
+#source: attr-pic-0.s
+#warning: .*differ in position-dependence of code addressing
diff --git a/ld/testsuite/ld-tic6x/attr-pic-11.d b/ld/testsuite/ld-tic6x/attr-pic-11.d
new file mode 100644
index 0000000..6fd720d
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pic-11.d
@@ -0,0 +1,11 @@
+#name: C6X PIC attribute merging, 1 1
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-pic-1.s
+#source: attr-pic-1.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_PIC: Code addressing position-independent
diff --git a/ld/testsuite/ld-tic6x/attr-pid-0.s b/ld/testsuite/ld-tic6x/attr-pid-0.s
new file mode 100644
index 0000000..d2ea7ad
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pid-0.s
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_PID, 0
diff --git a/ld/testsuite/ld-tic6x/attr-pid-00.d b/ld/testsuite/ld-tic6x/attr-pid-00.d
new file mode 100644
index 0000000..573cfda
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pid-00.d
@@ -0,0 +1,10 @@
+#name: C6X PID attribute merging, 0 0
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-pid-0.s
+#source: attr-pid-0.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-pid-01.d b/ld/testsuite/ld-tic6x/attr-pid-01.d
new file mode 100644
index 0000000..5c32e15
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pid-01.d
@@ -0,0 +1,6 @@
+#name: C6X PID attribute merging, 0 1
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-pid-0.s
+#source: attr-pid-1.s
+#warning: .*differ in position-dependence of data addressing
diff --git a/ld/testsuite/ld-tic6x/attr-pid-02.d b/ld/testsuite/ld-tic6x/attr-pid-02.d
new file mode 100644
index 0000000..d155b56
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pid-02.d
@@ -0,0 +1,6 @@
+#name: C6X PID attribute merging, 0 2
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-pid-0.s
+#source: attr-pid-2.s
+#warning: .*differ in position-dependence of data addressing
diff --git a/ld/testsuite/ld-tic6x/attr-pid-1.s b/ld/testsuite/ld-tic6x/attr-pid-1.s
new file mode 100644
index 0000000..b973177
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pid-1.s
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_PID, 1
diff --git a/ld/testsuite/ld-tic6x/attr-pid-10.d b/ld/testsuite/ld-tic6x/attr-pid-10.d
new file mode 100644
index 0000000..edb8a65
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pid-10.d
@@ -0,0 +1,6 @@
+#name: C6X PID attribute merging, 1 0
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-pid-1.s
+#source: attr-pid-0.s
+#warning: .*differ in position-dependence of data addressing
diff --git a/ld/testsuite/ld-tic6x/attr-pid-11.d b/ld/testsuite/ld-tic6x/attr-pid-11.d
new file mode 100644
index 0000000..7498282
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pid-11.d
@@ -0,0 +1,11 @@
+#name: C6X PID attribute merging, 1 1
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-pid-1.s
+#source: attr-pid-1.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_PID: Data addressing position-independent, GOT near DP
diff --git a/ld/testsuite/ld-tic6x/attr-pid-12.d b/ld/testsuite/ld-tic6x/attr-pid-12.d
new file mode 100644
index 0000000..138ae88
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pid-12.d
@@ -0,0 +1,6 @@
+#name: C6X PID attribute merging, 1 2
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-pid-1.s
+#source: attr-pid-2.s
+#warning: .*differ in position-dependence of data addressing
diff --git a/ld/testsuite/ld-tic6x/attr-pid-2.s b/ld/testsuite/ld-tic6x/attr-pid-2.s
new file mode 100644
index 0000000..f556188
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pid-2.s
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_PID, 2
diff --git a/ld/testsuite/ld-tic6x/attr-pid-20.d b/ld/testsuite/ld-tic6x/attr-pid-20.d
new file mode 100644
index 0000000..ce319bd
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pid-20.d
@@ -0,0 +1,6 @@
+#name: C6X PID attribute merging, 2 0
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-pid-2.s
+#source: attr-pid-0.s
+#warning: .*differ in position-dependence of data addressing
diff --git a/ld/testsuite/ld-tic6x/attr-pid-21.d b/ld/testsuite/ld-tic6x/attr-pid-21.d
new file mode 100644
index 0000000..7097db6
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pid-21.d
@@ -0,0 +1,6 @@
+#name: C6X PID attribute merging, 2 1
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-pid-2.s
+#source: attr-pid-1.s
+#warning: .*differ in position-dependence of data addressing
diff --git a/ld/testsuite/ld-tic6x/attr-pid-22.d b/ld/testsuite/ld-tic6x/attr-pid-22.d
new file mode 100644
index 0000000..7a3fe47
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-pid-22.d
@@ -0,0 +1,11 @@
+#name: C6X PID attribute merging, 2 2
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-pid-2.s
+#source: attr-pid-2.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_PID: Data addressing position-independent, GOT far from DP
diff --git a/ld/testsuite/ld-tic6x/attr-stack-16-16.d b/ld/testsuite/ld-tic6x/attr-stack-16-16.d
new file mode 100644
index 0000000..8eb94bd
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-stack-16-16.d
@@ -0,0 +1,12 @@
+#name: C6X stack attribute merging, 16 16
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-stack-16.s
+#source: attr-stack-16.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_stack_align_needed: 16-byte
+ Tag_ABI_stack_align_preserved: 16-byte
diff --git a/ld/testsuite/ld-tic6x/attr-stack-16-8.d b/ld/testsuite/ld-tic6x/attr-stack-16-8.d
new file mode 100644
index 0000000..291a368
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-stack-16-8.d
@@ -0,0 +1,6 @@
+#name: C6X stack attribute merging, 16 8
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-stack-16.s
+#source: attr-stack-8.s
+#error: .*requires more stack alignment than .* preserves
diff --git a/ld/testsuite/ld-tic6x/attr-stack-16-816.d b/ld/testsuite/ld-tic6x/attr-stack-16-816.d
new file mode 100644
index 0000000..cbd384f
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-stack-16-816.d
@@ -0,0 +1,12 @@
+#name: C6X stack attribute merging, 16 816
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-stack-16.s
+#source: attr-stack-816.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_stack_align_needed: 16-byte
+ Tag_ABI_stack_align_preserved: 16-byte
diff --git a/ld/testsuite/ld-tic6x/attr-stack-16.s b/ld/testsuite/ld-tic6x/attr-stack-16.s
new file mode 100644
index 0000000..b1e492a
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-stack-16.s
@@ -0,0 +1,2 @@
+.c6xabi_attribute Tag_ABI_stack_align_needed, 1
+.c6xabi_attribute Tag_ABI_stack_align_preserved, 1
diff --git a/ld/testsuite/ld-tic6x/attr-stack-8-16.d b/ld/testsuite/ld-tic6x/attr-stack-8-16.d
new file mode 100644
index 0000000..9e52e92
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-stack-8-16.d
@@ -0,0 +1,6 @@
+#name: C6X stack attribute merging, 8 16
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-stack-8.s
+#source: attr-stack-16.s
+#error: .*requires more stack alignment than .* preserves
diff --git a/ld/testsuite/ld-tic6x/attr-stack-8-8.d b/ld/testsuite/ld-tic6x/attr-stack-8-8.d
new file mode 100644
index 0000000..1a8cb62
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-stack-8-8.d
@@ -0,0 +1,10 @@
+#name: C6X stack attribute merging, 8 8
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-stack-8.s
+#source: attr-stack-8.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-stack-8-816.d b/ld/testsuite/ld-tic6x/attr-stack-8-816.d
new file mode 100644
index 0000000..89a0740
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-stack-8-816.d
@@ -0,0 +1,10 @@
+#name: C6X stack attribute merging, 8 816
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-stack-8.s
+#source: attr-stack-816.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-stack-8.s b/ld/testsuite/ld-tic6x/attr-stack-8.s
new file mode 100644
index 0000000..ce63951
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-stack-8.s
@@ -0,0 +1,2 @@
+.c6xabi_attribute Tag_ABI_stack_align_needed, 0
+.c6xabi_attribute Tag_ABI_stack_align_preserved, 0
diff --git a/ld/testsuite/ld-tic6x/attr-stack-816-16.d b/ld/testsuite/ld-tic6x/attr-stack-816-16.d
new file mode 100644
index 0000000..da8ca3b
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-stack-816-16.d
@@ -0,0 +1,12 @@
+#name: C6X stack attribute merging, 816 16
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-stack-816.s
+#source: attr-stack-16.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_stack_align_needed: 16-byte
+ Tag_ABI_stack_align_preserved: 16-byte
diff --git a/ld/testsuite/ld-tic6x/attr-stack-816-8.d b/ld/testsuite/ld-tic6x/attr-stack-816-8.d
new file mode 100644
index 0000000..fe8630e
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-stack-816-8.d
@@ -0,0 +1,10 @@
+#name: C6X stack attribute merging, 816 8
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-stack-816.s
+#source: attr-stack-8.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-stack-816-816.d b/ld/testsuite/ld-tic6x/attr-stack-816-816.d
new file mode 100644
index 0000000..0ab01ac
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-stack-816-816.d
@@ -0,0 +1,11 @@
+#name: C6X stack attribute merging, 816 816
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-stack-816.s
+#source: attr-stack-816.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_stack_align_preserved: 16-byte
diff --git a/ld/testsuite/ld-tic6x/attr-stack-816.s b/ld/testsuite/ld-tic6x/attr-stack-816.s
new file mode 100644
index 0000000..46295d2
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-stack-816.s
@@ -0,0 +1,2 @@
+.c6xabi_attribute Tag_ABI_stack_align_needed, 0
+.c6xabi_attribute Tag_ABI_stack_align_preserved, 1
diff --git a/ld/testsuite/ld-tic6x/attr-wchar-0.s b/ld/testsuite/ld-tic6x/attr-wchar-0.s
new file mode 100644
index 0000000..5427103
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-wchar-0.s
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_wchar_t, 0
diff --git a/ld/testsuite/ld-tic6x/attr-wchar-00.d b/ld/testsuite/ld-tic6x/attr-wchar-00.d
new file mode 100644
index 0000000..3f5feae
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-wchar-00.d
@@ -0,0 +1,10 @@
+#name: C6X wchar_t attribute merging, 0 0
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-wchar-0.s
+#source: attr-wchar-0.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-wchar-01.d b/ld/testsuite/ld-tic6x/attr-wchar-01.d
new file mode 100644
index 0000000..e32ded6
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-wchar-01.d
@@ -0,0 +1,11 @@
+#name: C6X wchar_t attribute merging, 0 1
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-wchar-0.s
+#source: attr-wchar-1.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_wchar_t: 2 bytes
diff --git a/ld/testsuite/ld-tic6x/attr-wchar-02.d b/ld/testsuite/ld-tic6x/attr-wchar-02.d
new file mode 100644
index 0000000..57ed66b
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-wchar-02.d
@@ -0,0 +1,11 @@
+#name: C6X wchar_t attribute merging, 0 2
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-wchar-0.s
+#source: attr-wchar-2.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_wchar_t: 4 bytes
diff --git a/ld/testsuite/ld-tic6x/attr-wchar-1.s b/ld/testsuite/ld-tic6x/attr-wchar-1.s
new file mode 100644
index 0000000..69d1186
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-wchar-1.s
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_wchar_t, 1
diff --git a/ld/testsuite/ld-tic6x/attr-wchar-10.d b/ld/testsuite/ld-tic6x/attr-wchar-10.d
new file mode 100644
index 0000000..c476859
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-wchar-10.d
@@ -0,0 +1,11 @@
+#name: C6X wchar_t attribute merging, 1 0
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-wchar-1.s
+#source: attr-wchar-0.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_wchar_t: 2 bytes
diff --git a/ld/testsuite/ld-tic6x/attr-wchar-11.d b/ld/testsuite/ld-tic6x/attr-wchar-11.d
new file mode 100644
index 0000000..5105d19
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-wchar-11.d
@@ -0,0 +1,11 @@
+#name: C6X wchar_t attribute merging, 1 1
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-wchar-1.s
+#source: attr-wchar-1.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_wchar_t: 2 bytes
diff --git a/ld/testsuite/ld-tic6x/attr-wchar-12.d b/ld/testsuite/ld-tic6x/attr-wchar-12.d
new file mode 100644
index 0000000..a0d3bd8
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-wchar-12.d
@@ -0,0 +1,6 @@
+#name: C6X wchar_t attribute merging, 1 2
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-wchar-1.s
+#source: attr-wchar-2.s
+#warning: .*differ in wchar_t size
diff --git a/ld/testsuite/ld-tic6x/attr-wchar-2.s b/ld/testsuite/ld-tic6x/attr-wchar-2.s
new file mode 100644
index 0000000..cf87e4c
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-wchar-2.s
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_wchar_t, 2
diff --git a/ld/testsuite/ld-tic6x/attr-wchar-20.d b/ld/testsuite/ld-tic6x/attr-wchar-20.d
new file mode 100644
index 0000000..9a2b356
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-wchar-20.d
@@ -0,0 +1,11 @@
+#name: C6X wchar_t attribute merging, 2 0
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-wchar-2.s
+#source: attr-wchar-0.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_wchar_t: 4 bytes
diff --git a/ld/testsuite/ld-tic6x/attr-wchar-21.d b/ld/testsuite/ld-tic6x/attr-wchar-21.d
new file mode 100644
index 0000000..60d06f1
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-wchar-21.d
@@ -0,0 +1,6 @@
+#name: C6X wchar_t attribute merging, 2 1
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-wchar-2.s
+#source: attr-wchar-1.s
+#warning: .*differ in wchar_t size
diff --git a/ld/testsuite/ld-tic6x/attr-wchar-22.d b/ld/testsuite/ld-tic6x/attr-wchar-22.d
new file mode 100644
index 0000000..7500a31
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-wchar-22.d
@@ -0,0 +1,11 @@
+#name: C6X wchar_t attribute merging, 2 2
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-wchar-2.s
+#source: attr-wchar-2.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+ Tag_ISA: C674x
+ Tag_ABI_wchar_t: 4 bytes