From 706e1f5e80a60c1c30a0e075bcc8228ed3d905fc Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 11 Apr 2008 20:28:34 +0000 Subject: [PATCH] * options.h (General_options): Add entries for '-Y' and '-relax'. * options.cc (General_options:finalize): If -Y was used, add those entries to the library path instead of the default "/lib" and "/usr/lib". --- gold/ChangeLog | 9 +++++++++ gold/options.cc | 31 +++++++++++++++++++++++++++---- gold/options.h | 7 +++++++ 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/gold/ChangeLog b/gold/ChangeLog index 907ea2717f3..5916d05ae62 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,12 @@ +2008-04-11 David S. Miller + Ian Lance Taylor + + * options.h (General_options): Add entries for '-Y' and + '-relax'. + * options.cc (General_options:finalize): If -Y was used, add those + entries to the library path instead of the default "/lib" and + "/usr/lib". + 2008-04-11 David S. Miller * testsuite/justsyms.t: Start at 0x100. diff --git a/gold/options.cc b/gold/options.cc index a80f32cb960..f2fb56094c8 100644 --- a/gold/options.cc +++ b/gold/options.cc @@ -717,10 +717,33 @@ General_options::finalize() program_name); #endif - // Even if they don't specify it, we add -L /lib and -L /usr/lib. - // FIXME: We should only do this when configured in native mode. - this->add_to_library_path_with_sysroot("/lib"); - this->add_to_library_path_with_sysroot("/usr/lib"); + if (this->user_set_Y()) + { + std::string s = this->Y(); + if (s.compare(0, 2, "P,") == 0) + s.erase(0, 2); + + size_t pos = 0; + size_t next_pos; + do + { + next_pos = s.find(':', pos); + size_t len = (next_pos == std::string::npos + ? next_pos + : next_pos - pos); + if (len != 0) + this->add_to_library_path_with_sysroot(s.substr(pos, len).c_str()); + pos = next_pos + 1; + } + while (next_pos != std::string::npos); + } + else + { + // Even if they don't specify it, we add -L /lib and -L /usr/lib. + // FIXME: We should only do this when configured in native mode. + this->add_to_library_path_with_sysroot("/lib"); + this->add_to_library_path_with_sysroot("/usr/lib"); + } // Normalize library_path() by adding the sysroot to all directories // in the path, as appropriate. diff --git a/gold/options.h b/gold/options.h index 8d624e5b005..e17c40f8320 100644 --- a/gold/options.h +++ b/gold/options.h @@ -556,6 +556,9 @@ class General_options DEFINE_bool(relocatable, options::EXACTLY_ONE_DASH, 'r', false, N_("Generate relocatable output"), NULL); + DEFINE_bool(relax, options::TWO_DASHES, '\0', false, + N_("Relax branches on certain targets"), NULL); + // -R really means -rpath, but can mean --just-symbols for // compatibility with GNU ld. -rpath is always -rpath, so we list // it separately. @@ -626,6 +629,10 @@ class General_options DEFINE_special(wrap, options::TWO_DASHES, '\0', N_("Use wrapper functions for SYMBOL"), N_("SYMBOL")); + DEFINE_string(Y, options::EXACTLY_ONE_DASH, 'Y', "", + N_("Default search path for Solaris compatibility"), + N_("PATH")); + DEFINE_special(start_group, options::TWO_DASHES, '(', N_("Start a library search group"), NULL); DEFINE_special(end_group, options::TWO_DASHES, ')', -- 2.30.2