+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.
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];
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";
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;
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;