diff options
author | Ian Lance Taylor <ian@airs.com> | 2011-05-25 06:15:28 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 2011-05-25 06:15:28 +0000 |
commit | 1706a06f9e3f4dbdc5f516e3631d44a081e8b95e (patch) | |
tree | af8a730d66a33ad655177a7ea6788553e659cc72 /gold/dirsearch.cc | |
parent | a10ae760821ec6f09cf63f93e3b2ff0e03fbaa3d (diff) | |
download | gdb-1706a06f9e3f4dbdc5f516e3631d44a081e8b95e.zip gdb-1706a06f9e3f4dbdc5f516e3631d44a081e8b95e.tar.gz gdb-1706a06f9e3f4dbdc5f516e3631d44a081e8b95e.tar.bz2 |
* dirsearch.cc (Dirsearch::find): Replace n1 and n2 parameters
with name parameter. Add found_name parameter.
* fileread.cc (Input_file::find_file): Adjust code accordingly.
* dirsearch.h (class Dirsearch): Update declaration.
Diffstat (limited to 'gold/dirsearch.cc')
-rw-r--r-- | gold/dirsearch.cc | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/gold/dirsearch.cc b/gold/dirsearch.cc index fac3b2c..a149db5 100644 --- a/gold/dirsearch.cc +++ b/gold/dirsearch.cc @@ -1,6 +1,6 @@ // dirsearch.cc -- directory searching for gold -// 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. @@ -241,8 +241,9 @@ Dirsearch::initialize(Workqueue* workqueue, // File_read::open. std::string -Dirsearch::find(const std::string& n1, const std::string& n2, - bool* is_in_sysroot, int* pindex) const +Dirsearch::find(const std::vector<std::string>& names, + bool* is_in_sysroot, int* pindex, + std::string *found_name) const { gold_assert(!this->token_.is_blocked()); gold_assert(*pindex >= 0); @@ -254,27 +255,20 @@ Dirsearch::find(const std::string& n1, const std::string& n2, const Search_directory* p = &this->directories_->at(i); Dir_cache* pdc = caches->lookup(p->name().c_str()); gold_assert(pdc != NULL); - if (pdc->find(n1)) + for (std::vector<std::string>::const_iterator n = names.begin(); + n != names.end(); + ++n) { - *is_in_sysroot = p->is_in_sysroot(); - *pindex = i; - return p->name() + '/' + n1; - } - else - gold_debug(DEBUG_FILES, "Attempt to open %s/%s failed", - p->name().c_str(), n1.c_str()); - - if (!n2.empty()) - { - if (pdc->find(n2)) - { - *is_in_sysroot = p->is_in_sysroot(); + if (pdc->find(*n)) + { + *is_in_sysroot = p->is_in_sysroot(); *pindex = i; - return p->name() + '/' + n2; - } - else - gold_debug(DEBUG_FILES, "Attempt to open %s/%s failed", - p->name().c_str(), n2.c_str()); + *found_name = *n; + return p->name() + '/' + *n; + } + else + gold_debug(DEBUG_FILES, "Attempt to open %s/%s failed", + p->name().c_str(), (*n).c_str()); } } |