[Lldb-commits] [lldb] r278662 - Fixup r278524 for non-apple targets
Author: labath Date: Mon Aug 15 04:17:13 2016 New Revision: 278662 URL: http://llvm.org/viewvc/llvm-project?rev=278662&view=rev Log: Fixup r278524 for non-apple targets The commit started passing a nullptr port into GDBRemoteCommunication::StartDebugserverProcess. The function was mostly handling the null value correctly, but it one case it did not check it's value before assigning to it. Fix that. Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp?rev=278662&r1=278661&r2=278662&view=diff == --- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp (original) +++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp Mon Aug 15 04:17:13 2016 @@ -1254,15 +1254,17 @@ GDBRemoteCommunication::StartDebugserver ConnectionFileDescriptor *connection = (ConnectionFileDescriptor *)GetConnection (); // Wait for 10 seconds to resolve the bound port -*port = connection->GetListeningPort(10); -if (*port > 0) +uint16_t port_ = connection->GetListeningPort(10); +if (port_ > 0) { char port_cstr[32]; -snprintf(port_cstr, sizeof(port_cstr), "127.0.0.1:%i", *port); +snprintf(port_cstr, sizeof(port_cstr), "127.0.0.1:%i", port_); // Send the host and port down that debugserver and specify an option // so that it connects back to the port we are listening to in this process debugserver_args.AppendArgument("--reverse-connect"); debugserver_args.AppendArgument(port_cstr); +if (port) +*port = port_; } else { ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D23406: Fix a race in Broadcaster/Listener interaction
labath added a comment. In https://reviews.llvm.org/D23406#513927, @jingham wrote: > Yes, sorry. I seem to have trouble with remembering the Action dropdown... > Thanks for figuring this out - and apologies for any hair loss we > inadvertently caused you! No worries. > I doubt it is important to use SmallVector rather than std::vector in this > case, but not doing it because the thing is opaque does not seem the right > deciding factor. There will clearly be cases where it is beneficial. Along > with all the other testing improvements we need to do in our spare time, it > might be good to write some tests for these formatters so they don't regress > if they have. > > gdb's build process writes a .gdbinit file into the build products that set > up a convenient environment for debugging gdb with gdb. To use the gdb ones, > you have to cd into the gdb directory, and debug from there. That works but > is a little inelegant. I don't have a better idea right now, but it would be > cool to come up with a way to do the same thing in lldb, so that if you're > debugging lldb you get both useful formatters for lldb & llvm/clang. > > Another in the continuing series of "What other people should do with their > spare time..." :) The .lldbinit thing would work for me pretty well. When doing debugging from the console, I generally `cd` into the build directory already. If xcode has some "initial debugger commands" option we could use it to load that file and make that use case work as well. I'll see if I can get around to doing that. https://reviews.llvm.org/D23406 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D23406: Fix a race in Broadcaster/Listener interaction
This revision was automatically updated to reflect the committed changes. Closed by commit rL278664: Fix a race in Broadcaster/Listener interaction (authored by labath). Changed prior to commit: https://reviews.llvm.org/D23406?vs=67686&id=68007#toc Repository: rL LLVM https://reviews.llvm.org/D23406 Files: lldb/trunk/include/lldb/Core/Broadcaster.h lldb/trunk/source/Core/Broadcaster.cpp lldb/trunk/unittests/Core/BroadcasterTest.cpp lldb/trunk/unittests/Core/CMakeLists.txt Index: lldb/trunk/source/Core/Broadcaster.cpp === --- lldb/trunk/source/Core/Broadcaster.cpp +++ lldb/trunk/source/Core/Broadcaster.cpp @@ -56,31 +56,25 @@ } } -void -Broadcaster::BroadcasterImpl::ListenerIterator (std::function const &callback) +llvm::SmallVector, 4> +Broadcaster::BroadcasterImpl::GetListeners() { -// Private iterator that should be used by everyone except BroadcasterImpl::RemoveListener(). -// We have weak pointers to our listeners which means that at any point the listener can -// expire which means we will need to take it out of our list. To take care of this, we -// iterate and check that the weak pointer can be made into a valid shared pointer before -// we call the callback. If the weak pointer has expired, we remove it from our list. -collection::iterator pos = m_listeners.begin(); -while (pos != m_listeners.end()) +llvm::SmallVector, 4> listeners; +listeners.reserve(m_listeners.size()); + +for (auto it = m_listeners.begin(); it != m_listeners.end();) { -lldb::ListenerSP curr_listener_sp(pos->first.lock()); -if (curr_listener_sp) +lldb::ListenerSP curr_listener_sp(it->first.lock()); +if (curr_listener_sp && it->second) { -if (callback(curr_listener_sp, pos->second)) -++pos; // Keep iterating -else -return; // Done iterating +listeners.emplace_back(std::move(curr_listener_sp), it->second); +++it; } else -{ -// The listener has been expired. Remove this entry. -pos = m_listeners.erase(pos); -} +it = m_listeners.erase(it); } + +return listeners; } void @@ -91,11 +85,8 @@ // Make sure the listener forgets about this broadcaster. We do // this in the broadcaster in case the broadcaster object initiates // the removal. - -ListenerIterator([this](const lldb::ListenerSP &curr_listener_sp, uint32_t &curr_event_mask) -> bool { -curr_listener_sp->BroadcasterWillDestruct (&m_broadcaster); -return true; // Keep iterating -}); +for(auto &pair : GetListeners()) +pair.first->BroadcasterWillDestruct (&m_broadcaster); m_listeners.clear(); } @@ -154,16 +145,16 @@ bool handled = false; -ListenerIterator([this, &listener_sp, &handled, event_mask](const lldb::ListenerSP &curr_listener_sp, uint32_t &curr_event_mask) -> bool { -if (curr_listener_sp == listener_sp) +for(auto &pair: GetListeners()) +{ +if (pair.first == listener_sp) { handled = true; -curr_event_mask |= event_mask; +pair.second |= event_mask; m_broadcaster.AddInitialEventsToListener (listener_sp, event_mask); -return false; // Stop iterating +break; } -return true; // Keep iterating -}); +} if (!handled) { @@ -187,55 +178,27 @@ if (!m_hijacking_listeners.empty() && event_type & m_hijacking_masks.back()) return true; -if (m_listeners.empty()) -return false; - -bool result = false; -ListenerIterator([this, event_type, &result](const lldb::ListenerSP &curr_listener_sp, uint32_t &curr_event_mask) -> bool { - -if (curr_event_mask & event_type) -{ -result = true; -return false; // Stop iterating -} -else -{ -return true; // Keep iterating -} -}); -return result; +for(auto &pair: GetListeners()) +{ +if (pair.second & event_type) +return true; +} +return false; } bool Broadcaster::BroadcasterImpl::RemoveListener (lldb_private::Listener *listener, uint32_t event_mask) { -if (listener) +if (!listener) +return false; + +std::lock_guard guard(m_listeners_mutex); +for (auto &pair : GetListeners()) { -std::lock_guard guard(m_listeners_mutex); -collection::iterator pos = m_listeners.begin(); -// See if we already have this listener, and if so, update its mask -while (pos != m_listeners.end()) +if (pair.first.get() == listener) { -lldb::ListenerSP curr_listener_sp(pos->first.lock()); -if (curr_listener_sp) -{ -if (curr_listener_sp.get(
[Lldb-commits] [lldb] r278664 - Fix a race in Broadcaster/Listener interaction
Author: labath Date: Mon Aug 15 04:53:08 2016 New Revision: 278664 URL: http://llvm.org/viewvc/llvm-project?rev=278664&view=rev Log: Fix a race in Broadcaster/Listener interaction Summary: The following problem was occuring: - broadcaster B had two listeners: L1 and L2 (thread T1) - (T1) B has started to broadcast an event, it has locked a shared_ptr to L1 (in ListenerIterator()) - on another thread T2 the penultimate reference to L1 was destroyed (the transient object in B is now the last reference) - (T2) the last reference to L2 was destroyed as well - (T1) B has finished broadcasting the event to L1 and destroyed the last shared_ptr - (T1) this triggered the destructor, which called into B->RemoveListener() - (T1) all pointers in the m_listeners list were now stale, so RemoveListener emptied the list - (T1) Eventually control returned to the ListenerIterator() for doing broadcasting, which was still in the middle of iterating through the list - (T1) Only now, it was holding onto a dangling iterator. BOOM. I fix this issue by making sure nothing can interfere with the iterate-and-remove-expired-pointers loop, by moving this logic into a single function, which first locks (or clears) the whole list and then returns the list of valid and locked Listeners for further processing. Instead of std::list I use an llvm::SmallVector which should hopefully offset the fact that we create a copy of the list for the common case where we have only a few listeners (no heap allocations). A slight difference in behaviour is that now RemoveListener does not remove an element from the list -- it only sets it's mask to 0, which means it will be removed during the next iteration of GetListeners(). This is purely an implementation detail and it should not be externally noticable. I was not able to reproduce this bug reliably without inserting sleep statements into the code, so I do not add a test for it. Instead, I add some unit tests for the functions that I do modify. Reviewers: clayborg, jingham Subscribers: tberghammer, lldb-commits Differential Revision: https://reviews.llvm.org/D23406 Added: lldb/trunk/unittests/Core/BroadcasterTest.cpp Modified: lldb/trunk/include/lldb/Core/Broadcaster.h lldb/trunk/source/Core/Broadcaster.cpp lldb/trunk/unittests/Core/CMakeLists.txt Modified: lldb/trunk/include/lldb/Core/Broadcaster.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Broadcaster.h?rev=278664&r1=278663&r2=278664&view=diff == --- lldb/trunk/include/lldb/Core/Broadcaster.h (original) +++ lldb/trunk/include/lldb/Core/Broadcaster.h Mon Aug 15 04:53:08 2016 @@ -24,6 +24,8 @@ #include "lldb/lldb-private.h" #include "lldb/Core/ConstString.h" +#include "llvm/ADT/SmallVector.h" + namespace lldb_private { //-- @@ -615,12 +617,11 @@ protected: //-- // //-- -typedef std::list< std::pair > collection; +typedef llvm::SmallVector, 4> collection; typedef std::map event_names_map; -void -ListenerIterator (std::function const &callback); - +llvm::SmallVector, 4> +GetListeners(); Broadcaster &m_broadcaster; ///< The broadcsater that this implements event_names_map m_event_names; ///< Optionally define event names for readability and logging for each event bit Modified: lldb/trunk/source/Core/Broadcaster.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Broadcaster.cpp?rev=278664&r1=278663&r2=278664&view=diff == --- lldb/trunk/source/Core/Broadcaster.cpp (original) +++ lldb/trunk/source/Core/Broadcaster.cpp Mon Aug 15 04:53:08 2016 @@ -56,31 +56,25 @@ Broadcaster::CheckInWithManager () } } -void -Broadcaster::BroadcasterImpl::ListenerIterator (std::function const &callback) +llvm::SmallVector, 4> +Broadcaster::BroadcasterImpl::GetListeners() { -// Private iterator that should be used by everyone except BroadcasterImpl::RemoveListener(). -// We have weak pointers to our listeners which means that at any point the listener can -// expire which means we will need to take it out of our list. To take care of this, we -// iterate and check that the weak pointer can be made into a valid shared pointer before -// we call the callback. If the weak pointer has expired, we remove it from our list. -collection::iterator pos = m_listeners.begin(); -while (pos != m_listeners.end()) +llvm::SmallVector, 4> listeners; +listeners.reserve(m_listeners.size()); + +for (auto it = m_listeners.begin(); it != m_listeners.end();)
Re: [Lldb-commits] [PATCH] D17856: Fix expression evaluation with operator new
This revision was automatically updated to reflect the committed changes. Closed by commit rL278670: Fix expression evaluation with operator new (authored by labath). Changed prior to commit: https://reviews.llvm.org/D17856?vs=56252&id=68036#toc Repository: rL LLVM https://reviews.llvm.org/D17856 Files: lldb/trunk/include/lldb/Symbol/ClangASTContext.h lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/global_operators/TestCppGlobalOperators.py lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/global_operators/main.cpp lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp lldb/trunk/source/Symbol/ClangASTContext.cpp Index: lldb/trunk/source/Symbol/ClangASTContext.cpp === --- lldb/trunk/source/Symbol/ClangASTContext.cpp +++ lldb/trunk/source/Symbol/ClangASTContext.cpp @@ -131,6 +131,241 @@ return *g_map_ptr; } +static bool +IsOperator(const char *name, clang::OverloadedOperatorKind &op_kind) +{ +if (name == nullptr || name[0] == '\0') +return false; + +#define OPERATOR_PREFIX "operator" +#define OPERATOR_PREFIX_LENGTH (sizeof(OPERATOR_PREFIX) - 1) + +const char *post_op_name = nullptr; + +bool no_space = true; + +if (::strncmp(name, OPERATOR_PREFIX, OPERATOR_PREFIX_LENGTH)) +return false; + +post_op_name = name + OPERATOR_PREFIX_LENGTH; + +if (post_op_name[0] == ' ') +{ +post_op_name++; +no_space = false; +} + +#undef OPERATOR_PREFIX +#undef OPERATOR_PREFIX_LENGTH + +// This is an operator, set the overloaded operator kind to invalid +// in case this is a conversion operator... +op_kind = clang::NUM_OVERLOADED_OPERATORS; + +switch (post_op_name[0]) +{ +default: +if (no_space) +return false; +break; +case 'n': +if (no_space) +return false; +if (strcmp(post_op_name, "new") == 0) +op_kind = clang::OO_New; +else if (strcmp(post_op_name, "new[]") == 0) +op_kind = clang::OO_Array_New; +break; + +case 'd': +if (no_space) +return false; +if (strcmp(post_op_name, "delete") == 0) +op_kind = clang::OO_Delete; +else if (strcmp(post_op_name, "delete[]") == 0) +op_kind = clang::OO_Array_Delete; +break; + +case '+': +if (post_op_name[1] == '\0') +op_kind = clang::OO_Plus; +else if (post_op_name[2] == '\0') +{ +if (post_op_name[1] == '=') +op_kind = clang::OO_PlusEqual; +else if (post_op_name[1] == '+') +op_kind = clang::OO_PlusPlus; +} +break; + +case '-': +if (post_op_name[1] == '\0') +op_kind = clang::OO_Minus; +else if (post_op_name[2] == '\0') +{ +switch (post_op_name[1]) +{ +case '=': +op_kind = clang::OO_MinusEqual; +break; +case '-': +op_kind = clang::OO_MinusMinus; +break; +case '>': +op_kind = clang::OO_Arrow; +break; +} +} +else if (post_op_name[3] == '\0') +{ +if (post_op_name[2] == '*') +op_kind = clang::OO_ArrowStar; +break; +} +break; + +case '*': +if (post_op_name[1] == '\0') +op_kind = clang::OO_Star; +else if (post_op_name[1] == '=' && post_op_name[2] == '\0') +op_kind = clang::OO_StarEqual; +break; + +case '/': +if (post_op_name[1] == '\0') +op_kind = clang::OO_Slash; +else if (post_op_name[1] == '=' && post_op_name[2] == '\0') +op_kind = clang::OO_SlashEqual; +break; + +case '%': +if (post_op_name[1] == '\0') +op_kind = clang::OO_Percent; +else if (post_op_name[1] == '=' && post_op_name[2] == '\0') +op_kind = clang::OO_PercentEqual; +break; + +case '^': +if (post_op_name[1] == '\0') +op_kind = clang::OO_Caret; +else if (post_op_name[1] == '=' && post_op_name[2] == '\0') +op_kind = clang::OO_CaretEqual; +break; + +case '&': +if (post_op_name[1] == '\0') +op_kind = clang::OO_Amp; +else if (post_op_name[2] == '\0') +{ +switch (post_op_name[1]) +{ +case '=': +o
[Lldb-commits] [lldb] r278670 - Fix expression evaluation with operator new
Author: labath Date: Mon Aug 15 09:32:32 2016 New Revision: 278670 URL: http://llvm.org/viewvc/llvm-project?rev=278670&view=rev Log: Fix expression evaluation with operator new Summary: referencing a user-defined operator new was triggering an assert in clang because we were registering the function name as string "operator new", instead of using the special operator enum, which clang has for this purpose. Method operators already had code to handle this, and now I extend this to cover free standing operator functions as well. Test included. Reviewers: spyffe Subscribers: sivachandra, paulherman, lldb-commits Differential Revision: http://reviews.llvm.org/D17856 Modified: lldb/trunk/include/lldb/Symbol/ClangASTContext.h lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/global_operators/TestCppGlobalOperators.py lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/global_operators/main.cpp lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp lldb/trunk/source/Symbol/ClangASTContext.cpp Modified: lldb/trunk/include/lldb/Symbol/ClangASTContext.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/ClangASTContext.h?rev=278670&r1=278669&r2=278670&view=diff == --- lldb/trunk/include/lldb/Symbol/ClangASTContext.h (original) +++ lldb/trunk/include/lldb/Symbol/ClangASTContext.h Mon Aug 15 09:32:32 2016 @@ -390,10 +390,9 @@ public: static clang::DeclContext * GetAsDeclContext (clang::ObjCMethodDecl *objc_method_decl); - static bool -CheckOverloadedOperatorKindParameterCount (uint32_t op_kind, - uint32_t num_params); +CheckOverloadedOperatorKindParameterCount(bool is_method, clang::OverloadedOperatorKind op_kind, + uint32_t num_params); bool FieldIsBitfield (clang::FieldDecl* field, @@ -1188,6 +1187,9 @@ public: return clang::QualType(); } +clang::DeclarationName +GetDeclarationName(const char *name, const CompilerType &function_clang_type); + protected: //-- // Classes that inherit from ClangASTContext can see and modify these Modified: lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/global_operators/TestCppGlobalOperators.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/global_operators/TestCppGlobalOperators.py?rev=278670&r1=278669&r2=278670&view=diff == --- lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/global_operators/TestCppGlobalOperators.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/global_operators/TestCppGlobalOperators.py Mon Aug 15 09:32:32 2016 @@ -10,8 +10,7 @@ class TestCppGlobalOperators(TestBase): mydir = TestBase.compute_mydir(__file__) -@expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr21765") -def test_with_run_command(self): +def prepare_executable_and_get_frame(self): self.build() # Get main source file @@ -42,8 +41,11 @@ class TestCppGlobalOperators(TestBase): self.assertTrue(process.GetState() == lldb.eStateStopped, PROCESS_STOPPED) thread = lldbutil.get_stopped_thread(process, lldb.eStopReasonBreakpoint) -# Check if global operators are evaluated -frame = thread.GetSelectedFrame() +return thread.GetSelectedFrame() + +@expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr21765") +def test_equals_operator(self): +frame = self.prepare_executable_and_get_frame() test_result = frame.EvaluateExpression("operator==(s1, s2)") self.assertTrue(test_result.IsValid() and test_result.GetValue() == "false", "operator==(s1, s2) = false") @@ -53,3 +55,25 @@ class TestCppGlobalOperators(TestBase): test_result = frame.EvaluateExpression("operator==(s2, s3)") self.assertTrue(test_result.IsValid() and test_result.GetValue() == "false", "operator==(s2, s3) = false") + +def do_new_test(self, frame, expr, expected_value_name): +"""Evaluate a new expression, and check its result""" + +expected_value = frame.FindValue(expected_value_name, lldb.eValueTypeVariableGlobal) +self.assertTrue(expected_value.IsValid()) + +expected_value_addr = expected_value.AddressOf() +self.assertTrue(expected_value_addr.IsValid()) + +got = frame.EvaluateExpression(expr) +self.assertTrue(got.IsValid()) +self.assertEqual(got.GetValueAsUnsigned(), expected_value_addr.GetValueAsUnsigned()) +got_type = got.GetType() +self.assertTrue(got_type.IsPointerType()) +self.assertEqual(got_type.GetPointeeType().GetName(), "Struct") + +def test_operator_
[Lldb-commits] Buildbot numbers for the week of 7/31/2016 - 8/06/2016
Hello everyone, Below are some buildbot numbers for the week of 7/31/2016 - 8/06/2016. 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 +--- clang-3stage-ubuntu| 104:26:38 clang-x64-ninja-win7 | 57:39:42 clang-x86-win2008-selfhost | 37:12:21 sanitizer-windows | 35:59:16 lldb-windows7-android | 30:43:38 lldb-x86_64-darwin-13.4| 28:53:57 libcxx-libcxxabi-singlethreaded-x86_64-linux-debian| 16:52:14 sanitizer-x86_64-linux | 12:57:21 clang-native-aarch64-full | 11:32:22 clang-cmake-aarch64-full | 09:10:29 clang-ppc64le-linux-multistage | 07:58:21 sanitizer-ppc64le-linux| 07:55:40 clang-ppc64le-linux-lnt| 07:29:25 sanitizer-ppc64be-linux| 07:17:24 clang-ppc64be-linux-multistage | 06:42:28 clang-cmake-thumbv7-a15-full-sh| 06:28:20 clang-cmake-mips | 06:27:27 clang-ppc64be-linux-lnt| 06:21:39 perf-x86_64-penryn-O3 | 06:19:35 perf-x86_64-penryn-O3-polly-fast | 06:13:02 sanitizer-x86_64-linux-bootstrap | 05:50:16 clang-ppc64le-linux| 05:31:03 clang-atom-d525-fedora-rel | 05:30:36 clang-ppc64be-linux| 05:28:39 clang-cmake-armv7-a15-selfhost | 05:23:07 lldb-x86_64-ubuntu-14.04-cmake | 05:21:03 clang-cmake-aarch64-42vma | 05:15:20 clang-cmake-aarch64-quick | 04:58:26 perf-x86_64-penryn-O3-polly-unprofitable | 04:41:49 clang-cmake-armv7-a15-full | 04:30:53 perf-x86_64-penryn-O3-polly-parallel-fast | 04:22:43 clang-cuda-build | 04:16:57 perf-x86_64-penryn-O3-polly-before-vectorizer-unprofitable | 04:14:49 clang-native-arm-lnt | 04:08:27 llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast | 02:55:42 llvm-clang-lld-x86_64-debian-fast | 02:54:29 sanitizer-x86_64-linux-autoconf| 02:50:25 llvm-mips-linux| 02:35:15 sanitizer-x86_64-linux-fuzzer | 02:01:54 clang-x86_64-debian-fast | 01:34:05 lldb-amd64-ninja-netbsd7 | 01:30:36 sanitizer-x86_64-linux-fast| 01:24:45 lld-x86_64-freebsd | 01:23:58 llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast | 01:20:51 lld-x86_64-win7| 01:20:37 lld-x86_64-darwin13| 01:20:27 lldb-x86_64-ubuntu-14.04-buildserver | 01:18:06 lldb-x86_64-ubuntu-14.04-android | 01:14:59 clang-cmake-armv7-a15 | 01:07:50 clang-cmake-thumbv7-a15| 01:07:50 libcxx-libcxxabi-x86_64-linux-ubuntu-gcc49-cxx11 | 01:04:32 clang-hexagon-elf | 00:58:54 llvm-hexagon-elf | 00:52:51 polly-amd64-linux | 00:42:35 clang-x86_64-linux-abi-test| 00:40:12 clang-s390x-linux | 00:32:48 lldb-amd64-ninja-freebsd11 | 00:23:50 (57 rows) "Status change ratio" by active builder (percent of builds that changed the builder status from greed to red or from red to green): buildername
[Lldb-commits] Buildbot numbers for the last week of 8/07/2016 - 8/13/2016
Hello everyone, Below are some buildbot numbers for the last week of 8/07/2016 - 8/13/2016. 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-windows7-android | 58:07:37 clang-ppc64be-linux-lnt| 30:43:16 clang-native-aarch64-full | 26:00:07 libcxx-libcxxabi-libunwind-arm-linux-noexceptions | 24:33:36 libcxx-libcxxabi-libunwind-x86_64-linux-debian | 24:14:15 libcxx-libcxxabi-libunwind-arm-linux | 23:14:43 libcxx-libcxxabi-libunwind-x86_64-linux-ubuntu | 22:38:52 clang-cmake-armv7-a15-selfhost-neon| 18:00:25 clang-cmake-thumbv7-a15-full-sh| 17:46:36 clang-cmake-armv7-a15-selfhost | 16:41:55 clang-ppc64le-linux-multistage | 15:50:57 llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast | 14:17:49 llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast | 14:14:15 sanitizer-ppc64be-linux| 13:53:48 sanitizer-ppc64le-linux| 13:14:27 clang-ppc64be-linux-multistage | 13:04:22 sanitizer-x86_64-linux | 13:00:15 clang-native-arm-lnt | 12:19:32 clang-x86-win2008-selfhost | 10:05:12 clang-x64-ninja-win7 | 10:00:44 sanitizer-x86_64-linux-bootstrap | 09:34:04 sanitizer-windows | 09:29:19 clang-cmake-armv7-a15-full | 08:39:13 clang-cmake-thumbv7-a15| 08:36:47 clang-cmake-armv7-a15 | 08:36:08 sanitizer-x86_64-linux-fast| 08:31:37 clang-atom-d525-fedora-rel | 08:15:31 clang-cmake-mips | 07:15:00 perf-x86_64-penryn-O3-polly| 06:24:47 perf-x86_64-penryn-O3-polly-fast | 06:03:32 clang-ppc64le-linux| 05:28:22 lldb-x86_64-ubuntu-14.04-android | 05:17:18 llvm-mips-linux| 05:10:10 clang-ppc64be-linux| 04:49:44 clang-cmake-aarch64-quick | 04:22:23 clang-ppc64le-linux-lnt| 04:17:03 llvm-clang-lld-x86_64-debian-fast | 04:11:50 clang-cmake-aarch64-42vma | 03:46:22 polly-amd64-linux | 03:27:00 clang-cmake-aarch64-full | 03:04:35 lldb-x86_64-darwin-13.4| 02:55:02 clang-x86_64-debian-fast | 02:42:25 lldb-x86_64-ubuntu-14.04-cmake | 02:31:13 clang-bpf-build| 02:15:46 clang-cuda-build | 02:14:35 perf-x86_64-penryn-O3-polly-before-vectorizer-unprofitable | 02:14:03 llvm-sphinx-docs | 02:08:21 libomp-ompt-gcc-x86_64-linux-debian| 02:05:29 libomp-gcc-x86_64-linux-debian | 02:05:24 perf-x86_64-penryn-O3-polly-unprofitable | 02:03:12 lldb-x86_64-ubuntu-14.04-buildserver | 01:49:26 perf-x86_64-penryn-O3-polly-parallel-fast | 01:44:41 sanitizer-x86_64-linux-fuzzer | 01:15:34 clang-3stage-ubuntu| 01:10:32 libcxx-libcxxabi-x86_64-linux-ubuntu-cxx03 | 01:08:59 sanitizer-x86_64-linux-autoconf| 01:02:47 llvm-hexagon-elf | 00:59:27 clang-hexagon-elf | 00:59:10 clang-x86_64-linux-abi-test| 00:47:13 lld-x86_64-win7
Re: [Lldb-commits] [PATCH] D20386: Correct makefile.rules to use arm/aarch64 target specific AR and OBJCOPY
omjavaid added a comment. I like your suggestions and I dont think we have any other way but to use preset environment variable to detect what kind of TOOLCHAIN we want to use apart from some standard cases where we have the ability to detect through proposed hack logic. I agree we should have the ability to override this hack as well just for the fact that it allows us to use various other versions of AR, OBJCOPY etc. https://reviews.llvm.org/D20386 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r278774 - Symbol: add missing item in covered switch
Author: compnerd Date: Mon Aug 15 23:12:36 2016 New Revision: 278774 URL: http://llvm.org/viewvc/llvm-project?rev=278774&view=rev Log: Symbol: add missing item in covered switch RenderScript was missing from the covered switch. Add it to avoid a warning of the missing entry. NFC. Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTContext.cpp?rev=278774&r1=278773&r2=278774&view=diff == --- lldb/trunk/source/Symbol/ClangASTContext.cpp (original) +++ lldb/trunk/source/Symbol/ClangASTContext.cpp Mon Aug 15 23:12:36 2016 @@ -406,6 +406,7 @@ ParseLangArgs (LangOptions &Opts, InputK case IK_None: case IK_AST: case IK_LLVM_IR: +case IK_RenderScript: assert (!"Invalid input kind!"); case IK_OpenCL: LangStd = LangStandard::lang_opencl; ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits