diff options
author | Ian Lance Taylor <ian@airs.com> | 1994-05-27 15:39:11 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1994-05-27 15:39:11 +0000 |
commit | 60e8a534070c8dc181b2fb4971b8199597a168f1 (patch) | |
tree | ce0a44394df85f43789686f637a9a9932332259b /ld/ldlang.h | |
parent | 29371b1febb3b9fca6487a9316e44fc4cf657a45 (diff) | |
download | gdb-60e8a534070c8dc181b2fb4971b8199597a168f1.zip gdb-60e8a534070c8dc181b2fb4971b8199597a168f1.tar.gz gdb-60e8a534070c8dc181b2fb4971b8199597a168f1.tar.bz2 |
* ldlang.c (entry_symbol): Make static.
(lang_add_entry): Add cmdline argument.
* ldlang.h (lang_add_entry): Change prototype.
* ldgram.y (statement_anywhere): Change lang_add_entry call.
* lexsup.c (parse_args): Likewise.
Diffstat (limited to 'ld/ldlang.h')
-rw-r--r-- | ld/ldlang.h | 74 |
1 files changed, 41 insertions, 33 deletions
diff --git a/ld/ldlang.h b/ld/ldlang.h index 1e7e36a..a3a98e5 100644 --- a/ld/ldlang.h +++ b/ld/ldlang.h @@ -64,6 +64,7 @@ typedef struct lang_statement_header_struct lang_object_symbols_statement_enum, lang_fill_statement_enum, lang_data_statement_enum, + lang_reloc_statement_enum, lang_target_statement_enum, lang_output_statement_enum, lang_padding_statement_enum, @@ -148,8 +149,38 @@ typedef struct bfd_vma output_vma; } lang_data_statement_type; +/* Generate a reloc in the output file. */ +typedef struct +{ + lang_statement_header_type header; + + /* Reloc to generate. */ + bfd_reloc_code_real_type reloc; + /* Reloc howto structure. */ + const reloc_howto_type *howto; + + /* Section to generate reloc against. Exactly one of section and + name must be NULL. */ + asection *section; + + /* Name of symbol to generate reloc against. Exactly one of section + and name must be NULL. */ + const char *name; + + /* Expression for addend. */ + union etree_union *addend_exp; + + /* Resolved addend. */ + bfd_vma addend_value; + + /* Output section where reloc should be performed. */ + asection *output_section; + + /* VMA within output section. */ + bfd_vma output_vma; +} lang_reloc_statement_type; typedef struct lang_input_statement_struct { @@ -259,6 +290,7 @@ typedef union lang_statement_union union lang_statement_union *next; lang_wild_statement_type wild_statement; lang_data_statement_type data_statement; + lang_reloc_statement_type reloc_statement; lang_address_statement_type address_statement; lang_output_section_statement_type output_section_statement; lang_afile_asection_pair_statement_type afile_asection_pair_statement; @@ -273,7 +305,6 @@ typedef union lang_statement_union lang_padding_statement_type padding_statement; } lang_statement_union_type; -extern bfd_size_type largest_section; extern lang_output_section_statement_type *abs_output_section; extern boolean lang_has_input_file; extern etree_type *base; @@ -297,7 +328,7 @@ extern void lang_enter_output_section_statement extern void lang_final PARAMS ((void)); extern void lang_process PARAMS ((void)); extern void lang_section_start PARAMS ((const char *, union etree_union *)); -extern void lang_add_entry PARAMS ((const char *)); +extern void lang_add_entry PARAMS ((const char *, int)); extern void lang_add_target PARAMS ((const char *)); extern void lang_add_wild PARAMS ((const char *const , const char *const)); extern void lang_add_map PARAMS ((const char *)); @@ -324,37 +355,6 @@ extern void lang_for_each_file statement != (lang_input_statement_type *)NULL; \ statement = (lang_input_statement_type *)statement->next)\ -#define LANG_FOR_EACH_INPUT_SECTION(statement, abfd, section, x) \ - { \ - extern lang_statement_list_type file_chain; \ - lang_input_statement_type *statement; \ - for (statement = (lang_input_statement_type *)file_chain.head; \ - statement != (lang_input_statement_type *)NULL; \ - statement = (lang_input_statement_type *)statement->next) \ - { \ - asection *section; \ - bfd *abfd = statement->the_bfd; \ - for (section = abfd->sections; \ - section != (asection *)NULL; \ - section = section->next) \ - { \ - x; \ - } \ - } \ - } - -#define LANG_FOR_EACH_OUTPUT_SECTION(section, x) \ - { \ - extern bfd *output_bfd; \ - asection *section; \ - for (section = output_bfd->sections; \ - section != (asection *)NULL; \ - section = section->next) \ - { \ - x; \ - } \ - } - extern void lang_process PARAMS ((void)); extern void ldlang_add_file PARAMS ((lang_input_statement_type *)); extern lang_output_section_statement_type *lang_output_section_find @@ -369,8 +369,16 @@ extern void ldlang_add_undef PARAMS ((const char *const name)); extern void lang_add_output_format PARAMS ((const char *, int from_script)); extern void lang_list_init PARAMS ((lang_statement_list_type*)); extern void lang_add_data PARAMS ((int type, union etree_union *)); +extern void lang_add_reloc + PARAMS ((bfd_reloc_code_real_type reloc, const reloc_howto_type *howto, + asection *section, const char *name, union etree_union *addend)); extern void lang_for_each_statement PARAMS ((void (*func) (lang_statement_union_type *))); extern PTR stat_alloc PARAMS ((size_t size)); +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, + bfd_vma dot, boolean relax)); #endif |