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