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