* elf-bfd.h (LEAST_KNOWN_OBJ_ATTRIBUTE): Define.
(struct elf_backend_data): Update comment on obj_attrs_order. * elf-attrs.c (vendor_obj_attr_size, vendor_set_obj_attr_contents, _bfd_elf_copy_obj_attributes): Use LEAST_KNOWN_OBJ_ATTRIBUTE instead of hardcoded 4. * elf32-arm.c (elf32_arm_obj_attrs_order): Use LEAST_KNOWN_OBJ_ATTRIBUTE and LEAST_KNOWN_OBJ_ATTRIBUTE + 1 instead of hardcoded 4 and 5. (elf32_arm_merge_eabi_attributes): Use LEAST_KNOWN_OBJ_ATTRIBUTE instead of hardcoded 4.
This commit is contained in:
parent
91ff43fe2d
commit
3de4a297ec
4 changed files with 35 additions and 13 deletions
|
@ -1,3 +1,16 @@
|
||||||
|
2010-06-15 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
* elf-bfd.h (LEAST_KNOWN_OBJ_ATTRIBUTE): Define.
|
||||||
|
(struct elf_backend_data): Update comment on obj_attrs_order.
|
||||||
|
* elf-attrs.c (vendor_obj_attr_size, vendor_set_obj_attr_contents,
|
||||||
|
_bfd_elf_copy_obj_attributes): Use LEAST_KNOWN_OBJ_ATTRIBUTE
|
||||||
|
instead of hardcoded 4.
|
||||||
|
* elf32-arm.c (elf32_arm_obj_attrs_order): Use
|
||||||
|
LEAST_KNOWN_OBJ_ATTRIBUTE and LEAST_KNOWN_OBJ_ATTRIBUTE + 1
|
||||||
|
instead of hardcoded 4 and 5.
|
||||||
|
(elf32_arm_merge_eabi_attributes): Use LEAST_KNOWN_OBJ_ATTRIBUTE
|
||||||
|
instead of hardcoded 4.
|
||||||
|
|
||||||
2010-06-14 Kevin Buettner <kevinb@redhat.com>
|
2010-06-14 Kevin Buettner <kevinb@redhat.com>
|
||||||
|
|
||||||
* elf32-h8300.c (elf_symbol_leading_char): Define.
|
* elf32-h8300.c (elf_symbol_leading_char): Define.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* ELF attributes support (based on ARM EABI attributes).
|
/* ELF attributes support (based on ARM EABI attributes).
|
||||||
Copyright 2005, 2006, 2007, 2009
|
Copyright 2005, 2006, 2007, 2009, 2010
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
@ -96,7 +96,7 @@ vendor_obj_attr_size (bfd *abfd, int vendor)
|
||||||
|
|
||||||
attr = elf_known_obj_attributes (abfd)[vendor];
|
attr = elf_known_obj_attributes (abfd)[vendor];
|
||||||
size = 0;
|
size = 0;
|
||||||
for (i = 4; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++)
|
for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++)
|
||||||
size += obj_attr_size (i, &attr[i]);
|
size += obj_attr_size (i, &attr[i]);
|
||||||
|
|
||||||
for (list = elf_other_obj_attributes (abfd)[vendor];
|
for (list = elf_other_obj_attributes (abfd)[vendor];
|
||||||
|
@ -188,7 +188,7 @@ vendor_set_obj_attr_contents (bfd *abfd, bfd_byte *contents, bfd_vma size,
|
||||||
p += 4;
|
p += 4;
|
||||||
|
|
||||||
attr = elf_known_obj_attributes (abfd)[vendor];
|
attr = elf_known_obj_attributes (abfd)[vendor];
|
||||||
for (i = 4; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++)
|
for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++)
|
||||||
{
|
{
|
||||||
int tag = i;
|
int tag = i;
|
||||||
if (get_elf_backend_data (abfd)->obj_attrs_order)
|
if (get_elf_backend_data (abfd)->obj_attrs_order)
|
||||||
|
@ -349,9 +349,11 @@ _bfd_elf_copy_obj_attributes (bfd *ibfd, bfd *obfd)
|
||||||
|
|
||||||
for (vendor = OBJ_ATTR_FIRST; vendor <= OBJ_ATTR_LAST; vendor++)
|
for (vendor = OBJ_ATTR_FIRST; vendor <= OBJ_ATTR_LAST; vendor++)
|
||||||
{
|
{
|
||||||
in_attr = &elf_known_obj_attributes (ibfd)[vendor][4];
|
in_attr
|
||||||
out_attr = &elf_known_obj_attributes (obfd)[vendor][4];
|
= &elf_known_obj_attributes (ibfd)[vendor][LEAST_KNOWN_OBJ_ATTRIBUTE];
|
||||||
for (i = 4; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++)
|
out_attr
|
||||||
|
= &elf_known_obj_attributes (obfd)[vendor][LEAST_KNOWN_OBJ_ATTRIBUTE];
|
||||||
|
for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++)
|
||||||
{
|
{
|
||||||
out_attr->type = in_attr->type;
|
out_attr->type = in_attr->type;
|
||||||
out_attr->i = in_attr->i;
|
out_attr->i = in_attr->i;
|
||||||
|
|
|
@ -1245,10 +1245,11 @@ struct elf_backend_data
|
||||||
/* The section type to use for an attributes section. */
|
/* The section type to use for an attributes section. */
|
||||||
unsigned int obj_attrs_section_type;
|
unsigned int obj_attrs_section_type;
|
||||||
|
|
||||||
/* This function determines the order in which any attributes are written.
|
/* This function determines the order in which any attributes are
|
||||||
It must be defined for input in the range 4..NUM_KNOWN_OBJ_ATTRIBUTES-1
|
written. It must be defined for input in the range
|
||||||
(this range is used in order to make unity easy). The returned value is
|
LEAST_KNOWN_OBJ_ATTRIBUTE..NUM_KNOWN_OBJ_ATTRIBUTES-1 (this range
|
||||||
the actual tag number to place in the input position. */
|
is used in order to make unity easy). The returned value is the
|
||||||
|
actual tag number to place in the input position. */
|
||||||
int (*obj_attrs_order) (int);
|
int (*obj_attrs_order) (int);
|
||||||
|
|
||||||
/* This is TRUE if the linker should act like collect and gather
|
/* This is TRUE if the linker should act like collect and gather
|
||||||
|
@ -1412,6 +1413,12 @@ struct bfd_elf_section_data
|
||||||
#define get_elf_backend_data(abfd) \
|
#define get_elf_backend_data(abfd) \
|
||||||
xvec_get_elf_backend_data ((abfd)->xvec)
|
xvec_get_elf_backend_data ((abfd)->xvec)
|
||||||
|
|
||||||
|
/* The least object attributes (within an attributes subsection) known
|
||||||
|
for any target. Some code assumes that the value 0 is not used and
|
||||||
|
the field for that attribute can instead be used as a marker to
|
||||||
|
indicate that attributes have been initialized. */
|
||||||
|
#define LEAST_KNOWN_OBJ_ATTRIBUTE 4
|
||||||
|
|
||||||
/* The maximum number of known object attributes for any target. */
|
/* The maximum number of known object attributes for any target. */
|
||||||
#define NUM_KNOWN_OBJ_ATTRIBUTES 71
|
#define NUM_KNOWN_OBJ_ATTRIBUTES 71
|
||||||
|
|
||||||
|
|
|
@ -9624,9 +9624,9 @@ elf32_arm_obj_attrs_arg_type (int tag)
|
||||||
static int
|
static int
|
||||||
elf32_arm_obj_attrs_order (int num)
|
elf32_arm_obj_attrs_order (int num)
|
||||||
{
|
{
|
||||||
if (num == 4)
|
if (num == LEAST_KNOWN_OBJ_ATTRIBUTE)
|
||||||
return Tag_conformance;
|
return Tag_conformance;
|
||||||
if (num == 5)
|
if (num == LEAST_KNOWN_OBJ_ATTRIBUTE + 1)
|
||||||
return Tag_nodefaults;
|
return Tag_nodefaults;
|
||||||
if ((num - 2) < Tag_nodefaults)
|
if ((num - 2) < Tag_nodefaults)
|
||||||
return num - 2;
|
return num - 2;
|
||||||
|
@ -9932,7 +9932,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 4; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++)
|
for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++)
|
||||||
{
|
{
|
||||||
/* Merge this attribute with existing attributes. */
|
/* Merge this attribute with existing attributes. */
|
||||||
switch (i)
|
switch (i)
|
||||||
|
|
Loading…
Reference in a new issue