Hardcode host-specific name for LTO plugin
[platform/upstream/binutils.git] / gold / debug.h
index c6bfb7a..63d3d8a 100644 (file)
@@ -1,6 +1,6 @@
 // debug.h -- gold internal debugging support   -*- C++ -*-
 
-// Copyright 2007 Free Software Foundation, Inc.
+// Copyright (C) 2007-2014 Free Software Foundation, Inc.
 // Written by Ian Lance Taylor <iant@google.com>.
 
 // This file is part of gold.
@@ -23,6 +23,8 @@
 #ifndef GOLD_DEBUG_H
 #define GOLD_DEBUG_H
 
+#include <cstring>
+
 #include "parameters.h"
 #include "errors.h"
 
@@ -31,9 +33,36 @@ namespace gold
 
 // The different types of debugging we support.  These are bitflags.
 
-const int DEBUG_TASK = 1;
+const int DEBUG_TASK = 0x1;
+const int DEBUG_SCRIPT = 0x2;
+const int DEBUG_FILES = 0x4;
+const int DEBUG_RELAXATION = 0x8;
+const int DEBUG_INCREMENTAL = 0x10;
+
+const int DEBUG_ALL = (DEBUG_TASK | DEBUG_SCRIPT | DEBUG_FILES
+                      | DEBUG_RELAXATION | DEBUG_INCREMENTAL);
+
+// Convert a debug string to the appropriate enum.
+inline int
+debug_string_to_enum(const char* arg)
+{
+  static const struct { const char* name; int value; }
+  debug_options[] =
+  {
+    { "task", DEBUG_TASK },
+    { "script", DEBUG_SCRIPT },
+    { "files", DEBUG_FILES },
+    { "relaxation", DEBUG_RELAXATION },
+    { "incremental", DEBUG_INCREMENTAL },
+    { "all", DEBUG_ALL }
+  };
 
-const int DEBUG_ALL = DEBUG_TASK;
+  int retval = 0;
+  for (size_t i = 0; i < sizeof(debug_options) / sizeof(*debug_options); ++i)
+    if (strstr(arg, debug_options[i].name))
+      retval |= debug_options[i].value;
+  return retval;
+}
 
 // Print a debug message if TYPE is enabled.  This is a macro so that
 // we only evaluate the arguments if necessary.