Back to index

cell-binutils  2.17cvs20070401
Defines | Functions | Variables
elf32-i960.c File Reference
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "elf-bfd.h"
#include "elf/i960.h"
#include "elf32-target.h"

Go to the source code of this file.


#define USE_REL   1
#define bfd_elf32_bfd_reloc_type_lookup   elf32_i960_reloc_type_lookup
#define bfd_elf32_bfd_reloc_name_lookup   elf32_i960_reloc_name_lookup
#define elf_info_to_howto   elf32_i960_info_to_howto
#define elf_info_to_howto_rel   elf32_i960_info_to_howto_rel
#define TARGET_LITTLE_SYM   bfd_elf32_i960_vec
#define TARGET_LITTLE_NAME   "elf32-i960"
#define ELF_ARCH   bfd_arch_i960
#define ELF_MACHINE_CODE   EM_960
#define ELF_MAXPAGESIZE   1 /* FIXME: This number is wrong, It should be the page size in bytes. */


static bfd_reloc_status_type elf32_i960_relocate (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry, asymbol *symbol, PTR data ATTRIBUTE_UNUSED, asection *input_section, bfd *output_bfd, char **error_message ATTRIBUTE_UNUSED)
static enum elf_i960_reloc_type elf32_i960_bfd_to_reloc_type (bfd_reloc_code_real_type code)
static void elf32_i960_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr ATTRIBUTE_UNUSED, Elf_Internal_Rela *dst ATTRIBUTE_UNUSED)
static void elf32_i960_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr, Elf_Internal_Rela *dst)
static reloc_howto_type * elf32_i960_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, bfd_reloc_code_real_type code)
static reloc_howto_type * elf32_i960_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, const char *r_name)


static reloc_howto_type elf_howto_table []

Define Documentation

Definition at line 31 of file elf32-i960.c.

Definition at line 30 of file elf32-i960.c.

#define ELF_ARCH   bfd_arch_i960

Definition at line 164 of file elf32-i960.c.

Definition at line 33 of file elf32-i960.c.

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

#define ELF_MACHINE_CODE   EM_960

Definition at line 165 of file elf32-i960.c.

#define ELF_MAXPAGESIZE   1 /* FIXME: This number is wrong, It should be the page size in bytes. */

Definition at line 166 of file elf32-i960.c.

#define TARGET_LITTLE_NAME   "elf32-i960"

Definition at line 163 of file elf32-i960.c.

Definition at line 162 of file elf32-i960.c.

#define USE_REL   1

Definition at line 28 of file elf32-i960.c.

Function Documentation

static enum elf_i960_reloc_type elf32_i960_bfd_to_reloc_type ( bfd_reloc_code_real_type  code) [static]

Definition at line 104 of file elf32-i960.c.

  switch (code)
      return R_960_NONE;
    case BFD_RELOC_I960_CALLJ:
      return R_960_OPTCALL;
    case BFD_RELOC_32:
    case BFD_RELOC_CTOR:
      return R_960_32;
    case BFD_RELOC_24_PCREL:
      return R_960_IP24;

Here is the caller graph for this function:

static void elf32_i960_info_to_howto ( bfd *abfd  ATTRIBUTE_UNUSED,
arelent *cache_ptr  ATTRIBUTE_UNUSED,
Elf_Internal_Rela *dst  ATTRIBUTE_UNUSED 
) [static]

Definition at line 121 of file elf32-i960.c.

  abort ();
static void elf32_i960_info_to_howto_rel ( bfd *abfd  ATTRIBUTE_UNUSED,
arelent cache_ptr,
Elf_Internal_Rela dst 
) [static]

Definition at line 129 of file elf32-i960.c.

  enum elf_i960_reloc_type type;

  type = (enum elf_i960_reloc_type) ELF32_R_TYPE (dst->r_info);
  BFD_ASSERT (type < R_960_max);

  cache_ptr->howto = &elf_howto_table[(int) type];
static reloc_howto_type* elf32_i960_reloc_name_lookup ( bfd *abfd  ATTRIBUTE_UNUSED,
const char *  r_name 
) [static]

Definition at line 149 of file elf32-i960.c.

  unsigned int i;

  for (i = 0; i < sizeof (elf_howto_table) / sizeof (elf_howto_table[0]); i++)
    if (elf_howto_table[i].name != NULL
       && strcasecmp (elf_howto_table[i].name, r_name) == 0)
      return &elf_howto_table[i];

  return NULL;

Here is the call graph for this function:

static reloc_howto_type* elf32_i960_reloc_type_lookup ( bfd *abfd  ATTRIBUTE_UNUSED,
bfd_reloc_code_real_type  code 
) [static]

Definition at line 142 of file elf32-i960.c.

Here is the call graph for this function:

static bfd_reloc_status_type elf32_i960_relocate ( bfd *abfd  ATTRIBUTE_UNUSED,
arelent reloc_entry,
asymbol symbol,
asection input_section,
bfd output_bfd,
char **error_message  ATTRIBUTE_UNUSED 
) [static]

Definition at line 47 of file elf32-i960.c.

  /* HACK: I think this first condition is necessary when producing
     relocatable output.  After the end of HACK, the code is identical
     to bfd_elf_generic_reloc().  I would _guess_ the first change
     belongs there rather than here.  martindo 1998-10-23.  */
  if (output_bfd != (bfd *) NULL
      && reloc_entry->howto->pc_relative
      && !reloc_entry->howto->pcrel_offset)
    reloc_entry->addend -= symbol->value;

  /* This is more dubious.  */
  else if (output_bfd != (bfd *) NULL
          && (symbol->flags & BSF_SECTION_SYM) != 0)
    reloc_entry->addend -= symbol->section->output_section->vma;

      /* ...end of HACK.  */
      if (output_bfd != (bfd *) NULL
         && (symbol->flags & BSF_SECTION_SYM) == 0
         && (! reloc_entry->howto->partial_inplace
             || reloc_entry->addend == 0))
         reloc_entry->address += input_section->output_offset;
         return bfd_reloc_ok;

  return bfd_reloc_continue;

Variable Documentation

reloc_howto_type elf_howto_table[] [static]
Initial value:
  HOWTO (R_960_NONE, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
        elf32_i960_relocate, "R_960_NONE", TRUE,
        0x00000000, 0x00000000, FALSE),
  HOWTO (R_960_32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
        elf32_i960_relocate, "R_960_32", TRUE,
        0xffffffff, 0xffffffff, FALSE),
  HOWTO (R_960_IP24, 0, 2, 24, TRUE, 0, complain_overflow_signed,
        elf32_i960_relocate, "R_960_IP24 ", TRUE,
        0x00ffffff, 0x00ffffff, FALSE),


Definition at line 85 of file elf32-i960.c.