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

    • Property cvs2svn:cvs-rev changed from 1.1 to 1.1.1.2
    r608 r609  
    11/* FR30-specific support for 32-bit ELF.
    2    Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
     2   Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    33
    44This file is part of BFD, the Binary File Descriptor library.
     
    3232  PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
    3333static void fr30_info_to_howto_rela
    34   PARAMS ((bfd *, arelent *, Elf32_Internal_Rela *));
    35 static boolean fr30_elf_relocate_section
    36   PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
     34  PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
     35static bfd_boolean fr30_elf_relocate_section
     36  PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
     37           Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
    3738static bfd_reloc_status_type fr30_final_link_relocate
    38   PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, bfd_vma));
    39 static boolean fr30_elf_gc_sweep_hook
    40   PARAMS ((bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *));
     39  PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *,
     40           Elf_Internal_Rela *, bfd_vma));
     41static bfd_boolean fr30_elf_gc_sweep_hook
     42  PARAMS ((bfd *, struct bfd_link_info *, asection *,
     43           const Elf_Internal_Rela *));
    4144static asection * fr30_elf_gc_mark_hook
    42   PARAMS ((bfd *, struct bfd_link_info *, Elf_Internal_Rela *, struct elf_link_hash_entry *, Elf_Internal_Sym *));
     45  PARAMS ((asection *, struct bfd_link_info *, Elf_Internal_Rela *,
     46           struct elf_link_hash_entry *, Elf_Internal_Sym *));
     47static bfd_boolean fr30_elf_check_relocs
     48  PARAMS ((bfd *, struct bfd_link_info *, asection *,
     49           const Elf_Internal_Rela *));
    4350
    4451static reloc_howto_type fr30_elf_howto_table [] =
     
    4956         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    5057         32,                    /* bitsize */
    51          false,                 /* pc_relative */
     58         FALSE,                 /* pc_relative */
    5259         0,                     /* bitpos */
    5360         complain_overflow_bitfield, /* complain_on_overflow */
    5461         bfd_elf_generic_reloc, /* special_function */
    5562         "R_FR30_NONE",         /* name */
    56          false,                 /* partial_inplace */
     63         FALSE,                 /* partial_inplace */
    5764         0,                     /* src_mask */
    5865         0,                     /* dst_mask */
    59          false),                /* pcrel_offset */
     66         FALSE),                /* pcrel_offset */
    6067
    6168  /* An 8 bit absolute relocation.  */
     
    6471         1,                     /* size (0 = byte, 1 = short, 2 = long) */
    6572         8,                     /* bitsize */
    66          false,                 /* pc_relative */
     73         FALSE,                 /* pc_relative */
    6774         4,                     /* bitpos */
    6875         complain_overflow_bitfield, /* complain_on_overflow */
    6976         bfd_elf_generic_reloc, /* special_function */
    7077         "R_FR30_8",            /* name */
    71          true,                  /* partial_inplace */
     78         TRUE,                  /* partial_inplace */
    7279         0x0000,                /* src_mask */
    7380         0x0ff0,                /* dst_mask */
    74          false),                /* pcrel_offset */
     81         FALSE),                /* pcrel_offset */
    7582
    7683  /* A 20 bit absolute relocation.  */
     
    7986         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    8087         20,                    /* bitsize */
    81          false,                 /* pc_relative */
     88         FALSE,                 /* pc_relative */
    8289         0,                     /* bitpos */
    8390         complain_overflow_bitfield, /* complain_on_overflow */
    8491         fr30_elf_i20_reloc,    /* special_function */
    8592         "R_FR30_20",           /* name */
    86          true,                  /* partial_inplace */
     93         TRUE,                  /* partial_inplace */
    8794         0x00000000,            /* src_mask */
    8895         0x00f0ffff,            /* dst_mask */
    89          false),                /* pcrel_offset */
     96         FALSE),                /* pcrel_offset */
    9097
    9198  /* A 32 bit absolute relocation.  */
     
    94101         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    95102         32,                    /* bitsize */
    96          false,                 /* pc_relative */
     103         FALSE,                 /* pc_relative */
    97104         0,                     /* bitpos */
    98105         complain_overflow_bitfield, /* complain_on_overflow */
    99106         bfd_elf_generic_reloc, /* special_function */
    100107         "R_FR30_32",           /* name */
    101          true,                  /* partial_inplace */
     108         TRUE,                  /* partial_inplace */
    102109         0x00000000,            /* src_mask */
    103110         0xffffffff,            /* dst_mask */
    104          false),                /* pcrel_offset */
     111         FALSE),                /* pcrel_offset */
    105112
    106113  /* A 32 bit into 48 bits absolute relocation.  */
     
    109116         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    110117         32,                    /* bitsize */
    111          false,                 /* pc_relative */
     118         FALSE,                 /* pc_relative */
    112119         0,                     /* bitpos */
    113120         complain_overflow_bitfield, /* complain_on_overflow */
    114121         fr30_elf_i32_reloc,    /* special_function */
    115122         "R_FR30_48",           /* name */
    116          true,                  /* partial_inplace */
     123         TRUE,                  /* partial_inplace */
    117124         0x00000000,            /* src_mask */
    118125         0xffffffff,            /* dst_mask */
    119          false),                /* pcrel_offset */
     126         FALSE),                /* pcrel_offset */
    120127
    121128  /* A 6 bit absolute relocation.  */
     
    124131         1,                     /* size (0 = byte, 1 = short, 2 = long) */
    125132         6,                     /* bitsize */
    126          false,                 /* pc_relative */
     133         FALSE,                 /* pc_relative */
    127134         4,                     /* bitpos */
    128135         complain_overflow_unsigned, /* complain_on_overflow */
    129136         bfd_elf_generic_reloc, /* special_function */
    130137         "R_FR30_6_IN_4",       /* name */
    131          true,                  /* partial_inplace */
     138         TRUE,                  /* partial_inplace */
    132139         0x0000,                /* src_mask */
    133140         0x00f0,                /* dst_mask */
    134          false),                /* pcrel_offset */
     141         FALSE),                /* pcrel_offset */
    135142
    136143  /* An 8 bit absolute relocation.  */
     
    139146         1,                     /* size (0 = byte, 1 = short, 2 = long) */
    140147         8,                     /* bitsize */
    141          false,                 /* pc_relative */
     148         FALSE,                 /* pc_relative */
    142149         4,                     /* bitpos */
    143150         complain_overflow_signed, /* complain_on_overflow */
    144151         bfd_elf_generic_reloc,/* special_function */
    145152         "R_FR30_8_IN_8",       /* name */
    146          true,                  /* partial_inplace */
     153         TRUE,                  /* partial_inplace */
    147154         0x0000,                /* src_mask */
    148155         0x0ff0,                /* dst_mask */
    149          false),                /* pcrel_offset */
     156         FALSE),                /* pcrel_offset */
    150157
    151158  /* A 9 bit absolute relocation.  */
     
    154161         1,                     /* size (0 = byte, 1 = short, 2 = long) */
    155162         9,                     /* bitsize */
    156          false,                 /* pc_relative */
     163         FALSE,                 /* pc_relative */
    157164         4,                     /* bitpos */
    158165         complain_overflow_signed, /* complain_on_overflow */
    159166         bfd_elf_generic_reloc,/* special_function */
    160167         "R_FR30_9_IN_8",       /* name */
    161          true,                  /* partial_inplace */
     168         TRUE,                  /* partial_inplace */
    162169         0x0000,                /* src_mask */
    163170         0x0ff0,                /* dst_mask */
    164          false),                /* pcrel_offset */
     171         FALSE),                /* pcrel_offset */
    165172
    166173  /* A 10 bit absolute relocation.  */
     
    169176         1,                     /* size (0 = byte, 1 = short, 2 = long) */
    170177         10,                    /* bitsize */
    171          false,                 /* pc_relative */
     178         FALSE,                 /* pc_relative */
    172179         4,                     /* bitpos */
    173180         complain_overflow_signed, /* complain_on_overflow */
    174181         bfd_elf_generic_reloc,/* special_function */
    175182         "R_FR30_10_IN_8",      /* name */
    176          true,                  /* partial_inplace */
     183         TRUE,                  /* partial_inplace */
    177184         0x0000,                /* src_mask */
    178185         0x0ff0,                /* dst_mask */
    179          false),                /* pcrel_offset */
     186         FALSE),                /* pcrel_offset */
    180187
    181188  /* A PC relative 9 bit relocation, right shifted by 1.  */
     
    184191         1,                     /* size (0 = byte, 1 = short, 2 = long) */
    185192         9,                     /* bitsize */
    186          true,                  /* pc_relative */
     193         TRUE,                  /* pc_relative */
    187194         0,                     /* bitpos */
    188195         complain_overflow_signed, /* complain_on_overflow */
    189196         bfd_elf_generic_reloc, /* special_function */
    190197         "R_FR30_9_PCREL",      /* name */
    191          false,                 /* partial_inplace */
     198         FALSE,                 /* partial_inplace */
    192199         0x0000,                /* src_mask */
    193200         0x00ff,                /* dst_mask */
    194          false),                /* pcrel_offset */
     201         FALSE),                /* pcrel_offset */
    195202
    196203  /* A PC relative 12 bit relocation, right shifted by 1.  */
     
    199206         1,                     /* size (0 = byte, 1 = short, 2 = long) */
    200207         12,                    /* bitsize */
    201          true,                  /* pc_relative */
     208         TRUE,                  /* pc_relative */
    202209         0,                     /* bitpos */
    203210         complain_overflow_signed, /* complain_on_overflow */
    204211         bfd_elf_generic_reloc, /* special_function */
    205212         "R_FR30_12_PCREL",     /* name */
    206          false,                 /* partial_inplace */
     213         FALSE,                 /* partial_inplace */
    207214         0x0000,                /* src_mask */
    208215         0x07ff,                /* dst_mask */
    209          false),                /* pcrel_offset */
     216         FALSE),                /* pcrel_offset */
    210217  /* GNU extension to record C++ vtable hierarchy */
    211218  HOWTO (R_FR30_GNU_VTINHERIT, /* type */
     
    213220         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    214221         0,                     /* bitsize */
    215          false,                 /* pc_relative */
     222         FALSE,                 /* pc_relative */
    216223         0,                     /* bitpos */
    217224         complain_overflow_dont, /* complain_on_overflow */
    218225         NULL,                  /* special_function */
    219226         "R_FR30_GNU_VTINHERIT", /* name */
    220          false,                 /* partial_inplace */
     227         FALSE,                 /* partial_inplace */
    221228         0,                     /* src_mask */
    222229         0,                     /* dst_mask */
    223          false),                /* pcrel_offset */
     230         FALSE),                /* pcrel_offset */
    224231
    225232  /* GNU extension to record C++ vtable member usage */
     
    228235         2,                     /* size (0 = byte, 1 = short, 2 = long) */
    229236         0,                     /* bitsize */
    230          false,                 /* pc_relative */
     237         FALSE,                 /* pc_relative */
    231238         0,                     /* bitpos */
    232239         complain_overflow_dont, /* complain_on_overflow */
    233240         _bfd_elf_rel_vtable_reloc_fn,  /* special_function */
    234241         "R_FR30_GNU_VTENTRY",   /* name */
    235          false,                 /* partial_inplace */
     242         FALSE,                 /* partial_inplace */
    236243         0,                     /* src_mask */
    237244         0,                     /* dst_mask */
    238          false),                /* pcrel_offset */
     245         FALSE),                /* pcrel_offset */
    239246};
    240247
     
    245252fr30_elf_i20_reloc (abfd, reloc_entry, symbol, data,
    246253                    input_section, output_bfd, error_message)
    247      bfd *      abfd;
    248      arelent *  reloc_entry;
    249      asymbol *  symbol;
    250      PTR        data;
    251      asection * input_section;
    252      bfd *      output_bfd;
    253      char **    error_message ATTRIBUTE_UNUSED;
    254 {
    255   bfd_vma       relocation;
     254     bfd *abfd;
     255     arelent *reloc_entry;
     256     asymbol *symbol;
     257     PTR data;
     258     asection *input_section;
     259     bfd *output_bfd;
     260     char **error_message ATTRIBUTE_UNUSED;
     261{
     262  bfd_vma relocation;
    256263  unsigned long x;
    257264
     
    281288  x = bfd_get_32 (abfd, (char *) data + reloc_entry->address);
    282289  x = (x & 0xff0f0000) | (relocation & 0x0000ffff) | ((relocation & 0x000f0000) << 4);
    283   bfd_put_32 (abfd, x, (char *) data + reloc_entry->address);
     290  bfd_put_32 (abfd, (bfd_vma) x, (char *) data + reloc_entry->address);
    284291
    285292  return bfd_reloc_ok;
     
    292299fr30_elf_i32_reloc (abfd, reloc_entry, symbol, data,
    293300                    input_section, output_bfd, error_message)
    294      bfd *      abfd;
    295      arelent *  reloc_entry;
    296      asymbol *  symbol;
    297      PTR        data;
    298      asection * input_section;
    299      bfd *      output_bfd;
    300      char **    error_message ATTRIBUTE_UNUSED;
    301 {
    302   bfd_vma       relocation;
     301     bfd *abfd;
     302     arelent *reloc_entry;
     303     asymbol *symbol;
     304     PTR data;
     305     asection *input_section;
     306     bfd *output_bfd;
     307     char **error_message ATTRIBUTE_UNUSED;
     308{
     309  bfd_vma relocation;
    303310
    304311  /* This part is from bfd_elf_generic_reloc.  */
     
    355362static reloc_howto_type *
    356363fr30_reloc_type_lookup (abfd, code)
    357      bfd * abfd ATTRIBUTE_UNUSED;
     364     bfd *abfd ATTRIBUTE_UNUSED;
    358365     bfd_reloc_code_real_type code;
    359366{
     
    372379static void
    373380fr30_info_to_howto_rela (abfd, cache_ptr, dst)
    374      bfd * abfd ATTRIBUTE_UNUSED;
    375      arelent * cache_ptr;
    376      Elf32_Internal_Rela * dst;
     381     bfd *abfd ATTRIBUTE_UNUSED;
     382     arelent *cache_ptr;
     383     Elf_Internal_Rela *dst;
    377384{
    378385  unsigned int r_type;
     
    388395
    389396static bfd_reloc_status_type
    390 fr30_final_link_relocate (howto, input_bfd, input_section, contents, rel, relocation)
    391      reloc_howto_type *  howto;
    392      bfd *               input_bfd;
    393      asection *          input_section;
    394      bfd_byte *          contents;
    395      Elf_Internal_Rela * rel;
    396      bfd_vma             relocation;
     397fr30_final_link_relocate (howto, input_bfd, input_section, contents, rel,
     398                          relocation)
     399     reloc_howto_type *howto;
     400     bfd *input_bfd;
     401     asection *input_section;
     402     bfd_byte *contents;
     403     Elf_Internal_Rela *rel;
     404     bfd_vma relocation;
    397405{
    398406  bfd_reloc_status_type r = bfd_reloc_ok;
    399   bfd_vma               x;
    400   bfd_signed_vma        srel;
     407  bfd_vma x;
     408  bfd_signed_vma srel;
    401409
    402410  switch (howto->type)
     
    467475
    468476/* Relocate an FR30 ELF section.
    469    There is some attempt to make this function usable for many architectures,
    470    both USE_REL and USE_RELA ['twould be nice if such a critter existed],
    471    if only to serve as a learning tool.
    472477
    473478   The RELOCATE_SECTION function is called by the new ELF backend linker
     
    499504   accordingly.  */
    500505
    501 static boolean
     506static bfd_boolean
    502507fr30_elf_relocate_section (output_bfd, info, input_bfd, input_section,
    503508                           contents, relocs, local_syms, local_sections)
    504      bfd *                   output_bfd ATTRIBUTE_UNUSED;
    505      struct bfd_link_info *  info;
    506      bfd *                   input_bfd;
    507      asection *              input_section;
    508      bfd_byte *              contents;
    509      Elf_Internal_Rela *     relocs;
    510      Elf_Internal_Sym *      local_syms;
    511      asection **             local_sections;
    512 {
    513   Elf_Internal_Shdr *           symtab_hdr;
    514   struct elf_link_hash_entry ** sym_hashes;
    515   Elf_Internal_Rela *           rel;
    516   Elf_Internal_Rela *           relend;
     509     bfd *output_bfd;
     510     struct bfd_link_info *info;
     511     bfd *input_bfd;
     512     asection *input_section;
     513     bfd_byte *contents;
     514     Elf_Internal_Rela *relocs;
     515     Elf_Internal_Sym *local_syms;
     516     asection **local_sections;
     517{
     518  Elf_Internal_Shdr *symtab_hdr;
     519  struct elf_link_hash_entry **sym_hashes;
     520  Elf_Internal_Rela *rel;
     521  Elf_Internal_Rela *relend;
     522
     523  if (info->relocateable)
     524    return TRUE;
    517525
    518526  symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr;
     
    522530  for (rel = relocs; rel < relend; rel ++)
    523531    {
    524       reloc_howto_type *           howto;
    525       unsigned long                r_symndx;
    526       Elf_Internal_Sym *           sym;
    527       asection *                   sec;
    528       struct elf_link_hash_entry * h;
    529       bfd_vma                      relocation;
    530       bfd_reloc_status_type        r;
    531       const char *                 name = NULL;
    532       int                          r_type;
     532      reloc_howto_type *howto;
     533      unsigned long r_symndx;
     534      Elf_Internal_Sym *sym;
     535      asection *sec;
     536      struct elf_link_hash_entry *h;
     537      bfd_vma relocation;
     538      bfd_reloc_status_type r;
     539      const char *name = NULL;
     540      int r_type;
    533541
    534542      r_type = ELF32_R_TYPE (rel->r_info);
     
    540548      r_symndx = ELF32_R_SYM (rel->r_info);
    541549
    542       if (info->relocateable)
    543         {
    544           /* This is a relocateable link.  We don't have to change
    545              anything, unless the reloc is against a section symbol,
    546              in which case we have to adjust according to where the
    547              section symbol winds up in the output section.  */
    548           if (r_symndx < symtab_hdr->sh_info)
    549             {
    550               sym = local_syms + r_symndx;
    551 
    552               if (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
    553                 {
    554                   sec = local_sections [r_symndx];
    555                   rel->r_addend += sec->output_offset + sym->st_value;
    556                 }
    557             }
    558 
    559           continue;
    560         }
    561 
    562       /* This is a final link.  */
    563550      howto  = fr30_elf_howto_table + ELF32_R_TYPE (rel->r_info);
    564551      h      = NULL;
     
    570557          sym = local_syms + r_symndx;
    571558          sec = local_sections [r_symndx];
    572           relocation = (sec->output_section->vma
    573                         + sec->output_offset
    574                         + sym->st_value);
     559          relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel);
    575560
    576561          name = bfd_elf_string_from_elf_section
     
    620605              if (! ((*info->callbacks->undefined_symbol)
    621606                     (info, h->root.root.string, input_bfd,
    622                       input_section, rel->r_offset, true)))
    623                 return false;
     607                      input_section, rel->r_offset, TRUE)))
     608                return FALSE;
    624609#if 0
    625610              fprintf (stderr, "unknown: name: %s\n", name);
     
    647632              r = info->callbacks->undefined_symbol
    648633                (info, name, input_bfd, input_section, rel->r_offset,
    649                  true);
     634                 TRUE);
    650635              break;
    651636
     
    672657
    673658          if (! r)
    674             return false;
     659            return FALSE;
    675660        }
    676661    }
    677662
    678   return true;
     663  return TRUE;
    679664}
    680665
     
    684669
    685670static asection *
    686 fr30_elf_gc_mark_hook (abfd, info, rel, h, sym)
    687      bfd *                        abfd;
    688      struct bfd_link_info *       info ATTRIBUTE_UNUSED;
    689      Elf_Internal_Rela *          rel;
    690      struct elf_link_hash_entry * h;
    691      Elf_Internal_Sym *           sym;
     671fr30_elf_gc_mark_hook (sec, info, rel, h, sym)
     672     asection *sec;
     673     struct bfd_link_info *info ATTRIBUTE_UNUSED;
     674     Elf_Internal_Rela *rel;
     675     struct elf_link_hash_entry *h;
     676     Elf_Internal_Sym * sym;
    692677{
    693678  if (h != NULL)
     
    715700    }
    716701  else
    717     {
    718       if (!(elf_bad_symtab (abfd)
    719             && ELF_ST_BIND (sym->st_info) != STB_LOCAL)
    720           && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE)
    721                 && sym->st_shndx != SHN_COMMON))
    722         {
    723           return bfd_section_from_elf_index (abfd, sym->st_shndx);
    724         }
    725     }
     702    return bfd_section_from_elf_index (sec->owner, sym->st_shndx);
    726703
    727704  return NULL;
     
    730707/* Update the got entry reference counts for the section being removed.  */
    731708
    732 static boolean
     709static bfd_boolean
    733710fr30_elf_gc_sweep_hook (abfd, info, sec, relocs)
    734      bfd *                     abfd ATTRIBUTE_UNUSED;
    735      struct bfd_link_info *    info ATTRIBUTE_UNUSED;
    736      asection *                sec ATTRIBUTE_UNUSED;
    737      const Elf_Internal_Rela * relocs ATTRIBUTE_UNUSED;
    738 {
    739   return true;
     711     bfd *abfd ATTRIBUTE_UNUSED;
     712     struct bfd_link_info *info ATTRIBUTE_UNUSED;
     713     asection *sec ATTRIBUTE_UNUSED;
     714     const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED;
     715{
     716  return TRUE;
    740717}
    741718
     
    744721   virtual table relocs for gc.  */
    745722
    746 static boolean
     723static bfd_boolean
    747724fr30_elf_check_relocs (abfd, info, sec, relocs)
    748725     bfd *abfd;
     
    757734
    758735  if (info->relocateable)
    759     return true;
     736    return TRUE;
    760737
    761738  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
     
    783760        case R_FR30_GNU_VTINHERIT:
    784761          if (!_bfd_elf32_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
    785             return false;
     762            return FALSE;
    786763          break;
    787764
     
    790767        case R_FR30_GNU_VTENTRY:
    791768          if (!_bfd_elf32_gc_record_vtentry (abfd, sec, h, rel->r_addend))
    792             return false;
     769            return FALSE;
    793770          break;
    794771        }
    795772    }
    796773
    797   return true;
     774  return TRUE;
    798775}
    799776
    800777
    801778#define ELF_ARCH                bfd_arch_fr30
    802 #define ELF_MACHINE_CODE        EM_CYGNUS_FR30
     779#define ELF_MACHINE_CODE        EM_FR30
     780#define ELF_MACHINE_ALT1        EM_CYGNUS_FR30
    803781#define ELF_MAXPAGESIZE         0x1000
    804782
     
    814792
    815793#define elf_backend_can_gc_sections             1
     794#define elf_backend_rela_normal                 1
    816795
    817796#define bfd_elf32_bfd_reloc_type_lookup         fr30_reloc_type_lookup
Note: See TracChangeset for help on using the changeset viewer.