* options.cc (General_options::parse_V): Set printed_version_.
	(General_options::General_options): Initialize printed_version_.
	* options.h (class General_options): Add printed_version_ field.
	* gold.cc (queue_initial_tasks): If there are no input files,
	don't give a fatal error if we printed the version information.
	(queue_middle_tasks): If using -r with a shared object, give a
	fatal error rather than an ordinary error.
This commit is contained in:
Ian Lance Taylor 2009-06-24 05:01:17 +00:00
parent dab97f2471
commit 459c9f1c5f
4 changed files with 28 additions and 4 deletions

View File

@ -1,3 +1,14 @@
2009-06-23 Ian Lance Taylor <iant@google.com>
PR 10237
* options.cc (General_options::parse_V): Set printed_version_.
(General_options::General_options): Initialize printed_version_.
* options.h (class General_options): Add printed_version_ field.
* gold.cc (queue_initial_tasks): If there are no input files,
don't give a fatal error if we printed the version information.
(queue_middle_tasks): If using -r with a shared object, give a
fatal error rather than an ordinary error.
2009-06-23 Ian Lance Taylor <iant@google.com>
PR 10219

View File

@ -164,7 +164,11 @@ queue_initial_tasks(const General_options& options,
Symbol_table* symtab, Layout* layout, Mapfile* mapfile)
{
if (cmdline.begin() == cmdline.end())
gold_fatal(_("no input files"));
{
if (options.printed_version())
gold_exit(true);
gold_fatal(_("no input files"));
}
int thread_count = options.thread_count_initial();
if (thread_count == 0)
@ -364,7 +368,7 @@ queue_middle_tasks(const General_options& options,
(*input_objects->dynobj_begin())->name().c_str());
}
if (!doing_static_link && parameters->options().relocatable())
gold_error(_("cannot mix -r with dynamic object %s"),
gold_fatal(_("cannot mix -r with dynamic object %s"),
(*input_objects->dynobj_begin())->name().c_str());
if (!doing_static_link
&& options.oformat_enum() != General_options::OBJECT_FORMAT_ELF)

View File

@ -273,6 +273,7 @@ void
General_options::parse_V(const char*, const char*, Command_line*)
{
gold::print_version(true);
this->printed_version_ = true;
printf(_(" Supported targets:\n"));
std::vector<const char*> supported_names;
gold::supported_target_names(&supported_names);
@ -708,7 +709,8 @@ namespace gold
{
General_options::General_options()
: execstack_status_(General_options::EXECSTACK_FROM_INPUT), static_(false),
: printed_version_(false),
execstack_status_(General_options::EXECSTACK_FROM_INPUT), static_(false),
do_demangle_(false), plugins_(),
incremental_disposition_(INCREMENTAL_CHECK), implicit_incremental_(false)
{

View File

@ -946,6 +946,11 @@ class General_options
// any problems.
void finalize();
// True if we printed the version information.
bool
printed_version() const
{ return this->printed_version_; }
// The macro defines output() (based on --output), but that's a
// generic name. Provide this alternative name, which is clearer.
const char*
@ -1090,6 +1095,8 @@ class General_options
void
add_plugin_option(const char* opt);
// Whether we printed version information.
bool printed_version_;
// Whether to mark the stack as executable.
Execstack execstack_status_;
// Whether to do a static link.
@ -1106,7 +1113,7 @@ class General_options
// --incremental-unchanged or --incremental-unknown option. The
// value may change as we proceed parsing the command line flags.
Incremental_disposition incremental_disposition_;
// Wheater we have seen one of the options that require incremental
// Whether we have seen one of the options that require incremental
// build (--incremental-changed, --incremental-unchanged or
// --incremental-unknown)
bool implicit_incremental_;