aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2009-08-06 13:05:24 +0000
committerNathan Sidwell <nathan@codesourcery.com>2009-08-06 13:05:24 +0000
commit3ae046ccd31e26df008776124e52fce6174aa0df (patch)
treef91e2a978e0420c5c22d5f64e49b93818befdb35 /bfd
parent5f814c3b3f9d99ed724cce14c90a02e29776a90a (diff)
downloadgdb-3ae046ccd31e26df008776124e52fce6174aa0df.zip
gdb-3ae046ccd31e26df008776124e52fce6174aa0df.tar.gz
gdb-3ae046ccd31e26df008776124e52fce6174aa0df.tar.bz2
bfd/
* 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.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-arm.c10
2 files changed, 15 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 95e033c..c63bc2f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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.
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 5aba3f3..fbb4454 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -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;