bfd/
authorRichard Sandiford <rdsandiford@googlemail.com>
Thu, 10 May 2007 14:46:48 +0000 (14:46 +0000)
committerRichard Sandiford <rdsandiford@googlemail.com>
Thu, 10 May 2007 14:46:48 +0000 (14:46 +0000)
* 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.

ld/testsuite/
* ld-elf/multibss1.d, ld-elf/multibss1.s: New test.

bfd/ChangeLog
bfd/elf.c
ld/testsuite/ChangeLog
ld/testsuite/ld-elf/multibss1.d [new file with mode: 0644]
ld/testsuite/ld-elf/multibss1.s [new file with mode: 0644]

index f24593a..667a962 100644 (file)
@@ -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
index ec0c1b3..6e1ab96 100644 (file)
--- 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
index 885b706..ec50abe 100644 (file)
@@ -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 (file)
index 0000000..8074fe3
--- /dev/null
@@ -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 (file)
index 0000000..3e168b6
--- /dev/null
@@ -0,0 +1,11 @@
+       .macro  makebss
+       .section .bss_\@,"aw",@nobits
+       .space  0x10000
+       .endm
+
+       .rept   80
+       makebss
+       .endr
+
+       .text
+       .space  0x10