bfd:
authorJoseph Myers <joseph@codesourcery.com>
Tue, 2 Nov 2010 14:36:39 +0000 (14:36 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Tue, 2 Nov 2010 14:36:39 +0000 (14:36 +0000)
* 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.

141 files changed:
bfd/ChangeLog
bfd/elf32-tic6x.c
binutils/ChangeLog
binutils/readelf.c
gas/ChangeLog
gas/config/tc-tic6x.c
gas/doc/as.texinfo
gas/doc/c-tic6x.texi
gas/testsuite/ChangeLog
gas/testsuite/gas/tic6x/attr-array-directive-1.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-array-directive-1.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-array-directive-2.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-array-directive-2.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-array-directive-3.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-array-directive-3.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-array-directive-4.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-array-directive-4.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-conformance-directive-1.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-conformance-directive-1.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-conformance-directive-2.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-conformance-directive-2.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-pic-directive-1.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-pic-directive-1.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-pic-directive-2.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-pic-directive-2.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-pic-opts-mno-pic.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-pic-opts-mpic.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-pid-directive-1.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-pid-directive-1.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-pid-directive-2.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-pid-directive-2.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-pid-opts-mpid-far.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-pid-opts-mpid-near.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-pid-opts-mpid-no.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-stack-directive-1.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-stack-directive-1.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-stack-directive-2.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-stack-directive-2.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-wchar-directive-1.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-wchar-directive-1.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-wchar-directive-2.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-wchar-directive-2.s [new file with mode: 0644]
include/elf/ChangeLog
include/elf/tic6x-attrs.h
ld/testsuite/ChangeLog
ld/testsuite/ld-tic6x/attr-array-16-16.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-16-4.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-16-416.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-16-48.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-16-8.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-16-816.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-16.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-4-16.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-4-4.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-4-416.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-4-48.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-4-8.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-4-816.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-4.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-416-16.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-416-4.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-416-416.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-416-48.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-416-8.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-416-816.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-416.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-48-16.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-48-4.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-48-416.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-48-48.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-48-8.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-48-816.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-48.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-8-16.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-8-4.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-8-416.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-8-48.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-8-8.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-8-816.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-8.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-816-16.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-816-4.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-816-416.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-816-48.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-816-8.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-816-816.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-array-816.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-conformance-10-10.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-conformance-10-11.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-conformance-10-none.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-conformance-10.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-conformance-11-10.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-conformance-11-11.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-conformance-11-none.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-conformance-11.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-conformance-none-10.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-conformance-none-11.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-conformance-none-none.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-conformance-none.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pic-0.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pic-00.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pic-01.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pic-1.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pic-10.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pic-11.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pid-0.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pid-00.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pid-01.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pid-02.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pid-1.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pid-10.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pid-11.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pid-12.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pid-2.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pid-20.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pid-21.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-pid-22.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-stack-16-16.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-stack-16-8.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-stack-16-816.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-stack-16.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-stack-8-16.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-stack-8-8.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-stack-8-816.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-stack-8.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-stack-816-16.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-stack-816-8.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-stack-816-816.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-stack-816.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-wchar-0.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-wchar-00.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-wchar-01.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-wchar-02.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-wchar-1.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-wchar-10.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-wchar-11.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-wchar-12.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-wchar-2.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-wchar-20.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-wchar-21.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-wchar-22.d [new file with mode: 0644]

index 60c3b18e9e1f3a5b92f822ff1a4dd65e65210289..3538ef5dc9a35dbb232cfb225211d4408d1b1b6c 100644 (file)
@@ -1,3 +1,14 @@
+2010-11-02  Joseph Myers  <joseph@codesourcery.com>
+
+       * 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.
+
 2010-10-29  Maciej W. Rozycki  <macro@codesourcery.com>
 
        * elfxx-mips.c (mips_elf_calculate_relocation): Fix a typo.
index 3e8564a4335112c15d2dc1bae1faff891a300d38..4e91d7497dbdc6fbbacad3a822fd35f35443331b 100644 (file)
@@ -1663,11 +1663,22 @@ elf32_tic6x_obj_attrs_arg_type (int tag)
 {
   if (tag == Tag_ABI_compatibility)
     return ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_STR_VAL;
+  else if (tag & 1)
+    return ATTR_TYPE_FLAG_STR_VAL;
   else
-    /* Correct for known attributes, arbitrary for others.  */
     return ATTR_TYPE_FLAG_INT_VAL;
 }
 
+static int
+elf32_tic6x_obj_attrs_order (int num)
+{
+  if (num == LEAST_KNOWN_OBJ_ATTRIBUTE)
+    return Tag_ABI_conformance;
+  if ((num - 1) < Tag_ABI_conformance)
+    return num - 1;
+  return num;
+}
+
 /* Merge the Tag_ISA attribute values ARCH1 and ARCH2
    and return the merged value.  At present, all merges succeed, so no
    return value for errors is defined.  */
@@ -1691,14 +1702,64 @@ elf32_tic6x_merge_arch_attributes (int arch1, int arch2)
   return max_arch;
 }
 
+/* Convert a Tag_ABI_array_object_alignment or
+   Tag_ABI_array_object_align_expected tag value TAG to a
+   corresponding alignment value; return the alignment, or -1 for an
+   unknown tag value.  */
+
+static int
+elf32_tic6x_tag_to_array_alignment (int tag)
+{
+  switch (tag)
+    {
+    case 0:
+      return 8;
+
+    case 1:
+      return 4;
+
+    case 2:
+      return 16;
+
+    default:
+      return -1;
+    }
+}
+
+/* Convert a Tag_ABI_array_object_alignment or
+   Tag_ABI_array_object_align_expected alignment ALIGN to a
+   corresponding tag value; return the tag value.  */
+
+static int
+elf32_tic6x_array_alignment_to_tag (int align)
+{
+  switch (align)
+    {
+    case 8:
+      return 0;
+
+    case 4:
+      return 1;
+
+    case 16:
+      return 2;
+
+    default:
+      abort ();
+    }
+}
+
 /* Merge attributes from IBFD and OBFD, returning TRUE if the merge
    succeeded, FALSE otherwise.  */
 
 static bfd_boolean
 elf32_tic6x_merge_attributes (bfd *ibfd, bfd *obfd)
 {
+  bfd_boolean result = TRUE;
   obj_attribute *in_attr;
   obj_attribute *out_attr;
+  int i;
+  int array_align_in, array_align_out, array_expect_in, array_expect_out;
 
   if (!elf_known_obj_attributes_proc (obfd)[0].i)
     {
@@ -1719,21 +1780,177 @@ elf32_tic6x_merge_attributes (bfd *ibfd, bfd *obfd)
 
   /* No specification yet for handling of unknown attributes, so just
      ignore them and handle known ones.  */
-  out_attr[Tag_ISA].i
-    = elf32_tic6x_merge_arch_attributes (in_attr[Tag_ISA].i,
-                                        out_attr[Tag_ISA].i);
 
-  if (out_attr[Tag_ABI_DSBT].i != in_attr[Tag_ABI_DSBT].i)
+  if (out_attr[Tag_ABI_stack_align_preserved].i
+      < in_attr[Tag_ABI_stack_align_needed].i)
+    {
+      _bfd_error_handler
+       (_("error: %B requires more stack alignment than %B preserves"),
+        ibfd, obfd);
+      result = FALSE;
+    }
+  if (in_attr[Tag_ABI_stack_align_preserved].i
+      < out_attr[Tag_ABI_stack_align_needed].i)
+    {
+      _bfd_error_handler
+       (_("error: %B requires more stack alignment than %B preserves"),
+        obfd, ibfd);
+      result = FALSE;
+    }
+
+  array_align_in = elf32_tic6x_tag_to_array_alignment
+    (in_attr[Tag_ABI_array_object_alignment].i);
+  if (array_align_in == -1)
+    {
+      _bfd_error_handler
+       (_("error: unknown Tag_ABI_array_object_alignment value in %B"),
+        ibfd);
+      result = FALSE;
+    }
+  array_align_out = elf32_tic6x_tag_to_array_alignment
+    (out_attr[Tag_ABI_array_object_alignment].i);
+  if (array_align_out == -1)
+    {
+      _bfd_error_handler
+       (_("error: unknown Tag_ABI_array_object_alignment value in %B"),
+        obfd);
+      result = FALSE;
+    }
+  array_expect_in = elf32_tic6x_tag_to_array_alignment
+    (in_attr[Tag_ABI_array_object_align_expected].i);
+  if (array_expect_in == -1)
+    {
+      _bfd_error_handler
+       (_("error: unknown Tag_ABI_array_object_align_expected value in %B"),
+        ibfd);
+      result = FALSE;
+    }
+  array_expect_out = elf32_tic6x_tag_to_array_alignment
+    (out_attr[Tag_ABI_array_object_align_expected].i);
+  if (array_expect_out == -1)
+    {
+      _bfd_error_handler
+       (_("error: unknown Tag_ABI_array_object_align_expected value in %B"),
+        obfd);
+      result = FALSE;
+    }
+
+  if (array_align_out < array_expect_in)
+    {
+      _bfd_error_handler
+       (_("error: %B requires more array alignment than %B preserves"),
+        ibfd, obfd);
+      result = FALSE;
+    }
+  if (array_align_in < array_expect_out)
     {
       _bfd_error_handler
-       (_("warning: %B and %B differ in whether code is compiled for DSBT"),
+       (_("error: %B requires more array alignment than %B preserves"),
         obfd, ibfd);
+      result = FALSE;
     }
+
+  for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++)
+    {
+      switch (i)
+       {
+       case Tag_ISA:
+         out_attr[i].i = elf32_tic6x_merge_arch_attributes (in_attr[i].i,
+                                                            out_attr[i].i);
+         break;
+
+       case Tag_ABI_wchar_t:
+         if (out_attr[i].i == 0)
+           out_attr[i].i = in_attr[i].i;
+         if (out_attr[i].i != 0
+             && in_attr[i].i != 0
+             && out_attr[i].i != in_attr[i].i)
+           {
+             _bfd_error_handler
+               (_("warning: %B and %B differ in wchar_t size"), obfd, ibfd);
+           }
+         break;
+
+       case Tag_ABI_stack_align_needed:
+         if (out_attr[i].i < in_attr[i].i)
+           out_attr[i].i = in_attr[i].i;
+         break;
+
+       case Tag_ABI_stack_align_preserved:
+         if (out_attr[i].i > in_attr[i].i)
+           out_attr[i].i = in_attr[i].i;
+         break;
+
+       case Tag_ABI_DSBT:
+         if (out_attr[i].i != in_attr[i].i)
+           {
+             _bfd_error_handler
+               (_("warning: %B and %B differ in whether code is "
+                  "compiled for DSBT"),
+                obfd, ibfd);
+           }
+         break;
+
+       case Tag_ABI_PID:
+         if (out_attr[i].i != in_attr[i].i)
+           {
+             _bfd_error_handler
+               (_("warning: %B and %B differ in position-dependence of "
+                  "data addressing"),
+                obfd, ibfd);
+           }
+         break;
+
+       case Tag_ABI_PIC:
+         if (out_attr[i].i != in_attr[i].i)
+           {
+             _bfd_error_handler
+               (_("warning: %B and %B differ in position-dependence of "
+                  "code addressing"),
+                obfd, ibfd);
+           }
+         break;
+
+       case Tag_ABI_array_object_alignment:
+         if (array_align_out != -1
+             && array_align_in != -1
+             && array_align_out > array_align_in)
+           out_attr[i].i
+             = elf32_tic6x_array_alignment_to_tag (array_align_in);
+         break;
+
+       case Tag_ABI_array_object_align_expected:
+         if (array_expect_out != -1
+             && array_expect_in != -1
+             && array_expect_out < array_expect_in)
+           out_attr[i].i
+             = elf32_tic6x_array_alignment_to_tag (array_expect_in);
+         break;
+
+       case Tag_ABI_conformance:
+         /* Merging for this attribute is not specified.  As on ARM,
+            treat a missing attribute as no claim to conform and only
+            merge identical values.  */
+         if (out_attr[i].s == NULL
+             || in_attr[i].s == NULL
+             || strcmp (out_attr[i].s,
+                        in_attr[i].s) != 0)
+           out_attr[i].s = NULL;
+         break;
+
+       default:
+         break;
+       }
+
+      if (in_attr[i].type && !out_attr[i].type)
+       out_attr[i].type = in_attr[i].type;
+    }
+
   /* Merge Tag_ABI_compatibility attributes and any common GNU ones.  */
   if (!_bfd_elf_merge_object_attributes (ibfd, obfd))
     return FALSE;
 
-  return TRUE;
+  return result;
 }
 
 static bfd_boolean
@@ -1767,6 +1984,7 @@ elf32_tic6x_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
 #define elf_backend_may_use_rel_p      1
 #define elf_backend_may_use_rela_p     1
 #define elf_backend_obj_attrs_arg_type elf32_tic6x_obj_attrs_arg_type
+#define elf_backend_obj_attrs_order    elf32_tic6x_obj_attrs_order
 #define elf_backend_obj_attrs_section  ".c6xabi.attributes"
 #define elf_backend_obj_attrs_section_type     SHT_C6000_ATTRIBUTES
 #define elf_backend_obj_attrs_vendor   "c6xabi"
index 16404436c9a2a1c6fa671685f37da3eec34d42e4..8acf57e1d64c6ed0978bcfb2d9ea017834bb4ce6 100644 (file)
@@ -1,3 +1,7 @@
+2010-11-02  Joseph Myers  <joseph@codesourcery.com>
+
+       * readelf.c (display_tic6x_attribute): Handle more attributes.
+
 2010-10-30  Kai Tietz  <kai.tietz@onevision.com>
 
        * dlltool.c (scan_drectve_symbols): Allow quoted strings for -export
index 44feac42f48b1835998e1658f14b960f3508c4a0..0ed5c7c1ed4880b0b161e8f5d12029fd11236205 100644 (file)
@@ -10804,6 +10804,63 @@ display_tic6x_attribute (unsigned char * p)
        }
       return p;
 
+    case Tag_ABI_wchar_t:
+      val = read_uleb128 (p, &len);
+      p += len;
+      printf ("  Tag_ABI_wchar_t: ");
+      switch (val)
+       {
+       case 0:
+         printf (_("Not used\n"));
+         break;
+       case 1:
+         printf (_("2 bytes\n"));
+         break;
+       case 2:
+         printf (_("4 bytes\n"));
+         break;
+       default:
+         printf ("??? (%d)\n", val);
+         break;
+       }
+      return p;
+
+    case Tag_ABI_stack_align_needed:
+      val = read_uleb128 (p, &len);
+      p += len;
+      printf ("  Tag_ABI_stack_align_needed: ");
+      switch (val)
+       {
+       case 0:
+         printf (_("8-byte\n"));
+         break;
+       case 1:
+         printf (_("16-byte\n"));
+         break;
+       default:
+         printf ("??? (%d)\n", val);
+         break;
+       }
+      return p;
+
+    case Tag_ABI_stack_align_preserved:
+      val = read_uleb128 (p, &len);
+      p += len;
+      printf ("  Tag_ABI_stack_align_preserved: ");
+      switch (val)
+       {
+       case 0:
+         printf (_("8-byte\n"));
+         break;
+       case 1:
+         printf (_("16-byte\n"));
+         break;
+       default:
+         printf ("??? (%d)\n", val);
+         break;
+       }
+      return p;
+
     case Tag_ABI_DSBT:
       val = read_uleb128 (p, &len);
       p += len;
@@ -10822,6 +10879,87 @@ display_tic6x_attribute (unsigned char * p)
        }
       return p;
 
+    case Tag_ABI_PID:
+      val = read_uleb128 (p, &len);
+      p += len;
+      printf ("  Tag_ABI_PID: ");
+      switch (val)
+       {
+       case 0:
+         printf (_("Data addressing position-dependent\n"));
+         break;
+       case 1:
+         printf (_("Data addressing position-independent, GOT near DP\n"));
+         break;
+       case 2:
+         printf (_("Data addressing position-independent, GOT far from DP\n"));
+         break;
+       default:
+         printf ("??? (%d)\n", val);
+         break;
+       }
+      return p;
+
+    case Tag_ABI_PIC:
+      val = read_uleb128 (p, &len);
+      p += len;
+      printf ("  Tag_ABI_PIC: ");
+      switch (val)
+       {
+       case 0:
+         printf (_("Code addressing position-dependent\n"));
+         break;
+       case 1:
+         printf (_("Code addressing position-independent\n"));
+         break;
+       default:
+         printf ("??? (%d)\n", val);
+         break;
+       }
+      return p;
+
+    case Tag_ABI_array_object_alignment:
+      val = read_uleb128 (p, &len);
+      p += len;
+      printf ("  Tag_ABI_array_object_alignment: ");
+      switch (val)
+       {
+       case 0:
+         printf (_("8-byte\n"));
+         break;
+       case 1:
+         printf (_("4-byte\n"));
+         break;
+       case 2:
+         printf (_("16-byte\n"));
+         break;
+       default:
+         printf ("??? (%d)\n", val);
+         break;
+       }
+      return p;
+
+    case Tag_ABI_array_object_align_expected:
+      val = read_uleb128 (p, &len);
+      p += len;
+      printf ("  Tag_ABI_array_object_align_expected: ");
+      switch (val)
+       {
+       case 0:
+         printf (_("8-byte\n"));
+         break;
+       case 1:
+         printf (_("4-byte\n"));
+         break;
+       case 2:
+         printf (_("16-byte\n"));
+         break;
+       default:
+         printf ("??? (%d)\n", val);
+         break;
+       }
+      return p;
+
     case Tag_ABI_compatibility:
       val = read_uleb128 (p, &len);
       p += len;
@@ -10829,15 +10967,27 @@ display_tic6x_attribute (unsigned char * p)
       printf (_("flag = %d, vendor = %s\n"), val, p);
       p += strlen ((char *) p) + 1;
       return p;
+
+    case Tag_ABI_conformance:
+      printf ("  Tag_ABI_conformance: ");
+      printf ("\"%s\"\n", p);
+      p += strlen ((char *) p) + 1;
+      return p;
     }
 
   printf ("  Tag_unknown_%d: ", tag);
 
-  /* No general documentation of handling unknown attributes, treat as
-     ULEB128 for now.  */
-  val = read_uleb128 (p, &len);
-  p += len;
-  printf ("%d (0x%x)\n", val, val);
+  if (tag & 1)
+    {
+      printf ("\"%s\"\n", p);
+      p += strlen ((char *) p) + 1;
+    }
+  else
+    {
+      val = read_uleb128 (p, &len);
+      p += len;
+      printf ("%d (0x%x)\n", val, val);
+    }
 
   return p;
 }
index d294525b99d73121bf09d52c359dae049b7a0142..17ce85a1da520b99e165635e420a040f4a0ecf0e 100644 (file)
@@ -1,3 +1,16 @@
+2010-11-02  Joseph Myers  <joseph@codesourcery.com>
+
+       * 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.
+
 2010-11-01  Maciej W. Rozycki  <macro@linux-mips.org>
 
        * config/tc-mips.c (macro)[M_LD_OB, M_SD_OB]: Use the offset
index 2f51466c83095d16f7025e52dc987b8f37c74c6e..c5095ebe8af31dc31284d563c7e577255104508f 100644 (file)
@@ -52,6 +52,9 @@ enum
     OPTION_MLITTLE_ENDIAN,
     OPTION_MDSBT,
     OPTION_MNO_DSBT,
+    OPTION_MPID,
+    OPTION_MPIC,
+    OPTION_MNO_PIC,
     OPTION_MGENERATE_REL
   };
 
@@ -64,6 +67,9 @@ struct option md_longopts[] =
     { "mlittle-endian", no_argument, NULL, OPTION_MLITTLE_ENDIAN },
     { "mdsbt", no_argument, NULL, OPTION_MDSBT },
     { "mno-dsbt", no_argument, NULL, OPTION_MNO_DSBT },
+    { "mpid", required_argument, NULL, OPTION_MPID },
+    { "mpic", no_argument, NULL, OPTION_MPIC },
+    { "mno-pic", no_argument, NULL, OPTION_MNO_PIC },
     { "mgenerate-rel", no_argument, NULL, OPTION_MGENERATE_REL },
     { NULL, no_argument, NULL, 0 }
   };
@@ -120,6 +126,21 @@ static bfd_boolean tic6x_generate_rela = TRUE;
 /* Whether the code uses DSBT addressing.  */
 static bfd_boolean tic6x_dsbt;
 
+/* Types of position-independent data (attribute values for
+   Tag_ABI_PID).  */
+typedef enum
+  {
+    tic6x_pid_no = 0,
+    tic6x_pid_near = 1,
+    tic6x_pid_far = 2
+  } tic6x_pid_type;
+
+/* The type of data addressing used in this code.  */
+static tic6x_pid_type tic6x_pid;
+
+/* Whether the code uses position-independent code.  */
+static bfd_boolean tic6x_pic;
+
 /* Table of supported architecture variants.  */
 typedef struct
 {
@@ -171,6 +192,36 @@ tic6x_use_arch (const char *arch)
   as_bad (_("unknown architecture '%s'"), arch);
 }
 
+/* Table of supported -mpid arguments.  */
+typedef struct
+{
+  const char *arg;
+  tic6x_pid_type attr;
+} tic6x_pid_type_table;
+static const tic6x_pid_type_table tic6x_pid_types[] =
+  {
+    { "no", tic6x_pid_no },
+    { "near", tic6x_pid_near },
+    { "far", tic6x_pid_far }
+  };
+
+/* Handle -mpid=ARG.  */
+
+static void
+tic6x_use_pid (const char *arg)
+{
+  unsigned int i;
+
+  for (i = 0; i < ARRAY_SIZE (tic6x_pid_types); i++)
+    if (strcmp (arg, tic6x_pid_types[i].arg) == 0)
+      {
+       tic6x_pid = tic6x_pid_types[i].attr;
+       return;
+      }
+
+  as_bad (_("unknown -mpid= argument '%s'"), arg);
+}
+
 /* Parse a target-specific option.  */
 
 int
@@ -206,6 +257,18 @@ md_parse_option (int c, char *arg)
       tic6x_dsbt = 0;
       break;
 
+    case OPTION_MPID:
+      tic6x_use_pid (arg);
+      break;
+
+    case OPTION_MPIC:
+      tic6x_pic = 1;
+      break;
+
+    case OPTION_MNO_PIC:
+      tic6x_pic = 0;
+      break;
+
     case OPTION_MGENERATE_REL:
       tic6x_generate_rela = FALSE;
       break;
@@ -230,6 +293,13 @@ md_show_usage (FILE *stream ATTRIBUTE_UNUSED)
   fprintf (stream, _("  -mlittle-endian         generate little-endian code\n"));
   fprintf (stream, _("  -mdsbt                  code uses DSBT addressing\n"));
   fprintf (stream, _("  -mno-dsbt               code does not use DSBT addressing\n"));
+  fprintf (stream, _("  -mpid=no                code uses position-dependent data addressing\n"));
+  fprintf (stream, _("  -mpid=near              code uses position-independent data addressing,\n"
+                    "                            GOT accesses use near DP addressing\n"));
+  fprintf (stream, _("  -mpid=far               code uses position-independent data addressing,\n"
+                    "                            GOT accesses use far DP addressing\n"));
+  fprintf (stream, _("  -mpic                   code addressing is position-independent\n"));
+  fprintf (stream, _("  -mno-pic                code addressing is position-dependent\n"));
   /* -mgenerate-rel is only for testsuite use and is deliberately
       undocumented.  */
 
@@ -3915,6 +3985,8 @@ tic6x_set_attributes (void)
 
   tic6x_set_attribute_int (Tag_ISA, tic6x_arch_attribute);
   tic6x_set_attribute_int (Tag_ABI_DSBT, tic6x_dsbt);
+  tic6x_set_attribute_int (Tag_ABI_PID, tic6x_pid);
+  tic6x_set_attribute_int (Tag_ABI_PIC, tic6x_pic);
 }
 
 /* Do machine-dependent manipulations of the frag chains after all
index 0c4662bd2ddad9fe9d2b373cfbb3a2b4b1d3cb13..6a3fc8130414662508cf7d23d14a70c326af76ba 100644 (file)
@@ -477,6 +477,7 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
 @emph{Target TIC6X options:}
    [@b{-march=@var{arch}}] [@b{-matomic}|@b{-mno-atomic}]
    [@b{-mbig-endian}|@b{-mlittle-endian}] [@b{-mdsbt}|@b{-mno-dsbt}]
+   [@b{-mpid=no}|@b{-mpid=near}|@b{-mpid=far}] [@b{-mpic}|@b{-mno-pic}]
 @end ifset
 
 @ifset Z80
@@ -1294,6 +1295,29 @@ default, causes the tag to have a value of 0, indicating that the code
 does not use DSBT addressing.  The linker will emit a warning if
 objects of different type (DSBT and non-DSBT) are linked together.
 
+@item -mpid=no
+@itemx -mpid=near
+@itemx -mpid=far
+The @option{-mpid=} option causes the assembler to generate the
+@code{Tag_ABI_PID} attribute with a value indicating the form of data
+addressing used by the code.  @option{-mpid=no}, the default,
+indicates position-dependent data addressing, @option{-mpid=near}
+indicates position-independent addressing with GOT accesses using near
+DP addressing, and @option{-mpid=far} indicates position-independent
+addressing with GOT accesses using far DP addressing.  The linker will
+emit a warning if objects built with different settings of this option
+are linked together.
+
+@item -mpic
+@itemx -mno-pic
+The @option{-mpic} option causes the assembler to generate the
+@code{Tag_ABI_PIC} attribute with a value of 1, indicating that the
+code is using position-independent code addressing,  The
+@code{-mno-pic} option, the default, causes the tag to have a value of
+0, indicating position-dependent code addressing.  The linker will
+emit a warning if objects of different type (position-dependent and
+position-independent) are linked together.
+
 @item -mbig-endian
 @itemx -mlittle-endian
 Generate code for the specified endianness.  The default is
index cd8be230217f6af39f761b990e32d9eb7a085cbe..72c873bfd980399050e5b66291ded79bdeac7531 100644 (file)
@@ -59,6 +59,32 @@ default, causes the tag to have a value of 0, indicating that the code
 does not use DSBT addressing.  The linker will emit a warning if
 objects of different type (DSBT and non-DSBT) are linked together.
 
+@cindex @code{-mpid=} command line option, TIC6X
+@item -mpid=no
+@itemx -mpid=near
+@itemx -mpid=far
+The @option{-mpid=} option causes the assembler to generate the
+@code{Tag_ABI_PID} attribute with a value indicating the form of data
+addressing used by the code.  @option{-mpid=no}, the default,
+indicates position-dependent data addressing, @option{-mpid=near}
+indicates position-independent addressing with GOT accesses using near
+DP addressing, and @option{-mpid=far} indicates position-independent
+addressing with GOT accesses using far DP addressing.  The linker will
+emit a warning if objects built with different settings of this option
+are linked together.
+
+@cindex @code{-mpic} command line option, TIC6X
+@cindex @code{-mno-pic} command line option, TIC6X
+@item -mpic
+@itemx -mno-pic
+The @option{-mpic} option causes the assembler to generate the
+@code{Tag_ABI_PIC} attribute with a value of 1, indicating that the
+code is using position-independent code addressing,  The
+@code{-mno-pic} option, the default, causes the tag to have a value of
+0, indicating position-dependent code addressing.  The linker will
+emit a warning if objects of different type (position-dependent and
+position-independent) are linked together.
+
 @cindex TIC6X big-endian output
 @cindex TIC6X little-endian output
 @cindex big-endian output, TIC6X
@@ -125,7 +151,13 @@ These have the same effects as @option{-matomic} and
 Set the C6000 EABI build attribute @var{tag} to @var{value}.
 
 The @var{tag} is either an attribute number or one of
-@code{Tag_ISA}, @code{Tag_ABI_DSBT} and @code{Tag_ABI_compatibility}.  The
+@code{Tag_ISA}, @code{Tag_ABI_wchar_t},
+@code{Tag_ABI_stack_align_needed},
+@code{Tag_ABI_stack_align_preserved}, @code{Tag_ABI_DSBT},
+@code{Tag_ABI_PID}, @code{Tag_ABI_PIC},
+@code{TAG_ABI_array_object_alignment},
+@code{TAG_ABI_array_object_align_expected},
+@code{Tag_ABI_compatibility} and @code{Tag_ABI_conformance}.  The
 @var{value} is either a @code{number}, @code{"string"}, or
 @code{number, "string"} depending on the tag.
 
index 72e26339253bcf77fa746697a7c890a2e5cc4144..e7936f6c990b3b44bb3c1ff95bf39684e0b79557 100644 (file)
@@ -1,3 +1,38 @@
+2010-11-02  Joseph Myers  <joseph@codesourcery.com>
+
+       * 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.
+
 2010-10-29  Joseph Myers  <joseph@codesourcery.com>
 
        * gas/tic6x/attr-compatibility-directive-1.d,
diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-1.d b/gas/testsuite/gas/tic6x/attr-array-directive-1.d
new file mode 100644 (file)
index 0000000..dadcf77
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X array alignment attributes, directives 1
+#as:
+#source: attr-array-directive-1.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_array_object_alignment: 4-byte
diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-1.s b/gas/testsuite/gas/tic6x/attr-array-directive-1.s
new file mode 100644 (file)
index 0000000..5f9929b
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_array_object_alignment, 1
diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-2.d b/gas/testsuite/gas/tic6x/attr-array-directive-2.d
new file mode 100644 (file)
index 0000000..7b56735
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X array alignment attributes, directives 2
+#as:
+#source: attr-array-directive-2.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_array_object_alignment: 16-byte
diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-2.s b/gas/testsuite/gas/tic6x/attr-array-directive-2.s
new file mode 100644 (file)
index 0000000..73538f6
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute 18, 2
diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-3.d b/gas/testsuite/gas/tic6x/attr-array-directive-3.d
new file mode 100644 (file)
index 0000000..0b74f2e
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X array alignment attributes, directives 3
+#as:
+#source: attr-array-directive-3.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_array_object_align_expected: 4-byte
diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-3.s b/gas/testsuite/gas/tic6x/attr-array-directive-3.s
new file mode 100644 (file)
index 0000000..b4bf401
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_array_object_align_expected, 1
diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-4.d b/gas/testsuite/gas/tic6x/attr-array-directive-4.d
new file mode 100644 (file)
index 0000000..13d9e41
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X array alignment attributes, directives 4
+#as:
+#source: attr-array-directive-4.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_array_object_align_expected: 16-byte
diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-4.s b/gas/testsuite/gas/tic6x/attr-array-directive-4.s
new file mode 100644 (file)
index 0000000..484e54d
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute 20, 2
diff --git a/gas/testsuite/gas/tic6x/attr-conformance-directive-1.d b/gas/testsuite/gas/tic6x/attr-conformance-directive-1.d
new file mode 100644 (file)
index 0000000..cd91758
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X conformance attribute, directives 1
+#as:
+#source: attr-conformance-directive-1.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ABI_conformance: "1.0"
+  Tag_ISA: C674x
diff --git a/gas/testsuite/gas/tic6x/attr-conformance-directive-1.s b/gas/testsuite/gas/tic6x/attr-conformance-directive-1.s
new file mode 100644 (file)
index 0000000..2964084
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_conformance, "1.0"
diff --git a/gas/testsuite/gas/tic6x/attr-conformance-directive-2.d b/gas/testsuite/gas/tic6x/attr-conformance-directive-2.d
new file mode 100644 (file)
index 0000000..6f13002
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X conformance attribute, directives 2
+#as:
+#source: attr-conformance-directive-2.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ABI_conformance: "1.0"
+  Tag_ISA: C674x
diff --git a/gas/testsuite/gas/tic6x/attr-conformance-directive-2.s b/gas/testsuite/gas/tic6x/attr-conformance-directive-2.s
new file mode 100644 (file)
index 0000000..a112b7b
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute 67, "1.0"
diff --git a/gas/testsuite/gas/tic6x/attr-pic-directive-1.d b/gas/testsuite/gas/tic6x/attr-pic-directive-1.d
new file mode 100644 (file)
index 0000000..d453ddd
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X PIC attribute, directives 1
+#as:
+#source: attr-pic-directive-1.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_PIC: Code addressing position-independent
diff --git a/gas/testsuite/gas/tic6x/attr-pic-directive-1.s b/gas/testsuite/gas/tic6x/attr-pic-directive-1.s
new file mode 100644 (file)
index 0000000..2bab373
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_PIC, 1
diff --git a/gas/testsuite/gas/tic6x/attr-pic-directive-2.d b/gas/testsuite/gas/tic6x/attr-pic-directive-2.d
new file mode 100644 (file)
index 0000000..40c3eec
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X PIC attribute, directives 2
+#as:
+#source: attr-pic-directive-2.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_PIC: Code addressing position-independent
diff --git a/gas/testsuite/gas/tic6x/attr-pic-directive-2.s b/gas/testsuite/gas/tic6x/attr-pic-directive-2.s
new file mode 100644 (file)
index 0000000..7a034d6
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute 16, 1
diff --git a/gas/testsuite/gas/tic6x/attr-pic-opts-mno-pic.d b/gas/testsuite/gas/tic6x/attr-pic-opts-mno-pic.d
new file mode 100644 (file)
index 0000000..8cd2add
--- /dev/null
@@ -0,0 +1,8 @@
+#readelf: -A
+#name: C6X PIC attribute, -mno-pic
+#as: -mno-pic
+#source: dummy.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
diff --git a/gas/testsuite/gas/tic6x/attr-pic-opts-mpic.d b/gas/testsuite/gas/tic6x/attr-pic-opts-mpic.d
new file mode 100644 (file)
index 0000000..f5d371b
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X PIC attribute, -mpic
+#as: -mpic
+#source: dummy.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_PIC: Code addressing position-independent
diff --git a/gas/testsuite/gas/tic6x/attr-pid-directive-1.d b/gas/testsuite/gas/tic6x/attr-pid-directive-1.d
new file mode 100644 (file)
index 0000000..f4a2387
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X PID attribute, directives 1
+#as:
+#source: attr-pid-directive-1.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_PID: Data addressing position-independent, GOT near DP
diff --git a/gas/testsuite/gas/tic6x/attr-pid-directive-1.s b/gas/testsuite/gas/tic6x/attr-pid-directive-1.s
new file mode 100644 (file)
index 0000000..b973177
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_PID, 1
diff --git a/gas/testsuite/gas/tic6x/attr-pid-directive-2.d b/gas/testsuite/gas/tic6x/attr-pid-directive-2.d
new file mode 100644 (file)
index 0000000..46abb9e
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X PID attribute, directives 2
+#as:
+#source: attr-pid-directive-2.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_PID: Data addressing position-independent, GOT far from DP
diff --git a/gas/testsuite/gas/tic6x/attr-pid-directive-2.s b/gas/testsuite/gas/tic6x/attr-pid-directive-2.s
new file mode 100644 (file)
index 0000000..c392eda
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute 14, 2
diff --git a/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-far.d b/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-far.d
new file mode 100644 (file)
index 0000000..7a42121
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X PID attribute, -mpid=far
+#as: -mpid=far
+#source: dummy.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_PID: Data addressing position-independent, GOT far from DP
diff --git a/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-near.d b/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-near.d
new file mode 100644 (file)
index 0000000..3e3aad8
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X PID attribute, -mpid=near
+#as: -mpid=near
+#source: dummy.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_PID: Data addressing position-independent, GOT near DP
diff --git a/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-no.d b/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-no.d
new file mode 100644 (file)
index 0000000..e70555a
--- /dev/null
@@ -0,0 +1,8 @@
+#readelf: -A
+#name: C6X PID attribute, -mpid=no
+#as: -mpid=no
+#source: dummy.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
diff --git a/gas/testsuite/gas/tic6x/attr-stack-directive-1.d b/gas/testsuite/gas/tic6x/attr-stack-directive-1.d
new file mode 100644 (file)
index 0000000..ea371f3
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X stack alignment attributes, directives 1
+#as:
+#source: attr-stack-directive-1.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_stack_align_preserved: 16-byte
diff --git a/gas/testsuite/gas/tic6x/attr-stack-directive-1.s b/gas/testsuite/gas/tic6x/attr-stack-directive-1.s
new file mode 100644 (file)
index 0000000..46295d2
--- /dev/null
@@ -0,0 +1,2 @@
+.c6xabi_attribute Tag_ABI_stack_align_needed, 0
+.c6xabi_attribute Tag_ABI_stack_align_preserved, 1
diff --git a/gas/testsuite/gas/tic6x/attr-stack-directive-2.d b/gas/testsuite/gas/tic6x/attr-stack-directive-2.d
new file mode 100644 (file)
index 0000000..8fc8714
--- /dev/null
@@ -0,0 +1,10 @@
+#readelf: -A
+#name: C6X stack alignment attributes, directives 2
+#as:
+#source: attr-stack-directive-2.s
+
+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/gas/testsuite/gas/tic6x/attr-stack-directive-2.s b/gas/testsuite/gas/tic6x/attr-stack-directive-2.s
new file mode 100644 (file)
index 0000000..3c1c694
--- /dev/null
@@ -0,0 +1,2 @@
+.c6xabi_attribute 8, 1
+.c6xabi_attribute 10, 1
diff --git a/gas/testsuite/gas/tic6x/attr-wchar-directive-1.d b/gas/testsuite/gas/tic6x/attr-wchar-directive-1.d
new file mode 100644 (file)
index 0000000..ec0fca6
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X wchar_t attribute, directives 1
+#as:
+#source: attr-wchar-directive-1.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_wchar_t: 2 bytes
diff --git a/gas/testsuite/gas/tic6x/attr-wchar-directive-1.s b/gas/testsuite/gas/tic6x/attr-wchar-directive-1.s
new file mode 100644 (file)
index 0000000..69d1186
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_wchar_t, 1
diff --git a/gas/testsuite/gas/tic6x/attr-wchar-directive-2.d b/gas/testsuite/gas/tic6x/attr-wchar-directive-2.d
new file mode 100644 (file)
index 0000000..a590682
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X wchar_t attribute, directives 2
+#as:
+#source: attr-wchar-directive-2.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_wchar_t: 4 bytes
diff --git a/gas/testsuite/gas/tic6x/attr-wchar-directive-2.s b/gas/testsuite/gas/tic6x/attr-wchar-directive-2.s
new file mode 100644 (file)
index 0000000..8e3830c
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute 6, 2
index de57262e9f7eb2aa562006aa756a2af7490f8493..39de1ff9feafb9974253bd8bb580085d3e413c5f 100644 (file)
@@ -1,3 +1,10 @@
+2010-11-02  Joseph Myers  <joseph@codesourcery.com>
+
+       * 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.
+
 2010-10-29  Joseph Myers  <joseph@codesourcery.com>
 
        * tic6x-attrs.h (Tag_ABI_compatibility): Define.
index c8d8332d6ed95a998d6a1e0617f823e1a12bc106..21ce1e4f536933e3b990041522012cd8c015b1ef 100644 (file)
    name and value.  */
 
 TAG(Tag_ISA, 4)
+TAG(Tag_ABI_wchar_t, 6)
+TAG(Tag_ABI_stack_align_needed, 8)
+TAG(Tag_ABI_stack_align_preserved, 10)
 TAG(Tag_ABI_DSBT, 12)
+TAG(Tag_ABI_PID, 14)
+TAG(Tag_ABI_PIC, 16)
+TAG(Tag_ABI_array_object_alignment, 18)
+TAG(Tag_ABI_array_object_align_expected, 20)
 TAG(Tag_ABI_compatibility, 32)
+TAG(Tag_ABI_conformance, 67)
index 8ec2ab81c5750946a387faa0e3c6e67b244809d1..8d49e4ab8a7ccdc5bf9b9bd24c18275f072f0403 100644 (file)
@@ -1,3 +1,59 @@
+2010-11-02  Joseph Myers  <joseph@codesourcery.com>
+
+       * 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.
+
 2010-11-02  H.J. Lu  <hongjiu.lu@intel.com>
 
        * ld-elf/compress1a.d: Also check MIPS_DWARF.
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 (file)
index 0000000..d39e045
--- /dev/null
@@ -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 (file)
index 0000000..1d38f2a
--- /dev/null
@@ -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 (file)
index 0000000..ec74ed5
--- /dev/null
@@ -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 (file)
index 0000000..5ef2908
--- /dev/null
@@ -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 (file)
index 0000000..e8228f0
--- /dev/null
@@ -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 (file)
index 0000000..14bc984
--- /dev/null
@@ -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 (file)
index 0000000..70401ff
--- /dev/null
@@ -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 (file)
index 0000000..3c2c138
--- /dev/null
@@ -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 (file)
index 0000000..920ff10
--- /dev/null
@@ -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 (file)
index 0000000..1b5e516
--- /dev/null
@@ -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 (file)
index 0000000..e998162
--- /dev/null
@@ -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 (file)
index 0000000..d8b41c7
--- /dev/null
@@ -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 (file)
index 0000000..a4dcc01
--- /dev/null
@@ -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 (file)
index 0000000..abaa25f
--- /dev/null
@@ -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 (file)
index 0000000..8168658
--- /dev/null
@@ -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 (file)
index 0000000..53d4bc7
--- /dev/null
@@ -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 (file)
index 0000000..9ca864d
--- /dev/null
@@ -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 (file)
index 0000000..760a023
--- /dev/null
@@ -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 (file)
index 0000000..58a4325
--- /dev/null
@@ -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 (file)
index 0000000..12b4abc
--- /dev/null
@@ -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 (file)
index 0000000..a9cba9d
--- /dev/null
@@ -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 (file)
index 0000000..68fa058
--- /dev/null
@@ -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 (file)
index 0000000..76faefa
--- /dev/null
@@ -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 (file)
index 0000000..c02d8f9
--- /dev/null
@@ -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 (file)
index 0000000..9801173
--- /dev/null
@@ -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 (file)
index 0000000..cd70604
--- /dev/null
@@ -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 (file)
index 0000000..795d839
--- /dev/null
@@ -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 (file)
index 0000000..a1cb22a
--- /dev/null
@@ -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 (file)
index 0000000..0d6bafb
--- /dev/null
@@ -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 (file)
index 0000000..c7a6033
--- /dev/null
@@ -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 (file)
index 0000000..f5f5261
--- /dev/null
@@ -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 (file)
index 0000000..506ec4c
--- /dev/null
@@ -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 (file)
index 0000000..86329f3
--- /dev/null
@@ -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 (file)
index 0000000..ecb9374
--- /dev/null
@@ -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 (file)
index 0000000..2d69687
--- /dev/null
@@ -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 (file)
index 0000000..2ef2f8e
--- /dev/null
@@ -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 (file)
index 0000000..bd06a2d
--- /dev/null
@@ -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 (file)
index 0000000..9563f7e
--- /dev/null
@@ -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 (file)
index 0000000..e965643
--- /dev/null
@@ -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 (file)
index 0000000..7a29cc5
--- /dev/null
@@ -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 (file)
index 0000000..0888eae
--- /dev/null
@@ -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 (file)
index 0000000..49ac948
--- /dev/null
@@ -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 (file)
index 0000000..a16e503
--- /dev/null
@@ -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 (file)
index 0000000..94993d9
--- /dev/null
@@ -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 (file)
index 0000000..2de2b50
--- /dev/null
@@ -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 (file)
index 0000000..2964084
--- /dev/null
@@ -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 (file)
index 0000000..34ebd26
--- /dev/null
@@ -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 (file)
index 0000000..43ff4a2
--- /dev/null
@@ -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 (file)
index 0000000..ad5c58e
--- /dev/null
@@ -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 (file)
index 0000000..d33640c
--- /dev/null
@@ -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 (file)
index 0000000..94bf8db
--- /dev/null
@@ -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 (file)
index 0000000..e9ff4c8
--- /dev/null
@@ -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 (file)
index 0000000..6856355
--- /dev/null
@@ -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 (file)
index 0000000..ffd9c71
--- /dev/null
@@ -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 (file)
index 0000000..64b8ec9
--- /dev/null
@@ -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 (file)
index 0000000..b8b3f52
--- /dev/null
@@ -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 (file)
index 0000000..a04713f
--- /dev/null
@@ -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 (file)
index 0000000..2bab373
--- /dev/null
@@ -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 (file)
index 0000000..bc781c4
--- /dev/null
@@ -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 (file)
index 0000000..6fd720d
--- /dev/null
@@ -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 (file)
index 0000000..d2ea7ad
--- /dev/null
@@ -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 (file)
index 0000000..573cfda
--- /dev/null
@@ -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 (file)
index 0000000..5c32e15
--- /dev/null
@@ -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 (file)
index 0000000..d155b56
--- /dev/null
@@ -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 (file)
index 0000000..b973177
--- /dev/null
@@ -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 (file)
index 0000000..edb8a65
--- /dev/null
@@ -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 (file)
index 0000000..7498282
--- /dev/null
@@ -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 (file)
index 0000000..138ae88
--- /dev/null
@@ -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 (file)
index 0000000..f556188
--- /dev/null
@@ -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 (file)
index 0000000..ce319bd
--- /dev/null
@@ -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 (file)
index 0000000..7097db6
--- /dev/null
@@ -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 (file)
index 0000000..7a3fe47
--- /dev/null
@@ -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 (file)
index 0000000..8eb94bd
--- /dev/null
@@ -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 (file)
index 0000000..291a368
--- /dev/null
@@ -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 (file)
index 0000000..cbd384f
--- /dev/null
@@ -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 (file)
index 0000000..b1e492a
--- /dev/null
@@ -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 (file)
index 0000000..9e52e92
--- /dev/null
@@ -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 (file)
index 0000000..1a8cb62
--- /dev/null
@@ -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 (file)
index 0000000..89a0740
--- /dev/null
@@ -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 (file)
index 0000000..ce63951
--- /dev/null
@@ -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 (file)
index 0000000..da8ca3b
--- /dev/null
@@ -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 (file)
index 0000000..fe8630e
--- /dev/null
@@ -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 (file)
index 0000000..0ab01ac
--- /dev/null
@@ -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 (file)
index 0000000..46295d2
--- /dev/null
@@ -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 (file)
index 0000000..5427103
--- /dev/null
@@ -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 (file)
index 0000000..3f5feae
--- /dev/null
@@ -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 (file)
index 0000000..e32ded6
--- /dev/null
@@ -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 (file)
index 0000000..57ed66b
--- /dev/null
@@ -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 (file)
index 0000000..69d1186
--- /dev/null
@@ -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 (file)
index 0000000..c476859
--- /dev/null
@@ -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 (file)
index 0000000..5105d19
--- /dev/null
@@ -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 (file)
index 0000000..a0d3bd8
--- /dev/null
@@ -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 (file)
index 0000000..cf87e4c
--- /dev/null
@@ -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 (file)
index 0000000..9a2b356
--- /dev/null
@@ -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 (file)
index 0000000..60d06f1
--- /dev/null
@@ -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 (file)
index 0000000..7500a31
--- /dev/null
@@ -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