summaryrefslogtreecommitdiff
path: root/bfd/elf32-score.h
blob: 1d759f07f0631e4dc2a9c772656a24ccedfa3de9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/* 32-bit ELF support for S+core.
   Copyright (C) 2009-2017 Free Software Foundation, Inc.
   Contributed by
   Brain.lin (brain.lin@sunplusct.com)
   Mei Ligang (ligang@sunnorth.com.cn)
   Pei-Lin Tsai (pltsai@sunplus.com)

   This file is part of BFD, the Binary File Descriptor library.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
   MA 02110-1301, USA.  */

#include "elf/common.h"
#include "elf/internal.h"

extern void
s7_bfd_score_elf_hide_symbol (struct bfd_link_info *,
                              struct elf_link_hash_entry *,
                              bfd_boolean);

extern void
s7_bfd_score_info_to_howto (bfd *, arelent *, Elf_Internal_Rela *);

extern bfd_boolean
s7_bfd_score_elf_relocate_section (bfd *,
                                   struct bfd_link_info *,
                                   bfd *,
                                   asection *,
                                   bfd_byte *,
                                   Elf_Internal_Rela *,
                                   Elf_Internal_Sym *,
                                   asection **);

extern bfd_boolean
s7_bfd_score_elf_check_relocs (bfd *,
                               struct bfd_link_info *,
                               asection *,
                               const Elf_Internal_Rela *);

extern bfd_boolean
s7_bfd_score_elf_add_symbol_hook (bfd *,
                                  struct bfd_link_info *,
                                  Elf_Internal_Sym *,
                                  const char **,
                                  flagword *,
                                  asection **,
                                  bfd_vma *);

extern void
s7_bfd_score_elf_symbol_processing (bfd *, asymbol *);

extern int
s7_bfd_score_elf_link_output_symbol_hook (struct bfd_link_info *,
                                          const char *,
                                          Elf_Internal_Sym *,
                                          asection *,
                                          struct elf_link_hash_entry *);

extern bfd_boolean
s7_bfd_score_elf_section_from_bfd_section (bfd *,
                                           asection *,
                                           int *);

extern bfd_boolean
s7_bfd_score_elf_adjust_dynamic_symbol (struct bfd_link_info *,
                                        struct elf_link_hash_entry *);

extern bfd_boolean
s7_bfd_score_elf_always_size_sections (bfd *, struct bfd_link_info *);

extern bfd_boolean
s7_bfd_score_elf_size_dynamic_sections (bfd *, struct bfd_link_info *);

extern bfd_boolean
s7_bfd_score_elf_create_dynamic_sections (bfd *, struct bfd_link_info *);

extern bfd_boolean
s7_bfd_score_elf_finish_dynamic_symbol (bfd *,
                                        struct bfd_link_info *,
                                        struct elf_link_hash_entry *,
                                        Elf_Internal_Sym *);

extern bfd_boolean
s7_bfd_score_elf_finish_dynamic_sections (bfd *, struct bfd_link_info *);

extern bfd_boolean
s7_bfd_score_elf_fake_sections (bfd *,
                                Elf_Internal_Shdr *,
                                asection *);

extern bfd_boolean
s7_bfd_score_elf_section_processing (bfd *, Elf_Internal_Shdr *);

extern bfd_boolean
s7_bfd_score_elf_write_section (bfd *, asection *, bfd_byte *);

extern void
s7_bfd_score_elf_copy_indirect_symbol (struct bfd_link_info *,
                                       struct elf_link_hash_entry *,
                                       struct elf_link_hash_entry *);

extern bfd_boolean
s7_bfd_score_elf_discard_info (bfd *, struct elf_reloc_cookie *,
                               struct bfd_link_info *);

extern bfd_boolean
s7_bfd_score_elf_ignore_discarded_relocs (asection *);

extern asection *
s7_bfd_score_elf_gc_mark_hook (asection *,
                               struct bfd_link_info *,
                               Elf_Internal_Rela *,
                               struct elf_link_hash_entry *,
                               Elf_Internal_Sym *);

extern bfd_boolean
s7_bfd_score_elf_grok_prstatus (bfd *, Elf_Internal_Note *);

extern bfd_boolean
s7_bfd_score_elf_grok_psinfo (bfd *, Elf_Internal_Note *);

extern reloc_howto_type *
s7_elf32_score_reloc_type_lookup (bfd *, bfd_reloc_code_real_type);

extern struct bfd_link_hash_table *
s7_elf32_score_link_hash_table_create (bfd *);

extern bfd_boolean
s7_elf32_score_print_private_bfd_data (bfd *, void *);

extern bfd_boolean
s7_elf32_score_merge_private_bfd_data (bfd *, struct bfd_link_info *);

extern bfd_boolean
s7_elf32_score_new_section_hook (bfd *, asection *);

extern bfd_boolean
_bfd_score_elf_common_definition (Elf_Internal_Sym *);

#define elf_backend_common_definition   _bfd_score_elf_common_definition