[Lldb-commits] [PATCH] D27289: Return "thread-pcs" in jstopinfo on Linux/Android.
labath abandoned this revision. labath marked 2 inline comments as done. labath added a comment. The new version of this patch is in https://reviews.llvm.org/D28880. https://reviews.llvm.org/D27289 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r292488 - Avoid unused variable warning when assert is disabled.
Author: abidh Date: Thu Jan 19 09:11:01 2017 New Revision: 292488 URL: http://llvm.org/viewvc/llvm-project?rev=292488&view=rev Log: Avoid unused variable warning when assert is disabled. Modified: lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp Modified: lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp?rev=292488&r1=292487&r2=292488&view=diff == --- lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp (original) +++ lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp Thu Jan 19 09:11:01 2017 @@ -576,7 +576,7 @@ void ProcessGDBRemote::BuildDynamicRegis uint32_t ret_val = opcode_extractor.GetHexBytesAvail(dwarf_opcode_bytes); assert(dwarf_opcode_len == ret_val); - +UNUSED_IF_ASSERT_DISABLED(ret_val); reg_info.dynamic_size_dwarf_expr_bytes = dwarf_opcode_bytes.data(); } } @@ -4213,7 +4213,7 @@ bool ParseRegisters(XMLNode feature_node uint32_t ret_val = opcode_extractor.GetHexBytesAvail(dwarf_opcode_bytes); assert(dwarf_opcode_len == ret_val); - +UNUSED_IF_ASSERT_DISABLED(ret_val); reg_info.dynamic_size_dwarf_expr_bytes = dwarf_opcode_bytes.data(); } else { printf("unhandled attribute %s = %s\n", name.data(), value.data()); ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r292489 - Refactor logging in NativeProcessLinux
Author: labath Date: Thu Jan 19 09:26:04 2017 New Revision: 292489 URL: http://llvm.org/viewvc/llvm-project?rev=292489&view=rev Log: Refactor logging in NativeProcessLinux Use the LLDB_LOG macro instead of the more verbose if(log) ... syntax. I have also consolidated the log channels (everything now goes to the posix channel, instead of a mixture of posix and lldb), and cleaned up some of the more convoluted log statements. Modified: lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp 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=292489&r1=292488&r2=292489&view=diff == --- lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp (original) +++ lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp Thu Jan 19 09:26:04 2017 @@ -78,7 +78,7 @@ static bool ProcessVmReadvSupported() { static std::once_flag flag; std::call_once(flag, [] { -Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); +Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); uint32_t source = 0x47424742; uint32_t dest = 0; @@ -92,16 +92,15 @@ static bool ProcessVmReadvSupported() { // value from our own process. ssize_t res = process_vm_readv(getpid(), &local, 1, &remote, 1, 0); is_supported = (res == sizeof(source) && source == dest); -if (log) { - if (is_supported) -log->Printf("%s: Detected kernel support for process_vm_readv syscall. " -"Fast memory reads enabled.", -__FUNCTION__); - else -log->Printf("%s: syscall process_vm_readv failed (error: %s). Fast " -"memory reads disabled.", -__FUNCTION__, strerror(errno)); -} +if (is_supported) + LLDB_LOG(log, + "Detected kernel support for process_vm_readv syscall. " + "Fast memory reads enabled."); +else + LLDB_LOG(log, + "syscall process_vm_readv failed (error: {0}). Fast memory " + "reads disabled.", + strerror(errno)); }); return is_supported; @@ -109,33 +108,29 @@ static bool ProcessVmReadvSupported() { namespace { void MaybeLogLaunchInfo(const ProcessLaunchInfo &info) { - Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); + Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); if (!log) return; if (const FileAction *action = info.GetFileActionForFD(STDIN_FILENO)) -log->Printf("%s: setting STDIN to '%s'", __FUNCTION__, -action->GetFileSpec().GetCString()); +LLDB_LOG(log, "setting STDIN to '{0}'", action->GetFileSpec()); else -log->Printf("%s leaving STDIN as is", __FUNCTION__); +LLDB_LOG(log, "leaving STDIN as is"); if (const FileAction *action = info.GetFileActionForFD(STDOUT_FILENO)) -log->Printf("%s setting STDOUT to '%s'", __FUNCTION__, -action->GetFileSpec().GetCString()); +LLDB_LOG(log, "setting STDOUT to '{0}'", action->GetFileSpec()); else -log->Printf("%s leaving STDOUT as is", __FUNCTION__); +LLDB_LOG(log, "leaving STDOUT as is"); if (const FileAction *action = info.GetFileActionForFD(STDERR_FILENO)) -log->Printf("%s setting STDERR to '%s'", __FUNCTION__, -action->GetFileSpec().GetCString()); +LLDB_LOG(log, "setting STDERR to '{0}'", action->GetFileSpec()); else -log->Printf("%s leaving STDERR as is", __FUNCTION__); +LLDB_LOG(log, "leaving STDERR as is"); int i = 0; for (const char **args = info.GetArguments().GetConstArgumentVector(); *args; ++args, ++i) -log->Printf("%s arg %d: \"%s\"", __FUNCTION__, i, -*args ? *args : "nullptr"); +LLDB_LOG(log, "arg {0}: '{1}'", i, *args); } void DisplayBytes(StreamString &s, void *bytes, uint32_t count) { @@ -148,50 +143,50 @@ void DisplayBytes(StreamString &s, void } void PtraceDisplayBytes(int &req, void *data, size_t data_size) { + Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PTRACE | + POSIX_LOG_VERBOSE)); + if (!log) +return; StreamString buf; - Log *verbose_log(ProcessPOSIXLog::GetLogIfAllCategoriesSet( - POSIX_LOG_PTRACE | POSIX_LOG_VERBOSE)); - if (verbose_log) { -switch (req) { -case PTRACE_POKETEXT: { - DisplayBytes(buf, &data, 8); - verbose_log->Printf("PTRACE_POKETEXT %s", buf.GetData()); - break; -} -case PTRACE_POKEDATA: { - DisplayBytes(buf, &data, 8); - verbose_log->Printf("PTRACE_POKEDATA %s", buf.GetData()); - break; -} -case PTRACE_POKEUSER: { - DisplayBytes(buf, &data, 8); - verbose_log->Printf("PTRACE_POKEUSER %s", buf.GetData()); - break; -} -ca
[Lldb-commits] [PATCH] D28804: Provide a substitute to load command of gdb
abidh updated this revision to Diff 84979. abidh added a comment. Changed the name of the option. Added LoadInMemory function to Module and ObjectFile class and moved the functionality of writing to memory there. Removed part which set the pc. https://reviews.llvm.org/D28804 Files: include/lldb/Core/Module.h include/lldb/Symbol/ObjectFile.h source/Commands/CommandObjectTarget.cpp source/Core/Module.cpp source/Symbol/ObjectFile.cpp Index: source/Symbol/ObjectFile.cpp === --- source/Symbol/ObjectFile.cpp +++ source/Symbol/ObjectFile.cpp @@ -20,6 +20,9 @@ #include "lldb/Core/Timer.h" #include "lldb/Symbol/ObjectContainer.h" #include "lldb/Symbol/SymbolFile.h" +#include "lldb/Target/Target.h" +#include "lldb/Target/RegisterContext.h" +#include "lldb/Target/SectionLoadList.h" #include "lldb/Target/Process.h" #include "lldb/lldb-private.h" @@ -648,3 +651,31 @@ file_name.GetCString()); return ConstString(ss.GetString()); } + +Error ObjectFile::LoadInMemory(Target &target) { + Error error; + ProcessSP process = target.CalculateProcess(); + if (!process) +return Error("No Process"); + + SectionList *section_list = GetSectionList(); + if (!section_list) + return Error("No section in object file"); + size_t section_count = section_list->GetNumSections(0); + for (size_t i = 0; i < section_count; ++i) { +SectionSP section_sp = section_list->GetSectionAtIndex(i); +addr_t addr = target.GetSectionLoadList().GetSectionLoadAddress(section_sp); +if (addr != LLDB_INVALID_ADDRESS) { + DataExtractor section_data; + // We can skip sections like bss + if (section_sp->GetFileSize() == 0) +continue; + section_sp->GetSectionData(section_data); + lldb::offset_t written = process->WriteMemory( + addr, section_data.GetDataStart(), section_data.GetByteSize(), error); + if (written != section_data.GetByteSize()) +return error; +} + } + return error; +} Index: source/Core/Module.cpp === --- source/Core/Module.cpp +++ source/Core/Module.cpp @@ -1664,3 +1664,7 @@ return false; } + +Error Module::LoadInMemory(Target &target) { + return m_objfile_sp->LoadInMemory(target); +} Index: source/Commands/CommandObjectTarget.cpp === --- source/Commands/CommandObjectTarget.cpp +++ source/Commands/CommandObjectTarget.cpp @@ -2567,13 +2567,18 @@ m_option_group(), m_file_option(LLDB_OPT_SET_1, false, "file", 'f', 0, eArgTypeName, "Fullpath or basename for module to load.", ""), +m_load_option(LLDB_OPT_SET_1, false, "load", 'l', + "Write file contents to the memory and set PC to its" + "entry address.", + false, true), m_slide_option(LLDB_OPT_SET_1, false, "slide", 's', 0, eArgTypeOffset, "Set the load address for all sections to be the " "virtual address in the file plus the offset.", 0) { m_option_group.Append(&m_uuid_option_group, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1); m_option_group.Append(&m_file_option, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1); +m_option_group.Append(&m_load_option, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1); m_option_group.Append(&m_slide_option, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1); m_option_group.Finalize(); } @@ -2585,6 +2590,7 @@ protected: bool DoExecute(Args &args, CommandReturnObject &result) override { Target *target = m_interpreter.GetDebugger().GetSelectedTarget().get(); +const bool load = m_load_option.GetOptionValue().GetCurrentValue(); if (target == nullptr) { result.AppendError("invalid target, create a debug target using the " "'target create' command"); @@ -2594,6 +2600,21 @@ const size_t argc = args.GetArgumentCount(); ModuleSpec module_spec; bool search_using_module_spec = false; + + // Allow "load" option to work without --file or --uuid + // option. + if (load) { +if (!m_file_option.GetOptionValue().OptionWasSet() && +!m_uuid_option_group.GetOptionValue().OptionWasSet()) { + ModuleList &module_list = target->GetImages(); + if (module_list.GetSize() == 1) { +search_using_module_spec = true; +module_spec.GetFileSpec() = +module_list.GetModuleAtIndex(0)->GetFileSpec(); + } +} + } + if (m_file_option.GetOptionValue().OptionWasSet()) { search_using_module_spec = true; const char *arg_cstr = m_file_option.GetOptionValue().GetCurrentValue(); @@ -2721,6 +2742,13 @@ if (process) process->Flush(); } +
[Lldb-commits] [PATCH] D28804: Provide a substitute to load command of gdb
clayborg accepted this revision. clayborg added a comment. This revision is now accepted and ready to land. Very nice! https://reviews.llvm.org/D28804 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r292499 - Provide a substitute to load command of gdb.
Author: abidh Date: Thu Jan 19 11:32:50 2017 New Revision: 292499 URL: http://llvm.org/viewvc/llvm-project?rev=292499&view=rev Log: Provide a substitute to load command of gdb. For bare-metal targets, lldb was missing a command like 'load' in gdb which can be used to create executable image on the target. This was discussed in http://lists.llvm.org/pipermail/lldb-dev/2016-December/011752.html This commits adds an option to "target module load" command to provide that functionality. It does not set the PC to entry address which will be done separately. Reviewed in https://reviews.llvm.org/D28804 Modified: lldb/trunk/include/lldb/Core/Module.h lldb/trunk/include/lldb/Symbol/ObjectFile.h lldb/trunk/source/Commands/CommandObjectTarget.cpp lldb/trunk/source/Core/Module.cpp lldb/trunk/source/Symbol/ObjectFile.cpp Modified: lldb/trunk/include/lldb/Core/Module.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Module.h?rev=292499&r1=292498&r2=292499&view=diff == --- lldb/trunk/include/lldb/Core/Module.h (original) +++ lldb/trunk/include/lldb/Core/Module.h Thu Jan 19 11:32:50 2017 @@ -962,6 +962,20 @@ public: bool RemapSourceFile(llvm::StringRef path, std::string &new_path) const; bool RemapSourceFile(const char *, std::string &) const = delete; + //-- + /// Loads this module to memory. + /// + /// Loads the bits needed to create an executable image to the memory. + /// It is useful with bare-metal targets where target does not have the + /// ability to start a process itself. + /// + /// @param[in] target + /// Target where to load the module. + /// + /// @return + //-- + Error LoadInMemory(Target &target); + //-- /// @class LookupInfo Module.h "lldb/Core/Module.h" /// @brief A class that encapsulates name lookup information. Modified: lldb/trunk/include/lldb/Symbol/ObjectFile.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/ObjectFile.h?rev=292499&r1=292498&r2=292499&view=diff == --- lldb/trunk/include/lldb/Symbol/ObjectFile.h (original) +++ lldb/trunk/include/lldb/Symbol/ObjectFile.h Thu Jan 19 11:32:50 2017 @@ -774,6 +774,20 @@ public: llvm::StringRef name, lldb::SymbolType symbol_type_hint = lldb::eSymbolTypeUndefined); + //-- + /// Loads this objfile to memory. + /// + /// Loads the bits needed to create an executable image to the memory. + /// It is useful with bare-metal targets where target does not have the + /// ability to start a process itself. + /// + /// @param[in] target + /// Target where to load. + /// + /// @return + //-- + virtual Error LoadInMemory(Target &target); + protected: //-- // Member variables. Modified: lldb/trunk/source/Commands/CommandObjectTarget.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectTarget.cpp?rev=292499&r1=292498&r2=292499&view=diff == --- lldb/trunk/source/Commands/CommandObjectTarget.cpp (original) +++ lldb/trunk/source/Commands/CommandObjectTarget.cpp Thu Jan 19 11:32:50 2017 @@ -2567,6 +2567,9 @@ public: m_option_group(), m_file_option(LLDB_OPT_SET_1, false, "file", 'f', 0, eArgTypeName, "Fullpath or basename for module to load.", ""), +m_load_option(LLDB_OPT_SET_1, false, "load", 'l', + "Write file contents to the memory.", + false, true), m_slide_option(LLDB_OPT_SET_1, false, "slide", 's', 0, eArgTypeOffset, "Set the load address for all sections to be the " "virtual address in the file plus the offset.", @@ -2574,6 +2577,7 @@ public: m_option_group.Append(&m_uuid_option_group, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1); m_option_group.Append(&m_file_option, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1); +m_option_group.Append(&m_load_option, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1); m_option_group.Append(&m_slide_option, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1); m_option_group.Finalize(); } @@ -2585,6 +2589,7 @@ public: protected: bool DoExecute(Args &args, CommandReturnObject &result) override { Target *target = m_interpreter.GetDebugger().GetSelectedTarget().get(); +const bool load = m_load_option.GetOptionValue().GetCurrentValue(); if (target == nullptr) { result.AppendError("invali
[Lldb-commits] [PATCH] D28804: Provide a substitute to load command of gdb
abidh closed this revision. abidh added a comment. Committed in 292499. Removed this bit "set PC to its entry address." before committing as it is not being done now. https://reviews.llvm.org/D28804 ___ 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 01/01/2017 - 01/07/2017
Hello everyone, Below are some buildbot numbers for the week of 01/01/2017 - 01/07/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 +- clang-x86-windows-msvc2015 | 25:35:03 libcxx-libcxxabi-x86_64-linux-debian | 22:42:33 sanitizer-x86_64-linux-fast| 20:33:50 sanitizer-x86_64-linux-bootstrap | 18:10:29 lldb-x86_64-ubuntu-14.04-buildserver | 13:05:04 perf-x86_64-penryn-O3-polly-before-vectorizer-detect-only | 12:47:45 lldb-x86_64-ubuntu-14.04-android | 12:29:26 lldb-x86_64-ubuntu-14.04-cmake | 12:13:06 lldb-amd64-ninja-freebsd11 | 12:05:28 sanitizer-x86_64-linux | 10:15:39 perf-x86_64-penryn-O3-polly-fast | 08:39:44 perf-x86_64-penryn-O3-polly-unprofitable | 08:25:30 clang-cmake-armv7-a15-selfhost-neon| 08:24:46 clang-native-arm-lnt | 08:21:09 clang-ppc64le-linux-lnt| 08:20:56 perf-x86_64-penryn-O3 | 08:20:16 perf-x86_64-penryn-O3-polly-parallel-fast | 08:16:14 sanitizer-ppc64be-linux| 08:09:31 clang-ppc64be-linux-lnt| 07:47:31 perf-x86_64-penryn-O3-polly-before-vectorizer-unprofitable | 07:37:23 clang-cmake-aarch64-quick | 07:31:34 clang-cmake-aarch64-full | 07:21:20 clang-cmake-aarch64-lld| 06:58:21 clang-ppc64le-linux-multistage | 06:04:07 perf-x86_64-penryn-O3-polly| 05:50:18 clang-cuda-build | 05:42:18 clang-cmake-thumbv7-a15-full-sh| 04:43:57 clang-x64-ninja-win7 | 04:37:48 lld-x86_64-win7| 04:18:03 clang-bpf-build| 04:16:21 clang-x86_64-linux-selfhost-modules-2 | 04:08:21 clang-x86_64-linux-selfhost-modules| 04:03:47 sanitizer-ppc64le-linux| 03:43:46 sanitizer-windows | 03:39:27 lldb-windows7-android | 03:32:00 clang-lld-x86_64-2stage| 03:30:16 clang-cmake-armv7-a15-selfhost | 03:27:20 clang-3stage-ubuntu| 03:14:45 clang-with-lto-ubuntu | 03:13:44 lldb-amd64-ninja-netbsd7 | 03:09:37 sanitizer-x86_64-linux-fuzzer | 02:53:36 clang-cmake-armv7-a15-full | 02:47:23 clang-s390x-linux | 02:38:53 clang-x86_64-debian-fast | 02:22:52 sanitizer-x86_64-linux-autoconf| 02:21:46 clang-cmake-armv7-a15 | 02:21:34 libcxx-libcxxabi-singlethreaded-x86_64-linux-debian| 02:17:37 libcxx-libcxxabi-libunwind-x86_64-linux-debian | 02:17:24 llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast | 02:06:15 clang-ppc64be-linux-multistage | 02:05:41 polly-amd64-linux | 02:01:35 clang-cmake-aarch64-39vma | 01:59:50 clang-cmake-thumbv7-a15| 01:59:47 clang-x86_64-linux-abi-test| 01:57:30 libcxx-libcxxabi-x86_64-linux-ubuntu-gcc49-cxx11 | 01:53:02 clang-ppc64le-linux| 01:43:38 clang-ppc64be-linux| 01:43:05 clang-cmake-aarch64-42vma | 01:42:44 llvm-avr-linux | 01:35:32 libcxx-libcxxabi-libunwind-ar
[Lldb-commits] Buildbot numbers for the week of 01/08/2017 - 01/14/2017
Hello everyone, Below are some buildbot numbers for the last week of 01/08/2017 - 01/14/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 +- clang-ppc64le-linux-multistage | 95:35:45 libcxx-libcxxabi-libunwind-x86_64-linux-debian | 57:47:59 libcxx-libcxxabi-x86_64-linux-debian | 54:04:34 libcxx-libcxxabi-singlethreaded-x86_64-linux-debian| 53:50:01 libcxx-libcxxabi-x86_64-linux-debian-noexceptions | 53:07:16 polly-arm-linux| 52:52:43 llvm-mips-linux| 45:18:31 sanitizer-windows | 41:58:29 sanitizer-ppc64be-linux| 24:58:09 clang-ppc64be-linux| 24:56:43 clang-ppc64le-linux| 24:06:06 sanitizer-x86_64-linux | 24:00:52 clang-cuda-build | 22:28:10 sanitizer-x86_64-linux-fast| 20:48:03 sanitizer-x86_64-linux-autoconf| 19:01:54 sanitizer-x86_64-linux-bootstrap | 16:33:09 lldb-windows7-android | 14:30:25 perf-x86_64-penryn-O3-polly-before-vectorizer | 14:27:40 clang-native-aarch64-full | 12:55:24 clang-lld-x86_64-2stage| 10:34:57 clang-cmake-aarch64-42vma | 09:21:42 clang-with-lto-ubuntu | 08:47:14 clang-with-thin-lto-ubuntu | 08:45:48 clang-cmake-aarch64-full | 07:12:49 perf-x86_64-penryn-O3-polly| 07:05:43 perf-x86_64-penryn-O3-polly-fast | 07:05:11 perf-x86_64-penryn-O3 | 07:01:52 clang-3stage-ubuntu| 06:40:51 clang-cmake-armv7-a15-full | 06:06:37 lld-x86_64-win7| 05:45:50 lld-x86_64-freebsd | 05:39:43 lld-x86_64-darwin13| 05:39:39 clang-x86-windows-msvc2015 | 04:28:04 clang-x64-ninja-win7 | 04:27:58 libomp-clang-ppc64le-linux-debian | 04:26:10 perf-x86_64-penryn-O3-polly-before-vectorizer-unprofitable | 04:12:51 perf-x86_64-penryn-O3-polly-parallel-fast | 04:04:10 clang-hexagon-elf | 03:57:47 lldb-x86_64-ubuntu-14.04-android | 03:44:24 llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast | 03:40:48 sanitizer-ppc64le-linux| 03:38:42 clang-cmake-armv7-a15-selfhost-neon| 03:03:49 clang-x86_64-debian-fast | 02:47:49 perf-x86_64-penryn-O3-polly-unprofitable | 02:45:19 lldb-x86_64-ubuntu-14.04-buildserver | 02:23:53 clang-x86_64-linux-abi-test| 02:21:18 clang-ppc64le-linux-lnt| 02:20:23 libcxx-libcxxabi-x86_64-linux-ubuntu-cxx03 | 02:07:34 lldb-amd64-ninja-netbsd7 | 02:05:15 lldb-x86_64-ubuntu-14.04-cmake | 01:44:11 llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast | 01:42:15 lldb-x86_64-darwin-13.4| 01:40:07 llvm-avr-linux | 01:37:49 clang-s390x-linux | 01:35:04 polly-amd64-linux | 01:23:08 libcxx-libcxxabi-libunwind-arm-linux | 01:21:15 libcxx-libcxxabi-libunwind-arm-linux-noexceptions | 01:21:11 lldb-amd64-ninja-freebsd11 | 01:19:58 clang-cmake-armv7-a15-selfhost | 01:19:09 clang-cmake-armv7-a15