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/coff-tic80.c

    • Property cvs2svn:cvs-rev changed from 1.1 to 1.1.1.2
    r608 r609  
    11/* BFD back-end for Texas Instruments TMS320C80 Multimedia Video Processor (MVP).
    2    Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
     2   Copyright 1996, 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    33
    44   Written by Fred Fish (fnf@cygnus.com)
     
    3636#define COFF_ALIGN_IN_SFLAGS 1
    3737
    38 #define GET_SCNHDR_FLAGS bfd_h_get_16
    39 #define PUT_SCNHDR_FLAGS bfd_h_put_16
     38#define GET_SCNHDR_FLAGS H_GET_16
     39#define PUT_SCNHDR_FLAGS H_PUT_16
    4040
    4141static void rtype2howto
     
    4949static bfd_reloc_status_type local16_reloc
    5050  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
    51 static boolean coff_tic80_relocate_section
     51static bfd_boolean coff_tic80_relocate_section
    5252  PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
    5353           struct internal_reloc *, struct internal_syment *, asection **));
     54static reloc_howto_type * coff_tic80_rtype_to_howto
     55  PARAMS ((bfd *, asection *, struct internal_reloc *,
     56           struct coff_link_hash_entry *, struct internal_syment *,
     57           bfd_vma *));
    5458
    5559static reloc_howto_type tic80_howto_table[] =
     
    6064         2,                             /* size (0 = byte, 1 = short, 2 = long) */
    6165         32,                            /* bitsize */
    62          false,                         /* pc_relative */
     66         FALSE,                         /* pc_relative */
    6367         0,                             /* bitpos */
    6468         complain_overflow_bitfield,    /* complain_on_overflow */
    6569         NULL,                          /* special_function */
    6670         "RELLONG",                     /* name */
    67          true,                          /* partial_inplace */
     71         TRUE,                          /* partial_inplace */
    6872         0xffffffff,                    /* src_mask */
    6973         0xffffffff,                    /* dst_mask */
    70          false),                        /* pcrel_offset */
     74         FALSE),                        /* pcrel_offset */
    7175
    7276  HOWTO (R_MPPCR,                       /* type */
     
    7478         2,                             /* size (0 = byte, 1 = short, 2 = long) */
    7579         32,                            /* bitsize */
    76          true,                          /* pc_relative */
     80         TRUE,                          /* pc_relative */
    7781         0,                             /* bitpos */
    7882         complain_overflow_signed,      /* complain_on_overflow */
    7983         NULL,                          /* special_function */
    8084         "MPPCR",                       /* name */
    81          true,                          /* partial_inplace */
     85         TRUE,                          /* partial_inplace */
    8286         0xffffffff,                    /* src_mask */
    8387         0xffffffff,                    /* dst_mask */
    84          true),                         /* pcrel_offset */
     88         TRUE),                         /* pcrel_offset */
    8589
    8690  HOWTO (R_ABS,                         /* type */
     
    8892         2,                             /* size (0 = byte, 1 = short, 2 = long) */
    8993         32,                            /* bitsize */
    90          false,                         /* pc_relative */
     94         FALSE,                         /* pc_relative */
    9195         0,                             /* bitpos */
    9296         complain_overflow_bitfield,    /* complain_on_overflow */
    9397         NULL,                          /* special_function */
    9498         "ABS",                         /* name */
    95          true,                          /* partial_inplace */
     99         TRUE,                          /* partial_inplace */
    96100         0xffffffff,                    /* src_mask */
    97101         0xffffffff,                    /* dst_mask */
    98          false),                                /* pcrel_offset */
     102         FALSE),                                /* pcrel_offset */
    99103
    100104  HOWTO (R_PPBASE,                      /* type */
     
    102106         2,                             /* size (0 = byte, 1 = short, 2 = long) */
    103107         32,                            /* bitsize */
    104          false,                         /* pc_relative */
     108         FALSE,                         /* pc_relative */
    105109         0,                             /* bitpos */
    106110         complain_overflow_dont,        /* complain_on_overflow */
    107111         ppbase_reloc,                  /* special_function */
    108112         "PPBASE",                      /* name */
    109          true,                          /* partial_inplace */
     113         TRUE,                          /* partial_inplace */
    110114         0xffffffff,                    /* src_mask */
    111115         0xffffffff,                    /* dst_mask */
    112          false),                        /* pcrel_offset */
     116         FALSE),                        /* pcrel_offset */
    113117
    114118  HOWTO (R_PPLBASE,                     /* type */
     
    116120         2,                             /* size (0 = byte, 1 = short, 2 = long) */
    117121         32,                            /* bitsize */
    118          false,                         /* pc_relative */
     122         FALSE,                         /* pc_relative */
    119123         0,                             /* bitpos */
    120124         complain_overflow_dont,        /* complain_on_overflow */
    121125         ppbase_reloc,                  /* special_function */
    122126         "PPLBASE",                     /* name */
    123          true,                          /* partial_inplace */
     127         TRUE,                          /* partial_inplace */
    124128         0xffffffff,                    /* src_mask */
    125129         0xffffffff,                    /* dst_mask */
    126          false),                        /* pcrel_offset */
     130         FALSE),                        /* pcrel_offset */
    127131
    128132  HOWTO (R_PP15,                        /* type */
     
    130134         2,                             /* size (0 = byte, 1 = short, 2 = long) */
    131135         15,                            /* bitsize */
    132          false,                         /* pc_relative */
     136         FALSE,                         /* pc_relative */
    133137         6,                             /* bitpos */
    134138         complain_overflow_dont,        /* complain_on_overflow */
    135139         glob15_reloc,                  /* special_function */
    136140         "PP15",                        /* name */
    137          true,                          /* partial_inplace */
     141         TRUE,                          /* partial_inplace */
    138142         0x1ffc0,                       /* src_mask */
    139143         0x1ffc0,                       /* dst_mask */
    140          false),                        /* pcrel_offset */
     144         FALSE),                        /* pcrel_offset */
    141145
    142146  HOWTO (R_PP15W,                       /* type */
     
    144148         2,                             /* size (0 = byte, 1 = short, 2 = long) */
    145149         15,                            /* bitsize */
    146          false,                         /* pc_relative */
     150         FALSE,                         /* pc_relative */
    147151         6,                             /* bitpos */
    148152         complain_overflow_dont,        /* complain_on_overflow */
    149153         glob15_reloc,                  /* special_function */
    150154         "PP15W",                       /* name */
    151          true,                          /* partial_inplace */
     155         TRUE,                          /* partial_inplace */
    152156         0x1ffc0,                       /* src_mask */
    153157         0x1ffc0,                       /* dst_mask */
    154          false),                        /* pcrel_offset */
     158         FALSE),                        /* pcrel_offset */
    155159
    156160  HOWTO (R_PP15H,                       /* type */
     
    158162         2,                             /* size (0 = byte, 1 = short, 2 = long) */
    159163         15,                            /* bitsize */
    160          false,                         /* pc_relative */
     164         FALSE,                         /* pc_relative */
    161165         6,                             /* bitpos */
    162166         complain_overflow_dont,        /* complain_on_overflow */
    163167         glob15_reloc,                  /* special_function */
    164168         "PP15H",                       /* name */
    165          true,                          /* partial_inplace */
     169         TRUE,                          /* partial_inplace */
    166170         0x1ffc0,                       /* src_mask */
    167171         0x1ffc0,                       /* dst_mask */
    168          false),                        /* pcrel_offset */
     172         FALSE),                        /* pcrel_offset */
    169173
    170174  HOWTO (R_PP16B,                       /* type */
     
    172176         2,                             /* size (0 = byte, 1 = short, 2 = long) */
    173177         16,                            /* bitsize */
    174          false,                         /* pc_relative */
     178         FALSE,                         /* pc_relative */
    175179         6,                             /* bitpos */
    176180         complain_overflow_dont,        /* complain_on_overflow */
    177181         glob16_reloc,                  /* special_function */
    178182         "PP16B",                       /* name */
    179          true,                          /* partial_inplace */
     183         TRUE,                          /* partial_inplace */
    180184         0x3ffc0,                       /* src_mask */
    181185         0x3ffc0,                       /* dst_mask */
    182          false),                        /* pcrel_offset */
     186         FALSE),                        /* pcrel_offset */
    183187
    184188  HOWTO (R_PPL15,                       /* type */
     
    186190         2,                             /* size (0 = byte, 1 = short, 2 = long) */
    187191         15,                            /* bitsize */
    188          false,                         /* pc_relative */
     192         FALSE,                         /* pc_relative */
    189193         0,                             /* bitpos */
    190194         complain_overflow_dont,        /* complain_on_overflow */
    191195         NULL,                          /* special_function */
    192196         "PPL15",                       /* name */
    193          true,                          /* partial_inplace */
     197         TRUE,                          /* partial_inplace */
    194198         0x7fff,                        /* src_mask */
    195199         0x7fff,                        /* dst_mask */
    196          false),                        /* pcrel_offset */
     200         FALSE),                        /* pcrel_offset */
    197201
    198202  HOWTO (R_PPL15W,                      /* type */
     
    200204         2,                             /* size (0 = byte, 1 = short, 2 = long) */
    201205         15,                            /* bitsize */
    202          false,                         /* pc_relative */
     206         FALSE,                         /* pc_relative */
    203207         0,                             /* bitpos */
    204208         complain_overflow_dont,        /* complain_on_overflow */
    205209         NULL,                          /* special_function */
    206210         "PPL15W",                      /* name */
    207          true,                          /* partial_inplace */
     211         TRUE,                          /* partial_inplace */
    208212         0x7fff,                        /* src_mask */
    209213         0x7fff,                        /* dst_mask */
    210          false),                        /* pcrel_offset */
     214         FALSE),                        /* pcrel_offset */
    211215
    212216  HOWTO (R_PPL15H,                      /* type */
     
    214218         2,                             /* size (0 = byte, 1 = short, 2 = long) */
    215219         15,                            /* bitsize */
    216          false,                         /* pc_relative */
     220         FALSE,                         /* pc_relative */
    217221         0,                             /* bitpos */
    218222         complain_overflow_dont,        /* complain_on_overflow */
    219223         NULL,                          /* special_function */
    220224         "PPL15H",                      /* name */
    221          true,                          /* partial_inplace */
     225         TRUE,                          /* partial_inplace */
    222226         0x7fff,                        /* src_mask */
    223227         0x7fff,                        /* dst_mask */
    224          false),                        /* pcrel_offset */
     228         FALSE),                        /* pcrel_offset */
    225229
    226230  HOWTO (R_PPL16B,                      /* type */
     
    228232         2,                             /* size (0 = byte, 1 = short, 2 = long) */
    229233         16,                            /* bitsize */
    230          false,                         /* pc_relative */
     234         FALSE,                         /* pc_relative */
    231235         0,                             /* bitpos */
    232236         complain_overflow_dont,        /* complain_on_overflow */
    233237         local16_reloc,                 /* special_function */
    234238         "PPL16B",                      /* name */
    235          true,                          /* partial_inplace */
     239         TRUE,                          /* partial_inplace */
    236240         0xffff,                        /* src_mask */
    237241         0xffff,                        /* dst_mask */
    238          false),                        /* pcrel_offset */
     242         FALSE),                        /* pcrel_offset */
    239243
    240244  HOWTO (R_PPN15,                       /* type */
     
    242246         -2,                            /* size (0 = byte, 1 = short, 2 = long) */
    243247         15,                            /* bitsize */
    244          false,                         /* pc_relative */
     248         FALSE,                         /* pc_relative */
    245249         6,                             /* bitpos */
    246250         complain_overflow_dont,        /* complain_on_overflow */
    247251         glob15_reloc,                  /* special_function */
    248252         "PPN15",                       /* name */
    249          true,                          /* partial_inplace */
     253         TRUE,                          /* partial_inplace */
    250254         0x1ffc0,                       /* src_mask */
    251255         0x1ffc0,                       /* dst_mask */
    252          false),                        /* pcrel_offset */
     256         FALSE),                        /* pcrel_offset */
    253257
    254258  HOWTO (R_PPN15W,                      /* type */
     
    256260         -2,                            /* size (0 = byte, 1 = short, 2 = long) */
    257261         15,                            /* bitsize */
    258          false,                         /* pc_relative */
     262         FALSE,                         /* pc_relative */
    259263         6,                             /* bitpos */
    260264         complain_overflow_dont,        /* complain_on_overflow */
    261265         glob15_reloc,                  /* special_function */
    262266         "PPN15W",                      /* name */
    263          true,                          /* partial_inplace */
     267         TRUE,                          /* partial_inplace */
    264268         0x1ffc0,                       /* src_mask */
    265269         0x1ffc0,                       /* dst_mask */
    266          false),                        /* pcrel_offset */
     270         FALSE),                        /* pcrel_offset */
    267271
    268272  HOWTO (R_PPN15H,                      /* type */
     
    270274         -2,                            /* size (0 = byte, 1 = short, 2 = long) */
    271275         15,                            /* bitsize */
    272          false,                         /* pc_relative */
     276         FALSE,                         /* pc_relative */
    273277         6,                             /* bitpos */
    274278         complain_overflow_dont,        /* complain_on_overflow */
    275279         glob15_reloc,                  /* special_function */
    276280         "PPN15H",                      /* name */
    277          true,                          /* partial_inplace */
     281         TRUE,                          /* partial_inplace */
    278282         0x1ffc0,                       /* src_mask */
    279283         0x1ffc0,                       /* dst_mask */
    280          false),                        /* pcrel_offset */
     284         FALSE),                        /* pcrel_offset */
    281285
    282286  HOWTO (R_PPN16B,                      /* type */
     
    284288         -2,                            /* size (0 = byte, 1 = short, 2 = long) */
    285289         16,                            /* bitsize */
    286          false,                         /* pc_relative */
     290         FALSE,                         /* pc_relative */
    287291         6,                             /* bitpos */
    288292         complain_overflow_dont,        /* complain_on_overflow */
    289293         glob16_reloc,                  /* special_function */
    290294         "PPN16B",                      /* name */
    291          true,                          /* partial_inplace */
     295         TRUE,                          /* partial_inplace */
    292296         0x3ffc0,                       /* src_mask */
    293297         0x3ffc0,                       /* dst_mask */
    294          false),                        /* pcrel_offset */
     298         FALSE),                        /* pcrel_offset */
    295299
    296300  HOWTO (R_PPLN15,                      /* type */
     
    298302         -2,                            /* size (0 = byte, 1 = short, 2 = long) */
    299303         15,                            /* bitsize */
    300          false,                         /* pc_relative */
     304         FALSE,                         /* pc_relative */
    301305         0,                             /* bitpos */
    302306         complain_overflow_dont,        /* complain_on_overflow */
    303307         NULL,                          /* special_function */
    304308         "PPLN15",                      /* name */
    305          true,                          /* partial_inplace */
     309         TRUE,                          /* partial_inplace */
    306310         0x7fff,                        /* src_mask */
    307311         0x7fff,                        /* dst_mask */
    308          false),                        /* pcrel_offset */
     312         FALSE),                        /* pcrel_offset */
    309313
    310314  HOWTO (R_PPLN15W,                     /* type */
     
    312316         -2,                            /* size (0 = byte, 1 = short, 2 = long) */
    313317         15,                            /* bitsize */
    314          false,                         /* pc_relative */
     318         FALSE,                         /* pc_relative */
    315319         0,                             /* bitpos */
    316320         complain_overflow_dont,        /* complain_on_overflow */
    317321         NULL,                          /* special_function */
    318322         "PPLN15W",                     /* name */
    319          true,                          /* partial_inplace */
     323         TRUE,                          /* partial_inplace */
    320324         0x7fff,                        /* src_mask */
    321325         0x7fff,                        /* dst_mask */
    322          false),                        /* pcrel_offset */
     326         FALSE),                        /* pcrel_offset */
    323327
    324328  HOWTO (R_PPLN15H,                     /* type */
     
    326330         -2,                            /* size (0 = byte, 1 = short, 2 = long) */
    327331         15,                            /* bitsize */
    328          false,                         /* pc_relative */
     332         FALSE,                         /* pc_relative */
    329333         0,                             /* bitpos */
    330334         complain_overflow_dont,        /* complain_on_overflow */
    331335         NULL,                          /* special_function */
    332336         "PPLN15H",                     /* name */
    333          true,                          /* partial_inplace */
     337         TRUE,                          /* partial_inplace */
    334338         0x7fff,                        /* src_mask */
    335339         0x7fff,                        /* dst_mask */
    336          false),                        /* pcrel_offset */
     340         FALSE),                        /* pcrel_offset */
    337341
    338342  HOWTO (R_PPLN16B,                     /* type */
     
    340344         -2,                            /* size (0 = byte, 1 = short, 2 = long) */
    341345         15,                            /* bitsize */
    342          false,                         /* pc_relative */
     346         FALSE,                         /* pc_relative */
    343347         0,                             /* bitpos */
    344348         complain_overflow_dont,        /* complain_on_overflow */
    345349         local16_reloc,                 /* special_function */
    346350         "PPLN16B",                     /* name */
    347          true,                          /* partial_inplace */
     351         TRUE,                          /* partial_inplace */
    348352         0xffff,                        /* src_mask */
    349353         0xffff,                        /* dst_mask */
    350          false)                         /* pcrel_offset */
     354         FALSE)                         /* pcrel_offset */
    351355};
    352356
     
    485489   of this is a copy of _bfd_coff_generic_relocate_section.  */
    486490
    487 static boolean
     491static bfd_boolean
    488492coff_tic80_relocate_section (output_bfd, info, input_bfd,
    489493                             input_section, contents, relocs, syms,
     
    540544                                       sym, &addend);
    541545      if (howto == NULL)
    542         return false;
     546        return FALSE;
    543547
    544548      val = 0;
     
    580584              if (! ((*info->callbacks->undefined_symbol)
    581585                     (info, h->root.root.string, input_bfd, input_section,
    582                       rel->r_vaddr - input_section->vma, true)))
    583                 return false;
     586                      rel->r_vaddr - input_section->vma, TRUE)))
     587                return FALSE;
    584588            }
    585589        }
     
    684688          (*_bfd_error_handler)
    685689            (_("%s: bad reloc address 0x%lx in section `%s'"),
    686              bfd_get_filename (input_bfd),
     690             bfd_archive_filename (input_bfd),
    687691             (unsigned long) rel->r_vaddr,
    688692             bfd_get_section_name (input_bfd, input_section));
    689           return false;
     693          return FALSE;
    690694        case bfd_reloc_overflow:
    691695          {
     
    701705                name = _bfd_coff_internal_syment_name (input_bfd, sym, buf);
    702706                if (name == NULL)
    703                   return false;
     707                  return FALSE;
    704708              }
    705709
     
    707711                   (info, name, howto->name, (bfd_vma) 0, input_bfd,
    708712                    input_section, rel->r_vaddr - input_section->vma)))
    709               return false;
     713              return FALSE;
    710714          }
    711715        }
    712716    }
    713   return true;
     717  return TRUE;
    714718}
    715719
Note: See TracChangeset for help on using the changeset viewer.