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/] [elf32-mips.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...
/* MIPS-specific support for 32-bit ELF
/* MIPS-specific support for 32-bit ELF
   Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
   Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
   2003, 2004, 2005, 2007 Free Software Foundation, Inc.
   2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 
   Most of the information added by Ian Lance Taylor, Cygnus Support,
   Most of the information added by Ian Lance Taylor, Cygnus Support,
   <ian@cygnus.com>.
   <ian@cygnus.com>.
   N32/64 ABI support added by Mark Mitchell, CodeSourcery, LLC.
   N32/64 ABI support added by Mark Mitchell, CodeSourcery, LLC.
   <mark@codesourcery.com>
   <mark@codesourcery.com>
Line 769... Line 769...
         TRUE,                  /* partial_inplace */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
         0x0000ffff,            /* src_mask */
         0x0000ffff,            /* dst_mask */
         0x0000ffff,            /* dst_mask */
         FALSE),                /* pcrel_offset */
         FALSE),                /* pcrel_offset */
 
 
  /* A placeholder for MIPS16 reference to global offset table.  */
  /* A MIPS16 reference to the global offset table.  */
  EMPTY_HOWTO (R_MIPS16_GOT16),
  HOWTO (R_MIPS16_GOT16,        /* type */
 
         0,                      /* rightshift */
 
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
 
         16,                    /* bitsize */
 
         FALSE,                 /* pc_relative */
 
         0,                      /* bitpos */
 
         complain_overflow_dont, /* complain_on_overflow */
 
         _bfd_mips_elf_got16_reloc, /* special_function */
 
         "R_MIPS16_GOT16",      /* name */
 
         TRUE,                  /* partial_inplace */
 
         0x0000ffff,            /* src_mask */
 
         0x0000ffff,            /* dst_mask */
 
         FALSE),                /* pcrel_offset */
 
 
  /* A placeholder for MIPS16 16 bit call through global offset table.  */
  /* A MIPS16 call through the global offset table.  */
  EMPTY_HOWTO (R_MIPS16_CALL16),
  HOWTO (R_MIPS16_CALL16,       /* type */
 
         0,                      /* rightshift */
 
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
 
         16,                    /* bitsize */
 
         FALSE,                 /* pc_relative */
 
         0,                      /* bitpos */
 
         complain_overflow_dont, /* complain_on_overflow */
 
         _bfd_mips_elf_generic_reloc, /* special_function */
 
         "R_MIPS16_CALL16",     /* name */
 
         TRUE,                  /* partial_inplace */
 
         0x0000ffff,            /* src_mask */
 
         0x0000ffff,            /* dst_mask */
 
         FALSE),                /* pcrel_offset */
 
 
  /* MIPS16 high 16 bits of symbol value.  */
  /* MIPS16 high 16 bits of symbol value.  */
  HOWTO (R_MIPS16_HI16,         /* type */
  HOWTO (R_MIPS16_HI16,         /* type */
         16,                    /* rightshift */
         16,                    /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
Line 873... Line 897...
         FALSE,                 /* partial_inplace */
         FALSE,                 /* partial_inplace */
         0,                      /* src_mask */
         0,                      /* src_mask */
         0,                      /* dst_mask */
         0,                      /* dst_mask */
         FALSE);                /* pcrel_offset */
         FALSE);                /* pcrel_offset */
 
 
 
/* Originally a VxWorks extension, but now used for other systems too.  */
 
static reloc_howto_type elf_mips_copy_howto =
 
  HOWTO (R_MIPS_COPY,           /* type */
 
         0,                      /* rightshift */
 
         0,                      /* this one is variable size */
 
         0,                      /* bitsize */
 
         FALSE,                 /* pc_relative */
 
         0,                      /* bitpos */
 
         complain_overflow_bitfield, /* complain_on_overflow */
 
         bfd_elf_generic_reloc, /* special_function */
 
         "R_MIPS_COPY",         /* name */
 
         FALSE,                 /* partial_inplace */
 
         0x0,                   /* src_mask */
 
         0x0,                   /* dst_mask */
 
         FALSE);                /* pcrel_offset */
 
 
 
/* Originally a VxWorks extension, but now used for other systems too.  */
 
static reloc_howto_type elf_mips_jump_slot_howto =
 
  HOWTO (R_MIPS_JUMP_SLOT,      /* type */
 
         0,                      /* rightshift */
 
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
 
         32,                    /* bitsize */
 
         FALSE,                 /* pc_relative */
 
         0,                      /* bitpos */
 
         complain_overflow_bitfield, /* complain_on_overflow */
 
         bfd_elf_generic_reloc, /* special_function */
 
         "R_MIPS_JUMP_SLOT",    /* name */
 
         FALSE,                 /* partial_inplace */
 
         0x0,                   /* src_mask */
 
         0x0,                   /* dst_mask */
 
         FALSE);                /* pcrel_offset */
 
 
/* Set the GP value for OUTPUT_BFD.  Returns FALSE if this is a
/* Set the GP value for OUTPUT_BFD.  Returns FALSE if this is a
   dangerous relocation.  */
   dangerous relocation.  */
 
 
static bfd_boolean
static bfd_boolean
mips_elf_assign_gp (bfd *output_bfd, bfd_vma *pgp)
mips_elf_assign_gp (bfd *output_bfd, bfd_vma *pgp)
Line 947... Line 1003...
          || (symbol->flags & BSF_SECTION_SYM) != 0))
          || (symbol->flags & BSF_SECTION_SYM) != 0))
    {
    {
      if (relocatable)
      if (relocatable)
        {
        {
          /* Make up a value.  */
          /* Make up a value.  */
          *pgp = symbol->section->output_section->vma + 0x4000;
          *pgp = symbol->section->output_section->vma /*+ 0x4000*/;
          _bfd_set_gp_value (output_bfd, *pgp);
          _bfd_set_gp_value (output_bfd, *pgp);
        }
        }
      else if (!mips_elf_assign_gp (output_bfd, pgp))
      else if (!mips_elf_assign_gp (output_bfd, pgp))
        {
        {
          *error_message =
          *error_message =
Line 1203... Line 1259...
  { BFD_RELOC_MIPS_CALL_LO16, R_MIPS_CALL_LO16 },
  { BFD_RELOC_MIPS_CALL_LO16, R_MIPS_CALL_LO16 },
  { BFD_RELOC_MIPS_SUB, R_MIPS_SUB },
  { BFD_RELOC_MIPS_SUB, R_MIPS_SUB },
  { BFD_RELOC_MIPS_GOT_PAGE, R_MIPS_GOT_PAGE },
  { BFD_RELOC_MIPS_GOT_PAGE, R_MIPS_GOT_PAGE },
  { BFD_RELOC_MIPS_GOT_OFST, R_MIPS_GOT_OFST },
  { BFD_RELOC_MIPS_GOT_OFST, R_MIPS_GOT_OFST },
  { BFD_RELOC_MIPS_GOT_DISP, R_MIPS_GOT_DISP },
  { BFD_RELOC_MIPS_GOT_DISP, R_MIPS_GOT_DISP },
 
  { BFD_RELOC_MIPS_JALR, R_MIPS_JALR },
  { BFD_RELOC_MIPS_TLS_DTPMOD32, R_MIPS_TLS_DTPMOD32 },
  { BFD_RELOC_MIPS_TLS_DTPMOD32, R_MIPS_TLS_DTPMOD32 },
  { BFD_RELOC_MIPS_TLS_DTPREL32, R_MIPS_TLS_DTPREL32 },
  { BFD_RELOC_MIPS_TLS_DTPREL32, R_MIPS_TLS_DTPREL32 },
  { BFD_RELOC_MIPS_TLS_DTPMOD64, R_MIPS_TLS_DTPMOD64 },
  { BFD_RELOC_MIPS_TLS_DTPMOD64, R_MIPS_TLS_DTPMOD64 },
  { BFD_RELOC_MIPS_TLS_DTPREL64, R_MIPS_TLS_DTPREL64 },
  { BFD_RELOC_MIPS_TLS_DTPREL64, R_MIPS_TLS_DTPREL64 },
  { BFD_RELOC_MIPS_TLS_GD, R_MIPS_TLS_GD },
  { BFD_RELOC_MIPS_TLS_GD, R_MIPS_TLS_GD },
Line 1222... Line 1279...
 
 
static const struct elf_reloc_map mips16_reloc_map[] =
static const struct elf_reloc_map mips16_reloc_map[] =
{
{
  { BFD_RELOC_MIPS16_JMP, R_MIPS16_26 - R_MIPS16_min },
  { BFD_RELOC_MIPS16_JMP, R_MIPS16_26 - R_MIPS16_min },
  { BFD_RELOC_MIPS16_GPREL, R_MIPS16_GPREL - R_MIPS16_min },
  { BFD_RELOC_MIPS16_GPREL, R_MIPS16_GPREL - R_MIPS16_min },
 
  { BFD_RELOC_MIPS16_GOT16, R_MIPS16_GOT16 - R_MIPS16_min },
 
  { BFD_RELOC_MIPS16_CALL16, R_MIPS16_CALL16 - R_MIPS16_min },
  { BFD_RELOC_MIPS16_HI16_S, R_MIPS16_HI16 - R_MIPS16_min },
  { BFD_RELOC_MIPS16_HI16_S, R_MIPS16_HI16 - R_MIPS16_min },
  { BFD_RELOC_MIPS16_LO16, R_MIPS16_LO16 - R_MIPS16_min },
  { BFD_RELOC_MIPS16_LO16, R_MIPS16_LO16 - R_MIPS16_min },
};
};
 
 
/* Given a BFD reloc type, return a howto structure.  */
/* Given a BFD reloc type, return a howto structure.  */
Line 1271... Line 1330...
      return &elf_mips_gnu_vtinherit_howto;
      return &elf_mips_gnu_vtinherit_howto;
    case BFD_RELOC_VTABLE_ENTRY:
    case BFD_RELOC_VTABLE_ENTRY:
      return &elf_mips_gnu_vtentry_howto;
      return &elf_mips_gnu_vtentry_howto;
    case BFD_RELOC_32_PCREL:
    case BFD_RELOC_32_PCREL:
      return &elf_mips_gnu_pcrel32;
      return &elf_mips_gnu_pcrel32;
 
    case BFD_RELOC_MIPS_COPY:
 
      return &elf_mips_copy_howto;
 
    case BFD_RELOC_MIPS_JUMP_SLOT:
 
      return &elf_mips_jump_slot_howto;
    }
    }
}
}
 
 
static reloc_howto_type *
static reloc_howto_type *
bfd_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
bfd_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
Line 1304... Line 1367...
    return &elf_mips_gnu_rel16_s2;
    return &elf_mips_gnu_rel16_s2;
  if (strcasecmp (elf_mips_gnu_vtinherit_howto.name, r_name) == 0)
  if (strcasecmp (elf_mips_gnu_vtinherit_howto.name, r_name) == 0)
    return &elf_mips_gnu_vtinherit_howto;
    return &elf_mips_gnu_vtinherit_howto;
  if (strcasecmp (elf_mips_gnu_vtentry_howto.name, r_name) == 0)
  if (strcasecmp (elf_mips_gnu_vtentry_howto.name, r_name) == 0)
    return &elf_mips_gnu_vtentry_howto;
    return &elf_mips_gnu_vtentry_howto;
 
  if (strcasecmp (elf_mips_copy_howto.name, r_name) == 0)
 
    return &elf_mips_copy_howto;
 
  if (strcasecmp (elf_mips_jump_slot_howto.name, r_name) == 0)
 
    return &elf_mips_jump_slot_howto;
 
 
  return NULL;
  return NULL;
}
}
 
 
/* Given a MIPS Elf_Internal_Rel, fill in an arelent structure.  */
/* Given a MIPS Elf_Internal_Rel, fill in an arelent structure.  */
Line 1324... Line 1391...
      return &elf_mips_gnu_vtentry_howto;
      return &elf_mips_gnu_vtentry_howto;
    case R_MIPS_GNU_REL16_S2:
    case R_MIPS_GNU_REL16_S2:
      return &elf_mips_gnu_rel16_s2;
      return &elf_mips_gnu_rel16_s2;
    case R_MIPS_PC32:
    case R_MIPS_PC32:
      return &elf_mips_gnu_pcrel32;
      return &elf_mips_gnu_pcrel32;
 
    case R_MIPS_COPY:
 
      return &elf_mips_copy_howto;
 
    case R_MIPS_JUMP_SLOT:
 
      return &elf_mips_jump_slot_howto;
    default:
    default:
      if (r_type >= R_MIPS16_min && r_type < R_MIPS16_max)
      if (r_type >= R_MIPS16_min && r_type < R_MIPS16_max)
        return &elf_mips16_howto_table_rel[r_type - R_MIPS16_min];
        return &elf_mips16_howto_table_rel[r_type - R_MIPS16_min];
      BFD_ASSERT (r_type < (unsigned int) R_MIPS_max);
      BFD_ASSERT (r_type < (unsigned int) R_MIPS_max);
      return &elf_mips_howto_table_rel[r_type];
      return &elf_mips_howto_table_rel[r_type];
Line 1377... Line 1448...
mips_elf_sym_is_global (bfd *abfd ATTRIBUTE_UNUSED, asymbol *sym)
mips_elf_sym_is_global (bfd *abfd ATTRIBUTE_UNUSED, asymbol *sym)
{
{
  if (SGI_COMPAT (abfd))
  if (SGI_COMPAT (abfd))
    return (sym->flags & BSF_SECTION_SYM) == 0;
    return (sym->flags & BSF_SECTION_SYM) == 0;
  else
  else
    return ((sym->flags & (BSF_GLOBAL | BSF_WEAK)) != 0
    return ((sym->flags & (BSF_GLOBAL | BSF_WEAK | BSF_GNU_UNIQUE)) != 0
            || bfd_is_und_section (bfd_get_section (sym))
            || bfd_is_und_section (bfd_get_section (sym))
            || bfd_is_com_section (bfd_get_section (sym)));
            || bfd_is_com_section (bfd_get_section (sym)));
}
}


/* Set the right machine number for a MIPS ELF file.  */
/* Set the right machine number for a MIPS ELF file.  */
Line 1556... Line 1627...
#define elf_backend_create_dynamic_sections \
#define elf_backend_create_dynamic_sections \
                                        _bfd_mips_elf_create_dynamic_sections
                                        _bfd_mips_elf_create_dynamic_sections
#define elf_backend_check_relocs        _bfd_mips_elf_check_relocs
#define elf_backend_check_relocs        _bfd_mips_elf_check_relocs
#define elf_backend_merge_symbol_attribute \
#define elf_backend_merge_symbol_attribute \
                                        _bfd_mips_elf_merge_symbol_attribute
                                        _bfd_mips_elf_merge_symbol_attribute
 
#define elf_backend_get_target_dtag     _bfd_mips_elf_get_target_dtag
#define elf_backend_adjust_dynamic_symbol \
#define elf_backend_adjust_dynamic_symbol \
                                        _bfd_mips_elf_adjust_dynamic_symbol
                                        _bfd_mips_elf_adjust_dynamic_symbol
#define elf_backend_always_size_sections \
#define elf_backend_always_size_sections \
                                        _bfd_mips_elf_always_size_sections
                                        _bfd_mips_elf_always_size_sections
#define elf_backend_size_dynamic_sections \
#define elf_backend_size_dynamic_sections \
Line 1577... Line 1649...
#define elf_backend_modify_segment_map  _bfd_mips_elf_modify_segment_map
#define elf_backend_modify_segment_map  _bfd_mips_elf_modify_segment_map
#define elf_backend_gc_mark_hook        _bfd_mips_elf_gc_mark_hook
#define elf_backend_gc_mark_hook        _bfd_mips_elf_gc_mark_hook
#define elf_backend_gc_sweep_hook       _bfd_mips_elf_gc_sweep_hook
#define elf_backend_gc_sweep_hook       _bfd_mips_elf_gc_sweep_hook
#define elf_backend_copy_indirect_symbol \
#define elf_backend_copy_indirect_symbol \
                                        _bfd_mips_elf_copy_indirect_symbol
                                        _bfd_mips_elf_copy_indirect_symbol
#define elf_backend_hide_symbol         _bfd_mips_elf_hide_symbol
 
#define elf_backend_grok_prstatus       elf32_mips_grok_prstatus
#define elf_backend_grok_prstatus       elf32_mips_grok_prstatus
#define elf_backend_grok_psinfo         elf32_mips_grok_psinfo
#define elf_backend_grok_psinfo         elf32_mips_grok_psinfo
#define elf_backend_ecoff_debug_swap    &mips_elf32_ecoff_debug_swap
#define elf_backend_ecoff_debug_swap    &mips_elf32_ecoff_debug_swap
 
 
#define elf_backend_got_header_size     (4 * MIPS_RESERVED_GOTNO)
#define elf_backend_got_header_size     (4 * MIPS_RESERVED_GOTNO)
#define elf_backend_may_use_rel_p       1
#define elf_backend_may_use_rel_p       1
#define elf_backend_may_use_rela_p      0
#define elf_backend_may_use_rela_p      0
#define elf_backend_default_use_rela_p  0
#define elf_backend_default_use_rela_p  0
#define elf_backend_sign_extend_vma     TRUE
#define elf_backend_sign_extend_vma     TRUE
 
#define elf_backend_plt_readonly        1
 
#define elf_backend_plt_sym_val         _bfd_mips_elf_plt_sym_val
 
 
#define elf_backend_discard_info        _bfd_mips_elf_discard_info
#define elf_backend_discard_info        _bfd_mips_elf_discard_info
#define elf_backend_ignore_discarded_relocs \
#define elf_backend_ignore_discarded_relocs \
                                        _bfd_mips_elf_ignore_discarded_relocs
                                        _bfd_mips_elf_ignore_discarded_relocs
 
#define elf_backend_write_section       _bfd_mips_elf_write_section
#define elf_backend_mips_irix_compat    elf32_mips_irix_compat
#define elf_backend_mips_irix_compat    elf32_mips_irix_compat
#define elf_backend_mips_rtype_to_howto mips_elf32_rtype_to_howto
#define elf_backend_mips_rtype_to_howto mips_elf32_rtype_to_howto
#define bfd_elf32_bfd_is_local_label_name \
#define bfd_elf32_bfd_is_local_label_name \
                                        mips_elf_is_local_label_name
                                        mips_elf_is_local_label_name
#define bfd_elf32_find_nearest_line     _bfd_mips_elf_find_nearest_line
#define bfd_elf32_find_nearest_line     _bfd_mips_elf_find_nearest_line
#define bfd_elf32_find_inliner_info     _bfd_mips_elf_find_inliner_info
#define bfd_elf32_find_inliner_info     _bfd_mips_elf_find_inliner_info
#define bfd_elf32_new_section_hook      _bfd_mips_elf_new_section_hook
#define bfd_elf32_new_section_hook      _bfd_mips_elf_new_section_hook
#define bfd_elf32_set_section_contents  _bfd_mips_elf_set_section_contents
#define bfd_elf32_set_section_contents  _bfd_mips_elf_set_section_contents
#define bfd_elf32_bfd_get_relocated_section_contents \
#define bfd_elf32_bfd_get_relocated_section_contents \
                                _bfd_elf_mips_get_relocated_section_contents
                                _bfd_elf_mips_get_relocated_section_contents
 
#define bfd_elf32_mkobject              _bfd_mips_elf_mkobject
#define bfd_elf32_bfd_link_hash_table_create \
#define bfd_elf32_bfd_link_hash_table_create \
                                        _bfd_mips_elf_link_hash_table_create
                                        _bfd_mips_elf_link_hash_table_create
#define bfd_elf32_bfd_final_link        _bfd_mips_elf_final_link
#define bfd_elf32_bfd_final_link        _bfd_mips_elf_final_link
#define bfd_elf32_bfd_merge_private_bfd_data \
#define bfd_elf32_bfd_merge_private_bfd_data \
                                        _bfd_mips_elf_merge_private_bfd_data
                                        _bfd_mips_elf_merge_private_bfd_data
Line 1649... Line 1724...
#define elf32_bed                       elf32_tradbed
#define elf32_bed                       elf32_tradbed
 
 
/* Include the target file again for this target.  */
/* Include the target file again for this target.  */
#include "elf32-target.h"
#include "elf32-target.h"
 
 
 
 
/* Specific to VxWorks.  */
 
static reloc_howto_type mips_vxworks_copy_howto_rela =
 
  HOWTO (R_MIPS_COPY,           /* type */
 
         0,                      /* rightshift */
 
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
 
         32,                    /* bitsize */
 
         FALSE,                 /* pc_relative */
 
         0,                      /* bitpos */
 
         complain_overflow_bitfield, /* complain_on_overflow */
 
         bfd_elf_generic_reloc, /* special_function */
 
         "R_MIPS_COPY",         /* name */
 
         FALSE,                 /* partial_inplace */
 
         0x0,                   /* src_mask */
 
         0x0,                   /* dst_mask */
 
         FALSE);                /* pcrel_offset */
 
 
 
/* Specific to VxWorks.  */
 
static reloc_howto_type mips_vxworks_jump_slot_howto_rela =
 
  HOWTO (R_MIPS_JUMP_SLOT,      /* type */
 
         0,                      /* rightshift */
 
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
 
         32,                    /* bitsize */
 
         FALSE,                 /* pc_relative */
 
         0,                      /* bitpos */
 
         complain_overflow_bitfield, /* complain_on_overflow */
 
         bfd_elf_generic_reloc, /* special_function */
 
         "R_MIPS_JUMP_SLOT",    /* name */
 
         FALSE,                 /* partial_inplace */
 
         0x0,                   /* src_mask */
 
         0x0,                   /* dst_mask */
 
         FALSE);                /* pcrel_offset */
 
 
 
/* Implement elf_backend_bfd_reloc_type_lookup for VxWorks.  */
 
 
 
static reloc_howto_type *
 
mips_vxworks_bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
 
{
 
  switch (code)
 
    {
 
    case BFD_RELOC_MIPS_COPY:
 
      return &mips_vxworks_copy_howto_rela;
 
    case BFD_RELOC_MIPS_JUMP_SLOT:
 
      return &mips_vxworks_jump_slot_howto_rela;
 
    default:
 
      return bfd_elf32_bfd_reloc_type_lookup (abfd, code);
 
    }
 
}
 
 
 
static reloc_howto_type *
 
mips_vxworks_bfd_reloc_name_lookup (bfd *abfd, const char *r_name)
 
{
 
  if (strcasecmp (mips_vxworks_copy_howto_rela.name, r_name) == 0)
 
    return &mips_vxworks_copy_howto_rela;
 
  if (strcasecmp (mips_vxworks_jump_slot_howto_rela.name, r_name) == 0)
 
    return &mips_vxworks_jump_slot_howto_rela;
 
 
 
  return bfd_elf32_bfd_reloc_name_lookup (abfd, r_name);
 
}
 
 
 
/* Implement elf_backend_mips_rtype_to_lookup for VxWorks.  */
 
 
 
static reloc_howto_type *
 
mips_vxworks_rtype_to_howto (unsigned int r_type, bfd_boolean rela_p)
 
{
 
  switch (r_type)
 
    {
 
    case R_MIPS_COPY:
 
      return &mips_vxworks_copy_howto_rela;
 
    case R_MIPS_JUMP_SLOT:
 
      return &mips_vxworks_jump_slot_howto_rela;
 
    default:
 
      return mips_elf32_rtype_to_howto (r_type, rela_p);
 
    }
 
}
 
 
 
/* Implement elf_backend_final_write_processing for VxWorks.  */
/* Implement elf_backend_final_write_processing for VxWorks.  */
 
 
static void
static void
mips_vxworks_final_write_processing (bfd *abfd, bfd_boolean linker)
mips_vxworks_final_write_processing (bfd *abfd, bfd_boolean linker)
{
{
Line 1757... Line 1756...
 
 
#undef elf_backend_want_got_plt
#undef elf_backend_want_got_plt
#define elf_backend_want_got_plt                1
#define elf_backend_want_got_plt                1
#undef elf_backend_want_plt_sym
#undef elf_backend_want_plt_sym
#define elf_backend_want_plt_sym                1
#define elf_backend_want_plt_sym                1
#undef elf_backend_got_symbol_offset
 
#define elf_backend_got_symbol_offset           0
 
#undef elf_backend_want_dynbss
 
#define elf_backend_want_dynbss                 1
 
#undef elf_backend_may_use_rel_p
#undef elf_backend_may_use_rel_p
#define elf_backend_may_use_rel_p               0
#define elf_backend_may_use_rel_p               0
#undef elf_backend_may_use_rela_p
#undef elf_backend_may_use_rela_p
#define elf_backend_may_use_rela_p              1
#define elf_backend_may_use_rela_p              1
#undef elf_backend_default_use_rela_p
#undef elf_backend_default_use_rela_p
#define elf_backend_default_use_rela_p          1
#define elf_backend_default_use_rela_p          1
#undef elf_backend_got_header_size
#undef elf_backend_got_header_size
#define elf_backend_got_header_size             (4 * 3)
#define elf_backend_got_header_size             (4 * 3)
#undef elf_backend_plt_readonly
#undef elf_backend_plt_sym_val
#define elf_backend_plt_readonly                1
 
 
 
#undef bfd_elf32_bfd_reloc_type_lookup
 
#define bfd_elf32_bfd_reloc_type_lookup \
 
  mips_vxworks_bfd_reloc_type_lookup
 
#undef bfd_elf32_bfd_reloc_name_lookup
 
#define bfd_elf32_bfd_reloc_name_lookup \
 
  mips_vxworks_bfd_reloc_name_lookup
 
#undef elf_backend_mips_rtype_to_howto
 
#define elf_backend_mips_rtype_to_howto \
 
  mips_vxworks_rtype_to_howto
 
#undef elf_backend_adjust_dynamic_symbol
 
#define elf_backend_adjust_dynamic_symbol \
 
  _bfd_mips_vxworks_adjust_dynamic_symbol
 
#undef elf_backend_finish_dynamic_symbol
#undef elf_backend_finish_dynamic_symbol
#define elf_backend_finish_dynamic_symbol \
#define elf_backend_finish_dynamic_symbol \
  _bfd_mips_vxworks_finish_dynamic_symbol
  _bfd_mips_vxworks_finish_dynamic_symbol
#undef bfd_elf32_bfd_link_hash_table_create
#undef bfd_elf32_bfd_link_hash_table_create
#define bfd_elf32_bfd_link_hash_table_create \
#define bfd_elf32_bfd_link_hash_table_create \

powered by: WebSVN 2.1.0

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