diff options
-rw-r--r-- | ld/ChangeLog | 12 | ||||
-rw-r--r-- | ld/ldlang.c | 16 | ||||
-rw-r--r-- | ld/ldlang.h | 10 |
3 files changed, 31 insertions, 7 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 38a88df..5df13b8 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,15 @@ +2018-11-29 Thomas Preud'homme <thomas.preudhomme@linaro.org> + + * ldlang.c (statement_list): Document purpose and what next field it + uses. + (file_chain): Likewise. + (input_file_chain): Likewise. + * ldlang.h (lang_statement_header_type): Document statement list header + the next pointer correspond to. + (lang_statement_header_type): Replace comment for next and + next_real_file field to refer the reader to their corresponding + statement list header. + 2018-11-27 Maciej W. Rozycki <macro@linux-mips.org> * testsuite/ld-mips-elf/pic-reloc-0.d: New test. diff --git a/ld/ldlang.c b/ld/ldlang.c index e525396..9826479 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -67,6 +67,12 @@ static bfd_boolean map_option_f; static bfd_vma print_dot; static lang_input_statement_type *first_file; static const char *current_target; +/* Header for list of statements corresponding to any files involved in the + link, either specified from the command-line or added implicitely (eg. + archive member used to resolved undefined symbol, wildcard statement from + linker script, etc.). Next pointer is in next field of a + lang_statement_header_type (reached via header field in a + lang_statement_union). */ static lang_statement_list_type statement_list; static lang_statement_list_type *stat_save[10]; static lang_statement_list_type **stat_save_ptr = &stat_save[0]; @@ -97,7 +103,17 @@ const char *output_target; lang_output_section_statement_type *abs_output_section; lang_statement_list_type lang_output_section_statement; lang_statement_list_type *stat_ptr = &statement_list; +/* Header for list of statements corresponding to files used in the final + executable. This can be either object file specified on the command-line + or library member resolving an undefined reference. Next pointer is in next + field of a lang_input_statement_type (reached via input_statement field in a + lang_statement_union). */ lang_statement_list_type file_chain = { NULL, NULL }; +/* Header for list of statements corresponding to files specified on the + command-line for linking. It thus contains real object files and archive + but not archive members. Next pointer is in next_real_file field of a + lang_input_statement_type statement (reached via input_statement field in a + lang_statement_union). */ lang_statement_list_type input_file_chain; struct bfd_sym_chain entry_symbol = { NULL, NULL }; const char *entry_section = ".text"; diff --git a/ld/ldlang.h b/ld/ldlang.h index dfac0b1..325bbbb 100644 --- a/ld/ldlang.h +++ b/ld/ldlang.h @@ -88,6 +88,7 @@ enum statement_enum typedef struct lang_statement_header_struct { + /* Next pointer for statement_list statement list. */ union lang_statement_union *next; enum statement_enum type; } lang_statement_header_type; @@ -306,15 +307,10 @@ typedef struct lang_input_statement_struct struct flag_info *section_flag_list; - /* Point to the next file - whatever it is, wanders up and down - archive elements. If this input_statement is for an archive, it - won't be on file_chain (which uses this list pointer), but if - any elements have been extracted from the archive, it will point - to the input_statement for the last such element. */ + /* Next pointer for file_chain statement list. */ union lang_statement_union *next; - /* Point to the next file, but skips archive contents. Used by - input_file_chain. */ + /* Next pointer for input_file_chain statement list. */ union lang_statement_union *next_real_file; const char *target; |