[Lldb-commits] [PATCH] D29669: Hardware breakpoints implementation for Arm/AArch64 targets

2017-02-21 Thread Pavel Labath via Phabricator via lldb-commits
labath requested changes to this revision.
labath added a comment.
This revision now requires changes to proceed.

I am sorry about the delay - I was busy last week and then this kinda fell off 
my radar.

The change looks good, but I want to make the test more stable - we are running 
these in CI and I've already seen some very unlikely things happen, so I don't 
want this to be flaky.

Also, it looks like you didn't catch all instances of using printf-style 
logging.




Comment at: 
packages/Python/lldbsuite/test/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/TestHWBreakMultiThread.py:78
+
+while count < 4 :
+ 

This is quite racy.

There is nothing that guarantees that we will stop on the breakpoint at least 
four times. In particular, it can happen that all 8 threads hit the breakpoint 
simultaneously, and then you have only one stop of the whole process. If you 
want to have more than one stop you need to either:
- make sure that no two threads can hit the breakpoint simultaneously (e.g., 
add some kind of a mutex in the inferior),
- or count the stops more diligently (after each stop, count the number of 
threads stopped at the location, as in e.g. TestConcurrentEvents)

However, if the purpose of this test is to make sure the breakpoint applies to 
newly-created threads, then I think you don't need than many threads, and one 
thread would suffice. Then the test could be:
- set a breakpoint
- inferior spins up a thread and hits it
- remove/disable the breakpoint
- inferior joins the first thread
- inferior spins up another thread which does *not* hit the breakpoint
This should make debugging any failures easier as the test is more 
deterministic.



Comment at: 
packages/Python/lldbsuite/test/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/TestHWBreakMultiThread.py:108
+# Continue. Program should exit without stopping anywhere.
+self.runCmd("process continue")

It looks like you are missing an assertion to verify that the exit actually 
happened here.



Comment at: source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.cpp:362
+  if (log)
+log->Printf("NativeRegisterContextLinux_arm::%s()", __FUNCTION__);
+

LLDB_LOG (or just remove the log statement as it does not convey much 
information).



Comment at: source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.cpp:474
+  if (log)
+log->Printf("NativeRegisterContextLinux_arm64::%s()", __FUNCTION__);
 

LLDB_LOG (and in below function as well)


https://reviews.llvm.org/D29669



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [lldb] r295712 - Log: Fix race in accessing the stream variable

2017-02-21 Thread Pavel Labath via lldb-commits
Author: labath
Date: Tue Feb 21 03:58:23 2017
New Revision: 295712

URL: http://llvm.org/viewvc/llvm-project?rev=295712&view=rev
Log:
Log: Fix race in accessing the stream variable

Summary:
The code was attempting to copy the shared pointer member in order to
guarantee atomicity, but this is not enough. Instead, protect the
pointer with a proper read-write mutex.

This bug was present here for a long time, but my recent refactors must
have altered the timings slightly, such that now this fails fairly often
when running the tests: the test runner runs the "log disable" command
just as the thread monitoring the lldb-server child is about to report
that the server has exited.

I add a test case for this. It's not possible to reproduce the race
deterministically in normal circumstances, but I have verified that
before the fix, the test failed when run under tsan, and was running
fine afterwards.

Reviewers: clayborg, zturner

Subscribers: lldb-commits

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

Modified:
lldb/trunk/include/lldb/Core/Log.h
lldb/trunk/source/Core/Log.cpp
lldb/trunk/unittests/Core/LogTest.cpp

Modified: lldb/trunk/include/lldb/Core/Log.h
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Log.h?rev=295712&r1=295711&r2=295712&view=diff
==
--- lldb/trunk/include/lldb/Core/Log.h (original)
+++ lldb/trunk/include/lldb/Core/Log.h Tue Feb 21 03:58:23 2017
@@ -18,6 +18,7 @@
 
 // Other libraries and framework includes
 #include "llvm/Support/FormatVariadic.h"
+#include "llvm/Support/RWMutex.h"
 // C++ Includes
 #include 
 #include 
@@ -184,14 +185,22 @@ public:
   bool GetVerbose() const;
 
   void SetStream(const std::shared_ptr &stream_sp) {
+llvm::sys::ScopedWriter lock(m_stream_mutex);
 m_stream_sp = stream_sp;
   }
 
+  std::shared_ptr GetStream() {
+llvm::sys::ScopedReader lock(m_stream_mutex);
+return m_stream_sp;
+  }
+
 protected:
   //--
   // Member variables
   //--
+  llvm::sys::RWMutex m_stream_mutex; // Protects m_stream_sp
   std::shared_ptr m_stream_sp;
+
   Flags m_options;
   Flags m_mask_bits;
 

Modified: lldb/trunk/source/Core/Log.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Log.cpp?rev=295712&r1=295711&r2=295712&view=diff
==
--- lldb/trunk/source/Core/Log.cpp (original)
+++ lldb/trunk/source/Core/Log.cpp Tue Feb 21 03:58:23 2017
@@ -400,7 +400,7 @@ void Log::WriteHeader(llvm::raw_ostream
 void Log::WriteMessage(const std::string &message) {
   // Make a copy of our stream shared pointer in case someone disables our
   // log while we are logging and releases the stream
-  auto stream_sp = m_stream_sp;
+  auto stream_sp = GetStream();
   if (!stream_sp)
 return;
 

Modified: lldb/trunk/unittests/Core/LogTest.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Core/LogTest.cpp?rev=295712&r1=295711&r2=295712&view=diff
==
--- lldb/trunk/unittests/Core/LogTest.cpp (original)
+++ lldb/trunk/unittests/Core/LogTest.cpp Tue Feb 21 03:58:23 2017
@@ -13,6 +13,7 @@
 #include "lldb/Host/Host.h"
 #include "lldb/Utility/StreamString.h"
 #include "llvm/Support/ManagedStatic.h"
+#include 
 
 using namespace lldb;
 using namespace lldb_private;
@@ -26,6 +27,8 @@ static constexpr uint32_t default_flags
 static Log::Channel test_channel(test_categories, default_flags);
 
 struct LogChannelTest : public ::testing::Test {
+  void TearDown() override { Log::DisableAllLogChannels(nullptr); }
+
   static void SetUpTestCase() {
 Log::Register("chan", test_channel);
   }
@@ -170,3 +173,26 @@ TEST_F(LogChannelTest, List) {
   EXPECT_FALSE(Log::ListChannelCategories("chanchan", str));
   EXPECT_EQ("Invalid log channel 'chanchan'.\n", str.GetString().str());
 }
+
+TEST_F(LogChannelTest, LogThread) {
+  // Test that we are able to concurrently write to a log channel and disable
+  // it.
+  std::string message;
+  std::shared_ptr stream_sp(
+  new llvm::raw_string_ostream(message));
+  StreamString err;
+  EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", nullptr, err));
+
+  Log *log = test_channel.GetLogIfAll(FOO);
+
+  // Start logging on one thread. Concurrently, try disabling the log channel.
+  std::thread log_thread([log] { LLDB_LOG(log, "Hello World"); });
+  EXPECT_TRUE(Log::DisableLogChannel("chan", nullptr, err));
+  log_thread.join();
+
+  // The log thread either managed to write to the log in time, or it didn't. 
In
+  // either case, we should not trip any undefined behavior (run the test under
+  // TSAN to verify this).
+  EXPECT_TRUE(stream_sp->str() == "" || stream_sp->str() == "Hello World\n")
+  << "str(): " << stream_sp-

[Lldb-commits] [PATCH] D30168: Log: Fix race in accessing the stream variable

2017-02-21 Thread Pavel Labath via Phabricator via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL295712: Log: Fix race in accessing the stream variable 
(authored by labath).

Changed prior to commit:
  https://reviews.llvm.org/D30168?vs=89120&id=89178#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D30168

Files:
  lldb/trunk/include/lldb/Core/Log.h
  lldb/trunk/source/Core/Log.cpp
  lldb/trunk/unittests/Core/LogTest.cpp


Index: lldb/trunk/unittests/Core/LogTest.cpp
===
--- lldb/trunk/unittests/Core/LogTest.cpp
+++ lldb/trunk/unittests/Core/LogTest.cpp
@@ -13,6 +13,7 @@
 #include "lldb/Host/Host.h"
 #include "lldb/Utility/StreamString.h"
 #include "llvm/Support/ManagedStatic.h"
+#include 
 
 using namespace lldb;
 using namespace lldb_private;
@@ -26,6 +27,8 @@
 static Log::Channel test_channel(test_categories, default_flags);
 
 struct LogChannelTest : public ::testing::Test {
+  void TearDown() override { Log::DisableAllLogChannels(nullptr); }
+
   static void SetUpTestCase() {
 Log::Register("chan", test_channel);
   }
@@ -170,3 +173,26 @@
   EXPECT_FALSE(Log::ListChannelCategories("chanchan", str));
   EXPECT_EQ("Invalid log channel 'chanchan'.\n", str.GetString().str());
 }
+
+TEST_F(LogChannelTest, LogThread) {
+  // Test that we are able to concurrently write to a log channel and disable
+  // it.
+  std::string message;
+  std::shared_ptr stream_sp(
+  new llvm::raw_string_ostream(message));
+  StreamString err;
+  EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", nullptr, err));
+
+  Log *log = test_channel.GetLogIfAll(FOO);
+
+  // Start logging on one thread. Concurrently, try disabling the log channel.
+  std::thread log_thread([log] { LLDB_LOG(log, "Hello World"); });
+  EXPECT_TRUE(Log::DisableLogChannel("chan", nullptr, err));
+  log_thread.join();
+
+  // The log thread either managed to write to the log in time, or it didn't. 
In
+  // either case, we should not trip any undefined behavior (run the test under
+  // TSAN to verify this).
+  EXPECT_TRUE(stream_sp->str() == "" || stream_sp->str() == "Hello World\n")
+  << "str(): " << stream_sp->str();
+}
Index: lldb/trunk/source/Core/Log.cpp
===
--- lldb/trunk/source/Core/Log.cpp
+++ lldb/trunk/source/Core/Log.cpp
@@ -400,7 +400,7 @@
 void Log::WriteMessage(const std::string &message) {
   // Make a copy of our stream shared pointer in case someone disables our
   // log while we are logging and releases the stream
-  auto stream_sp = m_stream_sp;
+  auto stream_sp = GetStream();
   if (!stream_sp)
 return;
 
Index: lldb/trunk/include/lldb/Core/Log.h
===
--- lldb/trunk/include/lldb/Core/Log.h
+++ lldb/trunk/include/lldb/Core/Log.h
@@ -18,6 +18,7 @@
 
 // Other libraries and framework includes
 #include "llvm/Support/FormatVariadic.h"
+#include "llvm/Support/RWMutex.h"
 // C++ Includes
 #include 
 #include 
@@ -184,14 +185,22 @@
   bool GetVerbose() const;
 
   void SetStream(const std::shared_ptr &stream_sp) {
+llvm::sys::ScopedWriter lock(m_stream_mutex);
 m_stream_sp = stream_sp;
   }
 
+  std::shared_ptr GetStream() {
+llvm::sys::ScopedReader lock(m_stream_mutex);
+return m_stream_sp;
+  }
+
 protected:
   //--
   // Member variables
   //--
+  llvm::sys::RWMutex m_stream_mutex; // Protects m_stream_sp
   std::shared_ptr m_stream_sp;
+
   Flags m_options;
   Flags m_mask_bits;
 


Index: lldb/trunk/unittests/Core/LogTest.cpp
===
--- lldb/trunk/unittests/Core/LogTest.cpp
+++ lldb/trunk/unittests/Core/LogTest.cpp
@@ -13,6 +13,7 @@
 #include "lldb/Host/Host.h"
 #include "lldb/Utility/StreamString.h"
 #include "llvm/Support/ManagedStatic.h"
+#include 
 
 using namespace lldb;
 using namespace lldb_private;
@@ -26,6 +27,8 @@
 static Log::Channel test_channel(test_categories, default_flags);
 
 struct LogChannelTest : public ::testing::Test {
+  void TearDown() override { Log::DisableAllLogChannels(nullptr); }
+
   static void SetUpTestCase() {
 Log::Register("chan", test_channel);
   }
@@ -170,3 +173,26 @@
   EXPECT_FALSE(Log::ListChannelCategories("chanchan", str));
   EXPECT_EQ("Invalid log channel 'chanchan'.\n", str.GetString().str());
 }
+
+TEST_F(LogChannelTest, LogThread) {
+  // Test that we are able to concurrently write to a log channel and disable
+  // it.
+  std::string message;
+  std::shared_ptr stream_sp(
+  new llvm::raw_string_ostream(message));
+  StreamString err;
+  EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", nullptr, err));
+
+  Log *log = test_channel.GetLogIfAll(FOO);
+
+  // Start logging on one thread. Concurrently, try disabling the log channel.
+  std::thread log_thread([log] { L

[Lldb-commits] [PATCH] D30172: Replace WINLOG_*** macros with LLDB_LOG

2017-02-21 Thread Adrian McCarthy via Phabricator via lldb-commits
amccarth accepted this revision.
amccarth added a comment.
This revision is now accepted and ready to land.

LGTM.

Maybe we have too many categories.




Comment at: source/Plugins/Process/Windows/Common/DebuggerThread.cpp:207
   if (m_active_exception.get()) {
-WINLOG_IFANY(WINDOWS_LOG_PROCESS | WINDOWS_LOG_EXCEPTION,
- "StopDebugging masking active exception");
-
+LLDB_LOG(log, "masking active exception");
 ContinueAsyncException(ExceptionResult::MaskException);

This looks like the only possibly controversial change in this file.  This log 
message will no longer happen for those logging just exception-related events.  
I guess that's acceptable as it's unlikely.



Comment at: source/Plugins/Process/Windows/Common/ProcessWindows.cpp:873
+  log,
+  "Hit loader breakpoint at address {0:x}, setting initial stop 
event.",
+  record.GetExceptionAddress());

This one and the next one seem unfortunate, as the messages are indeed 
something you'd expect to see when logging breakpoints.

It makes me wonder if all these categories are worth the effort.


https://reviews.llvm.org/D30172



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test

2017-02-21 Thread Eugene Zemtsov via Phabricator via lldb-commits
eugene created this revision.
eugene added a project: LLDB.

main.cpp is complete mess of tabs and spaces. This change brings it to 
compliance with LLVM coding style.


https://reviews.llvm.org/D30234

Files:
  packages/Python/lldbsuite/test/tools/lldb-server/main.cpp

Index: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
===
--- packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
+++ packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
@@ -1,3 +1,12 @@
+//===-- main.cpp *- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===--===//
+
 #include 
 #include 
 #include 
@@ -15,22 +24,22 @@
 
 #if defined(__APPLE__)
 __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2)
-int pthread_threadid_np(pthread_t,__uint64_t*);
+int pthread_threadid_np(pthread_t, __uint64_t *);
 #elif defined(__linux__)
 #include 
 #endif
 
-static const char *const RETVAL_PREFIX   = "retval:";
-static const char *const SLEEP_PREFIX= "sleep:";
-static const char *const STDERR_PREFIX   = "stderr:";
-static const char *const SET_MESSAGE_PREFIX  = "set-message:";
-static const char *const PRINT_MESSAGE_COMMAND   = "print-message:";
-static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:";
-static const char *const GET_STACK_ADDRESS_COMMAND   = "get-stack-address-hex:";
-static const char *const GET_HEAP_ADDRESS_COMMAND= "get-heap-address-hex:";
+static const char *const RETVAL_PREFIX = "retval:";
+static const char *const SLEEP_PREFIX = "sleep:";
+static const char *const STDERR_PREFIX = "stderr:";
+static const char *const SET_MESSAGE_PREFIX = "set-message:";
+static const char *const PRINT_MESSAGE_COMMAND = "print-message:";
+static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:";
+static const char *const GET_STACK_ADDRESS_COMMAND = "get-stack-address-hex:";
+static const char *const GET_HEAP_ADDRESS_COMMAND = "get-heap-address-hex:";
 
-static const char *const GET_CODE_ADDRESS_PREFIX = "get-code-address-hex:";
-static const char *const CALL_FUNCTION_PREFIX= "call-function:";
+static const char *const GET_CODE_ADDRESS_PREFIX = "get-code-address-hex:";
+static const char *const CALL_FUNCTION_PREFIX = "call-function:";
 
 static const char *const THREAD_PREFIX = "thread:";
 static const char *const THREAD_COMMAND_NEW = "new";
@@ -50,342 +59,301 @@
 static volatile char g_c1 = '0';
 static volatile char g_c2 = '1';
 
-static void
-print_thread_id ()
-{
-	// Put in the right magic here for your platform to spit out the thread id (tid) that debugserver/lldb-gdbserver would see as a TID.
-	// Otherwise, let the else clause print out the unsupported text so that the unit test knows to skip verifying thread ids.
+static void print_thread_id() {
+// Put in the right magic here for your platform to spit out the thread id (tid)
+// that debugserver/lldb-gdbserver would see as a TID. Otherwise, let the else
+// clause print out the unsupported text so that the unit test knows to skip
+// verifying thread ids.
 #if defined(__APPLE__)
-	__uint64_t tid = 0;
-	pthread_threadid_np(pthread_self(), &tid);
-	printf ("%" PRIx64, tid);
-#elif defined (__linux__)
-	// This is a call to gettid() via syscall.
-	printf ("%" PRIx64, static_cast (syscall (__NR_gettid)));
+  __uint64_t tid = 0;
+  pthread_threadid_np(pthread_self(), &tid);
+  printf("%" PRIx64, tid);
+#elif defined(__linux__)
+  // This is a call to gettid() via syscall.
+  printf("%" PRIx64, static_cast(syscall(__NR_gettid)));
 #else
-	printf("{no-tid-support}");
+  printf("{no-tid-support}");
 #endif
 }
 
-static void
-signal_handler (int signo)
-{
-	const char *signal_name = nullptr;
-	switch (signo)
-	{
-		case SIGUSR1: signal_name = "SIGUSR1"; break;
-		case SIGSEGV: signal_name = "SIGSEGV"; break;
-		default:  signal_name = nullptr;
-	}
-
-	// Print notice that we received the signal on a given thread.
-	pthread_mutex_lock (&g_print_mutex);
-	if (signal_name)
-		printf ("received %s on thread id: ", signal_name);
-	else
-		printf ("received signo %d (%s) on thread id: ", signo, strsignal (signo));
-	print_thread_id ();
-	printf ("\n");
-	pthread_mutex_unlock (&g_print_mutex);
-
-	// Reset the signal handler if we're one of the expected signal handlers.
-	switch (signo)
-	{
-case SIGSEGV:
-	if (g_is_segfaulting)
-	{
-	// Fix up the pointer we're writing to.  This needs to happen if nothing intercepts the SIGSEGV
-	// (i.e. if somebody runs this from the command line).
-	longjmp(g_jump_buffer, 1);
-			}
-break;
-case SIGUSR1:
-if (g_is_segfaulti

[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test

2017-02-21 Thread Jason Majors via Phabricator via lldb-commits
jmajors accepted this revision.
jmajors added a comment.
This revision is now accepted and ready to land.

Do we have any plans to put something like cpplint into effect?


https://reviews.llvm.org/D30234



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test

2017-02-21 Thread Eugene Zemtsov via Phabricator via lldb-commits
eugene added a comment.

In https://reviews.llvm.org/D30234#682990, @jmajors wrote:

> Do we have any plans to put something like cpplint into effect?


First step would be to have warning free build.
Then we can turn "warnings as errors" on.


https://reviews.llvm.org/D30234



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test

2017-02-21 Thread Jim Ingham via Phabricator via lldb-commits
jingham added a comment.

It looks like clang-format wasn't run over this file as it was over all the 
main lldb sources in the infamous universal code reformatting.  That seems odd.

Anyway, it might be better just to do that to this file using the top level 
.clang-format.  Note that you are making several choices which were not the 
choices made by clang-format using the .clang-format file that was used to 
implement this reformatting.  We probably shouldn't revise that decision 
piecemeal.




Comment at: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp:32-42
+static const char *const RETVAL_PREFIX = "retval:";
+static const char *const SLEEP_PREFIX = "sleep:";
+static const char *const STDERR_PREFIX = "stderr:";
+static const char *const SET_MESSAGE_PREFIX = "set-message:";
+static const char *const PRINT_MESSAGE_COMMAND = "print-message:";
+static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:";
+static const char *const GET_STACK_ADDRESS_COMMAND = "get-stack-address-hex:";

This change seems a shame, the original was much easier to read.



Comment at: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp:62
 
-static void
-print_thread_id ()
-{
-   // Put in the right magic here for your platform to spit out the thread 
id (tid) that debugserver/lldb-gdbserver would see as a TID.
-   // Otherwise, let the else clause print out the unsupported text so 
that the unit test knows to skip verifying thread ids.
+static void print_thread_id() {
+// Put in the right magic here for your platform to spit out the thread id 
(tid)

clang-format moved the initial { for functions into the function definition 
line universally when it was run over the lldb sources.  If we want to revise 
that decision, and go back to the initial function curly starting a line, that 
would be fine by me, but I don't think we should do it piecemeal. 

Ditto for separating the return type & function name onto separate lines.  That 
was the way we did it originally, but the clang-format style that was chosen 
for the reformatting undid that.  I much prefer the way you changed it to here, 
but that's a decision we should make globally, not file by file.


https://reviews.llvm.org/D30234



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test

2017-02-21 Thread Jim Ingham via Phabricator via lldb-commits
jingham added a comment.

Actually, we didn't run the clang-format over the test case source files, since 
we didn't want to have to deal with the possible failures resulting.  So just 
clang-formatting this file is probably the right way to go.


https://reviews.llvm.org/D30234



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] Buildbot numbers for the week of 02/12/2017 - 02/18/2017

2017-02-21 Thread Galina Kistanova via lldb-commits
Hello everyone,

Below are some buildbot numbers for the last week of 02/12/2017 -
02/18/2017.

Please see the same data in attached csv files:

The longest time each builder was red during the last week;
"Status change ratio" by active builder (percent of builds that changed the
builder status from greed to red or from red to green);
Count of commits by project;
Number of completed builds, failed builds and average build time for
successful builds per active builder;
Average waiting time for a revision to get build result per active builder
(response time).

Thanks

Galina


The longest time each builder was red during the last week:

buildername | was_red
+-
 lldb-x86_64-ubuntu-14.04-android   | 63:39:17
 clang-x64-ninja-win7   | 59:12:13
 lldb-x86_64-darwin-13.4| 49:09:06
 lldb-windows7-android  | 24:51:31
 sanitizer-ppc64le-linux| 22:55:53
 perf-x86_64-penryn-O3-polly-before-vectorizer  | 17:56:35
 libcxx-libcxxabi-libunwind-aarch64-linux-noexceptions  | 17:39:22
 lldb-x86_64-ubuntu-14.04-cmake | 17:10:44
 libcxx-libcxxabi-libunwind-aarch64-linux   | 16:13:50
 clang-x86-windows-msvc2015 | 15:28:02
 perf-x86_64-penryn-O3  | 14:24:10
 sanitizer-x86_64-linux-bootstrap   | 12:39:53
 clang-cmake-mipsel | 12:39:34
 sanitizer-x86_64-linux-fast| 12:00:54
 clang-cmake-armv7-a15-full | 11:30:23
 sanitizer-x86_64-linux | 11:28:54
 clang-cmake-thumbv7-a15-full-sh| 11:27:43
 clang-cmake-armv7-a15  | 11:14:19
 clang-with-lto-ubuntu  | 11:11:05
 clang-cuda-build   | 10:58:26
 clang-cmake-thumbv7-a15| 10:51:21
 perf-x86_64-penryn-O3-polly-unprofitable   | 10:29:50
 perf-x86_64-penryn-O3-polly-parallel-fast  | 10:29:36
 perf-x86_64-penryn-O3-polly-before-vectorizer-detect-only  | 10:21:45
 clang-with-thin-lto-ubuntu | 10:16:24
 clang-cmake-armv7-a15-selfhost-neon| 10:08:44
 perf-x86_64-penryn-O3-polly| 09:50:26
 sanitizer-ppc64be-linux| 09:48:48
 perf-x86_64-penryn-O3-polly-fast   | 09:05:48
 perf-x86_64-penryn-O3-polly-before-vectorizer-unprofitable | 08:54:57
 clang-ppc64le-linux-multistage | 06:49:12
 clang-x86_64-debian-fast   | 06:33:05
 clang-cmake-armv7-a15-selfhost | 06:25:29
 clang-lld-x86_64-2stage| 06:12:05
 clang-cmake-mips   | 05:54:04
 clang-ppc64le-linux| 05:42:01
 clang-cmake-aarch64-full   | 05:34:30
 clang-ppc64be-linux-multistage | 05:19:27
 libcxx-libcxxabi-x86_64-linux-ubuntu-asan  | 05:15:12
 clang-x86_64-linux-selfhost-modules-2  | 04:11:31
 lldb-x86_64-ubuntu-14.04-buildserver   | 04:07:45
 libcxx-libcxxabi-x86_64-linux-ubuntu-tsan  | 03:47:39
 lldb-amd64-ninja-netbsd7   | 03:44:56
 clang-x86_64-linux-selfhost-modules| 03:42:39
 llvm-mips-linux| 03:12:36
 polly-amd64-linux  | 02:56:44
 clang-ppc64le-linux-lnt| 02:55:18
 lldb-amd64-ninja-freebsd11 | 02:54:47
 polly-arm-linux| 02:49:00
 llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast   | 02:45:53
 clang-ppc64be-linux| 02:39:11
 libcxx-libcxxabi-x86_64-linux-ubuntu-msan  | 02:32:26
 libcxx-libcxxabi-x86_64-linux-ubuntu-ubsan | 02:23:26
 clang-atom-d525-fedora-rel | 02:22:54
 clang-cmake-aarch64-42vma  | 02:21:28
 clang-cmake-aarch64-lld| 02:17:45
 clang-cmake-aarch64-39vma  | 01:56:36
 clang-ppc64be-linux-lnt| 01:49:50
 libcxx-libcxxabi-libunwind-x86_64-linux-debian | 01:48:30
 clang-s390x-linux   

[Lldb-commits] Buildbot numbers for the week of 02/05/2017 - 02/11/2017

2017-02-21 Thread Galina Kistanova via lldb-commits
Hello everyone,

Below are some buildbot numbers for the week of 02/05/2017 - 02/11/2017.

Please see the same data in attached csv files:

The longest time each builder was red during the last week;
"Status change ratio" by active builder (percent of builds that changed the
builder status from greed to red or from red to green);
Count of commits by project;
Number of completed builds, failed builds and average build time for
successful builds per active builder;
Average waiting time for a revision to get build result per active builder
(response time).

Thanks

Galina


The longest time each builder was red during the last week:

buildername | was_red
+-
 lld-x86_64-win7| 46:33:59
 libcxx-libcxxabi-x86_64-linux-ubuntu-ubsan | 39:43:26
 sanitizer-x86_64-linux | 35:32:15
 sanitizer-ppc64le-linux| 32:43:54
 llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast   | 29:14:54
 clang-x86-windows-msvc2015 | 25:56:55
 sanitizer-x86_64-linux-bootstrap   | 25:45:40
 clang-cmake-aarch64-quick  | 21:46:28
 clang-s390x-linux  | 16:33:32
 clang-cmake-thumbv7-a15-full-sh| 16:28:14
 llvm-mips-linux| 15:52:35
 sanitizer-x86_64-linux-fast| 10:58:24
 sanitizer-x86_64-linux-fuzzer  | 10:43:53
 lldb-x86_64-ubuntu-14.04-android   | 09:38:04
 clang-cmake-mips   | 09:23:42
 libcxx-libcxxabi-libunwind-x86_64-linux-debian | 08:58:08
 clang-cmake-armv7-a15-selfhost | 07:06:04
 lldb-x86_64-darwin-13.4| 06:48:29
 clang-ppc64le-linux-multistage | 06:33:54
 clang-cmake-aarch64-full   | 06:26:59
 perf-x86_64-penryn-O3-polly| 06:20:04
 clang-cmake-aarch64-lld| 06:17:55
 clang-ppc64be-linux-multistage | 06:01:18
 clang-lld-x86_64-2stage| 05:44:44
 clang-ppc64le-linux-lnt| 05:27:25
 clang-ppc64le-linux| 05:10:33
 clang-x86_64-linux-selfhost-modules| 04:50:04
 clang-ppc64be-linux-lnt| 04:50:02
 clang-cuda-build   | 04:49:19
 clang-cmake-mipsel | 04:45:50
 clang-x86_64-debian-fast   | 04:40:33
 clang-hexagon-elf  | 04:28:15
 clang-ppc64be-linux| 04:18:02
 clang-cmake-armv7-a15-full | 04:17:34
 clang-cmake-aarch64-39vma  | 04:15:56
 clang-cmake-aarch64-42vma  | 04:13:41
 clang-cmake-armv7-a15  | 04:11:52
 llvm-hexagon-elf   | 04:08:13
 clang-x64-ninja-win7   | 03:57:04
 clang-cmake-thumbv7-a15| 03:53:12
 clang-cmake-armv7-a15-selfhost-neon| 03:35:19
 clang-with-thin-lto-ubuntu | 03:26:46
 clang-with-lto-ubuntu  | 03:17:06
 lldb-x86_64-ubuntu-14.04-buildserver   | 02:42:39
 sanitizer-x86_64-linux-autoconf| 02:41:06
 polly-amd64-linux  | 02:40:22
 clang-atom-d525-fedora-rel | 02:28:32
 libcxx-libcxxabi-x86_64-linux-ubuntu-gcc49-cxx11   | 02:28:08
 libcxx-libcxxabi-x86_64-linux-ubuntu-tsan  | 02:16:43
 clang-x86_64-linux-selfhost-modules-2  | 02:16:14
 perf-x86_64-penryn-O3-polly-unprofitable   | 02:14:43
 libcxx-libcxxabi-x86_64-linux-ubuntu-asan  | 02:11:03
 lld-x86_64-darwin13| 02:09:15
 lldb-windows7-android  | 01:59:06
 lldb-amd64-ninja-netbsd7   | 01:58:38
 libcxx-libcxxabi-x86_64-linux-ubuntu-cxx14 | 01:50:30
 polly-arm-linux| 01:48:59
 sanitizer-ppc64be-linux| 01:43:47
 clang-native-arm-lnt   | 01:39:14
 libcxx-libcxxabi-libunwind-x8

[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test

2017-02-21 Thread Eugene Zemtsov via Phabricator via lldb-commits
eugene updated this revision to Diff 89311.

https://reviews.llvm.org/D30234

Files:
  packages/Python/lldbsuite/test/tools/lldb-server/main.cpp

Index: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
===
--- packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
+++ packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
@@ -1,36 +1,45 @@
-#include 
-#include 
+//===-- main.cpp *- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===--===//
+
 #include 
 #include 
-#include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
+#include 
+#include 
+#include 
 #include 
 
 #if defined(__APPLE__)
 __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2)
-int pthread_threadid_np(pthread_t,__uint64_t*);
+int pthread_threadid_np(pthread_t, __uint64_t *);
 #elif defined(__linux__)
 #include 
 #endif
 
-static const char *const RETVAL_PREFIX   = "retval:";
-static const char *const SLEEP_PREFIX= "sleep:";
-static const char *const STDERR_PREFIX   = "stderr:";
-static const char *const SET_MESSAGE_PREFIX  = "set-message:";
-static const char *const PRINT_MESSAGE_COMMAND   = "print-message:";
-static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:";
-static const char *const GET_STACK_ADDRESS_COMMAND   = "get-stack-address-hex:";
-static const char *const GET_HEAP_ADDRESS_COMMAND= "get-heap-address-hex:";
+static const char *const RETVAL_PREFIX = "retval:";
+static const char *const SLEEP_PREFIX = "sleep:";
+static const char *const STDERR_PREFIX = "stderr:";
+static const char *const SET_MESSAGE_PREFIX = "set-message:";
+static const char *const PRINT_MESSAGE_COMMAND = "print-message:";
+static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:";
+static const char *const GET_STACK_ADDRESS_COMMAND = "get-stack-address-hex:";
+static const char *const GET_HEAP_ADDRESS_COMMAND = "get-heap-address-hex:";
 
-static const char *const GET_CODE_ADDRESS_PREFIX = "get-code-address-hex:";
-static const char *const CALL_FUNCTION_PREFIX= "call-function:";
+static const char *const GET_CODE_ADDRESS_PREFIX = "get-code-address-hex:";
+static const char *const CALL_FUNCTION_PREFIX = "call-function:";
 
 static const char *const THREAD_PREFIX = "thread:";
 static const char *const THREAD_COMMAND_NEW = "new";
@@ -50,342 +59,299 @@
 static volatile char g_c1 = '0';
 static volatile char g_c2 = '1';
 
-static void
-print_thread_id ()
-{
-	// Put in the right magic here for your platform to spit out the thread id (tid) that debugserver/lldb-gdbserver would see as a TID.
-	// Otherwise, let the else clause print out the unsupported text so that the unit test knows to skip verifying thread ids.
+static void print_thread_id() {
+// Put in the right magic here for your platform to spit out the thread id (tid)
+// that debugserver/lldb-gdbserver would see as a TID. Otherwise, let the else
+// clause print out the unsupported text so that the unit test knows to skip
+// verifying thread ids.
 #if defined(__APPLE__)
-	__uint64_t tid = 0;
-	pthread_threadid_np(pthread_self(), &tid);
-	printf ("%" PRIx64, tid);
-#elif defined (__linux__)
-	// This is a call to gettid() via syscall.
-	printf ("%" PRIx64, static_cast (syscall (__NR_gettid)));
+  __uint64_t tid = 0;
+  pthread_threadid_np(pthread_self(), &tid);
+  printf("%" PRIx64, tid);
+#elif defined(__linux__)
+  // This is a call to gettid() via syscall.
+  printf("%" PRIx64, static_cast(syscall(__NR_gettid)));
 #else
-	printf("{no-tid-support}");
+  printf("{no-tid-support}");
 #endif
 }
 
-static void
-signal_handler (int signo)
-{
-	const char *signal_name = nullptr;
-	switch (signo)
-	{
-		case SIGUSR1: signal_name = "SIGUSR1"; break;
-		case SIGSEGV: signal_name = "SIGSEGV"; break;
-		default:  signal_name = nullptr;
-	}
-
-	// Print notice that we received the signal on a given thread.
-	pthread_mutex_lock (&g_print_mutex);
-	if (signal_name)
-		printf ("received %s on thread id: ", signal_name);
-	else
-		printf ("received signo %d (%s) on thread id: ", signo, strsignal (signo));
-	print_thread_id ();
-	printf ("\n");
-	pthread_mutex_unlock (&g_print_mutex);
-
-	// Reset the signal handler if we're one of the expected signal handlers.
-	switch (signo)
-	{
-case SIGSEGV:
-	if (g_is_segfaulting)
-	{
-	// Fix up the pointer we're writing to.  This needs to happen if nothing intercepts the SIGSEGV
-	// (i.e. if somebody runs this from the command line).
-	longjmp(g_jump_buffer, 1);
-			}
-break;
-case SIGUSR1:
-if (g_is

[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test

2017-02-21 Thread Eugene Zemtsov via Phabricator via lldb-commits
eugene updated this revision to Diff 89312.

https://reviews.llvm.org/D30234

Files:
  packages/Python/lldbsuite/test/tools/lldb-server/main.cpp

Index: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
===
--- packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
+++ packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
@@ -1,3 +1,12 @@
+//===-- main.cpp *- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===--===//
+
 #include 
 #include 
 #include 
@@ -15,22 +24,22 @@
 
 #if defined(__APPLE__)
 __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2)
-int pthread_threadid_np(pthread_t,__uint64_t*);
+int pthread_threadid_np(pthread_t, __uint64_t *);
 #elif defined(__linux__)
 #include 
 #endif
 
-static const char *const RETVAL_PREFIX   = "retval:";
-static const char *const SLEEP_PREFIX= "sleep:";
-static const char *const STDERR_PREFIX   = "stderr:";
-static const char *const SET_MESSAGE_PREFIX  = "set-message:";
-static const char *const PRINT_MESSAGE_COMMAND   = "print-message:";
-static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:";
-static const char *const GET_STACK_ADDRESS_COMMAND   = "get-stack-address-hex:";
-static const char *const GET_HEAP_ADDRESS_COMMAND= "get-heap-address-hex:";
+static const char *const RETVAL_PREFIX = "retval:";
+static const char *const SLEEP_PREFIX = "sleep:";
+static const char *const STDERR_PREFIX = "stderr:";
+static const char *const SET_MESSAGE_PREFIX = "set-message:";
+static const char *const PRINT_MESSAGE_COMMAND = "print-message:";
+static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:";
+static const char *const GET_STACK_ADDRESS_COMMAND = "get-stack-address-hex:";
+static const char *const GET_HEAP_ADDRESS_COMMAND = "get-heap-address-hex:";
 
-static const char *const GET_CODE_ADDRESS_PREFIX = "get-code-address-hex:";
-static const char *const CALL_FUNCTION_PREFIX= "call-function:";
+static const char *const GET_CODE_ADDRESS_PREFIX = "get-code-address-hex:";
+static const char *const CALL_FUNCTION_PREFIX = "call-function:";
 
 static const char *const THREAD_PREFIX = "thread:";
 static const char *const THREAD_COMMAND_NEW = "new";
@@ -50,342 +59,301 @@
 static volatile char g_c1 = '0';
 static volatile char g_c2 = '1';
 
-static void
-print_thread_id ()
-{
-	// Put in the right magic here for your platform to spit out the thread id (tid) that debugserver/lldb-gdbserver would see as a TID.
-	// Otherwise, let the else clause print out the unsupported text so that the unit test knows to skip verifying thread ids.
+static void print_thread_id() {
+// Put in the right magic here for your platform to spit out the thread id (tid)
+// that debugserver/lldb-gdbserver would see as a TID. Otherwise, let the else
+// clause print out the unsupported text so that the unit test knows to skip
+// verifying thread ids.
 #if defined(__APPLE__)
-	__uint64_t tid = 0;
-	pthread_threadid_np(pthread_self(), &tid);
-	printf ("%" PRIx64, tid);
-#elif defined (__linux__)
-	// This is a call to gettid() via syscall.
-	printf ("%" PRIx64, static_cast (syscall (__NR_gettid)));
+  __uint64_t tid = 0;
+  pthread_threadid_np(pthread_self(), &tid);
+  printf("%" PRIx64, tid);
+#elif defined(__linux__)
+  // This is a call to gettid() via syscall.
+  printf("%" PRIx64, static_cast(syscall(__NR_gettid)));
 #else
-	printf("{no-tid-support}");
+  printf("{no-tid-support}");
 #endif
 }
 
-static void
-signal_handler (int signo)
-{
-	const char *signal_name = nullptr;
-	switch (signo)
-	{
-		case SIGUSR1: signal_name = "SIGUSR1"; break;
-		case SIGSEGV: signal_name = "SIGSEGV"; break;
-		default:  signal_name = nullptr;
-	}
-
-	// Print notice that we received the signal on a given thread.
-	pthread_mutex_lock (&g_print_mutex);
-	if (signal_name)
-		printf ("received %s on thread id: ", signal_name);
-	else
-		printf ("received signo %d (%s) on thread id: ", signo, strsignal (signo));
-	print_thread_id ();
-	printf ("\n");
-	pthread_mutex_unlock (&g_print_mutex);
-
-	// Reset the signal handler if we're one of the expected signal handlers.
-	switch (signo)
-	{
-case SIGSEGV:
-	if (g_is_segfaulting)
-	{
-	// Fix up the pointer we're writing to.  This needs to happen if nothing intercepts the SIGSEGV
-	// (i.e. if somebody runs this from the command line).
-	longjmp(g_jump_buffer, 1);
-			}
-break;
-case SIGUSR1:
-if (g_is_segfaulting)
-{
-// Fix up the pointer we're writing to.  This is used to test gdb remote signal delivery.

[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test

2017-02-21 Thread Eugene Zemtsov via Phabricator via lldb-commits
eugene added a comment.

In https://reviews.llvm.org/D30234#683018, @jingham wrote:

> Anyway, it might be better just to do that to this file using the top level 
> .clang-format.  Note that you are making several choices which were not the 
> choices made by clang-format using the .clang-format file that was used to 
> implement this reformatting.  We probably shouldn't revise that decision 
> piecemeal.


It wasn't my intention to revise any formatting  decisions made earlier.
I just ran 'clang-format -style=file  -i main.cpp' assuming that it will 
actually make the file complaint with the lldb's coding style by using top 
level .clang-format.

Is there any document other than http://llvm.org/docs/CodingStandards.html 
describing LLDB coding conventions?


https://reviews.llvm.org/D30234



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [lldb] r295804 - Mark TestDarwinLogBasic.py as an xfail because the logging is

2017-02-21 Thread Jason Molenda via lldb-commits
Author: jmolenda
Date: Tue Feb 21 20:10:00 2017
New Revision: 295804

URL: http://llvm.org/viewvc/llvm-project?rev=295804&view=rev
Log:
Mark TestDarwinLogBasic.py as an xfail because the logging is
not being picked up; filed  to track
the work to investigate this.

Modified:

lldb/trunk/packages/Python/lldbsuite/test/functionalities/darwin_log/basic/TestDarwinLogBasic.py

Modified: 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/darwin_log/basic/TestDarwinLogBasic.py
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/darwin_log/basic/TestDarwinLogBasic.py?rev=295804&r1=295803&r2=295804&view=diff
==
--- 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/darwin_log/basic/TestDarwinLogBasic.py
 (original)
+++ 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/darwin_log/basic/TestDarwinLogBasic.py
 Tue Feb 21 20:10:00 2017
@@ -22,6 +22,7 @@ class TestDarwinLogBasic(darwin_log.Darw
 @decorators.add_test_categories(['pyapi'])
 @decorators.skipUnlessDarwin
 @decorators.expectedFailureAll(archs=["i386"], bugnumber="rdar://28655626")
+@decorators.expectedFailureAll(bugnumber="rdar://30645203")
 def test_SBStructuredData_gets_broadcasted(self):
 """Exercise SBStructuredData API."""
 


___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test

2017-02-21 Thread Eugene Zemtsov via Phabricator via lldb-commits
eugene marked an inline comment as done.
eugene added inline comments.



Comment at: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp:32-42
+static const char *const RETVAL_PREFIX = "retval:";
+static const char *const SLEEP_PREFIX = "sleep:";
+static const char *const STDERR_PREFIX = "stderr:";
+static const char *const SET_MESSAGE_PREFIX = "set-message:";
+static const char *const PRINT_MESSAGE_COMMAND = "print-message:";
+static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:";
+static const char *const GET_STACK_ADDRESS_COMMAND = "get-stack-address-hex:";

jingham wrote:
> This change seems a shame, the original was much easier to read.
Agree. But I think consistency is better than beauty in case of code formatting.



Comment at: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp:62
 
-static void
-print_thread_id ()
-{
-   // Put in the right magic here for your platform to spit out the thread 
id (tid) that debugserver/lldb-gdbserver would see as a TID.
-   // Otherwise, let the else clause print out the unsupported text so 
that the unit test knows to skip verifying thread ids.
+static void print_thread_id() {
+// Put in the right magic here for your platform to spit out the thread id 
(tid)

jingham wrote:
> clang-format moved the initial { for functions into the function definition 
> line universally when it was run over the lldb sources.  If we want to revise 
> that decision, and go back to the initial function curly starting a line, 
> that would be fine by me, but I don't think we should do it piecemeal. 
> 
> Ditto for separating the return type & function name onto separate lines.  
> That was the way we did it originally, but the clang-format style that was 
> chosen for the reformatting undid that.  I much prefer the way you changed it 
> to here, but that's a decision we should make globally, not file by file.
Could you please elaborate. 
I just ran 'clang-format -style=file -i main.cpp' assuming that it will 
actually make the file complaint with the lldb's coding style by using top 
level .clang-format.


https://reviews.llvm.org/D30234



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits