From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16444 invoked by alias); 4 Nov 2010 15:52:51 -0000 Received: (qmail 16433 invoked by uid 22791); 4 Nov 2010 15:52:50 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 04 Nov 2010 15:52:43 +0000 Received: (qmail 30655 invoked from network); 4 Nov 2010 15:52:41 -0000 Received: from unknown (HELO digraph.polyomino.org.uk) (joseph@127.0.0.2) by mail.codesourcery.com with ESMTPA; 4 Nov 2010 15:52:41 -0000 Received: from jsm28 (helo=localhost) by digraph.polyomino.org.uk with local-esmtp (Exim 4.72) (envelope-from ) id 1PE27E-00034y-9e for binutils@sourceware.org; Thu, 04 Nov 2010 15:52:40 +0000 Date: Thu, 04 Nov 2010 15:52:00 -0000 From: "Joseph S. Myers" To: binutils@sourceware.org Subject: C6X unknown attribute handling Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org X-SW-Source: 2010-11/txt/msg00093.txt.bz2 This patch, on top of my previous patch , implements the C6000 EABI requirements for handling of unknown attributes. I'll commit it once that previous patch is in. bfd: 2010-11-04 Joseph Myers * elf32-tic6x.c (elf32_tic6x_obj_attrs_handle_unknown): New. (elf32_tic6x_merge_attributes): Use _bfd_elf_merge_unknown_attribute_low and _bfd_elf_merge_unknown_attribute_list. (elf_backend_obj_attrs_handle_unknown): Define. ld/testsuite: 2010-11-04 Joseph Myers * ld-tic6x/attr-unknown-1.d, ld-tic6x/attr-unknown-1000-1.s, ld-tic6x/attr-unknown-1000-2.s, ld-tic6x/attr-unknown-1024-1.s, ld-tic6x/attr-unknown-2.d, ld-tic6x/attr-unknown-3.d, ld-tic6x/attr-unknown-4.d, ld-tic6x/attr-unknown-5.d, ld-tic6x/attr-unknown-54-1.s, ld-tic6x/attr-unknown-55-a.s, ld-tic6x/attr-unknown-6.d, ld-tic6x/attr-unknown-7.d, ld-tic6x/attr-unknown-71-a.s, ld-tic6x/attr-unknown-71-b.s: New tests. Index: bfd/elf32-tic6x.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-tic6x.c,v retrieving revision 1.12 diff -u -p -r1.12 elf32-tic6x.c --- bfd/elf32-tic6x.c 2 Nov 2010 14:36:34 -0000 1.12 +++ bfd/elf32-tic6x.c 4 Nov 2010 15:41:46 -0000 @@ -1679,6 +1679,26 @@ elf32_tic6x_obj_attrs_order (int num) return num; } +static bfd_boolean +elf32_tic6x_obj_attrs_handle_unknown (bfd *abfd, int tag) +{ + if ((tag & 127) < 64) + { + _bfd_error_handler + (_("%B: error: unknown mandatory EABI object attribute %d"), + abfd, tag); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + else + { + _bfd_error_handler + (_("%B: warning: unknown EABI object attribute %d"), + abfd, tag); + return TRUE; + } +} + /* Merge the Tag_ISA attribute values ARCH1 and ARCH2 and return the merged value. At present, all merges succeed, so no return value for errors is defined. */ @@ -1938,7 +1958,13 @@ elf32_tic6x_merge_attributes (bfd *ibfd, out_attr[i].s = NULL; break; + case Tag_ABI_compatibility: + /* Merged in _bfd_elf_merge_object_attributes. */ + break; + default: + result + = result && _bfd_elf_merge_unknown_attribute_low (ibfd, obfd, i); break; } @@ -1950,6 +1976,8 @@ elf32_tic6x_merge_attributes (bfd *ibfd, if (!_bfd_elf_merge_object_attributes (ibfd, obfd)) return FALSE; + result &= _bfd_elf_merge_unknown_attribute_list (ibfd, obfd); + return result; } @@ -1984,6 +2012,7 @@ elf32_tic6x_merge_private_bfd_data (bfd #define elf_backend_may_use_rel_p 1 #define elf_backend_may_use_rela_p 1 #define elf_backend_obj_attrs_arg_type elf32_tic6x_obj_attrs_arg_type +#define elf_backend_obj_attrs_handle_unknown elf32_tic6x_obj_attrs_handle_unknown #define elf_backend_obj_attrs_order elf32_tic6x_obj_attrs_order #define elf_backend_obj_attrs_section ".c6xabi.attributes" #define elf_backend_obj_attrs_section_type SHT_C6000_ATTRIBUTES Index: ld/testsuite/ld-tic6x/attr-unknown-1.d =================================================================== RCS file: ld/testsuite/ld-tic6x/attr-unknown-1.d diff -N ld/testsuite/ld-tic6x/attr-unknown-1.d --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-tic6x/attr-unknown-1.d 4 Nov 2010 15:41:46 -0000 @@ -0,0 +1,6 @@ +#name: C6X unknown attribute merging 1 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-unknown-54-1.s +#source: attr-unknown-54-1.s +#error: .*error: unknown mandatory EABI object attribute 54 Index: ld/testsuite/ld-tic6x/attr-unknown-1000-1.s =================================================================== RCS file: ld/testsuite/ld-tic6x/attr-unknown-1000-1.s diff -N ld/testsuite/ld-tic6x/attr-unknown-1000-1.s --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-tic6x/attr-unknown-1000-1.s 4 Nov 2010 15:41:46 -0000 @@ -0,0 +1 @@ +.c6xabi_attribute 1000, 1 Index: ld/testsuite/ld-tic6x/attr-unknown-1000-2.s =================================================================== RCS file: ld/testsuite/ld-tic6x/attr-unknown-1000-2.s diff -N ld/testsuite/ld-tic6x/attr-unknown-1000-2.s --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-tic6x/attr-unknown-1000-2.s 4 Nov 2010 15:41:46 -0000 @@ -0,0 +1 @@ +.c6xabi_attribute 1000, 2 Index: ld/testsuite/ld-tic6x/attr-unknown-1024-1.s =================================================================== RCS file: ld/testsuite/ld-tic6x/attr-unknown-1024-1.s diff -N ld/testsuite/ld-tic6x/attr-unknown-1024-1.s --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-tic6x/attr-unknown-1024-1.s 4 Nov 2010 15:41:46 -0000 @@ -0,0 +1 @@ +.c6xabi_attribute 1024, 1 Index: ld/testsuite/ld-tic6x/attr-unknown-2.d =================================================================== RCS file: ld/testsuite/ld-tic6x/attr-unknown-2.d diff -N ld/testsuite/ld-tic6x/attr-unknown-2.d --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-tic6x/attr-unknown-2.d 4 Nov 2010 15:41:46 -0000 @@ -0,0 +1,6 @@ +#name: C6X unknown attribute merging 2 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-unknown-55-a.s +#source: attr-unknown-55-a.s +#error: .*error: unknown mandatory EABI object attribute 55 Index: ld/testsuite/ld-tic6x/attr-unknown-3.d =================================================================== RCS file: ld/testsuite/ld-tic6x/attr-unknown-3.d diff -N ld/testsuite/ld-tic6x/attr-unknown-3.d --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-tic6x/attr-unknown-3.d 4 Nov 2010 15:41:46 -0000 @@ -0,0 +1,12 @@ +#name: C6X unknown attribute merging 3 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-unknown-71-a.s +#source: attr-unknown-71-a.s +#warning: .*warning: unknown EABI object attribute 71 +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_unknown_71: "a" Index: ld/testsuite/ld-tic6x/attr-unknown-4.d =================================================================== RCS file: ld/testsuite/ld-tic6x/attr-unknown-4.d diff -N ld/testsuite/ld-tic6x/attr-unknown-4.d --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-tic6x/attr-unknown-4.d 4 Nov 2010 15:41:46 -0000 @@ -0,0 +1,11 @@ +#name: C6X unknown attribute merging 4 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-unknown-71-a.s +#source: attr-unknown-71-b.s +#warning: .*warning: unknown EABI object attribute 71 +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x Index: ld/testsuite/ld-tic6x/attr-unknown-5.d =================================================================== RCS file: ld/testsuite/ld-tic6x/attr-unknown-5.d diff -N ld/testsuite/ld-tic6x/attr-unknown-5.d --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-tic6x/attr-unknown-5.d 4 Nov 2010 15:41:46 -0000 @@ -0,0 +1,12 @@ +#name: C6X unknown attribute merging 5 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-unknown-1000-1.s +#source: attr-unknown-1000-1.s +#warning: .*warning: unknown EABI object attribute 1000 +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_unknown_1000: 1 \(0x1\) Index: ld/testsuite/ld-tic6x/attr-unknown-54-1.s =================================================================== RCS file: ld/testsuite/ld-tic6x/attr-unknown-54-1.s diff -N ld/testsuite/ld-tic6x/attr-unknown-54-1.s --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-tic6x/attr-unknown-54-1.s 4 Nov 2010 15:41:46 -0000 @@ -0,0 +1 @@ +.c6xabi_attribute 54, 1 Index: ld/testsuite/ld-tic6x/attr-unknown-55-a.s =================================================================== RCS file: ld/testsuite/ld-tic6x/attr-unknown-55-a.s diff -N ld/testsuite/ld-tic6x/attr-unknown-55-a.s --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-tic6x/attr-unknown-55-a.s 4 Nov 2010 15:41:46 -0000 @@ -0,0 +1 @@ +.c6xabi_attribute 55, "a" Index: ld/testsuite/ld-tic6x/attr-unknown-6.d =================================================================== RCS file: ld/testsuite/ld-tic6x/attr-unknown-6.d diff -N ld/testsuite/ld-tic6x/attr-unknown-6.d --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-tic6x/attr-unknown-6.d 4 Nov 2010 15:41:46 -0000 @@ -0,0 +1,11 @@ +#name: C6X unknown attribute merging 6 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-unknown-1000-1.s +#source: attr-unknown-1000-2.s +#warning: .*warning: unknown EABI object attribute 1000 +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x Index: ld/testsuite/ld-tic6x/attr-unknown-7.d =================================================================== RCS file: ld/testsuite/ld-tic6x/attr-unknown-7.d diff -N ld/testsuite/ld-tic6x/attr-unknown-7.d --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-tic6x/attr-unknown-7.d 4 Nov 2010 15:41:46 -0000 @@ -0,0 +1,6 @@ +#name: C6X unknown attribute merging 7 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-unknown-1024-1.s +#source: attr-unknown-1024-1.s +#error: .*error: unknown mandatory EABI object attribute 1024 Index: ld/testsuite/ld-tic6x/attr-unknown-71-a.s =================================================================== RCS file: ld/testsuite/ld-tic6x/attr-unknown-71-a.s diff -N ld/testsuite/ld-tic6x/attr-unknown-71-a.s --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-tic6x/attr-unknown-71-a.s 4 Nov 2010 15:41:46 -0000 @@ -0,0 +1 @@ +.c6xabi_attribute 71, "a" Index: ld/testsuite/ld-tic6x/attr-unknown-71-b.s =================================================================== RCS file: ld/testsuite/ld-tic6x/attr-unknown-71-b.s diff -N ld/testsuite/ld-tic6x/attr-unknown-71-b.s --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-tic6x/attr-unknown-71-b.s 4 Nov 2010 15:41:46 -0000 @@ -0,0 +1 @@ +.c6xabi_attribute 71, "b" -- Joseph S. Myers joseph@codesourcery.com