summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2010-10-29 16:47:51 +0000
committerJoseph Myers <joseph@codesourcery.com>2010-10-29 16:47:51 +0000
commitd4e895e4765c8fcb67df9cbb0a31ff0fdd3c2882 (patch)
treee736ec76e84738858909c14d8e5d535d2c6c66dc
parent0eef930edd6562c8658bb4f369780acc9c12f1a2 (diff)
downloadbinutils-redhat-d4e895e4765c8fcb67df9cbb0a31ff0fdd3c2882.tar.gz
bfd:
* 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.
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/elf32-tic6x.c7
-rw-r--r--binutils/ChangeLog5
-rw-r--r--binutils/readelf.c5
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/doc/c-tic6x.texi2
-rw-r--r--gas/testsuite/ChangeLog7
-rw-r--r--gas/testsuite/gas/tic6x/attr-compatibility-directive-1.d9
-rw-r--r--gas/testsuite/gas/tic6x/attr-compatibility-directive-1.s1
-rw-r--r--gas/testsuite/gas/tic6x/attr-compatibility-directive-2.d9
-rw-r--r--gas/testsuite/gas/tic6x/attr-compatibility-directive-2.s1
-rw-r--r--include/elf/ChangeLog4
-rw-r--r--include/elf/tic6x-attrs.h1
-rw-r--r--ld/testsuite/ChangeLog9
-rw-r--r--ld/testsuite/ld-tic6x/attr-compatibility-gnu-gnu.d11
-rw-r--r--ld/testsuite/ld-tic6x/attr-compatibility-gnu-other.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-compatibility-gnu.s1
-rw-r--r--ld/testsuite/ld-tic6x/attr-compatibility-other-gnu.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-compatibility-other-other.d6
-rw-r--r--ld/testsuite/ld-tic6x/attr-compatibility-other.s1
20 files changed, 96 insertions, 7 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index faccc5ff6f..430ead3616 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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
diff --git a/bfd/elf32-tic6x.c b/bfd/elf32-tic6x.c
index 219e73dd5a..3e8564a433 100644
--- a/bfd/elf32-tic6x.c
+++ b/bfd/elf32-tic6x.c
@@ -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;
}
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 428d68e957..8faa24207d 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -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.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 3c8c020c7e..44feac42f4 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -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;
diff --git a/gas/ChangeLog b/gas/ChangeLog
index efd7d60490..c4500195cf 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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.
diff --git a/gas/doc/c-tic6x.texi b/gas/doc/c-tic6x.texi
index e729cac763..cd8be23021 100644
--- a/gas/doc/c-tic6x.texi
+++ b/gas/doc/c-tic6x.texi
@@ -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.
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index cc101785f2..72e2633925 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -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
index 0000000000..73f6bead74
--- /dev/null
+++ b/gas/testsuite/gas/tic6x/attr-compatibility-directive-1.d
@@ -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
index 0000000000..b0130587b3
--- /dev/null
+++ b/gas/testsuite/gas/tic6x/attr-compatibility-directive-1.s
@@ -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
index 0000000000..fc8c39ecc5
--- /dev/null
+++ b/gas/testsuite/gas/tic6x/attr-compatibility-directive-2.d
@@ -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
index 0000000000..4367b7a050
--- /dev/null
+++ b/gas/testsuite/gas/tic6x/attr-compatibility-directive-2.s
@@ -0,0 +1 @@
+.c6xabi_attribute 32, 1, "gnu"
diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog
index a8e25fd5a2..de57262e9f 100644
--- a/include/elf/ChangeLog
+++ b/include/elf/ChangeLog
@@ -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>
diff --git a/include/elf/tic6x-attrs.h b/include/elf/tic6x-attrs.h
index f131cffd15..c8d8332d6e 100644
--- a/include/elf/tic6x-attrs.h
+++ b/include/elf/tic6x-attrs.h
@@ -24,3 +24,4 @@
TAG(Tag_ISA, 4)
TAG(Tag_ABI_DSBT, 12)
+TAG(Tag_ABI_compatibility, 32)
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 18533d6f7c..0f80eb3ba0 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -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
index 0000000000..4cba64ef26
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-compatibility-gnu-gnu.d
@@ -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
index 0000000000..423ab07516
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-compatibility-gnu-other.d
@@ -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
index 0000000000..b0130587b3
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-compatibility-gnu.s
@@ -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
index 0000000000..80d73e50fa
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-compatibility-other-gnu.d
@@ -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
index 0000000000..0ebd99be9c
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-compatibility-other-other.d
@@ -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
index 0000000000..38a605a4b0
--- /dev/null
+++ b/ld/testsuite/ld-tic6x/attr-compatibility-other.s
@@ -0,0 +1 @@
+.c6xabi_attribute Tag_ABI_compatibility, 1, "other"