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