[Lldb-commits] [lldb] r292920 - Add format_provider for lldb::StateType

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Tue Jan 24 03:48:25 PST 2017


Author: labath
Date: Tue Jan 24 05:48:25 2017
New Revision: 292920

URL: http://llvm.org/viewvc/llvm-project?rev=292920&view=rev
Log:
Add format_provider for lldb::StateType

Reviewers: clayborg

Subscribers: mgorny, lldb-commits

Differential Revision: https://reviews.llvm.org/D29036

Added:
    lldb/trunk/unittests/Core/StateTest.cpp
Modified:
    lldb/trunk/include/lldb/Core/State.h
    lldb/trunk/source/Core/State.cpp
    lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp
    lldb/trunk/unittests/Core/CMakeLists.txt

Modified: lldb/trunk/include/lldb/Core/State.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/State.h?rev=292920&r1=292919&r2=292920&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/State.h (original)
+++ lldb/trunk/include/lldb/Core/State.h Tue Jan 24 05:48:25 2017
@@ -10,11 +10,8 @@
 #ifndef liblldb_State_h_
 #define liblldb_State_h_
 
-// C Includes
-// C++ Includes
-// Other libraries and framework includes
-// Project includes
 #include "lldb/lldb-private.h"
+#include "llvm/Support/FormatProviders.h"
 
 namespace lldb_private {
 
@@ -71,4 +68,13 @@ const char *GetPermissionsAsCString(uint
 
 } // namespace lldb_private
 
+namespace llvm {
+template <> struct format_provider<lldb::StateType> {
+  static void format(const lldb::StateType &state, raw_ostream &Stream,
+                     StringRef Style) {
+    Stream << lldb_private::StateAsCString(state);
+  }
+};
+}
+
 #endif // liblldb_State_h_

Modified: lldb/trunk/source/Core/State.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/State.cpp?rev=292920&r1=292919&r2=292920&view=diff
==============================================================================
--- lldb/trunk/source/Core/State.cpp (original)
+++ lldb/trunk/source/Core/State.cpp Tue Jan 24 05:48:25 2017
@@ -44,10 +44,7 @@ const char *lldb_private::StateAsCString
   case eStateSuspended:
     return "suspended";
   }
-  static char unknown_state_string[64];
-  snprintf(unknown_state_string, sizeof(unknown_state_string), "StateType = %i",
-           state);
-  return unknown_state_string;
+  return "unknown";
 }
 
 const char *lldb_private::GetPermissionsAsCString(uint32_t permissions) {

Modified: lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp?rev=292920&r1=292919&r2=292920&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp (original)
+++ lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp Tue Jan 24 05:48:25 2017
@@ -567,7 +567,7 @@ void NativeProcessLinux::MonitorCallback
             pid,
             thread_found ? "stopped tracking thread metadata"
                          : "thread metadata not found",
-            StateAsCString(GetState()));
+            GetState());
         // The main thread exited.  We're done monitoring.  Report to delegate.
         SetExitStatus(convert_pid_status_to_exit_type(status),
                       convert_pid_status_to_return_code(status), nullptr, true);
@@ -1033,7 +1033,7 @@ void NativeProcessLinux::MonitorSignal(c
       LLDB_LOG(log,
                "pid {0} tid {1}, thread was already marked as a stopped "
                "state (state={2}), leaving stop signal as is",
-               GetID(), thread.GetID(), StateAsCString(thread_state));
+               GetID(), thread.GetID(), thread_state);
       SignalIfAllThreadsStopped();
     }
 
@@ -1263,7 +1263,7 @@ Error NativeProcessLinux::Resume(const R
     }
 
     LLDB_LOG(log, "processing resume action state {0} for pid {1} tid {2}",
-             StateAsCString(action->state), GetID(), thread_sp->GetID());
+             action->state, GetID(), thread_sp->GetID());
 
     switch (action->state) {
     case eStateRunning:
@@ -1393,7 +1393,7 @@ Error NativeProcessLinux::Kill() {
   case StateType::eStateUnloaded:
     // Nothing to do - the process is already dead.
     LLDB_LOG(log, "ignored for PID {0} due to current state: {1}", GetID(),
-             StateAsCString(m_state));
+             m_state);
     return error;
 
   case StateType::eStateConnected:
@@ -2273,7 +2273,7 @@ Error NativeProcessLinux::ResumeThread(N
     return step_result;
   }
   default:
-    LLDB_LOG(log, "Unhandled state {0}.", StateAsCString(state));
+    LLDB_LOG(log, "Unhandled state {0}.", state);
     llvm_unreachable("Unhandled state for resume");
   }
 }

Modified: lldb/trunk/unittests/Core/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Core/CMakeLists.txt?rev=292920&r1=292919&r2=292920&view=diff
==============================================================================
--- lldb/trunk/unittests/Core/CMakeLists.txt (original)
+++ lldb/trunk/unittests/Core/CMakeLists.txt Tue Jan 24 05:48:25 2017
@@ -6,6 +6,7 @@ add_lldb_unittest(LLDBCoreTests
   ListenerTest.cpp
   LogTest.cpp
   ScalarTest.cpp
+  StateTest.cpp
   StructuredDataTest.cpp
   TimerTest.cpp
   )

Added: lldb/trunk/unittests/Core/StateTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Core/StateTest.cpp?rev=292920&view=auto
==============================================================================
--- lldb/trunk/unittests/Core/StateTest.cpp (added)
+++ lldb/trunk/unittests/Core/StateTest.cpp Tue Jan 24 05:48:25 2017
@@ -0,0 +1,21 @@
+//===-- StateTest.cpp -------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Core/State.h"
+#include "llvm/Support/FormatVariadic.h"
+#include "gtest/gtest.h"
+
+using namespace lldb;
+using namespace lldb_private;
+
+TEST(StateTest, Formatv) {
+  EXPECT_EQ("exited", llvm::formatv("{0}", eStateExited).str());
+  EXPECT_EQ("stopped", llvm::formatv("{0}", eStateStopped).str());
+  EXPECT_EQ("unknown", llvm::formatv("{0}", StateType(-1)).str());
+}




More information about the lldb-commits mailing list