diff options
author | Alan Modra <amodra@gmail.com> | 2012-03-08 05:29:33 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2012-03-08 05:29:33 +0000 |
commit | f4a23d427dc7ac56aa4de7a8d29e899e936ce841 (patch) | |
tree | 18bc44195d1ed303ffa9a5daef8e33eae320a256 /ld/ldlang.c | |
parent | 4e3aa408903f6f4ed9177fff7def91fe6bb8fd2b (diff) | |
download | gdb-f4a23d427dc7ac56aa4de7a8d29e899e936ce841.zip gdb-f4a23d427dc7ac56aa4de7a8d29e899e936ce841.tar.gz gdb-f4a23d427dc7ac56aa4de7a8d29e899e936ce841.tar.bz2 |
PR ld/10340
* ldfile.c (is_sysrooted_pathname): Remove notsame param.
(ldfile_add_library_path): Don't set sysrooted flag.
(ldfile_open_file_search): Likewise, and don't copy them.
(try_open): Delete exten and code handling such. Add sysrooted
param and return whether path is in sysroot.
(ldfile_find_command_file): Delete extend param. Add sysrooted
param. Rename local var. Update try_open calls.
(ldfile_open_command_file_1): Pass sysrooted to lex_push_file.
* ldfile.h (search_dirs_type): Remove sysrooted field.
* ldlang.c (new_afile): Always set sysrooted from input_flags.
(load_symbols): Don't set input_flags.sysrooted.
* ldlang.h (struct lang_input_statement_flags): Revise sysrooted
comment.
* ldlex.h (lex_push_file): Update prototype.
* ldlex.l (sysrooted_stack): New array.
(EOF): Pop input_flags.sysrooted.
(lex_push_file): Add sysrooted param. Save and set
input_flags.sysrooted.
Diffstat (limited to 'ld/ldlang.c')
-rw-r--r-- | ld/ldlang.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/ld/ldlang.c b/ld/ldlang.c index 650f4b7..a95d2a5 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -1064,6 +1064,7 @@ new_afile (const char *name, p->flags.add_DT_NEEDED_for_dynamic = input_flags.add_DT_NEEDED_for_dynamic; p->flags.add_DT_NEEDED_for_regular = input_flags.add_DT_NEEDED_for_regular; p->flags.whole_archive = input_flags.whole_archive; + p->flags.sysrooted = input_flags.sysrooted; if (file_type == lang_input_file_is_l_enum && name[0] == ':' && name[1] != '\0') @@ -1101,7 +1102,6 @@ new_afile (const char *name, p->local_sym_name = name; p->flags.real = TRUE; p->flags.search_dirs = TRUE; - p->flags.sysrooted = input_flags.sysrooted; break; case lang_input_file_is_file_enum: p->filename = name; @@ -2716,7 +2716,6 @@ load_symbols (lang_input_statement_type *entry, ldfile_open_command_file (entry->filename); push_stat_ptr (place); - input_flags.sysrooted = entry->flags.sysrooted; input_flags.add_DT_NEEDED_for_regular = entry->flags.add_DT_NEEDED_for_regular; input_flags.add_DT_NEEDED_for_dynamic @@ -2729,7 +2728,9 @@ load_symbols (lang_input_statement_type *entry, yyparse (); ldfile_assumed_script = FALSE; - /* missing_file is sticky. */ + /* missing_file is sticky. sysrooted will already have been + restored when seeing EOF in yyparse, but no harm to restore + again. */ save_flags.missing_file |= input_flags.missing_file; input_flags = save_flags; pop_stat_ptr (); |