From Craig Silverstein: accept any string for input format, warn if
authorIan Lance Taylor <iant@google.com>
Thu, 6 Mar 2008 00:53:37 +0000 (00:53 +0000)
committerIan Lance Taylor <iant@google.com>
Thu, 6 Mar 2008 00:53:37 +0000 (00:53 +0000)
thread options when not supported.

gold/options.cc
gold/options.h

index 5307d86..80a723e 100644 (file)
@@ -341,7 +341,7 @@ string_to_object_format(const char* arg)
     return gold::General_options::OBJECT_FORMAT_BINARY;
   else
     {
-      gold::gold_error(_("format '%s' not supported "
+      gold::gold_error(_("format '%s' not supported; treating as elf "
                          "(supported formats: elf, binary)"),
                        arg);
       return gold::General_options::OBJECT_FORMAT_ELF;
@@ -628,6 +628,22 @@ General_options::finalize()
   if (this->thread_count() > 0 && this->thread_count_final() == 0)
     this->set_thread_count_final(this->thread_count());
 
+  // Let's warn if you set the thread-count but we're going to ignore it.
+#ifndef ENABLE_THREADS
+  if (this->threads())
+    {
+      gold_warning(_("ignoring --threads: "
+                    "%s was compiled without thread support"),
+                  program_name);
+      this->set_threads(false);
+    }
+  if (this->thread_count() > 0 || this->thread_count_initial() > 0
+      || this->thread_count_middle() > 0 || this->thread_count_final() > 0)
+    gold_warning(_("ignoring --thread-count: "
+                   "%s was compiled without thread support"),
+                 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");
index 7f5a561..454991f 100644 (file)
@@ -415,11 +415,12 @@ class General_options
   DEFINE_bool(Bsymbolic, options::ONE_DASH, '\0', false,
               _("Bind defined symbols locally"), NULL);
 
-  DEFINE_enum(format, options::TWO_DASHES, 'b', "elf",
-              _("Set input format"), _("[elf,binary]"),
-              {"elf", "binary",
-               "elf32-i386", "elf32-little", "elf32-big",
-               "elf64-x86_64", "elf64-little", "elf64-big"});
+  // This should really be an "enum", but it's too easy for folks to
+  // forget to update the list as they add new targets.  So we just
+  // accept any string.  We'll fail later (when the string is parsed),
+  // if the target isn't actually supported.
+  DEFINE_string(format, options::TWO_DASHES, 'b', "elf",
+                _("Set input format"), _("[elf,binary]"));
 
 #ifdef HAVE_ZLIB_H
   DEFINE_enum(compress_debug_sections, options::TWO_DASHES, '\0', "none",