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 faccc5f..430ead3 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 219e73d..3e8564a 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 428d68e..8faa242 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 3c8c020..44feac4 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 efd7d60..c450019 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 e729cac..cd8be23 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 cc10178..72e2633 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 a8e25fd..de57262 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 f131cff..c8d8332 100644 (file)
@@ -24,3 +24,4 @@
 
 TAG(Tag_ISA, 4)
 TAG(Tag_ABI_DSBT, 12)
+TAG(Tag_ABI_compatibility, 32)
index 18533d6..0f80eb3 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"