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-pj.c

    • Property cvs2svn:cvs-rev changed from 1.1 to 1.1.1.2
    r608 r609  
    11/* picoJava specific support for 32-bit ELF
    2    Copyright 1999, 2000 Free Software Foundation, Inc.
     2   Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    33   Contributed by Steve Chamberlan of Transmeta (sac@pobox.com).
    44
     
    3232static void pj_elf_info_to_howto
    3333  PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
     34static void pj_elf_final_write_processing
     35  PARAMS ((bfd *, bfd_boolean));
    3436
    3537static reloc_howto_type pj_elf_howto_table[] =
     
    4042         0,                     /* size (0 = byte, 1 = short, 2 = long) */
    4143         0,                     /* bitsize */
    42          false,                 /* pc_relative */
     44         FALSE,                 /* pc_relative */
    4345         0,                     /* bitpos */
    4446         complain_overflow_dont, /* complain_on_overflow */
    4547         pj_elf_reloc,          /* special_function */
    4648         "R_PJ_NONE",           /* name */
    47          false,                 /* partial_inplace */
     49         FALSE,                 /* partial_inplace */
    4850         0,                     /* src_mask */
    4951         0,                     /* dst_mask */
    50          false),                /* pcrel_offset */
    51 
    52   /* 32 bit absolute relocation.  Setting partial_inplace to true and
     52         FALSE),                /* pcrel_offset */
     53
     54  /* 32 bit absolute relocation.  Setting partial_inplace to TRUE and
    5355     src_mask to a non-zero value is similar to the COFF toolchain.  */
    5456  HOWTO (R_PJ_DATA_DIR32,               /* type */
     
    5658         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    5759         32,                    /* bitsize */
    58          false,                 /* pc_relative */
     60         FALSE,                 /* pc_relative */
    5961         0,                     /* bitpos */
    6062         complain_overflow_bitfield, /* complain_on_overflow */
    6163         pj_elf_reloc,          /* special_function */
    6264         "R_PJ_DIR32",          /* name */
    63          true,                  /* partial_inplace */
     65         TRUE,                  /* partial_inplace */
    6466         0xffffffff,            /* src_mask */
    6567         0xffffffff,            /* dst_mask */
    66          false),                /* pcrel_offset */
     68         FALSE),                /* pcrel_offset */
    6769
    6870  /* 32 bit PC relative relocation.  */
     
    7173         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    7274         32,                    /* bitsize */
    73          true,                  /* pc_relative */
     75         TRUE,                  /* pc_relative */
    7476         0,                     /* bitpos */
    7577         complain_overflow_signed, /* complain_on_overflow */
    7678         pj_elf_reloc,          /* special_function */
    7779         "R_PJ_REL32",          /* name */
    78          false,                 /* partial_inplace */
     80         FALSE,                 /* partial_inplace */
    7981         0,                     /* src_mask */
    8082         0xffffffff,            /* dst_mask */
    81          true),                 /* pcrel_offset */
     83         TRUE),                 /* pcrel_offset */
    8284
    8385/* 16 bit PC relative relocation.  */
     
    8688         1,                     /* size (0 = byte, 1 = short, 2 = long) */
    8789         16,                    /* bitsize */
    88          true,                  /* pc_relative */
     90         TRUE,                  /* pc_relative */
    8991         0,                     /* bitpos */
    9092         complain_overflow_signed, /* complain_on_overf6w */
    9193         pj_elf_reloc,          /* special_function */
    9294         "R_PJ_REL16",          /* name */
    93          false,                 /* partial_inplace */
     95         FALSE,                 /* partial_inplace */
    9496         0xffff,                /* src_mask */
    9597         0xffff,                /* dst_mask */
    96          true),                 /* pcrel_offset */
     98         TRUE),                 /* pcrel_offset */
    9799  EMPTY_HOWTO (4),
    98100  EMPTY_HOWTO (5),
     
    101103         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    102104         32,                    /* bitsize */
    103          false,                 /* pc_relative */
     105         FALSE,                 /* pc_relative */
    104106         0,                     /* bitpos */
    105107         complain_overflow_bitfield, /* complain_on_overflow */
    106108         pj_elf_reloc,          /* special_function */
    107109         "R_PJ_CODE_DIR32",     /* name */
    108          true,                  /* partial_inplace */
     110         TRUE,                  /* partial_inplace */
    109111         0xffffffff,            /* src_mask */
    110112         0xffffffff,            /* dst_mask */
    111          false),                /* pcrel_offset */
     113         FALSE),                /* pcrel_offset */
    112114
    113115  EMPTY_HOWTO (7),
     
    122124         1,                     /* size (0 = byte, 1 = short, 2 = long) */
    123125         16,                    /* bitsize */
    124          false,                 /* pc_relative */
     126         FALSE,                 /* pc_relative */
    125127         0,                     /* bitpos */
    126128         complain_overflow_unsigned, /* complain_on_overflow */
    127129         pj_elf_reloc,          /* special_function */
    128130         "R_PJ_LO16",           /* name */
    129          false,                 /* partial_inplace */
     131         FALSE,                 /* partial_inplace */
    130132         0xffff,                /* src_mask */
    131133         0xffff,                /* dst_mask */
    132          true),                 /* pcrel_offset */
     134         TRUE),                 /* pcrel_offset */
    133135
    134136    HOWTO (R_PJ_CODE_HI16,      /* type */
     
    136138         1,                     /* size (0 = byte, 1 = short, 2 = long) */
    137139         16,                    /* bitsize */
    138          false,                 /* pc_relative */
     140         FALSE,                 /* pc_relative */
    139141         0,                     /* bitpos */
    140142         complain_overflow_unsigned, /* complain_on_overflow */
    141143         pj_elf_reloc,          /* special_function */
    142144         "R_PJ_HI16",           /* name */
    143          false,                 /* partial_inplace */
     145         FALSE,                 /* partial_inplace */
    144146         0xffff,                /* src_mask */
    145147         0xffff,                /* dst_mask */
    146          true),                 /* pcrel_offset */
     148         TRUE),                 /* pcrel_offset */
    147149
    148150  /* GNU extension to record C++ vtable hierarchy */
     
    151153         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    152154         0,                     /* bitsize */
    153          false,                 /* pc_relative */
     155         FALSE,                 /* pc_relative */
    154156         0,                     /* bitpos */
    155157         complain_overflow_dont, /* complain_on_overflow */
    156158         NULL,                  /* special_function */
    157159         "R_PJ_GNU_VTINHERIT",  /* name */
    158          false,                 /* partial_inplace */
     160         FALSE,                 /* partial_inplace */
    159161         0,                     /* src_mask */
    160162         0,                     /* dst_mask */
    161          false),                /* pcrel_offset */
     163         FALSE),                /* pcrel_offset */
    162164
    163165  /* GNU extension to record C++ vtable member usage */
     
    166168         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    167169         0,                     /* bitsize */
    168          false,                 /* pc_relative */
     170         FALSE,                 /* pc_relative */
    169171         0,                     /* bitpos */
    170172         complain_overflow_dont, /* complain_on_overflow */
    171173         _bfd_elf_rel_vtable_reloc_fn,  /* special_function */
    172174         "R_PJ_GNU_VTENTRY",   /* name */
    173          false,                 /* partial_inplace */
     175         FALSE,                 /* partial_inplace */
    174176         0,                     /* src_mask */
    175177         0,                     /* dst_mask */
    176          false),                /* pcrel_offset */
    177 
     178         FALSE),                /* pcrel_offset */
    178179};
    179180
     
    223224      insn = bfd_get_32 (abfd, hit_data);
    224225      insn += sym_value + reloc_entry->addend;
    225       bfd_put_32 (abfd, insn, hit_data);
     226      bfd_put_32 (abfd, (bfd_vma) insn, hit_data);
    226227      break;
    227228
     
    232233      insn = bfd_getb32 (hit_data);
    233234      insn += sym_value + reloc_entry->addend;
    234       bfd_putb32 (insn, hit_data);
     235      bfd_putb32 ((bfd_vma) insn, hit_data);
    235236      break;
    236237
     
    240241        -  (input_section->output_section->vma
    241242            + input_section->output_offset);
    242       bfd_putb16 (insn, hit_data);
     243      bfd_putb16 ((bfd_vma) insn, hit_data);
    243244      break;
    244245    case R_PJ_CODE_LO16:
    245246      insn = bfd_getb16 (hit_data);
    246247      insn += sym_value + reloc_entry->addend;
    247       bfd_putb16 (insn, hit_data);
     248      bfd_putb16 ((bfd_vma) insn, hit_data);
    248249      break;
    249250
     
    251252      insn = bfd_getb16 (hit_data);
    252253      insn += (sym_value + reloc_entry->addend) >> 16;
    253       bfd_putb16 (insn, hit_data);
     254      bfd_putb16 ((bfd_vma) insn, hit_data);
    254255      break;
    255256
     
    328329pj_elf_final_write_processing (abfd, linker)
    329330     bfd *abfd;
    330      boolean linker ATTRIBUTE_UNUSED;
     331     bfd_boolean linker ATTRIBUTE_UNUSED;
    331332{
    332333    elf_elfheader (abfd)->e_flags |= EF_PICOJAVA_ARCH;
     
    340341#define ELF_ARCH                bfd_arch_pj
    341342#define ELF_MACHINE_CODE        EM_PJ
     343#define ELF_MACHINE_ALT1        EM_PJ_OLD
    342344#define ELF_MAXPAGESIZE         0x1000
    343345#define bfd_elf32_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents
Note: See TracChangeset for help on using the changeset viewer.