OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [binutils-2.18.50/] [bfd/] [elf32-sh64.h] - Diff between revs 156 and 816

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 156 Rev 816
/* SH ELF support for BFD.
/* SH ELF support for BFD.
   Copyright 2003, 2007 Free Software Foundation, Inc.
   Copyright 2003, 2007 Free Software Foundation, Inc.
 
 
   This file is part of BFD, the Binary File Descriptor library.
   This file is part of BFD, the Binary File Descriptor library.
 
 
   This program is free software; you can redistribute it and/or modify
   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
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.
   (at your option) any later version.
 
 
   This program is distributed in the hope that it will be useful,
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
   GNU General Public License for more details.
 
 
   You should have received a copy of the GNU General Public License
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
   along with this program; if not, write to the Free Software Foundation,
   Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
   Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
 
 
#ifndef ELF32_SH64_H
#ifndef ELF32_SH64_H
#define ELF32_SH64_H
#define ELF32_SH64_H
 
 
#define SH64_CRANGES_SECTION_NAME ".cranges"
#define SH64_CRANGES_SECTION_NAME ".cranges"
enum sh64_elf_cr_type {
enum sh64_elf_cr_type {
  CRT_NONE = 0,
  CRT_NONE = 0,
  CRT_DATA = 1,
  CRT_DATA = 1,
  CRT_SH5_ISA16 = 2,
  CRT_SH5_ISA16 = 2,
  CRT_SH5_ISA32 = 3
  CRT_SH5_ISA32 = 3
};
};
 
 
/* The official definition is this:
/* The official definition is this:
 
 
    typedef struct {
    typedef struct {
      Elf32_Addr cr_addr;
      Elf32_Addr cr_addr;
      Elf32_Word cr_size;
      Elf32_Word cr_size;
      Elf32_Half cr_type;
      Elf32_Half cr_type;
    } Elf32_CRange;
    } Elf32_CRange;
 
 
   but we have no use for that exact type.  Instead we use this struct for
   but we have no use for that exact type.  Instead we use this struct for
   the internal representation.  */
   the internal representation.  */
typedef struct {
typedef struct {
  bfd_vma cr_addr;
  bfd_vma cr_addr;
  bfd_size_type cr_size;
  bfd_size_type cr_size;
  enum sh64_elf_cr_type cr_type;
  enum sh64_elf_cr_type cr_type;
} sh64_elf_crange;
} sh64_elf_crange;
 
 
#define SH64_CRANGE_SIZE (4 + 4 + 2)
#define SH64_CRANGE_SIZE (4 + 4 + 2)
#define SH64_CRANGE_CR_ADDR_OFFSET 0
#define SH64_CRANGE_CR_ADDR_OFFSET 0
#define SH64_CRANGE_CR_SIZE_OFFSET 4
#define SH64_CRANGE_CR_SIZE_OFFSET 4
#define SH64_CRANGE_CR_TYPE_OFFSET (4 + 4)
#define SH64_CRANGE_CR_TYPE_OFFSET (4 + 4)
 
 
/* Get the contents type of an arbitrary address, or return CRT_NONE.  */
/* Get the contents type of an arbitrary address, or return CRT_NONE.  */
extern enum sh64_elf_cr_type sh64_get_contents_type
extern enum sh64_elf_cr_type sh64_get_contents_type
  (asection *, bfd_vma, sh64_elf_crange *);
  (asection *, bfd_vma, sh64_elf_crange *);
 
 
/* Simpler interface.
/* Simpler interface.
   FIXME: This seems redundant now that we export the interface above.  */
   FIXME: This seems redundant now that we export the interface above.  */
extern bfd_boolean sh64_address_is_shmedia
extern bfd_boolean sh64_address_is_shmedia
  (asection *, bfd_vma);
  (asection *, bfd_vma);
 
 
extern int _bfd_sh64_crange_qsort_cmpb
extern int _bfd_sh64_crange_qsort_cmpb
  (const void *, const void *);
  (const void *, const void *);
extern int _bfd_sh64_crange_qsort_cmpl
extern int _bfd_sh64_crange_qsort_cmpl
  (const void *, const void *);
  (const void *, const void *);
extern int _bfd_sh64_crange_bsearch_cmpb
extern int _bfd_sh64_crange_bsearch_cmpb
  (const void *, const void *);
  (const void *, const void *);
extern int _bfd_sh64_crange_bsearch_cmpl
extern int _bfd_sh64_crange_bsearch_cmpl
  (const void *, const void *);
  (const void *, const void *);
 
 
struct sh64_section_data
struct sh64_section_data
{
{
  flagword contents_flags;
  flagword contents_flags;
 
 
  /* Only used in the cranges section, but we don't have an official
  /* Only used in the cranges section, but we don't have an official
     backend-specific bfd field.  */
     backend-specific bfd field.  */
  bfd_size_type cranges_growth;
  bfd_size_type cranges_growth;
};
};
 
 
struct _sh64_elf_section_data
struct _sh64_elf_section_data
{
{
  struct bfd_elf_section_data elf;
  struct bfd_elf_section_data elf;
  struct sh64_section_data *sh64_info;
  struct sh64_section_data *sh64_info;
};
};
 
 
#define sh64_elf_section_data(sec) \
#define sh64_elf_section_data(sec) \
  ((struct _sh64_elf_section_data *) elf_section_data (sec))
  ((struct _sh64_elf_section_data *) elf_section_data (sec))
 
 
#endif /* ELF32_SH64_H */
#endif /* ELF32_SH64_H */
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.