diff options
author | Ian Lance Taylor <ian@airs.com> | 1996-08-01 17:35:49 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1996-08-01 17:35:49 +0000 |
commit | 582dd77f6571a3b9ca89d715d1522b68b2507feb (patch) | |
tree | 270378b4c50fe9c9e7c1b48dcbeb9cf7882213a7 /ld/ldlang.h | |
parent | 8efb80797cacf61ac0857cb9b149cac079356a3b (diff) | |
download | gdb-582dd77f6571a3b9ca89d715d1522b68b2507feb.zip gdb-582dd77f6571a3b9ca89d715d1522b68b2507feb.tar.gz gdb-582dd77f6571a3b9ca89d715d1522b68b2507feb.tar.bz2 |
* ld.h (check_nocrossrefs): Declare.
* ldlang.h (struct lang_nocrossref): Define.
(struct lang_nocrossrefs): Define.
(nocrossref_list): Declare.
(lang_add_nocrossref): Declare.
* ldlex.l: Recognize NOCROSSREFS keyword.
* ldgram.y (%union): Add nocrossref field.
(NOCROSSREFS): New terminal.
(ifile_p1): Recognize NOCROSSREFS.
(nocrossref_list): New nonterminal.
* ldlang.c (nocrossref_list): Define.
(lang_add_nocrossref): New function.
* ldmain.c (main): If nocrossref_list is not NULL, call
check_nocrossrefs.
(warning_callback): Free symbols if there is no place to store
them.
(notice): Call add_cref if nocrossref_list is not NULL.
* ldcref.c: Include "ldexp.h" and "ldlang.h".
(check_nocrossrefs): New function.
(check_nocrossref): New static function.
(struct check_refs_info): Define.
(check_refs, check_reloc_refs): New static functions.
* Makefile.in: Rebuild dependencies.
* ld.texinfo (Option Commands): Document NOCROSSREFS.
Diffstat (limited to 'ld/ldlang.h')
-rw-r--r-- | ld/ldlang.h | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/ld/ldlang.h b/ld/ldlang.h index 3d6a6f3..ee5b777 100644 --- a/ld/ldlang.h +++ b/ld/ldlang.h @@ -1,5 +1,5 @@ /* ldlang.h - linker command language support - Copyright 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. + Copyright 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc. This file is part of GLD, the Gnu Linker. @@ -96,6 +96,17 @@ typedef struct lang_output_statement_struct const char *name; } lang_output_statement_type; +/* Section types specified in a linker script. */ + +enum section_type +{ + normal_section, + dsect_section, + copy_section, + noload_section, + info_section, + overlay_section +}; /* This structure holds a list of program headers describing segments in which this section should be placed. */ @@ -120,7 +131,7 @@ typedef struct lang_output_section_statement_struct asection *bfd_section; int flags; /* Or together of all input sections */ - int loadable; /* set from NOLOAD flag in script */ + enum section_type sectype; struct memory_region_struct *region; size_t block_value; fill_type fill; @@ -243,9 +254,6 @@ typedef struct lang_input_statement_struct /* unsigned int globals_in_this_file;*/ const char *target; boolean real; - asection *common_section; - asection *common_output_section; - boolean complained; } lang_input_statement_type; typedef struct @@ -335,6 +343,25 @@ struct lang_phdr etree_type *flags; }; +/* This structure is used to hold a list of sections which may not + cross reference each other. */ + +struct lang_nocrossref +{ + struct lang_nocrossref *next; + const char *name; +}; + +/* The list of nocrossref lists. */ + +struct lang_nocrossrefs +{ + struct lang_nocrossrefs *next; + struct lang_nocrossref *list; +}; + +extern struct lang_nocrossrefs *nocrossref_list; + extern lang_output_section_statement_type *abs_output_section; extern boolean lang_has_input_file; extern etree_type *base; @@ -353,7 +380,7 @@ extern void lang_add_output PARAMS ((const char *, int from_script)); extern void lang_enter_output_section_statement PARAMS ((const char *output_section_statement_name, etree_type * address_exp, - int flags, + enum section_type sectype, bfd_vma block_value, etree_type *align, etree_type *subalign, @@ -431,5 +458,6 @@ extern void lang_new_phdr PARAMS ((const char *, etree_type *, boolean, boolean, etree_type *, etree_type *)); extern void lang_section_in_phdr PARAMS ((const char *)); +extern void lang_add_nocrossref PARAMS ((struct lang_nocrossref *)); #endif |