+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
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. */
(_("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;
}
+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.
}
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;
+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.
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.
+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
--- /dev/null
+#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
--- /dev/null
+.c6xabi_attribute Tag_ABI_compatibility, 1, "gnu"
--- /dev/null
+#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
--- /dev/null
+.c6xabi_attribute 32, 1, "gnu"
+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>
TAG(Tag_ISA, 4)
TAG(Tag_ABI_DSBT, 12)
+TAG(Tag_ABI_compatibility, 32)
+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.
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+.c6xabi_attribute Tag_ABI_compatibility, 1, "gnu"
--- /dev/null
+#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'
--- /dev/null
+#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
--- /dev/null
+.c6xabi_attribute Tag_ABI_compatibility, 1, "other"