diff options
author | Ian Lance Taylor <ian@airs.com> | 2008-05-07 06:08:01 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 2008-05-07 06:08:01 +0000 |
commit | f3e9c5c5170afd576cb1c31464472587aba05f52 (patch) | |
tree | 86f9b846be987b04ad87320629f7d316fc6c0779 /gold/archive.cc | |
parent | b26238c07d9f3f8d617d53b44869d76a7cdaa563 (diff) | |
download | gdb-f3e9c5c5170afd576cb1c31464472587aba05f52.zip gdb-f3e9c5c5170afd576cb1c31464472587aba05f52.tar.gz gdb-f3e9c5c5170afd576cb1c31464472587aba05f52.tar.bz2 |
PR 6049
* options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
functions.
(class General_options): Remove existing --undefined, and add
--no-undefined instead. Add new --undefined as synonym for -u.
* archive.cc (Archive::add_symbols): Check whether symbol was
named with -u.
* gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
* symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
all uses. Add IS_UNDEFINED. Update declarations to split
different versions of init_base. Declare init_base_undefined.
(Symbol::is_defined): Handle IS_UNDEFINED.
(Symbol::is_undefined): Likewise.
(Symbol::is_weak_undefined): Call is_undefined.
(Symbol::is_absolute): Handle IS_CONSTANT.
(class Sized_symbol): Update declarations to split different
versions of init. Declare init_undefined.
(class Symbol_table): Declare new functions.
* symtab.cc (Symbol::init_base_object): Rename from init_base.
Change all callers.
(Symbol::init_base_output_data): Likewise.
(Symbol::init_base_output_segment): Likewise.
(Symbol::init_base_constant): Likewise.
(Symbol::init_base_undefined): New function.
(Sized_symbol::init_object): Rename from init. Change all
callers.
(Sized_symbol::init_output_data): Likewise.
(Sized_symbol::init_output_segment): Likewise.
(Sized_symbol::init_constant): Likewise.
(Sized_symbol::init_undefined): New function.
(Symbol_table::add_undefined_symbols_from_command_line): New
function.
(Symbol_table::do_add_undefined_symbols_from_command_line): New
function.
(Symbol::final_value_is_known): Handle IS_UNDEFINED.
(Symbol::output_section): Likewise.
(Symbol::set_output_section): Likewise.
(Symbol_table::sized_finalize_symbol): Likewise.
(Symbol_table::sized_write_globals): Likewise.
* resolve.cc (Symbol_table::should_override): Likewise.
(Symbol::override_base_with_special): Likewise.
Diffstat (limited to 'gold/archive.cc')
-rw-r--r-- | gold/archive.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gold/archive.cc b/gold/archive.cc index be623b5..1e16de9 100644 --- a/gold/archive.cc +++ b/gold/archive.cc @@ -326,7 +326,11 @@ Archive::add_symbols(Symbol_table* symtab, Layout* layout, + this->armap_[i].name_offset); Symbol* sym = symtab->lookup(sym_name); if (sym == NULL) - continue; + { + // Check whether the symbol was named in a -u option. + if (!parameters->options().is_undefined(sym_name)) + continue; + } else if (!sym->is_undefined()) { this->armap_checked_[i] = true; |