aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2008-09-29 14:12:02 +0000
committerAlan Modra <amodra@gmail.com>2008-09-29 14:12:02 +0000
commitceae84aacf0d5459a74fd5496cd2c0d6708e052a (patch)
tree58aa23fa1daf3894218aa395c3f815b3776d4b4c
parentb8a4873487ea15d1873dfaf0cb1a724a3b5fec95 (diff)
downloadgdb-ceae84aacf0d5459a74fd5496cd2c0d6708e052a.zip
gdb-ceae84aacf0d5459a74fd5496cd2c0d6708e052a.tar.gz
gdb-ceae84aacf0d5459a74fd5496cd2c0d6708e052a.tar.bz2
bfd/
PR 6789 * elf.c (assign_file_positions_for_load_sections): Call _bfd_elf_map_sections_to_segments, not elf_modify_segment_map. (get_program_header_size): Protect against NULL info. (_bfd_elf_map_sections_to_segments): Likewise. * elf32-spu.c (spu_elf_additional_program_headers): Likewise. ld/testsuite/ * ld-elf/extract-symbol-1sec.d: Correct section lma.
-rw-r--r--bfd/ChangeLog12
-rw-r--r--bfd/elf.c15
-rw-r--r--bfd/elf32-spu.c9
-rw-r--r--ld/testsuite/ChangeLog4
-rw-r--r--ld/testsuite/ld-elf/extract-symbol-1sec.d4
5 files changed, 34 insertions, 10 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 54244d9..5e51bac 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,12 @@
+2008-09-29 Alan Modra <amodra@bigpond.net.au>
+
+ PR 6789
+ * elf.c (assign_file_positions_for_load_sections): Call
+ _bfd_elf_map_sections_to_segments, not elf_modify_segment_map.
+ (get_program_header_size): Protect against NULL info.
+ (_bfd_elf_map_sections_to_segments): Likewise.
+ * elf32-spu.c (spu_elf_additional_program_headers): Likewise.
+
2008-09-29 Nick Clifton <nickc@redhat.com>
* po/vi.po: Updated Vietnamese translation.
@@ -16,7 +25,8 @@
2008-09-17 Bob Wilson <bob.wilson@acm.org>
- * elf32-xtensa.c (elf_xtensa_check_relocs): Check for negative refcount.
+ * elf32-xtensa.c (elf_xtensa_check_relocs): Check for negative
+ refcount.
2008-09-17 Jan Kratochvil <jan.kratochvil@redhat.com>
diff --git a/bfd/elf.c b/bfd/elf.c
index e8c6c23..763750b 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -3380,7 +3380,7 @@ get_program_header_size (bfd *abfd, struct bfd_link_info *info)
++segs;
}
- if (info->relro)
+ if (info != NULL && info->relro)
{
/* We need a PT_GNU_RELRO segment. */
++segs;
@@ -3762,8 +3762,13 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info)
}
/* Allow interested parties a chance to override our decision. */
- if (last_hdr && info->callbacks->override_segment_assignment)
- new_segment = info->callbacks->override_segment_assignment (info, abfd, hdr, last_hdr, new_segment);
+ if (last_hdr != NULL
+ && info != NULL
+ && info->callbacks->override_segment_assignment != NULL)
+ new_segment
+ = info->callbacks->override_segment_assignment (info, abfd, hdr,
+ last_hdr,
+ new_segment);
if (! new_segment)
{
@@ -3938,7 +3943,7 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info)
pm = &m->next;
}
- if (info->relro)
+ if (info != NULL && info->relro)
{
for (m = mfirst; m != NULL; m = m->next)
{
@@ -4122,7 +4127,7 @@ assign_file_positions_for_load_sections (bfd *abfd,
unsigned int i, j;
if (link_info == NULL
- && !elf_modify_segment_map (abfd, link_info, FALSE))
+ && !_bfd_elf_map_sections_to_segments (abfd, link_info))
return FALSE;
alloc = 0;
diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c
index 17ff079..00681b2 100644
--- a/bfd/elf32-spu.c
+++ b/bfd/elf32-spu.c
@@ -4245,10 +4245,15 @@ spu_elf_post_process_headers (bfd *abfd,
static int
spu_elf_additional_program_headers (bfd *abfd, struct bfd_link_info *info)
{
- struct spu_link_hash_table *htab = spu_hash_table (info);
- int extra = htab->num_overlays;
+ int extra = 0;
asection *sec;
+ if (info != NULL)
+ {
+ struct spu_link_hash_table *htab = spu_hash_table (info);
+ extra = htab->num_overlays;
+ }
+
if (extra)
++extra;
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index ea0d673..5e928d5 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2008-09-29 Alan Modra <amodra@bigpond.net.au>
+
+ * ld-elf/extract-symbol-1sec.d: Correct section lma.
+
2008-09-25 Alan Modra <amodra@bigpond.net.au>
* ld-elf/eh-group.exp: Only run on ELF targets.
diff --git a/ld/testsuite/ld-elf/extract-symbol-1sec.d b/ld/testsuite/ld-elf/extract-symbol-1sec.d
index 87d42af..cbe0144 100644
--- a/ld/testsuite/ld-elf/extract-symbol-1sec.d
+++ b/ld/testsuite/ld-elf/extract-symbol-1sec.d
@@ -7,7 +7,7 @@
#...
Sections:
*Idx +Name +Size +VMA +LMA .*
- *0 +\.foo +0+ +0+10000 +0+10000 .*
+ *0 +\.foo +0+ +0+10000 +0+ .*
*CONTENTS, ALLOC, LOAD, CODE
- *1 +\.bar +0+ +0+20000 +0+20000 .*
+ *1 +\.bar +0+ +0+20000 +0+10000 .*
*ALLOC, READONLY, CODE