aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf.c2
-rw-r--r--ld/testsuite/ChangeLog4
-rw-r--r--ld/testsuite/ld-elf/multibss1.d9
-rw-r--r--ld/testsuite/ld-elf/multibss1.s11
5 files changed, 30 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index f24593a..667a962 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2007-05-10 Richard Sandiford <richard@codesourcery.com>
+
+ * elf.c (assign_file_positions_for_load_sections): Use p_memsz
+ rather than p_filesz to calculate the LMA of the end of a segment.
+
2007-05-10 Jakub Jelinek <jakub@redhat.com>
* elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Don't do copyreloc
diff --git a/bfd/elf.c b/bfd/elf.c
index ec0c1b3..6e1ab96 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -4520,7 +4520,7 @@ assign_file_positions_for_load_sections (bfd *abfd,
if (p->p_type == PT_LOAD
|| p->p_type == PT_TLS)
{
- bfd_signed_vma adjust = sec->lma - (p->p_paddr + p->p_filesz);
+ bfd_signed_vma adjust = sec->lma - (p->p_paddr + p->p_memsz);
if ((flags & SEC_LOAD) != 0
|| ((flags & SEC_ALLOC) != 0
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 885b706..ec50abe 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2007-05-10 Richard Sandiford <richard@codesourcery.com>
+
+ * ld-elf/multibss1.d, ld-elf/multibss1.s: New test.
+
2007-04-27 Nathan Sidwell <nathan@codesourcery.com>
* ld-m68k/plt1-isac.d: New.
diff --git a/ld/testsuite/ld-elf/multibss1.d b/ld/testsuite/ld-elf/multibss1.d
new file mode 100644
index 0000000..8074fe3
--- /dev/null
+++ b/ld/testsuite/ld-elf/multibss1.d
@@ -0,0 +1,9 @@
+#source: multibss1.s
+#ld: -e 0
+#readelf: -l --wide
+#target: *-*-linux*
+
+#...
+ +LOAD +0x[^ ]+ +0x[^ ]+ +0x[^ ]+ +0x[^ ]+ +0x500000 .*
+# p_offset p_vaddr p_paddr p_filesz
+#pass
diff --git a/ld/testsuite/ld-elf/multibss1.s b/ld/testsuite/ld-elf/multibss1.s
new file mode 100644
index 0000000..3e168b6
--- /dev/null
+++ b/ld/testsuite/ld-elf/multibss1.s
@@ -0,0 +1,11 @@
+ .macro makebss
+ .section .bss_\@,"aw",@nobits
+ .space 0x10000
+ .endm
+
+ .rept 80
+ makebss
+ .endr
+
+ .text
+ .space 0x10