* ld.texinfo (Builtin Functions) <DEFINED>: Say that only symbols
authorHans-Peter Nilsson <hp@axis.com>
Sat, 11 Oct 2003 09:16:20 +0000 (09:16 +0000)
committerHans-Peter Nilsson <hp@axis.com>
Sat, 11 Oct 2003 09:16:20 +0000 (09:16 +0000)
commit420e579cc4f1252a4e915ad866b49f76bda0c1cd
tree29b5a094a982cb9d580baa4e6c9640f0d7fd8f8a
parenta8f4cde1ae3d737931ac9d9b58865da965f2b9b9
* ld.texinfo (Builtin Functions) <DEFINED>: Say that only symbols
defined before the statement using DEFINED yield 1.
* ldexp.c (fold_name) <case DEFINED>: In lang_first_phase_enum,
call lang_track_definedness on symbol.  In subsequent phases, use
lang_symbol_definition_iteration and lang_statement_iteration to
check whether the symbol was defined before the current statement.
(exp_fold_tree) <case etree_assign et al>: Call
lang_update_definedness before updating symbol type when setting
symbol.
* ldlang.c (lang_definedness_table): New variable.
(lang_definedness_newfunc, lang_track_definedness)
(lang_symbol_definition_iteration, lang_update_definedness): New
functions.
(lang_init): Initialize lang_definedness_table and
lang_statement_iteration.
(lang_finish): Destroy bfd_hash_table_free.
(lang_size_sections): Increment lang_statement_iteration.
(lang_do_assignments_1): New function with former
lang_do_assignments contents.  Change recursive calls to call this
function.
(lang_do_assignments): Evacuate contents.  Increment
lang_statement_iteration, then just call lang_do_assignments_1.
* ldlang.h (struct lang_definedness_hash_entry)
(lang_statement_iteration, lang_track_definedness)
(lang_symbol_definition_iteration, lang_update_definedness):
Declare.
ld/ChangeLog
ld/ld.texinfo
ld/ldexp.c
ld/ldlang.c
ld/ldlang.h