summaryrefslogtreecommitdiff
path: root/gold/parameters.cc
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>2011-06-28 23:12:31 +0000
committerIan Lance Taylor <ian@airs.com>2011-06-28 23:12:31 +0000
commit03ef7571fc6524b38bfbb99ffdfa72418d03d02c (patch)
treedb7978009cae555afe0e9bdb633d543f2e3c3664 /gold/parameters.cc
parent200b2bb9e8930d9d47fa5f378cf595328ee9c9bc (diff)
downloadbinutils-gdb-03ef7571fc6524b38bfbb99ffdfa72418d03d02c.tar.gz
PR gold/12934
* target-select.cc (Target_selector::Target_selector): Add emulation parameter. Change all callers. (select_target_by_bfd_name): Rename from select_target_by_name. Change all callers. (select_target_by_emulation): New function. (supported_emulation_names): New function. * target-select.h (class Target_selector): Add emulation_ field. Update declarations. (Target_selector::recognize_by_bfd_name): Rename from recognize_by_name. Change all callers. (Target_selector::supported_bfd_names): Rename from supported_names. Change all callers. (Target_selector::recognize_by_emulation): New function. (Target_selector::supported_emulations): New function. (Target_selector::emulation): New function. (Target_selector::do_recognize_by_bfd_name): Rename from do_recognize_by_name. Change all callers. (Target_selector::do_supported_bfd_names): Rename from do_supported_names. Change all callers. (Target_selector::do_recognize_by_emulation): New function. (Target_selector::do_supported_emulations): New function. (select_target_by_bfd_name): Change name in declaration. (select_target_by_emulation): Declare. (supported_emulation_names): Declare. * parameters.cc (parameters_force_valid_target): Try to find target based on emulation from -m option. * options.h (class General_options): Change doc string for -m. * options.cc (help): Print emulations. (General_options::parse_V): Likewise. * freebsd.h (Target_selector_freebsd::Target_selector_freebsd): Add emulation parameter. Change all callers.
Diffstat (limited to 'gold/parameters.cc')
-rw-r--r--gold/parameters.cc21
1 files changed, 17 insertions, 4 deletions
diff --git a/gold/parameters.cc b/gold/parameters.cc
index 194c81bd389..1b371d8e5bb 100644
--- a/gold/parameters.cc
+++ b/gold/parameters.cc
@@ -1,6 +1,6 @@
// parameters.cc -- general parameters for a link using 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.
@@ -299,15 +299,28 @@ parameters_force_valid_target()
gold_assert(parameters->options_valid());
if (parameters->options().user_set_oformat())
{
- Target* target = select_target_by_name(parameters->options().oformat());
+ const char* bfd_name = parameters->options().oformat();
+ Target* target = select_target_by_bfd_name(bfd_name);
if (target != NULL)
{
set_parameters_target(target);
return;
}
- gold_error(_("unrecognized output format %s"),
- parameters->options().oformat());
+ gold_error(_("unrecognized output format %s"), bfd_name);
+ }
+
+ if (parameters->options().user_set_m())
+ {
+ const char* emulation = parameters->options().m();
+ Target* target = select_target_by_emulation(emulation);
+ if (target != NULL)
+ {
+ set_parameters_target(target);
+ return;
+ }
+
+ gold_error(_("unrecognized emulation %s"), emulation);
}
// The GOLD_DEFAULT_xx macros are defined by the configure script.