aboutsummaryrefslogtreecommitdiff
path: root/ld/ldlang.h
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2002-05-07 11:04:54 +0000
committerRichard Sandiford <rdsandiford@googlemail.com>2002-05-07 11:04:54 +0000
commit9f88b410a04363dbc584211667fcc3b565f37466 (patch)
treeaf38aafbc5e4a7e9f6c744b5ac365e7f3addd558 /ld/ldlang.h
parent010f3b2f35ef972172eaac6cd35b138c1c94706a (diff)
downloadgdb-9f88b410a04363dbc584211667fcc3b565f37466.zip
gdb-9f88b410a04363dbc584211667fcc3b565f37466.tar.gz
gdb-9f88b410a04363dbc584211667fcc3b565f37466.tar.bz2
* ldlang.h (lang_output_section_statement_type): Add update_dot_tree.
(lang_enter_overlay): Remove the last two parameters. (lang_leave_overlay): Take them here instead. * ldgram.y (memspec_at_opt): Set $$ to null if no region is given. (section): Pass LMA and crossref flag to lang_leave_overlay rather than lang_enter_overlay. * ldlang.c (lang_memory_region_lookup): Return null for null names. (lang_output_section_statement_lookup): Initialize update_dot_tree. (lang_size_sections_1): Evaluate it. (lang_leave_output_section_statement): Rework LMA lookup. (overlay_lma, overlay_nocrossrefs): Remove. (lang_enter_overlay): Remove LMA and corssref arguments. (lang_enter_overlay_section): Don't set the LMA here. (lang_leave_overlay): Take LMA and crossref arguments. Move the '.' assignment to the last section's update_dot_tree. Unconditionally use the load and run-time regions specified in the OVERLAY statement. Likewise the first section's LMA. Only set the other sections' LMAs when no load region is given.
Diffstat (limited to 'ld/ldlang.h')
-rw-r--r--ld/ldlang.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/ld/ldlang.h b/ld/ldlang.h
index 4e3353a..26c4121 100644
--- a/ld/ldlang.h
+++ b/ld/ldlang.h
@@ -135,6 +135,12 @@ typedef struct lang_output_section_statement_struct {
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;
@@ -456,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 ((fill_type *, struct lang_output_section_phdr_list *));
extern void lang_leave_overlay
- PARAMS ((fill_type *, 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;