bfd:
authorJoseph Myers <joseph@codesourcery.com>
Fri, 29 Oct 2010 16:47:55 +0000 (16:47 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 29 Oct 2010 16:47:55 +0000 (16:47 +0000)
* elf32-tic6x.c (elf32_tic6x_obj_attrs_arg_type): Check
Tag_ABI_compatibility not Tag_compatibility.
(elf32_tic6x_merge_attributes): Update compatibility attribute
name in comment.  Return FALSE if merging common attributes fails.

binutils:
* readelf.c (display_tic6x_attribute): Use Tag_ABI_compatibility
not hardcoded 32.  Display name of this attribute.

gas:
* doc/c-tic6x.texi (TIC6X Directives): Mention
Tag_ABI_compatibility.

gas/testsuite:
* gas/tic6x/attr-compatibility-directive-1.d,
gas/tic6x/attr-compatibility-directive-1.s,
gas/tic6x/attr-compatibility-directive-2.d,
gas/tic6x/attr-compatibility-directive-2.s: New tests.

include/elf:
* tic6x-attrs.h (Tag_ABI_compatibility): Define.

ld/testsuite:
* ld-tic6x/attr-compatibility-gnu-gnu.d,
ld-tic6x/attr-compatibility-gnu-other.d,
ld-tic6x/attr-compatibility-gnu.s,
ld-tic6x/attr-compatibility-other-gnu.d,
ld-tic6x/attr-compatibility-other-other.d,
ld-tic6x/attr-compatibility-other.s: New tests.

20 files changed:
bfd/ChangeLog
bfd/elf32-tic6x.c
binutils/ChangeLog
binutils/readelf.c
gas/ChangeLog
gas/doc/c-tic6x.texi
gas/testsuite/ChangeLog
gas/testsuite/gas/tic6x/attr-compatibility-directive-1.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-compatibility-directive-1.s [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-compatibility-directive-2.d [new file with mode: 0644]
gas/testsuite/gas/tic6x/attr-compatibility-directive-2.s [new file with mode: 0644]
include/elf/ChangeLog
include/elf/tic6x-attrs.h
ld/testsuite/ChangeLog
ld/testsuite/ld-tic6x/attr-compatibility-gnu-gnu.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-compatibility-gnu-other.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-compatibility-gnu.s [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-compatibility-other-gnu.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-compatibility-other-other.d [new file with mode: 0644]
ld/testsuite/ld-tic6x/attr-compatibility-other.s [new file with mode: 0644]

index faccc5ff6fb8edd9c3dd5bb334d0c236bf005ea4..430ead3616aef70f596f117e4ab87ef0207be14b 100644 (file)
@@ -1,3 +1,10 @@
+2010-10-29  Joseph Myers  <joseph@codesourcery.com>
+
+       * elf32-tic6x.c (elf32_tic6x_obj_attrs_arg_type): Check
+       Tag_ABI_compatibility not Tag_compatibility.
+       (elf32_tic6x_merge_attributes): Update compatibility attribute
+       name in comment.  Return FALSE if merging common attributes fails.
+
 2010-10-29  Nick Clifton  <nickc@redhat.com>
 
        PR bintils/6962
index 219e73dd5a6924bc41d725de0571affe5005eace..3e8564a4335112c15d2dc1bae1faff891a300d38 100644 (file)
@@ -1661,7 +1661,7 @@ elf32_tic6x_relocate_section (bfd *output_bfd,
 static int
 elf32_tic6x_obj_attrs_arg_type (int tag)
 {
-  if (tag == Tag_compatibility)
+  if (tag == Tag_ABI_compatibility)
     return ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_STR_VAL;
   else
     /* Correct for known attributes, arbitrary for others.  */
@@ -1729,8 +1729,9 @@ elf32_tic6x_merge_attributes (bfd *ibfd, bfd *obfd)
        (_("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);
+  /* Merge Tag_ABI_compatibility attributes and any common GNU ones.  */
+  if (!_bfd_elf_merge_object_attributes (ibfd, obfd))
+    return FALSE;
 
   return TRUE;
 }
index 428d68e957d90025b5cfd091b350a1d875190de8..8faa24207d544f09b7844c4a79b55876b4c168a5 100644 (file)
@@ -1,3 +1,8 @@
+2010-10-29  Joseph Myers  <joseph@codesourcery.com>
+
+       * readelf.c (display_tic6x_attribute): Use Tag_ABI_compatibility
+       not hardcoded 32.  Display name of this attribute.
+
 2010-10-29  H.J. Lu  <hongjiu.lu@intel.com>
 
        * addr2line.c (process_file): Set BFD_DECOMPRESS.
index 3c8c020c7e211ddcb287c0e166146e8f115f1416..44feac42f48b1835998e1658f14b960f3508c4a0 100644 (file)
@@ -10822,11 +10822,10 @@ display_tic6x_attribute (unsigned char * p)
        }
       return p;
 
-    case 32:
-      /* Tag_compatibility - treated as generic by binutils for now
-        although not currently specified for C6X.  */
+    case Tag_ABI_compatibility:
       val = read_uleb128 (p, &len);
       p += len;
+      printf ("  Tag_ABI_compatibility: ");
       printf (_("flag = %d, vendor = %s\n"), val, p);
       p += strlen ((char *) p) + 1;
       return p;
index efd7d60490c8c10b501a87cab7bb153645648003..c4500195cfc11b15c90605b17f7da061e21394f7 100644 (file)
@@ -1,3 +1,8 @@
+2010-10-29  Joseph Myers  <joseph@codesourcery.com>
+
+       * doc/c-tic6x.texi (TIC6X Directives): Mention
+       Tag_ABI_compatibility.
+
 2010-10-29  H.J. Lu  <hongjiu.lu@intel.com>
 
        * write.c (compress_debug): Optimize section flags check.
index e729cac763685d0e34e370b81c9aec517093fb10..cd8be230217f6af39f761b990e32d9eb7a085cbe 100644 (file)
@@ -125,7 +125,7 @@ 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} or @code{Tag_ABI_DSBT}.  The
+@code{Tag_ISA}, @code{Tag_ABI_DSBT} and @code{Tag_ABI_compatibility}.  The
 @var{value} is either a @code{number}, @code{"string"}, or
 @code{number, "string"} depending on the tag.
 
index cc101785f2f325bb82032903d3f640cb736faf37..72e26339253bcf77fa746697a7c890a2e5cc4144 100644 (file)
@@ -1,3 +1,10 @@
+2010-10-29  Joseph Myers  <joseph@codesourcery.com>
+
+       * gas/tic6x/attr-compatibility-directive-1.d,
+       gas/tic6x/attr-compatibility-directive-1.s,
+       gas/tic6x/attr-compatibility-directive-2.d,
+       gas/tic6x/attr-compatibility-directive-2.s: New tests.
+
 2010-10-29  H.J. Lu  <hongjiu.lu@intel.com>
 
        * elf/dwarf2-1.s: Replace .zdebug_abbrev section with
diff --git a/gas/testsuite/gas/tic6x/attr-compatibility-directive-1.d b/gas/testsuite/gas/tic6x/attr-compatibility-directive-1.d
new file mode 100644 (file)
index 0000000..73f6bea
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X compatibility attribute, directives 1
+#as:
+#source: attr-compatibility-directive-1.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_compatibility: flag = 1, vendor = gnu
diff --git a/gas/testsuite/gas/tic6x/attr-compatibility-directive-1.s b/gas/testsuite/gas/tic6x/attr-compatibility-directive-1.s
new file mode 100644 (file)
index 0000000..b013058
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_compatibility, 1, "gnu"
diff --git a/gas/testsuite/gas/tic6x/attr-compatibility-directive-2.d b/gas/testsuite/gas/tic6x/attr-compatibility-directive-2.d
new file mode 100644 (file)
index 0000000..fc8c39e
--- /dev/null
@@ -0,0 +1,9 @@
+#readelf: -A
+#name: C6X compatibility attribute, directives 2
+#as:
+#source: attr-compatibility-directive-2.s
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_compatibility: flag = 1, vendor = gnu
diff --git a/gas/testsuite/gas/tic6x/attr-compatibility-directive-2.s b/gas/testsuite/gas/tic6x/attr-compatibility-directive-2.s
new file mode 100644 (file)
index 0000000..4367b7a
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute 32, 1, "gnu"
index a8e25fd5a231e5d84100f500594bd9f0edc5e61c..de57262e9f7eb2aa562006aa756a2af7490f8493 100644 (file)
@@ -1,3 +1,7 @@
+2010-10-29  Joseph Myers  <joseph@codesourcery.com>
+
+       * tic6x-attrs.h (Tag_ABI_compatibility): Define.
+
 2010-10-29  Bernd Schmidt  <bernds@codesourcery.com>
             Joseph Myers  <joseph@codesourcery.com>
 
index f131cffd15bce0f1b8b55deabec3d6c7c12b24a8..c8d8332d6ed95a998d6a1e0617f823e1a12bc106 100644 (file)
@@ -24,3 +24,4 @@
 
 TAG(Tag_ISA, 4)
 TAG(Tag_ABI_DSBT, 12)
+TAG(Tag_ABI_compatibility, 32)
index 18533d6f7c6f6e3a500a669c551cea0ecf1eb8c5..0f80eb3ba0807c50fac25c8c7d5ffb6db92b6dea 100644 (file)
@@ -1,3 +1,12 @@
+2010-10-29  Joseph Myers  <joseph@codesourcery.com>
+
+       * ld-tic6x/attr-compatibility-gnu-gnu.d,
+       ld-tic6x/attr-compatibility-gnu-other.d,
+       ld-tic6x/attr-compatibility-gnu.s,
+       ld-tic6x/attr-compatibility-other-gnu.d,
+       ld-tic6x/attr-compatibility-other-other.d,
+       ld-tic6x/attr-compatibility-other.s: New tests.
+
 2010-10-29  H.J. Lu  <hongjiu.lu@intel.com>
 
        * ld-elf/compress1c.d: Only run for Linux targets.
diff --git a/ld/testsuite/ld-tic6x/attr-compatibility-gnu-gnu.d b/ld/testsuite/ld-tic6x/attr-compatibility-gnu-gnu.d
new file mode 100644 (file)
index 0000000..4cba64e
--- /dev/null
@@ -0,0 +1,11 @@
+#name: C6X compatibility attribute merging, gnu gnu
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-compatibility-gnu.s
+#source: attr-compatibility-gnu.s
+#readelf: -A
+
+Attribute Section: c6xabi
+File Attributes
+  Tag_ISA: C674x
+  Tag_ABI_compatibility: flag = 1, vendor = gnu
diff --git a/ld/testsuite/ld-tic6x/attr-compatibility-gnu-other.d b/ld/testsuite/ld-tic6x/attr-compatibility-gnu-other.d
new file mode 100644 (file)
index 0000000..423ab07
--- /dev/null
@@ -0,0 +1,6 @@
+#name: C6X compatibility attribute merging, gnu other
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-compatibility-gnu.s
+#source: attr-compatibility-other.s
+#error: .*Object has vendor-specific contents that must be processed by the 'other' toolchain
diff --git a/ld/testsuite/ld-tic6x/attr-compatibility-gnu.s b/ld/testsuite/ld-tic6x/attr-compatibility-gnu.s
new file mode 100644 (file)
index 0000000..b013058
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_compatibility, 1, "gnu"
diff --git a/ld/testsuite/ld-tic6x/attr-compatibility-other-gnu.d b/ld/testsuite/ld-tic6x/attr-compatibility-other-gnu.d
new file mode 100644 (file)
index 0000000..80d73e5
--- /dev/null
@@ -0,0 +1,6 @@
+#name: C6X compatibility attribute merging, other gnu
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-compatibility-other.s
+#source: attr-compatibility-gnu.s
+#error: .*Object tag '1, gnu' is incompatible with tag '1, other'
diff --git a/ld/testsuite/ld-tic6x/attr-compatibility-other-other.d b/ld/testsuite/ld-tic6x/attr-compatibility-other-other.d
new file mode 100644 (file)
index 0000000..0ebd99b
--- /dev/null
@@ -0,0 +1,6 @@
+#name: C6X compatibility attribute merging, other other
+#as: -mlittle-endian
+#ld: -r -melf32_tic6x_le
+#source: attr-compatibility-other.s
+#source: attr-compatibility-other.s
+#error: .*Object has vendor-specific contents that must be processed by the 'other' toolchain
diff --git a/ld/testsuite/ld-tic6x/attr-compatibility-other.s b/ld/testsuite/ld-tic6x/attr-compatibility-other.s
new file mode 100644 (file)
index 0000000..38a605a
--- /dev/null
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_compatibility, 1, "other"