Back to index

cell-binutils  2.17cvs20070401
Defines | Functions
elf32-sparc.c File Reference
#include "bfd.h"
#include "sysdep.h"
#include "bfdlink.h"
#include "libbfd.h"
#include "elf-bfd.h"
#include "elf/sparc.h"
#include "opcode/sparc.h"
#include "elfxx-sparc.h"
#include "elf-vxworks.h"
#include "elf32-target.h"

Go to the source code of this file.

Defines

#define TARGET_BIG_SYM   bfd_elf32_sparc_vec
#define TARGET_BIG_NAME   "elf32-sparc"
#define ELF_ARCH   bfd_arch_sparc
#define ELF_MACHINE_CODE   EM_SPARC
#define ELF_MACHINE_ALT1   EM_SPARC32PLUS
#define ELF_MAXPAGESIZE   0x10000
#define ELF_COMMONPAGESIZE   0x2000
#define bfd_elf32_bfd_merge_private_bfd_data   elf32_sparc_merge_private_bfd_data
#define elf_backend_final_write_processing   elf32_sparc_final_write_processing
#define elf_backend_grok_psinfo   elf32_sparc_grok_psinfo
#define elf_backend_reloc_type_class   elf32_sparc_reloc_type_class
#define elf_info_to_howto   _bfd_sparc_elf_info_to_howto
#define bfd_elf32_bfd_reloc_type_lookup   _bfd_sparc_elf_reloc_type_lookup
#define bfd_elf32_bfd_reloc_name_lookup   _bfd_sparc_elf_reloc_name_lookup
#define bfd_elf32_bfd_link_hash_table_create   _bfd_sparc_elf_link_hash_table_create
#define bfd_elf32_bfd_relax_section   _bfd_sparc_elf_relax_section
#define bfd_elf32_new_section_hook   _bfd_sparc_elf_new_section_hook
#define elf_backend_copy_indirect_symbol   _bfd_sparc_elf_copy_indirect_symbol
#define elf_backend_create_dynamic_sections   _bfd_sparc_elf_create_dynamic_sections
#define elf_backend_check_relocs   _bfd_sparc_elf_check_relocs
#define elf_backend_adjust_dynamic_symbol   _bfd_sparc_elf_adjust_dynamic_symbol
#define elf_backend_omit_section_dynsym   _bfd_sparc_elf_omit_section_dynsym
#define elf_backend_size_dynamic_sections   _bfd_sparc_elf_size_dynamic_sections
#define elf_backend_relocate_section   _bfd_sparc_elf_relocate_section
#define elf_backend_finish_dynamic_symbol   _bfd_sparc_elf_finish_dynamic_symbol
#define elf_backend_finish_dynamic_sections   _bfd_sparc_elf_finish_dynamic_sections
#define bfd_elf32_mkobject   _bfd_sparc_elf_mkobject
#define elf_backend_object_p   _bfd_sparc_elf_object_p
#define elf_backend_gc_mark_hook   _bfd_sparc_elf_gc_mark_hook
#define elf_backend_gc_sweep_hook   _bfd_sparc_elf_gc_sweep_hook
#define elf_backend_plt_sym_val   _bfd_sparc_elf_plt_sym_val
#define elf_backend_init_index_section   _bfd_elf_init_1_index_section
#define elf_backend_can_gc_sections   1
#define elf_backend_can_refcount   1
#define elf_backend_want_got_plt   0
#define elf_backend_plt_readonly   0
#define elf_backend_want_plt_sym   1
#define elf_backend_got_header_size   4
#define elf_backend_rela_normal   1
#define TARGET_BIG_SYM   bfd_elf32_sparc_vxworks_vec
#define TARGET_BIG_NAME   "elf32-sparc-vxworks"
#define ELF_MINPAGESIZE   0x1000
#define bfd_elf32_bfd_link_hash_table_create   elf32_sparc_vxworks_link_hash_table_create
#define elf_backend_want_got_plt   1
#define elf_backend_plt_readonly   1
#define elf_backend_got_header_size   12
#define elf_backend_add_symbol_hook   elf_vxworks_add_symbol_hook
#define elf_backend_link_output_symbol_hook   elf_vxworks_link_output_symbol_hook
#define elf_backend_emit_relocs   elf_vxworks_emit_relocs
#define elf_backend_final_write_processing   elf32_sparc_vxworks_final_write_processing
#define elf32_bed   sparc_elf_vxworks_bed

Functions

static bfd_boolean elf32_sparc_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
static bfd_boolean elf32_sparc_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
static void elf32_sparc_final_write_processing (bfd *abfd, bfd_boolean linker ATTRIBUTE_UNUSED)
static enum elf_reloc_type_class elf32_sparc_reloc_type_class (const Elf_Internal_Rela *rela)
static struct bfd_link_hash_tableelf32_sparc_vxworks_link_hash_table_create (bfd *abfd)
static void elf32_sparc_vxworks_final_write_processing (bfd *abfd, bfd_boolean linker)

Define Documentation

Definition at line 262 of file elf32-sparc.c.

Definition at line 262 of file elf32-sparc.c.

Definition at line 177 of file elf32-sparc.c.

Definition at line 190 of file elf32-sparc.c.

Definition at line 186 of file elf32-sparc.c.

Definition at line 185 of file elf32-sparc.c.

Definition at line 207 of file elf32-sparc.c.

Definition at line 191 of file elf32-sparc.c.

#define elf32_bed   sparc_elf_vxworks_bed

Definition at line 285 of file elf32-sparc.c.

#define ELF_ARCH   bfd_arch_sparc

Definition at line 171 of file elf32-sparc.c.

Definition at line 272 of file elf32-sparc.c.

Definition at line 197 of file elf32-sparc.c.

Definition at line 214 of file elf32-sparc.c.

#define elf_backend_can_refcount   1

Definition at line 215 of file elf32-sparc.c.

Definition at line 196 of file elf32-sparc.c.

Definition at line 192 of file elf32-sparc.c.

Definition at line 194 of file elf32-sparc.c.

Definition at line 278 of file elf32-sparc.c.

Definition at line 281 of file elf32-sparc.c.

Definition at line 281 of file elf32-sparc.c.

Definition at line 205 of file elf32-sparc.c.

Definition at line 203 of file elf32-sparc.c.

Definition at line 209 of file elf32-sparc.c.

Definition at line 210 of file elf32-sparc.c.

Definition at line 270 of file elf32-sparc.c.

#define elf_backend_got_header_size   12

Definition at line 270 of file elf32-sparc.c.

Definition at line 181 of file elf32-sparc.c.

Definition at line 212 of file elf32-sparc.c.

Definition at line 275 of file elf32-sparc.c.

Definition at line 208 of file elf32-sparc.c.

Definition at line 199 of file elf32-sparc.c.

#define elf_backend_plt_readonly   0

Definition at line 268 of file elf32-sparc.c.

#define elf_backend_plt_readonly   1

Definition at line 268 of file elf32-sparc.c.

Definition at line 211 of file elf32-sparc.c.

#define elf_backend_rela_normal   1

Definition at line 220 of file elf32-sparc.c.

Definition at line 182 of file elf32-sparc.c.

Definition at line 202 of file elf32-sparc.c.

Definition at line 200 of file elf32-sparc.c.

#define elf_backend_want_got_plt   0

Definition at line 266 of file elf32-sparc.c.

#define elf_backend_want_got_plt   1

Definition at line 266 of file elf32-sparc.c.

#define elf_backend_want_plt_sym   1

Definition at line 218 of file elf32-sparc.c.

#define ELF_COMMONPAGESIZE   0x2000

Definition at line 175 of file elf32-sparc.c.

Definition at line 184 of file elf32-sparc.c.

Definition at line 173 of file elf32-sparc.c.

#define ELF_MACHINE_CODE   EM_SPARC

Definition at line 172 of file elf32-sparc.c.

#define ELF_MAXPAGESIZE   0x10000

Definition at line 174 of file elf32-sparc.c.

#define ELF_MINPAGESIZE   0x1000

Definition at line 259 of file elf32-sparc.c.

#define TARGET_BIG_NAME   "elf32-sparc"

Definition at line 256 of file elf32-sparc.c.

#define TARGET_BIG_NAME   "elf32-sparc-vxworks"

Definition at line 256 of file elf32-sparc.c.

Definition at line 254 of file elf32-sparc.c.

Definition at line 254 of file elf32-sparc.c.


Function Documentation

static void elf32_sparc_final_write_processing ( bfd abfd,
bfd_boolean linker  ATTRIBUTE_UNUSED 
) [static]

Definition at line 119 of file elf32-sparc.c.

{
  switch (bfd_get_mach (abfd))
    {
    case bfd_mach_sparc :
    case bfd_mach_sparc_sparclet :
    case bfd_mach_sparc_sparclite :
      break; /* nothing to do */
    case bfd_mach_sparc_v8plus :
      elf_elfheader (abfd)->e_machine = EM_SPARC32PLUS;
      elf_elfheader (abfd)->e_flags &=~ EF_SPARC_32PLUS_MASK;
      elf_elfheader (abfd)->e_flags |= EF_SPARC_32PLUS;
      break;
    case bfd_mach_sparc_v8plusa :
      elf_elfheader (abfd)->e_machine = EM_SPARC32PLUS;
      elf_elfheader (abfd)->e_flags &=~ EF_SPARC_32PLUS_MASK;
      elf_elfheader (abfd)->e_flags |= EF_SPARC_32PLUS | EF_SPARC_SUN_US1;
      break;
    case bfd_mach_sparc_v8plusb :
      elf_elfheader (abfd)->e_machine = EM_SPARC32PLUS;
      elf_elfheader (abfd)->e_flags &=~ EF_SPARC_32PLUS_MASK;
      elf_elfheader (abfd)->e_flags |= EF_SPARC_32PLUS | EF_SPARC_SUN_US1
                                   | EF_SPARC_SUN_US3;
      break;
    case bfd_mach_sparc_sparclite_le :
      elf_elfheader (abfd)->e_flags |= EF_SPARC_LEDATA;
      break;
    default :
      abort ();
      break;
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

static bfd_boolean elf32_sparc_grok_psinfo ( bfd abfd,
Elf_Internal_Note note 
) [static]

Definition at line 34 of file elf32-sparc.c.

{
  switch (note->descsz)
    {
    default:
      return FALSE;

    case 260:               /* Solaris prpsinfo_t.  */
      elf_tdata (abfd)->core_program
       = _bfd_elfcore_strndup (abfd, note->descdata + 84, 16);
      elf_tdata (abfd)->core_command
       = _bfd_elfcore_strndup (abfd, note->descdata + 100, 80);
      break;

    case 336:               /* Solaris psinfo_t.  */
      elf_tdata (abfd)->core_program
       = _bfd_elfcore_strndup (abfd, note->descdata + 88, 16);
      elf_tdata (abfd)->core_command
       = _bfd_elfcore_strndup (abfd, note->descdata + 104, 80);
      break;
    }

  return TRUE;
}

Here is the call graph for this function:

static bfd_boolean elf32_sparc_merge_private_bfd_data ( bfd ibfd,
bfd obfd 
) [static]

Definition at line 70 of file elf32-sparc.c.

{
  bfd_boolean error;
  unsigned long ibfd_mach;
  /* FIXME: This should not be static.  */
  static unsigned long previous_ibfd_e_flags = (unsigned long) -1;

  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
    return TRUE;

  error = FALSE;

  ibfd_mach = bfd_get_mach (ibfd);
  if (bfd_mach_sparc_64bit_p (ibfd_mach))
    {
      error = TRUE;
      (*_bfd_error_handler)
       (_("%B: compiled for a 64 bit system and target is 32 bit"), ibfd);
    }
  else if ((ibfd->flags & DYNAMIC) == 0)
    {
      if (bfd_get_mach (obfd) < ibfd_mach)
       bfd_set_arch_mach (obfd, bfd_arch_sparc, ibfd_mach);
    }

  if (((elf_elfheader (ibfd)->e_flags & EF_SPARC_LEDATA)
       != previous_ibfd_e_flags)
      && previous_ibfd_e_flags != (unsigned long) -1)
    {
      (*_bfd_error_handler)
       (_("%B: linking little endian files with big endian files"), ibfd);
      error = TRUE;
    }
  previous_ibfd_e_flags = elf_elfheader (ibfd)->e_flags & EF_SPARC_LEDATA;

  if (error)
    {
      bfd_set_error (bfd_error_bad_value);
      return FALSE;
    }

  return TRUE;
}

Here is the call graph for this function:

Definition at line 154 of file elf32-sparc.c.

{
  switch ((int) ELF32_R_TYPE (rela->r_info))
    {
    case R_SPARC_RELATIVE:
      return reloc_class_relative;
    case R_SPARC_JMP_SLOT:
      return reloc_class_plt;
    case R_SPARC_COPY:
      return reloc_class_copy;
    default:
      return reloc_class_normal;
    }
}
static void elf32_sparc_vxworks_final_write_processing ( bfd abfd,
bfd_boolean  linker 
) [static]

Definition at line 247 of file elf32-sparc.c.

Here is the call graph for this function:

Definition at line 228 of file elf32-sparc.c.

{
  struct bfd_link_hash_table *ret;

  ret = _bfd_sparc_elf_link_hash_table_create (abfd);
  if (ret)
    {
      struct _bfd_sparc_elf_link_hash_table *htab;

      htab = (struct _bfd_sparc_elf_link_hash_table *) ret;
      htab->is_vxworks = 1;
    }
  return ret;
}

Here is the call graph for this function: