Coverage Report

Created: 2025-07-08 11:15

/src/binutils-gdb/bfd/elf-bfd.h
Line
Count
Source (jump to first uncovered line)
1
/* BFD back-end data structures for ELF files.
2
   Copyright (C) 1992-2025 Free Software Foundation, Inc.
3
   Written by Cygnus Support.
4
5
   This file is part of BFD, the Binary File Descriptor library.
6
7
   This program is free software; you can redistribute it and/or modify
8
   it under the terms of the GNU General Public License as published by
9
   the Free Software Foundation; either version 3 of the License, or
10
   (at your option) any later version.
11
12
   This program is distributed in the hope that it will be useful,
13
   but WITHOUT ANY WARRANTY; without even the implied warranty of
14
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
   GNU General Public License for more details.
16
17
   You should have received a copy of the GNU General Public License
18
   along with this program; if not, write to the Free Software
19
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
20
   MA 02110-1301, USA.  */
21
22
#ifndef _LIBELF_H_
23
#define _LIBELF_H_ 1
24
25
#include <stdlib.h>
26
27
#include "elf/common.h"
28
#include "elf/external.h"
29
#include "elf/internal.h"
30
#include "bfdlink.h"
31
32
#ifndef ENABLE_CHECKING
33
#define ENABLE_CHECKING 0
34
#endif
35
36
#ifdef __cplusplus
37
extern "C" {
38
#endif
39
40
/* The number of entries in a section is its size divided by the size
41
   of a single entry.  This is normally only applicable to reloc and
42
   symbol table sections.
43
   PR 9934: It is possible to have relocations that do not refer to
44
   symbols, thus it is also possible to have a relocation section in
45
   an object file, but no symbol table.  */
46
675k
#define NUM_SHDR_ENTRIES(shdr) ((shdr)->sh_entsize > 0 ? (shdr)->sh_size / (shdr)->sh_entsize : 0)
47
48
/* If size isn't specified as 64 or 32, NAME macro should fail.  */
49
#ifndef NAME
50
#if ARCH_SIZE == 64
51
281M
#define NAME(x, y) x ## 64 ## _ ## y
52
#endif
53
#if ARCH_SIZE == 32
54
760M
#define NAME(x, y) x ## 32 ## _ ## y
55
#endif
56
#endif
57
58
#ifndef NAME
59
#define NAME(x, y) x ## NOSIZE ## _ ## y
60
#endif
61
62
#define ElfNAME(X)  NAME(Elf,X)
63
#define elfNAME(X)  NAME(elf,X)
64
65
/* Information held for an ELF symbol.  The first field is the
66
   corresponding asymbol.  Every symbol is an ELF file is actually a
67
   pointer to this structure, although it is often handled as a
68
   pointer to an asymbol.  */
69
70
typedef struct
71
{
72
  /* The BFD symbol.  */
73
  asymbol symbol;
74
  /* ELF symbol information.  */
75
  Elf_Internal_Sym internal_elf_sym;
76
  /* Backend specific information.  */
77
  union
78
    {
79
      unsigned int hppa_arg_reloc;
80
      void *mips_extr;
81
      void *any;
82
    }
83
  tc_data;
84
85
  /* Version information.  This is from an Elf_Internal_Versym
86
     structure in a SHT_GNU_versym section.  It is zero if there is no
87
     version information.  */
88
  unsigned short version;
89
90
} elf_symbol_type;
91

92
struct elf_strtab_hash;
93
struct got_entry;
94
struct plt_entry;
95
96
union gotplt_union
97
  {
98
    bfd_signed_vma refcount;
99
    bfd_vma offset;
100
    struct got_entry *glist;
101
    struct plt_entry *plist;
102
  };
103
104
struct elf_link_virtual_table_entry
105
  {
106
    /* Virtual table entry use information.  This array is nominally of size
107
       size/sizeof(target_void_pointer), though we have to be able to assume
108
       and track a size while the symbol is still undefined.  It is indexed
109
       via offset/sizeof(target_void_pointer).  */
110
    size_t size;
111
    bool *used;
112
113
    /* Virtual table derivation info.  */
114
    struct elf_link_hash_entry *parent;
115
  };
116
117
/* ELF symbol version.  */
118
enum elf_symbol_version
119
  {
120
    unknown = 0,
121
    unversioned,
122
    versioned,
123
    versioned_hidden
124
  };
125
126
/* ELF linker hash table entries.  */
127
128
struct elf_link_hash_entry
129
{
130
  struct bfd_link_hash_entry root;
131
132
  /* Symbol index in output file.  This is initialized to -1.  It is
133
     set to -2 if the symbol is used by a reloc.  It is set to -3 if
134
     this symbol is defined in a discarded section.  */
135
  long indx;
136
137
  /* Symbol index as a dynamic symbol.  Initialized to -1, and remains
138
     -1 if this is not a dynamic symbol.  */
139
  /* ??? Note that this is consistently used as a synonym for tests
140
     against whether we can perform various simplifying transformations
141
     to the code.  (E.g. changing a pc-relative jump to a PLT entry
142
     into a pc-relative jump to the target function.)  That test, which
143
     is often relatively complex, and someplaces wrong or incomplete,
144
     should really be replaced by a predicate in elflink.c.
145
146
     End result: this field -1 does not indicate that the symbol is
147
     not in the dynamic symbol table, but rather that the symbol is
148
     not visible outside this DSO.  */
149
  long dynindx;
150
151
  /* If this symbol requires an entry in the global offset table, the
152
     processor specific backend uses this field to track usage and
153
     final offset.  Two schemes are supported:  The first assumes that
154
     a symbol may only have one GOT entry, and uses REFCOUNT until
155
     size_dynamic_sections, at which point the contents of the .got is
156
     fixed.  Afterward, if OFFSET is -1, then the symbol does not
157
     require a global offset table entry.  The second scheme allows
158
     multiple GOT entries per symbol, managed via a linked list
159
     pointed to by GLIST.  */
160
  union gotplt_union got;
161
162
  /* Same, but tracks a procedure linkage table entry.  */
163
  union gotplt_union plt;
164
165
  /* Symbol size.  NB: All fields starting from here are cleared by
166
    _bfd_elf_link_hash_newfunc.  */
167
  bfd_size_type size;
168
169
  /* Track dynamic relocs copied for this symbol.  */
170
  struct elf_dyn_relocs *dyn_relocs;
171
172
  /* Symbol type (STT_NOTYPE, STT_OBJECT, etc.).  */
173
  unsigned int type : 8;
174
175
  /* Symbol st_other value, symbol visibility.  */
176
  unsigned int other : 8;
177
178
  /* The symbol's st_target_internal value (see Elf_Internal_Sym).  */
179
  unsigned int target_internal : 8;
180
181
  /* Symbol is referenced by a non-shared object (other than the object
182
     in which it is defined).  */
183
  unsigned int ref_regular : 1;
184
  /* Symbol is defined by a non-shared object.  */
185
  unsigned int def_regular : 1;
186
  /* Symbol is referenced by a shared object.  */
187
  unsigned int ref_dynamic : 1;
188
  /* Symbol is defined by a shared object.  */
189
  unsigned int def_dynamic : 1;
190
  /* Symbol has a non-weak reference from a non-shared object (other than
191
     the object in which it is defined).  */
192
  unsigned int ref_regular_nonweak : 1;
193
  /* Symbol has a non-weak reference from a LTO IR object file.  */
194
  unsigned int ref_ir_nonweak : 1;
195
  /* Dynamic symbol has been adjustd.  */
196
  unsigned int dynamic_adjusted : 1;
197
  /* Symbol needs a copy reloc.  */
198
  unsigned int needs_copy : 1;
199
  /* Symbol needs a procedure linkage table entry.  */
200
  unsigned int needs_plt : 1;
201
  /* Symbol appears in a non-ELF input file.  */
202
  unsigned int non_elf : 1;
203
  /* Symbol version information.  */
204
  ENUM_BITFIELD (elf_symbol_version) versioned : 2;
205
  /* Symbol was forced to local scope due to a version script file.  */
206
  unsigned int forced_local : 1;
207
  /* Symbol was forced to be dynamic due to a version script file.  */
208
  unsigned int dynamic : 1;
209
  /* Symbol was marked during garbage collection.  */
210
  unsigned int mark : 1;
211
  /* Symbol is referenced by a non-GOT/non-PLT relocation.  This is
212
     not currently set by all the backends.  */
213
  unsigned int non_got_ref : 1;
214
  /* Symbol has a definition in a shared object.
215
     FIXME: There is no real need for this field if def_dynamic is never
216
     cleared and all places that test def_dynamic also test def_regular.  */
217
  unsigned int dynamic_def : 1;
218
  /* Symbol has a non-weak reference from a shared object.  */
219
  unsigned int ref_dynamic_nonweak : 1;
220
  /* Symbol is referenced with a relocation where C/C++ pointer equality
221
     matters.  */
222
  unsigned int pointer_equality_needed : 1;
223
  /* Symbol is a unique global symbol.  */
224
  unsigned int unique_global : 1;
225
  /* Symbol is defined by a shared library with non-default visibility
226
     in a read/write section.  */
227
  unsigned int protected_def : 1;
228
  /* Symbol is __start_SECNAME or __stop_SECNAME to mark section
229
     SECNAME.  */
230
  unsigned int start_stop : 1;
231
  /* Symbol is or was a weak defined symbol from a dynamic object with
232
     a strong defined symbol alias.  U.ALIAS points to a list of aliases,
233
     the definition having is_weakalias clear.  */
234
  unsigned int is_weakalias : 1;
235
  /* Symbol has a relocation.  */
236
  unsigned int has_reloc : 1;
237
238
  /* String table index in .dynstr if this is a dynamic symbol.  */
239
  unsigned long dynstr_index;
240
241
  union
242
  {
243
    /* Points to a circular list of non-function symbol aliases.  */
244
    struct elf_link_hash_entry *alias;
245
246
    /* Hash value of the name computed using the ELF hash function.
247
       Used part way through size_dynamic_sections, after we've finished
248
       with aliases.  */
249
    unsigned long elf_hash_value;
250
  } u;
251
252
  /* Version information.  */
253
  union
254
  {
255
    /* This field is used for a symbol which is not defined in a
256
       regular object.  It points to the version information read in
257
       from the dynamic object.  */
258
    Elf_Internal_Verdef *verdef;
259
    /* This field is used for a symbol which is defined in a regular
260
       object.  It is set up in size_dynamic_sections.  It points to
261
       the version information we should write out for this symbol.  */
262
    struct bfd_elf_version_tree *vertree;
263
  } verinfo;
264
265
  union
266
  {
267
    /* For __start_SECNAME and __stop_SECNAME symbols, record the first
268
       input section whose section name is SECNAME.  */
269
    asection *start_stop_section;
270
271
    /* Vtable information. */
272
    struct elf_link_virtual_table_entry *vtable;
273
  } u2;
274
};
275
276
/* Return the strong definition for a weak symbol with aliases.  */
277
278
static inline struct elf_link_hash_entry *
279
weakdef (struct elf_link_hash_entry *h)
280
0
{
281
0
  while (h->is_weakalias)
282
0
    h = h->u.alias;
283
0
  return h;
284
0
}
Unexecuted instantiation: fuzz_nm.c:weakdef
Unexecuted instantiation: bfd.c:weakdef
Unexecuted instantiation: libbfd.c:weakdef
Unexecuted instantiation: opncls.c:weakdef
Unexecuted instantiation: elf64-x86-64.c:weakdef
Unexecuted instantiation: elfxx-x86.c:weakdef
Unexecuted instantiation: elf-ifunc.c:weakdef
Unexecuted instantiation: elf-vxworks.c:weakdef
Unexecuted instantiation: elf64.c:weakdef
Unexecuted instantiation: elf.c:weakdef
Unexecuted instantiation: elflink.c:weakdef
Unexecuted instantiation: elf-attrs.c:weakdef
Unexecuted instantiation: elf-strtab.c:weakdef
Unexecuted instantiation: elf-eh-frame.c:weakdef
Unexecuted instantiation: elf-sframe.c:weakdef
Unexecuted instantiation: dwarf1.c:weakdef
Unexecuted instantiation: dwarf2.c:weakdef
Unexecuted instantiation: elf32-i386.c:weakdef
Unexecuted instantiation: elf32.c:weakdef
Unexecuted instantiation: cofflink.c:weakdef
Unexecuted instantiation: coffgen.c:weakdef
Unexecuted instantiation: elf64-gen.c:weakdef
Unexecuted instantiation: elf32-gen.c:weakdef
Unexecuted instantiation: elf32-aarch64.c:weakdef
Unexecuted instantiation: elf32-ia64.c:weakdef
Unexecuted instantiation: elf32-kvx.c:weakdef
Unexecuted instantiation: elf32-loongarch.c:weakdef
Unexecuted instantiation: elf32-mips.c:weakdef
Unexecuted instantiation: elf32-riscv.c:weakdef
Unexecuted instantiation: elf32-score.c:weakdef
Unexecuted instantiation: elf32-score7.c:weakdef
Unexecuted instantiation: elf64-aarch64.c:weakdef
Unexecuted instantiation: elf64-alpha.c:weakdef
Unexecuted instantiation: elf64-amdgcn.c:weakdef
Unexecuted instantiation: elf64-bpf.c:weakdef
Unexecuted instantiation: elf64-hppa.c:weakdef
Unexecuted instantiation: elf64-ia64-vms.c:weakdef
Unexecuted instantiation: elf64-ia64.c:weakdef
Unexecuted instantiation: elf64-kvx.c:weakdef
Unexecuted instantiation: elf64-loongarch.c:weakdef
Unexecuted instantiation: elf64-mips.c:weakdef
Unexecuted instantiation: elf64-mmix.c:weakdef
Unexecuted instantiation: elf64-nfp.c:weakdef
Unexecuted instantiation: elf64-ppc.c:weakdef
Unexecuted instantiation: elf64-riscv.c:weakdef
Unexecuted instantiation: elf64-s390.c:weakdef
Unexecuted instantiation: elf64-sparc.c:weakdef
Unexecuted instantiation: elf64-tilegx.c:weakdef
Unexecuted instantiation: elfn32-mips.c:weakdef
Unexecuted instantiation: elfxx-aarch64.c:weakdef
Unexecuted instantiation: elfxx-ia64.c:weakdef
Unexecuted instantiation: elfxx-kvx.c:weakdef
Unexecuted instantiation: elfxx-loongarch.c:weakdef
Unexecuted instantiation: elfxx-mips.c:weakdef
Unexecuted instantiation: elfxx-riscv.c:weakdef
Unexecuted instantiation: elf-m10200.c:weakdef
Unexecuted instantiation: elf-m10300.c:weakdef
Unexecuted instantiation: elf32-am33lin.c:weakdef
Unexecuted instantiation: elf32-arc.c:weakdef
Unexecuted instantiation: elf32-arm.c:weakdef
Unexecuted instantiation: elf32-avr.c:weakdef
Unexecuted instantiation: elf32-bfin.c:weakdef
Unexecuted instantiation: elf32-cr16.c:weakdef
Unexecuted instantiation: elf32-cris.c:weakdef
Unexecuted instantiation: elf32-crx.c:weakdef
Unexecuted instantiation: elf32-csky.c:weakdef
Unexecuted instantiation: elf32-d10v.c:weakdef
Unexecuted instantiation: elf32-d30v.c:weakdef
Unexecuted instantiation: elf32-dlx.c:weakdef
Unexecuted instantiation: elf32-epiphany.c:weakdef
Unexecuted instantiation: elf32-fr30.c:weakdef
Unexecuted instantiation: elf32-frv.c:weakdef
Unexecuted instantiation: elf32-ft32.c:weakdef
Unexecuted instantiation: elf32-h8300.c:weakdef
Unexecuted instantiation: elf32-hppa.c:weakdef
Unexecuted instantiation: elf32-ip2k.c:weakdef
Unexecuted instantiation: elf32-iq2000.c:weakdef
Unexecuted instantiation: elf32-lm32.c:weakdef
Unexecuted instantiation: elf32-m32c.c:weakdef
Unexecuted instantiation: elf32-m32r.c:weakdef
Unexecuted instantiation: elf32-m68hc11.c:weakdef
Unexecuted instantiation: elf32-m68hc12.c:weakdef
Unexecuted instantiation: elf32-m68hc1x.c:weakdef
Unexecuted instantiation: elf32-m68k.c:weakdef
Unexecuted instantiation: elf32-mcore.c:weakdef
Unexecuted instantiation: elf32-mep.c:weakdef
Unexecuted instantiation: elf32-metag.c:weakdef
Unexecuted instantiation: elf32-microblaze.c:weakdef
Unexecuted instantiation: elf32-moxie.c:weakdef
Unexecuted instantiation: elf32-msp430.c:weakdef
Unexecuted instantiation: elf32-mt.c:weakdef
Unexecuted instantiation: elf32-nds32.c:weakdef
Unexecuted instantiation: elf32-or1k.c:weakdef
Unexecuted instantiation: elf32-pj.c:weakdef
Unexecuted instantiation: elf32-ppc.c:weakdef
Unexecuted instantiation: elf32-pru.c:weakdef
Unexecuted instantiation: elf32-rl78.c:weakdef
Unexecuted instantiation: elf32-rx.c:weakdef
Unexecuted instantiation: elf32-s12z.c:weakdef
Unexecuted instantiation: elf32-s390.c:weakdef
Unexecuted instantiation: elf32-sh.c:weakdef
Unexecuted instantiation: elf32-sparc.c:weakdef
Unexecuted instantiation: elf32-spu.c:weakdef
Unexecuted instantiation: elf32-tic6x.c:weakdef
Unexecuted instantiation: elf32-tilegx.c:weakdef
Unexecuted instantiation: elf32-tilepro.c:weakdef
Unexecuted instantiation: elf32-v850.c:weakdef
Unexecuted instantiation: elf32-vax.c:weakdef
Unexecuted instantiation: elf32-visium.c:weakdef
Unexecuted instantiation: elf32-wasm32.c:weakdef
Unexecuted instantiation: elf32-xgate.c:weakdef
Unexecuted instantiation: elf32-xstormy16.c:weakdef
Unexecuted instantiation: elf32-xtensa.c:weakdef
Unexecuted instantiation: elf32-z80.c:weakdef
Unexecuted instantiation: elfxx-sparc.c:weakdef
Unexecuted instantiation: elfxx-tilegx.c:weakdef
Unexecuted instantiation: cpu-nds32.c:weakdef
Unexecuted instantiation: compress.c:weakdef
Unexecuted instantiation: elf-properties.c:weakdef
Unexecuted instantiation: merge.c:weakdef
Unexecuted instantiation: elf-nacl.c:weakdef
Unexecuted instantiation: fuzz_objdump.c:weakdef
Unexecuted instantiation: arc-dis.c:weakdef
Unexecuted instantiation: arm-dis.c:weakdef
Unexecuted instantiation: csky-dis.c:weakdef
Unexecuted instantiation: kvx-dis.c:weakdef
Unexecuted instantiation: m32c-dis.c:weakdef
Unexecuted instantiation: mep-dis.c:weakdef
Unexecuted instantiation: ppc-dis.c:weakdef
Unexecuted instantiation: pru-dis.c:weakdef
Unexecuted instantiation: rl78-dis.c:weakdef
Unexecuted instantiation: score-dis.c:weakdef
Unexecuted instantiation: score7-dis.c:weakdef
Unexecuted instantiation: tilepro-dis.c:weakdef
Unexecuted instantiation: wasm32-dis.c:weakdef
Unexecuted instantiation: aarch64-dis.c:weakdef
Unexecuted instantiation: bpf-dis.c:weakdef
Unexecuted instantiation: mips-dis.c:weakdef
Unexecuted instantiation: nfp-dis.c:weakdef
Unexecuted instantiation: riscv-dis.c:weakdef
Unexecuted instantiation: tilegx-dis.c:weakdef
Unexecuted instantiation: ctf-serialize.c:weakdef
Unexecuted instantiation: ctf-open-bfd.c:weakdef
Unexecuted instantiation: fuzz_addr2line.c:weakdef
Unexecuted instantiation: fuzz_as.c:weakdef
Unexecuted instantiation: codeview.c:weakdef
Unexecuted instantiation: cond.c:weakdef
Unexecuted instantiation: depend.c:weakdef
Unexecuted instantiation: dw2gencfi.c:weakdef
Unexecuted instantiation: dwarf2dbg.c:weakdef
Unexecuted instantiation: ehopt.c:weakdef
Unexecuted instantiation: expr.c:weakdef
Unexecuted instantiation: frags.c:weakdef
Unexecuted instantiation: gen-sframe.c:weakdef
Unexecuted instantiation: input-scrub.c:weakdef
Unexecuted instantiation: listing.c:weakdef
Unexecuted instantiation: macro.c:weakdef
Unexecuted instantiation: messages.c:weakdef
Unexecuted instantiation: output-file.c:weakdef
Unexecuted instantiation: read.c:weakdef
Unexecuted instantiation: remap.c:weakdef
Unexecuted instantiation: sb.c:weakdef
Unexecuted instantiation: scfidw2gen.c:weakdef
Unexecuted instantiation: stabs.c:weakdef
Unexecuted instantiation: subsegs.c:weakdef
Unexecuted instantiation: symbols.c:weakdef
Unexecuted instantiation: write.c:weakdef
Unexecuted instantiation: app.c:weakdef
Unexecuted instantiation: atof-generic.c:weakdef
Unexecuted instantiation: ecoff.c:weakdef
Unexecuted instantiation: flonum-copy.c:weakdef
Unexecuted instantiation: ginsn.c:weakdef
Unexecuted instantiation: hash.c:weakdef
Unexecuted instantiation: input-file.c:weakdef
Unexecuted instantiation: scfi.c:weakdef
Unexecuted instantiation: sframe-opt.c:weakdef
Unexecuted instantiation: tc-i386.c:weakdef
Unexecuted instantiation: obj-elf.c:weakdef
Unexecuted instantiation: atof-ieee.c:weakdef
Unexecuted instantiation: fuzz_dwarf.c:weakdef
Unexecuted instantiation: fuzz_objcopy.c:weakdef
285
286
/* Will references to this symbol always reference the symbol
287
   in this object?  */
288
#define SYMBOL_REFERENCES_LOCAL(INFO, H) \
289
0
  _bfd_elf_symbol_refs_local_p (H, INFO, 0)
290
291
/* Will _calls_ to this symbol always call the version in this object?  */
292
#define SYMBOL_CALLS_LOCAL(INFO, H) \
293
0
  _bfd_elf_symbol_refs_local_p (H, INFO, 1)
294
295
/* Whether an undefined weak symbol should resolve to its link-time
296
   value, even in PIC or PIE objects.  The linker_def test is to
297
   handle symbols like __ehdr_start that may be undefweak in early
298
   stages of linking but are guaranteed to be defined later.  */
299
#define UNDEFWEAK_NO_DYNAMIC_RELOC(INFO, H)   \
300
0
  ((H)->root.type == bfd_link_hash_undefweak    \
301
0
   && !(H)->root.linker_def        \
302
0
   && (ELF_ST_VISIBILITY ((H)->other) != STV_DEFAULT  \
303
0
       || (INFO)->dynamic_undefined_weak == 0))
304
305
/* Common symbols that are turned into definitions don't have the
306
   DEF_REGULAR flag set, so they might appear to be undefined.
307
   Symbols defined in linker scripts also don't have DEF_REGULAR set.  */
308
#define ELF_COMMON_DEF_P(H) \
309
0
  (!(H)->def_regular              \
310
0
   && !(H)->def_dynamic              \
311
0
   && (H)->root.type == bfd_link_hash_defined)
312
313
/* Records local symbols to be emitted in the dynamic symbol table.  */
314
315
struct elf_link_local_dynamic_entry
316
{
317
  struct elf_link_local_dynamic_entry *next;
318
319
  /* The input bfd this symbol came from.  */
320
  bfd *input_bfd;
321
322
  /* The index of the local symbol being copied.  */
323
  long input_indx;
324
325
  /* The index in the outgoing dynamic symbol table.  */
326
  long dynindx;
327
328
  /* A copy of the input symbol.  */
329
  Elf_Internal_Sym isym;
330
};
331
332
struct elf_link_loaded_list
333
{
334
  struct elf_link_loaded_list *next;
335
  bfd *abfd;
336
};
337
338
/* Structures used by the eh_frame optimization code.  */
339
struct eh_cie_fde
340
{
341
  union {
342
    struct {
343
      /* If REMOVED == 1, this is the CIE that the FDE originally used.
344
   The CIE belongs to the same .eh_frame input section as the FDE.
345
346
   If REMOVED == 0, this is the CIE that we have chosen to use for
347
   the output FDE.  The CIE's REMOVED field is also 0, but the CIE
348
   might belong to a different .eh_frame input section from the FDE.
349
350
   May be NULL to signify that the FDE should be discarded.  */
351
      struct eh_cie_fde *cie_inf;
352
      struct eh_cie_fde *next_for_section;
353
    } fde;
354
    struct {
355
      /* CIEs have three states:
356
357
   - REMOVED && !MERGED: Slated for removal because we haven't yet
358
     proven that an FDE needs it.  FULL_CIE, if nonnull, points to
359
     more detailed information about the CIE.
360
361
   - REMOVED && MERGED: We have merged this CIE with MERGED_WITH,
362
     which may not belong to the same input section.
363
364
   - !REMOVED: We have decided to keep this CIE.  SEC is the
365
     .eh_frame input section that contains the CIE.  */
366
      union {
367
  struct cie *full_cie;
368
  struct eh_cie_fde *merged_with;
369
  asection *sec;
370
      } u;
371
372
      /* The offset of the personality data from the start of the CIE,
373
   or 0 if the CIE doesn't have any.  */
374
      unsigned int personality_offset : 8;
375
376
      /* Length of augmentation.  aug_str_len is the length of the
377
   string including null terminator.  aug_data_len is the length
378
   of the rest up to the initial insns.  */
379
      unsigned int aug_str_len : 3;
380
      unsigned int aug_data_len : 5;
381
382
      /* True if we have marked relocations associated with this CIE.  */
383
      unsigned int gc_mark : 1;
384
385
      /* True if we have decided to turn an absolute LSDA encoding into
386
   a PC-relative one.  */
387
      unsigned int make_lsda_relative : 1;
388
389
      /* True if we have decided to turn an absolute personality
390
   encoding into a PC-relative one.  */
391
      unsigned int make_per_encoding_relative : 1;
392
393
      /* True if the CIE contains personality data and if that
394
   data uses a PC-relative encoding.  Always true when
395
   make_per_encoding_relative is.  */
396
      unsigned int per_encoding_relative : 1;
397
398
      /* True if the CIE contains personality data aligned to a
399
   multiple of eight bytes.  */
400
      unsigned int per_encoding_aligned8 : 1;
401
402
      /* True if we need to add an 'R' (FDE encoding) entry to the
403
   CIE's augmentation data.  */
404
      unsigned int add_fde_encoding : 1;
405
406
      /* True if we have merged this CIE with another.  */
407
      unsigned int merged : 1;
408
409
      /* Unused bits.  */
410
      unsigned int pad1 : 9;
411
    } cie;
412
  } u;
413
  unsigned int reloc_index;
414
  unsigned int size;
415
  unsigned int offset;
416
  unsigned int new_offset;
417
  unsigned int fde_encoding : 8;
418
  unsigned int lsda_encoding : 8;
419
  unsigned int lsda_offset : 8;
420
421
  /* True if this entry represents a CIE, false if it represents an FDE.  */
422
  unsigned int cie : 1;
423
424
  /* True if this entry is currently marked for removal.  */
425
  unsigned int removed : 1;
426
427
  /* True if we need to add a 'z' (augmentation size) entry to the CIE's
428
     augmentation data, and an associated byte to each of the CIE's FDEs.  */
429
  unsigned int add_augmentation_size : 1;
430
431
  /* True if we have decided to convert absolute FDE relocations into
432
     relative ones.  This applies to the first relocation in the FDE,
433
     which is against the code that the FDE describes.  */
434
  unsigned int make_relative : 1;
435
436
  /* Unused bits.  */
437
  unsigned int pad1 : 4;
438
439
  unsigned int *set_loc;
440
};
441
442
struct eh_frame_sec_info
443
{
444
  unsigned int count;
445
  struct cie *cies;
446
  struct eh_cie_fde entry[1];
447
};
448
449
struct eh_frame_array_ent
450
{
451
  bfd_vma initial_loc;
452
  bfd_size_type range;
453
  bfd_vma fde;
454
};
455
456
struct htab;
457
458
0
#define DWARF2_EH_HDR 1
459
0
#define COMPACT_EH_HDR 2
460
461
/* Endian-neutral code indicating that a function cannot be unwound.  */
462
0
#define COMPACT_EH_CANT_UNWIND_OPCODE 0x015d5d01
463
464
struct dwarf_eh_frame_hdr_info
465
{
466
  struct htab *cies;
467
  unsigned int fde_count;
468
  /* TRUE if .eh_frame_hdr should contain the sorted search table.
469
     We build it if we successfully read all .eh_frame input sections
470
     and recognize them.  */
471
  bool table;
472
  struct eh_frame_array_ent *array;
473
};
474
475
struct compact_eh_frame_hdr_info
476
{
477
  unsigned int allocated_entries;
478
  /* eh_frame_entry fragments.  */
479
  asection **entries;
480
};
481
482
struct eh_frame_hdr_info
483
{
484
  asection *hdr_sec;
485
  unsigned int array_count;
486
  bool frame_hdr_is_compact;
487
  union
488
    {
489
      struct dwarf_eh_frame_hdr_info dwarf;
490
      struct compact_eh_frame_hdr_info compact;
491
    }
492
  u;
493
};
494
495
/* Additional information for each function (used at link time).  */
496
struct sframe_func_bfdinfo
497
{
498
  /* Whether the function has been discarded from the final output.  */
499
  bool func_deleted_p;
500
  /* Relocation offset.  */
501
  unsigned int func_r_offset;
502
  /* Relocation index.  */
503
  unsigned int func_reloc_index;
504
};
505
506
/* Link state information of the SFrame section.  */
507
enum sframe_sec_state
508
{
509
  SFRAME_SEC_DECODED = 1,
510
  SFRAME_SEC_MERGED,
511
};
512
513
/* SFrame decoder info.
514
   Contains all information for a decoded .sframe section.  */
515
struct sframe_dec_info
516
{
517
  /* Decoder context.  */
518
  struct sframe_decoder_ctx *sfd_ctx;
519
  /* SFrame section state as it progresses through the link process.  */
520
  enum sframe_sec_state sfd_state;
521
  /* Number of function descriptor entries in this .sframe.  */
522
  unsigned int sfd_fde_count;
523
  /* Additional information for linking.  */
524
  struct sframe_func_bfdinfo *sfd_func_bfdinfo;
525
};
526
527
/* SFrame encoder info.
528
   Contains all information for an encoded .sframe section to be
529
   written out.  */
530
struct sframe_enc_info
531
{
532
  /* Encoder context.  */
533
  struct sframe_encoder_ctx *sfe_ctx;
534
  /* Output section.  */
535
  asection *sframe_section;
536
};
537
538
/* Enum used to identify target specific extensions to the elf_obj_tdata
539
   and elf_link_hash_table structures.  Note the enums deliberately start
540
   from 1 so that we can detect an uninitialized field.  The generic value
541
   is last so that additions to this enum do not need to modify more than
542
   one line.  */
543
enum elf_target_id
544
{
545
  AARCH64_ELF_DATA = 1,
546
  ALPHA_ELF_DATA,
547
  AMDGCN_ELF_DATA,
548
  ARC_ELF_DATA,
549
  ARM_ELF_DATA,
550
  AVR_ELF_DATA,
551
  BFIN_ELF_DATA,
552
  CR16_ELF_DATA,
553
  CRIS_ELF_DATA,
554
  CSKY_ELF_DATA,
555
  FRV_ELF_DATA,
556
  HPPA32_ELF_DATA,
557
  HPPA64_ELF_DATA,
558
  I386_ELF_DATA,
559
  IA64_ELF_DATA,
560
  KVX_ELF_DATA,
561
  LARCH_ELF_DATA,
562
  LM32_ELF_DATA,
563
  M32R_ELF_DATA,
564
  M68HC11_ELF_DATA,
565
  M68K_ELF_DATA,
566
  METAG_ELF_DATA,
567
  MICROBLAZE_ELF_DATA,
568
  MIPS_ELF_DATA,
569
  MMIX_ELF_DATA,
570
  MN10300_ELF_DATA,
571
  NDS32_ELF_DATA,
572
  OR1K_ELF_DATA,
573
  PPC32_ELF_DATA,
574
  PPC64_ELF_DATA,
575
  PRU_ELF_DATA,
576
  RISCV_ELF_DATA,
577
  S390_ELF_DATA,
578
  SCORE_ELF_DATA,
579
  SH_ELF_DATA,
580
  SPARC_ELF_DATA,
581
  SPU_ELF_DATA,
582
  TIC6X_ELF_DATA,
583
  TILEGX_ELF_DATA,
584
  TILEPRO_ELF_DATA,
585
  X86_64_ELF_DATA,
586
  XTENSA_ELF_DATA,
587
  VAX_ELF_DATA,
588
  GENERIC_ELF_DATA
589
};
590
591
struct elf_sym_strtab
592
{
593
  Elf_Internal_Sym sym;
594
  unsigned long dest_index;
595
};
596
597
struct bfd_link_needed_list
598
{
599
  struct bfd_link_needed_list *next;
600
  bfd *by;
601
  const char *name;
602
};
603
604
enum elf_target_os
605
{
606
  is_normal,
607
  is_solaris, /* Solaris.  */
608
  is_vxworks, /* VxWorks.  */
609
  is_nacl /* Native Client.  */
610
};
611
612
/* Used by bfd_sym_from_r_symndx to cache a small number of local
613
   symbols.  */
614
0
#define LOCAL_SYM_CACHE_SIZE 32
615
struct sym_cache
616
{
617
  bfd *abfd;
618
  unsigned long indx[LOCAL_SYM_CACHE_SIZE];
619
  Elf_Internal_Sym sym[LOCAL_SYM_CACHE_SIZE];
620
};
621
622
/* ELF linker hash table.  */
623
624
struct elf_link_hash_table
625
{
626
  struct bfd_link_hash_table root;
627
628
  /* An identifier used to distinguish different target
629
     specific extensions to this structure.  */
630
  enum elf_target_id hash_table_id;
631
632
  /* Whether we have created the special dynamic sections required
633
     when linking against or generating a shared object.  */
634
  bool dynamic_sections_created;
635
636
  /* Whether dynamic relocations are present.  */
637
  bool dynamic_relocs;
638
639
  /* True if this target has relocatable executables, so needs dynamic
640
     section symbols.  */
641
  bool is_relocatable_executable;
642
643
  /* TRUE if there are IFUNC resolvers.  */
644
  bool ifunc_resolvers;
645
646
  /* TRUE if DT_PLTGOT is a required dynamic tag.  */
647
  bool dt_pltgot_required;
648
649
  /* TRUE if DT_JMPREL is a required dynamic tag.  */
650
  bool dt_jmprel_required;
651
652
  /* TRUE when we are handling DT_NEEDED entries.  */
653
  bool handling_dt_needed;
654
655
  /* The BFD used to hold special sections created by the linker.
656
     This will be the first BFD found which requires these sections to
657
     be created.  */
658
  bfd *dynobj;
659
660
  /* The value to use when initialising got.refcount/offset and
661
     plt.refcount/offset in an elf_link_hash_entry.  Set to zero when
662
     the values are refcounts.  Set to init_got_offset/init_plt_offset
663
     in size_dynamic_sections when the values may be offsets.  */
664
  union gotplt_union init_got_refcount;
665
  union gotplt_union init_plt_refcount;
666
667
  /* The value to use for got.refcount/offset and plt.refcount/offset
668
     when the values may be offsets.  Normally (bfd_vma) -1.  */
669
  union gotplt_union init_got_offset;
670
  union gotplt_union init_plt_offset;
671
672
  /* The number of symbols found in the link which is intended for the
673
     mandatory DT_SYMTAB tag (.dynsym section) in .dynamic section.  */
674
  bfd_size_type dynsymcount;
675
  bfd_size_type local_dynsymcount;
676
677
  /* The string table of dynamic symbols, which becomes the .dynstr
678
     section.  */
679
  struct elf_strtab_hash *dynstr;
680
681
  /* The array size of the symbol string table, which becomes the
682
     .strtab section.  */
683
  bfd_size_type strtabsize;
684
685
  /* The array of strings, which becomes the .strtab section.  */
686
  struct elf_sym_strtab *strtab;
687
688
  /* The number of buckets in the hash table in the .hash section.
689
     This is based on the number of dynamic symbols.  */
690
  bfd_size_type bucketcount;
691
692
  /* A linked list of DT_NEEDED names found in dynamic objects
693
     included in the link.  */
694
  struct bfd_link_needed_list *needed;
695
696
  /* Sections in the output bfd that provides a section symbol
697
     to be used by relocations emitted against local symbols.
698
     Most targets will not use data_index_section.  */
699
  asection *text_index_section;
700
  asection *data_index_section;
701
702
  /* The _GLOBAL_OFFSET_TABLE_ symbol.  */
703
  struct elf_link_hash_entry *hgot;
704
705
  /* The _PROCEDURE_LINKAGE_TABLE_ symbol.  */
706
  struct elf_link_hash_entry *hplt;
707
708
  /* The _DYNAMIC symbol.  */
709
  struct elf_link_hash_entry *hdynamic;
710
711
  /* The __ehdr_start symbol.  */
712
  struct elf_link_hash_entry *hehdr_start;
713
714
  /* A pointer to information used to merge SEC_MERGE sections.  */
715
  void *merge_info;
716
717
  /* Used to link stabs in sections.  */
718
  struct stab_info stab_info;
719
720
  /* Used by eh_frame code when editing .eh_frame.  */
721
  struct eh_frame_hdr_info eh_info;
722
723
  /* Used to link stack trace info in .sframe sections.  */
724
  struct sframe_enc_info sfe_info;
725
726
  /* A linked list of local symbols to be added to .dynsym.  */
727
  struct elf_link_local_dynamic_entry *dynlocal;
728
729
  /* A linked list of DT_RPATH/DT_RUNPATH names found in dynamic
730
     objects included in the link.  */
731
  struct bfd_link_needed_list *runpath;
732
733
  /* Cached first output tls section and size of PT_TLS segment.  */
734
  asection *tls_sec;
735
  bfd_size_type tls_size;  /* Bytes.  */
736
737
  /* The offset into splt of the PLT entry for the TLS descriptor
738
     resolver.  Special values are 0, if not necessary (or not found
739
     to be necessary yet), and -1 if needed but not determined
740
     yet.  */
741
  bfd_vma tlsdesc_plt;
742
743
  /* The GOT offset for the lazy trampoline.  Communicated to the
744
     loader via DT_TLSDESC_GOT.  The magic value (bfd_vma) -1
745
     indicates an offset is not allocated.  */
746
  bfd_vma tlsdesc_got;
747
748
  /* Target OS for linker output.  */
749
  enum elf_target_os target_os;
750
751
  /* A linked list of dynamic BFD's loaded in the link.  */
752
  struct elf_link_loaded_list *dyn_loaded;
753
754
  /* Small local sym cache.  */
755
  struct sym_cache sym_cache;
756
757
  /* Hash table of symbols which are first defined in archives or shared
758
     objects when there are any IR inputs.  */
759
  struct bfd_hash_table *first_hash;
760
761
  /* Short-cuts to get to dynamic linker sections.  */
762
  asection *sgot;
763
  asection *sgotplt;
764
  asection *srelgot;
765
  asection *splt;
766
  asection *srelplt;
767
  asection *sdynbss;
768
  asection *srelbss;
769
  asection *sdynrelro;
770
  asection *sreldynrelro;
771
  asection *igotplt;
772
  asection *iplt;
773
  asection *irelplt;
774
  asection *irelifunc;
775
  asection *dynsym;
776
  asection *srelrdyn;
777
  asection *dynamic;
778
};
779
780
/* Returns TRUE if the hash table is a struct elf_link_hash_table.  */
781
782
static inline bool
783
is_elf_hash_table (const struct bfd_link_hash_table *htab)
784
0
{
785
0
  return htab->type == bfd_link_elf_hash_table;
786
0
}
Unexecuted instantiation: fuzz_nm.c:is_elf_hash_table
Unexecuted instantiation: bfd.c:is_elf_hash_table
Unexecuted instantiation: libbfd.c:is_elf_hash_table
Unexecuted instantiation: opncls.c:is_elf_hash_table
Unexecuted instantiation: elf64-x86-64.c:is_elf_hash_table
Unexecuted instantiation: elfxx-x86.c:is_elf_hash_table
Unexecuted instantiation: elf-ifunc.c:is_elf_hash_table
Unexecuted instantiation: elf-vxworks.c:is_elf_hash_table
Unexecuted instantiation: elf64.c:is_elf_hash_table
Unexecuted instantiation: elf.c:is_elf_hash_table
Unexecuted instantiation: elflink.c:is_elf_hash_table
Unexecuted instantiation: elf-attrs.c:is_elf_hash_table
Unexecuted instantiation: elf-strtab.c:is_elf_hash_table
Unexecuted instantiation: elf-eh-frame.c:is_elf_hash_table
Unexecuted instantiation: elf-sframe.c:is_elf_hash_table
Unexecuted instantiation: dwarf1.c:is_elf_hash_table
Unexecuted instantiation: dwarf2.c:is_elf_hash_table
Unexecuted instantiation: elf32-i386.c:is_elf_hash_table
Unexecuted instantiation: elf32.c:is_elf_hash_table
Unexecuted instantiation: cofflink.c:is_elf_hash_table
Unexecuted instantiation: coffgen.c:is_elf_hash_table
Unexecuted instantiation: elf64-gen.c:is_elf_hash_table
Unexecuted instantiation: elf32-gen.c:is_elf_hash_table
Unexecuted instantiation: elf32-aarch64.c:is_elf_hash_table
Unexecuted instantiation: elf32-ia64.c:is_elf_hash_table
Unexecuted instantiation: elf32-kvx.c:is_elf_hash_table
Unexecuted instantiation: elf32-loongarch.c:is_elf_hash_table
Unexecuted instantiation: elf32-mips.c:is_elf_hash_table
Unexecuted instantiation: elf32-riscv.c:is_elf_hash_table
Unexecuted instantiation: elf32-score.c:is_elf_hash_table
Unexecuted instantiation: elf32-score7.c:is_elf_hash_table
Unexecuted instantiation: elf64-aarch64.c:is_elf_hash_table
Unexecuted instantiation: elf64-alpha.c:is_elf_hash_table
Unexecuted instantiation: elf64-amdgcn.c:is_elf_hash_table
Unexecuted instantiation: elf64-bpf.c:is_elf_hash_table
Unexecuted instantiation: elf64-hppa.c:is_elf_hash_table
Unexecuted instantiation: elf64-ia64-vms.c:is_elf_hash_table
Unexecuted instantiation: elf64-ia64.c:is_elf_hash_table
Unexecuted instantiation: elf64-kvx.c:is_elf_hash_table
Unexecuted instantiation: elf64-loongarch.c:is_elf_hash_table
Unexecuted instantiation: elf64-mips.c:is_elf_hash_table
Unexecuted instantiation: elf64-mmix.c:is_elf_hash_table
Unexecuted instantiation: elf64-nfp.c:is_elf_hash_table
Unexecuted instantiation: elf64-ppc.c:is_elf_hash_table
Unexecuted instantiation: elf64-riscv.c:is_elf_hash_table
Unexecuted instantiation: elf64-s390.c:is_elf_hash_table
Unexecuted instantiation: elf64-sparc.c:is_elf_hash_table
Unexecuted instantiation: elf64-tilegx.c:is_elf_hash_table
Unexecuted instantiation: elfn32-mips.c:is_elf_hash_table
Unexecuted instantiation: elfxx-aarch64.c:is_elf_hash_table
Unexecuted instantiation: elfxx-ia64.c:is_elf_hash_table
Unexecuted instantiation: elfxx-kvx.c:is_elf_hash_table
Unexecuted instantiation: elfxx-loongarch.c:is_elf_hash_table
Unexecuted instantiation: elfxx-mips.c:is_elf_hash_table
Unexecuted instantiation: elfxx-riscv.c:is_elf_hash_table
Unexecuted instantiation: elf-m10200.c:is_elf_hash_table
Unexecuted instantiation: elf-m10300.c:is_elf_hash_table
Unexecuted instantiation: elf32-am33lin.c:is_elf_hash_table
Unexecuted instantiation: elf32-arc.c:is_elf_hash_table
Unexecuted instantiation: elf32-arm.c:is_elf_hash_table
Unexecuted instantiation: elf32-avr.c:is_elf_hash_table
Unexecuted instantiation: elf32-bfin.c:is_elf_hash_table
Unexecuted instantiation: elf32-cr16.c:is_elf_hash_table
Unexecuted instantiation: elf32-cris.c:is_elf_hash_table
Unexecuted instantiation: elf32-crx.c:is_elf_hash_table
Unexecuted instantiation: elf32-csky.c:is_elf_hash_table
Unexecuted instantiation: elf32-d10v.c:is_elf_hash_table
Unexecuted instantiation: elf32-d30v.c:is_elf_hash_table
Unexecuted instantiation: elf32-dlx.c:is_elf_hash_table
Unexecuted instantiation: elf32-epiphany.c:is_elf_hash_table
Unexecuted instantiation: elf32-fr30.c:is_elf_hash_table
Unexecuted instantiation: elf32-frv.c:is_elf_hash_table
Unexecuted instantiation: elf32-ft32.c:is_elf_hash_table
Unexecuted instantiation: elf32-h8300.c:is_elf_hash_table
Unexecuted instantiation: elf32-hppa.c:is_elf_hash_table
Unexecuted instantiation: elf32-ip2k.c:is_elf_hash_table
Unexecuted instantiation: elf32-iq2000.c:is_elf_hash_table
Unexecuted instantiation: elf32-lm32.c:is_elf_hash_table
Unexecuted instantiation: elf32-m32c.c:is_elf_hash_table
Unexecuted instantiation: elf32-m32r.c:is_elf_hash_table
Unexecuted instantiation: elf32-m68hc11.c:is_elf_hash_table
Unexecuted instantiation: elf32-m68hc12.c:is_elf_hash_table
Unexecuted instantiation: elf32-m68hc1x.c:is_elf_hash_table
Unexecuted instantiation: elf32-m68k.c:is_elf_hash_table
Unexecuted instantiation: elf32-mcore.c:is_elf_hash_table
Unexecuted instantiation: elf32-mep.c:is_elf_hash_table
Unexecuted instantiation: elf32-metag.c:is_elf_hash_table
Unexecuted instantiation: elf32-microblaze.c:is_elf_hash_table
Unexecuted instantiation: elf32-moxie.c:is_elf_hash_table
Unexecuted instantiation: elf32-msp430.c:is_elf_hash_table
Unexecuted instantiation: elf32-mt.c:is_elf_hash_table
Unexecuted instantiation: elf32-nds32.c:is_elf_hash_table
Unexecuted instantiation: elf32-or1k.c:is_elf_hash_table
Unexecuted instantiation: elf32-pj.c:is_elf_hash_table
Unexecuted instantiation: elf32-ppc.c:is_elf_hash_table
Unexecuted instantiation: elf32-pru.c:is_elf_hash_table
Unexecuted instantiation: elf32-rl78.c:is_elf_hash_table
Unexecuted instantiation: elf32-rx.c:is_elf_hash_table
Unexecuted instantiation: elf32-s12z.c:is_elf_hash_table
Unexecuted instantiation: elf32-s390.c:is_elf_hash_table
Unexecuted instantiation: elf32-sh.c:is_elf_hash_table
Unexecuted instantiation: elf32-sparc.c:is_elf_hash_table
Unexecuted instantiation: elf32-spu.c:is_elf_hash_table
Unexecuted instantiation: elf32-tic6x.c:is_elf_hash_table
Unexecuted instantiation: elf32-tilegx.c:is_elf_hash_table
Unexecuted instantiation: elf32-tilepro.c:is_elf_hash_table
Unexecuted instantiation: elf32-v850.c:is_elf_hash_table
Unexecuted instantiation: elf32-vax.c:is_elf_hash_table
Unexecuted instantiation: elf32-visium.c:is_elf_hash_table
Unexecuted instantiation: elf32-wasm32.c:is_elf_hash_table
Unexecuted instantiation: elf32-xgate.c:is_elf_hash_table
Unexecuted instantiation: elf32-xstormy16.c:is_elf_hash_table
Unexecuted instantiation: elf32-xtensa.c:is_elf_hash_table
Unexecuted instantiation: elf32-z80.c:is_elf_hash_table
Unexecuted instantiation: elfxx-sparc.c:is_elf_hash_table
Unexecuted instantiation: elfxx-tilegx.c:is_elf_hash_table
Unexecuted instantiation: cpu-nds32.c:is_elf_hash_table
Unexecuted instantiation: compress.c:is_elf_hash_table
Unexecuted instantiation: elf-properties.c:is_elf_hash_table
Unexecuted instantiation: merge.c:is_elf_hash_table
Unexecuted instantiation: elf-nacl.c:is_elf_hash_table
Unexecuted instantiation: fuzz_objdump.c:is_elf_hash_table
Unexecuted instantiation: arc-dis.c:is_elf_hash_table
Unexecuted instantiation: arm-dis.c:is_elf_hash_table
Unexecuted instantiation: csky-dis.c:is_elf_hash_table
Unexecuted instantiation: kvx-dis.c:is_elf_hash_table
Unexecuted instantiation: m32c-dis.c:is_elf_hash_table
Unexecuted instantiation: mep-dis.c:is_elf_hash_table
Unexecuted instantiation: ppc-dis.c:is_elf_hash_table
Unexecuted instantiation: pru-dis.c:is_elf_hash_table
Unexecuted instantiation: rl78-dis.c:is_elf_hash_table
Unexecuted instantiation: score-dis.c:is_elf_hash_table
Unexecuted instantiation: score7-dis.c:is_elf_hash_table
Unexecuted instantiation: tilepro-dis.c:is_elf_hash_table
Unexecuted instantiation: wasm32-dis.c:is_elf_hash_table
Unexecuted instantiation: aarch64-dis.c:is_elf_hash_table
Unexecuted instantiation: bpf-dis.c:is_elf_hash_table
Unexecuted instantiation: mips-dis.c:is_elf_hash_table
Unexecuted instantiation: nfp-dis.c:is_elf_hash_table
Unexecuted instantiation: riscv-dis.c:is_elf_hash_table
Unexecuted instantiation: tilegx-dis.c:is_elf_hash_table
Unexecuted instantiation: ctf-serialize.c:is_elf_hash_table
Unexecuted instantiation: ctf-open-bfd.c:is_elf_hash_table
Unexecuted instantiation: fuzz_addr2line.c:is_elf_hash_table
Unexecuted instantiation: fuzz_as.c:is_elf_hash_table
Unexecuted instantiation: codeview.c:is_elf_hash_table
Unexecuted instantiation: cond.c:is_elf_hash_table
Unexecuted instantiation: depend.c:is_elf_hash_table
Unexecuted instantiation: dw2gencfi.c:is_elf_hash_table
Unexecuted instantiation: dwarf2dbg.c:is_elf_hash_table
Unexecuted instantiation: ehopt.c:is_elf_hash_table
Unexecuted instantiation: expr.c:is_elf_hash_table
Unexecuted instantiation: frags.c:is_elf_hash_table
Unexecuted instantiation: gen-sframe.c:is_elf_hash_table
Unexecuted instantiation: input-scrub.c:is_elf_hash_table
Unexecuted instantiation: listing.c:is_elf_hash_table
Unexecuted instantiation: macro.c:is_elf_hash_table
Unexecuted instantiation: messages.c:is_elf_hash_table
Unexecuted instantiation: output-file.c:is_elf_hash_table
Unexecuted instantiation: read.c:is_elf_hash_table
Unexecuted instantiation: remap.c:is_elf_hash_table
Unexecuted instantiation: sb.c:is_elf_hash_table
Unexecuted instantiation: scfidw2gen.c:is_elf_hash_table
Unexecuted instantiation: stabs.c:is_elf_hash_table
Unexecuted instantiation: subsegs.c:is_elf_hash_table
Unexecuted instantiation: symbols.c:is_elf_hash_table
Unexecuted instantiation: write.c:is_elf_hash_table
Unexecuted instantiation: app.c:is_elf_hash_table
Unexecuted instantiation: atof-generic.c:is_elf_hash_table
Unexecuted instantiation: ecoff.c:is_elf_hash_table
Unexecuted instantiation: flonum-copy.c:is_elf_hash_table
Unexecuted instantiation: ginsn.c:is_elf_hash_table
Unexecuted instantiation: hash.c:is_elf_hash_table
Unexecuted instantiation: input-file.c:is_elf_hash_table
Unexecuted instantiation: scfi.c:is_elf_hash_table
Unexecuted instantiation: sframe-opt.c:is_elf_hash_table
Unexecuted instantiation: tc-i386.c:is_elf_hash_table
Unexecuted instantiation: obj-elf.c:is_elf_hash_table
Unexecuted instantiation: atof-ieee.c:is_elf_hash_table
Unexecuted instantiation: fuzz_dwarf.c:is_elf_hash_table
Unexecuted instantiation: fuzz_objcopy.c:is_elf_hash_table
787
788
/* Look up an entry in an ELF linker hash table.  */
789
790
static inline struct elf_link_hash_entry *
791
elf_link_hash_lookup (struct elf_link_hash_table *table, const char *string,
792
          bool create, bool copy, bool follow)
793
0
{
794
0
  if (ENABLE_CHECKING && !is_elf_hash_table (&table->root))
795
0
    abort ();
796
0
  return (struct elf_link_hash_entry *)
797
0
    bfd_link_hash_lookup (&table->root, string, create, copy, follow);
798
0
}
Unexecuted instantiation: fuzz_nm.c:elf_link_hash_lookup
Unexecuted instantiation: bfd.c:elf_link_hash_lookup
Unexecuted instantiation: libbfd.c:elf_link_hash_lookup
Unexecuted instantiation: opncls.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-x86-64.c:elf_link_hash_lookup
Unexecuted instantiation: elfxx-x86.c:elf_link_hash_lookup
Unexecuted instantiation: elf-ifunc.c:elf_link_hash_lookup
Unexecuted instantiation: elf-vxworks.c:elf_link_hash_lookup
Unexecuted instantiation: elf64.c:elf_link_hash_lookup
Unexecuted instantiation: elf.c:elf_link_hash_lookup
Unexecuted instantiation: elflink.c:elf_link_hash_lookup
Unexecuted instantiation: elf-attrs.c:elf_link_hash_lookup
Unexecuted instantiation: elf-strtab.c:elf_link_hash_lookup
Unexecuted instantiation: elf-eh-frame.c:elf_link_hash_lookup
Unexecuted instantiation: elf-sframe.c:elf_link_hash_lookup
Unexecuted instantiation: dwarf1.c:elf_link_hash_lookup
Unexecuted instantiation: dwarf2.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-i386.c:elf_link_hash_lookup
Unexecuted instantiation: elf32.c:elf_link_hash_lookup
Unexecuted instantiation: cofflink.c:elf_link_hash_lookup
Unexecuted instantiation: coffgen.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-gen.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-gen.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-aarch64.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-ia64.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-kvx.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-loongarch.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-mips.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-riscv.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-score.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-score7.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-aarch64.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-alpha.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-amdgcn.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-bpf.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-hppa.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-ia64-vms.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-ia64.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-kvx.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-loongarch.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-mips.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-mmix.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-nfp.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-ppc.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-riscv.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-s390.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-sparc.c:elf_link_hash_lookup
Unexecuted instantiation: elf64-tilegx.c:elf_link_hash_lookup
Unexecuted instantiation: elfn32-mips.c:elf_link_hash_lookup
Unexecuted instantiation: elfxx-aarch64.c:elf_link_hash_lookup
Unexecuted instantiation: elfxx-ia64.c:elf_link_hash_lookup
Unexecuted instantiation: elfxx-kvx.c:elf_link_hash_lookup
Unexecuted instantiation: elfxx-loongarch.c:elf_link_hash_lookup
Unexecuted instantiation: elfxx-mips.c:elf_link_hash_lookup
Unexecuted instantiation: elfxx-riscv.c:elf_link_hash_lookup
Unexecuted instantiation: elf-m10200.c:elf_link_hash_lookup
Unexecuted instantiation: elf-m10300.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-am33lin.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-arc.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-arm.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-avr.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-bfin.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-cr16.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-cris.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-crx.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-csky.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-d10v.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-d30v.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-dlx.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-epiphany.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-fr30.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-frv.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-ft32.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-h8300.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-hppa.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-ip2k.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-iq2000.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-lm32.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-m32c.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-m32r.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-m68hc11.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-m68hc12.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-m68hc1x.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-m68k.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-mcore.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-mep.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-metag.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-microblaze.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-moxie.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-msp430.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-mt.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-nds32.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-or1k.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-pj.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-ppc.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-pru.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-rl78.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-rx.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-s12z.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-s390.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-sh.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-sparc.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-spu.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-tic6x.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-tilegx.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-tilepro.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-v850.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-vax.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-visium.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-wasm32.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-xgate.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-xstormy16.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-xtensa.c:elf_link_hash_lookup
Unexecuted instantiation: elf32-z80.c:elf_link_hash_lookup
Unexecuted instantiation: elfxx-sparc.c:elf_link_hash_lookup
Unexecuted instantiation: elfxx-tilegx.c:elf_link_hash_lookup
Unexecuted instantiation: cpu-nds32.c:elf_link_hash_lookup
Unexecuted instantiation: compress.c:elf_link_hash_lookup
Unexecuted instantiation: elf-properties.c:elf_link_hash_lookup
Unexecuted instantiation: merge.c:elf_link_hash_lookup
Unexecuted instantiation: elf-nacl.c:elf_link_hash_lookup
Unexecuted instantiation: fuzz_objdump.c:elf_link_hash_lookup
Unexecuted instantiation: arc-dis.c:elf_link_hash_lookup
Unexecuted instantiation: arm-dis.c:elf_link_hash_lookup
Unexecuted instantiation: csky-dis.c:elf_link_hash_lookup
Unexecuted instantiation: kvx-dis.c:elf_link_hash_lookup
Unexecuted instantiation: m32c-dis.c:elf_link_hash_lookup
Unexecuted instantiation: mep-dis.c:elf_link_hash_lookup
Unexecuted instantiation: ppc-dis.c:elf_link_hash_lookup
Unexecuted instantiation: pru-dis.c:elf_link_hash_lookup
Unexecuted instantiation: rl78-dis.c:elf_link_hash_lookup
Unexecuted instantiation: score-dis.c:elf_link_hash_lookup
Unexecuted instantiation: score7-dis.c:elf_link_hash_lookup
Unexecuted instantiation: tilepro-dis.c:elf_link_hash_lookup
Unexecuted instantiation: wasm32-dis.c:elf_link_hash_lookup
Unexecuted instantiation: aarch64-dis.c:elf_link_hash_lookup
Unexecuted instantiation: bpf-dis.c:elf_link_hash_lookup
Unexecuted instantiation: mips-dis.c:elf_link_hash_lookup
Unexecuted instantiation: nfp-dis.c:elf_link_hash_lookup
Unexecuted instantiation: riscv-dis.c:elf_link_hash_lookup
Unexecuted instantiation: tilegx-dis.c:elf_link_hash_lookup
Unexecuted instantiation: ctf-serialize.c:elf_link_hash_lookup
Unexecuted instantiation: ctf-open-bfd.c:elf_link_hash_lookup
Unexecuted instantiation: fuzz_addr2line.c:elf_link_hash_lookup
Unexecuted instantiation: fuzz_as.c:elf_link_hash_lookup
Unexecuted instantiation: codeview.c:elf_link_hash_lookup
Unexecuted instantiation: cond.c:elf_link_hash_lookup
Unexecuted instantiation: depend.c:elf_link_hash_lookup
Unexecuted instantiation: dw2gencfi.c:elf_link_hash_lookup
Unexecuted instantiation: dwarf2dbg.c:elf_link_hash_lookup
Unexecuted instantiation: ehopt.c:elf_link_hash_lookup
Unexecuted instantiation: expr.c:elf_link_hash_lookup
Unexecuted instantiation: frags.c:elf_link_hash_lookup
Unexecuted instantiation: gen-sframe.c:elf_link_hash_lookup
Unexecuted instantiation: input-scrub.c:elf_link_hash_lookup
Unexecuted instantiation: listing.c:elf_link_hash_lookup
Unexecuted instantiation: macro.c:elf_link_hash_lookup
Unexecuted instantiation: messages.c:elf_link_hash_lookup
Unexecuted instantiation: output-file.c:elf_link_hash_lookup
Unexecuted instantiation: read.c:elf_link_hash_lookup
Unexecuted instantiation: remap.c:elf_link_hash_lookup
Unexecuted instantiation: sb.c:elf_link_hash_lookup
Unexecuted instantiation: scfidw2gen.c:elf_link_hash_lookup
Unexecuted instantiation: stabs.c:elf_link_hash_lookup
Unexecuted instantiation: subsegs.c:elf_link_hash_lookup
Unexecuted instantiation: symbols.c:elf_link_hash_lookup
Unexecuted instantiation: write.c:elf_link_hash_lookup
Unexecuted instantiation: app.c:elf_link_hash_lookup
Unexecuted instantiation: atof-generic.c:elf_link_hash_lookup
Unexecuted instantiation: ecoff.c:elf_link_hash_lookup
Unexecuted instantiation: flonum-copy.c:elf_link_hash_lookup
Unexecuted instantiation: ginsn.c:elf_link_hash_lookup
Unexecuted instantiation: hash.c:elf_link_hash_lookup
Unexecuted instantiation: input-file.c:elf_link_hash_lookup
Unexecuted instantiation: scfi.c:elf_link_hash_lookup
Unexecuted instantiation: sframe-opt.c:elf_link_hash_lookup
Unexecuted instantiation: tc-i386.c:elf_link_hash_lookup
Unexecuted instantiation: obj-elf.c:elf_link_hash_lookup
Unexecuted instantiation: atof-ieee.c:elf_link_hash_lookup
Unexecuted instantiation: fuzz_dwarf.c:elf_link_hash_lookup
Unexecuted instantiation: fuzz_objcopy.c:elf_link_hash_lookup
799
800
/* Traverse an ELF linker hash table.  */
801
802
static inline void
803
elf_link_hash_traverse (struct elf_link_hash_table *table,
804
      bool (*f) (struct elf_link_hash_entry *, void *),
805
      void *info)
806
0
{
807
0
  if (ENABLE_CHECKING && !is_elf_hash_table (&table->root))
808
0
    abort ();
809
0
  bfd_link_hash_traverse (&table->root,
810
0
        (bool (*) (struct bfd_link_hash_entry *, void *)) f,
811
0
        info);
812
0
}
Unexecuted instantiation: fuzz_nm.c:elf_link_hash_traverse
Unexecuted instantiation: bfd.c:elf_link_hash_traverse
Unexecuted instantiation: libbfd.c:elf_link_hash_traverse
Unexecuted instantiation: opncls.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-x86-64.c:elf_link_hash_traverse
Unexecuted instantiation: elfxx-x86.c:elf_link_hash_traverse
Unexecuted instantiation: elf-ifunc.c:elf_link_hash_traverse
Unexecuted instantiation: elf-vxworks.c:elf_link_hash_traverse
Unexecuted instantiation: elf64.c:elf_link_hash_traverse
Unexecuted instantiation: elf.c:elf_link_hash_traverse
Unexecuted instantiation: elflink.c:elf_link_hash_traverse
Unexecuted instantiation: elf-attrs.c:elf_link_hash_traverse
Unexecuted instantiation: elf-strtab.c:elf_link_hash_traverse
Unexecuted instantiation: elf-eh-frame.c:elf_link_hash_traverse
Unexecuted instantiation: elf-sframe.c:elf_link_hash_traverse
Unexecuted instantiation: dwarf1.c:elf_link_hash_traverse
Unexecuted instantiation: dwarf2.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-i386.c:elf_link_hash_traverse
Unexecuted instantiation: elf32.c:elf_link_hash_traverse
Unexecuted instantiation: cofflink.c:elf_link_hash_traverse
Unexecuted instantiation: coffgen.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-gen.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-gen.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-aarch64.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-ia64.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-kvx.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-loongarch.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-mips.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-riscv.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-score.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-score7.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-aarch64.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-alpha.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-amdgcn.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-bpf.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-hppa.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-ia64-vms.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-ia64.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-kvx.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-loongarch.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-mips.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-mmix.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-nfp.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-ppc.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-riscv.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-s390.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-sparc.c:elf_link_hash_traverse
Unexecuted instantiation: elf64-tilegx.c:elf_link_hash_traverse
Unexecuted instantiation: elfn32-mips.c:elf_link_hash_traverse
Unexecuted instantiation: elfxx-aarch64.c:elf_link_hash_traverse
Unexecuted instantiation: elfxx-ia64.c:elf_link_hash_traverse
Unexecuted instantiation: elfxx-kvx.c:elf_link_hash_traverse
Unexecuted instantiation: elfxx-loongarch.c:elf_link_hash_traverse
Unexecuted instantiation: elfxx-mips.c:elf_link_hash_traverse
Unexecuted instantiation: elfxx-riscv.c:elf_link_hash_traverse
Unexecuted instantiation: elf-m10200.c:elf_link_hash_traverse
Unexecuted instantiation: elf-m10300.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-am33lin.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-arc.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-arm.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-avr.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-bfin.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-cr16.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-cris.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-crx.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-csky.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-d10v.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-d30v.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-dlx.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-epiphany.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-fr30.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-frv.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-ft32.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-h8300.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-hppa.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-ip2k.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-iq2000.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-lm32.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-m32c.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-m32r.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-m68hc11.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-m68hc12.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-m68hc1x.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-m68k.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-mcore.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-mep.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-metag.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-microblaze.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-moxie.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-msp430.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-mt.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-nds32.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-or1k.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-pj.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-ppc.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-pru.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-rl78.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-rx.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-s12z.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-s390.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-sh.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-sparc.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-spu.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-tic6x.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-tilegx.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-tilepro.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-v850.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-vax.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-visium.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-wasm32.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-xgate.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-xstormy16.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-xtensa.c:elf_link_hash_traverse
Unexecuted instantiation: elf32-z80.c:elf_link_hash_traverse
Unexecuted instantiation: elfxx-sparc.c:elf_link_hash_traverse
Unexecuted instantiation: elfxx-tilegx.c:elf_link_hash_traverse
Unexecuted instantiation: cpu-nds32.c:elf_link_hash_traverse
Unexecuted instantiation: compress.c:elf_link_hash_traverse
Unexecuted instantiation: elf-properties.c:elf_link_hash_traverse
Unexecuted instantiation: merge.c:elf_link_hash_traverse
Unexecuted instantiation: elf-nacl.c:elf_link_hash_traverse
Unexecuted instantiation: fuzz_objdump.c:elf_link_hash_traverse
Unexecuted instantiation: arc-dis.c:elf_link_hash_traverse
Unexecuted instantiation: arm-dis.c:elf_link_hash_traverse
Unexecuted instantiation: csky-dis.c:elf_link_hash_traverse
Unexecuted instantiation: kvx-dis.c:elf_link_hash_traverse
Unexecuted instantiation: m32c-dis.c:elf_link_hash_traverse
Unexecuted instantiation: mep-dis.c:elf_link_hash_traverse
Unexecuted instantiation: ppc-dis.c:elf_link_hash_traverse
Unexecuted instantiation: pru-dis.c:elf_link_hash_traverse
Unexecuted instantiation: rl78-dis.c:elf_link_hash_traverse
Unexecuted instantiation: score-dis.c:elf_link_hash_traverse
Unexecuted instantiation: score7-dis.c:elf_link_hash_traverse
Unexecuted instantiation: tilepro-dis.c:elf_link_hash_traverse
Unexecuted instantiation: wasm32-dis.c:elf_link_hash_traverse
Unexecuted instantiation: aarch64-dis.c:elf_link_hash_traverse
Unexecuted instantiation: bpf-dis.c:elf_link_hash_traverse
Unexecuted instantiation: mips-dis.c:elf_link_hash_traverse
Unexecuted instantiation: nfp-dis.c:elf_link_hash_traverse
Unexecuted instantiation: riscv-dis.c:elf_link_hash_traverse
Unexecuted instantiation: tilegx-dis.c:elf_link_hash_traverse
Unexecuted instantiation: ctf-serialize.c:elf_link_hash_traverse
Unexecuted instantiation: ctf-open-bfd.c:elf_link_hash_traverse
Unexecuted instantiation: fuzz_addr2line.c:elf_link_hash_traverse
Unexecuted instantiation: fuzz_as.c:elf_link_hash_traverse
Unexecuted instantiation: codeview.c:elf_link_hash_traverse
Unexecuted instantiation: cond.c:elf_link_hash_traverse
Unexecuted instantiation: depend.c:elf_link_hash_traverse
Unexecuted instantiation: dw2gencfi.c:elf_link_hash_traverse
Unexecuted instantiation: dwarf2dbg.c:elf_link_hash_traverse
Unexecuted instantiation: ehopt.c:elf_link_hash_traverse
Unexecuted instantiation: expr.c:elf_link_hash_traverse
Unexecuted instantiation: frags.c:elf_link_hash_traverse
Unexecuted instantiation: gen-sframe.c:elf_link_hash_traverse
Unexecuted instantiation: input-scrub.c:elf_link_hash_traverse
Unexecuted instantiation: listing.c:elf_link_hash_traverse
Unexecuted instantiation: macro.c:elf_link_hash_traverse
Unexecuted instantiation: messages.c:elf_link_hash_traverse
Unexecuted instantiation: output-file.c:elf_link_hash_traverse
Unexecuted instantiation: read.c:elf_link_hash_traverse
Unexecuted instantiation: remap.c:elf_link_hash_traverse
Unexecuted instantiation: sb.c:elf_link_hash_traverse
Unexecuted instantiation: scfidw2gen.c:elf_link_hash_traverse
Unexecuted instantiation: stabs.c:elf_link_hash_traverse
Unexecuted instantiation: subsegs.c:elf_link_hash_traverse
Unexecuted instantiation: symbols.c:elf_link_hash_traverse
Unexecuted instantiation: write.c:elf_link_hash_traverse
Unexecuted instantiation: app.c:elf_link_hash_traverse
Unexecuted instantiation: atof-generic.c:elf_link_hash_traverse
Unexecuted instantiation: ecoff.c:elf_link_hash_traverse
Unexecuted instantiation: flonum-copy.c:elf_link_hash_traverse
Unexecuted instantiation: ginsn.c:elf_link_hash_traverse
Unexecuted instantiation: hash.c:elf_link_hash_traverse
Unexecuted instantiation: input-file.c:elf_link_hash_traverse
Unexecuted instantiation: scfi.c:elf_link_hash_traverse
Unexecuted instantiation: sframe-opt.c:elf_link_hash_traverse
Unexecuted instantiation: tc-i386.c:elf_link_hash_traverse
Unexecuted instantiation: obj-elf.c:elf_link_hash_traverse
Unexecuted instantiation: atof-ieee.c:elf_link_hash_traverse
Unexecuted instantiation: fuzz_dwarf.c:elf_link_hash_traverse
Unexecuted instantiation: fuzz_objcopy.c:elf_link_hash_traverse
813
814
/* Get the ELF linker hash table from a link_info structure.  */
815
816
static inline struct elf_link_hash_table *
817
elf_hash_table (const struct bfd_link_info *info)
818
0
{
819
0
  return (struct elf_link_hash_table *) info->hash;
820
0
}
Unexecuted instantiation: fuzz_nm.c:elf_hash_table
Unexecuted instantiation: bfd.c:elf_hash_table
Unexecuted instantiation: libbfd.c:elf_hash_table
Unexecuted instantiation: opncls.c:elf_hash_table
Unexecuted instantiation: elf64-x86-64.c:elf_hash_table
Unexecuted instantiation: elfxx-x86.c:elf_hash_table
Unexecuted instantiation: elf-ifunc.c:elf_hash_table
Unexecuted instantiation: elf-vxworks.c:elf_hash_table
Unexecuted instantiation: elf64.c:elf_hash_table
Unexecuted instantiation: elf.c:elf_hash_table
Unexecuted instantiation: elflink.c:elf_hash_table
Unexecuted instantiation: elf-attrs.c:elf_hash_table
Unexecuted instantiation: elf-strtab.c:elf_hash_table
Unexecuted instantiation: elf-eh-frame.c:elf_hash_table
Unexecuted instantiation: elf-sframe.c:elf_hash_table
Unexecuted instantiation: dwarf1.c:elf_hash_table
Unexecuted instantiation: dwarf2.c:elf_hash_table
Unexecuted instantiation: elf32-i386.c:elf_hash_table
Unexecuted instantiation: elf32.c:elf_hash_table
Unexecuted instantiation: cofflink.c:elf_hash_table
Unexecuted instantiation: coffgen.c:elf_hash_table
Unexecuted instantiation: elf64-gen.c:elf_hash_table
Unexecuted instantiation: elf32-gen.c:elf_hash_table
Unexecuted instantiation: elf32-aarch64.c:elf_hash_table
Unexecuted instantiation: elf32-ia64.c:elf_hash_table
Unexecuted instantiation: elf32-kvx.c:elf_hash_table
Unexecuted instantiation: elf32-loongarch.c:elf_hash_table
Unexecuted instantiation: elf32-mips.c:elf_hash_table
Unexecuted instantiation: elf32-riscv.c:elf_hash_table
Unexecuted instantiation: elf32-score.c:elf_hash_table
Unexecuted instantiation: elf32-score7.c:elf_hash_table
Unexecuted instantiation: elf64-aarch64.c:elf_hash_table
Unexecuted instantiation: elf64-alpha.c:elf_hash_table
Unexecuted instantiation: elf64-amdgcn.c:elf_hash_table
Unexecuted instantiation: elf64-bpf.c:elf_hash_table
Unexecuted instantiation: elf64-hppa.c:elf_hash_table
Unexecuted instantiation: elf64-ia64-vms.c:elf_hash_table
Unexecuted instantiation: elf64-ia64.c:elf_hash_table
Unexecuted instantiation: elf64-kvx.c:elf_hash_table
Unexecuted instantiation: elf64-loongarch.c:elf_hash_table
Unexecuted instantiation: elf64-mips.c:elf_hash_table
Unexecuted instantiation: elf64-mmix.c:elf_hash_table
Unexecuted instantiation: elf64-nfp.c:elf_hash_table
Unexecuted instantiation: elf64-ppc.c:elf_hash_table
Unexecuted instantiation: elf64-riscv.c:elf_hash_table
Unexecuted instantiation: elf64-s390.c:elf_hash_table
Unexecuted instantiation: elf64-sparc.c:elf_hash_table
Unexecuted instantiation: elf64-tilegx.c:elf_hash_table
Unexecuted instantiation: elfn32-mips.c:elf_hash_table
Unexecuted instantiation: elfxx-aarch64.c:elf_hash_table
Unexecuted instantiation: elfxx-ia64.c:elf_hash_table
Unexecuted instantiation: elfxx-kvx.c:elf_hash_table
Unexecuted instantiation: elfxx-loongarch.c:elf_hash_table
Unexecuted instantiation: elfxx-mips.c:elf_hash_table
Unexecuted instantiation: elfxx-riscv.c:elf_hash_table
Unexecuted instantiation: elf-m10200.c:elf_hash_table
Unexecuted instantiation: elf-m10300.c:elf_hash_table
Unexecuted instantiation: elf32-am33lin.c:elf_hash_table
Unexecuted instantiation: elf32-arc.c:elf_hash_table
Unexecuted instantiation: elf32-arm.c:elf_hash_table
Unexecuted instantiation: elf32-avr.c:elf_hash_table
Unexecuted instantiation: elf32-bfin.c:elf_hash_table
Unexecuted instantiation: elf32-cr16.c:elf_hash_table
Unexecuted instantiation: elf32-cris.c:elf_hash_table
Unexecuted instantiation: elf32-crx.c:elf_hash_table
Unexecuted instantiation: elf32-csky.c:elf_hash_table
Unexecuted instantiation: elf32-d10v.c:elf_hash_table
Unexecuted instantiation: elf32-d30v.c:elf_hash_table
Unexecuted instantiation: elf32-dlx.c:elf_hash_table
Unexecuted instantiation: elf32-epiphany.c:elf_hash_table
Unexecuted instantiation: elf32-fr30.c:elf_hash_table
Unexecuted instantiation: elf32-frv.c:elf_hash_table
Unexecuted instantiation: elf32-ft32.c:elf_hash_table
Unexecuted instantiation: elf32-h8300.c:elf_hash_table
Unexecuted instantiation: elf32-hppa.c:elf_hash_table
Unexecuted instantiation: elf32-ip2k.c:elf_hash_table
Unexecuted instantiation: elf32-iq2000.c:elf_hash_table
Unexecuted instantiation: elf32-lm32.c:elf_hash_table
Unexecuted instantiation: elf32-m32c.c:elf_hash_table
Unexecuted instantiation: elf32-m32r.c:elf_hash_table
Unexecuted instantiation: elf32-m68hc11.c:elf_hash_table
Unexecuted instantiation: elf32-m68hc12.c:elf_hash_table
Unexecuted instantiation: elf32-m68hc1x.c:elf_hash_table
Unexecuted instantiation: elf32-m68k.c:elf_hash_table
Unexecuted instantiation: elf32-mcore.c:elf_hash_table
Unexecuted instantiation: elf32-mep.c:elf_hash_table
Unexecuted instantiation: elf32-metag.c:elf_hash_table
Unexecuted instantiation: elf32-microblaze.c:elf_hash_table
Unexecuted instantiation: elf32-moxie.c:elf_hash_table
Unexecuted instantiation: elf32-msp430.c:elf_hash_table
Unexecuted instantiation: elf32-mt.c:elf_hash_table
Unexecuted instantiation: elf32-nds32.c:elf_hash_table
Unexecuted instantiation: elf32-or1k.c:elf_hash_table
Unexecuted instantiation: elf32-pj.c:elf_hash_table
Unexecuted instantiation: elf32-ppc.c:elf_hash_table
Unexecuted instantiation: elf32-pru.c:elf_hash_table
Unexecuted instantiation: elf32-rl78.c:elf_hash_table
Unexecuted instantiation: elf32-rx.c:elf_hash_table
Unexecuted instantiation: elf32-s12z.c:elf_hash_table
Unexecuted instantiation: elf32-s390.c:elf_hash_table
Unexecuted instantiation: elf32-sh.c:elf_hash_table
Unexecuted instantiation: elf32-sparc.c:elf_hash_table
Unexecuted instantiation: elf32-spu.c:elf_hash_table
Unexecuted instantiation: elf32-tic6x.c:elf_hash_table
Unexecuted instantiation: elf32-tilegx.c:elf_hash_table
Unexecuted instantiation: elf32-tilepro.c:elf_hash_table
Unexecuted instantiation: elf32-v850.c:elf_hash_table
Unexecuted instantiation: elf32-vax.c:elf_hash_table
Unexecuted instantiation: elf32-visium.c:elf_hash_table
Unexecuted instantiation: elf32-wasm32.c:elf_hash_table
Unexecuted instantiation: elf32-xgate.c:elf_hash_table
Unexecuted instantiation: elf32-xstormy16.c:elf_hash_table
Unexecuted instantiation: elf32-xtensa.c:elf_hash_table
Unexecuted instantiation: elf32-z80.c:elf_hash_table
Unexecuted instantiation: elfxx-sparc.c:elf_hash_table
Unexecuted instantiation: elfxx-tilegx.c:elf_hash_table
Unexecuted instantiation: cpu-nds32.c:elf_hash_table
Unexecuted instantiation: compress.c:elf_hash_table
Unexecuted instantiation: elf-properties.c:elf_hash_table
Unexecuted instantiation: merge.c:elf_hash_table
Unexecuted instantiation: elf-nacl.c:elf_hash_table
Unexecuted instantiation: fuzz_objdump.c:elf_hash_table
Unexecuted instantiation: arc-dis.c:elf_hash_table
Unexecuted instantiation: arm-dis.c:elf_hash_table
Unexecuted instantiation: csky-dis.c:elf_hash_table
Unexecuted instantiation: kvx-dis.c:elf_hash_table
Unexecuted instantiation: m32c-dis.c:elf_hash_table
Unexecuted instantiation: mep-dis.c:elf_hash_table
Unexecuted instantiation: ppc-dis.c:elf_hash_table
Unexecuted instantiation: pru-dis.c:elf_hash_table
Unexecuted instantiation: rl78-dis.c:elf_hash_table
Unexecuted instantiation: score-dis.c:elf_hash_table
Unexecuted instantiation: score7-dis.c:elf_hash_table
Unexecuted instantiation: tilepro-dis.c:elf_hash_table
Unexecuted instantiation: wasm32-dis.c:elf_hash_table
Unexecuted instantiation: aarch64-dis.c:elf_hash_table
Unexecuted instantiation: bpf-dis.c:elf_hash_table
Unexecuted instantiation: mips-dis.c:elf_hash_table
Unexecuted instantiation: nfp-dis.c:elf_hash_table
Unexecuted instantiation: riscv-dis.c:elf_hash_table
Unexecuted instantiation: tilegx-dis.c:elf_hash_table
Unexecuted instantiation: ctf-serialize.c:elf_hash_table
Unexecuted instantiation: ctf-open-bfd.c:elf_hash_table
Unexecuted instantiation: fuzz_addr2line.c:elf_hash_table
Unexecuted instantiation: fuzz_as.c:elf_hash_table
Unexecuted instantiation: codeview.c:elf_hash_table
Unexecuted instantiation: cond.c:elf_hash_table
Unexecuted instantiation: depend.c:elf_hash_table
Unexecuted instantiation: dw2gencfi.c:elf_hash_table
Unexecuted instantiation: dwarf2dbg.c:elf_hash_table
Unexecuted instantiation: ehopt.c:elf_hash_table
Unexecuted instantiation: expr.c:elf_hash_table
Unexecuted instantiation: frags.c:elf_hash_table
Unexecuted instantiation: gen-sframe.c:elf_hash_table
Unexecuted instantiation: input-scrub.c:elf_hash_table
Unexecuted instantiation: listing.c:elf_hash_table
Unexecuted instantiation: macro.c:elf_hash_table
Unexecuted instantiation: messages.c:elf_hash_table
Unexecuted instantiation: output-file.c:elf_hash_table
Unexecuted instantiation: read.c:elf_hash_table
Unexecuted instantiation: remap.c:elf_hash_table
Unexecuted instantiation: sb.c:elf_hash_table
Unexecuted instantiation: scfidw2gen.c:elf_hash_table
Unexecuted instantiation: stabs.c:elf_hash_table
Unexecuted instantiation: subsegs.c:elf_hash_table
Unexecuted instantiation: symbols.c:elf_hash_table
Unexecuted instantiation: write.c:elf_hash_table
Unexecuted instantiation: app.c:elf_hash_table
Unexecuted instantiation: atof-generic.c:elf_hash_table
Unexecuted instantiation: ecoff.c:elf_hash_table
Unexecuted instantiation: flonum-copy.c:elf_hash_table
Unexecuted instantiation: ginsn.c:elf_hash_table
Unexecuted instantiation: hash.c:elf_hash_table
Unexecuted instantiation: input-file.c:elf_hash_table
Unexecuted instantiation: scfi.c:elf_hash_table
Unexecuted instantiation: sframe-opt.c:elf_hash_table
Unexecuted instantiation: tc-i386.c:elf_hash_table
Unexecuted instantiation: obj-elf.c:elf_hash_table
Unexecuted instantiation: atof-ieee.c:elf_hash_table
Unexecuted instantiation: fuzz_dwarf.c:elf_hash_table
Unexecuted instantiation: fuzz_objcopy.c:elf_hash_table
821
822
static inline enum elf_target_id
823
elf_hash_table_id (const struct elf_link_hash_table *table)
824
0
{
825
0
  return table->hash_table_id;
826
0
}
Unexecuted instantiation: fuzz_nm.c:elf_hash_table_id
Unexecuted instantiation: bfd.c:elf_hash_table_id
Unexecuted instantiation: libbfd.c:elf_hash_table_id
Unexecuted instantiation: opncls.c:elf_hash_table_id
Unexecuted instantiation: elf64-x86-64.c:elf_hash_table_id
Unexecuted instantiation: elfxx-x86.c:elf_hash_table_id
Unexecuted instantiation: elf-ifunc.c:elf_hash_table_id
Unexecuted instantiation: elf-vxworks.c:elf_hash_table_id
Unexecuted instantiation: elf64.c:elf_hash_table_id
Unexecuted instantiation: elf.c:elf_hash_table_id
Unexecuted instantiation: elflink.c:elf_hash_table_id
Unexecuted instantiation: elf-attrs.c:elf_hash_table_id
Unexecuted instantiation: elf-strtab.c:elf_hash_table_id
Unexecuted instantiation: elf-eh-frame.c:elf_hash_table_id
Unexecuted instantiation: elf-sframe.c:elf_hash_table_id
Unexecuted instantiation: dwarf1.c:elf_hash_table_id
Unexecuted instantiation: dwarf2.c:elf_hash_table_id
Unexecuted instantiation: elf32-i386.c:elf_hash_table_id
Unexecuted instantiation: elf32.c:elf_hash_table_id
Unexecuted instantiation: cofflink.c:elf_hash_table_id
Unexecuted instantiation: coffgen.c:elf_hash_table_id
Unexecuted instantiation: elf64-gen.c:elf_hash_table_id
Unexecuted instantiation: elf32-gen.c:elf_hash_table_id
Unexecuted instantiation: elf32-aarch64.c:elf_hash_table_id
Unexecuted instantiation: elf32-ia64.c:elf_hash_table_id
Unexecuted instantiation: elf32-kvx.c:elf_hash_table_id
Unexecuted instantiation: elf32-loongarch.c:elf_hash_table_id
Unexecuted instantiation: elf32-mips.c:elf_hash_table_id
Unexecuted instantiation: elf32-riscv.c:elf_hash_table_id
Unexecuted instantiation: elf32-score.c:elf_hash_table_id
Unexecuted instantiation: elf32-score7.c:elf_hash_table_id
Unexecuted instantiation: elf64-aarch64.c:elf_hash_table_id
Unexecuted instantiation: elf64-alpha.c:elf_hash_table_id
Unexecuted instantiation: elf64-amdgcn.c:elf_hash_table_id
Unexecuted instantiation: elf64-bpf.c:elf_hash_table_id
Unexecuted instantiation: elf64-hppa.c:elf_hash_table_id
Unexecuted instantiation: elf64-ia64-vms.c:elf_hash_table_id
Unexecuted instantiation: elf64-ia64.c:elf_hash_table_id
Unexecuted instantiation: elf64-kvx.c:elf_hash_table_id
Unexecuted instantiation: elf64-loongarch.c:elf_hash_table_id
Unexecuted instantiation: elf64-mips.c:elf_hash_table_id
Unexecuted instantiation: elf64-mmix.c:elf_hash_table_id
Unexecuted instantiation: elf64-nfp.c:elf_hash_table_id
Unexecuted instantiation: elf64-ppc.c:elf_hash_table_id
Unexecuted instantiation: elf64-riscv.c:elf_hash_table_id
Unexecuted instantiation: elf64-s390.c:elf_hash_table_id
Unexecuted instantiation: elf64-sparc.c:elf_hash_table_id
Unexecuted instantiation: elf64-tilegx.c:elf_hash_table_id
Unexecuted instantiation: elfn32-mips.c:elf_hash_table_id
Unexecuted instantiation: elfxx-aarch64.c:elf_hash_table_id
Unexecuted instantiation: elfxx-ia64.c:elf_hash_table_id
Unexecuted instantiation: elfxx-kvx.c:elf_hash_table_id
Unexecuted instantiation: elfxx-loongarch.c:elf_hash_table_id
Unexecuted instantiation: elfxx-mips.c:elf_hash_table_id
Unexecuted instantiation: elfxx-riscv.c:elf_hash_table_id
Unexecuted instantiation: elf-m10200.c:elf_hash_table_id
Unexecuted instantiation: elf-m10300.c:elf_hash_table_id
Unexecuted instantiation: elf32-am33lin.c:elf_hash_table_id
Unexecuted instantiation: elf32-arc.c:elf_hash_table_id
Unexecuted instantiation: elf32-arm.c:elf_hash_table_id
Unexecuted instantiation: elf32-avr.c:elf_hash_table_id
Unexecuted instantiation: elf32-bfin.c:elf_hash_table_id
Unexecuted instantiation: elf32-cr16.c:elf_hash_table_id
Unexecuted instantiation: elf32-cris.c:elf_hash_table_id
Unexecuted instantiation: elf32-crx.c:elf_hash_table_id
Unexecuted instantiation: elf32-csky.c:elf_hash_table_id
Unexecuted instantiation: elf32-d10v.c:elf_hash_table_id
Unexecuted instantiation: elf32-d30v.c:elf_hash_table_id
Unexecuted instantiation: elf32-dlx.c:elf_hash_table_id
Unexecuted instantiation: elf32-epiphany.c:elf_hash_table_id
Unexecuted instantiation: elf32-fr30.c:elf_hash_table_id
Unexecuted instantiation: elf32-frv.c:elf_hash_table_id
Unexecuted instantiation: elf32-ft32.c:elf_hash_table_id
Unexecuted instantiation: elf32-h8300.c:elf_hash_table_id
Unexecuted instantiation: elf32-hppa.c:elf_hash_table_id
Unexecuted instantiation: elf32-ip2k.c:elf_hash_table_id
Unexecuted instantiation: elf32-iq2000.c:elf_hash_table_id
Unexecuted instantiation: elf32-lm32.c:elf_hash_table_id
Unexecuted instantiation: elf32-m32c.c:elf_hash_table_id
Unexecuted instantiation: elf32-m32r.c:elf_hash_table_id
Unexecuted instantiation: elf32-m68hc11.c:elf_hash_table_id
Unexecuted instantiation: elf32-m68hc12.c:elf_hash_table_id
Unexecuted instantiation: elf32-m68hc1x.c:elf_hash_table_id
Unexecuted instantiation: elf32-m68k.c:elf_hash_table_id
Unexecuted instantiation: elf32-mcore.c:elf_hash_table_id
Unexecuted instantiation: elf32-mep.c:elf_hash_table_id
Unexecuted instantiation: elf32-metag.c:elf_hash_table_id
Unexecuted instantiation: elf32-microblaze.c:elf_hash_table_id
Unexecuted instantiation: elf32-moxie.c:elf_hash_table_id
Unexecuted instantiation: elf32-msp430.c:elf_hash_table_id
Unexecuted instantiation: elf32-mt.c:elf_hash_table_id
Unexecuted instantiation: elf32-nds32.c:elf_hash_table_id
Unexecuted instantiation: elf32-or1k.c:elf_hash_table_id
Unexecuted instantiation: elf32-pj.c:elf_hash_table_id
Unexecuted instantiation: elf32-ppc.c:elf_hash_table_id
Unexecuted instantiation: elf32-pru.c:elf_hash_table_id
Unexecuted instantiation: elf32-rl78.c:elf_hash_table_id
Unexecuted instantiation: elf32-rx.c:elf_hash_table_id
Unexecuted instantiation: elf32-s12z.c:elf_hash_table_id
Unexecuted instantiation: elf32-s390.c:elf_hash_table_id
Unexecuted instantiation: elf32-sh.c:elf_hash_table_id
Unexecuted instantiation: elf32-sparc.c:elf_hash_table_id
Unexecuted instantiation: elf32-spu.c:elf_hash_table_id
Unexecuted instantiation: elf32-tic6x.c:elf_hash_table_id
Unexecuted instantiation: elf32-tilegx.c:elf_hash_table_id
Unexecuted instantiation: elf32-tilepro.c:elf_hash_table_id
Unexecuted instantiation: elf32-v850.c:elf_hash_table_id
Unexecuted instantiation: elf32-vax.c:elf_hash_table_id
Unexecuted instantiation: elf32-visium.c:elf_hash_table_id
Unexecuted instantiation: elf32-wasm32.c:elf_hash_table_id
Unexecuted instantiation: elf32-xgate.c:elf_hash_table_id
Unexecuted instantiation: elf32-xstormy16.c:elf_hash_table_id
Unexecuted instantiation: elf32-xtensa.c:elf_hash_table_id
Unexecuted instantiation: elf32-z80.c:elf_hash_table_id
Unexecuted instantiation: elfxx-sparc.c:elf_hash_table_id
Unexecuted instantiation: elfxx-tilegx.c:elf_hash_table_id
Unexecuted instantiation: cpu-nds32.c:elf_hash_table_id
Unexecuted instantiation: compress.c:elf_hash_table_id
Unexecuted instantiation: elf-properties.c:elf_hash_table_id
Unexecuted instantiation: merge.c:elf_hash_table_id
Unexecuted instantiation: elf-nacl.c:elf_hash_table_id
Unexecuted instantiation: fuzz_objdump.c:elf_hash_table_id
Unexecuted instantiation: arc-dis.c:elf_hash_table_id
Unexecuted instantiation: arm-dis.c:elf_hash_table_id
Unexecuted instantiation: csky-dis.c:elf_hash_table_id
Unexecuted instantiation: kvx-dis.c:elf_hash_table_id
Unexecuted instantiation: m32c-dis.c:elf_hash_table_id
Unexecuted instantiation: mep-dis.c:elf_hash_table_id
Unexecuted instantiation: ppc-dis.c:elf_hash_table_id
Unexecuted instantiation: pru-dis.c:elf_hash_table_id
Unexecuted instantiation: rl78-dis.c:elf_hash_table_id
Unexecuted instantiation: score-dis.c:elf_hash_table_id
Unexecuted instantiation: score7-dis.c:elf_hash_table_id
Unexecuted instantiation: tilepro-dis.c:elf_hash_table_id
Unexecuted instantiation: wasm32-dis.c:elf_hash_table_id
Unexecuted instantiation: aarch64-dis.c:elf_hash_table_id
Unexecuted instantiation: bpf-dis.c:elf_hash_table_id
Unexecuted instantiation: mips-dis.c:elf_hash_table_id
Unexecuted instantiation: nfp-dis.c:elf_hash_table_id
Unexecuted instantiation: riscv-dis.c:elf_hash_table_id
Unexecuted instantiation: tilegx-dis.c:elf_hash_table_id
Unexecuted instantiation: ctf-serialize.c:elf_hash_table_id
Unexecuted instantiation: ctf-open-bfd.c:elf_hash_table_id
Unexecuted instantiation: fuzz_addr2line.c:elf_hash_table_id
Unexecuted instantiation: fuzz_as.c:elf_hash_table_id
Unexecuted instantiation: codeview.c:elf_hash_table_id
Unexecuted instantiation: cond.c:elf_hash_table_id
Unexecuted instantiation: depend.c:elf_hash_table_id
Unexecuted instantiation: dw2gencfi.c:elf_hash_table_id
Unexecuted instantiation: dwarf2dbg.c:elf_hash_table_id
Unexecuted instantiation: ehopt.c:elf_hash_table_id
Unexecuted instantiation: expr.c:elf_hash_table_id
Unexecuted instantiation: frags.c:elf_hash_table_id
Unexecuted instantiation: gen-sframe.c:elf_hash_table_id
Unexecuted instantiation: input-scrub.c:elf_hash_table_id
Unexecuted instantiation: listing.c:elf_hash_table_id
Unexecuted instantiation: macro.c:elf_hash_table_id
Unexecuted instantiation: messages.c:elf_hash_table_id
Unexecuted instantiation: output-file.c:elf_hash_table_id
Unexecuted instantiation: read.c:elf_hash_table_id
Unexecuted instantiation: remap.c:elf_hash_table_id
Unexecuted instantiation: sb.c:elf_hash_table_id
Unexecuted instantiation: scfidw2gen.c:elf_hash_table_id
Unexecuted instantiation: stabs.c:elf_hash_table_id
Unexecuted instantiation: subsegs.c:elf_hash_table_id
Unexecuted instantiation: symbols.c:elf_hash_table_id
Unexecuted instantiation: write.c:elf_hash_table_id
Unexecuted instantiation: app.c:elf_hash_table_id
Unexecuted instantiation: atof-generic.c:elf_hash_table_id
Unexecuted instantiation: ecoff.c:elf_hash_table_id
Unexecuted instantiation: flonum-copy.c:elf_hash_table_id
Unexecuted instantiation: ginsn.c:elf_hash_table_id
Unexecuted instantiation: hash.c:elf_hash_table_id
Unexecuted instantiation: input-file.c:elf_hash_table_id
Unexecuted instantiation: scfi.c:elf_hash_table_id
Unexecuted instantiation: sframe-opt.c:elf_hash_table_id
Unexecuted instantiation: tc-i386.c:elf_hash_table_id
Unexecuted instantiation: obj-elf.c:elf_hash_table_id
Unexecuted instantiation: atof-ieee.c:elf_hash_table_id
Unexecuted instantiation: fuzz_dwarf.c:elf_hash_table_id
Unexecuted instantiation: fuzz_objcopy.c:elf_hash_table_id
827

828
/* Constant information held for an ELF backend.  */
829
830
struct elf_size_info {
831
  unsigned char sizeof_ehdr, sizeof_phdr, sizeof_shdr;
832
  unsigned char sizeof_rel, sizeof_rela, sizeof_sym, sizeof_dyn, sizeof_note;
833
834
  /* The size of entries in the .hash section.  */
835
  unsigned char sizeof_hash_entry;
836
837
  /* The number of internal relocations to allocate per external
838
     relocation entry.  */
839
  unsigned char int_rels_per_ext_rel;
840
  /* We use some fixed size arrays.  This should be large enough to
841
     handle all back-ends.  */
842
0
#define MAX_INT_RELS_PER_EXT_REL 3
843
844
  unsigned char arch_size, log_file_align;
845
  unsigned char elfclass, ev_current;
846
  int (*write_out_phdrs)
847
    (bfd *, const Elf_Internal_Phdr *, unsigned int);
848
  bool (*write_shdrs_and_ehdr) (bfd *);
849
  bool (*checksum_contents)
850
    (bfd * , void (*) (const void *, size_t, void *), void *);
851
  void (*write_relocs)
852
    (bfd *, asection *, void *);
853
  bool (*swap_symbol_in)
854
    (bfd *, const void *, const void *, Elf_Internal_Sym *);
855
  void (*swap_symbol_out)
856
    (bfd *, const Elf_Internal_Sym *, void *, void *);
857
  bool (*slurp_reloc_table)
858
    (bfd *, asection *, asymbol **, bool);
859
  long (*slurp_symbol_table)
860
    (bfd *, asymbol **, bool);
861
  void (*swap_dyn_in)
862
    (bfd *, const void *, Elf_Internal_Dyn *);
863
  void (*swap_dyn_out)
864
    (bfd *, const Elf_Internal_Dyn *, void *);
865
866
  /* This function is called to swap in a REL relocation.  If an
867
     external relocation corresponds to more than one internal
868
     relocation, then all relocations are swapped in at once.  */
869
  void (*swap_reloc_in)
870
    (bfd *, const bfd_byte *, Elf_Internal_Rela *);
871
872
  /* This function is called to swap out a REL relocation.  */
873
  void (*swap_reloc_out)
874
    (bfd *, const Elf_Internal_Rela *, bfd_byte *);
875
876
  /* This function is called to swap in a RELA relocation.  If an
877
     external relocation corresponds to more than one internal
878
     relocation, then all relocations are swapped in at once.  */
879
  void (*swap_reloca_in)
880
    (bfd *, const bfd_byte *, Elf_Internal_Rela *);
881
882
  /* This function is called to swap out a RELA relocation.  */
883
  void (*swap_reloca_out)
884
    (bfd *, const Elf_Internal_Rela *, bfd_byte *);
885
};
886
887
#define elf_symbol_from(S) \
888
1.21M
  ((((S)->flags & BSF_SYNTHETIC) == 0        \
889
1.21M
    && (S)->the_bfd != NULL          \
890
1.21M
    && (S)->the_bfd->xvec->flavour == bfd_target_elf_flavour  \
891
1.21M
    && (S)->the_bfd->tdata.elf_obj_data != 0)     \
892
1.21M
   ? (elf_symbol_type *) (S)          \
893
1.21M
   : 0)
894
895
enum elf_reloc_type_class {
896
  reloc_class_normal,
897
  reloc_class_relative,
898
  reloc_class_copy,
899
  reloc_class_ifunc,
900
  reloc_class_plt
901
};
902
903
struct elf_reloc_cookie
904
{
905
  Elf_Internal_Rela *rels, *rel, *relend;
906
  Elf_Internal_Sym *locsyms;
907
  bfd *abfd;
908
  size_t locsymcount;
909
  size_t extsymoff;
910
  struct elf_link_hash_entry **sym_hashes;
911
  int r_sym_shift;
912
  bool bad_symtab;
913
};
914
915
/* The level of IRIX compatibility we're striving for.  */
916
917
typedef enum {
918
  ict_none,
919
  ict_irix5,
920
  ict_irix6
921
} irix_compat_t;
922
923
/* Mapping of ELF section names and types.  */
924
struct bfd_elf_special_section
925
{
926
  const char *prefix;
927
  unsigned int prefix_length;
928
  /* 0 means name must match PREFIX exactly.
929
     -1 means name must start with PREFIX followed by an arbitrary string.
930
     -2 means name must match PREFIX exactly or consist of PREFIX followed
931
     by a dot then anything.
932
     > 0 means name must start with the first PREFIX_LENGTH chars of
933
     PREFIX and finish with the last SUFFIX_LENGTH chars of PREFIX.  */
934
  signed int suffix_length;
935
  unsigned int type;
936
  bfd_vma attr;
937
};
938
939
enum action_discarded
940
  {
941
    COMPLAIN = 1,
942
    PRETEND = 2
943
  };
944
945
typedef asection * (*elf_gc_mark_hook_fn)
946
  (asection *, struct bfd_link_info *, Elf_Internal_Rela *,
947
   struct elf_link_hash_entry *, Elf_Internal_Sym *);
948
949
enum elf_property_kind
950
 {
951
    /* A new property.  */
952
    property_unknown = 0,
953
    /* A property ignored by backend.  */
954
    property_ignored,
955
    /* A corrupt property reported by backend.  */
956
    property_corrupt,
957
    /* A property should be removed due to property merge.  */
958
    property_remove,
959
    /* A property which is a number.  */
960
    property_number
961
 };
962
963
typedef struct elf_property
964
{
965
  unsigned int pr_type;
966
  unsigned int pr_datasz;
967
  union
968
    {
969
      /* For property_number, this is a number.  */
970
      bfd_vma number;
971
      /* Add a new one if elf_property_kind is updated.  */
972
    } u;
973
  enum elf_property_kind pr_kind;
974
} elf_property;
975
976
typedef struct elf_property_list
977
{
978
  struct elf_property_list *next;
979
  struct elf_property property;
980
} elf_property_list;
981
982
/* This structure is used to pass information to
983
   elf_backend_add_glibc_version_dependency.  */
984
985
struct elf_find_verdep_info
986
{
987
  /* General link information.  */
988
  struct bfd_link_info *info;
989
  /* The number of dependencies.  */
990
  unsigned int vers;
991
  /* Whether we had a failure.  */
992
  bool failed;
993
};
994
995
struct bfd_elf_section_reloc_data;
996
997
struct elf_backend_data
998
{
999
  /* The architecture for this backend.  */
1000
  enum bfd_architecture arch;
1001
1002
  /* An identifier used to distinguish different target specific
1003
     extensions to elf_obj_tdata and elf_link_hash_table structures.  */
1004
  enum elf_target_id target_id;
1005
1006
  /* Target OS.  */
1007
  enum elf_target_os target_os;
1008
1009
  /* The ELF machine code (EM_xxxx) for this backend.  */
1010
  int elf_machine_code;
1011
1012
  /* EI_OSABI.  */
1013
  int elf_osabi;
1014
1015
  /* The maximum page size for this backend.  */
1016
  bfd_vma maxpagesize;
1017
1018
  /* The minimum page size for this backend.  An input object will not be
1019
     considered page aligned unless its sections are correctly aligned for
1020
     pages at least this large.  May be smaller than maxpagesize.  */
1021
  bfd_vma minpagesize;
1022
1023
  /* The common page size for this backend.  */
1024
  bfd_vma commonpagesize;
1025
1026
  /* The p_align value for this backend.  If it is set, p_align of
1027
      PT_LOAD alignment will be to p_align by default.  */
1028
  bfd_vma p_align;
1029
1030
  /* The BFD flags applied to sections created for dynamic linking.  */
1031
  flagword dynamic_sec_flags;
1032
1033
  /* Architecture-specific data for this backend.
1034
     This is actually a pointer to some type like struct elf_ARCH_data.  */
1035
  const void *arch_data;
1036
1037
  /* A function to translate an ELF RELA relocation to a BFD arelent
1038
     structure.  Returns TRUE upon success, FALSE otherwise.  */
1039
  bool (*elf_info_to_howto)
1040
    (bfd *, arelent *, Elf_Internal_Rela *);
1041
1042
  /* A function to translate an ELF REL relocation to a BFD arelent
1043
     structure.  Returns TRUE upon success, FALSE otherwise.  */
1044
  bool (*elf_info_to_howto_rel)
1045
    (bfd *, arelent *, Elf_Internal_Rela *);
1046
1047
  /* A function to determine whether a symbol is global when
1048
     partitioning the symbol table into local and global symbols.
1049
     This should be NULL for most targets, in which case the correct
1050
     thing will be done.  MIPS ELF, at least on the Irix 5, has
1051
     special requirements.  */
1052
  bool (*elf_backend_sym_is_global)
1053
    (bfd *, asymbol *);
1054
1055
  /* The remaining functions are hooks which are called only if they
1056
     are not NULL.  */
1057
1058
  /* A function to permit a backend specific check on whether a
1059
     particular BFD format is relevant for an object file, and to
1060
     permit the backend to set any global information it wishes.  When
1061
     this is called elf_elfheader is set, but anything else should be
1062
     used with caution.  If this returns FALSE, the check_format
1063
     routine will return a bfd_error_wrong_format error.  */
1064
  bool (*elf_backend_object_p)
1065
    (bfd *);
1066
1067
  /* A function to do additional symbol processing when reading the
1068
     ELF symbol table.  This is where any processor-specific special
1069
     section indices are handled.  */
1070
  void (*elf_backend_symbol_processing)
1071
    (bfd *, asymbol *);
1072
1073
  /* A function to do additional symbol processing after reading the
1074
     entire ELF symbol table.  */
1075
  bool (*elf_backend_symbol_table_processing)
1076
    (bfd *, elf_symbol_type *, unsigned int);
1077
1078
  /* A function to set the type of the info field.  Processor-specific
1079
     types should be handled here.  */
1080
  int (*elf_backend_get_symbol_type)
1081
    (Elf_Internal_Sym *, int);
1082
1083
  /* A function to return the linker hash table entry of a symbol that
1084
     might be satisfied by an archive symbol.  */
1085
  struct bfd_link_hash_entry * (*elf_backend_archive_symbol_lookup)
1086
    (bfd *, struct bfd_link_info *, const char *);
1087
1088
  /* Return true if local section symbols should have a non-null st_name.
1089
     NULL implies false.  */
1090
  bool (*elf_backend_name_local_section_symbols)
1091
    (bfd *);
1092
1093
  /* A function to do additional processing on the ELF section header
1094
     just before writing it out.  This is used to set the flags and
1095
     type fields for some sections, or to actually write out data for
1096
     unusual sections.  */
1097
  bool (*elf_backend_section_processing)
1098
    (bfd *, Elf_Internal_Shdr *);
1099
1100
  /* A function to handle unusual section types when creating BFD
1101
     sections from ELF sections.  */
1102
  bool (*elf_backend_section_from_shdr)
1103
    (bfd *, Elf_Internal_Shdr *, const char *, int);
1104
1105
  /* A function to convert machine dependent ELF section header flags to
1106
     BFD internal section header flags.  */
1107
  bool (*elf_backend_section_flags)
1108
    (const Elf_Internal_Shdr *);
1109
1110
  /* A function that returns a struct containing ELF section flags and
1111
     type for the given BFD section.   */
1112
  const struct bfd_elf_special_section * (*get_sec_type_attr)
1113
    (bfd *, asection *);
1114
1115
  /* A function to handle unusual program segment types when creating BFD
1116
     sections from ELF program segments.  */
1117
  bool (*elf_backend_section_from_phdr)
1118
    (bfd *, Elf_Internal_Phdr *, int, const char *);
1119
1120
  /* A function to set up the ELF section header for a BFD section in
1121
     preparation for writing it out.  This is where the flags and type
1122
     fields are set for unusual sections.  */
1123
  bool (*elf_backend_fake_sections)
1124
    (bfd *, Elf_Internal_Shdr *, asection *);
1125
1126
  /* A function to get the ELF section index for a BFD section.  If
1127
     this returns TRUE, the section was found.  If it is a normal ELF
1128
     section, *RETVAL should be left unchanged.  If it is not a normal
1129
     ELF section *RETVAL should be set to the SHN_xxxx index.  */
1130
  bool (*elf_backend_section_from_bfd_section)
1131
    (bfd *, asection *, int *retval);
1132
1133
  /* If this field is not NULL, it is called by the add_symbols phase
1134
     of a link just before adding a symbol to the global linker hash
1135
     table.  It may modify any of the fields as it wishes.  If *NAME
1136
     is set to NULL, the symbol will be skipped rather than being
1137
     added to the hash table.  This function is responsible for
1138
     handling all processor dependent symbol bindings and section
1139
     indices, and must set at least *FLAGS and *SEC for each processor
1140
     dependent case; failure to do so will cause a link error.  */
1141
  bool (*elf_add_symbol_hook)
1142
    (bfd *abfd, struct bfd_link_info *info, Elf_Internal_Sym *,
1143
     const char **name, flagword *flags, asection **sec, bfd_vma *value);
1144
1145
  /* If this field is not NULL, it is called by the elf_link_output_sym
1146
     phase of a link for each symbol which will appear in the object file.
1147
     On error, this function returns 0.  1 is returned when the symbol
1148
     should be output, 2 is returned when the symbol should be discarded.  */
1149
  int (*elf_backend_link_output_symbol_hook)
1150
    (struct bfd_link_info *info, const char *, Elf_Internal_Sym *,
1151
     asection *, struct elf_link_hash_entry *);
1152
1153
  /* The CREATE_DYNAMIC_SECTIONS function is called by the ELF backend
1154
     linker the first time it encounters a dynamic object in the link.
1155
     This function must create any sections required for dynamic
1156
     linking.  The ABFD argument is a dynamic object.  The .interp,
1157
     .dynamic, .dynsym, .dynstr, and .hash functions have already been
1158
     created, and this function may modify the section flags if
1159
     desired.  This function will normally create the .got and .plt
1160
     sections, but different backends have different requirements.  */
1161
  bool (*elf_backend_create_dynamic_sections)
1162
    (bfd *abfd, struct bfd_link_info *info);
1163
1164
  /* When creating a shared library, determine whether to omit the
1165
     dynamic symbol for the section.  */
1166
  bool (*elf_backend_omit_section_dynsym)
1167
    (bfd *output_bfd, struct bfd_link_info *info, asection *osec);
1168
1169
  /* Return TRUE if relocations of targets are compatible to the extent
1170
     that CHECK_RELOCS will properly process them.  PR 4424.  */
1171
  bool (*relocs_compatible) (const bfd_target *, const bfd_target *);
1172
1173
  /* The CHECK_RELOCS function is called after all input files have been
1174
     opened.  It is called once for each section with relocs of an object
1175
     file.  The function must look through the relocs and do any special
1176
     handling required.  This generally means allocating space in the
1177
     global offset table, and perhaps allocating space for a reloc.  The
1178
     relocs are always passed as Rela structures; if the section
1179
     actually uses Rel structures, the r_addend field will always be
1180
     zero.  */
1181
  bool (*check_relocs)
1182
    (bfd *abfd, struct bfd_link_info *info, asection *o,
1183
     const Elf_Internal_Rela *relocs);
1184
1185
  /* The SIZE_RELATIVE_RELOCS function is called to size relative
1186
     relocations when mappig sections to segments.  */
1187
  bool (*size_relative_relocs)
1188
    (struct bfd_link_info *info, bool *need_layout);
1189
1190
  /* The FINISH_RELATIVE_RELOCS function is called to finish relative
1191
     relocations in bfd_elf_final_link.  */
1192
  bool (*finish_relative_relocs)
1193
    (struct bfd_link_info *info);
1194
1195
  /* The CHECK_DIRECTIVES function is called once per input file by
1196
     the add_symbols phase of the ELF backend linker.  The function
1197
     must inspect the bfd and create any additional symbols according
1198
     to any custom directives in the bfd.  */
1199
  bool (*check_directives)
1200
    (bfd *abfd, struct bfd_link_info *info);
1201
1202
  /* The NOTICE_AS_NEEDED function is called as the linker is about to
1203
     handle an as-needed lib (ACT = notice_as_needed), and after the
1204
     linker has decided to keep the lib (ACT = notice_needed) or when
1205
     the lib is not needed (ACT = notice_not_needed).  */
1206
  bool (*notice_as_needed)
1207
    (bfd *abfd, struct bfd_link_info *info, enum notice_asneeded_action act);
1208
1209
  /* The ADJUST_DYNAMIC_SYMBOL function is called by the ELF backend
1210
     linker for every symbol which is defined by a dynamic object and
1211
     referenced by a regular object.  This is called after all the
1212
     input files have been seen, but before the LATE_SIZE_SECTIONS
1213
     function has been called.  The hash table entry should be
1214
     bfd_link_hash_defined ore bfd_link_hash_defweak, and it should be
1215
     defined in a section from a dynamic object.  Dynamic object
1216
     sections are not included in the final link, and this function is
1217
     responsible for changing the value to something which the rest of
1218
     the link can deal with.  This will normally involve adding an
1219
     entry to the .plt or .got or some such section, and setting the
1220
     symbol to point to that.  */
1221
  bool (*elf_backend_adjust_dynamic_symbol)
1222
    (struct bfd_link_info *info, struct elf_link_hash_entry *h);
1223
1224
  /* The EARLY_SIZE_SECTIONS and LATE_SIZE_SECTIONS functions are
1225
     called by the backend linker after all linker input files have
1226
     been seen and sections have been assigned to output sections, but
1227
     before the section sizes have been set.  Both of these functions
1228
     are called even when no dynamic object is seen by the linker.
1229
     Between them, they must set the sizes of the dynamic sections and
1230
     other backend specific sections, and may fill in their contents.
1231
     Most backends need only use LATE_SIZE_SECTIONS.
1232
     EARLY_SIZE_SECTIONS is called before --export-dynamic makes some
1233
     symbols dynamic and before ADJUST_DYNAMIC_SYMBOL processes
1234
     dynamic symbols, LATE_SIZE_SECTIONS afterwards.  The generic ELF
1235
     linker can handle the .dynsym, .dynstr and .hash sections.
1236
     Besides those, these functions must handle the .interp section
1237
     and any other sections created by CREATE_DYNAMIC_SECTIONS.  */
1238
  bool (*elf_backend_early_size_sections)
1239
    (bfd *output_bfd, struct bfd_link_info *info);
1240
  bool (*elf_backend_late_size_sections)
1241
    (bfd *output_bfd, struct bfd_link_info *info);
1242
1243
  /* The STRIP_ZERO_SIZED_DYNAMIC_SECTIONS function is called by the
1244
     ELF backend linker to strip zero-sized dynamic sections after
1245
     the section sizes have been set.  */
1246
  bool (*elf_backend_strip_zero_sized_dynamic_sections)
1247
    (struct bfd_link_info *info);
1248
1249
  /* Set TEXT_INDEX_SECTION and DATA_INDEX_SECTION, the output sections
1250
     we keep to use as a base for relocs and symbols.  */
1251
  void (*elf_backend_init_index_section)
1252
    (bfd *output_bfd, struct bfd_link_info *info);
1253
1254
  /* The RELOCATE_SECTION function is called by the ELF backend linker
1255
     to handle the relocations for a section.
1256
1257
     The relocs are always passed as Rela structures; if the section
1258
     actually uses Rel structures, the r_addend field will always be
1259
     zero.
1260
1261
     This function is responsible for adjust the section contents as
1262
     necessary, and (if using Rela relocs and generating a
1263
     relocatable output file) adjusting the reloc addend as
1264
     necessary.
1265
1266
     This function does not have to worry about setting the reloc
1267
     address or the reloc symbol index.
1268
1269
     LOCAL_SYMS is a pointer to the swapped in local symbols.
1270
1271
     LOCAL_SECTIONS is an array giving the section in the input file
1272
     corresponding to the st_shndx field of each local symbol.
1273
1274
     The global hash table entry for the global symbols can be found
1275
     via elf_sym_hashes (input_bfd).
1276
1277
     When generating relocatable output, this function must handle
1278
     STB_LOCAL/STT_SECTION symbols specially.  The output symbol is
1279
     going to be the section symbol corresponding to the output
1280
     section, which means that the addend must be adjusted
1281
     accordingly.
1282
1283
     Returns FALSE on error, TRUE on success, 2 if successful and
1284
     relocations should be written for this section.  */
1285
  int (*elf_backend_relocate_section)
1286
    (bfd *output_bfd, struct bfd_link_info *info, bfd *input_bfd,
1287
     asection *input_section, bfd_byte *contents, Elf_Internal_Rela *relocs,
1288
     Elf_Internal_Sym *local_syms, asection **local_sections);
1289
1290
  /* The FINISH_DYNAMIC_SYMBOL function is called by the ELF backend
1291
     linker just before it writes a symbol out to the .dynsym section.
1292
     The processor backend may make any required adjustment to the
1293
     symbol.  It may also take the opportunity to set contents of the
1294
     dynamic sections.  Note that FINISH_DYNAMIC_SYMBOL is called on
1295
     all .dynsym symbols, while ADJUST_DYNAMIC_SYMBOL is only called
1296
     on those symbols which are defined by a dynamic object.  */
1297
  bool (*elf_backend_finish_dynamic_symbol)
1298
    (bfd *output_bfd, struct bfd_link_info *info,
1299
     struct elf_link_hash_entry *h, Elf_Internal_Sym *sym);
1300
1301
  /* The FINISH_DYNAMIC_SECTIONS function is called by the ELF backend
1302
     linker just before it writes all the dynamic sections out to the
1303
     output file.  The FINISH_DYNAMIC_SYMBOL will have been called on
1304
     all dynamic symbols.  */
1305
  bool (*elf_backend_finish_dynamic_sections)
1306
    (bfd *output_bfd, struct bfd_link_info *info);
1307
1308
  /* A function to do any beginning processing needed for the ELF file
1309
     before building the ELF headers and computing file positions.  */
1310
  void (*elf_backend_begin_write_processing)
1311
    (bfd *, struct bfd_link_info *);
1312
1313
  /* A function to do any final processing needed for the ELF file
1314
     before writing it out.  */
1315
  bool (*elf_backend_final_write_processing)
1316
    (bfd *);
1317
1318
  /* This function is called by get_program_header_size.  It should
1319
     return the number of additional program segments which this BFD
1320
     will need.  It should return -1 on error.  */
1321
  int (*elf_backend_additional_program_headers)
1322
    (bfd *, struct bfd_link_info *);
1323
1324
  /* This function is called to modify an existing segment map in a
1325
     backend specific fashion.  */
1326
  bool (*elf_backend_modify_segment_map)
1327
    (bfd *, struct bfd_link_info *);
1328
1329
  /* This function is called to modify program headers just before
1330
     they are written.  */
1331
  bool (*elf_backend_modify_headers)
1332
    (bfd *, struct bfd_link_info *);
1333
1334
  /* This function is called to see if the PHDR header should be
1335
     checked for validity.  */
1336
  bool (*elf_backend_allow_non_load_phdr)
1337
    (bfd *,  const Elf_Internal_Phdr *, unsigned);
1338
1339
  /* This function is called before section garbage collection to
1340
     mark entry symbol sections.  */
1341
  void (*gc_keep)
1342
    (struct bfd_link_info *);
1343
1344
  /* This function is called during section garbage collection to
1345
     mark sections that define global symbols.  */
1346
  bool (*gc_mark_dynamic_ref)
1347
    (struct elf_link_hash_entry *, void *);
1348
1349
  /* This function is called during section gc to discover the section a
1350
     particular relocation refers to.  */
1351
  elf_gc_mark_hook_fn gc_mark_hook;
1352
1353
  /* This function, if defined, is called after the first gc marking pass
1354
     to allow the backend to mark additional sections.  */
1355
  bool (*gc_mark_extra_sections)
1356
    (struct bfd_link_info *, elf_gc_mark_hook_fn);
1357
1358
  /* This function is called to initialise ELF file header info.
1359
     Customised versions can modify things like the OS and ABI version.  */
1360
  bool (*elf_backend_init_file_header)
1361
    (bfd *, struct bfd_link_info *);
1362
1363
  /* This function, if defined, prints a symbol to file and returns the
1364
     name of the symbol to be printed.  It should return NULL to fall
1365
     back to default symbol printing.  */
1366
  const char *(*elf_backend_print_symbol_all)
1367
    (bfd *, void *, asymbol *);
1368
1369
  /* This function, if defined, is called after all local symbols and
1370
     global symbols converted to locals are emitted into the symtab
1371
     section.  It allows the backend to emit special local symbols
1372
     not handled in the hash table.  */
1373
  bool (*elf_backend_output_arch_local_syms)
1374
    (bfd *, struct bfd_link_info *, void *,
1375
     int (*) (void *, const char *, Elf_Internal_Sym *, asection *,
1376
        struct elf_link_hash_entry *));
1377
1378
  /* This function, if defined, is called after all symbols are emitted
1379
     into the symtab section.  It allows the backend to emit special
1380
     global symbols not handled in the hash table.  */
1381
  bool (*elf_backend_output_arch_syms)
1382
    (bfd *, struct bfd_link_info *, void *,
1383
     int (*) (void *, const char *, Elf_Internal_Sym *, asection *,
1384
        struct elf_link_hash_entry *));
1385
1386
  /* Filter what symbols of the output file to include in the import
1387
     library if one is created.  */
1388
  unsigned int (*elf_backend_filter_implib_symbols)
1389
    (bfd *, struct bfd_link_info *, asymbol **, long);
1390
1391
  /* Copy any information related to dynamic linking from a pre-existing
1392
     symbol to a newly created symbol.  Also called to copy flags and
1393
     other back-end info to a weakdef, in which case the symbol is not
1394
     newly created and plt/got refcounts and dynamic indices should not
1395
     be copied.  */
1396
  void (*elf_backend_copy_indirect_symbol)
1397
    (struct bfd_link_info *, struct elf_link_hash_entry *,
1398
     struct elf_link_hash_entry *);
1399
1400
  /* Modify any information related to dynamic linking such that the
1401
     symbol is not exported.  */
1402
  void (*elf_backend_hide_symbol)
1403
    (struct bfd_link_info *, struct elf_link_hash_entry *, bool);
1404
1405
  /* A function to do additional symbol fixup, called by
1406
     _bfd_elf_fix_symbol_flags.  */
1407
  bool (*elf_backend_fixup_symbol)
1408
    (struct bfd_link_info *, struct elf_link_hash_entry *);
1409
1410
  /* Merge the backend specific symbol attribute.  */
1411
  void (*elf_backend_merge_symbol_attribute)
1412
    (struct elf_link_hash_entry *, unsigned int, bool, bool);
1413
1414
  /* This function, if defined, will return a string containing the
1415
     name of a target-specific dynamic tag.  */
1416
  char *(*elf_backend_get_target_dtag)
1417
    (bfd_vma);
1418
1419
  /* Decide whether an undefined symbol is special and can be ignored.
1420
     This is the case for OPTIONAL symbols on IRIX.  */
1421
  bool (*elf_backend_ignore_undef_symbol)
1422
    (struct elf_link_hash_entry *);
1423
1424
  /* Emit relocations.  Overrides default routine for emitting relocs,
1425
     except during a relocatable link, or if all relocs are being emitted.  */
1426
  bool (*elf_backend_emit_relocs)
1427
    (bfd *, asection *, Elf_Internal_Shdr *, Elf_Internal_Rela *,
1428
     struct elf_link_hash_entry **);
1429
1430
  /* Update relocations.  It is allowed to change the number and the order.
1431
     In such a case hashes should be invalidated.  */
1432
  void (*elf_backend_update_relocs)
1433
    (asection *, struct bfd_elf_section_reloc_data *);
1434
1435
  /* Count relocations.  Not called for relocatable links
1436
     or if all relocs are being preserved in the output.  */
1437
  unsigned int (*elf_backend_count_relocs)
1438
    (struct bfd_link_info *, asection *);
1439
1440
  /* Count additionals relocations.  Called for relocatable links if
1441
     additional relocations needs to be created.  */
1442
  unsigned int (*elf_backend_count_additional_relocs)
1443
    (asection *);
1444
1445
  /* Say whether to sort relocs output by ld -r and ld --emit-relocs,
1446
     by r_offset.  If NULL, default to true.  */
1447
  bool (*sort_relocs_p)
1448
    (asection *);
1449
1450
  /* This function, if defined, is called when an NT_PRSTATUS note is found
1451
     in a core file.  */
1452
  bool (*elf_backend_grok_prstatus)
1453
    (bfd *, Elf_Internal_Note *);
1454
1455
  /* This function, if defined, is called when an NT_PSINFO or NT_PRPSINFO
1456
     note is found in a core file.  */
1457
  bool (*elf_backend_grok_psinfo)
1458
    (bfd *, Elf_Internal_Note *);
1459
1460
  /* This function, if defined, is called when a "FreeBSD" NT_PRSTATUS
1461
     note is found in a core file.  */
1462
  bool (*elf_backend_grok_freebsd_prstatus)
1463
    (bfd *, Elf_Internal_Note *);
1464
1465
  /* This function, if defined, is called to write a note to a corefile.  */
1466
  char *(*elf_backend_write_core_note)
1467
    (bfd *abfd, char *buf, int *bufsiz, int note_type, ...);
1468
1469
  /* This function, if defined, is called to convert target-specific
1470
     section flag names into hex values.  */
1471
  flagword (*elf_backend_lookup_section_flags_hook)
1472
    (char *);
1473
1474
  /* This function returns class of a reloc type.  */
1475
  enum elf_reloc_type_class (*elf_backend_reloc_type_class)
1476
  (const struct bfd_link_info *, const asection *, const Elf_Internal_Rela *);
1477
1478
  /* This function, if defined, removes information about discarded functions
1479
     from other sections which mention them.  */
1480
  bool (*elf_backend_discard_info)
1481
    (bfd *, struct elf_reloc_cookie *, struct bfd_link_info *);
1482
1483
  /* This function, if defined, signals that the function above has removed
1484
     the discarded relocations for this section.  */
1485
  bool (*elf_backend_ignore_discarded_relocs)
1486
    (asection *);
1487
1488
  /* What to do when ld finds relocations against symbols defined in
1489
     discarded sections.  */
1490
  unsigned int (*action_discarded)
1491
    (asection *);
1492
1493
  /* This function returns the width of FDE pointers in bytes, or 0 if
1494
     that can't be determined for some reason.  The default definition
1495
     goes by the bfd's EI_CLASS.  */
1496
  unsigned int (*elf_backend_eh_frame_address_size)
1497
    (bfd *, const asection *);
1498
1499
  /* These functions tell elf-eh-frame whether to attempt to turn
1500
     absolute or lsda encodings into pc-relative ones.  The default
1501
     definition enables these transformations.  */
1502
  bool (*elf_backend_can_make_relative_eh_frame)
1503
     (bfd *, struct bfd_link_info *, asection *);
1504
  bool (*elf_backend_can_make_lsda_relative_eh_frame)
1505
     (bfd *, struct bfd_link_info *, asection *);
1506
1507
  /* Tell linker to support multiple eh_frame sections.  */
1508
  bool elf_backend_can_make_multiple_eh_frame;
1509
1510
  /* This function returns an encoding after computing the encoded
1511
     value (and storing it in ENCODED) for the given OFFSET into OSEC,
1512
     to be stored in at LOC_OFFSET into the LOC_SEC input section.
1513
     The default definition chooses a 32-bit PC-relative encoding.  */
1514
  bfd_byte (*elf_backend_encode_eh_address)
1515
     (bfd *abfd, struct bfd_link_info *info,
1516
      asection *osec, bfd_vma offset,
1517
      asection *loc_sec, bfd_vma loc_offset,
1518
      bfd_vma *encoded);
1519
1520
  /* This function, if defined, may write out the given section.
1521
     Returns TRUE if it did so and FALSE if the caller should.  */
1522
  bool (*elf_backend_write_section)
1523
    (bfd *, struct bfd_link_info *, asection *, bfd_byte *);
1524
1525
  /* This function adds glibc version dependency.  */
1526
  void (*elf_backend_add_glibc_version_dependency)
1527
    (struct elf_find_verdep_info *);
1528
1529
  /* This function, if defined, returns TRUE if it is section symbols
1530
     only that are considered local for the purpose of partitioning the
1531
     symbol table into local and global symbols.  This should be NULL
1532
     for most targets, in which case the correct thing will be done.
1533
     MIPS ELF, at least on the Irix 5, has special requirements.  */
1534
  bool (*elf_backend_elfsym_local_is_section)
1535
    (bfd *);
1536
1537
  /* The level of IRIX compatibility we're striving for.
1538
     MIPS ELF specific function.  */
1539
  irix_compat_t (*elf_backend_mips_irix_compat)
1540
    (bfd *);
1541
1542
  reloc_howto_type *(*elf_backend_mips_rtype_to_howto)
1543
    (bfd *, unsigned int, bool);
1544
1545
  /* The swapping table to use when dealing with ECOFF information.
1546
     Used for the MIPS ELF .mdebug section.  */
1547
  const struct ecoff_debug_swap *elf_backend_ecoff_debug_swap;
1548
1549
  /* This function implements `bfd_elf_bfd_from_remote_memory';
1550
     see elf.c, elfcode.h.  */
1551
  bfd *(*elf_backend_bfd_from_remote_memory)
1552
    (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
1553
     int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
1554
        bfd_size_type len));
1555
1556
  bool (*elf_backend_core_find_build_id) (bfd *, bfd_vma);
1557
1558
  /* This function is used by `_bfd_elf_get_synthetic_symtab';
1559
     see elf.c.  */
1560
  bfd_vma (*plt_sym_val) (bfd_vma, const asection *, const arelent *);
1561
1562
  /* Is symbol defined in common section?  */
1563
  bool (*common_definition) (Elf_Internal_Sym *);
1564
1565
  /* Return a common section index for section.  */
1566
  unsigned int (*common_section_index) (asection *);
1567
1568
  /* Return a common section for section.  */
1569
  asection *(*common_section) (asection *);
1570
1571
  /* Return TRUE if we can merge 2 definitions.  */
1572
  bool (*merge_symbol) (struct elf_link_hash_entry *,
1573
             const Elf_Internal_Sym *, asection **,
1574
             bool, bool,
1575
             bfd *, const asection *);
1576
1577
  /* Return TRUE if symbol should be hashed in the `.gnu.hash' section.  */
1578
  bool (*elf_hash_symbol) (struct elf_link_hash_entry *);
1579
1580
  /* If non-NULL, called to register the location of XLAT_LOC within
1581
     .MIPS.xhash at which real final dynindx for H will be written.
1582
     If XLAT_LOC is zero, the symbol is not included in
1583
     .MIPS.xhash and no dynindx will be written.  */
1584
  void (*record_xhash_symbol)
1585
    (struct elf_link_hash_entry *h, bfd_vma xlat_loc);
1586
1587
  /* Return TRUE if type is a function symbol type.  */
1588
  bool (*is_function_type) (unsigned int type);
1589
1590
  /* If the ELF symbol SYM might be a function in SEC, return the
1591
     function size and set *CODE_OFF to the function's entry point,
1592
     otherwise return zero.  */
1593
  bfd_size_type (*maybe_function_sym) (const asymbol *sym, asection *sec,
1594
               bfd_vma *code_off);
1595
1596
  /* Given NAME, the name of a relocation section stripped of its
1597
     .rel/.rela prefix, return the section in ABFD to which the
1598
     relocations apply.  */
1599
  asection *(*get_reloc_section) (bfd *abfd, const char *name);
1600
1601
  /* Called to set the sh_flags, sh_link and sh_info fields of OSECTION which
1602
     has a type >= SHT_LOOS.  Returns TRUE if the fields were initialised,
1603
     FALSE otherwise.  Can be called multiple times for a given section,
1604
     until it returns TRUE.  Most of the times it is called ISECTION will be
1605
     set to an input section that might be associated with the output section.
1606
     The last time that it is called, ISECTION will be set to NULL.  */
1607
  bool (*elf_backend_copy_special_section_fields)
1608
    (const bfd *ibfd, bfd *obfd, const Elf_Internal_Shdr *isection,
1609
     Elf_Internal_Shdr *osection);
1610
1611
  /* Used to handle bad SHF_LINK_ORDER input.  */
1612
  void (*link_order_error_handler) (const char *, ...);
1613
1614
  /* Name of the PLT relocation section.  */
1615
  const char *relplt_name;
1616
1617
  /* Alternate EM_xxxx machine codes for this backend.  */
1618
  int elf_machine_alt1;
1619
  int elf_machine_alt2;
1620
1621
  const struct elf_size_info *s;
1622
1623
  /* An array of target specific special sections.  */
1624
  const struct bfd_elf_special_section *special_sections;
1625
1626
  /* The size in bytes of the header for the GOT.  This includes the
1627
     so-called reserved entries on some systems.  */
1628
  bfd_vma got_header_size;
1629
1630
  /* The size of the GOT entry for the symbol pointed to by H if non-NULL,
1631
     otherwise by the local symbol with index SYMNDX in IBFD.  */
1632
  bfd_vma (*got_elt_size) (bfd *, struct bfd_link_info *,
1633
         struct elf_link_hash_entry *h,
1634
         bfd *ibfd, unsigned long symndx);
1635
1636
  /* The vendor name to use for a processor-standard attributes section.  */
1637
  const char *obj_attrs_vendor;
1638
1639
  /* The section name to use for a processor-standard attributes section.  */
1640
  const char *obj_attrs_section;
1641
1642
  /* Return 1, 2 or 3 to indicate what type of arguments a
1643
     processor-specific tag takes.  */
1644
  int (*obj_attrs_arg_type) (int);
1645
1646
  /* The section type to use for an attributes section.  */
1647
  unsigned int obj_attrs_section_type;
1648
1649
  /* This function determines the order in which any attributes are
1650
     written.  It must be defined for input in the range
1651
     LEAST_KNOWN_OBJ_ATTRIBUTE..NUM_KNOWN_OBJ_ATTRIBUTES-1 (this range
1652
     is used in order to make unity easy).  The returned value is the
1653
     actual tag number to place in the input position.  */
1654
  int (*obj_attrs_order) (int);
1655
1656
  /* Handle merging unknown attributes; either warn and return TRUE,
1657
     or give an error and return FALSE.  */
1658
  bool (*obj_attrs_handle_unknown) (bfd *, int);
1659
1660
  /* Parse GNU properties.  Return the property kind.  If the property
1661
     is corrupt, issue an error message and return property_corrupt.  */
1662
  enum elf_property_kind (*parse_gnu_properties) (bfd *, unsigned int,
1663
              bfd_byte *,
1664
              unsigned int);
1665
1666
  /* Merge GNU properties.  Return TRUE if property is updated.  */
1667
  bool (*merge_gnu_properties) (struct bfd_link_info *, bfd *, bfd *,
1668
               elf_property *, elf_property *);
1669
1670
  /* Set up GNU properties.  */
1671
  bfd *(*setup_gnu_properties) (struct bfd_link_info *);
1672
1673
  /* Fix up GNU properties.  */
1674
  void (*fixup_gnu_properties) (struct bfd_link_info *,
1675
        elf_property_list **);
1676
1677
  /* Encoding used for compact EH tables.  */
1678
  int (*compact_eh_encoding) (struct bfd_link_info *);
1679
1680
  /* Opcode representing no unwind.  */
1681
  int (*cant_unwind_opcode) (struct bfd_link_info *);
1682
1683
  /* Called when emitting an ELF symbol whoes input version had an
1684
     ST_SHNDX field set to a value in the range SHN_LOPROC..SHN_HIOS.
1685
     Returns the value to be installed in the ST_SHNDX field of the
1686
     emitted symbol.  If not defined, the value is left unchanged.  */
1687
  unsigned int (*symbol_section_index) (bfd *, elf_symbol_type *);
1688
1689
  /* Called when a section has extra reloc sections.  */
1690
  bool (*init_secondary_reloc_section) (bfd *, Elf_Internal_Shdr *,
1691
          const char *, unsigned int);
1692
1693
  /* Called when after loading the normal relocs for a section.  */
1694
  bool (*slurp_secondary_relocs) (bfd *, asection *, asymbol **, bool);
1695
1696
  /* Called after writing the normal relocs for a section.  */
1697
  bool (*write_secondary_relocs) (bfd *, asection *);
1698
1699
  /* This is non-zero if static TLS segments require a special alignment.  */
1700
  unsigned static_tls_alignment;
1701
1702
  /* Alignment for the PT_GNU_STACK segment.  */
1703
  unsigned stack_align;
1704
1705
  /* Flag bits to assign to a section of type SHT_STRTAB.  */
1706
  unsigned long elf_strtab_flags;
1707
1708
  /* This is TRUE if the linker should act like collect and gather
1709
     global constructors and destructors by name.  This is TRUE for
1710
     MIPS ELF because the Irix 5 tools can not handle the .init
1711
     section.  */
1712
  unsigned collect : 1;
1713
1714
  /* This is TRUE if the linker should ignore changes to the type of a
1715
     symbol.  This is TRUE for MIPS ELF because some Irix 5 objects
1716
     record undefined functions as STT_OBJECT although the definitions
1717
     are STT_FUNC.  */
1718
  unsigned type_change_ok : 1;
1719
1720
  /* Whether the backend may use REL relocations.  (Some backends use
1721
     both REL and RELA relocations, and this flag is set for those
1722
     backends.)  */
1723
  unsigned may_use_rel_p : 1;
1724
1725
  /* Whether the backend may use RELA relocations.  (Some backends use
1726
     both REL and RELA relocations, and this flag is set for those
1727
     backends.)  */
1728
  unsigned may_use_rela_p : 1;
1729
1730
  /* Whether the default relocation type is RELA.  If a backend with
1731
     this flag set wants REL relocations for a particular section,
1732
     it must note that explicitly.  Similarly, if this flag is clear,
1733
     and the backend wants RELA relocations for a particular
1734
     section.  */
1735
  unsigned default_use_rela_p : 1;
1736
1737
  /* True if PLT and copy relocations should be RELA by default.  */
1738
  unsigned rela_plts_and_copies_p : 1;
1739
1740
  /* Set if RELA relocations for a relocatable link can be handled by
1741
     generic code.  Backends that set this flag need do nothing in the
1742
     backend relocate_section routine for relocatable linking.  */
1743
  unsigned rela_normal : 1;
1744
1745
  /* Set if DT_REL/DT_RELA/DT_RELSZ/DT_RELASZ should not include PLT
1746
     relocations.  */
1747
  unsigned dtrel_excludes_plt : 1;
1748
1749
  /* TRUE if addresses "naturally" sign extend.  This is used when
1750
     swapping in from Elf32 when BFD64.  */
1751
  unsigned sign_extend_vma : 1;
1752
1753
  unsigned want_got_plt : 1;
1754
  unsigned plt_readonly : 1;
1755
  unsigned want_plt_sym : 1;
1756
  unsigned plt_not_loaded : 1;
1757
  unsigned plt_alignment : 4;
1758
  unsigned can_gc_sections : 1;
1759
  unsigned can_refcount : 1;
1760
  unsigned want_got_sym : 1;
1761
  unsigned want_dynbss : 1;
1762
  unsigned want_dynrelro : 1;
1763
1764
  /* Targets which do not support physical addressing often require
1765
     that the p_paddr field in the section header to be set to zero.
1766
     This field indicates whether this behavior is required.  */
1767
  unsigned want_p_paddr_set_to_zero : 1;
1768
1769
  /* Target has broken hardware and/or kernel that requires pages not
1770
     to be mapped twice with different permissions.  */
1771
  unsigned no_page_alias : 1;
1772
1773
  /* True if an object file lacking a .note.GNU-stack section
1774
     should be assumed to be requesting exec stack.  At least one
1775
     other file in the link needs to have a .note.GNU-stack section
1776
     for a PT_GNU_STACK segment to be created.  */
1777
  unsigned default_execstack : 1;
1778
1779
  /* True if elf_section_data(sec)->this_hdr.contents is sec->rawsize
1780
     in length rather than sec->size in length, if sec->rawsize is
1781
     non-zero and smaller than sec->size.  */
1782
  unsigned caches_rawsize : 1;
1783
1784
  /* Address of protected data defined in the shared library may be
1785
     external, i.e., due to copy relocation.   */
1786
  unsigned extern_protected_data : 1;
1787
1788
  /* True if `_bfd_elf_link_renumber_dynsyms' must be called even for
1789
     static binaries.  */
1790
  unsigned always_renumber_dynsyms : 1;
1791
1792
  /* True if the 32-bit Linux PRPSINFO structure's `pr_uid' and `pr_gid'
1793
     members use a 16-bit data type.  */
1794
  unsigned linux_prpsinfo32_ugid16 : 1;
1795
1796
  /* True if the 64-bit Linux PRPSINFO structure's `pr_uid' and `pr_gid'
1797
     members use a 16-bit data type.  */
1798
  unsigned linux_prpsinfo64_ugid16 : 1;
1799
1800
  /* True if the backend can use mmap to map in all input section
1801
     contents.  All bfd_malloc_and_get_section and free usages on
1802
     section contents must be replaced by _bfd_elf_mmap_section_contents
1803
     and _bfd_elf_munmap_section_contents.  */
1804
  unsigned use_mmap : 1;
1805
};
1806
1807
/* Information about reloc sections associated with a bfd_elf_section_data
1808
   structure.  */
1809
struct bfd_elf_section_reloc_data
1810
{
1811
  /* The ELF header for the reloc section associated with this
1812
     section, if any.  */
1813
  Elf_Internal_Shdr *hdr;
1814
  /* The number of relocations currently assigned to HDR.  */
1815
  unsigned int count;
1816
  /* The ELF section number of the reloc section.  Only used for an
1817
     output file.  */
1818
  int idx;
1819
  /* Used by the backend linker to store the symbol hash table entries
1820
     associated with relocs against global symbols.  */
1821
  struct elf_link_hash_entry **hashes;
1822
};
1823
1824
/* Information stored for each BFD section in an ELF file.  This
1825
   structure is allocated by elf_new_section_hook.  */
1826
1827
struct bfd_elf_section_data
1828
{
1829
  /* The ELF header for this section.  */
1830
  Elf_Internal_Shdr this_hdr;
1831
1832
  /* INPUT_SECTION_FLAGS if specified in the linker script.  */
1833
  struct flag_info *section_flag_info;
1834
1835
  /* Information about the REL and RELA reloc sections associated
1836
     with this section, if any.  */
1837
  struct bfd_elf_section_reloc_data rel, rela;
1838
1839
  /* The ELF section number of this section.  */
1840
  int this_idx;
1841
1842
  /* Used by the backend linker when generating a shared library to
1843
     record the dynamic symbol index for a section symbol
1844
     corresponding to this section.  A value of 0 means that there is
1845
     no dynamic symbol for this section.  */
1846
  int dynindx;
1847
1848
  /* A pointer to the linked-to section for SHF_LINK_ORDER.  */
1849
  asection *linked_to;
1850
1851
  /* A pointer to the swapped relocs.  If the section uses REL relocs,
1852
     rather than RELA, all the r_addend fields will be zero.  This
1853
     pointer may be NULL.  It is used by the backend linker.  */
1854
  Elf_Internal_Rela *relocs;
1855
1856
  /* A pointer to a linked list tracking dynamic relocs copied for
1857
     local symbols.  */
1858
  void *local_dynrel;
1859
1860
  /* A pointer to the bfd section used for dynamic relocs.  */
1861
  asection *sreloc;
1862
1863
  union {
1864
    /* Group name, if this section is a member of a group.  */
1865
    const char *name;
1866
1867
    /* Group signature sym, if this is the SHT_GROUP section.  */
1868
    struct bfd_symbol *id;
1869
  } group;
1870
1871
  /* For a member of a group, points to the SHT_GROUP section.
1872
     NULL for the SHT_GROUP section itself and non-group sections.  */
1873
  asection *sec_group;
1874
1875
  /* A linked list of member sections in the group.  Circular when used by
1876
     the linker.  For the SHT_GROUP section, points at first member.  */
1877
  asection *next_in_group;
1878
1879
  /* The FDEs associated with this section.  The u.fde.next_in_section
1880
     field acts as a chain pointer.  */
1881
  struct eh_cie_fde *fde_list;
1882
1883
  /* Link from a text section to its .eh_frame_entry section.  */
1884
  asection *eh_frame_entry;
1885
1886
  /* If the mmapped_p flag is set, this points to the actual mmapped
1887
     address of contents.  If it is set to NULL, contents isn't
1888
     mmapped.  */
1889
  void *contents_addr;
1890
1891
  /* If the mmapped_p flag is set, this is the actual mmapped size of
1892
     contents.  */
1893
  size_t contents_size;
1894
1895
  /* TRUE if the section has secondary reloc sections associated with it.
1896
     FIXME: In the future it might be better to change this into a list
1897
     of secondary reloc sections, making lookup easier and faster.  */
1898
  bool has_secondary_relocs;
1899
1900
  /* A pointer used for various section optimizations.  */
1901
  void *sec_info;
1902
};
1903
1904
46.8M
#define elf_section_data(sec) ((struct bfd_elf_section_data*)(sec)->used_by_bfd)
1905
399k
#define elf_linked_to_section(sec) (elf_section_data(sec)->linked_to)
1906
6.24M
#define elf_section_type(sec) (elf_section_data(sec)->this_hdr.sh_type)
1907
7.22M
#define elf_section_flags(sec)  (elf_section_data(sec)->this_hdr.sh_flags)
1908
272k
#define elf_section_info(sec) (elf_section_data(sec)->this_hdr.sh_info)
1909
241k
#define elf_group_name(sec) (elf_section_data(sec)->group.name)
1910
1.18k
#define elf_group_id(sec) (elf_section_data(sec)->group.id)
1911
1.02M
#define elf_next_in_group(sec)  (elf_section_data(sec)->next_in_group)
1912
0
#define elf_fde_list(sec) (elf_section_data(sec)->fde_list)
1913
1.03M
#define elf_sec_group(sec)  (elf_section_data(sec)->sec_group)
1914
0
#define elf_section_eh_frame_entry(sec) (elf_section_data(sec)->eh_frame_entry)
1915
1916
#define xvec_get_elf_backend_data(xvec) \
1917
254M
  ((const struct elf_backend_data *) (xvec)->backend_data)
1918
1919
#define get_elf_backend_data(abfd) \
1920
254M
   xvec_get_elf_backend_data ((abfd)->xvec)
1921
1922
/* The least object attributes (within an attributes subsection) known
1923
   for any target.  Some code assumes that the value 0 is not used and
1924
   the field for that attribute can instead be used as a marker to
1925
   indicate that attributes have been initialized.  */
1926
1.18k
#define LEAST_KNOWN_OBJ_ATTRIBUTE 2
1927
1928
/* The maximum number of known object attributes for any target.  */
1929
2.03M
#define NUM_KNOWN_OBJ_ATTRIBUTES 77
1930
1931
/* The value of an object attribute.  The type indicates whether the attribute
1932
   holds and integer, a string, or both.  It can also indicate that there can
1933
   be no default (i.e. all values must be written to file, even zero), or
1934
   that the value is in error and should not be written to file.  */
1935
1936
typedef struct obj_attribute
1937
{
1938
3.75M
#define ATTR_TYPE_FLAG_INT_VAL    (1 << 0)
1939
2.46M
#define ATTR_TYPE_FLAG_STR_VAL    (1 << 1)
1940
0
#define ATTR_TYPE_FLAG_NO_DEFAULT (1 << 2)
1941
0
#define ATTR_TYPE_FLAG_ERROR    (1 << 3)
1942
1943
0
#define ATTR_TYPE_HAS_INT_VAL(TYPE) ((TYPE) & ATTR_TYPE_FLAG_INT_VAL)
1944
0
#define ATTR_TYPE_HAS_STR_VAL(TYPE) ((TYPE) & ATTR_TYPE_FLAG_STR_VAL)
1945
0
#define ATTR_TYPE_HAS_NO_DEFAULT(TYPE)  ((TYPE) & ATTR_TYPE_FLAG_NO_DEFAULT)
1946
0
#define ATTR_TYPE_HAS_ERROR(TYPE) ((TYPE) & ATTR_TYPE_FLAG_ERROR)
1947
1948
  int type;
1949
  unsigned int i;
1950
  char *s;
1951
} obj_attribute;
1952
1953
typedef struct obj_attribute_list
1954
{
1955
  struct obj_attribute_list *next;
1956
  unsigned int tag;
1957
  obj_attribute attr;
1958
} obj_attribute_list;
1959
1960
/* Object attributes may either be defined by the processor ABI, index
1961
   OBJ_ATTR_PROC in the *_obj_attributes arrays, or be GNU-specific
1962
   (and possibly also processor-specific), index OBJ_ATTR_GNU.  */
1963
214k
#define OBJ_ATTR_PROC 0
1964
3.84M
#define OBJ_ATTR_GNU 1
1965
197
#define OBJ_ATTR_FIRST OBJ_ATTR_PROC
1966
591
#define OBJ_ATTR_LAST OBJ_ATTR_GNU
1967
1968
/* The following object attribute tags are taken as generic, for all
1969
   targets and for "gnu" where there is no target standard.  */
1970
enum
1971
{
1972
  Tag_NULL = 0,
1973
  Tag_File = 1,
1974
  Tag_Section = 2,
1975
  Tag_Symbol = 3,
1976
  Tag_compatibility = 32
1977
};
1978
1979
/* The following struct stores information about every SystemTap section
1980
   found in the object file.  */
1981
struct sdt_note
1982
{
1983
  struct sdt_note *next;
1984
  bfd_size_type size;
1985
  bfd_byte data[1];
1986
};
1987
1988
/* tdata information grabbed from an elf core file.  */
1989
struct core_elf_obj_tdata
1990
{
1991
  int signal;
1992
  int pid;
1993
  int lwpid;
1994
  char* program;
1995
  char* command;
1996
};
1997
1998
/* Extra tdata information held for output ELF BFDs.  */
1999
struct output_elf_obj_tdata
2000
{
2001
  struct elf_segment_map *seg_map;
2002
  struct elf_strtab_hash *strtab_ptr;
2003
2004
  /* STT_SECTION symbols for each section */
2005
  asymbol **section_syms;
2006
2007
  /* NT_GNU_BUILD_ID note type info.  */
2008
  struct
2009
  {
2010
    bool (*after_write_object_contents) (bfd *);
2011
    const char *style;
2012
    asection *sec;
2013
  } build_id;
2014
2015
  /* FDO_PACKAGING_METADATA note type info.  */
2016
  struct
2017
  {
2018
    bool (*after_write_object_contents) (bfd *);
2019
    const char *json;
2020
    asection *sec;
2021
  } package_metadata;
2022
2023
  /* Records the result of `get_program_header_size'.  */
2024
  bfd_size_type program_header_size;
2025
2026
  /* Used when laying out sections.  */
2027
  file_ptr next_file_pos;
2028
2029
  /* Linker information.  */
2030
  struct bfd_link_info *link_info;
2031
2032
  unsigned int num_section_syms;
2033
  unsigned int shstrtab_section, strtab_section;
2034
2035
  /* Segment flags for the PT_GNU_STACK segment.  */
2036
  unsigned int stack_flags;
2037
2038
  /* Used to determine if PT_GNU_SFRAME segment header should be
2039
     created.  */
2040
  asection *sframe;
2041
2042
  /* Holds the build attributes section if it exists.  */
2043
  asection *obj_build_attributes;
2044
2045
  /* Used to determine if the e_flags field has been initialized */
2046
  bool flags_init;
2047
};
2048
2049
/* Indicate if the bfd contains SHF_GNU_MBIND/SHF_GNU_RETAIN sections or
2050
   symbols that have the STT_GNU_IFUNC symbol type or STB_GNU_UNIQUE
2051
   binding.  Used to set the osabi field in the ELF header structure.  */
2052
enum elf_gnu_osabi
2053
{
2054
  elf_gnu_osabi_mbind = 1 << 0,
2055
  elf_gnu_osabi_ifunc = 1 << 1,
2056
  elf_gnu_osabi_unique = 1 << 2,
2057
  elf_gnu_osabi_retain = 1 << 3,
2058
};
2059
2060
typedef struct elf_section_list
2061
{
2062
  Elf_Internal_Shdr      hdr;
2063
  unsigned int         ndx;
2064
  struct elf_section_list *  next;
2065
} elf_section_list;
2066
2067
enum dynamic_lib_link_class {
2068
  DYN_NORMAL = 0,
2069
  DYN_AS_NEEDED = 1,
2070
  DYN_DT_NEEDED = 2,
2071
  DYN_NO_ADD_NEEDED = 4,
2072
  DYN_NO_NEEDED = 8
2073
};
2074
2075
/* Some private data is stashed away for future use using the tdata pointer
2076
   in the bfd structure.  */
2077
2078
struct elf_obj_tdata
2079
{
2080
  Elf_Internal_Ehdr elf_header[1];  /* Actual data, but ref like ptr */
2081
  Elf_Internal_Shdr **elf_sect_ptr;
2082
  Elf_Internal_Phdr *phdr;
2083
  Elf_Internal_Shdr symtab_hdr;
2084
  Elf_Internal_Shdr shstrtab_hdr;
2085
  Elf_Internal_Shdr strtab_hdr;
2086
  Elf_Internal_Shdr dynsymtab_hdr;
2087
  Elf_Internal_Shdr dynstrtab_hdr;
2088
  Elf_Internal_Shdr dynversym_hdr;
2089
  Elf_Internal_Shdr dynverref_hdr;
2090
  Elf_Internal_Shdr dynverdef_hdr;
2091
  Elf_Internal_Sym *dt_symtab;
2092
  bfd_byte *dt_versym;
2093
  bfd_byte *dt_verdef;
2094
  bfd_byte *dt_verneed;
2095
  size_t dt_symtab_count;
2096
  size_t dt_verdef_count;
2097
  size_t dt_verneed_count;
2098
  char * dt_strtab;
2099
  size_t dt_strsz;
2100
  elf_section_list * symtab_shndx_list;
2101
  bfd_vma gp;       /* The gp value */
2102
  unsigned int gp_size;     /* The gp size */
2103
  unsigned int num_elf_sections;  /* elf_sect_ptr size */
2104
  unsigned char *being_created;
2105
2106
  /* A mapping from external symbols to entries in the linker hash
2107
     table, used when linking.  This is indexed by the symbol index
2108
     minus the sh_info field of the symbol table header.  */
2109
  struct elf_link_hash_entry **sym_hashes;
2110
2111
  /* Track usage and final offsets of GOT entries for local symbols.
2112
     This array is indexed by symbol index.  Elements are used
2113
     identically to "got" in struct elf_link_hash_entry.  */
2114
  union
2115
    {
2116
      bfd_signed_vma *refcounts;
2117
      bfd_vma *offsets;
2118
      struct got_entry **ents;
2119
    } local_got;
2120
2121
  /* The linker ELF emulation code needs to let the backend ELF linker
2122
     know what filename should be used for a dynamic object if the
2123
     dynamic object is found using a search.  The emulation code then
2124
     sometimes needs to know what name was actually used.  Until the
2125
     file has been added to the linker symbol table, this field holds
2126
     the name the linker wants.  After it has been added, it holds the
2127
     name actually used, which will be the DT_SONAME entry if there is
2128
     one.  */
2129
  const char *dt_name;
2130
2131
  /* The linker emulation needs to know what audit libs
2132
     are used by a dynamic object.  */
2133
  const char *dt_audit;
2134
2135
  /* Used by find_nearest_line entry point.  */
2136
  void *line_info;
2137
2138
  /* A place to stash dwarf1 info for this bfd.  */
2139
  void *dwarf1_find_line_info;
2140
2141
  /* A place to stash dwarf2 info for this bfd.  */
2142
  void *dwarf2_find_line_info;
2143
2144
  /* Stash away info for yet another find line/function variant.  */
2145
  void *elf_find_function_cache;
2146
2147
  /* Number of symbol version definitions we are about to emit.  */
2148
  unsigned int cverdefs;
2149
2150
  /* Number of symbol version references we are about to emit.  */
2151
  unsigned int cverrefs;
2152
2153
  /* Symbol version definitions in external objects.  */
2154
  Elf_Internal_Verdef *verdef;
2155
2156
  /* Symbol version references to external objects.  */
2157
  Elf_Internal_Verneed *verref;
2158
2159
  /* A pointer to the .eh_frame section.  */
2160
  asection *eh_frame_section;
2161
2162
  /* Symbol buffer.  */
2163
  void *symbuf;
2164
2165
  /* List of GNU properties.  Will be updated by setup_gnu_properties
2166
     after all input GNU properties are merged for output.  */
2167
  elf_property_list *properties;
2168
2169
  obj_attribute known_obj_attributes[2][NUM_KNOWN_OBJ_ATTRIBUTES];
2170
  obj_attribute_list *other_obj_attributes[2];
2171
2172
  /* Linked-list containing information about every Systemtap section
2173
     found in the object file.  Each section corresponds to one entry
2174
     in the list.  */
2175
  struct sdt_note *sdt_note_head;
2176
2177
  unsigned int symtab_section, dynsymtab_section;
2178
  unsigned int dynversym_section, dynverdef_section, dynverref_section;
2179
2180
  /* An identifier used to distinguish different target
2181
     specific extensions to this structure.  */
2182
  ENUM_BITFIELD (elf_target_id) object_id : 6;
2183
2184
  /* Whether a dyanmic object was specified normally on the linker
2185
     command line, or was specified when --as-needed was in effect,
2186
     or was found via a DT_NEEDED entry.  */
2187
  ENUM_BITFIELD (dynamic_lib_link_class) dyn_lib_class : 4;
2188
2189
  /* Whether the bfd uses OS specific bits that require ELFOSABI_GNU.  */
2190
  ENUM_BITFIELD (elf_gnu_osabi) has_gnu_osabi : 4;
2191
2192
  /* Whether if the bfd contains the GNU_PROPERTY_NO_COPY_ON_PROTECTED
2193
     property.  */
2194
  unsigned int has_no_copy_on_protected : 1;
2195
2196
  /* Whether if the bfd contains the
2197
     GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS property.  */
2198
  unsigned int has_indirect_extern_access : 1;
2199
2200
  /* Irix 5 often screws up the symbol table, sorting local symbols
2201
     after global symbols.  This flag is set if the symbol table in
2202
     this BFD appears to be screwed up.  If it is, we ignore the
2203
     sh_info field in the symbol table header, and always read all the
2204
     symbols.  */
2205
  unsigned int bad_symtab : 1;
2206
2207
  /* Set if DT_FLAGS_1 has DF_1_PIE set.  */
2208
  unsigned int is_pie : 1;
2209
2210
  /* Information grabbed from an elf core file.  */
2211
  struct core_elf_obj_tdata *core;
2212
2213
  /* More information held for output ELF BFDs.  */
2214
  struct output_elf_obj_tdata *o;
2215
};
2216
2217
309M
#define elf_tdata(bfd)    ((bfd) -> tdata.elf_obj_data)
2218
2219
22.8M
#define elf_object_id(bfd)  (elf_tdata(bfd) -> object_id)
2220
655
#define elf_program_header_size(bfd) (elf_tdata(bfd) -> o->program_header_size)
2221
77.4M
#define elf_elfheader(bfd)  (elf_tdata(bfd) -> elf_header)
2222
59.0M
#define elf_elfsections(bfd)  (elf_tdata(bfd) -> elf_sect_ptr)
2223
46.4M
#define elf_numsections(bfd)  (elf_tdata(bfd) -> num_elf_sections)
2224
637
#define elf_seg_map(bfd)  (elf_tdata(bfd) -> o->seg_map)
2225
0
#define elf_link_info(bfd)  (elf_tdata(bfd) -> o->link_info)
2226
919
#define elf_next_file_pos(bfd)  (elf_tdata(bfd) -> o->next_file_pos)
2227
4
#define elf_stack_flags(bfd)  (elf_tdata(bfd) -> o->stack_flags)
2228
4
#define elf_sframe(bfd)   (elf_tdata(bfd) -> o->sframe)
2229
#define elf_obj_build_attributes(bfd) \
2230
0
        (elf_tdata(bfd) -> o->obj_build_attributes)
2231
16.9k
#define elf_shstrtab(bfd) (elf_tdata(bfd) -> o->strtab_ptr)
2232
3.38M
#define elf_onesymtab(bfd)  (elf_tdata(bfd) -> symtab_section)
2233
511k
#define elf_symtab_shndx_list(bfd)  (elf_tdata(bfd) -> symtab_shndx_list)
2234
6.94k
#define elf_strtab_sec(bfd) (elf_tdata(bfd) -> o->strtab_section)
2235
3.44k
#define elf_shstrtab_sec(bfd) (elf_tdata(bfd) -> o->shstrtab_section)
2236
275k
#define elf_symtab_hdr(bfd) (elf_tdata(bfd) -> symtab_hdr)
2237
243k
#define elf_dynsymtab(bfd)  (elf_tdata(bfd) -> dynsymtab_section)
2238
5.00M
#define elf_dynversym(bfd)  (elf_tdata(bfd) -> dynversym_section)
2239
3.44M
#define elf_dynverdef(bfd)  (elf_tdata(bfd) -> dynverdef_section)
2240
3.44M
#define elf_dynverref(bfd)  (elf_tdata(bfd) -> dynverref_section)
2241
#define elf_eh_frame_section(bfd) \
2242
0
        (elf_tdata(bfd) -> eh_frame_section)
2243
83
#define elf_section_syms(bfd) (elf_tdata(bfd) -> o->section_syms)
2244
83
#define elf_num_section_syms(bfd) (elf_tdata(bfd) -> o->num_section_syms)
2245
#define core_prpsinfo(bfd)  (elf_tdata(bfd) -> prpsinfo)
2246
#define core_prstatus(bfd)  (elf_tdata(bfd) -> prstatus)
2247
3.35k
#define elf_gp(bfd)   (elf_tdata(bfd) -> gp)
2248
20
#define elf_gp_size(bfd)  (elf_tdata(bfd) -> gp_size)
2249
0
#define elf_sym_hashes(bfd) (elf_tdata(bfd) -> sym_hashes)
2250
0
#define elf_local_got_refcounts(bfd) (elf_tdata(bfd) -> local_got.refcounts)
2251
0
#define elf_local_got_offsets(bfd) (elf_tdata(bfd) -> local_got.offsets)
2252
0
#define elf_local_got_ents(bfd) (elf_tdata(bfd) -> local_got.ents)
2253
0
#define elf_dt_name(bfd)  (elf_tdata(bfd) -> dt_name)
2254
0
#define elf_dt_audit(bfd) (elf_tdata(bfd) -> dt_audit)
2255
0
#define elf_dyn_lib_class(bfd)  (elf_tdata(bfd) -> dyn_lib_class)
2256
83.4k
#define elf_bad_symtab(bfd) (elf_tdata(bfd) -> bad_symtab)
2257
398
#define elf_flags_init(bfd) (elf_tdata(bfd) -> o->flags_init)
2258
2.51M
#define elf_use_dt_symtab_p(bfd) (elf_tdata(bfd) -> dt_symtab_count != 0)
2259
1.61M
#define elf_known_obj_attributes(bfd) (elf_tdata (bfd) -> known_obj_attributes)
2260
420k
#define elf_other_obj_attributes(bfd) (elf_tdata (bfd) -> other_obj_attributes)
2261
#define elf_known_obj_attributes_proc(bfd) \
2262
0
  (elf_known_obj_attributes (bfd) [OBJ_ATTR_PROC])
2263
#define elf_other_obj_attributes_proc(bfd) \
2264
0
  (elf_other_obj_attributes (bfd) [OBJ_ATTR_PROC])
2265
320
#define elf_properties(bfd) (elf_tdata (bfd) -> properties)
2266
#define elf_has_no_copy_on_protected(bfd) \
2267
8
  (elf_tdata(bfd) -> has_no_copy_on_protected)
2268
#define elf_has_indirect_extern_access(bfd) \
2269
3
  (elf_tdata(bfd) -> has_indirect_extern_access)
2270

2271
extern void _bfd_elf_swap_verdef_in
2272
  (bfd *, const Elf_External_Verdef *, Elf_Internal_Verdef *);
2273
extern void _bfd_elf_swap_verdef_out
2274
  (bfd *, const Elf_Internal_Verdef *, Elf_External_Verdef *);
2275
extern void _bfd_elf_swap_verdaux_in
2276
  (bfd *, const Elf_External_Verdaux *, Elf_Internal_Verdaux *);
2277
extern void _bfd_elf_swap_verdaux_out
2278
  (bfd *, const Elf_Internal_Verdaux *, Elf_External_Verdaux *);
2279
extern void _bfd_elf_swap_verneed_in
2280
  (bfd *, const Elf_External_Verneed *, Elf_Internal_Verneed *);
2281
extern void _bfd_elf_swap_verneed_out
2282
  (bfd *, const Elf_Internal_Verneed *, Elf_External_Verneed *);
2283
extern void _bfd_elf_swap_vernaux_in
2284
  (bfd *, const Elf_External_Vernaux *, Elf_Internal_Vernaux *);
2285
extern void _bfd_elf_swap_vernaux_out
2286
  (bfd *, const Elf_Internal_Vernaux *, Elf_External_Vernaux *);
2287
extern void _bfd_elf_swap_versym_in
2288
  (bfd *, const Elf_External_Versym *, Elf_Internal_Versym *);
2289
extern void _bfd_elf_swap_versym_out
2290
  (bfd *, const Elf_Internal_Versym *, Elf_External_Versym *);
2291
2292
extern unsigned int _bfd_elf_section_from_bfd_section
2293
  (bfd *, asection *);
2294
extern char *bfd_elf_string_from_elf_section
2295
  (bfd *, unsigned, unsigned);
2296
extern Elf_Internal_Sym *bfd_elf_get_elf_syms
2297
  (bfd *, Elf_Internal_Shdr *, size_t, size_t, Elf_Internal_Sym *, void *,
2298
   Elf_External_Sym_Shndx *);
2299
extern char * bfd_elf_get_str_section (bfd *, unsigned int);
2300
extern const char *bfd_elf_sym_name
2301
  (bfd *, Elf_Internal_Shdr *, Elf_Internal_Sym *, asection *);
2302
2303
extern bool _bfd_elf_copy_private_bfd_data
2304
  (bfd *, bfd *);
2305
extern bool _bfd_elf_print_private_bfd_data
2306
  (bfd *, void *);
2307
const char * _bfd_elf_get_symbol_version_string
2308
  (bfd *, asymbol *, bool, bool *);
2309
extern void bfd_elf_print_symbol
2310
  (bfd *, void *, asymbol *, bfd_print_symbol_type);
2311
2312
extern unsigned int _bfd_elf_eh_frame_address_size
2313
  (bfd *, const asection *);
2314
extern bfd_byte _bfd_elf_encode_eh_address
2315
  (bfd *abfd, struct bfd_link_info *info, asection *osec, bfd_vma offset,
2316
   asection *loc_sec, bfd_vma loc_offset, bfd_vma *encoded);
2317
extern bool _bfd_elf_can_make_relative
2318
  (bfd *input_bfd, struct bfd_link_info *info, asection *eh_frame_section);
2319
2320
extern enum elf_reloc_type_class _bfd_elf_reloc_type_class
2321
  (const struct bfd_link_info *, const asection *,
2322
   const Elf_Internal_Rela *);
2323
extern bfd_vma _bfd_elf_rela_local_sym
2324
  (bfd *, Elf_Internal_Sym *, asection **, Elf_Internal_Rela *);
2325
extern bfd_vma _bfd_elf_rel_local_sym
2326
  (bfd *, Elf_Internal_Sym *, asection **, bfd_vma);
2327
extern bfd_vma _bfd_elf_section_offset
2328
  (bfd *, struct bfd_link_info *, asection *, bfd_vma);
2329
2330
extern unsigned long bfd_elf_hash
2331
  (const char *);
2332
extern unsigned long bfd_elf_gnu_hash
2333
  (const char *);
2334
2335
extern bfd_reloc_status_type bfd_elf_generic_reloc
2336
  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
2337
extern bool bfd_elf_allocate_object
2338
  (bfd *, size_t);
2339
extern bool bfd_elf_make_object
2340
  (bfd *);
2341
extern bool bfd_elf_mkcorefile
2342
  (bfd *);
2343
extern bool _bfd_elf_make_section_from_shdr
2344
  (bfd *, Elf_Internal_Shdr *, const char *, int);
2345
extern bool _bfd_elf_make_section_from_phdr
2346
  (bfd *, Elf_Internal_Phdr *, int, const char *);
2347
extern struct bfd_hash_entry *_bfd_elf_link_hash_newfunc
2348
  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
2349
extern struct bfd_link_hash_table *_bfd_elf_link_hash_table_create
2350
  (bfd *);
2351
extern void _bfd_elf_link_hash_table_free
2352
  (bfd *);
2353
extern void _bfd_elf_link_hash_copy_indirect
2354
  (struct bfd_link_info *, struct elf_link_hash_entry *,
2355
   struct elf_link_hash_entry *);
2356
extern void _bfd_elf_link_hash_hide_symbol
2357
  (struct bfd_link_info *, struct elf_link_hash_entry *, bool);
2358
extern void _bfd_elf_link_hide_symbol
2359
  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
2360
extern bool _bfd_elf_link_hash_fixup_symbol
2361
  (struct bfd_link_info *, struct elf_link_hash_entry *);
2362
extern bool _bfd_elf_link_hash_table_init
2363
  (struct elf_link_hash_table *, bfd *,
2364
   struct bfd_hash_entry *(*)
2365
     (struct bfd_hash_entry *, struct bfd_hash_table *, const char *),
2366
   unsigned int);
2367
extern bool _bfd_elf_slurp_version_tables
2368
  (bfd *, bool);
2369
extern bool _bfd_elf_merge_sections
2370
  (bfd *, struct bfd_link_info *);
2371
extern bool _bfd_elf_match_sections_by_type
2372
  (bfd *, const asection *, bfd *, const asection *);
2373
extern bool bfd_elf_is_group_section
2374
  (bfd *, const struct bfd_section *);
2375
extern const char *bfd_elf_group_name
2376
  (bfd *, const struct bfd_section *);
2377
extern bool _bfd_elf_section_already_linked
2378
  (bfd *, asection *, struct bfd_link_info *);
2379
extern void bfd_elf_set_group_contents
2380
  (bfd *, asection *, void *);
2381
extern unsigned int _bfd_elf_filter_global_symbols
2382
  (bfd *, struct bfd_link_info *, asymbol **, long);
2383
extern asection *_bfd_elf_check_kept_section
2384
  (asection *, struct bfd_link_info *);
2385
0
#define _bfd_elf_link_just_syms _bfd_generic_link_just_syms
2386
extern void _bfd_elf_copy_link_hash_symbol_type
2387
  (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);
2388
extern bool _bfd_elf_size_group_sections
2389
  (struct bfd_link_info *);
2390
extern bool _bfd_elf_fixup_group_sections
2391
(bfd *, asection *);
2392
extern bool _bfd_elf_copy_private_header_data
2393
  (bfd *, bfd *);
2394
extern bool _bfd_elf_copy_private_symbol_data
2395
  (bfd *, asymbol *, bfd *, asymbol *);
2396
extern bool _bfd_elf_init_private_section_data
2397
  (bfd *, asection *, bfd *, asection *, struct bfd_link_info *);
2398
extern bool _bfd_elf_copy_private_section_data
2399
  (bfd *, asection *, bfd *, asection *);
2400
extern bool _bfd_elf_write_object_contents
2401
  (bfd *);
2402
extern bool _bfd_elf_write_corefile_contents
2403
  (bfd *);
2404
extern bool _bfd_elf_set_section_contents
2405
  (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
2406
extern long _bfd_elf_get_symtab_upper_bound
2407
  (bfd *);
2408
extern long _bfd_elf_canonicalize_symtab
2409
  (bfd *, asymbol **);
2410
extern long _bfd_elf_get_dynamic_symtab_upper_bound
2411
  (bfd *);
2412
extern long _bfd_elf_canonicalize_dynamic_symtab
2413
  (bfd *, asymbol **);
2414
extern long _bfd_elf_get_synthetic_symtab
2415
  (bfd *, long, asymbol **, long, asymbol **, asymbol **);
2416
extern long _bfd_elf_get_reloc_upper_bound
2417
  (bfd *, sec_ptr);
2418
extern long _bfd_elf_canonicalize_reloc
2419
  (bfd *, sec_ptr, arelent **, asymbol **);
2420
extern asection * _bfd_elf_get_dynamic_reloc_section
2421
  (bfd *, asection *, bool);
2422
extern asection * _bfd_elf_make_dynamic_reloc_section
2423
  (asection *, bfd *, unsigned int, bfd *, bool);
2424
extern long _bfd_elf_get_dynamic_reloc_upper_bound
2425
  (bfd *);
2426
extern long _bfd_elf_canonicalize_dynamic_reloc
2427
  (bfd *, arelent **, asymbol **);
2428
extern asymbol *_bfd_elf_make_empty_symbol
2429
  (bfd *);
2430
extern void _bfd_elf_get_symbol_info
2431
  (bfd *, asymbol *, symbol_info *);
2432
extern bool _bfd_elf_is_local_label_name
2433
  (bfd *, const char *);
2434
extern alent *_bfd_elf_get_lineno
2435
  (bfd *, asymbol *);
2436
extern bool _bfd_elf_set_arch_mach
2437
  (bfd *, enum bfd_architecture, unsigned long);
2438
extern bool _bfd_elf_find_nearest_line
2439
  (bfd *, asymbol **, asection *, bfd_vma,
2440
   const char **, const char **, unsigned int *, unsigned int *);
2441
extern bool _bfd_elf_find_nearest_line_with_alt
2442
  (bfd *, const char *, asymbol **, asection *, bfd_vma,
2443
   const char **, const char **, unsigned int *, unsigned int *);
2444
extern bool _bfd_elf_find_line
2445
  (bfd *, asymbol **, asymbol *, const char **, unsigned int *);
2446
extern bool _bfd_elf_find_inliner_info
2447
  (bfd *, const char **, const char **, unsigned int *);
2448
extern asymbol *_bfd_elf_find_function
2449
  (bfd *, asymbol **, asection *, bfd_vma, const char **, const char **);
2450
#define _bfd_elf_read_minisymbols _bfd_generic_read_minisymbols
2451
#define _bfd_elf_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
2452
extern int _bfd_elf_sizeof_headers
2453
  (bfd *, struct bfd_link_info *);
2454
extern bool _bfd_elf_new_section_hook
2455
  (bfd *, asection *);
2456
extern const struct bfd_elf_special_section *_bfd_elf_get_special_section
2457
  (const char *, const struct bfd_elf_special_section *, unsigned int);
2458
extern const struct bfd_elf_special_section *_bfd_elf_get_sec_type_attr
2459
  (bfd *, asection *);
2460
2461
extern bool _bfd_elf_link_hide_sym_by_version
2462
  (struct bfd_link_info *, struct elf_link_hash_entry *);
2463
2464
/* If the target doesn't have reloc handling written yet:  */
2465
extern bool _bfd_elf_no_info_to_howto
2466
  (bfd *, arelent *, Elf_Internal_Rela *);
2467
2468
extern bool bfd_section_from_shdr
2469
  (bfd *, unsigned int shindex);
2470
extern bool bfd_section_from_phdr
2471
  (bfd *, Elf_Internal_Phdr *, int);
2472
2473
extern int _bfd_elf_symbol_from_bfd_symbol
2474
  (bfd *, asymbol **);
2475
2476
extern Elf_Internal_Sym *bfd_sym_from_r_symndx
2477
  (struct sym_cache *, bfd *, unsigned long);
2478
extern asection *bfd_section_from_elf_index
2479
  (bfd *, unsigned int);
2480
2481
extern struct elf_strtab_hash * _bfd_elf_strtab_init
2482
  (void);
2483
extern void _bfd_elf_strtab_free
2484
  (struct elf_strtab_hash *);
2485
extern size_t _bfd_elf_strtab_add
2486
  (struct elf_strtab_hash *, const char *, bool);
2487
extern void _bfd_elf_strtab_addref
2488
  (struct elf_strtab_hash *, size_t);
2489
extern void _bfd_elf_strtab_delref
2490
  (struct elf_strtab_hash *, size_t);
2491
extern unsigned int _bfd_elf_strtab_refcount
2492
  (struct elf_strtab_hash *, size_t);
2493
extern void _bfd_elf_strtab_clear_all_refs
2494
  (struct elf_strtab_hash *);
2495
extern void *_bfd_elf_strtab_save
2496
  (struct elf_strtab_hash *);
2497
extern void _bfd_elf_strtab_restore
2498
  (struct elf_strtab_hash *, void *);
2499
extern bfd_size_type _bfd_elf_strtab_size
2500
  (struct elf_strtab_hash *);
2501
extern bfd_size_type _bfd_elf_strtab_len
2502
  (struct elf_strtab_hash *);
2503
extern bfd_size_type _bfd_elf_strtab_offset
2504
  (struct elf_strtab_hash *, size_t);
2505
extern const char * _bfd_elf_strtab_str
2506
  (struct elf_strtab_hash *, size_t idx, bfd_size_type *offset);
2507
extern bool _bfd_elf_strtab_emit
2508
  (bfd *, struct elf_strtab_hash *);
2509
extern void _bfd_elf_strtab_finalize
2510
  (struct elf_strtab_hash *);
2511
2512
extern bool bfd_elf_parse_eh_frame_entries
2513
  (bfd *, struct bfd_link_info *);
2514
extern bool _bfd_elf_parse_eh_frame_entry
2515
  (struct bfd_link_info *, asection *, struct elf_reloc_cookie *);
2516
extern void _bfd_elf_parse_eh_frame
2517
  (bfd *, struct bfd_link_info *, asection *, struct elf_reloc_cookie *);
2518
extern bool _bfd_elf_end_eh_frame_parsing
2519
  (struct bfd_link_info *info);
2520
2521
extern bool _bfd_elf_discard_section_eh_frame
2522
  (bfd *, struct bfd_link_info *, asection *,
2523
   bool (*) (bfd_vma, void *), struct elf_reloc_cookie *);
2524
extern bool _bfd_elf_adjust_eh_frame_global_symbol
2525
  (struct elf_link_hash_entry *, void *);
2526
extern bool _bfd_elf_discard_section_eh_frame_hdr
2527
  (struct bfd_link_info *);
2528
extern bfd_vma _bfd_elf_eh_frame_section_offset
2529
  (bfd *, struct bfd_link_info *, asection *, bfd_vma);
2530
extern bool _bfd_elf_write_section_eh_frame
2531
  (bfd *, struct bfd_link_info *, asection *, bfd_byte *);
2532
bool _bfd_elf_write_section_eh_frame_entry
2533
  (bfd *, struct bfd_link_info *, asection *, bfd_byte *);
2534
extern bool _bfd_elf_fixup_eh_frame_hdr (struct bfd_link_info *);
2535
extern bool _bfd_elf_write_section_eh_frame_hdr
2536
  (bfd *, struct bfd_link_info *);
2537
extern bool _bfd_elf_eh_frame_present
2538
  (struct bfd_link_info *);
2539
extern bool _bfd_elf_eh_frame_entry_present
2540
  (struct bfd_link_info *);
2541
extern bool _bfd_elf_maybe_strip_eh_frame_hdr
2542
  (struct bfd_link_info *);
2543
2544
extern bool _bfd_elf_sframe_present
2545
  (struct bfd_link_info *);
2546
extern bool _bfd_elf_parse_sframe
2547
  (bfd *, struct bfd_link_info *, asection *, struct elf_reloc_cookie *);
2548
extern bool _bfd_elf_discard_section_sframe
2549
  (asection *, bool (*) (bfd_vma, void *), struct elf_reloc_cookie *);
2550
extern bool _bfd_elf_merge_section_sframe
2551
  (bfd *, struct bfd_link_info *, asection *, bfd_byte *);
2552
extern bfd_vma _bfd_elf_sframe_section_offset
2553
  (bfd *, struct bfd_link_info *, asection *, bfd_vma);
2554
extern bool _bfd_elf_write_section_sframe
2555
  (bfd *, struct bfd_link_info *);
2556
extern bool _bfd_elf_set_section_sframe (bfd *, struct bfd_link_info *);
2557
2558
extern bool _bfd_elf_hash_symbol (struct elf_link_hash_entry *);
2559
2560
extern long _bfd_elf_link_lookup_local_dynindx
2561
  (struct bfd_link_info *, bfd *, long);
2562
extern bool _bfd_elf_compute_section_file_positions
2563
  (bfd *, struct bfd_link_info *);
2564
extern file_ptr _bfd_elf_assign_file_position_for_section
2565
  (Elf_Internal_Shdr *, file_ptr, bool, unsigned char);
2566
extern bool _bfd_elf_modify_headers
2567
  (bfd *, struct bfd_link_info *);
2568
2569
extern bool _bfd_elf_validate_reloc
2570
  (bfd *, arelent *);
2571
2572
extern bool bfd_elf_record_link_assignment
2573
  (bfd *, struct bfd_link_info *, const char *, bool,
2574
   bool);
2575
extern bool bfd_elf_stack_segment_size (bfd *, struct bfd_link_info *,
2576
          const char *, bfd_vma);
2577
extern bool bfd_elf_size_dynamic_sections
2578
  (bfd *, const char *, const char *, const char *, const char *, const char *,
2579
   const char * const *, struct bfd_link_info *, struct bfd_section **);
2580
extern bool bfd_elf_size_dynsym_hash_dynstr
2581
  (bfd *, struct bfd_link_info *);
2582
extern bool bfd_elf_get_bfd_needed_list
2583
  (bfd *, struct bfd_link_needed_list **);
2584
extern struct bfd_link_needed_list *bfd_elf_get_needed_list
2585
  (bfd *, struct bfd_link_info *);
2586
extern void bfd_elf_set_dt_needed_name
2587
  (bfd *, const char *);
2588
extern const char *bfd_elf_get_dt_soname
2589
  (bfd *);
2590
extern void bfd_elf_set_dyn_lib_class
2591
  (bfd *, enum dynamic_lib_link_class);
2592
extern int bfd_elf_get_dyn_lib_class
2593
  (bfd *);
2594
extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
2595
  (bfd *, struct bfd_link_info *);
2596
extern int bfd_elf_discard_info
2597
  (bfd *, struct bfd_link_info *);
2598
extern unsigned int _bfd_elf_default_action_discarded
2599
  (struct bfd_section *);
2600
extern struct bfd_section *_bfd_elf_tls_setup
2601
  (bfd *, struct bfd_link_info *);
2602
2603
extern bool _bfd_elf_link_create_dynamic_sections
2604
  (bfd *, struct bfd_link_info *);
2605
extern bool _bfd_elf_omit_section_dynsym_default
2606
  (bfd *, struct bfd_link_info *, asection *);
2607
extern bool _bfd_elf_omit_section_dynsym_all
2608
  (bfd *, struct bfd_link_info *, asection *);
2609
extern bool _bfd_elf_create_dynamic_sections
2610
  (bfd *, struct bfd_link_info *);
2611
extern bool _bfd_elf_create_got_section
2612
  (bfd *, struct bfd_link_info *);
2613
extern asection *_bfd_elf_section_for_symbol
2614
  (struct elf_reloc_cookie *, unsigned long, bool);
2615
extern struct elf_link_hash_entry *_bfd_elf_define_linkage_sym
2616
  (bfd *, struct bfd_link_info *, asection *, const char *);
2617
extern void _bfd_elf_init_1_index_section
2618
  (bfd *, struct bfd_link_info *);
2619
extern void _bfd_elf_init_2_index_sections
2620
  (bfd *, struct bfd_link_info *);
2621
2622
extern bool _bfd_elfcore_make_pseudosection
2623
  (bfd *, char *, size_t, ufile_ptr);
2624
extern char *_bfd_elfcore_strndup
2625
  (bfd *, char *, size_t);
2626
2627
extern Elf_Internal_Rela *_bfd_elf_link_read_relocs
2628
  (bfd *, const asection *, void *, Elf_Internal_Rela *, bool);
2629
extern Elf_Internal_Rela *_bfd_elf_link_info_read_relocs
2630
  (bfd *, struct bfd_link_info *, const asection *, void *, Elf_Internal_Rela *,
2631
   bool);
2632
2633
extern bool _bfd_elf_link_output_relocs
2634
  (bfd *, asection *, Elf_Internal_Shdr *, Elf_Internal_Rela *,
2635
   struct elf_link_hash_entry **);
2636
2637
extern void _bfd_elf_link_add_glibc_version_dependency
2638
  (struct elf_find_verdep_info *, const char *[]);
2639
2640
extern void _bfd_elf_link_add_dt_relr_dependency
2641
  (struct elf_find_verdep_info *);
2642
2643
extern bool _bfd_elf_adjust_dynamic_copy
2644
  (struct bfd_link_info *, struct elf_link_hash_entry *, asection *);
2645
2646
extern bool _bfd_elf_dynamic_symbol_p
2647
  (struct elf_link_hash_entry *, struct bfd_link_info *, bool);
2648
2649
extern bool _bfd_elf_symbol_refs_local_p
2650
  (struct elf_link_hash_entry *, struct bfd_link_info *, bool);
2651
2652
extern bfd_reloc_status_type bfd_elf_perform_complex_relocation
2653
  (bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, bfd_vma);
2654
2655
extern bool _bfd_elf_setup_sections
2656
  (bfd *);
2657
2658
extern bool _bfd_elf_get_dynamic_symbols
2659
  (bfd *, Elf_Internal_Phdr *, Elf_Internal_Phdr *, size_t,
2660
   bfd_size_type);
2661
extern asection *_bfd_elf_get_section_from_dynamic_symbol
2662
  (bfd *, Elf_Internal_Sym *);
2663
2664
extern struct bfd_link_hash_entry *bfd_elf_define_start_stop
2665
  (struct bfd_link_info *, const char *, asection *);
2666
2667
extern bool _bfd_elf_init_file_header (bfd *, struct bfd_link_info *);
2668
2669
extern bool _bfd_elf_final_write_processing (bfd *);
2670
2671
extern bfd_cleanup bfd_elf32_object_p
2672
  (bfd *);
2673
extern bfd_cleanup bfd_elf32_core_file_p
2674
  (bfd *);
2675
extern char *bfd_elf32_core_file_failing_command
2676
  (bfd *);
2677
extern int bfd_elf32_core_file_failing_signal
2678
  (bfd *);
2679
extern bool bfd_elf32_core_file_matches_executable_p
2680
  (bfd *, bfd *);
2681
extern int bfd_elf32_core_file_pid
2682
  (bfd *);
2683
extern bool _bfd_elf32_core_find_build_id
2684
  (bfd *, bfd_vma);
2685
2686
extern bool bfd_elf32_swap_symbol_in
2687
  (bfd *, const void *, const void *, Elf_Internal_Sym *);
2688
extern void bfd_elf32_swap_symbol_out
2689
  (bfd *, const Elf_Internal_Sym *, void *, void *);
2690
extern void bfd_elf32_swap_reloc_in
2691
  (bfd *, const bfd_byte *, Elf_Internal_Rela *);
2692
extern void bfd_elf32_swap_reloc_out
2693
  (bfd *, const Elf_Internal_Rela *, bfd_byte *);
2694
extern void bfd_elf32_swap_reloca_in
2695
  (bfd *, const bfd_byte *, Elf_Internal_Rela *);
2696
extern void bfd_elf32_swap_reloca_out
2697
  (bfd *, const Elf_Internal_Rela *, bfd_byte *);
2698
extern void bfd_elf32_swap_phdr_in
2699
  (bfd *, const Elf32_External_Phdr *, Elf_Internal_Phdr *);
2700
extern void bfd_elf32_swap_phdr_out
2701
  (bfd *, const Elf_Internal_Phdr *, Elf32_External_Phdr *);
2702
extern void bfd_elf32_swap_dyn_in
2703
  (bfd *, const void *, Elf_Internal_Dyn *);
2704
extern void bfd_elf32_swap_dyn_out
2705
  (bfd *, const Elf_Internal_Dyn *, void *);
2706
extern long bfd_elf32_slurp_symbol_table
2707
  (bfd *, asymbol **, bool);
2708
extern bool bfd_elf32_write_shdrs_and_ehdr
2709
  (bfd *);
2710
extern int bfd_elf32_write_out_phdrs
2711
  (bfd *, const Elf_Internal_Phdr *, unsigned int);
2712
extern bool bfd_elf32_checksum_contents
2713
  (bfd * , void (*) (const void *, size_t, void *), void *);
2714
extern void bfd_elf32_write_relocs
2715
  (bfd *, asection *, void *);
2716
extern bool bfd_elf32_slurp_reloc_table
2717
  (bfd *, asection *, asymbol **, bool);
2718
2719
extern bfd_cleanup bfd_elf64_object_p
2720
  (bfd *);
2721
extern bfd_cleanup bfd_elf64_core_file_p
2722
  (bfd *);
2723
extern char *bfd_elf64_core_file_failing_command
2724
  (bfd *);
2725
extern int bfd_elf64_core_file_failing_signal
2726
  (bfd *);
2727
extern bool bfd_elf64_core_file_matches_executable_p
2728
  (bfd *, bfd *);
2729
extern int bfd_elf64_core_file_pid
2730
  (bfd *);
2731
extern bool _bfd_elf64_core_find_build_id
2732
  (bfd *, bfd_vma);
2733
2734
extern bool bfd_elf64_swap_symbol_in
2735
  (bfd *, const void *, const void *, Elf_Internal_Sym *);
2736
extern void bfd_elf64_swap_symbol_out
2737
  (bfd *, const Elf_Internal_Sym *, void *, void *);
2738
extern void bfd_elf64_swap_reloc_in
2739
  (bfd *, const bfd_byte *, Elf_Internal_Rela *);
2740
extern void bfd_elf64_swap_reloc_out
2741
  (bfd *, const Elf_Internal_Rela *, bfd_byte *);
2742
extern void bfd_elf64_swap_reloca_in
2743
  (bfd *, const bfd_byte *, Elf_Internal_Rela *);
2744
extern void bfd_elf64_swap_reloca_out
2745
  (bfd *, const Elf_Internal_Rela *, bfd_byte *);
2746
extern void bfd_elf64_swap_phdr_in
2747
  (bfd *, const Elf64_External_Phdr *, Elf_Internal_Phdr *);
2748
extern void bfd_elf64_swap_phdr_out
2749
  (bfd *, const Elf_Internal_Phdr *, Elf64_External_Phdr *);
2750
extern void bfd_elf64_swap_dyn_in
2751
  (bfd *, const void *, Elf_Internal_Dyn *);
2752
extern void bfd_elf64_swap_dyn_out
2753
  (bfd *, const Elf_Internal_Dyn *, void *);
2754
extern long bfd_elf64_slurp_symbol_table
2755
  (bfd *, asymbol **, bool);
2756
extern bool bfd_elf64_write_shdrs_and_ehdr
2757
  (bfd *);
2758
extern int bfd_elf64_write_out_phdrs
2759
  (bfd *, const Elf_Internal_Phdr *, unsigned int);
2760
extern bool bfd_elf64_checksum_contents
2761
  (bfd * , void (*) (const void *, size_t, void *), void *);
2762
extern void bfd_elf64_write_relocs
2763
  (bfd *, asection *, void *);
2764
extern bool bfd_elf64_slurp_reloc_table
2765
  (bfd *, asection *, asymbol **, bool);
2766
2767
extern bool _bfd_elf_default_relocs_compatible
2768
  (const bfd_target *, const bfd_target *);
2769
2770
extern bool _bfd_elf_relocs_compatible
2771
  (const bfd_target *, const bfd_target *);
2772
extern bool _bfd_elf_notice_as_needed
2773
  (bfd *, struct bfd_link_info *, enum notice_asneeded_action);
2774
2775
extern struct bfd_link_hash_entry *_bfd_elf_archive_symbol_lookup
2776
  (bfd *, struct bfd_link_info *, const char *);
2777
extern bool bfd_elf_link_add_symbols
2778
  (bfd *, struct bfd_link_info *);
2779
extern bool _bfd_elf_add_dynamic_entry
2780
  (struct bfd_link_info *, bfd_vma, bfd_vma);
2781
extern bool _bfd_elf_strip_zero_sized_dynamic_sections
2782
  (struct bfd_link_info *);
2783
extern int bfd_elf_add_dt_needed_tag
2784
  (bfd *, struct bfd_link_info *);
2785
extern bool _bfd_elf_link_check_relocs
2786
  (bfd *, struct bfd_link_info *);
2787
extern bool _bfd_elf_link_iterate_on_relocs
2788
 (bfd *, struct bfd_link_info *,
2789
  bool (*) (bfd *, struct bfd_link_info *, asection *,
2790
      const Elf_Internal_Rela *));
2791
2792
extern bool bfd_elf_link_record_dynamic_symbol
2793
  (struct bfd_link_info *, struct elf_link_hash_entry *);
2794
2795
extern int bfd_elf_link_record_local_dynamic_symbol
2796
  (struct bfd_link_info *, bfd *, long);
2797
2798
extern bool _bfd_elf_free_cached_info
2799
  (bfd *);
2800
2801
extern bool _bfd_elf_common_definition
2802
  (Elf_Internal_Sym *);
2803
2804
extern unsigned int _bfd_elf_common_section_index
2805
  (asection *);
2806
2807
extern asection *_bfd_elf_common_section
2808
  (asection *);
2809
2810
extern bfd_vma _bfd_elf_default_got_elt_size
2811
(bfd *, struct bfd_link_info *, struct elf_link_hash_entry *, bfd *,
2812
 unsigned long);
2813
2814
extern bfd_reloc_status_type _bfd_elf_rel_vtable_reloc_fn
2815
  (bfd *, arelent *, struct bfd_symbol *, void *,
2816
   asection *, bfd *, char **);
2817
2818
extern bool bfd_elf_final_link
2819
  (bfd *, struct bfd_link_info *);
2820
2821
extern void _bfd_elf_gc_keep
2822
  (struct bfd_link_info *info);
2823
2824
extern bool bfd_elf_gc_mark_dynamic_ref_symbol
2825
  (struct elf_link_hash_entry *h, void *inf);
2826
2827
extern bool bfd_elf_gc_sections
2828
  (bfd *, struct bfd_link_info *);
2829
2830
extern bool bfd_elf_gc_record_vtinherit
2831
  (bfd *, asection *, struct elf_link_hash_entry *, bfd_vma);
2832
2833
extern bool bfd_elf_gc_record_vtentry
2834
  (bfd *, asection *, struct elf_link_hash_entry *, bfd_vma);
2835
2836
extern asection *_bfd_elf_gc_mark_hook
2837
  (asection *, struct bfd_link_info *, Elf_Internal_Rela *,
2838
   struct elf_link_hash_entry *, Elf_Internal_Sym *);
2839
2840
extern asection *_bfd_elf_gc_mark_rsec
2841
  (struct bfd_link_info *, asection *, elf_gc_mark_hook_fn,
2842
   struct elf_reloc_cookie *, bool *);
2843
2844
extern bool _bfd_elf_gc_mark_reloc
2845
  (struct bfd_link_info *, asection *, elf_gc_mark_hook_fn,
2846
   struct elf_reloc_cookie *);
2847
2848
extern bool _bfd_elf_gc_mark_fdes
2849
  (struct bfd_link_info *, asection *, asection *, elf_gc_mark_hook_fn,
2850
   struct elf_reloc_cookie *);
2851
2852
extern bool _bfd_elf_gc_mark
2853
  (struct bfd_link_info *, asection *, elf_gc_mark_hook_fn);
2854
2855
extern bool _bfd_elf_gc_mark_extra_sections
2856
  (struct bfd_link_info *, elf_gc_mark_hook_fn);
2857
2858
extern bool bfd_elf_gc_common_finalize_got_offsets
2859
  (bfd *, struct bfd_link_info *);
2860
2861
extern bool bfd_elf_gc_common_final_link
2862
  (bfd *, struct bfd_link_info *);
2863
2864
extern bool bfd_elf_reloc_symbol_deleted_p
2865
  (bfd_vma, void *);
2866
2867
extern struct elf_segment_map * _bfd_elf_make_dynamic_segment
2868
  (bfd *, asection *);
2869
2870
extern bool _bfd_elf_map_sections_to_segments
2871
  (bfd *, struct bfd_link_info *, bool *);
2872
2873
extern bool _bfd_elf_is_function_type (unsigned int);
2874
2875
extern bfd_size_type _bfd_elf_maybe_function_sym (const asymbol *, asection *,
2876
              bfd_vma *);
2877
2878
extern asection *_bfd_elf_plt_get_reloc_section (bfd *, const char *);
2879
2880
extern int bfd_elf_get_default_section_type (flagword);
2881
2882
extern bool bfd_elf_lookup_section_flags
2883
  (struct bfd_link_info *, struct flag_info *, asection *);
2884
2885
extern Elf_Internal_Phdr * _bfd_elf_find_segment_containing_section
2886
  (bfd * abfd, asection * section);
2887
2888
/* PowerPC @tls opcode transform/validate.  */
2889
extern unsigned int _bfd_elf_ppc_at_tls_transform
2890
  (unsigned int, unsigned int);
2891
/* PowerPC @tprel opcode transform/validate.  */
2892
extern unsigned int _bfd_elf_ppc_at_tprel_transform
2893
  (unsigned int, unsigned int);
2894
/* PowerPC elf_object_p tweak.  */
2895
extern bool _bfd_elf_ppc_set_arch (bfd *);
2896
/* PowerPC .gnu.attributes handling common to both 32-bit and 64-bit.  */
2897
extern bool _bfd_elf_ppc_merge_fp_attributes
2898
  (bfd *, struct bfd_link_info *);
2899
2900
/* Return an upper bound on the number of bytes required to store a
2901
   copy of ABFD's program header table entries.  Return -1 if an error
2902
   occurs; bfd_get_error will return an appropriate code.  */
2903
extern long bfd_get_elf_phdr_upper_bound
2904
  (bfd *abfd);
2905
2906
/* Copy ABFD's program header table entries to *PHDRS.  The entries
2907
   will be stored as an array of Elf_Internal_Phdr structures, as
2908
   defined in include/elf/internal.h.  To find out how large the
2909
   buffer needs to be, call bfd_get_elf_phdr_upper_bound.
2910
2911
   Return the number of program header table entries read, or -1 if an
2912
   error occurs; bfd_get_error will return an appropriate code.  */
2913
extern int bfd_get_elf_phdrs
2914
  (bfd *abfd, void *phdrs);
2915
2916
/* Exported interface for writing elf corefile notes.  */
2917
extern char *elfcore_write_note
2918
  (bfd *, char *, int *, const char *, int, const void *, int);
2919
extern char *elfcore_write_prpsinfo
2920
  (bfd *, char *, int *, const char *, const char *);
2921
extern char *elfcore_write_prstatus
2922
  (bfd *, char *, int *, long, int, const void *);
2923
extern char * elfcore_write_pstatus
2924
  (bfd *, char *, int *, long, int, const void *);
2925
extern char *elfcore_write_prfpreg
2926
  (bfd *, char *, int *, const void *, int);
2927
extern char *elfcore_write_prxfpreg
2928
  (bfd *, char *, int *, const void *, int);
2929
extern char *elfcore_write_xstatereg
2930
  (bfd *, char *, int *, const void *, int);
2931
extern char *elfcore_write_x86_segbases
2932
  (bfd *, char *, int *, const void *, int);
2933
extern char *elfcore_write_ppc_vmx
2934
  (bfd *, char *, int *, const void *, int);
2935
extern char *elfcore_write_ppc_vsx
2936
  (bfd *, char *, int *, const void *, int);
2937
extern char *elfcore_write_ppc_tar
2938
  (bfd *, char *, int *, const void *, int);
2939
extern char *elfcore_write_ppc_ppr
2940
  (bfd *, char *, int *, const void *, int);
2941
extern char *elfcore_write_ppc_dscr
2942
  (bfd *, char *, int *, const void *, int);
2943
extern char *elfcore_write_ppc_ebb
2944
  (bfd *, char *, int *, const void *, int);
2945
extern char *elfcore_write_ppc_pmu
2946
  (bfd *, char *, int *, const void *, int);
2947
extern char *elfcore_write_ppc_tm_cgpr
2948
  (bfd *, char *, int *, const void *, int);
2949
extern char *elfcore_write_ppc_tm_cfpr
2950
  (bfd *, char *, int *, const void *, int);
2951
extern char *elfcore_write_ppc_tm_cvmx
2952
  (bfd *, char *, int *, const void *, int);
2953
extern char *elfcore_write_ppc_tm_cvsx
2954
  (bfd *, char *, int *, const void *, int);
2955
extern char *elfcore_write_ppc_tm_spr
2956
  (bfd *, char *, int *, const void *, int);
2957
extern char *elfcore_write_ppc_tm_ctar
2958
  (bfd *, char *, int *, const void *, int);
2959
extern char *elfcore_write_ppc_tm_cppr
2960
  (bfd *, char *, int *, const void *, int);
2961
extern char *elfcore_write_ppc_tm_cdscr
2962
  (bfd *, char *, int *, const void *, int);
2963
extern char *elfcore_write_s390_timer
2964
  (bfd *, char *, int *, const void *, int);
2965
extern char *elfcore_write_s390_todcmp
2966
  (bfd *, char *, int *, const void *, int);
2967
extern char *elfcore_write_s390_todpreg
2968
  (bfd *, char *, int *, const void *, int);
2969
extern char *elfcore_write_s390_ctrs
2970
  (bfd *, char *, int *, const void *, int);
2971
extern char *elfcore_write_s390_prefix
2972
  (bfd *, char *, int *, const void *, int);
2973
extern char *elfcore_write_s390_last_break
2974
  (bfd *, char *, int *, const void *, int);
2975
extern char *elfcore_write_s390_system_call
2976
  (bfd *, char *, int *, const void *, int);
2977
extern char *elfcore_write_s390_tdb
2978
  (bfd *, char *, int *, const void *, int);
2979
extern char *elfcore_write_s390_vxrs_low
2980
  (bfd *, char *, int *, const void *, int);
2981
extern char *elfcore_write_s390_vxrs_high
2982
  (bfd *, char *, int *, const void *, int);
2983
extern char *elfcore_write_s390_gs_cb
2984
  (bfd *, char *, int *, const void *, int);
2985
extern char *elfcore_write_s390_gs_bc
2986
  (bfd *, char *, int *, const void *, int);
2987
extern char *elfcore_write_arm_vfp
2988
  (bfd *, char *, int *, const void *, int);
2989
extern char *elfcore_write_aarch_tls
2990
  (bfd *, char *, int *, const void *, int);
2991
extern char *elfcore_write_aarch_hw_break
2992
  (bfd *, char *, int *, const void *, int);
2993
extern char *elfcore_write_aarch_hw_watch
2994
  (bfd *, char *, int *, const void *, int);
2995
extern char *elfcore_write_aarch_sve
2996
  (bfd *, char *, int *, const void *, int);
2997
extern char *elfcore_write_aarch_pauth
2998
  (bfd *, char *, int *, const void *, int);
2999
extern char *elfcore_write_aarch_mte
3000
  (bfd *, char *, int *, const void *, int);
3001
extern char *elfcore_write_aarch_ssve
3002
  (bfd *, char *, int *, const void *, int);
3003
extern char *elfcore_write_aarch_za
3004
  (bfd *, char *, int *, const void *, int);
3005
extern char *elfcore_write_aarch_zt
3006
  (bfd *, char *, int *, const void *, int);
3007
extern char *elfcore_write_arc_v2
3008
  (bfd *, char *, int *, const void *, int);
3009
extern char *elfcore_write_riscv_csr
3010
  (bfd *, char *, int *, const void *, int);
3011
extern char *elfcore_write_gdb_tdesc
3012
  (bfd *, char *, int *, const void *, int);
3013
extern char *elfcore_write_lwpstatus
3014
  (bfd *, char *, int *, long, int, const void *);
3015
extern char *elfcore_write_register_note
3016
  (bfd *, char *, int *, const char *, const void *, int);
3017
extern char *elfcore_write_file_note
3018
  (bfd *, char *, int *, const void*, int);
3019
extern char *elfcore_write_loongarch_cpucfg
3020
  (bfd *, char *, int *, const void*, int);
3021
extern char *elfcore_write_loongarch_lbt
3022
  (bfd *, char *, int *, const void*, int);
3023
extern char *elfcore_write_loongarch_lsx
3024
  (bfd *, char *, int *, const void*, int);
3025
extern char *elfcore_write_loongarch_lasx
3026
  (bfd *, char *, int *, const void*, int);
3027
3028
/* Internal structure which holds information to be included in the
3029
   PRPSINFO section of Linux core files.
3030
3031
   This is an "internal" structure in the sense that it should be used
3032
   to pass information to BFD (via the `elfcore_write_linux_prpsinfo'
3033
   function), so things like endianess shouldn't be an issue.  This
3034
   structure will eventually be converted in one of the
3035
   `elf_external_linux_*' structures and written out to an output bfd
3036
   by one of the functions declared below.  */
3037
3038
struct elf_internal_linux_prpsinfo
3039
  {
3040
    char pr_state;      /* Numeric process state.  */
3041
    char pr_sname;      /* Char for pr_state.  */
3042
    char pr_zomb;     /* Zombie.  */
3043
    char pr_nice;     /* Nice val.  */
3044
    unsigned long pr_flag;    /* Flags.  */
3045
    unsigned int pr_uid;
3046
    unsigned int pr_gid;
3047
    int pr_pid, pr_ppid, pr_pgrp, pr_sid;
3048
    char pr_fname[16 + 1];    /* Filename of executable.  */
3049
    char pr_psargs[80 + 1];   /* Initial part of arg list.  */
3050
  };
3051
3052
/* Linux/most 32-bit archs.  */
3053
extern char *elfcore_write_linux_prpsinfo32
3054
  (bfd *, char *, int *, const struct elf_internal_linux_prpsinfo *);
3055
3056
/* Linux/most 64-bit archs.  */
3057
extern char *elfcore_write_linux_prpsinfo64
3058
  (bfd *, char *, int *, const struct elf_internal_linux_prpsinfo *);
3059
3060
extern bfd *_bfd_elf32_bfd_from_remote_memory
3061
  (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
3062
   int (*target_read_memory) (bfd_vma, bfd_byte *, bfd_size_type));
3063
extern bfd *_bfd_elf64_bfd_from_remote_memory
3064
  (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
3065
   int (*target_read_memory) (bfd_vma, bfd_byte *, bfd_size_type));
3066
3067
extern bfd_vma bfd_elf_obj_attr_size (bfd *);
3068
extern void bfd_elf_set_obj_attr_contents (bfd *, bfd_byte *, bfd_vma);
3069
extern int bfd_elf_get_obj_attr_int (bfd *, int, unsigned int);
3070
extern obj_attribute *bfd_elf_add_obj_attr_int
3071
  (bfd *, int, unsigned int, unsigned int);
3072
#define bfd_elf_add_proc_attr_int(BFD, TAG, VALUE) \
3073
  bfd_elf_add_obj_attr_int ((BFD), OBJ_ATTR_PROC, (TAG), (VALUE))
3074
extern obj_attribute *bfd_elf_add_obj_attr_string
3075
  (bfd *, int, unsigned int, const char *);
3076
#define bfd_elf_add_proc_attr_string(BFD, TAG, VALUE) \
3077
  bfd_elf_add_obj_attr_string ((BFD), OBJ_ATTR_PROC, (TAG), (VALUE))
3078
extern obj_attribute *bfd_elf_add_obj_attr_int_string
3079
  (bfd *, int, unsigned int, unsigned int, const char *);
3080
#define bfd_elf_add_proc_attr_int_string(BFD, TAG, INTVAL, STRVAL) \
3081
  bfd_elf_add_obj_attr_int_string ((BFD), OBJ_ATTR_PROC, (TAG), \
3082
           (INTVAL), (STRVAL))
3083
3084
extern bool _bfd_elf_write_section_build_attributes
3085
  (bfd *, struct bfd_link_info *);
3086
extern char *_bfd_elf_attr_strdup (bfd *, const char *);
3087
extern void _bfd_elf_copy_obj_attributes (bfd *, bfd *);
3088
extern int _bfd_elf_obj_attrs_arg_type (bfd *, int, unsigned int);
3089
extern void _bfd_elf_parse_attributes (bfd *, Elf_Internal_Shdr *);
3090
extern bool _bfd_elf_merge_object_attributes
3091
  (bfd *, struct bfd_link_info *);
3092
extern bool _bfd_elf_merge_unknown_attribute_low (bfd *, bfd *, int);
3093
extern bool _bfd_elf_merge_unknown_attribute_list (bfd *, bfd *);
3094
extern Elf_Internal_Shdr *_bfd_elf_single_rel_hdr (asection *sec);
3095
extern bool elf_read_notes (bfd *, file_ptr, bfd_size_type, size_t);
3096
3097
extern bool _bfd_elf_parse_gnu_properties
3098
  (bfd *, Elf_Internal_Note *);
3099
extern elf_property_list * _bfd_elf_find_property
3100
  (elf_property_list *, unsigned int, elf_property_list **);
3101
extern elf_property * _bfd_elf_get_property
3102
  (bfd *, unsigned int, unsigned int);
3103
extern bfd *_bfd_elf_link_setup_gnu_properties
3104
  (struct bfd_link_info *);
3105
extern bfd_size_type _bfd_elf_convert_gnu_property_size
3106
  (bfd *, bfd *);
3107
extern bool _bfd_elf_convert_gnu_properties
3108
  (bfd *, asection *, bfd *, bfd_byte **, bfd_size_type *);
3109
3110
/* The linker may need to keep track of the number of relocs that it
3111
   decides to copy as dynamic relocs in check_relocs for each symbol.
3112
   This is so that it can later discard them if they are found to be
3113
   unnecessary.  We can store the information in a field extending the
3114
   regular ELF linker hash table.  */
3115
3116
struct elf_dyn_relocs
3117
{
3118
  struct elf_dyn_relocs *next;
3119
3120
  /* The input section of the reloc.  */
3121
  asection *sec;
3122
3123
  /* Total number of relocs copied for the input section.  */
3124
  bfd_size_type count;
3125
3126
  /* Number of pc-relative relocs copied for the input section.  */
3127
  bfd_size_type pc_count;
3128
};
3129
3130
extern bool _bfd_elf_create_ifunc_sections
3131
  (bfd *, struct bfd_link_info *);
3132
extern bool _bfd_elf_allocate_ifunc_dyn_relocs
3133
  (struct bfd_link_info *, struct elf_link_hash_entry *,
3134
   struct elf_dyn_relocs **, unsigned int, unsigned int,
3135
   unsigned int, bool);
3136
3137
extern void elf_append_rela (bfd *, asection *, Elf_Internal_Rela *);
3138
extern void elf_append_rel (bfd *, asection *, Elf_Internal_Rela *);
3139
3140
extern bfd_vma elf64_r_info (bfd_vma, bfd_vma);
3141
extern bfd_vma elf64_r_sym (bfd_vma);
3142
extern bfd_vma elf32_r_info (bfd_vma, bfd_vma);
3143
extern bfd_vma elf32_r_sym (bfd_vma);
3144
3145
extern bool is_debuginfo_file (bfd *);
3146
3147
3148
extern bool _bfd_elf_init_secondary_reloc_section
3149
  (bfd *, Elf_Internal_Shdr *, const char *, unsigned int);
3150
extern bool _bfd_elf_slurp_secondary_reloc_section
3151
  (bfd *, asection *, asymbol **, bool);
3152
extern bool _bfd_elf_copy_special_section_fields
3153
  (const bfd *, bfd *, const Elf_Internal_Shdr *, Elf_Internal_Shdr *);
3154
extern bool _bfd_elf_write_secondary_reloc_section
3155
  (bfd *, asection *);
3156
extern unsigned int _bfd_elf_symbol_section_index
3157
  (bfd *, elf_symbol_type *);
3158
3159
extern asection *_bfd_elf_readonly_dynrelocs
3160
  (struct elf_link_hash_entry *);
3161
extern bool _bfd_elf_maybe_set_textrel
3162
  (struct elf_link_hash_entry *, void *);
3163
3164
extern bool _bfd_elf_add_dynamic_tags
3165
  (bfd *, struct bfd_link_info *, bool);
3166
3167
extern bool _bfd_elf_mmap_section_contents
3168
  (bfd *abfd, asection *section, bfd_byte **buf);
3169
extern void _bfd_elf_munmap_section_contents
3170
  (asection *, void *);
3171
extern bool _bfd_elf_link_mmap_section_contents
3172
  (bfd *abfd, asection *section, bfd_byte **buf);
3173
extern void _bfd_elf_link_munmap_section_contents
3174
  (asection *);
3175
3176
extern struct elf_link_hash_entry * _bfd_elf_get_link_hash_entry
3177
  (struct elf_link_hash_entry **, unsigned int, Elf_Internal_Shdr *);
3178
3179
/* Large common section.  */
3180
extern asection _bfd_elf_large_com_section;
3181
3182
/* Hash for local symbol with the first section id, ID, in the input
3183
   file and the local symbol index, SYM.  */
3184
#define ELF_LOCAL_SYMBOL_HASH(ID, SYM) \
3185
0
  (((((ID) & 0xffU) << 24) | (((ID) & 0xff00) << 8)) \
3186
0
   ^ (SYM) ^ (((ID) & 0xffff0000U) >> 16))
3187
3188
/* This is the condition under which finish_dynamic_symbol will be called.
3189
   If our finish_dynamic_symbol isn't called, we'll need to do something
3190
   about initializing any .plt and .got entries in relocate_section.  */
3191
#define WILL_CALL_FINISH_DYNAMIC_SYMBOL(DYN, SHARED, H) \
3192
0
  ((DYN)                \
3193
0
   && ((SHARED) || !(H)->forced_local)         \
3194
0
   && ((H)->dynindx != -1 || (H)->forced_local))
3195
3196
/* This macro is to avoid lots of duplicated code in the body
3197
   of xxx_relocate_section() in the various elfxx-xxxx.c files.  */
3198
#define RELOC_FOR_GLOBAL_SYMBOL(info, input_bfd, input_section, rel,  \
3199
        r_symndx, symtab_hdr, sym_hashes, \
3200
        h, sec, relocation,     \
3201
        unresolved_reloc, warned, ignored)  \
3202
0
  do                  \
3203
0
    {                 \
3204
0
      /* It seems this can happen with erroneous or unsupported   \
3205
0
   input (mixing a.out and elf in an archive, for example.)  */ \
3206
0
      if (sym_hashes == NULL)           \
3207
0
  return false;             \
3208
0
                  \
3209
0
      h = sym_hashes[r_symndx - symtab_hdr->sh_info];     \
3210
0
                  \
3211
0
      if (info->wrap_hash != NULL          \
3212
0
    && (input_section->flags & SEC_DEBUGGING) != 0)   \
3213
0
  {               \
3214
0
    struct bfd_link_hash_entry * new_h;       \
3215
0
    new_h = unwrap_hash_lookup (info, input_bfd, &h->root); \
3216
0
    /* PR 31710: This lookup can fail if the input source has a \
3217
0
       symbol that starts with __wrap_.  */     \
3218
0
    if (new_h != NULL)           \
3219
0
      h = (struct elf_link_hash_entry *) new_h;     \
3220
0
  }               \
3221
0
                  \
3222
0
      while (h->root.type == bfd_link_hash_indirect      \
3223
0
       || h->root.type == bfd_link_hash_warning)     \
3224
0
  h = (struct elf_link_hash_entry *) h->root.u.i.link;   \
3225
0
                  \
3226
0
      warned = false;             \
3227
0
      ignored = false;              \
3228
0
      unresolved_reloc = false;           \
3229
0
      relocation = 0;             \
3230
0
      if (h->root.type == bfd_link_hash_defined        \
3231
0
    || h->root.type == bfd_link_hash_defweak)     \
3232
0
  {               \
3233
0
    sec = h->root.u.def.section;          \
3234
0
    if (sec == NULL            \
3235
0
        || sec->output_section == NULL)       \
3236
0
      /* Set a flag that will be cleared later if we find a \
3237
0
         relocation value for this symbol.  output_section  \
3238
0
         is typically NULL for symbols satisfied by a shared  \
3239
0
         library.  */           \
3240
0
      unresolved_reloc = true;         \
3241
0
    else                \
3242
0
      relocation = (h->root.u.def.value       \
3243
0
        + sec->output_section->vma      \
3244
0
        + sec->output_offset);     \
3245
0
  }               \
3246
0
      else if (h->root.type == bfd_link_hash_undefweak)     \
3247
0
  ;                \
3248
0
      else if (info->unresolved_syms_in_objects == RM_IGNORE    \
3249
0
         && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)   \
3250
0
  ignored = true;             \
3251
0
      else if (!bfd_link_relocatable (info))        \
3252
0
  {               \
3253
0
    bool err = ((info->unresolved_syms_in_objects == RM_DIAGNOSE  \
3254
0
           && !info->warn_unresolved_syms)     \
3255
0
          || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT);  \
3256
0
    (*info->callbacks->undefined_symbol) (info,     \
3257
0
            h->root.root.string,  \
3258
0
            input_bfd,    \
3259
0
            input_section,    \
3260
0
            rel->r_offset, err);  \
3261
0
    warned = true;            \
3262
0
  }               \
3263
0
      (void) unresolved_reloc;            \
3264
0
      (void) warned;              \
3265
0
      (void) ignored;             \
3266
0
    }                 \
3267
0
  while (0)
3268
3269
/* This macro is to avoid lots of duplicated code in the body of the
3270
   loop over relocations in xxx_relocate_section() in the various
3271
   elfxx-xxxx.c files.
3272
3273
   Handle relocations against symbols from removed linkonce sections,
3274
   or sections discarded by a linker script.  When doing a relocatable
3275
   link, we remove such relocations.  Otherwise, we just want the
3276
   section contents zeroed and avoid any special processing.  */
3277
#define RELOC_AGAINST_DISCARDED_SECTION(info, input_bfd, input_section, \
3278
          rel, count, relend,   \
3279
          howto, index, contents)   \
3280
0
  {                 \
3281
0
    int i_;               \
3282
0
    _bfd_clear_contents (howto, input_bfd, input_section,   \
3283
0
       contents, rel[index].r_offset);    \
3284
0
                  \
3285
0
    if (bfd_link_relocatable (info)         \
3286
0
  && (input_section->flags & SEC_DEBUGGING))      \
3287
0
      {                 \
3288
0
  /* Only remove relocations in debug sections since other  \
3289
0
     sections may require relocations.  */      \
3290
0
  Elf_Internal_Shdr *rel_hdr;         \
3291
0
                  \
3292
0
  rel_hdr = _bfd_elf_single_rel_hdr (input_section->output_section); \
3293
0
                  \
3294
0
  /* Avoid empty output section.  */        \
3295
0
  if (rel_hdr->sh_size > rel_hdr->sh_entsize)     \
3296
0
    {               \
3297
0
      rel_hdr->sh_size -= rel_hdr->sh_entsize;      \
3298
0
      rel_hdr = _bfd_elf_single_rel_hdr (input_section);    \
3299
0
      rel_hdr->sh_size -= rel_hdr->sh_entsize;      \
3300
0
                  \
3301
0
      memmove (rel, rel + count,          \
3302
0
         (relend - rel - count) * sizeof (*rel));   \
3303
0
                  \
3304
0
      input_section->reloc_count -= count;      \
3305
0
      relend -= count;            \
3306
0
      rel--;              \
3307
0
      continue;             \
3308
0
    }                \
3309
0
      }                 \
3310
0
                  \
3311
0
    for (i_ = 0; i_ < count; i_++)         \
3312
0
      {                 \
3313
0
  rel[i_].r_info = 0;           \
3314
0
  rel[i_].r_addend = 0;           \
3315
0
      }                  \
3316
0
    rel += count - 1;             \
3317
0
    continue;               \
3318
0
  }
3319
3320
/* Will a symbol be bound to the definition within the shared
3321
   library, if any.  A unique symbol can never be bound locally.  */
3322
#define SYMBOLIC_BIND(INFO, H) \
3323
0
    (!(H)->unique_global \
3324
0
     && ((INFO)->symbolic \
3325
0
   || (H)->start_stop \
3326
0
   || ((INFO)->dynamic && !(H)->dynamic)))
3327
3328
/* Determine if a section contains CTF data, using its name.  */
3329
static inline bool
3330
bfd_section_is_ctf (const asection *sec)
3331
0
{
3332
0
  const char *name = bfd_section_name (sec);
3333
0
  return startswith (name, ".ctf") && (name[4] == 0 || name[4] == '.');
3334
0
}
Unexecuted instantiation: fuzz_nm.c:bfd_section_is_ctf
Unexecuted instantiation: bfd.c:bfd_section_is_ctf
Unexecuted instantiation: libbfd.c:bfd_section_is_ctf
Unexecuted instantiation: opncls.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-x86-64.c:bfd_section_is_ctf
Unexecuted instantiation: elfxx-x86.c:bfd_section_is_ctf
Unexecuted instantiation: elf-ifunc.c:bfd_section_is_ctf
Unexecuted instantiation: elf-vxworks.c:bfd_section_is_ctf
Unexecuted instantiation: elf64.c:bfd_section_is_ctf
Unexecuted instantiation: elf.c:bfd_section_is_ctf
Unexecuted instantiation: elflink.c:bfd_section_is_ctf
Unexecuted instantiation: elf-attrs.c:bfd_section_is_ctf
Unexecuted instantiation: elf-strtab.c:bfd_section_is_ctf
Unexecuted instantiation: elf-eh-frame.c:bfd_section_is_ctf
Unexecuted instantiation: elf-sframe.c:bfd_section_is_ctf
Unexecuted instantiation: dwarf1.c:bfd_section_is_ctf
Unexecuted instantiation: dwarf2.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-i386.c:bfd_section_is_ctf
Unexecuted instantiation: elf32.c:bfd_section_is_ctf
Unexecuted instantiation: cofflink.c:bfd_section_is_ctf
Unexecuted instantiation: coffgen.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-gen.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-gen.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-aarch64.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-ia64.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-kvx.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-loongarch.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-mips.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-riscv.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-score.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-score7.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-aarch64.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-alpha.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-amdgcn.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-bpf.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-hppa.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-ia64-vms.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-ia64.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-kvx.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-loongarch.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-mips.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-mmix.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-nfp.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-ppc.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-riscv.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-s390.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-sparc.c:bfd_section_is_ctf
Unexecuted instantiation: elf64-tilegx.c:bfd_section_is_ctf
Unexecuted instantiation: elfn32-mips.c:bfd_section_is_ctf
Unexecuted instantiation: elfxx-aarch64.c:bfd_section_is_ctf
Unexecuted instantiation: elfxx-ia64.c:bfd_section_is_ctf
Unexecuted instantiation: elfxx-kvx.c:bfd_section_is_ctf
Unexecuted instantiation: elfxx-loongarch.c:bfd_section_is_ctf
Unexecuted instantiation: elfxx-mips.c:bfd_section_is_ctf
Unexecuted instantiation: elfxx-riscv.c:bfd_section_is_ctf
Unexecuted instantiation: elf-m10200.c:bfd_section_is_ctf
Unexecuted instantiation: elf-m10300.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-am33lin.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-arc.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-arm.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-avr.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-bfin.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-cr16.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-cris.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-crx.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-csky.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-d10v.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-d30v.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-dlx.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-epiphany.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-fr30.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-frv.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-ft32.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-h8300.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-hppa.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-ip2k.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-iq2000.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-lm32.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-m32c.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-m32r.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-m68hc11.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-m68hc12.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-m68hc1x.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-m68k.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-mcore.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-mep.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-metag.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-microblaze.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-moxie.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-msp430.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-mt.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-nds32.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-or1k.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-pj.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-ppc.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-pru.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-rl78.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-rx.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-s12z.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-s390.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-sh.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-sparc.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-spu.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-tic6x.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-tilegx.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-tilepro.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-v850.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-vax.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-visium.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-wasm32.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-xgate.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-xstormy16.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-xtensa.c:bfd_section_is_ctf
Unexecuted instantiation: elf32-z80.c:bfd_section_is_ctf
Unexecuted instantiation: elfxx-sparc.c:bfd_section_is_ctf
Unexecuted instantiation: elfxx-tilegx.c:bfd_section_is_ctf
Unexecuted instantiation: cpu-nds32.c:bfd_section_is_ctf
Unexecuted instantiation: compress.c:bfd_section_is_ctf
Unexecuted instantiation: elf-properties.c:bfd_section_is_ctf
Unexecuted instantiation: merge.c:bfd_section_is_ctf
Unexecuted instantiation: elf-nacl.c:bfd_section_is_ctf
Unexecuted instantiation: fuzz_objdump.c:bfd_section_is_ctf
Unexecuted instantiation: arc-dis.c:bfd_section_is_ctf
Unexecuted instantiation: arm-dis.c:bfd_section_is_ctf
Unexecuted instantiation: csky-dis.c:bfd_section_is_ctf
Unexecuted instantiation: kvx-dis.c:bfd_section_is_ctf
Unexecuted instantiation: m32c-dis.c:bfd_section_is_ctf
Unexecuted instantiation: mep-dis.c:bfd_section_is_ctf
Unexecuted instantiation: ppc-dis.c:bfd_section_is_ctf
Unexecuted instantiation: pru-dis.c:bfd_section_is_ctf
Unexecuted instantiation: rl78-dis.c:bfd_section_is_ctf
Unexecuted instantiation: score-dis.c:bfd_section_is_ctf
Unexecuted instantiation: score7-dis.c:bfd_section_is_ctf
Unexecuted instantiation: tilepro-dis.c:bfd_section_is_ctf
Unexecuted instantiation: wasm32-dis.c:bfd_section_is_ctf
Unexecuted instantiation: aarch64-dis.c:bfd_section_is_ctf
Unexecuted instantiation: bpf-dis.c:bfd_section_is_ctf
Unexecuted instantiation: mips-dis.c:bfd_section_is_ctf
Unexecuted instantiation: nfp-dis.c:bfd_section_is_ctf
Unexecuted instantiation: riscv-dis.c:bfd_section_is_ctf
Unexecuted instantiation: tilegx-dis.c:bfd_section_is_ctf
Unexecuted instantiation: ctf-serialize.c:bfd_section_is_ctf
Unexecuted instantiation: ctf-open-bfd.c:bfd_section_is_ctf
Unexecuted instantiation: fuzz_addr2line.c:bfd_section_is_ctf
Unexecuted instantiation: fuzz_as.c:bfd_section_is_ctf
Unexecuted instantiation: codeview.c:bfd_section_is_ctf
Unexecuted instantiation: cond.c:bfd_section_is_ctf
Unexecuted instantiation: depend.c:bfd_section_is_ctf
Unexecuted instantiation: dw2gencfi.c:bfd_section_is_ctf
Unexecuted instantiation: dwarf2dbg.c:bfd_section_is_ctf
Unexecuted instantiation: ehopt.c:bfd_section_is_ctf
Unexecuted instantiation: expr.c:bfd_section_is_ctf
Unexecuted instantiation: frags.c:bfd_section_is_ctf
Unexecuted instantiation: gen-sframe.c:bfd_section_is_ctf
Unexecuted instantiation: input-scrub.c:bfd_section_is_ctf
Unexecuted instantiation: listing.c:bfd_section_is_ctf
Unexecuted instantiation: macro.c:bfd_section_is_ctf
Unexecuted instantiation: messages.c:bfd_section_is_ctf
Unexecuted instantiation: output-file.c:bfd_section_is_ctf
Unexecuted instantiation: read.c:bfd_section_is_ctf
Unexecuted instantiation: remap.c:bfd_section_is_ctf
Unexecuted instantiation: sb.c:bfd_section_is_ctf
Unexecuted instantiation: scfidw2gen.c:bfd_section_is_ctf
Unexecuted instantiation: stabs.c:bfd_section_is_ctf
Unexecuted instantiation: subsegs.c:bfd_section_is_ctf
Unexecuted instantiation: symbols.c:bfd_section_is_ctf
Unexecuted instantiation: write.c:bfd_section_is_ctf
Unexecuted instantiation: app.c:bfd_section_is_ctf
Unexecuted instantiation: atof-generic.c:bfd_section_is_ctf
Unexecuted instantiation: ecoff.c:bfd_section_is_ctf
Unexecuted instantiation: flonum-copy.c:bfd_section_is_ctf
Unexecuted instantiation: ginsn.c:bfd_section_is_ctf
Unexecuted instantiation: hash.c:bfd_section_is_ctf
Unexecuted instantiation: input-file.c:bfd_section_is_ctf
Unexecuted instantiation: scfi.c:bfd_section_is_ctf
Unexecuted instantiation: sframe-opt.c:bfd_section_is_ctf
Unexecuted instantiation: tc-i386.c:bfd_section_is_ctf
Unexecuted instantiation: obj-elf.c:bfd_section_is_ctf
Unexecuted instantiation: atof-ieee.c:bfd_section_is_ctf
Unexecuted instantiation: fuzz_dwarf.c:bfd_section_is_ctf
Unexecuted instantiation: fuzz_objcopy.c:bfd_section_is_ctf
3335
3336
#ifdef __cplusplus
3337
}
3338
#endif
3339
#endif /* _LIBELF_H_ */