From 2d0bb7614be1a94ab9051c35fe95514b05fc0823 Mon Sep 17 00:00:00 2001 From: Andrew Stubbs Date: Mon, 19 Jan 2009 11:50:31 +0000 Subject: 2009-01-19 Andrew Stubbs bfd/ * elf-attrs.c (is_default_attr): Support defaultless attributes. (bfd_elf_add_obj_attr_int): Get type from _bfd_elf_obj_attrs_arg_type. (bfd_elf_add_obj_attr_string): Likewise. (bfd_elf_add_obj_attr_int_string): Likewise. (_bfd_elf_parse_attributes): Allow for unknown flag bits in type. * elf-bfd.h (struct obj_attribute): Document new flag bit. * elf32-arm.c (elf32_arm_obj_attrs_arg_type): Specify that Tag_nodefaults has no default value. (elf32_arm_merge_eabi_attributes): Modify the Tag_nodefaults comment to reflect the new state. gas/ * read.c (s_vendor_attribute): Allow for unknown flag bits in type. --- bfd/elf-attrs.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'bfd/elf-attrs.c') diff --git a/bfd/elf-attrs.c b/bfd/elf-attrs.c index 4019535..dc26056 100644 --- a/bfd/elf-attrs.c +++ b/bfd/elf-attrs.c @@ -47,6 +47,8 @@ is_default_attr (obj_attribute *attr) return FALSE; if ((attr->type & 2) && attr->s && *attr->s) return FALSE; + if (attr->type & 4) + return FALSE; return TRUE; } @@ -290,7 +292,7 @@ bfd_elf_add_obj_attr_int (bfd *abfd, int vendor, int tag, unsigned int i) obj_attribute *attr; attr = elf_new_obj_attr (abfd, vendor, tag); - attr->type = 1; + attr->type = _bfd_elf_obj_attrs_arg_type (abfd, vendor, tag); attr->i = i; } @@ -313,7 +315,7 @@ bfd_elf_add_obj_attr_string (bfd *abfd, int vendor, int tag, const char *s) obj_attribute *attr; attr = elf_new_obj_attr (abfd, vendor, tag); - attr->type = 2; + attr->type = _bfd_elf_obj_attrs_arg_type (abfd, vendor, tag); attr->s = _bfd_elf_attr_strdup (abfd, s); } @@ -325,7 +327,7 @@ bfd_elf_add_obj_attr_int_string (bfd *abfd, int vendor, int tag, obj_attribute *attr; attr = elf_new_obj_attr (abfd, vendor, tag); - attr->type = 3; + attr->type = _bfd_elf_obj_attrs_arg_type (abfd, vendor, tag); attr->i = i; attr->s = _bfd_elf_attr_strdup (abfd, s); } @@ -487,7 +489,7 @@ _bfd_elf_parse_attributes (bfd *abfd, Elf_Internal_Shdr * hdr) tag = read_unsigned_leb128 (abfd, p, &n); p += n; type = _bfd_elf_obj_attrs_arg_type (abfd, vendor, tag); - switch (type) + switch (type & 3) { case 3: val = read_unsigned_leb128 (abfd, p, &n); -- cgit v1.1