aboutsummaryrefslogtreecommitdiff
path: root/ld/ldlang.c
diff options
context:
space:
mode:
authorThomas Preud'homme <thomas.preudhomme@linaro.org>2018-11-29 13:42:49 +0000
committerThomas Preud'homme <thomas.preudhomme@linaro.org>2018-11-29 13:42:49 +0000
commite368bf56d38afecd1ac0e19c9e9cb54e2bb4fad2 (patch)
tree6f6722810ab9e256011fb87e10bded218d8fb329 /ld/ldlang.c
parentffd9e4d0225d45d1603d09e06151c388589e063f (diff)
downloadgdb-e368bf56d38afecd1ac0e19c9e9cb54e2bb4fad2.zip
gdb-e368bf56d38afecd1ac0e19c9e9cb54e2bb4fad2.tar.gz
gdb-e368bf56d38afecd1ac0e19c9e9cb54e2bb4fad2.tar.bz2
Document purpose of each ld statement lists
When discovering the statement lists via their header variable statement_list, file_chain and input_file_chain it can be confusing to figure out what they are for. They can point to the same initial statement and the relation between the next field they use is not obvious from the name. This commit adds comment for each of those statement list header to explain what they are for and what next field they use. It also rewrite the comment for the next fields to simply redirect the reader to the list header to avoid duplication of documentation. 2018-11-29 Thomas Preud'homme <thomas.preudhomme@linaro.org> ld/ * 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.
Diffstat (limited to 'ld/ldlang.c')
-rw-r--r--ld/ldlang.c16
1 files changed, 16 insertions, 0 deletions
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";