aboutsummaryrefslogtreecommitdiff
path: root/gold/symtab.cc
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>2011-01-24 21:48:40 +0000
committerIan Lance Taylor <ian@airs.com>2011-01-24 21:48:40 +0000
commit0f3b89d87a62ea42186fb5ba525dadde36182a97 (patch)
treea1ba50cb45c68cfeaf4d02005a29a693f3d9a687 /gold/symtab.cc
parent314d366acd62a3de1ff8fff788d5b369c2f2d36c (diff)
downloadgdb-0f3b89d87a62ea42186fb5ba525dadde36182a97.zip
gdb-0f3b89d87a62ea42186fb5ba525dadde36182a97.tar.gz
gdb-0f3b89d87a62ea42186fb5ba525dadde36182a97.tar.bz2
* plugin.cc (class Plugin_rescan): Define new class.
(Plugin_manager::claim_file): Set any_claimed_. (Plugin_manager::save_archive): New function. (Plugin_manager::save_input_group): New function. (Plugin_manager::all_symbols_read): Create Plugin_rescan task if necessary. (Plugin_manager::new_undefined_symbol): New function. (Plugin_manager::rescan): New function. (Plugin_manager::rescannable_defines): New function. (Plugin_manager::add_input_file): Set any_added_. * plugin.h (class Plugin_manager): define new fields rescannable_, undefined_symbols_, any_claimed_, and any_added_. Declare Plugin_rescan as friend. Declare new functions. (Plugin_manager::Rescannable): Define type. (Plugin_manager::Rescannable_list): Define type. (Plugin_manager::Undefined_symbol_list): Define type. (Plugin_manager::Plugin_manager): Initialize new fields. * archive.cc (Archive::defines_symbol): New function. (Add_archive_symbols::run): Pass archive to plugins if any. * archive.h (class Archive): Declare defines_symbol. * readsyms.cc (Input_group::~Input_group): New function. (Finish_group::run): Pass input_group to plugins if any. * readsyms.h (class Input_group): Declare destructor. * symtab.cc (add_from_object): Pass undefined symbol to plugins if any.
Diffstat (limited to 'gold/symtab.cc')
-rw-r--r--gold/symtab.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/gold/symtab.cc b/gold/symtab.cc
index 75ed7f6..8531911 100644
--- a/gold/symtab.cc
+++ b/gold/symtab.cc
@@ -1,6 +1,6 @@
// symtab.cc -- the gold symbol table
-// Copyright 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+// Copyright 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -1002,7 +1002,11 @@ Symbol_table::add_from_object(Object* object,
// Record every time we see a new undefined symbol, to speed up
// archive groups.
if (!was_undefined && ret->is_undefined())
- ++this->saw_undefined_;
+ {
+ ++this->saw_undefined_;
+ if (parameters->options().has_plugins())
+ parameters->options().plugins()->new_undefined_symbol(ret);
+ }
// Keep track of common symbols, to speed up common symbol
// allocation.