Ignore:
Timestamp:
Aug 16, 2003, 6:59:22 PM (22 years ago)
Author:
bird
Message:

binutils v2.14 - offical sources.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/GNU/src/binutils/bfd/elf32-d30v.c

    • Property cvs2svn:cvs-rev changed from 1.1 to 1.1.1.2
    r608 r609  
    11/* D30V-specific support for 32-bit ELF
    2    Copyright 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
     2   Copyright 1997, 1998, 1999, 2000, 2001, 2002
     3   Free Software Foundation, Inc.
    34   Contributed by Martin Hunt (hunt@cygnus.com).
    45
     
    2829  PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
    2930static void d30v_info_to_howto_rel
    30   PARAMS ((bfd *, arelent *, Elf32_Internal_Rel *));
     31  PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
    3132static void d30v_info_to_howto_rela
    32   PARAMS ((bfd *, arelent *, Elf32_Internal_Rela *));
     33  PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
    3334static bfd_reloc_status_type bfd_elf_d30v_reloc PARAMS ((
    3435     bfd *abfd,
     
    5556         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    5657         32,                    /* bitsize */
    57          false,                 /* pc_relative */
     58         FALSE,                 /* pc_relative */
    5859         0,                     /* bitpos */
    5960         complain_overflow_bitfield, /* complain_on_overflow */
    6061         bfd_elf_generic_reloc, /* special_function */
    6162         "R_D30V_NONE",         /* name */
    62          false,                 /* partial_inplace */
     63         FALSE,                 /* partial_inplace */
    6364         0,                     /* src_mask */
    6465         0,                     /* dst_mask */
    65          false),                /* pcrel_offset */
     66         FALSE),                /* pcrel_offset */
    6667
    6768  /* A 6 bit absolute relocation */
     
    7071         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    7172         6,                     /* bitsize */
    72          false,                 /* pc_relative */
     73         FALSE,                 /* pc_relative */
    7374         0,                     /* bitpos */
    7475         complain_overflow_bitfield, /* complain_on_overflow */
    7576         bfd_elf_generic_reloc, /* special_function */
    7677         "R_D30V_6",            /* name */
    77          false,                 /* partial_inplace */
     78         FALSE,                 /* partial_inplace */
    7879         0x3f,                  /* src_mask */
    7980         0x3f,                  /* dst_mask */
    80          false),                /* pcrel_offset */
     81         FALSE),                /* pcrel_offset */
    8182
    8283  /* A relative 9 bit relocation, right shifted by 3 */
     
    8586         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    8687         6,                     /* bitsize */
    87          true,                  /* pc_relative */
     88         TRUE,                  /* pc_relative */
    8889         0,                     /* bitpos */
    8990         complain_overflow_signed, /* complain_on_overflow */
    9091         bfd_elf_d30v_reloc_21, /* special_function */
    9192         "R_D30V_9_PCREL",      /* name */
    92          false,                 /* partial_inplace */
     93         FALSE,                 /* partial_inplace */
    9394         0x3f,                  /* src_mask */
    9495         0x3f,                  /* dst_mask */
    95          true),                 /* pcrel_offset */
     96         TRUE),                 /* pcrel_offset */
    9697
    9798  /* A relative 9 bit relocation, right shifted by 3 */
     
    100101         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    101102         6,                     /* bitsize */
    102          true,                  /* pc_relative */
     103         TRUE,                  /* pc_relative */
    103104         0,                     /* bitpos */
    104105         complain_overflow_signed, /* complain_on_overflow */
    105106         bfd_elf_d30v_reloc_21, /* special_function */
    106107         "R_D30V_9_PCREL_R",    /* name */
    107          false,                 /* partial_inplace */
     108         FALSE,                 /* partial_inplace */
    108109         0x3f,                  /* src_mask */
    109110         0x3f,                  /* dst_mask */
    110          true),                 /* pcrel_offset */
     111         TRUE),                 /* pcrel_offset */
    111112
    112113  /* An absolute 15 bit relocation, right shifted by 3 */
     
    115116         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    116117         12,                    /* bitsize */
    117          false,                 /* pc_relative */
     118         FALSE,                 /* pc_relative */
    118119         0,                     /* bitpos */
    119120         complain_overflow_signed, /* complain_on_overflow */
    120121         bfd_elf_generic_reloc, /* special_function */
    121122         "R_D30V_15",           /* name */
    122          false,                 /* partial_inplace */
     123         FALSE,                 /* partial_inplace */
    123124         0xfff,                 /* src_mask */
    124125         0xfff,                 /* dst_mask */
    125          false),                /* pcrel_offset */
     126         FALSE),                /* pcrel_offset */
    126127
    127128  /* A relative 15 bit relocation, right shifted by 3 */
     
    130131         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    131132         12,                    /* bitsize */
    132          true,                  /* pc_relative */
     133         TRUE,                  /* pc_relative */
    133134         0,                     /* bitpos */
    134135         complain_overflow_signed, /* complain_on_overflow */
    135136         bfd_elf_d30v_reloc_21, /* special_function */
    136137         "R_D30V_15_PCREL",     /* name */
    137          false,                 /* partial_inplace */
     138         FALSE,                 /* partial_inplace */
    138139         0xfff,                 /* src_mask */
    139140         0xfff,                 /* dst_mask */
    140          true),                 /* pcrel_offset */
     141         TRUE),                 /* pcrel_offset */
    141142
    142143  /* A relative 15 bit relocation, right shifted by 3 */
     
    145146         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    146147         12,                    /* bitsize */
    147          true,                  /* pc_relative */
     148         TRUE,                  /* pc_relative */
    148149         0,                     /* bitpos */
    149150         complain_overflow_signed, /* complain_on_overflow */
    150151         bfd_elf_d30v_reloc_21, /* special_function */
    151152         "R_D30V_15_PCREL_R",   /* name */
    152          false,                 /* partial_inplace */
     153         FALSE,                 /* partial_inplace */
    153154         0xfff,                 /* src_mask */
    154155         0xfff,                 /* dst_mask */
    155          true),                 /* pcrel_offset */
     156         TRUE),                 /* pcrel_offset */
    156157
    157158  /* An absolute 21 bit relocation, right shifted by 3 */
     
    160161         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    161162         18,                    /* bitsize */
    162          false,                 /* pc_relative */
     163         FALSE,                 /* pc_relative */
    163164         0,                     /* bitpos */
    164165         complain_overflow_signed, /* complain_on_overflow */
    165166         bfd_elf_generic_reloc, /* special_function */
    166167         "R_D30V_21",           /* name */
    167          false,                 /* partial_inplace */
     168         FALSE,                 /* partial_inplace */
    168169         0x3ffff,               /* src_mask */
    169170         0x3ffff,               /* dst_mask */
    170          false),                /* pcrel_offset */
     171         FALSE),                /* pcrel_offset */
    171172
    172173  /* A relative 21 bit relocation, right shifted by 3 */
     
    175176         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    176177         18,                    /* bitsize */
    177          true,                  /* pc_relative */
     178         TRUE,                  /* pc_relative */
    178179         0,                     /* bitpos */
    179180         complain_overflow_signed, /* complain_on_overflow */
    180181         bfd_elf_d30v_reloc_21, /* special_function */
    181182         "R_D30V_21_PCREL",     /* name */
    182          false,                 /* partial_inplace */
     183         FALSE,                 /* partial_inplace */
    183184         0x3ffff,               /* src_mask */
    184185         0x3ffff,               /* dst_mask */
    185          true),                 /* pcrel_offset */
     186         TRUE),                 /* pcrel_offset */
    186187
    187188  /* A relative 21 bit relocation, right shifted by 3, in the Right container */
     
    190191         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    191192         18,                    /* bitsize */
    192          true,                  /* pc_relative */
     193         TRUE,                  /* pc_relative */
    193194         0,                     /* bitpos */
    194195         complain_overflow_signed, /* complain_on_overflow */
    195196         bfd_elf_d30v_reloc_21, /* special_function */
    196197         "R_D30V_21_PCREL_R",   /* name */
    197          false,                 /* partial_inplace */
     198         FALSE,                 /* partial_inplace */
    198199         0x3ffff,               /* src_mask */
    199200         0x3ffff,               /* dst_mask */
    200          true),                 /* pcrel_offset */
     201         TRUE),                 /* pcrel_offset */
    201202
    202203  /* A D30V 32 bit absolute relocation */
     
    205206         4,                     /* size (0 = byte, 1 = short, 2 = long) */
    206207         32,                    /* bitsize */
    207          false,                 /* pc_relative */
     208         FALSE,                 /* pc_relative */
    208209         0,                     /* bitpos */
    209210         complain_overflow_bitfield, /* complain_on_overflow */
    210211         bfd_elf_d30v_reloc,    /* special_function */
    211212         "R_D30V_32",           /* name */
    212          false,                 /* partial_inplace */
     213         FALSE,                 /* partial_inplace */
    213214         0xffffffff,            /* src_mask */
    214215         0xffffffff,            /* dst_mask */
    215          false),                /* pcrel_offset */
     216         FALSE),                /* pcrel_offset */
    216217
    217218  /* A relative 32 bit relocation */
     
    220221         4,                     /* size (0 = byte, 1 = short, 2 = long) */
    221222         32,                    /* bitsize */
    222          true,                  /* pc_relative */
     223         TRUE,                  /* pc_relative */
    223224         0,                     /* bitpos */
    224225         complain_overflow_signed, /* complain_on_overflow */
    225226         bfd_elf_d30v_reloc,    /* special_function */
    226227         "R_D30V_32_PCREL",     /* name */
    227          false,                 /* partial_inplace */
     228         FALSE,                 /* partial_inplace */
    228229         0xffffffff,            /* src_mask */
    229230         0xffffffff,            /* dst_mask */
    230          true),                 /* pcrel_offset */
     231         TRUE),                 /* pcrel_offset */
    231232
    232233  /* A regular 32 bit absolute relocation */
     
    235236         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    236237         32,                    /* bitsize */
    237          false,                 /* pc_relative */
     238         FALSE,                 /* pc_relative */
    238239         0,                     /* bitpos */
    239240         complain_overflow_bitfield, /* complain_on_overflow */
    240241         bfd_elf_generic_reloc, /* special_function */
    241          "R_D30V_32_NORMAL",            /* name */
    242          false,                 /* partial_inplace */
     242         "R_D30V_32_NORMAL",    /* name */
     243         FALSE,                 /* partial_inplace */
    243244         0xffffffff,            /* src_mask */
    244245         0xffffffff,            /* dst_mask */
    245          false),                /* pcrel_offset */
     246         FALSE),                /* pcrel_offset */
    246247
    247248};
     
    314315     symbol we are relocating against, plus any addend.  */
    315316
    316   if (howto->pc_relative == true)
     317  if (howto->pc_relative)
    317318    {
    318319      tmp_addr = input_section->output_section->vma + input_section->output_offset
     
    333334  relocation += num;
    334335
    335   if (howto->pc_relative == true && howto->bitsize == 32)
     336  if (howto->pc_relative && howto->bitsize == 32)
    336337    {
    337338      /* The D30V has a PC that doesn't wrap and PC-relative jumps are
     
    423424     symbol we are relocating against, plus any addend.  */
    424425
    425   if (howto->pc_relative == true)
     426  if (howto->pc_relative)
    426427    {
    427428      relocation -= (input_section->output_section->vma
    428429                     + input_section->output_offset);
    429       if (howto->pcrel_offset == true)
     430      if (howto->pcrel_offset)
    430431        relocation -= reloc_entry->address;
    431432    }
     
    522523     bfd *abfd ATTRIBUTE_UNUSED;
    523524     arelent *cache_ptr;
    524      Elf32_Internal_Rel *dst;
     525     Elf_Internal_Rela *dst;
    525526{
    526527  unsigned int r_type;
     
    537538     bfd *abfd ATTRIBUTE_UNUSED;
    538539     arelent *cache_ptr;
    539      Elf32_Internal_Rela *dst;
     540     Elf_Internal_Rela *dst;
    540541{
    541542  unsigned int r_type;
     
    547548
    548549#define ELF_ARCH                bfd_arch_d30v
    549 #define ELF_MACHINE_CODE        EM_CYGNUS_D30V
     550#define ELF_MACHINE_CODE        EM_D30V
     551#define ELF_MACHINE_ALT1        EM_CYGNUS_D30V
    550552#define ELF_MAXPAGESIZE         0x1000
    551553
Note: See TracChangeset for help on using the changeset viewer.