diff options
author | Alan Modra <amodra@gmail.com> | 2012-02-27 06:48:10 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2012-02-27 06:48:10 +0000 |
commit | 3d301fdc610585d4dd037d9f4816f732aa4417d7 (patch) | |
tree | 5fcec732b1fcf30f3ba60d2b408a705aa5b4792f /bfd/elf32-sh.c | |
parent | 35a358074fc5d36cc1df4a33660ae1edc735c330 (diff) | |
download | gdb-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.
Diffstat (limited to 'bfd/elf32-sh.c')
-rw-r--r-- | bfd/elf32-sh.c | 12 |
1 files changed, 8 insertions, 4 deletions
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 |