diff options
author | Joseph Myers <joseph@codesourcery.com> | 2010-11-05 13:04:07 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2010-11-05 13:04:07 +0000 |
commit | 0547accfd9f48d2ee708b5b37c7f909d590dfcdd (patch) | |
tree | 5dc27ec95d75ec33ea74532512559f005f05b3d9 /bfd/elf32-tic6x.c | |
parent | e1a6b26358dae2f75ccb8b57466ad9fa6cf1ed2f (diff) | |
download | gdb-0547accfd9f48d2ee708b5b37c7f909d590dfcdd.zip gdb-0547accfd9f48d2ee708b5b37c7f909d590dfcdd.tar.gz gdb-0547accfd9f48d2ee708b5b37c7f909d590dfcdd.tar.bz2 |
bfd:
* 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:
* 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.
Diffstat (limited to 'bfd/elf32-tic6x.c')
-rw-r--r-- | bfd/elf32-tic6x.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/bfd/elf32-tic6x.c b/bfd/elf32-tic6x.c index 4e91d74..3674a3a 100644 --- a/bfd/elf32-tic6x.c +++ b/bfd/elf32-tic6x.c @@ -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, bfd *obfd) 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, bfd *obfd) 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 *ibfd, bfd *obfd) #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 |