From 9835ffab2f41a3eea894df5d85ec2387426d8081 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 5 Mar 2012 22:43:39 +0000 Subject: * ldlang.h (struct lang_input_statement_flags): New, extract from.. (lang_input_statement_type): ..here. New field "flags". (input_flags): Declare. (missing_file): Delete. * ldmain.h (whole_archive): Delete. (add_DT_NEEDED_for_regular, add_DT_NEEDED_for_dynamic): Delete. * ld.h (ld_config_type ): Delete. * ldmain.c (whole_archive): Delete. (add_DT_NEEDED_for_regular, add_DT_NEEDED_for_dynamic): Delete. * ldlang.c (missing_file, ldlang_sysrooted_script): Delete. (input_flags): New variable. Replace all uses of config.dynamic_link, missing_file, ldlang_sysrooted_script, whole_archive, add_DT_NEEDED_for_regular and add_DT_NEEDED_for_dynamic with fields from here. * ldfile.c: Likewise. * ldgram.y: Likewise. * ldmain.c: Likewise. * ldwrite.c: Likewise. * lexsup.c: Likewise. * plugin.c: Likewise. * emultempl/aix.em: Likewise. * emultempl/armelf.em: Likewise. * emultempl/elf32.em: Likewise. * emultempl/hppaelf.em: Likewise. * emultempl/linux.em: Likewise. * emultempl/pe.em: Likewise. * emultempl/pep.em: Likewise. * emultempl/ppc64elf.em: Likewise. * emultempl/scoreelf.em: Likewise. * emultempl/spuelf.em: Likewise. * emultempl/sunos.em: Likewise. * emultempl/vms.em: Likewise. * ldlang.c (new_afile): Use memset to init zero fields. (load_symbols): Simplify save and restore of flags around command file processing. * ldfile.c (is_sysrooted_pathname): Tidy. --- ld/ldlang.h | 65 ++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 34 insertions(+), 31 deletions(-) (limited to 'ld/ldlang.h') diff --git a/ld/ldlang.h b/ld/ldlang.h index f37409c7b5..9ed3952c4b 100644 --- a/ld/ldlang.h +++ b/ld/ldlang.h @@ -1,6 +1,6 @@ /* ldlang.h - linker command language support Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This file is part of the GNU Binutils. @@ -228,36 +228,16 @@ typedef struct bfd_vma output_offset; } lang_reloc_statement_type; -typedef struct lang_input_statement_struct +struct lang_input_statement_flags { - lang_statement_header_type header; - /* Name of this file. */ - const char *filename; - /* Name to use for the symbol giving address of text start. - Usually the same as filename, but for a file spec'd with - -l this is the -l switch itself rather than the filename. */ - const char *local_sym_name; - - bfd *the_bfd; - - struct flag_info *section_flag_list; - - /* Point to the next file - whatever it is, wanders up and down - archives */ - union lang_statement_union *next; - - /* Point to the next file, but skips archive contents. */ - union lang_statement_union *next_real_file; - - const char *target; - + /* 1 means this file was specified in a -l option. */ unsigned int maybe_archive : 1; /* 1 means search a set of directories for this file. */ - unsigned int search_dirs_flag : 1; + unsigned int search_dirs : 1; /* 1 means this was found in a search directory marked as sysrooted, - if search_dirs_flag is false, otherwise, that it should be + if search_dirs is false, otherwise, that it should be searched in ld_sysroot before any other location, as long as it starts with a slash. */ unsigned int sysrooted : 1; @@ -265,7 +245,7 @@ typedef struct lang_input_statement_struct /* 1 means this is base file of incremental load. Do not load this file's text or data. Also default text_start to after this file's bss. */ - unsigned int just_syms_flag : 1; + unsigned int just_syms : 1; /* Whether to search for this entry as a dynamic archive. */ unsigned int dynamic : 1; @@ -300,7 +280,32 @@ typedef struct lang_input_statement_struct /* Set if reloading an --as-needed lib. */ unsigned int reload : 1; #endif /* ENABLE_PLUGINS */ +}; + +typedef struct lang_input_statement_struct +{ + lang_statement_header_type header; + /* Name of this file. */ + const char *filename; + /* Name to use for the symbol giving address of text start. + Usually the same as filename, but for a file spec'd with + -l this is the -l switch itself rather than the filename. */ + const char *local_sym_name; + + bfd *the_bfd; + + struct flag_info *section_flag_list; + + /* Point to the next file - whatever it is, wanders up and down + archives */ + union lang_statement_union *next; + + /* Point to the next file, but skips archive contents. */ + union lang_statement_union *next_real_file; + + const char *target; + struct lang_input_statement_flags flags; } lang_input_statement_type; typedef struct @@ -416,8 +421,6 @@ struct lang_phdr etree_type *flags; }; -extern struct lang_phdr *lang_phdr_list; - /* This structure is used to hold a list of sections which may not cross reference each other. */ @@ -435,8 +438,6 @@ struct lang_nocrossrefs lang_nocrossref_type *list; }; -extern struct lang_nocrossrefs *nocrossref_list; - /* This structure is used to hold a list of input section names which will not match an output section in the linker script. */ @@ -467,9 +468,12 @@ struct orphan_save lang_output_section_statement_type **os_tail; }; +extern struct lang_phdr *lang_phdr_list; +extern struct lang_nocrossrefs *nocrossref_list; extern const char *output_target; extern lang_output_section_statement_type *abs_output_section; extern lang_statement_list_type lang_output_section_statement; +extern struct lang_input_statement_flags input_flags; extern bfd_boolean lang_has_input_file; extern etree_type *base; extern lang_statement_list_type *stat_ptr; @@ -482,7 +486,6 @@ extern lang_statement_list_type file_chain; extern lang_statement_list_type input_file_chain; extern int lang_statement_iteration; -extern bfd_boolean missing_file; extern void lang_init (void); -- cgit v1.2.1