This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

C6X DSBT attribute


I've applied this patch to add support for the C6X Tag_ABI_DSBT attribute.  
Several more attributes included in the latest ABI version will follow in 
due course.

bfd:
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.

Index: bfd/elf32-tic6x.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-tic6x.c,v
retrieving revision 1.9
diff -u -r1.9 elf32-tic6x.c
--- bfd/elf32-tic6x.c	25 Oct 2010 15:54:14 -0000	1.9
+++ bfd/elf32-tic6x.c	29 Oct 2010 00:03:10 -0000
@@ -1723,6 +1723,12 @@
     = 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: binutils/readelf.c
===================================================================
RCS file: /cvs/src/src/binutils/readelf.c,v
retrieving revision 1.518
diff -u -r1.518 readelf.c
--- binutils/readelf.c	28 Oct 2010 06:00:13 -0000	1.518
+++ binutils/readelf.c	29 Oct 2010 00:03:11 -0000
@@ -10810,6 +10810,24 @@
 	}
       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: gas/config/tc-tic6x.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-tic6x.c,v
retrieving revision 1.9
diff -u -r1.9 tc-tic6x.c
--- gas/config/tc-tic6x.c	25 Oct 2010 15:33:54 -0000	1.9
+++ gas/config/tc-tic6x.c	29 Oct 2010 00:03:12 -0000
@@ -50,6 +50,8 @@
     OPTION_MNO_ATOMIC,
     OPTION_MBIG_ENDIAN,
     OPTION_MLITTLE_ENDIAN,
+    OPTION_MDSBT,
+    OPTION_MNO_DSBT,
     OPTION_MGENERATE_REL
   };
 
@@ -60,6 +62,8 @@
     { "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 @@
 /* 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 @@
       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 @@
   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 @@
 
 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_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: gas/doc/as.texinfo
===================================================================
RCS file: /cvs/src/src/gas/doc/as.texinfo,v
retrieving revision 1.223
diff -u -r1.223 as.texinfo
--- gas/doc/as.texinfo	28 Oct 2010 11:40:26 -0000	1.223
+++ gas/doc/as.texinfo	29 Oct 2010 00:03:13 -0000
@@ -476,7 +476,7 @@
 
 @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 @@
 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: gas/doc/c-tic6x.texi
===================================================================
RCS file: /cvs/src/src/gas/doc/c-tic6x.texi,v
retrieving revision 1.3
diff -u -r1.3 c-tic6x.texi
--- gas/doc/c-tic6x.texi	21 Oct 2010 21:16:52 -0000	1.3
+++ gas/doc/c-tic6x.texi	29 Oct 2010 00:03:13 -0000
@@ -48,6 +48,17 @@
 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 @@
 @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: gas/testsuite/gas/tic6x/attr-dsbt-directive-1.d
===================================================================
RCS file: gas/testsuite/gas/tic6x/attr-dsbt-directive-1.d
diff -N gas/testsuite/gas/tic6x/attr-dsbt-directive-1.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/testsuite/gas/tic6x/attr-dsbt-directive-1.d	29 Oct 2010 00:03:13 -0000
@@ -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
Index: gas/testsuite/gas/tic6x/attr-dsbt-directive-1.s
===================================================================
RCS file: gas/testsuite/gas/tic6x/attr-dsbt-directive-1.s
diff -N gas/testsuite/gas/tic6x/attr-dsbt-directive-1.s
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/testsuite/gas/tic6x/attr-dsbt-directive-1.s	29 Oct 2010 00:03:13 -0000
@@ -0,0 +1 @@
+	.c6xabi_attribute Tag_ABI_DSBT, 1
Index: gas/testsuite/gas/tic6x/attr-dsbt-directive-2.d
===================================================================
RCS file: gas/testsuite/gas/tic6x/attr-dsbt-directive-2.d
diff -N gas/testsuite/gas/tic6x/attr-dsbt-directive-2.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/testsuite/gas/tic6x/attr-dsbt-directive-2.d	29 Oct 2010 00:03:13 -0000
@@ -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
Index: gas/testsuite/gas/tic6x/attr-dsbt-directive-2.s
===================================================================
RCS file: gas/testsuite/gas/tic6x/attr-dsbt-directive-2.s
diff -N gas/testsuite/gas/tic6x/attr-dsbt-directive-2.s
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/testsuite/gas/tic6x/attr-dsbt-directive-2.s	29 Oct 2010 00:03:13 -0000
@@ -0,0 +1 @@
+	.c6xabi_attribute 12, 1
Index: gas/testsuite/gas/tic6x/attr-dsbt-opts-mdsbt.d
===================================================================
RCS file: gas/testsuite/gas/tic6x/attr-dsbt-opts-mdsbt.d
diff -N gas/testsuite/gas/tic6x/attr-dsbt-opts-mdsbt.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/testsuite/gas/tic6x/attr-dsbt-opts-mdsbt.d	29 Oct 2010 00:03:13 -0000
@@ -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
Index: gas/testsuite/gas/tic6x/attr-dsbt-opts-mno-dsbt.d
===================================================================
RCS file: gas/testsuite/gas/tic6x/attr-dsbt-opts-mno-dsbt.d
diff -N gas/testsuite/gas/tic6x/attr-dsbt-opts-mno-dsbt.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/testsuite/gas/tic6x/attr-dsbt-opts-mno-dsbt.d	29 Oct 2010 00:03:13 -0000
@@ -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: include/elf/tic6x-attrs.h
===================================================================
RCS file: /cvs/src/src/include/elf/tic6x-attrs.h,v
retrieving revision 1.2
diff -u -r1.2 tic6x-attrs.h
--- include/elf/tic6x-attrs.h	21 Oct 2010 21:16:53 -0000	1.2
+++ include/elf/tic6x-attrs.h	29 Oct 2010 00:03:13 -0000
@@ -23,3 +23,4 @@
    name and value.  */
 
 TAG(Tag_ISA, 4)
+TAG(Tag_ABI_DSBT, 12)
Index: ld/testsuite/ld-tic6x/attr-dsbt-0.s
===================================================================
RCS file: ld/testsuite/ld-tic6x/attr-dsbt-0.s
diff -N ld/testsuite/ld-tic6x/attr-dsbt-0.s
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ld/testsuite/ld-tic6x/attr-dsbt-0.s	29 Oct 2010 00:03:13 -0000
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_DSBT, 0
Index: ld/testsuite/ld-tic6x/attr-dsbt-00.d
===================================================================
RCS file: ld/testsuite/ld-tic6x/attr-dsbt-00.d
diff -N ld/testsuite/ld-tic6x/attr-dsbt-00.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ld/testsuite/ld-tic6x/attr-dsbt-00.d	29 Oct 2010 00:03:13 -0000
@@ -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
Index: ld/testsuite/ld-tic6x/attr-dsbt-01.d
===================================================================
RCS file: ld/testsuite/ld-tic6x/attr-dsbt-01.d
diff -N ld/testsuite/ld-tic6x/attr-dsbt-01.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ld/testsuite/ld-tic6x/attr-dsbt-01.d	29 Oct 2010 00:03:13 -0000
@@ -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
Index: ld/testsuite/ld-tic6x/attr-dsbt-1.s
===================================================================
RCS file: ld/testsuite/ld-tic6x/attr-dsbt-1.s
diff -N ld/testsuite/ld-tic6x/attr-dsbt-1.s
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ld/testsuite/ld-tic6x/attr-dsbt-1.s	29 Oct 2010 00:03:13 -0000
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_DSBT, 1
Index: ld/testsuite/ld-tic6x/attr-dsbt-10.d
===================================================================
RCS file: ld/testsuite/ld-tic6x/attr-dsbt-10.d
diff -N ld/testsuite/ld-tic6x/attr-dsbt-10.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ld/testsuite/ld-tic6x/attr-dsbt-10.d	29 Oct 2010 00:03:13 -0000
@@ -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
Index: ld/testsuite/ld-tic6x/attr-dsbt-11.d
===================================================================
RCS file: ld/testsuite/ld-tic6x/attr-dsbt-11.d
diff -N ld/testsuite/ld-tic6x/attr-dsbt-11.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ld/testsuite/ld-tic6x/attr-dsbt-11.d	29 Oct 2010 00:03:13 -0000
@@ -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

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]