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()); +} _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits