Do without ld ENABLE_PLUGINS
[deliverable/binutils-gdb.git] / ld / ldlang.h
CommitLineData
252b5132 1/* ldlang.h - linker command language support
b3adc24a 2 Copyright (C) 1991-2020 Free Software Foundation, Inc.
5cc18311 3
f96b4a7b 4 This file is part of the GNU Binutils.
5cc18311 5
f96b4a7b 6 This program is free software; you can redistribute it and/or modify
252b5132 7 it under the terms of the GNU General Public License as published by
f96b4a7b
NC
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
5cc18311 10
f96b4a7b 11 This program is distributed in the hope that it will be useful,
252b5132
RH
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
5cc18311 15
252b5132 16 You should have received a copy of the GNU General Public License
f96b4a7b
NC
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
19 MA 02110-1301, USA. */
252b5132
RH
20
21#ifndef LDLANG_H
22#define LDLANG_H
23
a747ee4d
NC
24#define DEFAULT_MEMORY_REGION "*default*"
25
3edf7b9f
DR
26#define SECTION_NAME_MAP_LENGTH (16)
27
6bdafbeb
NC
28typedef enum
29{
252b5132
RH
30 lang_input_file_is_l_enum,
31 lang_input_file_is_symbols_only_enum,
32 lang_input_file_is_marker_enum,
33 lang_input_file_is_fake_enum,
34 lang_input_file_is_search_file_enum,
35 lang_input_file_is_file_enum
36} lang_input_file_enum_type;
37
6bdafbeb
NC
38struct _fill_type
39{
2c382fb6
AM
40 size_t size;
41 unsigned char data[1];
42};
89cdebba 43
6bdafbeb
NC
44typedef struct statement_list
45{
4a93e180
NC
46 union lang_statement_union * head;
47 union lang_statement_union ** tail;
252b5132
RH
48} lang_statement_list_type;
49
4a93e180
NC
50typedef struct memory_region_name_struct
51{
52 const char * name;
53 struct memory_region_name_struct * next;
54} lang_memory_region_name;
55
6bdafbeb
NC
56typedef struct memory_region_struct
57{
4a93e180 58 lang_memory_region_name name_list;
252b5132 59 struct memory_region_struct *next;
cc9ad334 60 union etree_union *origin_exp;
252b5132
RH
61 bfd_vma origin;
62 bfd_size_type length;
cc9ad334 63 union etree_union *length_exp;
252b5132 64 bfd_vma current;
66e28d60 65 union lang_statement_union *last_os;
252b5132
RH
66 flagword flags;
67 flagword not_flags;
b34976b6 68 bfd_boolean had_full_message;
89cdebba
KH
69} lang_memory_region_type;
70
1e9cc1c2
NC
71enum statement_enum
72{
1e9cc1c2 73 lang_address_statement_enum,
dc02848a 74 lang_assignment_statement_enum,
1e9cc1c2 75 lang_data_statement_enum,
dc02848a 76 lang_fill_statement_enum,
1e9cc1c2 77 lang_group_statement_enum,
dc02848a
AM
78 lang_input_section_enum,
79 lang_input_statement_enum,
1e9cc1c2 80 lang_insert_statement_enum,
dc02848a
AM
81 lang_output_section_statement_enum,
82 lang_output_statement_enum,
83 lang_padding_statement_enum,
84 lang_reloc_statement_enum,
85 lang_target_statement_enum,
86 lang_wild_statement_enum,
87 lang_constructors_statement_enum,
88 lang_object_symbols_statement_enum
1e9cc1c2
NC
89};
90
6bdafbeb
NC
91typedef struct lang_statement_header_struct
92{
e368bf56 93 /* Next pointer for statement_list statement list. */
89cdebba 94 union lang_statement_union *next;
1e9cc1c2 95 enum statement_enum type;
252b5132
RH
96} lang_statement_header_type;
97
6bdafbeb
NC
98typedef struct
99{
252b5132
RH
100 lang_statement_header_type header;
101 union etree_union *exp;
102} lang_assignment_statement_type;
103
6bdafbeb
NC
104typedef struct lang_target_statement_struct
105{
252b5132
RH
106 lang_statement_header_type header;
107 const char *target;
108} lang_target_statement_type;
109
6bdafbeb
NC
110typedef struct lang_output_statement_struct
111{
252b5132
RH
112 lang_statement_header_type header;
113 const char *name;
114} lang_output_statement_type;
115
116/* Section types specified in a linker script. */
117
6bdafbeb
NC
118enum section_type
119{
252b5132 120 normal_section,
7b243801 121 first_overlay_section,
152d792f 122 overlay_section,
252b5132 123 noload_section,
02a38f92 124 noalloc_section
252b5132
RH
125};
126
6bdafbeb
NC
127/* This structure holds a list of program headers describing
128 segments in which this section should be placed. */
252b5132 129
6bdafbeb
NC
130typedef struct lang_output_section_phdr_list
131{
252b5132
RH
132 struct lang_output_section_phdr_list *next;
133 const char *name;
b34976b6 134 bfd_boolean used;
6bdafbeb 135} lang_output_section_phdr_list;
252b5132 136
6bdafbeb
NC
137typedef struct lang_output_section_statement_struct
138{
252b5132 139 lang_statement_header_type header;
252b5132 140 lang_statement_list_type children;
afd7a018 141 struct lang_output_section_statement_struct *next;
218868ba 142 struct lang_output_section_statement_struct *prev;
252b5132 143 const char *name;
252b5132 144 asection *bfd_section;
6bdafbeb
NC
145 lang_memory_region_type *region;
146 lang_memory_region_type *lma_region;
2c382fb6 147 fill_type *fill;
7fabd029 148 union etree_union *addr_tree;
252b5132 149 union etree_union *load_base;
3d9c8f6b
AM
150 union etree_union *section_alignment;
151 union etree_union *subsection_alignment;
252b5132 152
9f88b410
RS
153 /* If non-null, an expression to evaluate after setting the section's
154 size. The expression is evaluated inside REGION (above) with '.'
155 set to the end of the section. Used in the last overlay section
156 to move '.' past all the overlaid sections. */
157 union etree_union *update_dot_tree;
158
6bdafbeb 159 lang_output_section_phdr_list *phdrs;
7fabd029
AM
160
161 unsigned int block_value;
7fabd029
AM
162 int constraint;
163 flagword flags;
164 enum section_type sectype;
cde9e0be
AM
165 unsigned int processed_vma : 1;
166 unsigned int processed_lma : 1;
7fabd029 167 unsigned int all_input_readonly : 1;
49c13adb 168 /* If this section should be ignored. */
e4492aa0 169 unsigned int ignored : 1;
6d8bf25d 170 /* If this section should update "dot". Prevents section being ignored. */
e4492aa0 171 unsigned int update_dot : 1;
d2667025
AM
172 /* If this section is after assignment to _end. */
173 unsigned int after_end : 1;
1eec346e
NC
174 /* If this section uses the alignment of its input sections. */
175 unsigned int align_lma_with_input : 1;
252b5132
RH
176} lang_output_section_statement_type;
177
6bdafbeb
NC
178typedef struct
179{
252b5132 180 lang_statement_header_type header;
2c382fb6 181 fill_type *fill;
252b5132
RH
182 int size;
183 asection *output_section;
184} lang_fill_statement_type;
185
6bdafbeb
NC
186typedef struct
187{
252b5132
RH
188 lang_statement_header_type header;
189 unsigned int type;
89cdebba 190 union etree_union *exp;
252b5132
RH
191 bfd_vma value;
192 asection *output_section;
7fabd029 193 bfd_vma output_offset;
252b5132
RH
194} lang_data_statement_type;
195
196/* Generate a reloc in the output file. */
197
6bdafbeb
NC
198typedef struct
199{
252b5132
RH
200 lang_statement_header_type header;
201
202 /* Reloc to generate. */
203 bfd_reloc_code_real_type reloc;
204
205 /* Reloc howto structure. */
206 reloc_howto_type *howto;
207
6bdafbeb
NC
208 /* Section to generate reloc against.
209 Exactly one of section and name must be NULL. */
252b5132
RH
210 asection *section;
211
6bdafbeb
NC
212 /* Name of symbol to generate reloc against.
213 Exactly one of section and name must be NULL. */
252b5132
RH
214 const char *name;
215
216 /* Expression for addend. */
217 union etree_union *addend_exp;
218
219 /* Resolved addend. */
220 bfd_vma addend_value;
221
222 /* Output section where reloc should be performed. */
223 asection *output_section;
224
7fabd029
AM
225 /* Offset within output section. */
226 bfd_vma output_offset;
252b5132
RH
227} lang_reloc_statement_type;
228
66be1055 229struct lang_input_statement_flags
6bdafbeb 230{
66be1055 231 /* 1 means this file was specified in a -l option. */
b7f95647 232 unsigned int maybe_archive : 1;
5cc18311 233
d4ae5fb0
AM
234 /* 1 means this file was specified in a -l:namespec option. */
235 unsigned int full_name_provided : 1;
236
252b5132 237 /* 1 means search a set of directories for this file. */
66be1055 238 unsigned int search_dirs : 1;
5cc18311 239
f4a23d42 240 /* 1 means this was found when processing a script in the sysroot. */
409d7240 241 unsigned int sysrooted : 1;
e3f2db7f 242
252b5132
RH
243 /* 1 means this is base file of incremental load.
244 Do not load this file's text or data.
5cc18311 245 Also default text_start to after this file's bss. */
66be1055 246 unsigned int just_syms : 1;
252b5132
RH
247
248 /* Whether to search for this entry as a dynamic archive. */
409d7240 249 unsigned int dynamic : 1;
252b5132 250
15fc2e13
AM
251 /* Set if a DT_NEEDED tag should be added not just for the dynamic library
252 explicitly given by this entry but also for any dynamic libraries in
253 this entry's needed list. */
ddbb8a31 254 unsigned int add_DT_NEEDED_for_dynamic : 1;
e56f61be 255
15fc2e13
AM
256 /* Set if this entry should cause a DT_NEEDED tag only when some
257 regular file references its symbols (ie. --as-needed is in effect). */
ddbb8a31 258 unsigned int add_DT_NEEDED_for_regular : 1;
4a43e768 259
252b5132 260 /* Whether to include the entire contents of an archive. */
409d7240 261 unsigned int whole_archive : 1;
252b5132 262
c4b78195 263 /* Set when bfd opening is successful. */
409d7240 264 unsigned int loaded : 1;
5cc18311 265
409d7240 266 unsigned int real : 1;
c4b78195
NC
267
268 /* Set if the file does not exist. */
269 unsigned int missing_file : 1;
5d3236ee 270
e77620a5
AM
271 /* Set if reloading an archive or --as-needed lib. */
272 unsigned int reload : 1;
273
0381901e 274#if BFD_SUPPORTS_PLUGINS
5d3236ee
DK
275 /* Set if the file was claimed by a plugin. */
276 unsigned int claimed : 1;
277
8543fde5
DK
278 /* Set if the file was claimed from an archive. */
279 unsigned int claim_archive : 1;
ce875075
AM
280
281 /* Set if added by the lto plugin add_input_file callback. */
282 unsigned int lto_output : 1;
0381901e 283#endif /* BFD_SUPPORTS_PLUGINS */
26278bb8
UD
284
285 /* Head of list of pushed flags. */
286 struct lang_input_statement_flags *pushed;
66be1055
AM
287};
288
289typedef struct lang_input_statement_struct
290{
291 lang_statement_header_type header;
292 /* Name of this file. */
293 const char *filename;
294 /* Name to use for the symbol giving address of text start.
295 Usually the same as filename, but for a file spec'd with
296 -l this is the -l switch itself rather than the filename. */
297 const char *local_sym_name;
16171946
FS
298 /* Extra search path. Used to find a file relative to the
299 directory of the current linker script. */
300 const char *extra_search_path;
66be1055
AM
301
302 bfd *the_bfd;
303
1ff6de03
NA
304 ctf_archive_t *the_ctf;
305
66be1055
AM
306 struct flag_info *section_flag_list;
307
e368bf56 308 /* Next pointer for file_chain statement list. */
36983a93 309 struct lang_input_statement_struct *next;
66be1055 310
e368bf56 311 /* Next pointer for input_file_chain statement list. */
36983a93 312 struct lang_input_statement_struct *next_real_file;
66be1055
AM
313
314 const char *target;
8543fde5 315
66be1055 316 struct lang_input_statement_flags flags;
252b5132
RH
317} lang_input_statement_type;
318
6bdafbeb
NC
319typedef struct
320{
252b5132
RH
321 lang_statement_header_type header;
322 asection *section;
5cc18311 323} lang_input_section_type;
252b5132 324
7dd9c6eb
AM
325struct map_symbol_def {
326 struct bfd_link_hash_entry *entry;
327 struct map_symbol_def *next;
328};
329
6fcc66ab
AM
330/* For input sections, when writing a map file: head / tail of a linked
331 list of hash table entries for symbols defined in this section. */
332typedef struct input_section_userdata_struct
333{
334 struct map_symbol_def *map_symbol_def_head;
335 struct map_symbol_def **map_symbol_def_tail;
336 unsigned long map_symbol_def_count;
337} input_section_userdata_type;
338
00f93c44
AM
339static inline bfd_boolean
340bfd_input_just_syms (const bfd *abfd)
341{
342 lang_input_statement_type *is = bfd_usrdata (abfd);
343 return is != NULL && is->flags.just_syms;
344}
6fcc66ab 345
72223188
JJ
346typedef struct lang_wild_statement_struct lang_wild_statement_type;
347
348typedef void (*callback_t) (lang_wild_statement_type *, struct wildcard_list *,
b9c361e0
JL
349 asection *, struct flag_info *,
350 lang_input_statement_type *, void *);
72223188
JJ
351
352typedef void (*walk_wild_section_handler_t) (lang_wild_statement_type *,
353 lang_input_statement_type *,
354 callback_t callback,
355 void *data);
356
390fbbf1
AM
357typedef bfd_boolean (*lang_match_sec_type_func) (bfd *, const asection *,
358 bfd *, const asection *);
359
e6f2cbf5
L
360/* Binary search tree structure to efficiently sort sections by
361 name. */
362typedef struct lang_section_bst
363{
364 asection *section;
365 struct lang_section_bst *left;
366 struct lang_section_bst *right;
367} lang_section_bst_type;
368
72223188 369struct lang_wild_statement_struct
6bdafbeb 370{
252b5132 371 lang_statement_header_type header;
252b5132 372 const char *filename;
b34976b6 373 bfd_boolean filenames_sorted;
b6bf44ba 374 struct wildcard_list *section_list;
b34976b6 375 bfd_boolean keep_sections;
252b5132 376 lang_statement_list_type children;
8f1732fc 377 struct name_list *exclude_name_list;
72223188
JJ
378
379 walk_wild_section_handler_t walk_wild_section_handler;
380 struct wildcard_list *handler_data[4];
e6f2cbf5 381 lang_section_bst_type *tree;
ae17ab41 382 struct flag_info *section_flag_list;
72223188 383};
252b5132 384
6bdafbeb
NC
385typedef struct lang_address_statement_struct
386{
252b5132 387 lang_statement_header_type header;
89cdebba
KH
388 const char *section_name;
389 union etree_union *address;
ba916c8a 390 const segment_type *segment;
252b5132
RH
391} lang_address_statement_type;
392
6bdafbeb
NC
393typedef struct
394{
252b5132
RH
395 lang_statement_header_type header;
396 bfd_vma output_offset;
1a69ff95 397 bfd_size_type size;
252b5132 398 asection *output_section;
2c382fb6 399 fill_type *fill;
252b5132
RH
400} lang_padding_statement_type;
401
402/* A group statement collects a set of libraries together. The
403 libraries are searched multiple times, until no new undefined
404 symbols are found. The effect is to search a group of libraries as
405 though they were a single library. */
406
6bdafbeb
NC
407typedef struct
408{
252b5132
RH
409 lang_statement_header_type header;
410 lang_statement_list_type children;
411} lang_group_statement_type;
412
53d25da6
AM
413typedef struct
414{
415 lang_statement_header_type header;
416 const char *where;
417 bfd_boolean is_before;
418} lang_insert_statement_type;
419
6bdafbeb
NC
420typedef union lang_statement_union
421{
252b5132 422 lang_statement_header_type header;
252b5132 423 lang_address_statement_type address_statement;
252b5132 424 lang_assignment_statement_type assignment_statement;
dc02848a 425 lang_data_statement_type data_statement;
252b5132 426 lang_fill_statement_type fill_statement;
252b5132 427 lang_group_statement_type group_statement;
dc02848a
AM
428 lang_input_section_type input_section;
429 lang_input_statement_type input_statement;
53d25da6 430 lang_insert_statement_type insert_statement;
dc02848a
AM
431 lang_output_section_statement_type output_section_statement;
432 lang_output_statement_type output_statement;
433 lang_padding_statement_type padding_statement;
434 lang_reloc_statement_type reloc_statement;
435 lang_target_statement_type target_statement;
436 lang_wild_statement_type wild_statement;
252b5132
RH
437} lang_statement_union_type;
438
439/* This structure holds information about a program header, from the
440 PHDRS command in the linker script. */
441
6bdafbeb
NC
442struct lang_phdr
443{
252b5132
RH
444 struct lang_phdr *next;
445 const char *name;
446 unsigned long type;
b34976b6
AM
447 bfd_boolean filehdr;
448 bfd_boolean phdrs;
252b5132
RH
449 etree_type *at;
450 etree_type *flags;
451};
452
453/* This structure is used to hold a list of sections which may not
454 cross reference each other. */
455
6bdafbeb
NC
456typedef struct lang_nocrossref
457{
252b5132
RH
458 struct lang_nocrossref *next;
459 const char *name;
6bdafbeb 460} lang_nocrossref_type;
252b5132
RH
461
462/* The list of nocrossref lists. */
463
6bdafbeb
NC
464struct lang_nocrossrefs
465{
252b5132 466 struct lang_nocrossrefs *next;
6bdafbeb 467 lang_nocrossref_type *list;
cdf96953 468 bfd_boolean onlyfirst;
252b5132
RH
469};
470
577a0623
AM
471/* This structure is used to hold a list of input section names which
472 will not match an output section in the linker script. */
473
6bdafbeb
NC
474struct unique_sections
475{
577a0623
AM
476 struct unique_sections *next;
477 const char *name;
478};
479
afd7a018
AM
480/* Used by place_orphan to keep track of orphan sections and statements. */
481
4a93e180
NC
482struct orphan_save
483{
afd7a018
AM
484 const char *name;
485 flagword flags;
486 lang_output_section_statement_type *os;
487 asection **section;
488 lang_statement_union_type **stmt;
489 lang_output_section_statement_type **os_tail;
490};
491
16e4ecc0
AM
492struct asneeded_minfo
493{
494 struct asneeded_minfo *next;
495 const char *soname;
496 bfd *ref;
497 const char *name;
498};
499
66be1055
AM
500extern struct lang_phdr *lang_phdr_list;
501extern struct lang_nocrossrefs *nocrossref_list;
8be573a7 502extern const char *output_target;
252b5132 503extern lang_output_section_statement_type *abs_output_section;
5c1e6d53 504extern lang_statement_list_type lang_os_list;
66be1055 505extern struct lang_input_statement_flags input_flags;
b34976b6 506extern bfd_boolean lang_has_input_file;
252b5132 507extern lang_statement_list_type *stat_ptr;
b34976b6 508extern bfd_boolean delete_output_file_on_failure;
252b5132 509
e3e942e9 510extern struct bfd_sym_chain entry_symbol;
1e281515 511extern const char *entry_section;
b34976b6 512extern bfd_boolean entry_from_cmdline;
b71e2778 513extern lang_statement_list_type file_chain;
dc27aea4 514extern lang_statement_list_type input_file_chain;
252b5132 515
37a141bf
FS
516extern struct bfd_elf_dynamic_list **current_dynamic_list_p;
517
420e579c 518extern int lang_statement_iteration;
16e4ecc0 519extern struct asneeded_minfo **asneeded_list_tail;
420e579c 520
eae25ec5
HPN
521extern void (*output_bfd_hash_table_free_fn) (struct bfd_link_hash_table *);
522
f53154de 523extern void lang_init
1579bae1 524 (void);
750877ba
L
525extern void lang_finish
526 (void);
4a93e180
NC
527extern lang_memory_region_type * lang_memory_region_lookup
528 (const char * const, bfd_boolean);
529extern void lang_memory_region_alias
530 (const char *, const char *);
f53154de 531extern void lang_map
1579bae1 532 (void);
f53154de 533extern void lang_set_flags
1579bae1 534 (lang_memory_region_type *, const char *, int);
f53154de 535extern void lang_add_output
1579bae1 536 (const char *, int from_script);
aea4bd9d 537extern lang_output_section_statement_type *lang_enter_output_section_statement
1eec346e
NC
538 (const char *, etree_type *, enum section_type, etree_type *, etree_type *,
539 etree_type *, int, int);
f53154de 540extern void lang_final
1579bae1 541 (void);
eaeb0a9d
AM
542extern void lang_relax_sections
543 (bfd_boolean);
f53154de 544extern void lang_process
1579bae1 545 (void);
f53154de 546extern void lang_section_start
ba916c8a 547 (const char *, union etree_union *, const segment_type *);
f53154de 548extern void lang_add_entry
1579bae1 549 (const char *, bfd_boolean);
a359509e
ZW
550extern void lang_default_entry
551 (const char *);
f53154de 552extern void lang_add_target
1579bae1 553 (const char *);
252b5132 554extern void lang_add_wild
1579bae1 555 (struct wildcard_spec *, struct wildcard_list *, bfd_boolean);
f53154de 556extern void lang_add_map
1579bae1 557 (const char *);
f53154de 558extern void lang_add_fill
1579bae1
AM
559 (fill_type *);
560extern lang_assignment_statement_type *lang_add_assignment
561 (union etree_union *);
f53154de 562extern void lang_add_attribute
1579bae1 563 (enum statement_enum);
f53154de 564extern void lang_startup
1579bae1 565 (const char *);
f53154de 566extern void lang_float
1579bae1 567 (bfd_boolean);
252b5132 568extern void lang_leave_output_section_statement
6bdafbeb 569 (fill_type *, const char *, lang_output_section_phdr_list *,
1579bae1 570 const char *);
252b5132 571extern void lang_for_each_input_file
1579bae1 572 (void (*dothis) (lang_input_statement_type *));
252b5132 573extern void lang_for_each_file
1579bae1 574 (void (*dothis) (lang_input_statement_type *));
f53154de 575extern void lang_reset_memory_regions
1579bae1 576 (void);
f2241121 577extern void lang_do_assignments
2f65ac72 578 (lang_phase_type);
d2667025
AM
579extern asection *section_for_dot
580 (void);
252b5132 581
f53154de
AM
582#define LANG_FOR_EACH_INPUT_STATEMENT(statement) \
583 lang_input_statement_type *statement; \
b72636de 584 for (statement = (lang_input_statement_type *) file_chain.head; \
1fa4ec6a 585 statement != NULL; \
36983a93 586 statement = statement->next)
5cc18311 587
66c103b7
AM
588#define lang_output_section_find(NAME) \
589 lang_output_section_statement_lookup (NAME, 0, FALSE)
590
f53154de 591extern void lang_process
1579bae1 592 (void);
f53154de 593extern void ldlang_add_file
1579bae1 594 (lang_input_statement_type *);
afd7a018 595extern lang_output_section_statement_type *lang_output_section_find_by_flags
93638471 596 (const asection *, flagword, lang_output_section_statement_type **,
390fbbf1 597 lang_match_sec_type_func);
afd7a018 598extern lang_output_section_statement_type *lang_insert_orphan
8a99a385 599 (asection *, const char *, int, lang_output_section_statement_type *,
7b986e99 600 struct orphan_save *, etree_type *, lang_statement_list_type *);
252b5132 601extern lang_input_statement_type *lang_add_input_file
1579bae1 602 (const char *, lang_input_file_enum_type, const char *);
f53154de 603extern void lang_add_keepsyms_file
1579bae1 604 (const char *);
24ef1aa7
GM
605extern lang_output_section_statement_type *lang_output_section_get
606 (const asection *);
66c103b7 607extern lang_output_section_statement_type *lang_output_section_statement_lookup
d127ecce
AM
608 (const char *, int, bfd_boolean);
609extern lang_output_section_statement_type *next_matching_output_section_statement
610 (lang_output_section_statement_type *, int);
f53154de 611extern void ldlang_add_undef
24898b70 612 (const char *const, bfd_boolean);
0a618243
AB
613extern void ldlang_add_require_defined
614 (const char *const);
f53154de 615extern void lang_add_output_format
1579bae1 616 (const char *, const char *, const char *, int);
f53154de 617extern void lang_list_init
1579bae1 618 (lang_statement_list_type *);
bde18da4
AM
619extern void push_stat_ptr
620 (lang_statement_list_type *);
621extern void pop_stat_ptr
622 (void);
f53154de 623extern void lang_add_data
1579bae1 624 (int type, union etree_union *);
252b5132 625extern void lang_add_reloc
1579bae1
AM
626 (bfd_reloc_code_real_type, reloc_howto_type *, asection *, const char *,
627 union etree_union *);
252b5132 628extern void lang_for_each_statement
1579bae1 629 (void (*) (lang_statement_union_type *));
8658f989
AM
630extern void lang_for_each_statement_worker
631 (void (*) (lang_statement_union_type *), lang_statement_union_type *);
1579bae1
AM
632extern void *stat_alloc
633 (size_t);
8423293d
AM
634extern void strip_excluded_output_sections
635 (void);
18cd5bce
AM
636extern void lang_clear_os_map
637 (void);
f53154de 638extern void dprint_statement
1579bae1 639 (lang_statement_union_type *, int);
e9ee469a
AM
640extern void lang_size_sections
641 (bfd_boolean *, bfd_boolean);
642extern void one_lang_size_sections_pass
643 (bfd_boolean *, bfd_boolean);
53d25da6
AM
644extern void lang_add_insert
645 (const char *, int);
f53154de 646extern void lang_enter_group
1579bae1 647 (void);
f53154de 648extern void lang_leave_group
1579bae1 649 (void);
39dcfe18 650extern void lang_add_section
1579bae1 651 (lang_statement_list_type *, asection *,
b9c361e0 652 struct flag_info *, lang_output_section_statement_type *);
252b5132 653extern void lang_new_phdr
1579bae1
AM
654 (const char *, etree_type *, bfd_boolean, bfd_boolean, etree_type *,
655 etree_type *);
f53154de 656extern void lang_add_nocrossref
6bdafbeb 657 (lang_nocrossref_type *);
cdf96953
MF
658extern void lang_add_nocrossref_to
659 (lang_nocrossref_type *);
f53154de 660extern void lang_enter_overlay
7e7d5768 661 (etree_type *, etree_type *);
f53154de 662extern void lang_enter_overlay_section
1579bae1 663 (const char *);
252b5132 664extern void lang_leave_overlay_section
6bdafbeb 665 (fill_type *, lang_output_section_phdr_list *);
252b5132 666extern void lang_leave_overlay
1579bae1 667 (etree_type *, int, fill_type *, const char *,
6bdafbeb 668 lang_output_section_phdr_list *, const char *);
252b5132 669
313e35ee 670extern struct bfd_elf_version_expr *lang_new_vers_pattern
86043bbb 671 (struct bfd_elf_version_expr *, const char *, const char *, bfd_boolean);
252b5132 672extern struct bfd_elf_version_tree *lang_new_vers_node
1579bae1 673 (struct bfd_elf_version_expr *, struct bfd_elf_version_expr *);
252b5132 674extern struct bfd_elf_version_deps *lang_add_vers_depend
1579bae1 675 (struct bfd_elf_version_deps *, const char *);
252b5132 676extern void lang_register_vers_node
1579bae1 677 (const char *, struct bfd_elf_version_tree *, struct bfd_elf_version_deps *);
37a141bf
FS
678extern void lang_append_dynamic_list (struct bfd_elf_dynamic_list **,
679 struct bfd_elf_version_expr *);
55255dae 680extern void lang_append_dynamic_list_cpp_typeinfo (void);
40b36307 681extern void lang_append_dynamic_list_cpp_new (void);
f53154de 682extern void lang_add_unique
1579bae1 683 (const char *);
f53154de 684extern const char *lang_get_output_target
1579bae1 685 (void);
b58f81ae 686extern void add_excluded_libs (const char *);
e9f53129
AM
687extern bfd_boolean load_symbols
688 (lang_input_statement_type *, lang_statement_list_type *);
b58f81ae 689
1ff6de03
NA
690struct elf_sym_strtab;
691struct elf_strtab_hash;
692extern void ldlang_ctf_apply_strsym
693 (struct elf_sym_strtab *, bfd_size_type, struct elf_strtab_hash *);
694extern void ldlang_write_ctf_late
695 (void);
2889e75b
NC
696extern bfd_boolean
697ldlang_override_segment_assignment
698 (struct bfd_link_info *, bfd *, asection *, asection *, bfd_boolean);
699
01554a74
AM
700extern void
701lang_ld_feature (char *);
702
3604cb1f
TG
703extern void
704lang_print_memory_usage (void);
705
4153b6db
NC
706extern void
707lang_add_gc_name (const char *);
708
3edf7b9f
DR
709extern bfd_boolean
710print_one_symbol (struct bfd_link_hash_entry *hash_entry, void *ptr);
711
252b5132 712#endif
This page took 1.048658 seconds and 4 git commands to generate.