ChangeLog rotatation and copyright year update
[deliverable/binutils-gdb.git] / ld / ldlang.h
CommitLineData
252b5132 1/* ldlang.h - linker command language support
b90efa5b 2 Copyright (C) 1991-2015 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
afd7a018
AM
473/* Used by place_orphan to keep track of orphan sections and statements. */
474
4a93e180
NC
475struct orphan_save
476{
afd7a018
AM
477 const char *name;
478 flagword flags;
479 lang_output_section_statement_type *os;
480 asection **section;
481 lang_statement_union_type **stmt;
482 lang_output_section_statement_type **os_tail;
483};
484
16e4ecc0
AM
485struct asneeded_minfo
486{
487 struct asneeded_minfo *next;
488 const char *soname;
489 bfd *ref;
490 const char *name;
491};
492
66be1055
AM
493extern struct lang_phdr *lang_phdr_list;
494extern struct lang_nocrossrefs *nocrossref_list;
8be573a7 495extern const char *output_target;
252b5132 496extern lang_output_section_statement_type *abs_output_section;
aea4bd9d 497extern lang_statement_list_type lang_output_section_statement;
66be1055 498extern struct lang_input_statement_flags input_flags;
b34976b6 499extern bfd_boolean lang_has_input_file;
252b5132 500extern lang_statement_list_type *stat_ptr;
b34976b6 501extern bfd_boolean delete_output_file_on_failure;
252b5132 502
e3e942e9 503extern struct bfd_sym_chain entry_symbol;
1e281515 504extern const char *entry_section;
b34976b6 505extern bfd_boolean entry_from_cmdline;
b71e2778 506extern lang_statement_list_type file_chain;
dc27aea4 507extern lang_statement_list_type input_file_chain;
252b5132 508
420e579c 509extern int lang_statement_iteration;
16e4ecc0 510extern struct asneeded_minfo **asneeded_list_tail;
420e579c 511
eae25ec5
HPN
512extern void (*output_bfd_hash_table_free_fn) (struct bfd_link_hash_table *);
513
f53154de 514extern void lang_init
1579bae1 515 (void);
750877ba
L
516extern void lang_finish
517 (void);
4a93e180
NC
518extern lang_memory_region_type * lang_memory_region_lookup
519 (const char * const, bfd_boolean);
520extern void lang_memory_region_alias
521 (const char *, const char *);
f53154de 522extern void lang_map
1579bae1 523 (void);
f53154de 524extern void lang_set_flags
1579bae1 525 (lang_memory_region_type *, const char *, int);
f53154de 526extern void lang_add_output
1579bae1 527 (const char *, int from_script);
aea4bd9d 528extern lang_output_section_statement_type *lang_enter_output_section_statement
1eec346e
NC
529 (const char *, etree_type *, enum section_type, etree_type *, etree_type *,
530 etree_type *, int, int);
f53154de 531extern void lang_final
1579bae1 532 (void);
eaeb0a9d
AM
533extern void lang_relax_sections
534 (bfd_boolean);
f53154de 535extern void lang_process
1579bae1 536 (void);
f53154de 537extern void lang_section_start
ba916c8a 538 (const char *, union etree_union *, const segment_type *);
f53154de 539extern void lang_add_entry
1579bae1 540 (const char *, bfd_boolean);
a359509e
ZW
541extern void lang_default_entry
542 (const char *);
f53154de 543extern void lang_add_target
1579bae1 544 (const char *);
252b5132 545extern void lang_add_wild
1579bae1 546 (struct wildcard_spec *, struct wildcard_list *, bfd_boolean);
f53154de 547extern void lang_add_map
1579bae1 548 (const char *);
f53154de 549extern void lang_add_fill
1579bae1
AM
550 (fill_type *);
551extern lang_assignment_statement_type *lang_add_assignment
552 (union etree_union *);
f53154de 553extern void lang_add_attribute
1579bae1 554 (enum statement_enum);
f53154de 555extern void lang_startup
1579bae1 556 (const char *);
f53154de 557extern void lang_float
1579bae1 558 (bfd_boolean);
252b5132 559extern void lang_leave_output_section_statement
6bdafbeb 560 (fill_type *, const char *, lang_output_section_phdr_list *,
1579bae1 561 const char *);
f53154de 562extern void lang_statement_append
6bdafbeb
NC
563 (lang_statement_list_type *, lang_statement_union_type *,
564 lang_statement_union_type **);
252b5132 565extern void lang_for_each_input_file
1579bae1 566 (void (*dothis) (lang_input_statement_type *));
252b5132 567extern void lang_for_each_file
1579bae1 568 (void (*dothis) (lang_input_statement_type *));
f53154de 569extern void lang_reset_memory_regions
1579bae1 570 (void);
f2241121 571extern void lang_do_assignments
2f65ac72 572 (lang_phase_type);
d2667025
AM
573extern asection *section_for_dot
574 (void);
252b5132 575
f53154de
AM
576#define LANG_FOR_EACH_INPUT_STATEMENT(statement) \
577 lang_input_statement_type *statement; \
578 for (statement = (lang_input_statement_type *) file_chain.head; \
579 statement != (lang_input_statement_type *) NULL; \
580 statement = (lang_input_statement_type *) statement->next) \
5cc18311 581
66c103b7
AM
582#define lang_output_section_find(NAME) \
583 lang_output_section_statement_lookup (NAME, 0, FALSE)
584
f53154de 585extern void lang_process
1579bae1 586 (void);
f53154de 587extern void ldlang_add_file
1579bae1 588 (lang_input_statement_type *);
afd7a018 589extern lang_output_section_statement_type *lang_output_section_find_by_flags
390fbbf1
AM
590 (const asection *, lang_output_section_statement_type **,
591 lang_match_sec_type_func);
afd7a018 592extern lang_output_section_statement_type *lang_insert_orphan
8a99a385 593 (asection *, const char *, int, lang_output_section_statement_type *,
7b986e99 594 struct orphan_save *, etree_type *, lang_statement_list_type *);
252b5132 595extern lang_input_statement_type *lang_add_input_file
1579bae1 596 (const char *, lang_input_file_enum_type, const char *);
f53154de 597extern void lang_add_keepsyms_file
1579bae1 598 (const char *);
24ef1aa7
GM
599extern lang_output_section_statement_type *lang_output_section_get
600 (const asection *);
66c103b7 601extern lang_output_section_statement_type *lang_output_section_statement_lookup
d127ecce
AM
602 (const char *, int, bfd_boolean);
603extern lang_output_section_statement_type *next_matching_output_section_statement
604 (lang_output_section_statement_type *, int);
f53154de 605extern void ldlang_add_undef
24898b70 606 (const char *const, bfd_boolean);
f53154de 607extern void lang_add_output_format
1579bae1 608 (const char *, const char *, const char *, int);
f53154de 609extern void lang_list_init
1579bae1 610 (lang_statement_list_type *);
bde18da4
AM
611extern void push_stat_ptr
612 (lang_statement_list_type *);
613extern void pop_stat_ptr
614 (void);
f53154de 615extern void lang_add_data
1579bae1 616 (int type, union etree_union *);
252b5132 617extern void lang_add_reloc
1579bae1
AM
618 (bfd_reloc_code_real_type, reloc_howto_type *, asection *, const char *,
619 union etree_union *);
252b5132 620extern void lang_for_each_statement
1579bae1 621 (void (*) (lang_statement_union_type *));
8658f989
AM
622extern void lang_for_each_statement_worker
623 (void (*) (lang_statement_union_type *), lang_statement_union_type *);
1579bae1
AM
624extern void *stat_alloc
625 (size_t);
8423293d
AM
626extern void strip_excluded_output_sections
627 (void);
18cd5bce
AM
628extern void lang_clear_os_map
629 (void);
f53154de 630extern void dprint_statement
1579bae1 631 (lang_statement_union_type *, int);
e9ee469a
AM
632extern void lang_size_sections
633 (bfd_boolean *, bfd_boolean);
634extern void one_lang_size_sections_pass
635 (bfd_boolean *, bfd_boolean);
53d25da6
AM
636extern void lang_add_insert
637 (const char *, int);
f53154de 638extern void lang_enter_group
1579bae1 639 (void);
f53154de 640extern void lang_leave_group
1579bae1 641 (void);
39dcfe18 642extern void lang_add_section
1579bae1 643 (lang_statement_list_type *, asection *,
b9c361e0 644 struct flag_info *, lang_output_section_statement_type *);
252b5132 645extern void lang_new_phdr
1579bae1
AM
646 (const char *, etree_type *, bfd_boolean, bfd_boolean, etree_type *,
647 etree_type *);
f53154de 648extern void lang_add_nocrossref
6bdafbeb 649 (lang_nocrossref_type *);
f53154de 650extern void lang_enter_overlay
7e7d5768 651 (etree_type *, etree_type *);
f53154de 652extern void lang_enter_overlay_section
1579bae1 653 (const char *);
252b5132 654extern void lang_leave_overlay_section
6bdafbeb 655 (fill_type *, lang_output_section_phdr_list *);
252b5132 656extern void lang_leave_overlay
1579bae1 657 (etree_type *, int, fill_type *, const char *,
6bdafbeb 658 lang_output_section_phdr_list *, const char *);
252b5132 659
313e35ee 660extern struct bfd_elf_version_expr *lang_new_vers_pattern
86043bbb 661 (struct bfd_elf_version_expr *, const char *, const char *, bfd_boolean);
252b5132 662extern struct bfd_elf_version_tree *lang_new_vers_node
1579bae1 663 (struct bfd_elf_version_expr *, struct bfd_elf_version_expr *);
252b5132 664extern struct bfd_elf_version_deps *lang_add_vers_depend
1579bae1 665 (struct bfd_elf_version_deps *, const char *);
252b5132 666extern void lang_register_vers_node
1579bae1 667 (const char *, struct bfd_elf_version_tree *, struct bfd_elf_version_deps *);
55255dae
L
668extern void lang_append_dynamic_list (struct bfd_elf_version_expr *);
669extern void lang_append_dynamic_list_cpp_typeinfo (void);
40b36307 670extern void lang_append_dynamic_list_cpp_new (void);
f53154de 671extern void lang_add_unique
1579bae1 672 (const char *);
f53154de 673extern const char *lang_get_output_target
1579bae1 674 (void);
b58f81ae 675extern void add_excluded_libs (const char *);
e9f53129
AM
676extern bfd_boolean load_symbols
677 (lang_input_statement_type *, lang_statement_list_type *);
b58f81ae 678
2889e75b
NC
679extern bfd_boolean
680ldlang_override_segment_assignment
681 (struct bfd_link_info *, bfd *, asection *, asection *, bfd_boolean);
682
01554a74
AM
683extern void
684lang_ld_feature (char *);
685
252b5132 686#endif
This page took 0.869223 seconds and 4 git commands to generate.