From: Alan Modra Date: Mon, 27 Feb 2012 06:48:10 +0000 (+0000) Subject: * elf32-sh.c (sh_elf_osec_to_segment): Check for elf flavour bfd X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3d301fdc610585d4dd037d9f4816f732aa4417d7;p=binutils-gdb.git * 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. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 7da5c8b7518..93eb6fb9bb6 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2012-02-27 Alan Modra + + * 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 * elf32-spu.c (build_stub): Fix malloc under-allocation. diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c index 780a3bf6b0f..8d8b28c76ac 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