OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-6.8/] [bfd/] [section.c] - Diff between revs 157 and 225

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 157 Rev 225
Line 1... Line 1...
/* Object file "section" support for the BFD library.
/* Object file "section" support for the BFD library.
   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
   Free Software Foundation, Inc.
   Free Software Foundation, Inc.
   Written by Cygnus Support.
   Written by Cygnus Support.
 
 
   This file is part of BFD, the Binary File Descriptor library.
   This file is part of BFD, the Binary File Descriptor library.
 
 
Line 341... Line 341...
.  {* Conditionally link this section; do not link if there are no
.  {* Conditionally link this section; do not link if there are no
.     references found to any symbol in the section.  This is for TI
.     references found to any symbol in the section.  This is for TI
.     TMS320C54X only.  *}
.     TMS320C54X only.  *}
.#define SEC_TIC54X_CLINK 0x20000000
.#define SEC_TIC54X_CLINK 0x20000000
.
.
 
.  {* Indicate that section has the no read flag set. This happens
 
.     when memory read flag isn't set. *}
 
.#define SEC_COFF_NOREAD 0x40000000
 
.
.  {*  End of section flags.  *}
.  {*  End of section flags.  *}
.
.
.  {* Some internal packed boolean fields.  *}
.  {* Some internal packed boolean fields.  *}
.
.
.  {* See the vma field.  *}
.  {* See the vma field.  *}
Line 380... Line 384...
.     these fields.  *}
.     these fields.  *}
.
.
.  {* Nonzero if this section has TLS related relocations.  *}
.  {* Nonzero if this section has TLS related relocations.  *}
.  unsigned int has_tls_reloc:1;
.  unsigned int has_tls_reloc:1;
.
.
 
.  {* Nonzero if this section has a call to __tls_get_addr.  *}
 
.  unsigned int has_tls_get_addr_call:1;
 
.
.  {* Nonzero if this section has a gp reloc.  *}
.  {* Nonzero if this section has a gp reloc.  *}
.  unsigned int has_gp_reloc:1;
.  unsigned int has_gp_reloc:1;
.
.
.  {* Nonzero if this section needs the relax finalize pass.  *}
.  {* Nonzero if this section needs the relax finalize pass.  *}
.  unsigned int need_finalize_relax:1;
.  unsigned int need_finalize_relax:1;
Line 419... Line 426...
.     targets), and thus the original size needs to be kept to read the
.     targets), and thus the original size needs to be kept to read the
.     section multiple times.  For output sections, rawsize holds the
.     section multiple times.  For output sections, rawsize holds the
.     section size calculated on a previous linker relaxation pass.  *}
.     section size calculated on a previous linker relaxation pass.  *}
.  bfd_size_type rawsize;
.  bfd_size_type rawsize;
.
.
 
.  {* Relaxation table. *}
 
.  struct relax_table *relax;
 
.
 
.  {* Count of used relaxation table entries. *}
 
.  int relax_count;
 
.
 
.
.  {* If this section is going to be output, then this value is the
.  {* If this section is going to be output, then this value is the
.     offset in *bytes* into the output section of the first byte in the
.     offset in *bytes* into the output section of the first byte in the
.     input section (byte ==> smallest addressable unit on the
.     input section (byte ==> smallest addressable unit on the
.     target).  In most cases, if this was going to start at the
.     target).  In most cases, if this was going to start at the
.     100th octet (8-bit quantity) in the output section, this value
.     100th octet (8-bit quantity) in the output section, this value
Line 508... Line 522...
.    struct bfd_link_order *link_order;
.    struct bfd_link_order *link_order;
.    struct bfd_section *s;
.    struct bfd_section *s;
.  } map_head, map_tail;
.  } map_head, map_tail;
.} asection;
.} asection;
.
.
 
.{* Relax table contains information about instructions which can
 
.   be removed by relaxation -- replacing a long address with a
 
.   short address.  *}
 
.struct relax_table {
 
.  {* Address where bytes may be deleted. *}
 
.  bfd_vma addr;
 
.
 
.  {* Number of bytes to be deleted.  *}
 
.  int size;
 
.};
 
.
.{* These sections are global, and are managed by BFD.  The application
.{* These sections are global, and are managed by BFD.  The application
.   and target back end are not permitted to change the values in
.   and target back end are not permitted to change the values in
.   these sections.  New code should use the section_ptr macros rather
.   these sections.  New code should use the section_ptr macros rather
.   than referring directly to the const sections.  The const sections
.   than referring directly to the const sections.  The const sections
.   may eventually vanish.  *}
.   may eventually vanish.  *}
Line 640... Line 665...
.     0,           0,                1,                                 \
.     0,           0,                1,                                 \
.                                                                       \
.                                                                       \
.  {* segment_mark, sec_info_type, use_rela_p, has_tls_reloc,       *}  \
.  {* segment_mark, sec_info_type, use_rela_p, has_tls_reloc,       *}  \
.     0,            0,             0,          0,                       \
.     0,            0,             0,          0,                       \
.                                                                       \
.                                                                       \
.  {* has_gp_reloc, need_finalize_relax, reloc_done,                *}  \
.  {* has_tls_get_addr_call, has_gp_reloc, need_finalize_relax,     *}  \
.     0,            0,                   0,                             \
.     0,            0,                   0,                             \
.                                                                       \
.                                                                       \
.  {* vma, lma, size, rawsize                                       *}  \
.  {* reloc_done, vma, lma, size, rawsize, relax, relax_count,      *}  \
.     0,   0,   0,    0,                                                \
.     0,          0,   0,   0,    0,       0,     0,                    \
.                                                                       \
.                                                                       \
.  {* output_offset, output_section,              alignment_power,  *}  \
.  {* output_offset, output_section,              alignment_power,  *}  \
.     0,             (struct bfd_section *) &SEC, 0,                    \
.     0,             (struct bfd_section *) &SEC, 0,                    \
.                                                                       \
.                                                                       \
.  {* relocation, orelocation, reloc_count, filepos, rel_filepos,   *}  \
.  {* relocation, orelocation, reloc_count, filepos, rel_filepos,   *}  \
Line 910... Line 935...
  int num;
  int num;
  unsigned int len;
  unsigned int len;
  char *sname;
  char *sname;
 
 
  len = strlen (templat);
  len = strlen (templat);
  sname = bfd_malloc (len + 8);
  sname = (char *) bfd_malloc (len + 8);
  if (sname == NULL)
  if (sname == NULL)
    return NULL;
    return NULL;
  memcpy (sname, templat, len);
  memcpy (sname, templat, len);
  num = 1;
  num = 1;
  if (count != NULL)
  if (count != NULL)
Line 1427... Line 1452...
      return TRUE;
      return TRUE;
    }
    }
 
 
  if ((section->flags & SEC_IN_MEMORY) != 0)
  if ((section->flags & SEC_IN_MEMORY) != 0)
    {
    {
 
      if (section->contents == NULL)
 
        {
 
          /* This can happen because of errors earlier on in the linking process.
 
             We do not want to seg-fault here, so clear the flag and return an
 
             error code.  */
 
          section->flags &= ~ SEC_IN_MEMORY;
 
          bfd_set_error (bfd_error_invalid_operation);
 
          return FALSE;
 
        }
 
 
      memcpy (location, section->contents + offset, (size_t) count);
      memcpy (location, section->contents + offset, (size_t) count);
      return TRUE;
      return TRUE;
    }
    }
 
 
  return BFD_SEND (abfd, _bfd_get_section_contents,
  return BFD_SEND (abfd, _bfd_get_section_contents,
Line 1458... Line 1493...
 
 
  *buf = p;
  *buf = p;
  if (sz == 0)
  if (sz == 0)
    return TRUE;
    return TRUE;
 
 
  p = bfd_malloc (sec->rawsize > sec->size ? sec->rawsize : sec->size);
  p = (bfd_byte *)
 
      bfd_malloc (sec->rawsize > sec->size ? sec->rawsize : sec->size);
  if (p == NULL)
  if (p == NULL)
    return FALSE;
    return FALSE;
  *buf = p;
  *buf = p;
 
 
  return bfd_get_section_contents (abfd, sec, p, 0, sz);
  return bfd_get_section_contents (abfd, sec, p, 0, sz);

powered by: WebSVN 2.1.0

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