/* ldlang.h - linker command language support
- Copyright (C) 1991-2021 Free Software Foundation, Inc.
+ Copyright (C) 1991-2022 Free Software Foundation, Inc.
This file is part of the GNU Binutils.
lang_fill_statement_enum,
lang_group_statement_enum,
lang_input_section_enum,
+ lang_input_matcher_enum,
lang_input_statement_enum,
lang_insert_statement_enum,
lang_output_section_statement_enum,
first_overlay_section,
overlay_section,
noload_section,
- noalloc_section
+ noalloc_section,
+ type_section,
+ readonly_section,
+ typed_readonly_section
};
/* This structure holds a list of program headers describing
int constraint;
flagword flags;
enum section_type sectype;
+ etree_type *sectype_value;
unsigned int processed_vma : 1;
unsigned int processed_lma : 1;
unsigned int all_input_readonly : 1;
Usually the same as filename, but for a file spec'd with
-l this is the -l switch itself rather than the filename. */
const char *local_sym_name;
+ /* Name to use when sorting. */
+ const char *sort_key;
/* Extra search path. Used to find a file relative to the
directory of the current linker script. */
const char *extra_search_path;
void *pattern;
} lang_input_section_type;
+typedef struct
+{
+ lang_statement_header_type header;
+ asection *section;
+ void *pattern;
+ lang_input_statement_type *input_stmt;
+} lang_input_matcher_type;
+
struct map_symbol_def {
struct bfd_link_hash_entry *entry;
struct map_symbol_def *next;
lang_statement_header_type header;
const char *filename;
bool filenames_sorted;
+ bool any_specs_sorted;
struct wildcard_list *section_list;
bool keep_sections;
lang_statement_list_type children;
struct name_list *exclude_name_list;
+ lang_statement_list_type matching_sections;
- walk_wild_section_handler_t walk_wild_section_handler;
- struct wildcard_list *handler_data[4];
- lang_section_bst_type *tree;
+ lang_section_bst_type *tree, **rightmost;
struct flag_info *section_flag_list;
};
lang_fill_statement_type fill_statement;
lang_group_statement_type group_statement;
lang_input_section_type input_section;
+ lang_input_matcher_type input_matcher;
lang_input_statement_type input_statement;
lang_insert_statement_type insert_statement;
lang_output_section_statement_type output_section_statement;
(const char *, int from_script);
extern lang_output_section_statement_type *lang_enter_output_section_statement
(const char *, etree_type *, enum section_type, etree_type *, etree_type *,
- etree_type *, int, int);
+ etree_type *, etree_type *, int, int);
extern void lang_final
(void);
extern void lang_relax_sections