2006-11-29 Paul Brook <paul@codesourcery.com>
Julian Brown <julian@codesourcery.com> bfd/ * elf32-arm.c (copy_eabi_attributes): Correct starting offset. (elf32_arm_merge_eabi_attributes): Mark output as initialized. Only set Tag_CPU_name and Tag_ABI_PCS_R9_use if input attribute is present.
This commit is contained in:
parent
a217f3f543
commit
004ae5266b
|
@ -1,3 +1,11 @@
|
||||||
|
2006-11-29 Paul Brook <paul@codesourcery.com>
|
||||||
|
Julian Brown <julian@codesourcery.com>
|
||||||
|
|
||||||
|
* elf32-arm.c (copy_eabi_attributes): Correct starting offset.
|
||||||
|
(elf32_arm_merge_eabi_attributes): Mark output as initialized.
|
||||||
|
Only set Tag_CPU_name and Tag_ABI_PCS_R9_use if input attribute
|
||||||
|
is present.
|
||||||
|
|
||||||
2006-11-27 Bob Wilson <bob.wilson@acm.org>
|
2006-11-27 Bob Wilson <bob.wilson@acm.org>
|
||||||
|
|
||||||
* elf32-xtensa.c (elf_xtensa_special_sections): Add .xtensa.info.
|
* elf32-xtensa.c (elf_xtensa_special_sections): Add .xtensa.info.
|
||||||
|
|
|
@ -6040,8 +6040,8 @@ copy_eabi_attributes (bfd *ibfd, bfd *obfd)
|
||||||
aeabi_attribute_list *list;
|
aeabi_attribute_list *list;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
in_attr = elf32_arm_tdata (ibfd)->known_eabi_attributes;
|
in_attr = &elf32_arm_tdata (ibfd)->known_eabi_attributes[4];
|
||||||
out_attr = elf32_arm_tdata (obfd)->known_eabi_attributes;
|
out_attr = &elf32_arm_tdata (obfd)->known_eabi_attributes[4];
|
||||||
for (i = 4; i < NUM_KNOWN_ATTRIBUTES; i++)
|
for (i = 4; i < NUM_KNOWN_ATTRIBUTES; i++)
|
||||||
{
|
{
|
||||||
out_attr->i = in_attr->i;
|
out_attr->i = in_attr->i;
|
||||||
|
@ -6172,16 +6172,17 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
|
||||||
static const int order_312[3] = {3, 1, 2};
|
static const int order_312[3] = {3, 1, 2};
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!elf32_arm_tdata (ibfd)->known_eabi_attributes[0].i)
|
if (!elf32_arm_tdata (obfd)->known_eabi_attributes[0].i)
|
||||||
{
|
{
|
||||||
/* This is the first object. Copy the attributes. */
|
/* This is the first object. Copy the attributes. */
|
||||||
copy_eabi_attributes (ibfd, obfd);
|
copy_eabi_attributes (ibfd, obfd);
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Use the Tag_null value to indicate the attributes have been
|
/* Use the Tag_null value to indicate the attributes have been
|
||||||
initialized. */
|
initialized. */
|
||||||
elf32_arm_tdata (ibfd)->known_eabi_attributes[0].i = 1;
|
elf32_arm_tdata (obfd)->known_eabi_attributes[0].i = 1;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
in_attr = elf32_arm_tdata (ibfd)->known_eabi_attributes;
|
in_attr = elf32_arm_tdata (ibfd)->known_eabi_attributes;
|
||||||
out_attr = elf32_arm_tdata (obfd)->known_eabi_attributes;
|
out_attr = elf32_arm_tdata (obfd)->known_eabi_attributes;
|
||||||
|
@ -6207,8 +6208,11 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
|
||||||
{
|
{
|
||||||
case Tag_CPU_raw_name:
|
case Tag_CPU_raw_name:
|
||||||
case Tag_CPU_name:
|
case Tag_CPU_name:
|
||||||
/* Use whichever has the greatest architecture requirements. */
|
/* Use whichever has the greatest architecture requirements. We
|
||||||
if (in_attr[Tag_CPU_arch].i > out_attr[Tag_CPU_arch].i)
|
won't necessarily have both the above tags, so make sure input
|
||||||
|
name is non-NULL. */
|
||||||
|
if (in_attr[Tag_CPU_arch].i > out_attr[Tag_CPU_arch].i
|
||||||
|
&& in_attr[i].s)
|
||||||
out_attr[i].s = attr_strdup(obfd, in_attr[i].s);
|
out_attr[i].s = attr_strdup(obfd, in_attr[i].s);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -6260,7 +6264,8 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Tag_ABI_PCS_R9_use:
|
case Tag_ABI_PCS_R9_use:
|
||||||
if (out_attr[i].i != AEABI_R9_unused
|
if (in_attr[i].i != out_attr[i].i
|
||||||
|
&& out_attr[i].i != AEABI_R9_unused
|
||||||
&& in_attr[i].i != AEABI_R9_unused)
|
&& in_attr[i].i != AEABI_R9_unused)
|
||||||
{
|
{
|
||||||
_bfd_error_handler
|
_bfd_error_handler
|
||||||
|
|
Loading…
Reference in New Issue