Home | History | Annotate | Download | only in bfd
      1 /* 32-bit ELF support for S+core.
      2    Copyright (C) 2009-2014 Free Software Foundation, Inc.
      3    Contributed by
      4    Brain.lin (brain.lin (at) sunplusct.com)
      5    Mei Ligang (ligang (at) sunnorth.com.cn)
      6    Pei-Lin Tsai (pltsai (at) sunplus.com)
      7 
      8    This file is part of BFD, the Binary File Descriptor library.
      9 
     10    This program is free software; you can redistribute it and/or modify
     11    it under the terms of the GNU General Public License as published by
     12    the Free Software Foundation; either version 3 of the License, or
     13    (at your option) any later version.
     14 
     15    This program is distributed in the hope that it will be useful,
     16    but WITHOUT ANY WARRANTY; without even the implied warranty of
     17    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     18    GNU General Public License for more details.
     19 
     20    You should have received a copy of the GNU General Public License
     21    along with this program; if not, write to the Free Software
     22    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
     23    MA 02110-1301, USA.  */
     24 
     25 #include "elf/common.h"
     26 #include "elf/internal.h"
     27 
     28 extern void
     29 s7_bfd_score_elf_hide_symbol (struct bfd_link_info *,
     30                               struct elf_link_hash_entry *,
     31                               bfd_boolean);
     32 
     33 extern void
     34 s7_bfd_score_info_to_howto (bfd *, arelent *, Elf_Internal_Rela *);
     35 
     36 extern bfd_boolean
     37 s7_bfd_score_elf_relocate_section (bfd *,
     38                                    struct bfd_link_info *,
     39                                    bfd *,
     40                                    asection *,
     41                                    bfd_byte *,
     42                                    Elf_Internal_Rela *,
     43                                    Elf_Internal_Sym *,
     44                                    asection **);
     45 
     46 extern bfd_boolean
     47 s7_bfd_score_elf_check_relocs (bfd *,
     48                                struct bfd_link_info *,
     49                                asection *,
     50                                const Elf_Internal_Rela *);
     51 
     52 extern bfd_boolean
     53 s7_bfd_score_elf_add_symbol_hook (bfd *,
     54                                   struct bfd_link_info *,
     55                                   Elf_Internal_Sym *,
     56                                   const char **,
     57                                   flagword *,
     58                                   asection **,
     59                                   bfd_vma *);
     60 
     61 extern void
     62 s7_bfd_score_elf_symbol_processing (bfd *, asymbol *);
     63 
     64 extern int
     65 s7_bfd_score_elf_link_output_symbol_hook (struct bfd_link_info *,
     66                                           const char *,
     67                                           Elf_Internal_Sym *,
     68                                           asection *,
     69                                           struct elf_link_hash_entry *);
     70 
     71 extern bfd_boolean
     72 s7_bfd_score_elf_section_from_bfd_section (bfd *,
     73                                            asection *,
     74                                            int *);
     75 
     76 extern bfd_boolean
     77 s7_bfd_score_elf_adjust_dynamic_symbol (struct bfd_link_info *,
     78                                         struct elf_link_hash_entry *);
     79 
     80 extern bfd_boolean
     81 s7_bfd_score_elf_always_size_sections (bfd *, struct bfd_link_info *);
     82 
     83 extern bfd_boolean
     84 s7_bfd_score_elf_size_dynamic_sections (bfd *, struct bfd_link_info *);
     85 
     86 extern bfd_boolean
     87 s7_bfd_score_elf_create_dynamic_sections (bfd *, struct bfd_link_info *);
     88 
     89 extern bfd_boolean
     90 s7_bfd_score_elf_finish_dynamic_symbol (bfd *,
     91                                         struct bfd_link_info *,
     92                                         struct elf_link_hash_entry *,
     93                                         Elf_Internal_Sym *);
     94 
     95 extern bfd_boolean
     96 s7_bfd_score_elf_finish_dynamic_sections (bfd *, struct bfd_link_info *);
     97 
     98 extern bfd_boolean
     99 s7_bfd_score_elf_fake_sections (bfd *,
    100                                 Elf_Internal_Shdr *,
    101                                 asection *);
    102 
    103 extern bfd_boolean
    104 s7_bfd_score_elf_section_processing (bfd *, Elf_Internal_Shdr *);
    105 
    106 extern bfd_boolean
    107 s7_bfd_score_elf_write_section (bfd *, asection *, bfd_byte *);
    108 
    109 extern void
    110 s7_bfd_score_elf_copy_indirect_symbol (struct bfd_link_info *,
    111                                        struct elf_link_hash_entry *,
    112                                        struct elf_link_hash_entry *);
    113 
    114 extern bfd_boolean
    115 s7_bfd_score_elf_discard_info (bfd *, struct elf_reloc_cookie *,
    116                                struct bfd_link_info *);
    117 
    118 extern bfd_boolean
    119 s7_bfd_score_elf_ignore_discarded_relocs (asection *);
    120 
    121 extern asection *
    122 s7_bfd_score_elf_gc_mark_hook (asection *,
    123                                struct bfd_link_info *,
    124                                Elf_Internal_Rela *,
    125                                struct elf_link_hash_entry *,
    126                                Elf_Internal_Sym *);
    127 
    128 extern bfd_boolean
    129 s7_bfd_score_elf_grok_prstatus (bfd *, Elf_Internal_Note *);
    130 
    131 extern bfd_boolean
    132 s7_bfd_score_elf_grok_psinfo (bfd *, Elf_Internal_Note *);
    133 
    134 extern reloc_howto_type *
    135 s7_elf32_score_reloc_type_lookup (bfd *, bfd_reloc_code_real_type);
    136 
    137 extern struct bfd_link_hash_table *
    138 s7_elf32_score_link_hash_table_create (bfd *);
    139 
    140 extern bfd_boolean
    141 s7_elf32_score_print_private_bfd_data (bfd *, void *);
    142 
    143 extern bfd_boolean
    144 s7_elf32_score_merge_private_bfd_data (bfd *, bfd *);
    145 
    146 extern bfd_boolean
    147 s7_elf32_score_new_section_hook (bfd *, asection *);
    148 
    149 extern bfd_boolean
    150 _bfd_score_elf_common_definition (Elf_Internal_Sym *);
    151 
    152 #define elf_backend_common_definition   _bfd_score_elf_common_definition
    153