* elf32-arm.c (elf32_arm_size_stubs): Call layout_sections_again
	at least once when fixing cortex-a8.

	ld/testsuite/
	* ld-arm/arm-elf.exp: Add new test.
	* ld-arm/cortex-a8-fix-hdr.d: New.
	* ld-arm/cortex-a8-fix-hdr.s: New.
	* ld-arm/cortex-a8-fix-hdr.t: New.
This commit is contained in:
Nathan Sidwell
2009-08-06 13:05:24 +00:00
parent 5f814c3b3f
commit 3ae046ccd3
7 changed files with 74 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2009-08-06 Nathan Sidwell <nathan@codesourcery.com>
* elf32-arm.c (elf32_arm_size_stubs): Call layout_sections_again
at least once when fixing cortex-a8.
2009-08-05 Chao-ying Fu <fu@mips.com>
* elf32-mips.c (mips_reloc_map): Add BFD_RELOC_MIPS_JALR.

View File

@ -4246,6 +4246,16 @@ elf32_arm_size_stubs (bfd *output_bfd,
group_sections (htab, stub_group_size, stubs_always_after_branch);
/* If we're applying the cortex A8 fix, we need to determine the
program header size now, because we cannot change it later --
that could alter section placements. Notice the A8 erratum fix
ends up requiring the section addresses to remain unchanged
modulo the page size. That's something we cannot represent
inside BFD, and we don't want to force the section alignment to
be the page size. */
if (htab->fix_cortex_a8)
(*htab->layout_sections_again) ();
while (1)
{
bfd *input_bfd;

View File

@ -1,3 +1,10 @@
2009-08-06 Nathan Sidwell <nathan@codesourcery.com>
* ld-arm/arm-elf.exp: Add new test.
* ld-arm/cortex-a8-fix-hdr.d: New.
* ld-arm/cortex-a8-fix-hdr.s: New.
* ld-arm/cortex-a8-fix-hdr.t: New.
2009-08-05 Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
* ld-spu/fixup.d: New.

View File

@ -209,6 +209,10 @@ set armelftests {
"-EL -Ttext=0x00 --fix-cortex-a8 --defsym far_fn1=0x80000000 --defsym far_fn2=0x80000004 --defsym far_fn=0x7fff0000 --defsym _start=0" "-EL" {cortex-a8-far-1.s cortex-a8-far-2.s}
{{objdump -dr cortex-a8-far.d}}
"cortex-a8-far"}
{"Cortex-A8 erratum fix, headers"
"-EL --fix-cortex-a8 -T cortex-a8-fix-hdr.t" "-EL" {cortex-a8-fix-hdr.s}
{{objdump -dr cortex-a8-fix-hdr.d}}
"cortex-a8-fix-hdr"}
{"Unwinding and -gc-sections" "-gc-sections" "" {gc-unwind.s}
{{objdump -sj.data gc-unwind.d}}
"gc-unwind"}

View File

@ -0,0 +1,24 @@
.*: file format .*
Disassembly of section \.text:
00000fe0 <_start>:
fe0: bf00 nop
fe2: bf00 nop
fe4: bf00 nop
fe6: bf00 nop
fe8: bf00 nop
fea: bf00 nop
fec: bf00 nop
fee: bf00 nop
ff0: bf00 nop
ff2: bf00 nop
ff4: bf00 nop
ff6: bf00 nop
ff8: bf00 nop
ffa: ea81 0002 eor.w r0, r1, r2
ffe: f000 b80f b.w 1020 <_start\+0x40>
#...
1020: f7ff bfde b.w fe0 <_start>

View File

@ -0,0 +1,14 @@
.syntax unified
.section .text, "ax"
.align 5
.globl _start
.thumb_func
_start:
.rept 13
nop
.endr
eor r0, r1, r2
b.w _start

View File

@ -0,0 +1,10 @@
SECTIONS {
. = SIZEOF_HEADERS;
. += 0xf80;
.text : {
*(.text)
} = 0
/DISCARD/ : { *(*) }
}