Coverage Report

Created: 2025-06-24 06:45

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