* 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 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
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)
(*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)
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);
{
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)
{
// 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*
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.
// --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_;