summaryrefslogtreecommitdiffstats
path: root/contrib/binutils/ld/ldlang.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/binutils/ld/ldlang.h')
-rw-r--r--contrib/binutils/ld/ldlang.h35
1 files changed, 22 insertions, 13 deletions
diff --git a/contrib/binutils/ld/ldlang.h b/contrib/binutils/ld/ldlang.h
index 2089591..cb4b6d3 100644
--- a/contrib/binutils/ld/ldlang.h
+++ b/contrib/binutils/ld/ldlang.h
@@ -32,7 +32,10 @@ typedef enum {
lang_input_file_is_file_enum
} lang_input_file_enum_type;
-typedef unsigned int fill_type;
+struct _fill_type {
+ size_t size;
+ unsigned char data[1];
+};
typedef struct statement_list {
union lang_statement_union *head;
@@ -125,13 +128,19 @@ typedef struct lang_output_section_statement_struct {
struct memory_region_struct *region;
struct memory_region_struct *lma_region;
size_t block_value;
- fill_type fill;
+ fill_type *fill;
int subsection_alignment; /* alignment of components */
int section_alignment; /* alignment of start of section */
union etree_union *load_base;
+ /* If non-null, an expression to evaluate after setting the section's
+ size. The expression is evaluated inside REGION (above) with '.'
+ set to the end of the section. Used in the last overlay section
+ to move '.' past all the overlaid sections. */
+ union etree_union *update_dot_tree;
+
struct lang_output_section_phdr_list *phdrs;
} lang_output_section_statement_type;
@@ -145,7 +154,7 @@ typedef struct {
typedef struct {
lang_statement_header_type header;
- fill_type fill;
+ fill_type *fill;
int size;
asection *output_section;
} lang_fill_statement_type;
@@ -275,7 +284,7 @@ typedef struct {
bfd_vma output_offset;
size_t size;
asection *output_section;
- fill_type fill;
+ fill_type *fill;
} lang_padding_statement_type;
/* A group statement collects a set of libraries together. The
@@ -355,7 +364,7 @@ extern etree_type *base;
extern lang_statement_list_type *stat_ptr;
extern boolean delete_output_file_on_failure;
-extern const char *entry_symbol;
+extern struct bfd_sym_chain entry_symbol;
extern const char *entry_section;
extern boolean entry_from_cmdline;
extern lang_statement_list_type file_chain;
@@ -385,13 +394,13 @@ extern void lang_add_target PARAMS ((const char *));
extern void lang_add_wild
PARAMS ((struct wildcard_spec *, struct wildcard_list *, boolean));
extern void lang_add_map PARAMS ((const char *));
-extern void lang_add_fill PARAMS ((int));
+extern void lang_add_fill PARAMS ((fill_type *));
extern lang_assignment_statement_type * lang_add_assignment PARAMS ((union etree_union *));
extern void lang_add_attribute PARAMS ((enum statement_enum));
extern void lang_startup PARAMS ((const char *));
extern void lang_float PARAMS ((enum bfd_boolean));
extern void lang_leave_output_section_statement
- PARAMS ((bfd_vma, const char *, struct lang_output_section_phdr_list *,
+ PARAMS ((fill_type *, const char *, struct lang_output_section_phdr_list *,
const char *));
extern void lang_abs_symbol_at_end_of PARAMS ((const char *, const char *));
extern void lang_abs_symbol_at_beginning_of PARAMS ((const char *,
@@ -407,7 +416,7 @@ extern void lang_reset_memory_regions PARAMS ((void));
extern bfd_vma lang_do_assignments
PARAMS ((lang_statement_union_type * s,
lang_output_section_statement_type *output_section_statement,
- fill_type fill,
+ fill_type *fill,
bfd_vma dot));
#define LANG_FOR_EACH_INPUT_STATEMENT(statement) \
@@ -441,7 +450,7 @@ extern void dprint_statement PARAMS ((lang_statement_union_type *, int));
extern bfd_vma lang_size_sections
PARAMS ((lang_statement_union_type *s,
lang_output_section_statement_type *output_section_statement,
- lang_statement_union_type **prev, fill_type fill,
+ lang_statement_union_type **prev, fill_type *fill,
bfd_vma dot, boolean *relax));
extern void lang_enter_group PARAMS ((void));
extern void lang_leave_group PARAMS ((void));
@@ -453,13 +462,13 @@ extern void lang_new_phdr
PARAMS ((const char *, etree_type *, boolean, boolean, etree_type *,
etree_type *));
extern void lang_add_nocrossref PARAMS ((struct lang_nocrossref *));
-extern void lang_enter_overlay PARAMS ((etree_type *, etree_type *, int));
+extern void lang_enter_overlay PARAMS ((etree_type *));
extern void lang_enter_overlay_section PARAMS ((const char *));
extern void lang_leave_overlay_section
- PARAMS ((bfd_vma, struct lang_output_section_phdr_list *));
+ PARAMS ((fill_type *, struct lang_output_section_phdr_list *));
extern void lang_leave_overlay
- PARAMS ((bfd_vma, const char *, struct lang_output_section_phdr_list *,
- const char *));
+ PARAMS ((etree_type *, int, fill_type *, const char *,
+ struct lang_output_section_phdr_list *, const char *));
extern struct bfd_elf_version_tree *lang_elf_version_info;
OpenPOWER on IntegriCloud