bfd:
authorJoseph Myers <joseph@codesourcery.com>
Fri, 29 Oct 2010 00:15:59 +0000 (00:15 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 29 Oct 2010 00:15:59 +0000 (00:15 +0000)
2010-10-29  Bernd Schmidt  <bernds@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

* elf32-tic6x.c (elf32_tic6x_merge_attributes): Check for mismatch
of DSBT attributes.

binutils:
2010-10-29  Bernd Schmidt  <bernds@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

* readelf.c (display_tic6x_attribute): Handle Tag_ABI_DSBT.

gas:
2010-10-29  Bernd Schmidt  <bernds@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

* config/tc-tic6x.c (OPTION_MDSBT, OPTION_MNO_DSBT): New enum
values.
(md_longopts): Add mdsbt and mno-dsbt.
(tic6x_dsbt): New static variable.
(md_parse_option): Handle OPTION_MDSBT and OPTION_MNO_DSBT.
(md_show_usage): Output help text for -mdsbt and -mno-dsbt.
(TAG): Add comma at the end.
(tic6x_set_attributes): Set Tag_ABI_DSBT.
* doc/as.texinfo: Document -mdsbt and -mno-dsbt.
* doc/c-tic6x.texi (TIC6X Options): Likewise.
(TIC6X Directives): Mention Tag_ABI_DSBT.

gas/testsuite:
2010-10-29  Bernd Schmidt  <bernds@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

* gas/tic6x/attr-dsbt-directive-1.d,
gas/tic6x/attr-dsbt-directive-1.s,
gas/tic6x/attr-dsbt-directive-2.d,
gas/tic6x/attr-dsbt-directive-2.s,
gas/tic6x/attr-dsbt-opts-mdsbt.d,
gas/tic6x/attr-dsbt-opts-mno-dsbt.d: New tests.

include/elf:
2010-10-29  Bernd Schmidt  <bernds@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

* tic6x-attrs.h (Tag_ABI_DSBT): New.

ld/testsuite:
2010-10-29  Bernd Schmidt  <bernds@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

* ld-tic6x/attr-dsbt-0.s, ld-tic6x/attr-dsbt-00.d,
ld-tic6x/attr-dsbt-01.d, ld-tic6x/attr-dsbt-1.s,
ld-tic6x/attr-dsbt-10.d, ld-tic6x/attr-dsbt-11.d: New tests.

24 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-dsbt-directive-1.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-dsbt-directive-1.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-dsbt-directive-2.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-dsbt-directive-2.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-dsbt-opts-mdsbt.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-dsbt-opts-mno-dsbt.d [new file with mode: 0644]
include/elf/ChangeLog
include/elf/tic6x-attrs.h
ld/testsuite/ChangeLog
ld/testsuite/ld-tic6x/attr-dsbt-0.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-dsbt-00.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-dsbt-01.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-dsbt-1.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-dsbt-10.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-dsbt-11.d [new file with mode: 0644]

index 8fbaed21fa2c8238459acb637545583f3cfbbfdf..a45bac7cf70c35d3e42568cc261efc391e850373 100644 (file)
@@ -1,3 +1,9 @@
+2010-10-29  Bernd Schmidt  <bernds@codesourcery.com>
+            Joseph Myers  <joseph@codesourcery.com>
+
+       * elf32-tic6x.c (elf32_tic6x_merge_attributes): Check for mismatch
+       of DSBT attributes.
+
 2010-10-25  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * elf-bfd.h (RELOC_AGAINST_DISCARDED_SECTION): Always call
index 3d76648836c5ca75b40022de859e81a22c147d5c..219e73dd5a6924bc41d725de0571affe5005eace 100644 (file)
@@ -1723,6 +1723,12 @@ elf32_tic6x_merge_attributes (bfd *ibfd, bfd *obfd)
     = 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)
+    {
+      _bfd_error_handler
+       (_("warning: %B and %B differ in whether code is compiled for DSBT"),
+        obfd, ibfd);
+    }
   /* Merge Tag_compatibility attributes and any common GNU ones.  */
   _bfd_elf_merge_object_attributes (ibfd, obfd);
 
index eb2f14befd8112f5b6e0b9ccd329ab005a2930ba..7b6db60e7aea28f67668180232f29ef9bbaf4013 100644 (file)
@@ -1,3 +1,8 @@
+2010-10-29  Bernd Schmidt  <bernds@codesourcery.com>
+            Joseph Myers  <joseph@codesourcery.com>
+
+       * readelf.c (display_tic6x_attribute): Handle Tag_ABI_DSBT.
+
 2010-10-28  Nick Clifton  <nickc@redhat.com>
 
        PR binutils/12058
index 76337d5585c2507cffa8f4059833347fa4c418c0..f1ecd208be451d85f4f447326abcf0efc6082bd1 100644 (file)
@@ -10810,6 +10810,24 @@ display_tic6x_attribute (unsigned char * p)
        }
       return p;
 
+    case Tag_ABI_DSBT:
+      val = read_uleb128 (p, &len);
+      p += len;
+      printf ("  Tag_ABI_DSBT: ");
+      switch (val)
+       {
+       case 0:
+         printf (_("DSBT addressing not used\n"));
+         break;
+       case 1:
+         printf (_("DSBT addressing used\n"));
+         break;
+       default:
+         printf ("??? (%d)\n", val);
+         break;
+       }
+      return p;
+
     case 32:
       /* Tag_compatibility - treated as generic by binutils for now
         although not currently specified for C6X.  */
index c328e882434b7b82abe9fcf26fc8ca563b79a660..3e083fef7f36828446a10b9b026a7a5c999a0f84 100644 (file)
@@ -1,3 +1,18 @@
+2010-10-29  Bernd Schmidt  <bernds@codesourcery.com>
+            Joseph Myers  <joseph@codesourcery.com>
+
+       * config/tc-tic6x.c (OPTION_MDSBT, OPTION_MNO_DSBT): New enum
+       values.
+       (md_longopts): Add mdsbt and mno-dsbt.
+       (tic6x_dsbt): New static variable.
+       (md_parse_option): Handle OPTION_MDSBT and OPTION_MNO_DSBT.
+       (md_show_usage): Output help text for -mdsbt and -mno-dsbt.
+       (TAG): Add comma at the end.
+       (tic6x_set_attributes): Set Tag_ABI_DSBT.
+       * doc/as.texinfo: Document -mdsbt and -mno-dsbt.
+       * doc/c-tic6x.texi (TIC6X Options): Likewise.
+       (TIC6X Directives): Mention Tag_ABI_DSBT.
+
 2010-10-28  Matthias Klose  <doko@ubuntu.com>
 
        * doc/as.texinfo: Add directory section for info document.
index 832491dc0f0a47fa4a96ddd5e4a8f5db943e7ae3..2f51466c83095d16f7025e52dc987b8f37c74c6e 100644 (file)
@@ -50,6 +50,8 @@ enum
     OPTION_MNO_ATOMIC,
     OPTION_MBIG_ENDIAN,
     OPTION_MLITTLE_ENDIAN,
+    OPTION_MDSBT,
+    OPTION_MNO_DSBT,
     OPTION_MGENERATE_REL
   };
 
@@ -60,6 +62,8 @@ struct option md_longopts[] =
     { "mno-atomic", no_argument, NULL, OPTION_MNO_ATOMIC },
     { "mbig-endian", no_argument, NULL, OPTION_MBIG_ENDIAN },
     { "mlittle-endian", no_argument, NULL, OPTION_MLITTLE_ENDIAN },
+    { "mdsbt", no_argument, NULL, OPTION_MDSBT },
+    { "mno-dsbt", no_argument, NULL, OPTION_MNO_DSBT },
     { "mgenerate-rel", no_argument, NULL, OPTION_MGENERATE_REL },
     { NULL, no_argument, NULL, 0 }
   };
@@ -113,6 +117,9 @@ static bfd_boolean tic6x_compact_insns;
 /* Whether to generate RELA relocations.  */
 static bfd_boolean tic6x_generate_rela = TRUE;
 
+/* Whether the code uses DSBT addressing.  */
+static bfd_boolean tic6x_dsbt;
+
 /* Table of supported architecture variants.  */
 typedef struct
 {
@@ -191,6 +198,14 @@ md_parse_option (int c, char *arg)
       target_big_endian = 0;
       break;
 
+    case OPTION_MDSBT:
+      tic6x_dsbt = 1;
+      break;
+
+    case OPTION_MNO_DSBT:
+      tic6x_dsbt = 0;
+      break;
+
     case OPTION_MGENERATE_REL:
       tic6x_generate_rela = FALSE;
       break;
@@ -213,6 +228,8 @@ md_show_usage (FILE *stream ATTRIBUTE_UNUSED)
   fprintf (stream, _("  -mno-atomic             disable atomic operation instructions\n"));
   fprintf (stream, _("  -mbig-endian            generate big-endian code\n"));
   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"));
   /* -mgenerate-rel is only for testsuite use and is deliberately
       undocumented.  */
 
@@ -341,7 +358,7 @@ typedef struct
 
 static const tic6x_attribute_table tic6x_attributes[] =
   {
-#define TAG(tag, value) { #tag, tag }
+#define TAG(tag, value) { #tag, tag },
 #include "elf/tic6x-attrs.h"
 #undef TAG
   };
@@ -3897,6 +3914,7 @@ tic6x_set_attributes (void)
     tic6x_arch_attribute = C6XABI_Tag_ISA_C674X;
 
   tic6x_set_attribute_int (Tag_ISA, tic6x_arch_attribute);
+  tic6x_set_attribute_int (Tag_ABI_DSBT, tic6x_dsbt);
 }
 
 /* Do machine-dependent manipulations of the frag chains after all
index 3b78dc66eb49c784841be9d9799c8ed8ba9caac4..0c4662bd2ddad9fe9d2b373cfbb3a2b4b1d3cb13 100644 (file)
@@ -476,7 +476,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{-mbig-endian}|@b{-mlittle-endian}] [@b{-mdsbt}|@b{-mno-dsbt}]
 @end ifset
 
 @ifset Z80
@@ -1285,6 +1285,15 @@ present.  This option overrides such a default from the architecture,
 independent of the order in which the @option{-march} or
 @option{-matomic} or @option{-mno-atomic} options are passed.
 
+@item -mdsbt
+@itemx -mno-dsbt
+The @option{-mdsbt} option causes the assembler to generate the
+@code{Tag_ABI_DSBT} attribute with a value of 1, indicating that the
+code is using DSBT addressing.  The @option{-mno-dsbt} option, the
+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 -mbig-endian
 @itemx -mlittle-endian
 Generate code for the specified endianness.  The default is
index 7243a9875c02f683a664b75bf3d33df1b8ea2f3e..e729cac763685d0e34e370b81c9aec517093fb10 100644 (file)
@@ -48,6 +48,17 @@ present.  This option overrides such a default from the architecture,
 independent of the order in which the @option{-march} or
 @option{-matomic} or @option{-mno-atomic} options are passed.
 
+@cindex @code{-mdsbt} command line option, TIC6X
+@cindex @code{-mno-dsbt} command line option, TIC6X
+@item -mdsbt
+@itemx -mno-dsbt
+The @option{-mdsbt} option causes the assembler to generate the
+@code{Tag_ABI_DSBT} attribute with a value of 1, indicating that the
+code is using DSBT addressing.  The @option{-mno-dsbt} option, the
+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 TIC6X big-endian output
 @cindex TIC6X little-endian output
 @cindex big-endian output, TIC6X
@@ -113,10 +124,10 @@ These have the same effects as @option{-matomic} and
 @item .c6xabi_attribute @var{tag}, @var{value}
 Set the C6000 EABI build attribute @var{tag} to @var{value}.
 
-The @var{tag} is either an attribute number or
-@code{Tag_ISA}.  The @var{value} is either a
-@code{number}, @code{"string"}, or @code{number, "string"} depending
-on the tag.
+The @var{tag} is either an attribute number or one of
+@code{Tag_ISA} or @code{Tag_ABI_DSBT}.  The
+@var{value} is either a @code{number}, @code{"string"}, or
+@code{number, "string"} depending on the tag.
 
 @cindex @code{.nocmp} directive, TIC6X
 @item .nocmp
index 9e12d939f28d0f249c13d68ce57ca41b520e5d69..0a5158450a2ce31c4de6cf3d29bf6a79e44d29b8 100644 (file)
@@ -1,3 +1,13 @@
+2010-10-29  Bernd Schmidt  <bernds@codesourcery.com>
+            Joseph Myers  <joseph@codesourcery.com>
+
+       * gas/tic6x/attr-dsbt-directive-1.d,
+       gas/tic6x/attr-dsbt-directive-1.s,
+       gas/tic6x/attr-dsbt-directive-2.d,
+       gas/tic6x/attr-dsbt-directive-2.s,
+       gas/tic6x/attr-dsbt-opts-mdsbt.d,
+       gas/tic6x/attr-dsbt-opts-mno-dsbt.d: New tests.
+
 2010-10-28  Thomas Schwinge  <thomas@schwinge.name>
 
        * gas/iq2000/load-hazards.exp: Sort all filename globs.
diff --git a/gas/testsuite/gas/tic6x/attr-dsbt-directive-1.d b/gas/testsuite/gas/tic6x/attr-dsbt-directive-1.d
new file mode 100644 (file)
index 0000000..bee901f
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X DSBT attribute, directives 1
+#as:
+#source: attr-dsbt-directive-1.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_DSBT: DSBT addressing used
diff --git a/gas/testsuite/gas/tic6x/attr-dsbt-directive-1.s b/gas/testsuite/gas/tic6x/attr-dsbt-directive-1.s
new file mode 100644 (file)
index 0000000..97d952b
--- /dev/null
@@ -0,0 +1 @@
+       .c6xabi_attribute Tag_ABI_DSBT, 1
diff --git a/gas/testsuite/gas/tic6x/attr-dsbt-directive-2.d b/gas/testsuite/gas/tic6x/attr-dsbt-directive-2.d
new file mode 100644 (file)
index 0000000..bee901f
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X DSBT attribute, directives 1
+#as:
+#source: attr-dsbt-directive-1.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_DSBT: DSBT addressing used
diff --git a/gas/testsuite/gas/tic6x/attr-dsbt-directive-2.s b/gas/testsuite/gas/tic6x/attr-dsbt-directive-2.s
new file mode 100644 (file)
index 0000000..3818f12
--- /dev/null
@@ -0,0 +1 @@
+       .c6xabi_attribute 12, 1
diff --git a/gas/testsuite/gas/tic6x/attr-dsbt-opts-mdsbt.d b/gas/testsuite/gas/tic6x/attr-dsbt-opts-mdsbt.d
new file mode 100644 (file)
index 0000000..4e66f4a
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X DSBT attribute, -mdsbt
+#as: -mdsbt
+#source: dummy.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_DSBT: DSBT addressing used
diff --git a/gas/testsuite/gas/tic6x/attr-dsbt-opts-mno-dsbt.d b/gas/testsuite/gas/tic6x/attr-dsbt-opts-mno-dsbt.d
new file mode 100644 (file)
index 0000000..84f4c40
--- /dev/null
@@ -0,0 +1,8 @@
+#readelf: -A
+#name: C6X DSBT attribute, -mno-dsbt
+#as: -mdsbt -mno-dsbt
+#source: dummy.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
index 9738df7ce37b54a8e0e18e25b25a3dd34b76abb5..a8e25fd5a231e5d84100f500594bd9f0edc5e61c 100644 (file)
@@ -1,3 +1,8 @@
+2010-10-29  Bernd Schmidt  <bernds@codesourcery.com>
+            Joseph Myers  <joseph@codesourcery.com>
+
+       * tic6x-attrs.h (Tag_ABI_DSBT): New.
+
 2010-10-21  Joseph Myers  <joseph@codesourcery.com>
 
        * tic6x-attrs.h (Tag_C6XABI_Tag_CPU_arch): Change to Tag_ISA,
index 378350248e8237682632b731a8c148de2f7e1955..f131cffd15bce0f1b8b55deabec3d6c7c12b24a8 100644 (file)
@@ -23,3 +23,4 @@
    name and value.  */
 
 TAG(Tag_ISA, 4)
+TAG(Tag_ABI_DSBT, 12)
index c6771a66d4017baa2aafbe5b79fec905bd3596b6..246deefb76eb2bce74130f887fae35af9af884bf 100644 (file)
@@ -1,3 +1,10 @@
+2010-10-29  Bernd Schmidt  <bernds@codesourcery.com>
+            Joseph Myers  <joseph@codesourcery.com>
+
+       * ld-tic6x/attr-dsbt-0.s, ld-tic6x/attr-dsbt-00.d,
+       ld-tic6x/attr-dsbt-01.d, ld-tic6x/attr-dsbt-1.s,
+       ld-tic6x/attr-dsbt-10.d, ld-tic6x/attr-dsbt-11.d: New tests.
+
 2010-10-28  Thomas Schwinge  <thomas@schwinge.name>
 
        * ld-scripts/script.exp: Sort all filename globs.
diff --git a/ld/testsuite/ld-tic6x/attr-dsbt-0.s b/ld/testsuite/ld-tic6x/attr-dsbt-0.s
new file mode 100644 (file)
index 0000000..abd72e3
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_DSBT, 0
diff --git a/ld/testsuite/ld-tic6x/attr-dsbt-00.d b/ld/testsuite/ld-tic6x/attr-dsbt-00.d
new file mode 100644 (file)
index 0000000..c49752d
--- /dev/null
@@ -0,0 +1,10 @@
+#name: C6X DSBT attribute merging, 0 0
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-dsbt-0.s
+#source: attr-dsbt-0.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
diff --git a/ld/testsuite/ld-tic6x/attr-dsbt-01.d b/ld/testsuite/ld-tic6x/attr-dsbt-01.d
new file mode 100644 (file)
index 0000000..5f534a7
--- /dev/null
@@ -0,0 +1,6 @@
+#name: C6X DSBT attribute merging, 0 1
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-dsbt-0.s
+#source: attr-dsbt-1.s
+#warning: .*differ in whether code is compiled for DSBT
diff --git a/ld/testsuite/ld-tic6x/attr-dsbt-1.s b/ld/testsuite/ld-tic6x/attr-dsbt-1.s
new file mode 100644 (file)
index 0000000..75c972e
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_DSBT, 1
diff --git a/ld/testsuite/ld-tic6x/attr-dsbt-10.d b/ld/testsuite/ld-tic6x/attr-dsbt-10.d
new file mode 100644 (file)
index 0000000..283efab
--- /dev/null
@@ -0,0 +1,6 @@
+#name: C6X DSBT attribute merging, 1 0
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-dsbt-1.s
+#source: attr-dsbt-0.s
+#warning: .*differ in whether code is compiled for DSBT
diff --git a/ld/testsuite/ld-tic6x/attr-dsbt-11.d b/ld/testsuite/ld-tic6x/attr-dsbt-11.d
new file mode 100644 (file)
index 0000000..d004c10
--- /dev/null
@@ -0,0 +1,11 @@
+#name: C6X DSBT attribute merging, 1 1
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-dsbt-1.s
+#source: attr-dsbt-1.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_DSBT: DSBT addressing used