From: Joseph Myers Date: Tue, 2 Nov 2010 14:36:39 +0000 (+0000) Subject: bfd: X-Git-Tag: binutils-2_21-branchpoint~44 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=877791769e23126090bab077d41f4d6221a23045;p=external%2Fbinutils.git 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. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 60c3b18..3538ef5 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,14 @@ +2010-11-02 Joseph Myers + + * 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 * elfxx-mips.c (mips_elf_calculate_relocation): Fix a typo. diff --git a/bfd/elf32-tic6x.c b/bfd/elf32-tic6x.c index 3e8564a..4e91d74 100644 --- a/bfd/elf32-tic6x.c +++ b/bfd/elf32-tic6x.c @@ -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" diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 1640443..8acf57e 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,7 @@ +2010-11-02 Joseph Myers + + * readelf.c (display_tic6x_attribute): Handle more attributes. + 2010-10-30 Kai Tietz * dlltool.c (scan_drectve_symbols): Allow quoted strings for -export diff --git a/binutils/readelf.c b/binutils/readelf.c index 44feac4..0ed5c7c 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -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; } diff --git a/gas/ChangeLog b/gas/ChangeLog index d294525..17ce85a 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,16 @@ +2010-11-02 Joseph Myers + + * 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 * config/tc-mips.c (macro)[M_LD_OB, M_SD_OB]: Use the offset diff --git a/gas/config/tc-tic6x.c b/gas/config/tc-tic6x.c index 2f51466..c5095eb 100644 --- a/gas/config/tc-tic6x.c +++ b/gas/config/tc-tic6x.c @@ -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 diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo index 0c4662b..6a3fc81 100644 --- a/gas/doc/as.texinfo +++ b/gas/doc/as.texinfo @@ -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 diff --git a/gas/doc/c-tic6x.texi b/gas/doc/c-tic6x.texi index cd8be23..72c873b 100644 --- a/gas/doc/c-tic6x.texi +++ b/gas/doc/c-tic6x.texi @@ -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. diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 72e2633..e7936f6 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,38 @@ +2010-11-02 Joseph Myers + + * 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 * 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 index 0000000..dadcf77 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-1.d @@ -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 index 0000000..5f9929b --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-1.s @@ -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 index 0000000..7b56735 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-2.d @@ -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 index 0000000..73538f6 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-2.s @@ -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 index 0000000..0b74f2e --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-3.d @@ -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 index 0000000..b4bf401 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-3.s @@ -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 index 0000000..13d9e41 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-4.d @@ -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 index 0000000..484e54d --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-4.s @@ -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 index 0000000..cd91758 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-conformance-directive-1.d @@ -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 index 0000000..2964084 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-conformance-directive-1.s @@ -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 index 0000000..6f13002 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-conformance-directive-2.d @@ -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 index 0000000..a112b7b --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-conformance-directive-2.s @@ -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 index 0000000..d453ddd --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pic-directive-1.d @@ -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 index 0000000..2bab373 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pic-directive-1.s @@ -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 index 0000000..40c3eec --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pic-directive-2.d @@ -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 index 0000000..7a034d6 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pic-directive-2.s @@ -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 index 0000000..8cd2add --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pic-opts-mno-pic.d @@ -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 index 0000000..f5d371b --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pic-opts-mpic.d @@ -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 index 0000000..f4a2387 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pid-directive-1.d @@ -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 index 0000000..b973177 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pid-directive-1.s @@ -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 index 0000000..46abb9e --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pid-directive-2.d @@ -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 index 0000000..c392eda --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pid-directive-2.s @@ -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 index 0000000..7a42121 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-far.d @@ -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 index 0000000..3e3aad8 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-near.d @@ -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 index 0000000..e70555a --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-no.d @@ -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 index 0000000..ea371f3 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-stack-directive-1.d @@ -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 index 0000000..46295d2 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-stack-directive-1.s @@ -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 index 0000000..8fc8714 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-stack-directive-2.d @@ -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 index 0000000..3c1c694 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-stack-directive-2.s @@ -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 index 0000000..ec0fca6 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-wchar-directive-1.d @@ -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 index 0000000..69d1186 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-wchar-directive-1.s @@ -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 index 0000000..a590682 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-wchar-directive-2.d @@ -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 index 0000000..8e3830c --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-wchar-directive-2.s @@ -0,0 +1 @@ +.c6xabi_attribute 6, 2 diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index de57262..39de1ff 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,3 +1,10 @@ +2010-11-02 Joseph Myers + + * 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 * tic6x-attrs.h (Tag_ABI_compatibility): Define. diff --git a/include/elf/tic6x-attrs.h b/include/elf/tic6x-attrs.h index c8d8332..21ce1e4 100644 --- a/include/elf/tic6x-attrs.h +++ b/include/elf/tic6x-attrs.h @@ -23,5 +23,13 @@ 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) diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 8ec2ab8..8d49e4a 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,59 @@ +2010-11-02 Joseph Myers + + * 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 * 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 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