From 1706a06f9e3f4dbdc5f516e3631d44a081e8b95e Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 25 May 2011 06:15:28 +0000 Subject: * 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. --- gold/fileread.cc | 58 +++++++++++++++++++++++++------------------------------- 1 file changed, 26 insertions(+), 32 deletions(-) (limited to 'gold/fileread.cc') diff --git a/gold/fileread.cc b/gold/fileread.cc index 232473470a9..80ddfbc09f0 100644 --- a/gold/fileread.cc +++ b/gold/fileread.cc @@ -986,45 +986,40 @@ Input_file::find_file(const Dirsearch& dirpath, int* pindex, else if (input_argument->is_lib() || input_argument->is_searched_file()) { - std::string n1, n2; + std::vector names; + names.reserve(2); if (input_argument->is_lib()) { - n1 = "lib"; - n1 += input_argument->name(); + std::string prefix = "lib"; + prefix += input_argument->name(); if (parameters->options().is_static() || !input_argument->options().Bdynamic()) - n1 += ".a"; + names.push_back(prefix + ".a"); else { - n2 = n1 + ".a"; - n1 += ".so"; + names.push_back(prefix + ".so"); + names.push_back(prefix + ".a"); } } else - n1 = input_argument->name(); + names.push_back(input_argument->name()); - if (Input_file::try_extra_search_path(pindex, input_argument, n1, - found_name, namep)) - return true; - - if (!n2.empty() && Input_file::try_extra_search_path(pindex, - input_argument, n2, - found_name, namep)) - return true; + for (std::vector::const_iterator n = names.begin(); + n != names.end(); + ++n) + if (Input_file::try_extra_search_path(pindex, input_argument, *n, + found_name, namep)) + return true; // It is not in the extra_search_path. - name = dirpath.find(n1, n2, is_in_sysroot, pindex); + name = dirpath.find(names, is_in_sysroot, pindex, found_name); if (name.empty()) { gold_error(_("cannot find %s%s"), - input_argument->is_lib() ? "-l" : "", + input_argument->is_lib() ? "-l" : "", input_argument->name()); return false; } - if (n2.empty() || name[name.length() - 1] == 'o') - *found_name = n1; - else - *found_name = n2; *namep = name; return true; } @@ -1034,22 +1029,21 @@ Input_file::find_file(const Dirsearch& dirpath, int* pindex, gold_assert(input_argument->extra_search_path() != NULL); if (try_extra_search_path(pindex, input_argument, input_argument->name(), - found_name, namep)) - return true; + found_name, namep)) + return true; // extra_search_path failed, so check the normal search-path. int index = *pindex; if (index > 0) - --index; - name = dirpath.find(input_argument->name(), "", - is_in_sysroot, &index); + --index; + name = dirpath.find(std::vector(1, input_argument->name()), + is_in_sysroot, &index, found_name); if (name.empty()) - { - gold_error(_("cannot find %s"), - input_argument->name()); - return false; - } - *found_name = input_argument->name(); + { + gold_error(_("cannot find %s"), + input_argument->name()); + return false; + } *namep = name; *pindex = index + 1; return true; -- cgit v1.2.1