This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: --enable-targets=all breakage


On Tue, Jun 04, 2002 at 09:51:58AM -0700, Jason R Thorpe wrote:
> On Mon, Jun 03, 2002 at 11:43:50PM -0700, H . J . Lu wrote:
> 
>  > Can't we remove elfxx-shxx-nbsd.c and move the BFD vector into
>  > elfxx-shxx.c like what elf64-hppa-linux is done? It doesn't make
>  > much senses to have a separate file.
> 
> How hould plain elf32-sh64 be differentiated from elf32-sh64-nbsd?  Both
> use the same EI_OSABI field.  The only difference is that the -nbsd variant
> doens't put _ in front of user-visible symbols.  This is essentially no
> different from elf32-sh-linux/elf32-sh-nbsd and elf32-sh.
> 

Here is a quick, dirty hack. Ideally, we should create elf32-sh64-com.h
and move all functions from elf32-sh64.c into elf32-sh64-com.c. We
export those function with _bfd_elf32_sh64_xxx and put their prototypes
in elf32-sh64-com.h. We can save quite some space there.


H.J.
---
2002-06-04  H.J. Lu  (hjl@gnu.org)

	* Makefile.am (BFD32_BACKENDS): Add elf32-sh64-com.lo.
	(BFD32_BACKENDS_CFILES): Add elf32-sh64-com.c.
	(elf32-sh64-com.lo): New rule.
	* Makefile.in: Regenerated.

	* elf32-sh64-com.c: New.

	* elf32-sh64.c (crange_bsearch_cmpb): Removed.
	(crange_bsearch_cmpl): Likewise.
	(sh64_address_in_cranges): Likewise.
	(sh64_get_contents_type): Likewise.
	(sh64_address_is_shmedia): Likewise.

--- bfd/Makefile.am.netbsd	Tue Jun  4 09:25:20 2002
+++ bfd/Makefile.am	Tue Jun  4 11:15:10 2002
@@ -229,6 +229,7 @@ BFD32_BACKENDS = \
 	elf32-sh.lo \
 	elf32-sh-lin.lo \
 	elf32-sh64.lo \
+	elf32-sh64-com.lo \
 	elf32-sh-nbsd.lo \
 	elf32-sh64-nbsd.lo \
 	elf32-sparc.lo \
@@ -378,6 +379,7 @@ BFD32_BACKENDS_CFILES = \
 	elf32-pj.c \
 	elf32-ppc.c \
 	elf32-sh64.c \
+	elf32-sh64-com.c \
 	elf32-s390.c \
 	elf32-sh.c \
 	elf32-sh-lin.c \
@@ -1197,11 +1199,10 @@ elf32-sh64.lo: elf32-sh64.c $(INCDIR)/fi
   $(INCDIR)/bfdlink.h $(srcdir)/../opcodes/sh64-opc.h \
   elf32-sh.c $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
   elf32-target.h
-elf32-sh64-nbsd.lo: elf32-sh64-nbsd.c $(INCDIR)/filenames.h elf-bfd.h \
-  $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
-  $(INCDIR)/bfdlink.h $(srcdir)/../opcodes/sh64-opc.h \
-  elf32-sh64.c elf32-sh.c $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
-  elf32-target.h
+elf32-sh64-com.lo: elf32-sh64-com.c $(INCDIR)/filenames.h \
+  elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/sh.h \
+  $(INCDIR)/elf/reloc-macros.h
 elf32-s390.lo: elf32-s390.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
   elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
   $(INCDIR)/elf/external.h $(INCDIR)/elf/s390.h $(INCDIR)/elf/reloc-macros.h \
@@ -1218,6 +1219,11 @@ elf32-sh-nbsd.lo: elf32-sh-nbsd.c elf32-
   $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h \
   $(INCDIR)/elf/reloc-macros.h elf32-target.h
+elf32-sh64-nbsd.lo: elf32-sh64-nbsd.c elf32-sh64.c \
+  $(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
+  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+  $(srcdir)/../opcodes/sh64-opc.h elf32-sh.c $(INCDIR)/elf/sh.h \
+  $(INCDIR)/elf/reloc-macros.h elf32-target.h
 elf32-sparc.lo: elf32-sparc.c $(INCDIR)/filenames.h \
   $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sparc.h \
@@ -1491,10 +1497,10 @@ elf64-sh64.lo: elf64-sh64.c $(INCDIR)/fi
   elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
   $(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
   elf64-target.h
-elf64-sh64-nbsd.lo: elf64-sh64-nbsd.c $(INCDIR)/filenames.h \
-  $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
-  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h \
-  $(INCDIR)/elf/reloc-macros.h elf64-sh64.c elf64-target.h
+elf64-sh64-nbsd.lo: elf64-sh64-nbsd.c elf64-sh64.c \
+  $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h elf-bfd.h \
+  $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+  $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h elf64-target.h
 elf64-sparc.lo: elf64-sparc.c $(INCDIR)/filenames.h \
   elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
   $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/sparc.h \
--- bfd/elf32-sh64-com.c.netbsd	Tue Jun  4 11:11:00 2002
+++ bfd/elf32-sh64-com.c	Tue Jun  4 11:10:51 2002
@@ -0,0 +1,268 @@
+/* Hitachi SH64-specific support for 32-bit ELF
+   Copyright (C) 2002 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+#define SH64_ELF
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "elf-bfd.h"
+#include "libbfd.h"
+#include "elf/sh.h"
+
+/* The type sh64_elf_crange is defined in elf/sh.h which is included in
+   elf32-sh.c, hence these prototypes located after including it.  */
+static int crange_qsort_cmpb PARAMS ((const void *, const void *));
+static int crange_qsort_cmpl PARAMS ((const void *, const void *));
+static int crange_bsearch_cmpb PARAMS ((const void *, const void *));
+static int crange_bsearch_cmpl PARAMS ((const void *, const void *));
+static boolean sh64_address_in_cranges
+  PARAMS ((asection *cranges, bfd_vma, sh64_elf_crange *));
+
+/* Ordering functions of a crange, for the qsort and bsearch calls and for
+   different endianness.  */
+
+static int
+crange_qsort_cmpb (p1, p2)
+     const PTR p1;
+     const PTR p2;
+{
+  bfd_vma a1 = bfd_getb32 (p1);
+  bfd_vma a2 = bfd_getb32 (p2);
+
+  /* Preserve order if there's ambiguous contents.  */
+  if (a1 == a2)
+    return (char *) p1 - (char *) p2;
+
+  return a1 - a2;
+}
+
+static int
+crange_qsort_cmpl (p1, p2)
+     const PTR p1;
+     const PTR p2;
+{
+  bfd_vma a1 = (bfd_vma) bfd_getl32 (p1);
+  bfd_vma a2 = (bfd_vma) bfd_getl32 (p2);
+
+  /* Preserve order if there's ambiguous contents.  */
+  if (a1 == a2)
+    return (char *) p1 - (char *) p2;
+
+  return a1 - a2;
+}
+
+static int
+crange_bsearch_cmpb (p1, p2)
+     const PTR p1;
+     const PTR p2;
+{
+  bfd_vma a1 = *(bfd_vma *) p1;
+  bfd_vma a2 = (bfd_vma) bfd_getb32 (p2);
+  bfd_size_type size
+    = (bfd_size_type) bfd_getb32 (SH64_CRANGE_CR_SIZE_OFFSET + (char *) p2);
+
+  if (a1 >= a2 + size)
+    return 1;
+  if (a1 < a2)
+    return -1;
+  return 0;
+}
+
+static int
+crange_bsearch_cmpl (p1, p2)
+     const PTR p1;
+     const PTR p2;
+{
+  bfd_vma a1 = *(bfd_vma *) p1;
+  bfd_vma a2 = (bfd_vma) bfd_getl32 (p2);
+  bfd_size_type size
+    = (bfd_size_type) bfd_getl32 (SH64_CRANGE_CR_SIZE_OFFSET + (char *) p2);
+
+  if (a1 >= a2 + size)
+    return 1;
+  if (a1 < a2)
+    return -1;
+  return 0;
+}
+
+/* Check whether a specific address is specified within a .cranges
+   section.  Return FALSE if not found, and TRUE if found, and the region
+   filled into RANGEP if non-NULL.  */
+
+static boolean
+sh64_address_in_cranges (cranges, addr, rangep)
+     asection *cranges;
+     bfd_vma addr;
+     sh64_elf_crange *rangep;
+{
+  bfd_byte *cranges_contents;
+  bfd_byte *found_rangep;
+  bfd_size_type cranges_size = bfd_section_size (cranges->owner, cranges);
+
+  /* If the size is not a multiple of the cranges entry size, then
+     something is badly wrong.  */
+  if ((cranges_size % SH64_CRANGE_SIZE) != 0)
+    return false;
+
+  /* If this section has relocations, then we can't do anything sane.  */
+  if (bfd_get_section_flags (cranges->owner, cranges) & SEC_RELOC)
+    return false;
+
+  /* Has some kind soul (or previous call) left processed, sorted contents
+     for us?  */
+  if ((bfd_get_section_flags (cranges->owner, cranges) & SEC_IN_MEMORY)
+      && elf_section_data (cranges)->this_hdr.sh_type == SHT_SH5_CR_SORTED)
+    cranges_contents = cranges->contents;
+  else
+    {
+      cranges_contents
+	= bfd_malloc (cranges->_cooked_size == 0
+		      ? cranges->_cooked_size : cranges->_raw_size);
+      if (cranges_contents == NULL)
+	return false;
+
+      if (! bfd_get_section_contents (cranges->owner, cranges,
+				      cranges_contents, (file_ptr) 0,
+				      cranges_size))
+	goto error_return;
+
+      /* Is it sorted?  */
+      if (elf_section_data (cranges)->this_hdr.sh_type
+	  != SHT_SH5_CR_SORTED)
+	/* Nope.  Lets sort it.  */
+	qsort (cranges_contents, cranges_size / SH64_CRANGE_SIZE,
+	       SH64_CRANGE_SIZE,
+	       bfd_big_endian (cranges->owner)
+	       ? crange_qsort_cmpb : crange_qsort_cmpl);
+
+      /* Let's keep it around.  */
+      cranges->contents = cranges_contents;
+      bfd_set_section_flags (cranges->owner, cranges,
+			     bfd_get_section_flags (cranges->owner, cranges)
+			     | SEC_IN_MEMORY);
+
+      /* It's sorted now.  */
+      elf_section_data (cranges)->this_hdr.sh_type = SHT_SH5_CR_SORTED;
+    }
+
+  /* Try and find a matching range.  */
+  found_rangep
+    = bsearch (&addr, cranges_contents, cranges_size / SH64_CRANGE_SIZE,
+	       SH64_CRANGE_SIZE,
+	       bfd_big_endian (cranges->owner)
+	       ? crange_bsearch_cmpb : crange_bsearch_cmpl);
+
+  /* Fill in a few return values if we found a matching range.  */
+  if (found_rangep)
+    {
+      enum sh64_elf_cr_type cr_type
+	= bfd_get_16 (cranges->owner,
+		      SH64_CRANGE_CR_TYPE_OFFSET + found_rangep);
+      bfd_vma cr_addr
+	= bfd_get_32 (cranges->owner,
+		      SH64_CRANGE_CR_ADDR_OFFSET
+		      + (char *) found_rangep);
+      bfd_size_type cr_size
+	= bfd_get_32 (cranges->owner,
+		      SH64_CRANGE_CR_SIZE_OFFSET
+		      + (char *) found_rangep);
+
+      rangep->cr_addr = cr_addr;
+      rangep->cr_size = cr_size;
+      rangep->cr_type = cr_type;
+
+      return true;
+    }
+
+  /* There is a .cranges section, but it does not have a descriptor
+     matching this address.  */
+  return false;
+
+error_return:
+  free (cranges_contents);
+  return false;
+}
+
+/* Determine what ADDR points to in SEC, and fill in a range descriptor in
+   *RANGEP if it's non-NULL.  */
+
+enum sh64_elf_cr_type
+sh64_get_contents_type (sec, addr, rangep)
+     asection *sec;
+     bfd_vma addr;
+     sh64_elf_crange *rangep;
+{
+  asection *cranges;
+
+  /* Fill in the range with the boundaries of the section as a default.  */
+  if (bfd_get_flavour (sec->owner) == bfd_target_elf_flavour
+      && elf_elfheader (sec->owner)->e_type == ET_EXEC)
+    {
+      rangep->cr_addr = bfd_get_section_vma (sec->owner, sec);
+      rangep->cr_size = bfd_section_size (sec->owner, sec);
+      rangep->cr_type = CRT_NONE;
+    }
+  else
+    return false;
+
+  /* If none of the pertinent bits are set, then it's a SHcompact (or at
+     least not SHmedia).  */
+  if ((elf_section_data (sec)->this_hdr.sh_flags
+       & (SHF_SH5_ISA32 | SHF_SH5_ISA32_MIXED)) == 0)
+    {
+      enum sh64_elf_cr_type cr_type
+	= ((bfd_get_section_flags (sec->owner, sec) & SEC_CODE) != 0
+	   ? CRT_SH5_ISA16 : CRT_DATA);
+      rangep->cr_type = cr_type;
+      return cr_type;
+    }
+
+  /* If only the SHF_SH5_ISA32 bit is set, then we have SHmedia.  */
+  if ((elf_section_data (sec)->this_hdr.sh_flags
+       & (SHF_SH5_ISA32 | SHF_SH5_ISA32_MIXED)) == SHF_SH5_ISA32)
+    {
+      rangep->cr_type = CRT_SH5_ISA32;
+      return CRT_SH5_ISA32;
+    }
+
+  /* Otherwise, we have to look up the .cranges section.  */
+  cranges = bfd_get_section_by_name (sec->owner, SH64_CRANGES_SECTION_NAME);
+
+  if (cranges == NULL)
+    /* A mixed section but there's no .cranges section.  This is probably
+       bad input; it does not comply to specs.  */
+    return CRT_NONE;
+
+  /* If this call fails, we will still have CRT_NONE in rangep->cr_type
+     and that will be suitable to return.  */
+  sh64_address_in_cranges (cranges, addr, rangep);
+
+  return rangep->cr_type;
+}
+
+/* This is a simpler exported interface for the benefit of gdb et al.  */
+
+boolean
+sh64_address_is_shmedia (sec, addr)
+     asection *sec;
+     bfd_vma addr;
+{
+  sh64_elf_crange dummy;
+  return sh64_get_contents_type (sec, addr, &dummy) == CRT_SH5_ISA32;
+}
--- bfd/elf32-sh64.c.netbsd	Tue Jun  4 09:25:34 2002
+++ bfd/elf32-sh64.c	Tue Jun  4 11:01:56 2002
@@ -109,10 +109,6 @@ static void sh64_find_section_for_addres
    elf32-sh.c, hence these prototypes located after including it.  */
 static int crange_qsort_cmpb PARAMS ((const void *, const void *));
 static int crange_qsort_cmpl PARAMS ((const void *, const void *));
-static int crange_bsearch_cmpb PARAMS ((const void *, const void *));
-static int crange_bsearch_cmpl PARAMS ((const void *, const void *));
-static boolean sh64_address_in_cranges
-  PARAMS ((asection *cranges, bfd_vma, sh64_elf_crange *));
 
 /* Set the SHF_SH5_ISA32 flag for ISA SHmedia code sections, and pass
    through SHT_SH5_CR_SORTED on a sorted .cranges section.  */
@@ -783,203 +779,3 @@ crange_qsort_cmpl (p1, p2)
 
   return a1 - a2;
 }
-
-static int
-crange_bsearch_cmpb (p1, p2)
-     const PTR p1;
-     const PTR p2;
-{
-  bfd_vma a1 = *(bfd_vma *) p1;
-  bfd_vma a2 = (bfd_vma) bfd_getb32 (p2);
-  bfd_size_type size
-    = (bfd_size_type) bfd_getb32 (SH64_CRANGE_CR_SIZE_OFFSET + (char *) p2);
-
-  if (a1 >= a2 + size)
-    return 1;
-  if (a1 < a2)
-    return -1;
-  return 0;
-}
-
-static int
-crange_bsearch_cmpl (p1, p2)
-     const PTR p1;
-     const PTR p2;
-{
-  bfd_vma a1 = *(bfd_vma *) p1;
-  bfd_vma a2 = (bfd_vma) bfd_getl32 (p2);
-  bfd_size_type size
-    = (bfd_size_type) bfd_getl32 (SH64_CRANGE_CR_SIZE_OFFSET + (char *) p2);
-
-  if (a1 >= a2 + size)
-    return 1;
-  if (a1 < a2)
-    return -1;
-  return 0;
-}
-
-/* Check whether a specific address is specified within a .cranges
-   section.  Return FALSE if not found, and TRUE if found, and the region
-   filled into RANGEP if non-NULL.  */
-
-static boolean
-sh64_address_in_cranges (cranges, addr, rangep)
-     asection *cranges;
-     bfd_vma addr;
-     sh64_elf_crange *rangep;
-{
-  bfd_byte *cranges_contents;
-  bfd_byte *found_rangep;
-  bfd_size_type cranges_size = bfd_section_size (cranges->owner, cranges);
-
-  /* If the size is not a multiple of the cranges entry size, then
-     something is badly wrong.  */
-  if ((cranges_size % SH64_CRANGE_SIZE) != 0)
-    return false;
-
-  /* If this section has relocations, then we can't do anything sane.  */
-  if (bfd_get_section_flags (cranges->owner, cranges) & SEC_RELOC)
-    return false;
-
-  /* Has some kind soul (or previous call) left processed, sorted contents
-     for us?  */
-  if ((bfd_get_section_flags (cranges->owner, cranges) & SEC_IN_MEMORY)
-      && elf_section_data (cranges)->this_hdr.sh_type == SHT_SH5_CR_SORTED)
-    cranges_contents = cranges->contents;
-  else
-    {
-      cranges_contents
-	= bfd_malloc (cranges->_cooked_size == 0
-		      ? cranges->_cooked_size : cranges->_raw_size);
-      if (cranges_contents == NULL)
-	return false;
-
-      if (! bfd_get_section_contents (cranges->owner, cranges,
-				      cranges_contents, (file_ptr) 0,
-				      cranges_size))
-	goto error_return;
-
-      /* Is it sorted?  */
-      if (elf_section_data (cranges)->this_hdr.sh_type
-	  != SHT_SH5_CR_SORTED)
-	/* Nope.  Lets sort it.  */
-	qsort (cranges_contents, cranges_size / SH64_CRANGE_SIZE,
-	       SH64_CRANGE_SIZE,
-	       bfd_big_endian (cranges->owner)
-	       ? crange_qsort_cmpb : crange_qsort_cmpl);
-
-      /* Let's keep it around.  */
-      cranges->contents = cranges_contents;
-      bfd_set_section_flags (cranges->owner, cranges,
-			     bfd_get_section_flags (cranges->owner, cranges)
-			     | SEC_IN_MEMORY);
-
-      /* It's sorted now.  */
-      elf_section_data (cranges)->this_hdr.sh_type = SHT_SH5_CR_SORTED;
-    }
-
-  /* Try and find a matching range.  */
-  found_rangep
-    = bsearch (&addr, cranges_contents, cranges_size / SH64_CRANGE_SIZE,
-	       SH64_CRANGE_SIZE,
-	       bfd_big_endian (cranges->owner)
-	       ? crange_bsearch_cmpb : crange_bsearch_cmpl);
-
-  /* Fill in a few return values if we found a matching range.  */
-  if (found_rangep)
-    {
-      enum sh64_elf_cr_type cr_type
-	= bfd_get_16 (cranges->owner,
-		      SH64_CRANGE_CR_TYPE_OFFSET + found_rangep);
-      bfd_vma cr_addr
-	= bfd_get_32 (cranges->owner,
-		      SH64_CRANGE_CR_ADDR_OFFSET
-		      + (char *) found_rangep);
-      bfd_size_type cr_size
-	= bfd_get_32 (cranges->owner,
-		      SH64_CRANGE_CR_SIZE_OFFSET
-		      + (char *) found_rangep);
-
-      rangep->cr_addr = cr_addr;
-      rangep->cr_size = cr_size;
-      rangep->cr_type = cr_type;
-
-      return true;
-    }
-
-  /* There is a .cranges section, but it does not have a descriptor
-     matching this address.  */
-  return false;
-
-error_return:
-  free (cranges_contents);
-  return false;
-}
-
-/* Determine what ADDR points to in SEC, and fill in a range descriptor in
-   *RANGEP if it's non-NULL.  */
-
-enum sh64_elf_cr_type
-sh64_get_contents_type (sec, addr, rangep)
-     asection *sec;
-     bfd_vma addr;
-     sh64_elf_crange *rangep;
-{
-  asection *cranges;
-
-  /* Fill in the range with the boundaries of the section as a default.  */
-  if (bfd_get_flavour (sec->owner) == bfd_target_elf_flavour
-      && elf_elfheader (sec->owner)->e_type == ET_EXEC)
-    {
-      rangep->cr_addr = bfd_get_section_vma (sec->owner, sec);
-      rangep->cr_size = bfd_section_size (sec->owner, sec);
-      rangep->cr_type = CRT_NONE;
-    }
-  else
-    return false;
-
-  /* If none of the pertinent bits are set, then it's a SHcompact (or at
-     least not SHmedia).  */
-  if ((elf_section_data (sec)->this_hdr.sh_flags
-       & (SHF_SH5_ISA32 | SHF_SH5_ISA32_MIXED)) == 0)
-    {
-      enum sh64_elf_cr_type cr_type
-	= ((bfd_get_section_flags (sec->owner, sec) & SEC_CODE) != 0
-	   ? CRT_SH5_ISA16 : CRT_DATA);
-      rangep->cr_type = cr_type;
-      return cr_type;
-    }
-
-  /* If only the SHF_SH5_ISA32 bit is set, then we have SHmedia.  */
-  if ((elf_section_data (sec)->this_hdr.sh_flags
-       & (SHF_SH5_ISA32 | SHF_SH5_ISA32_MIXED)) == SHF_SH5_ISA32)
-    {
-      rangep->cr_type = CRT_SH5_ISA32;
-      return CRT_SH5_ISA32;
-    }
-
-  /* Otherwise, we have to look up the .cranges section.  */
-  cranges = bfd_get_section_by_name (sec->owner, SH64_CRANGES_SECTION_NAME);
-
-  if (cranges == NULL)
-    /* A mixed section but there's no .cranges section.  This is probably
-       bad input; it does not comply to specs.  */
-    return CRT_NONE;
-
-  /* If this call fails, we will still have CRT_NONE in rangep->cr_type
-     and that will be suitable to return.  */
-  sh64_address_in_cranges (cranges, addr, rangep);
-
-  return rangep->cr_type;
-}
-
-/* This is a simpler exported interface for the benefit of gdb et al.  */
-
-boolean
-sh64_address_is_shmedia (sec, addr)
-     asection *sec;
-     bfd_vma addr;
-{
-  sh64_elf_crange dummy;
-  return sh64_get_contents_type (sec, addr, &dummy) == CRT_SH5_ISA32;
-}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]