aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2012-02-27 06:48:10 +0000
committerAlan Modra <amodra@gmail.com>2012-02-27 06:48:10 +0000
commit3d301fdc610585d4dd037d9f4816f732aa4417d7 (patch)
tree5fcec732b1fcf30f3ba60d2b408a705aa5b4792f
parent35a358074fc5d36cc1df4a33660ae1edc735c330 (diff)
downloadgdb-3d301fdc610585d4dd037d9f4816f732aa4417d7.zip
gdb-3d301fdc610585d4dd037d9f4816f732aa4417d7.tar.gz
gdb-3d301fdc610585d4dd037d9f4816f732aa4417d7.tar.bz2
* elf32-sh.c (sh_elf_osec_to_segment): Check for elf flavour bfd
before calling elf specific function. (sh_elf_osec_readonly_p): Test for error return from above.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elf32-sh.c12
2 files changed, 14 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 7da5c8b..93eb6fb 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,11 @@
2012-02-27 Alan Modra <amodra@gmail.com>
+ * elf32-sh.c (sh_elf_osec_to_segment): Check for elf flavour bfd
+ before calling elf specific function.
+ (sh_elf_osec_readonly_p): Test for error return from above.
+
+2012-02-27 Alan Modra <amodra@gmail.com>
+
* elf32-spu.c (build_stub): Fix malloc under-allocation.
2012-02-25 Walter Lee <walt@tilera.com>
diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c
index 780a3bf..8d8b28c 100644
--- a/bfd/elf32-sh.c
+++ b/bfd/elf32-sh.c
@@ -1,6 +1,7 @@
/* Renesas / SuperH SH specific support for 32-bit ELF
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+ 2006, 2007, 2008, 2009, 2010, 2011, 2012
+ Free Software Foundation, Inc.
Contributed by Ian Lance Taylor, Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
@@ -3788,8 +3789,10 @@ sh_elf_got_offset (struct elf_sh_link_hash_table *htab)
static unsigned
sh_elf_osec_to_segment (bfd *output_bfd, asection *osec)
{
- Elf_Internal_Phdr *p = _bfd_elf_find_segment_containing_section (output_bfd,
- osec);
+ Elf_Internal_Phdr *p = NULL;
+
+ if (output_bfd->xvec->flavour == bfd_target_elf_flavour)
+ p = _bfd_elf_find_segment_containing_section (output_bfd, osec);
/* FIXME: Nothing ever says what this index is relative to. The kernel
supplies data in terms of the number of load segments but this is
@@ -3802,7 +3805,8 @@ sh_elf_osec_readonly_p (bfd *output_bfd, asection *osec)
{
unsigned seg = sh_elf_osec_to_segment (output_bfd, osec);
- return ! (elf_tdata (output_bfd)->phdr[seg].p_flags & PF_W);
+ return (seg != (unsigned) -1
+ && ! (elf_tdata (output_bfd)->phdr[seg].p_flags & PF_W));
}
/* Generate the initial contents of a local function descriptor, along