include/elf/
* ppc.h: Add Tag_GNU_Power_ABI_Struct_Return. bfd/ * elf32-ppc.c (ppc_elf_merge_obj_attributes): Merge Tag_GNU_Power_ABI_Struct_Return. binutils/ * readelf.c (display_power_gnu_attribute): Decode Tag_GNU_Power_ABI_Struct_Return. ld/testsuite/ * ld-powerpc/gnu-attr-12-1.s: New file. * ld-powerpc/gnu-attr-12-2.s: New file. * ld-powerpc/gnu-attr-12-11.d: New file. * ld-powerpc/gnu-attr-12-21.d: New file. * ld-powerpc/powerpc.exp: Run new dump tests.
This commit is contained in:
parent
c764a87698
commit
f82e0623e1
12 changed files with 98 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2008-10-10 Nathan Froyd <froydnj@codesourcery.com>
|
||||||
|
|
||||||
|
* elf32-ppc.c (ppc_elf_merge_obj_attributes): Merge
|
||||||
|
Tag_GNU_Power_ABI_Struct_Return.
|
||||||
|
|
||||||
2008-10-09 Kai Tietz <kai.tietz@onevision.com>
|
2008-10-09 Kai Tietz <kai.tietz@onevision.com>
|
||||||
|
|
||||||
* cofflink.c (_bfd_coff_generic_relocate_section): Dump bfd_vma sized addresses instead of long sized.
|
* cofflink.c (_bfd_coff_generic_relocate_section): Dump bfd_vma sized addresses instead of long sized.
|
||||||
|
|
|
@ -3964,6 +3964,33 @@ ppc_elf_merge_obj_attributes (bfd *ibfd, bfd *obfd)
|
||||||
ibfd, obfd, in_abi, out_abi);
|
ibfd, obfd, in_abi, out_abi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Check for conflicting Tag_GNU_Power_ABI_Struct_Return attributes
|
||||||
|
and merge non-conflicting ones. */
|
||||||
|
in_attr = &in_attrs[Tag_GNU_Power_ABI_Struct_Return];
|
||||||
|
out_attr = &out_attrs[Tag_GNU_Power_ABI_Struct_Return];
|
||||||
|
if (in_attr->i != out_attr->i)
|
||||||
|
{
|
||||||
|
out_attr->type = 1;
|
||||||
|
if (out_attr->i == 0)
|
||||||
|
out_attr->i = in_attr->i;
|
||||||
|
else if (in_attr->i == 0)
|
||||||
|
;
|
||||||
|
else if (out_attr->i == 1 && in_attr->i == 2)
|
||||||
|
_bfd_error_handler
|
||||||
|
(_("Warning: %B uses r3/r4 for small structure returns, %B uses memory"), obfd, ibfd);
|
||||||
|
else if (out_attr->i == 2 && in_attr->i == 1)
|
||||||
|
_bfd_error_handler
|
||||||
|
(_("Warning: %B uses r3/r4 for small structure returns, %B uses memory"), ibfd, obfd);
|
||||||
|
else if (in_attr->i > 2)
|
||||||
|
_bfd_error_handler
|
||||||
|
(_("Warning: %B uses unknown small structure return convention %d"), ibfd,
|
||||||
|
in_attr->i);
|
||||||
|
else
|
||||||
|
_bfd_error_handler
|
||||||
|
(_("Warning: %B uses unknown small structure return convention %d"), obfd,
|
||||||
|
out_attr->i);
|
||||||
|
}
|
||||||
|
|
||||||
/* Merge Tag_compatibility attributes and any common GNU ones. */
|
/* Merge Tag_compatibility attributes and any common GNU ones. */
|
||||||
_bfd_elf_merge_object_attributes (ibfd, obfd);
|
_bfd_elf_merge_object_attributes (ibfd, obfd);
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2008-10-10 Nathan Froyd <froydnj@codesourcery.com>
|
||||||
|
|
||||||
|
* readelf.c (display_power_gnu_attribute): Decode
|
||||||
|
Tag_GNU_Power_ABI_Struct_Return.
|
||||||
|
|
||||||
2008-10-10 Alan Modra <amodra@bigpond.net.au>
|
2008-10-10 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* embedspu.sh: Pass -Wa,-noexecstack to $CC.
|
* embedspu.sh: Pass -Wa,-noexecstack to $CC.
|
||||||
|
|
|
@ -9063,6 +9063,29 @@ display_power_gnu_attribute (unsigned char *p, int tag)
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tag == Tag_GNU_Power_ABI_Struct_Return)
|
||||||
|
{
|
||||||
|
val = read_uleb128 (p, &len);
|
||||||
|
p += len;
|
||||||
|
printf (" Tag_GNU_Power_ABI_Struct_Return: ");
|
||||||
|
switch (val)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
printf ("Any\n");
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
printf ("r3/r4\n");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
printf ("Memory\n");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf ("??? (%d)\n", val);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
if (tag & 1)
|
if (tag & 1)
|
||||||
type = 1; /* String. */
|
type = 1; /* String. */
|
||||||
else
|
else
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2008-10-10 Nathan Froyd <froydnj@codesourcery.com>
|
||||||
|
|
||||||
|
* ppc.h: Add Tag_GNU_Power_ABI_Struct_Return.
|
||||||
|
|
||||||
2008-10-04 Hans-Peter Nilsson <hp@axis.com>
|
2008-10-04 Hans-Peter Nilsson <hp@axis.com>
|
||||||
|
|
||||||
* cris.h (R_CRIS_32_GOT_GD, R_CRIS_16_GOT_GD, R_CRIS_32_GD)
|
* cris.h (R_CRIS_32_GOT_GD, R_CRIS_16_GOT_GD, R_CRIS_32_GD)
|
||||||
|
|
|
@ -186,6 +186,11 @@ enum
|
||||||
registers, 3 for SPE registers; 0 for not tagged or not using any
|
registers, 3 for SPE registers; 0 for not tagged or not using any
|
||||||
ABIs affected by the differences. */
|
ABIs affected by the differences. */
|
||||||
Tag_GNU_Power_ABI_Vector = 8,
|
Tag_GNU_Power_ABI_Vector = 8,
|
||||||
|
|
||||||
|
/* Value 1 for ABIs using r3/r4 for returning structures <= 8 bytes,
|
||||||
|
2 for ABIs using memory; 0 for not tagged or not using any ABIs
|
||||||
|
affected by the differences. */
|
||||||
|
Tag_GNU_Power_ABI_Struct_Return = 12
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _ELF_PPC_H */
|
#endif /* _ELF_PPC_H */
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
|
2008-10-10 Nathan Froyd <froydnj@codesourcery.com>
|
||||||
|
|
||||||
|
* ld-powerpc/gnu-attr-12-1.s: New file.
|
||||||
|
* ld-powerpc/gnu-attr-12-2.s: New file.
|
||||||
|
* ld-powerpc/gnu-attr-12-11.d: New file.
|
||||||
|
* ld-powerpc/gnu-attr-12-21.d: New file.
|
||||||
|
* ld-powerpc/powerpc.exp: Run new dump tests.
|
||||||
|
|
||||||
2008-10-07 Nick Clifton <nickc@redhat.com>
|
2008-10-07 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* ld-ia64/tlsbin.rd: Update expected output now that --wide does
|
* ld-ia64/tlsbin.rd: Update expected output now that --wide does
|
||||||
|
|
1
ld/testsuite/ld-powerpc/attr-gnu-12-1.s
Normal file
1
ld/testsuite/ld-powerpc/attr-gnu-12-1.s
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.gnu_attribute 12,1
|
10
ld/testsuite/ld-powerpc/attr-gnu-12-11.d
Normal file
10
ld/testsuite/ld-powerpc/attr-gnu-12-11.d
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#source: attr-gnu-12-1.s
|
||||||
|
#source: attr-gnu-12-1.s
|
||||||
|
#as: -a32
|
||||||
|
#ld: -r -melf32ppc
|
||||||
|
#readelf: -A
|
||||||
|
#target: powerpc*-*-*
|
||||||
|
|
||||||
|
Attribute Section: gnu
|
||||||
|
File Attributes
|
||||||
|
Tag_GNU_Power_ABI_Struct_Return: r3/r4
|
1
ld/testsuite/ld-powerpc/attr-gnu-12-2.s
Normal file
1
ld/testsuite/ld-powerpc/attr-gnu-12-2.s
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.gnu_attribute 12,2
|
6
ld/testsuite/ld-powerpc/attr-gnu-12-21.d
Normal file
6
ld/testsuite/ld-powerpc/attr-gnu-12-21.d
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#source: attr-gnu-12-2.s
|
||||||
|
#source: attr-gnu-12-1.s
|
||||||
|
#as: -a32
|
||||||
|
#ld: -r -melf32ppc
|
||||||
|
#warning: Warning: .* uses r3/r4 for small structure returns, .* uses memory
|
||||||
|
#target: powerpc*-*-*
|
|
@ -177,3 +177,6 @@ run_dump_test "attr-gnu-4-41"
|
||||||
run_dump_test "attr-gnu-8-11"
|
run_dump_test "attr-gnu-8-11"
|
||||||
run_dump_test "attr-gnu-8-23"
|
run_dump_test "attr-gnu-8-23"
|
||||||
run_dump_test "attr-gnu-8-31"
|
run_dump_test "attr-gnu-8-31"
|
||||||
|
|
||||||
|
run_dump_test "attr-gnu-12-11"
|
||||||
|
run_dump_test "attr-gnu-12-21"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue