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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-6.8/] [bfd/] [elf32-spu.h] - Diff between revs 827 and 840

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

Rev 827 Rev 840
/* SPU specific support for 32-bit ELF.
/* SPU specific support for 32-bit ELF.
 
 
   Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
   Copyright 2006, 2007, 2008, 2009 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 
struct spu_elf_params
struct spu_elf_params
{
{
  /* Stash various callbacks for --auto-overlay.  */
  /* Stash various callbacks for --auto-overlay.  */
  void (*place_spu_section) (asection *, asection *, const char *);
  void (*place_spu_section) (asection *, asection *, const char *);
  bfd_size_type (*spu_elf_load_ovl_mgr) (void);
  bfd_size_type (*spu_elf_load_ovl_mgr) (void);
  FILE *(*spu_elf_open_overlay_script) (void);
  FILE *(*spu_elf_open_overlay_script) (void);
  void (*spu_elf_relink) (void);
  void (*spu_elf_relink) (void);
 
 
  /* Bit 0 set if --auto-overlay.
  /* Bit 0 set if --auto-overlay.
     Bit 1 set if --auto-relink.
     Bit 1 set if --auto-relink.
     Bit 2 set if --overlay-rodata.  */
     Bit 2 set if --overlay-rodata.  */
  unsigned int auto_overlay : 3;
  unsigned int auto_overlay : 3;
#define AUTO_OVERLAY 1
#define AUTO_OVERLAY 1
#define AUTO_RELINK 2
#define AUTO_RELINK 2
#define OVERLAY_RODATA 4
#define OVERLAY_RODATA 4
 
 
  /* Type of overlays, enum _ovly_flavour.  */
  /* Type of overlays, enum _ovly_flavour.  */
  unsigned int ovly_flavour : 1;
  unsigned int ovly_flavour : 1;
  unsigned int compact_stub : 1;
  unsigned int compact_stub : 1;
 
 
  /* Set if we should emit symbols for stubs.  */
  /* Set if we should emit symbols for stubs.  */
  unsigned int emit_stub_syms : 1;
  unsigned int emit_stub_syms : 1;
 
 
  /* Set if we want stubs on calls out of overlay regions to
  /* Set if we want stubs on calls out of overlay regions to
     non-overlay regions.  */
     non-overlay regions.  */
  unsigned int non_overlay_stubs : 1;
  unsigned int non_overlay_stubs : 1;
 
 
  /* Set if lr liveness analysis should be done.  */
  /* Set if lr liveness analysis should be done.  */
  unsigned int lrlive_analysis : 1;
  unsigned int lrlive_analysis : 1;
 
 
  /* Set if stack size analysis should be done.  */
  /* Set if stack size analysis should be done.  */
  unsigned int stack_analysis : 1;
  unsigned int stack_analysis : 1;
 
 
  /* Set if __stack_* syms will be emitted.  */
  /* Set if __stack_* syms will be emitted.  */
  unsigned int emit_stack_syms : 1;
  unsigned int emit_stack_syms : 1;
 
 
  /* Set if non-icache code should be allowed in icache lines.  */
  /* Set if non-icache code should be allowed in icache lines.  */
  unsigned int non_ia_text : 1;
  unsigned int non_ia_text : 1;
 
 
  /* Set when the .fixup section should be generated. */
  /* Set when the .fixup section should be generated. */
  unsigned int emit_fixups : 1;
  unsigned int emit_fixups : 1;
 
 
  /* Range of valid addresses for loadable sections.  */
  /* Range of valid addresses for loadable sections.  */
  bfd_vma local_store_lo;
  bfd_vma local_store_lo;
  bfd_vma local_store_hi;
  bfd_vma local_store_hi;
 
 
  /* Control --auto-overlay feature.  */
  /* Control --auto-overlay feature.  */
  unsigned int num_lines;
  unsigned int num_lines;
  unsigned int line_size;
  unsigned int line_size;
  unsigned int max_branch;
  unsigned int max_branch;
  unsigned int auto_overlay_fixed;
  unsigned int auto_overlay_fixed;
  unsigned int auto_overlay_reserved;
  unsigned int auto_overlay_reserved;
  int extra_stack_space;
  int extra_stack_space;
};
};
 
 
/* Extra info kept for SPU sections.  */
/* Extra info kept for SPU sections.  */
 
 
struct spu_elf_stack_info;
struct spu_elf_stack_info;
 
 
struct _spu_elf_section_data
struct _spu_elf_section_data
{
{
  struct bfd_elf_section_data elf;
  struct bfd_elf_section_data elf;
 
 
  union {
  union {
    /* Info kept for input sections.  */
    /* Info kept for input sections.  */
    struct {
    struct {
      /* Stack analysis info kept for this section.  */
      /* Stack analysis info kept for this section.  */
      struct spu_elf_stack_info *stack_info;
      struct spu_elf_stack_info *stack_info;
    } i;
    } i;
 
 
    /* Info kept for output sections.  */
    /* Info kept for output sections.  */
    struct {
    struct {
      /* Non-zero for overlay output sections.  */
      /* Non-zero for overlay output sections.  */
      unsigned int ovl_index;
      unsigned int ovl_index;
      unsigned int ovl_buf;
      unsigned int ovl_buf;
    } o;
    } o;
  } u;
  } u;
};
};
 
 
#define spu_elf_section_data(sec) \
#define spu_elf_section_data(sec) \
  ((struct _spu_elf_section_data *) elf_section_data (sec))
  ((struct _spu_elf_section_data *) elf_section_data (sec))
 
 
enum _ovly_flavour
enum _ovly_flavour
{
{
  ovly_normal,
  ovly_normal,
  ovly_soft_icache
  ovly_soft_icache
};
};
 
 
struct _ovl_stream
struct _ovl_stream
{
{
  const void *start;
  const void *start;
  const void *end;
  const void *end;
};
};
 
 
extern void spu_elf_setup (struct bfd_link_info *, struct spu_elf_params *);
extern void spu_elf_setup (struct bfd_link_info *, struct spu_elf_params *);
extern void spu_elf_plugin (int);
extern void spu_elf_plugin (int);
extern bfd_boolean spu_elf_open_builtin_lib (bfd **,
extern bfd_boolean spu_elf_open_builtin_lib (bfd **,
                                             const struct _ovl_stream *);
                                             const struct _ovl_stream *);
extern bfd_boolean spu_elf_create_sections (struct bfd_link_info *);
extern bfd_boolean spu_elf_create_sections (struct bfd_link_info *);
extern bfd_boolean spu_elf_size_sections (bfd *, struct bfd_link_info *);
extern bfd_boolean spu_elf_size_sections (bfd *, struct bfd_link_info *);
extern int spu_elf_find_overlays (struct bfd_link_info *);
extern int spu_elf_find_overlays (struct bfd_link_info *);
extern int spu_elf_size_stubs (struct bfd_link_info *);
extern int spu_elf_size_stubs (struct bfd_link_info *);
extern void spu_elf_place_overlay_data (struct bfd_link_info *);
extern void spu_elf_place_overlay_data (struct bfd_link_info *);
extern asection *spu_elf_check_vma (struct bfd_link_info *);
extern asection *spu_elf_check_vma (struct bfd_link_info *);
 
 

powered by: WebSVN 2.1.0

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