[Lldb-commits] [lldb] r318039 - Revert "[lldb] Use OrcMCJITReplacement rather than MCJIT as the underlying JIT for LLDB"

2017-11-13 Thread Pavel Labath via lldb-commits
Author: labath
Date: Mon Nov 13 06:03:17 2017
New Revision: 318039

URL: http://llvm.org/viewvc/llvm-project?rev=318039&view=rev
Log:
Revert "[lldb] Use OrcMCJITReplacement rather than MCJIT as the underlying JIT 
for LLDB"

This commit really did not introduce any functional changes (for most
people) but it turns out it's not for the reason we thought it was.

The reason wasn't that Orc is a perfect drop-in replacement for MCJIT,
but it was because we were never using Orc in the first place, as it was
not initialized.

Orc's initialization relies on a global constructor in the LLVMOrcJIT.a.
Since this archive does not expose any symbols referenced from other
object files, it does not get linked into liblldb when linking against
llvm components statically. However, in an LLVM_LINK_LLVM_DYLIB=On
build, LLVMOrcJit.a is linked into libLLVM.so using --whole-archive, so
the global constructor does end up firing.

The result of using Orc jit is pr34194, where lldb fails to evaluate
even very simple expressions. This bug can be reproduced in
non-LLVM_LINK_LLVM_DYLIB builds by making sure Orc jit is linked into
liblldb, for example by #including
llvm/ExecutionEngine/OrcMCJITReplacement.h in IRExecutionUnit.cpp (and
adding OrcJIT as a dependency to the relevant CMakeLists.txt file). The
bug reproduces (at least) on linux and osx.

The root cause of the bug seems to be related to relocation processing.
It seems Orc processes relocations earlier than the system it is
replacing. This means the relocation processing happens before we have
had a chance to remap section load addresses to reflect their address in
the target process memory, so they end up pointing to locations in the
lldb's address space instead.

I am not sure whether this is a bug in Orc jit, or in how we are using
it from lldb, but in any case it is preventing us from using Orc right
now. Reverting this fixes LLVM_LINK_LLVM_DYLIB build, and makes it clear
that we are in fact *not* using Orc, and we never really were.

This reverts commit r279327.

Modified:
lldb/trunk/source/Expression/IRExecutionUnit.cpp

Modified: lldb/trunk/source/Expression/IRExecutionUnit.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/IRExecutionUnit.cpp?rev=318039&r1=318038&r2=318039&view=diff
==
--- lldb/trunk/source/Expression/IRExecutionUnit.cpp (original)
+++ lldb/trunk/source/Expression/IRExecutionUnit.cpp Mon Nov 13 06:03:17 2017
@@ -277,8 +277,7 @@ void IRExecutionUnit::GetRunnableInfo(St
   .setRelocationModel(relocModel)
   .setMCJITMemoryManager(
   std::unique_ptr(new MemoryManager(*this)))
-  .setOptLevel(llvm::CodeGenOpt::Less)
-  .setUseOrcMCJITReplacement(true);
+  .setOptLevel(llvm::CodeGenOpt::Less);
 
   llvm::StringRef mArch;
   llvm::StringRef mCPU;


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


[Lldb-commits] [lldb] r318040 - CompilerType: Add ability to retrieve an integral template argument

2017-11-13 Thread Pavel Labath via lldb-commits
Author: labath
Date: Mon Nov 13 06:26:21 2017
New Revision: 318040

URL: http://llvm.org/viewvc/llvm-project?rev=318040&view=rev
Log:
CompilerType: Add ability to retrieve an integral template argument

Summary:
Despite it's name, GetTemplateArgument was only really working for Type
template arguments. This adds the ability to retrieve integral arguments
as well (which I've needed for the std::bitset data formatter).

I've done this by splitting the function into three pieces. The idea is
that one first calls GetTemplateArgumentKind (first function) to
determine the what kind of a parameter this is. Based on that, one can
then use specialized functions to retrieve the correct value. Currently,
I only implement two of these: GetTypeTemplateArgument and
GetIntegralTemplateArgument.

Reviewers: jingham, clayborg

Subscribers: lldb-commits

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

Modified:
lldb/trunk/include/lldb/Symbol/ClangASTContext.h
lldb/trunk/include/lldb/Symbol/CompilerType.h
lldb/trunk/include/lldb/Symbol/GoASTContext.h
lldb/trunk/include/lldb/Symbol/JavaASTContext.h
lldb/trunk/include/lldb/Symbol/OCamlASTContext.h
lldb/trunk/include/lldb/Symbol/TypeSystem.h
lldb/trunk/include/lldb/lldb-enumerations.h
lldb/trunk/source/API/SBType.cpp
lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.cpp
lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxInitializerList.cpp
lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxList.cpp
lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp
lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp
lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp
lldb/trunk/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp
lldb/trunk/source/Symbol/ClangASTContext.cpp
lldb/trunk/source/Symbol/CompilerType.cpp
lldb/trunk/source/Symbol/JavaASTContext.cpp
lldb/trunk/source/Symbol/TypeSystem.cpp
lldb/trunk/unittests/Symbol/TestClangASTContext.cpp

Modified: lldb/trunk/include/lldb/Symbol/ClangASTContext.h
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/ClangASTContext.h?rev=318040&r1=318039&r2=318040&view=diff
==
--- lldb/trunk/include/lldb/Symbol/ClangASTContext.h (original)
+++ lldb/trunk/include/lldb/Symbol/ClangASTContext.h Mon Nov 13 06:26:21 2017
@@ -782,9 +782,14 @@ public:
 
   size_t GetNumTemplateArguments(lldb::opaque_compiler_type_t type) override;
 
-  CompilerType GetTemplateArgument(lldb::opaque_compiler_type_t type,
-   size_t idx,
-   lldb::TemplateArgumentKind &kind) override;
+  lldb::TemplateArgumentKind
+  GetTemplateArgumentKind(lldb::opaque_compiler_type_t type,
+  size_t idx) override;
+  CompilerType GetTypeTemplateArgument(lldb::opaque_compiler_type_t type,
+   size_t idx) override;
+  std::pair
+  GetIntegralTemplateArgument(lldb::opaque_compiler_type_t type,
+  size_t idx) override;
 
   CompilerType GetTypeForFormatters(void *type) override;
 
@@ -971,6 +976,9 @@ public:
 return m_origins;
   }
 protected:
+  const clang::ClassTemplateSpecializationDecl *
+  GetAsTemplateSpecialization(lldb::opaque_compiler_type_t type);
+
   //--
   // Classes that inherit from ClangASTContext can see and modify these
   //--

Modified: lldb/trunk/include/lldb/Symbol/CompilerType.h
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/CompilerType.h?rev=318040&r1=318039&r2=318040&view=diff
==
--- lldb/trunk/include/lldb/Symbol/CompilerType.h (original)
+++ lldb/trunk/include/lldb/Symbol/CompilerType.h Mon Nov 13 06:26:21 2017
@@ -365,8 +365,12 @@ public:
 
   size_t GetNumTemplateArguments() const;
 
-  CompilerType GetTemplateArgument(size_t idx,
-   lldb::TemplateArgumentKind &kind) const;
+  lldb::TemplateArgumentKind GetTemplateArgumentKind(size_t idx) const;
+  CompilerType GetTypeTemplateArgument(size_t idx) const;
+
+  // Returns the value of the template argument and its type. In case the
+  // argument is not found, returns an invalid CompilerType.
+  std::pair GetIntegralTemplateArgument(size_t 
idx) const;
 
   CompilerType GetTypeForFormatters() const;
 

Modified: lldb/trunk/include/lldb/Symbol/GoASTContext.h
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/GoASTContext.h?rev=318040&r1=318039&r2=318040&view=diff
==
--- lldb/trunk/include/lldb/Symbol/GoASTContext.h (original)
+++ lldb/trunk/include/lldb/Symbol/GoASTContext.h Mon Nov 13 06:26:21 2017
@

[Lldb-commits] [PATCH] D39844: CompilerType: Add ability to retrieve an integral template argument

2017-11-13 Thread Pavel Labath via Phabricator via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL318040: CompilerType: Add ability to retrieve an integral 
template argument (authored by labath).

Repository:
  rL LLVM

https://reviews.llvm.org/D39844

Files:
  lldb/trunk/include/lldb/Symbol/ClangASTContext.h
  lldb/trunk/include/lldb/Symbol/CompilerType.h
  lldb/trunk/include/lldb/Symbol/GoASTContext.h
  lldb/trunk/include/lldb/Symbol/JavaASTContext.h
  lldb/trunk/include/lldb/Symbol/OCamlASTContext.h
  lldb/trunk/include/lldb/Symbol/TypeSystem.h
  lldb/trunk/include/lldb/lldb-enumerations.h
  lldb/trunk/source/API/SBType.cpp
  lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.cpp
  lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxInitializerList.cpp
  lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxList.cpp
  lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp
  lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp
  lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp
  lldb/trunk/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp
  lldb/trunk/source/Symbol/ClangASTContext.cpp
  lldb/trunk/source/Symbol/CompilerType.cpp
  lldb/trunk/source/Symbol/JavaASTContext.cpp
  lldb/trunk/source/Symbol/TypeSystem.cpp
  lldb/trunk/unittests/Symbol/TestClangASTContext.cpp

Index: lldb/trunk/unittests/Symbol/TestClangASTContext.cpp
===
--- lldb/trunk/unittests/Symbol/TestClangASTContext.cpp
+++ lldb/trunk/unittests/Symbol/TestClangASTContext.cpp
@@ -406,18 +406,28 @@
   type, "foo_def",
   CompilerDeclContext(m_ast.get(), m_ast->GetTranslationUnitDecl()));
 
+  CompilerType auto_type(m_ast->getASTContext(),
+ m_ast->getASTContext()->getAutoType(
+ ClangUtil::GetCanonicalQualType(typedef_type),
+ clang::AutoTypeKeyword::Auto, false));
+
   CompilerType int_type(m_ast->getASTContext(), m_ast->getASTContext()->IntTy);
-  for(CompilerType t: { type, typedef_type }) {
+  for(CompilerType t: { type, typedef_type, auto_type }) {
 SCOPED_TRACE(t.GetTypeName().AsCString());
-TemplateArgumentKind kind;
 
-CompilerType arg =
-m_ast->GetTemplateArgument(t.GetOpaqueQualType(), 0, kind);
-EXPECT_EQ(kind, eTemplateArgumentKindType);
-EXPECT_EQ(arg, int_type);
-
-arg = m_ast->GetTemplateArgument(t.GetOpaqueQualType(), 1, kind);
-EXPECT_EQ(kind, eTemplateArgumentKindIntegral);
-EXPECT_EQ(arg, int_type);
+EXPECT_EQ(m_ast->GetTemplateArgumentKind(t.GetOpaqueQualType(), 0),
+  eTemplateArgumentKindType);
+EXPECT_EQ(m_ast->GetTypeTemplateArgument(t.GetOpaqueQualType(), 0),
+  int_type);
+auto p = m_ast->GetIntegralTemplateArgument(t.GetOpaqueQualType(), 0);
+EXPECT_EQ(p.second, CompilerType());
+
+EXPECT_EQ(m_ast->GetTemplateArgumentKind(t.GetOpaqueQualType(), 1),
+  eTemplateArgumentKindIntegral);
+EXPECT_EQ(m_ast->GetTypeTemplateArgument(t.GetOpaqueQualType(), 1),
+  CompilerType());
+p = m_ast->GetIntegralTemplateArgument(t.GetOpaqueQualType(), 1);
+EXPECT_EQ(p.first, llvm::APSInt(47));
+EXPECT_EQ(p.second, int_type);
   }
 }
Index: lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp
===
--- lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp
+++ lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp
@@ -290,8 +290,7 @@
   CompilerType type = valobj_sp->GetCompilerType();
   if (!type.IsValid() || type.GetNumTemplateArguments() == 0)
 return nullptr;
-  TemplateArgumentKind kind;
-  CompilerType arg_type = type.GetTemplateArgument(0, kind);
+  CompilerType arg_type = type.GetTypeTemplateArgument(0);
   if (arg_type.GetTypeName() == ConstString("bool"))
 return new LibcxxVectorBoolSyntheticFrontEnd(valobj_sp);
   return new LibcxxStdVectorSyntheticFrontEnd(valobj_sp);
Index: lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp
===
--- lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp
+++ lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp
@@ -121,11 +121,10 @@
 if (!first_sp)
   return nullptr;
 m_element_type = first_sp->GetCompilerType();
-lldb::TemplateArgumentKind kind;
-m_element_type = m_element_type.GetTemplateArgument(0, kind);
+m_element_type = m_element_type.GetTypeTemplateArgument(0);
 m_element_type = m_element_type.GetPointeeType();
 m_node_type = m_element_type;
-m_element_type = m_element_type.GetTemplateArgument(0, kind);
+m_element_type = m_element_type.GetTypeTemplateArgument(0);
 std::string name;
 m_element_type =
 m_element_type.GetFieldAtIndex(0, name, nullptr, nullptr, nullptr);
Index: lldb/trunk/so

[Lldb-commits] [PATCH] D39896: Remove last Host usage from ArchSpec

2017-11-13 Thread Pavel Labath via Phabricator via lldb-commits
labath added a comment.

If I understand correctly, everyone agrees with this change, so I will commit 
it soon(ish). Below are my thoughs on some of the things said in this thread.

@zturner wrote:

> Super awesome. When you do move it to Utility, can you run the deps python 
> script to see if any cmake dependencies can be updated?


The only change necessary was to *add* Utility as a dependency of the 
ArchitectureArm plugin, which did not depend (directly) on Utility before this.

In https://reviews.llvm.org/D39896#922381, @probinson wrote:

> Drive by comment:
>
> Triple.h is in ADT; Triple.cpp is in Support.  I agree it belongs in Support, 
> and I'm not sure why it's schizo like that.


That's because there is no `llvm/lib/ADT`, and there couldn't be one in the 
present form because of all the mutual dependencies between ADT and Support 
headers. So all of the ADT cpp files live in Support, but it's not so glaringly 
obvious as most of ADT is header-only. Triple is one of few headers that 
actually has a cpp file. (That said, I can see some reasoning behind it being 
in ADT, but I do think it would look better in Support.)

> Note, Greg and I used to argue about the strategy for lldb-server.  My notion 
> was on modern systems the actual file size difference between an lldb-server 
> that used all of lldb.framework, and one that could use a cut down library 
> was really not all that important.  If you're making a stub for an hard 
> embedded system, you probably aren't going to use lldb-server, you'll use a 
> much smaller gdb-protocol stub, and we didn't really have the intent to 
> provide that functionality.  So lldb server as intended for things like 
> phones etc, where "small" means small in modern terms, not "a kilobyte 
> matters" type small.

In our distribution model, we copy the lldb-server to the phone the first time 
you start a debug session, so size is still important to us (we're not counting 
every kilobyte, but a megabyte more or less matters). liblldb is currently ~61 
MB, while lldb-server (x86_64) is 9.6 (less, when you compile with -Os). 
Initially, the two numbers were nearly equal. Right now we're mostly happy with 
the size (although we wouldn't mind it being smaller), so size is not my 
primary motivation here.

In https://reviews.llvm.org/D39896#922134, @zturner wrote:

> I'd be open to having another organizational component that isn't Utility.  
> But as Jim said, there isn't a critical mass of stuff yet in Utility to 
> figure out where it makes sense to draw the line.
>
> In all honesty, that second component might just end up being "Core" again, 
> if enough stuff can be moved out of Core that it doesn't have to depend on 
> Symbol, Host, Interpreter, Breakpoint, etc.


I agree. At one point in not too distant future we will need to sit down and 
figure out how to split up Utility (otherwise, the layering problem can be 
vacuously "solved" by moving everything into a single layer). I don't think it 
will be easy though, as there is a natural tendency for the lowest layers of 
anything to become a collection of random unrelated tidbits (which is what 
happened to llvm support).

My ideas for the next steps are roughly as follows:

- move ProcessInfo class and friends to Utility or Host. This is so that the 
"get me the list of processes on this machine" functionality can work without 
including Process.h
- move the symbol-finding code from Host to Platform -- most of this is not 
host- but target-specific. E.g. the linux way of finding symbols could easily 
work for remote debugging from other OSes, if you had a suitable sysroot copied 
or network-mounted.
- move RegisterValue to Utility -- useful in lldb-server, unlike a lot of the 
stuff in Core.


https://reviews.llvm.org/D39896



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


[Lldb-commits] [lldb] r318046 - Remove last Host usage from ArchSpec

2017-11-13 Thread Pavel Labath via lldb-commits
Author: labath
Date: Mon Nov 13 07:57:20 2017
New Revision: 318046

URL: http://llvm.org/viewvc/llvm-project?rev=318046&view=rev
Log:
Remove last Host usage from ArchSpec

Summary:
In D39387, I was quick to jump to conclusion that ArchSpec has no
external dependencies. It turns there still was one call to
HostInfo::GetArchitecture left -- for implementing the "systemArch32"
architecture and friends.

Since GetAugmentedArchSpec is the place we handle these "incomplete"
triples that don't specify os or vendor and "systemArch" looks very much
like an incomplete triple, I move its handling there.

After this ArchSpec *really* does not have external dependencies, and
I'll move it to the Utility module as a follow-up.

Reviewers: zturner, clayborg, jingham

Subscribers: lldb-commits

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

Modified:
lldb/trunk/include/lldb/Host/HostInfoBase.h
lldb/trunk/source/Core/ArchSpec.cpp
lldb/trunk/source/Host/common/HostInfoBase.cpp
lldb/trunk/source/Target/Platform.cpp
lldb/trunk/unittests/Host/HostInfoTest.cpp

Modified: lldb/trunk/include/lldb/Host/HostInfoBase.h
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/HostInfoBase.h?rev=318046&r1=318045&r2=318046&view=diff
==
--- lldb/trunk/include/lldb/Host/HostInfoBase.h (original)
+++ lldb/trunk/include/lldb/Host/HostInfoBase.h Mon Nov 13 07:57:20 2017
@@ -61,6 +61,8 @@ public:
   static const ArchSpec &
   GetArchitecture(ArchitectureKind arch_kind = eArchKindDefault);
 
+  static llvm::Optional 
ParseArchitectureKind(llvm::StringRef kind);
+
   //--
   /// Find a resource files that are related to LLDB.
   ///

Modified: lldb/trunk/source/Core/ArchSpec.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ArchSpec.cpp?rev=318046&r1=318045&r2=318046&view=diff
==
--- lldb/trunk/source/Core/ArchSpec.cpp (original)
+++ lldb/trunk/source/Core/ArchSpec.cpp Mon Nov 13 07:57:20 2017
@@ -9,7 +9,6 @@
 
 #include "lldb/Core/ArchSpec.h"
 
-#include "lldb/Host/HostInfo.h"
 #include "lldb/Utility/NameMatches.h"
 #include "lldb/Utility/Stream.h" // for Stream
 #include "lldb/Utility/StringList.h"
@@ -874,17 +873,7 @@ bool ArchSpec::SetTriple(llvm::StringRef
   if (ParseMachCPUDashSubtypeTriple(triple, *this))
 return true;
 
-  if (triple.startswith(LLDB_ARCH_DEFAULT)) {
-// Special case for the current host default architectures...
-if (triple.equals(LLDB_ARCH_DEFAULT_32BIT))
-  *this = HostInfo::GetArchitecture(HostInfo::eArchKind32);
-else if (triple.equals(LLDB_ARCH_DEFAULT_64BIT))
-  *this = HostInfo::GetArchitecture(HostInfo::eArchKind64);
-else if (triple.equals(LLDB_ARCH_DEFAULT))
-  *this = HostInfo::GetArchitecture(HostInfo::eArchKindDefault);
-  } else {
-SetTriple(llvm::Triple(llvm::Triple::normalize(triple)));
-  }
+  SetTriple(llvm::Triple(llvm::Triple::normalize(triple)));
   return IsValid();
 }
 

Modified: lldb/trunk/source/Host/common/HostInfoBase.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/HostInfoBase.cpp?rev=318046&r1=318045&r2=318046&view=diff
==
--- lldb/trunk/source/Host/common/HostInfoBase.cpp (original)
+++ lldb/trunk/source/Host/common/HostInfoBase.cpp Mon Nov 13 07:57:20 2017
@@ -103,6 +103,14 @@ const ArchSpec &HostInfoBase::GetArchite
   : g_fields->m_host_arch_32;
 }
 
+llvm::Optional 
HostInfoBase::ParseArchitectureKind(llvm::StringRef kind) {
+  return llvm::StringSwitch>(kind)
+  .Case(LLDB_ARCH_DEFAULT, eArchKindDefault)
+  .Case(LLDB_ARCH_DEFAULT_32BIT, eArchKind32)
+  .Case(LLDB_ARCH_DEFAULT_64BIT, eArchKind64)
+  .Default(llvm::None);
+}
+
 bool HostInfoBase::GetLLDBPath(lldb::PathType type, FileSpec &file_spec) {
   file_spec.Clear();
 
@@ -258,6 +266,9 @@ ArchSpec HostInfoBase::GetAugmentedArchS
   if (!ArchSpec::ContainsOnlyArch(normalized_triple))
 return ArchSpec(triple);
 
+  if (auto kind = HostInfo::ParseArchitectureKind(triple))
+return HostInfo::GetArchitecture(*kind);
+
   llvm::Triple host_triple(llvm::sys::getDefaultTargetTriple());
 
   if (normalized_triple.getVendorName().empty())

Modified: lldb/trunk/source/Target/Platform.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Platform.cpp?rev=318046&r1=318045&r2=318046&view=diff
==
--- lldb/trunk/source/Target/Platform.cpp (original)
+++ lldb/trunk/source/Target/Platform.cpp Mon Nov 13 07:57:20 2017
@@ -976,6 +976,9 @@ ArchSpec Platform::GetAugmentedArchSpec(
   if (!ArchSpec::ContainsOnlyArch(normalized_triple))
 return ArchSpec(triple);
 
+  if (auto kind =

[Lldb-commits] [PATCH] D39896: Remove last Host usage from ArchSpec

2017-11-13 Thread Pavel Labath via Phabricator via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL318046: Remove last Host usage from ArchSpec (authored by 
labath).

Changed prior to commit:
  https://reviews.llvm.org/D39896?vs=122416&id=122651#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D39896

Files:
  lldb/trunk/include/lldb/Host/HostInfoBase.h
  lldb/trunk/source/Core/ArchSpec.cpp
  lldb/trunk/source/Host/common/HostInfoBase.cpp
  lldb/trunk/source/Target/Platform.cpp
  lldb/trunk/unittests/Host/HostInfoTest.cpp

Index: lldb/trunk/unittests/Host/HostInfoTest.cpp
===
--- lldb/trunk/unittests/Host/HostInfoTest.cpp
+++ lldb/trunk/unittests/Host/HostInfoTest.cpp
@@ -1,4 +1,4 @@
-//===-- HostTest.cpp *- C++ -*-===//
+//===-- HostInfoTest.cpp *- C++ -*-===//
 //
 // The LLVM Compiler Infrastructure
 //
@@ -8,6 +8,7 @@
 //===--===//
 
 #include "lldb/Host/HostInfo.h"
+#include "lldb/lldb-defines.h"
 #include "gtest/gtest.h"
 
 using namespace lldb_private;
@@ -37,4 +38,8 @@
   EXPECT_EQ(spec.GetTriple().getOS(), triple.getOS());
   EXPECT_EQ(spec.GetTriple().getVendor(), triple.getVendor());
   EXPECT_EQ(spec.GetTriple().getEnvironment(), triple.getEnvironment());
+
+  // Test LLDB_ARCH_DEFAULT
+  EXPECT_EQ(HostInfo::GetAugmentedArchSpec(LLDB_ARCH_DEFAULT).GetTriple(),
+HostInfo::GetArchitecture(HostInfo::eArchKindDefault).GetTriple());
 }
Index: lldb/trunk/source/Host/common/HostInfoBase.cpp
===
--- lldb/trunk/source/Host/common/HostInfoBase.cpp
+++ lldb/trunk/source/Host/common/HostInfoBase.cpp
@@ -103,6 +103,14 @@
   : g_fields->m_host_arch_32;
 }
 
+llvm::Optional HostInfoBase::ParseArchitectureKind(llvm::StringRef kind) {
+  return llvm::StringSwitch>(kind)
+  .Case(LLDB_ARCH_DEFAULT, eArchKindDefault)
+  .Case(LLDB_ARCH_DEFAULT_32BIT, eArchKind32)
+  .Case(LLDB_ARCH_DEFAULT_64BIT, eArchKind64)
+  .Default(llvm::None);
+}
+
 bool HostInfoBase::GetLLDBPath(lldb::PathType type, FileSpec &file_spec) {
   file_spec.Clear();
 
@@ -258,6 +266,9 @@
   if (!ArchSpec::ContainsOnlyArch(normalized_triple))
 return ArchSpec(triple);
 
+  if (auto kind = HostInfo::ParseArchitectureKind(triple))
+return HostInfo::GetArchitecture(*kind);
+
   llvm::Triple host_triple(llvm::sys::getDefaultTargetTriple());
 
   if (normalized_triple.getVendorName().empty())
Index: lldb/trunk/source/Core/ArchSpec.cpp
===
--- lldb/trunk/source/Core/ArchSpec.cpp
+++ lldb/trunk/source/Core/ArchSpec.cpp
@@ -9,7 +9,6 @@
 
 #include "lldb/Core/ArchSpec.h"
 
-#include "lldb/Host/HostInfo.h"
 #include "lldb/Utility/NameMatches.h"
 #include "lldb/Utility/Stream.h" // for Stream
 #include "lldb/Utility/StringList.h"
@@ -874,17 +873,7 @@
   if (ParseMachCPUDashSubtypeTriple(triple, *this))
 return true;
 
-  if (triple.startswith(LLDB_ARCH_DEFAULT)) {
-// Special case for the current host default architectures...
-if (triple.equals(LLDB_ARCH_DEFAULT_32BIT))
-  *this = HostInfo::GetArchitecture(HostInfo::eArchKind32);
-else if (triple.equals(LLDB_ARCH_DEFAULT_64BIT))
-  *this = HostInfo::GetArchitecture(HostInfo::eArchKind64);
-else if (triple.equals(LLDB_ARCH_DEFAULT))
-  *this = HostInfo::GetArchitecture(HostInfo::eArchKindDefault);
-  } else {
-SetTriple(llvm::Triple(llvm::Triple::normalize(triple)));
-  }
+  SetTriple(llvm::Triple(llvm::Triple::normalize(triple)));
   return IsValid();
 }
 
Index: lldb/trunk/source/Target/Platform.cpp
===
--- lldb/trunk/source/Target/Platform.cpp
+++ lldb/trunk/source/Target/Platform.cpp
@@ -976,6 +976,9 @@
   if (!ArchSpec::ContainsOnlyArch(normalized_triple))
 return ArchSpec(triple);
 
+  if (auto kind = HostInfo::ParseArchitectureKind(triple))
+return HostInfo::GetArchitecture(*kind);
+
   ArchSpec compatible_arch;
   ArchSpec raw_arch(triple);
   if (!IsCompatibleArchitecture(raw_arch, false, &compatible_arch))
Index: lldb/trunk/include/lldb/Host/HostInfoBase.h
===
--- lldb/trunk/include/lldb/Host/HostInfoBase.h
+++ lldb/trunk/include/lldb/Host/HostInfoBase.h
@@ -61,6 +61,8 @@
   static const ArchSpec &
   GetArchitecture(ArchitectureKind arch_kind = eArchKindDefault);
 
+  static llvm::Optional ParseArchitectureKind(llvm::StringRef kind);
+
   //--
   /// Find a resource files that are related to LLDB.
   ///
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-

[Lldb-commits] [lldb] r318052 - Fix netbsd, freebsd and osx builds for ArchSpec move

2017-11-13 Thread Pavel Labath via lldb-commits
Author: labath
Date: Mon Nov 13 08:47:37 2017
New Revision: 318052

URL: http://llvm.org/viewvc/llvm-project?rev=318052&view=rev
Log:
Fix netbsd, freebsd and osx builds for ArchSpec move

Modified:
lldb/trunk/include/lldb/Utility/ArchSpec.h
lldb/trunk/source/Host/macosx/Host.mm
lldb/trunk/source/Host/macosx/Symbols.cpp
lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleTVSimulator.cpp
lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.cpp
lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp
lldb/trunk/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.cpp
lldb/trunk/source/Plugins/Process/Darwin/NativeProcessDarwin.h
lldb/trunk/source/Plugins/Process/FreeBSD/RegisterContextPOSIX.h
lldb/trunk/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h
lldb/trunk/source/Plugins/Process/MacOSX-Kernel/ThreadKDP.cpp
lldb/trunk/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h
lldb/trunk/source/Plugins/Process/mach-core/ThreadMachCore.cpp
lldb/trunk/unittests/SymbolFile/PDB/SymbolFilePDBTests.cpp

Modified: lldb/trunk/include/lldb/Utility/ArchSpec.h
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/ArchSpec.h?rev=318052&r1=318051&r2=318052&view=diff
==
--- lldb/trunk/include/lldb/Utility/ArchSpec.h (original)
+++ lldb/trunk/include/lldb/Utility/ArchSpec.h Mon Nov 13 08:47:37 2017
@@ -23,7 +23,7 @@
 namespace lldb_private {
 
 //--
-/// @class ArchSpec ArchSpec.h "lldb/Core/ArchSpec.h"
+/// @class ArchSpec ArchSpec.h "lldb/Utility/ArchSpec.h"
 /// @brief An architecture specification class.
 ///
 /// A class designed to be created from a cpu type and subtype, a

Modified: lldb/trunk/source/Host/macosx/Host.mm
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/macosx/Host.mm?rev=318052&r1=318051&r2=318052&view=diff
==
--- lldb/trunk/source/Host/macosx/Host.mm (original)
+++ lldb/trunk/source/Host/macosx/Host.mm Mon Nov 13 08:47:37 2017
@@ -54,7 +54,6 @@
 #include 
 #include 
 
-#include "lldb/Core/ArchSpec.h"
 #include "lldb/Core/Communication.h"
 #include "lldb/Core/Module.h"
 #include "lldb/Core/ModuleSpec.h"
@@ -63,6 +62,7 @@
 #include "lldb/Host/ThreadLauncher.h"
 #include "lldb/Target/Platform.h"
 #include "lldb/Target/Process.h"
+#include "lldb/Utility/ArchSpec.h"
 #include "lldb/Utility/CleanUp.h"
 #include "lldb/Utility/DataBufferHeap.h"
 #include "lldb/Utility/DataExtractor.h"

Modified: lldb/trunk/source/Host/macosx/Symbols.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/macosx/Symbols.cpp?rev=318052&r1=318051&r2=318052&view=diff
==
--- lldb/trunk/source/Host/macosx/Symbols.cpp (original)
+++ lldb/trunk/source/Host/macosx/Symbols.cpp Mon Nov 13 08:47:37 2017
@@ -23,11 +23,11 @@
 #include "Host/macosx/cfcpp/CFCData.h"
 #include "Host/macosx/cfcpp/CFCReleaser.h"
 #include "Host/macosx/cfcpp/CFCString.h"
-#include "lldb/Core/ArchSpec.h"
 #include "lldb/Core/Module.h"
 #include "lldb/Core/ModuleSpec.h"
 #include "lldb/Host/Host.h"
 #include "lldb/Symbol/ObjectFile.h"
+#include "lldb/Utility/ArchSpec.h"
 #include "lldb/Utility/CleanUp.h"
 #include "lldb/Utility/DataBuffer.h"
 #include "lldb/Utility/DataExtractor.h"

Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleTVSimulator.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleTVSimulator.cpp?rev=318052&r1=318051&r2=318052&view=diff
==
--- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleTVSimulator.cpp 
(original)
+++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleTVSimulator.cpp Mon 
Nov 13 08:47:37 2017
@@ -14,7 +14,6 @@
 // Other libraries and framework includes
 // Project includes
 #include "lldb/Breakpoint/BreakpointLocation.h"
-#include "lldb/Core/ArchSpec.h"
 #include "lldb/Core/Module.h"
 #include "lldb/Core/ModuleList.h"
 #include "lldb/Core/ModuleSpec.h"
@@ -23,6 +22,7 @@
 #include "lldb/Host/HostInfo.h"
 #include "lldb/Target/Process.h"
 #include "lldb/Target/Target.h"
+#include "lldb/Utility/ArchSpec.h"
 #include "lldb/Utility/FileSpec.h"
 #include "lldb/Utility/Log.h"
 #include "lldb/Utility/Status.h"

Modified: 
lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.cpp?rev=318052&r1=318051&r2=318052&view=diff
==
--- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.cpp 
(original)
+++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformA

[Lldb-commits] [PATCH] D39578: Fix a couple of self-assignments using memcpy.

2017-11-13 Thread Don Hinton via Phabricator via lldb-commits
hintonda added a comment.

ping?


https://reviews.llvm.org/D39578



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


Re: [Lldb-commits] [lldb] r318039 - Revert "[lldb] Use OrcMCJITReplacement rather than MCJIT as the underlying JIT for LLDB"

2017-11-13 Thread Lang Hames via lldb-commits
Oops -- I thought I'd reverted this ages ago. Evidently not. Thanks Pavel!

-- Lang.

On Mon, Nov 13, 2017 at 6:03 AM, Pavel Labath via lldb-commits <
lldb-commits@lists.llvm.org> wrote:

> Author: labath
> Date: Mon Nov 13 06:03:17 2017
> New Revision: 318039
>
> URL: http://llvm.org/viewvc/llvm-project?rev=318039&view=rev
> Log:
> Revert "[lldb] Use OrcMCJITReplacement rather than MCJIT as the underlying
> JIT for LLDB"
>
> This commit really did not introduce any functional changes (for most
> people) but it turns out it's not for the reason we thought it was.
>
> The reason wasn't that Orc is a perfect drop-in replacement for MCJIT,
> but it was because we were never using Orc in the first place, as it was
> not initialized.
>
> Orc's initialization relies on a global constructor in the LLVMOrcJIT.a.
> Since this archive does not expose any symbols referenced from other
> object files, it does not get linked into liblldb when linking against
> llvm components statically. However, in an LLVM_LINK_LLVM_DYLIB=On
> build, LLVMOrcJit.a is linked into libLLVM.so using --whole-archive, so
> the global constructor does end up firing.
>
> The result of using Orc jit is pr34194, where lldb fails to evaluate
> even very simple expressions. This bug can be reproduced in
> non-LLVM_LINK_LLVM_DYLIB builds by making sure Orc jit is linked into
> liblldb, for example by #including
> llvm/ExecutionEngine/OrcMCJITReplacement.h in IRExecutionUnit.cpp (and
> adding OrcJIT as a dependency to the relevant CMakeLists.txt file). The
> bug reproduces (at least) on linux and osx.
>
> The root cause of the bug seems to be related to relocation processing.
> It seems Orc processes relocations earlier than the system it is
> replacing. This means the relocation processing happens before we have
> had a chance to remap section load addresses to reflect their address in
> the target process memory, so they end up pointing to locations in the
> lldb's address space instead.
>
> I am not sure whether this is a bug in Orc jit, or in how we are using
> it from lldb, but in any case it is preventing us from using Orc right
> now. Reverting this fixes LLVM_LINK_LLVM_DYLIB build, and makes it clear
> that we are in fact *not* using Orc, and we never really were.
>
> This reverts commit r279327.
>
> Modified:
> lldb/trunk/source/Expression/IRExecutionUnit.cpp
>
> Modified: lldb/trunk/source/Expression/IRExecutionUnit.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/
> Expression/IRExecutionUnit.cpp?rev=318039&r1=318038&r2=318039&view=diff
> 
> ==
> --- lldb/trunk/source/Expression/IRExecutionUnit.cpp (original)
> +++ lldb/trunk/source/Expression/IRExecutionUnit.cpp Mon Nov 13 06:03:17
> 2017
> @@ -277,8 +277,7 @@ void IRExecutionUnit::GetRunnableInfo(St
>.setRelocationModel(relocModel)
>.setMCJITMemoryManager(
>std::unique_ptr(new MemoryManager(*this)))
> -  .setOptLevel(llvm::CodeGenOpt::Less)
> -  .setUseOrcMCJITReplacement(true);
> +  .setOptLevel(llvm::CodeGenOpt::Less);
>
>llvm::StringRef mArch;
>llvm::StringRef mCPU;
>
>
> ___
> lldb-commits mailing list
> lldb-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


Re: [Lldb-commits] [lldb] r318039 - Revert "[lldb] Use OrcMCJITReplacement rather than MCJIT as the underlying JIT for LLDB"

2017-11-13 Thread Lang Hames via lldb-commits
For the curious: The relocation issue is one of two known incompatibilities
between OrcMCJIT and MCJIT. I'm working on an ORC refactor that should
eliminate both, at which point we can try this out again (with
OrcMCJITReplacement properly #included this time).

Cheers,
Lang.

On Mon, Nov 13, 2017 at 6:03 AM, Pavel Labath via lldb-commits <
lldb-commits@lists.llvm.org> wrote:

> Author: labath
> Date: Mon Nov 13 06:03:17 2017
> New Revision: 318039
>
> URL: http://llvm.org/viewvc/llvm-project?rev=318039&view=rev
> Log:
> Revert "[lldb] Use OrcMCJITReplacement rather than MCJIT as the underlying
> JIT for LLDB"
>
> This commit really did not introduce any functional changes (for most
> people) but it turns out it's not for the reason we thought it was.
>
> The reason wasn't that Orc is a perfect drop-in replacement for MCJIT,
> but it was because we were never using Orc in the first place, as it was
> not initialized.
>
> Orc's initialization relies on a global constructor in the LLVMOrcJIT.a.
> Since this archive does not expose any symbols referenced from other
> object files, it does not get linked into liblldb when linking against
> llvm components statically. However, in an LLVM_LINK_LLVM_DYLIB=On
> build, LLVMOrcJit.a is linked into libLLVM.so using --whole-archive, so
> the global constructor does end up firing.
>
> The result of using Orc jit is pr34194, where lldb fails to evaluate
> even very simple expressions. This bug can be reproduced in
> non-LLVM_LINK_LLVM_DYLIB builds by making sure Orc jit is linked into
> liblldb, for example by #including
> llvm/ExecutionEngine/OrcMCJITReplacement.h in IRExecutionUnit.cpp (and
> adding OrcJIT as a dependency to the relevant CMakeLists.txt file). The
> bug reproduces (at least) on linux and osx.
>
> The root cause of the bug seems to be related to relocation processing.
> It seems Orc processes relocations earlier than the system it is
> replacing. This means the relocation processing happens before we have
> had a chance to remap section load addresses to reflect their address in
> the target process memory, so they end up pointing to locations in the
> lldb's address space instead.
>
> I am not sure whether this is a bug in Orc jit, or in how we are using
> it from lldb, but in any case it is preventing us from using Orc right
> now. Reverting this fixes LLVM_LINK_LLVM_DYLIB build, and makes it clear
> that we are in fact *not* using Orc, and we never really were.
>
> This reverts commit r279327.
>
> Modified:
> lldb/trunk/source/Expression/IRExecutionUnit.cpp
>
> Modified: lldb/trunk/source/Expression/IRExecutionUnit.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/
> Expression/IRExecutionUnit.cpp?rev=318039&r1=318038&r2=318039&view=diff
> 
> ==
> --- lldb/trunk/source/Expression/IRExecutionUnit.cpp (original)
> +++ lldb/trunk/source/Expression/IRExecutionUnit.cpp Mon Nov 13 06:03:17
> 2017
> @@ -277,8 +277,7 @@ void IRExecutionUnit::GetRunnableInfo(St
>.setRelocationModel(relocModel)
>.setMCJITMemoryManager(
>std::unique_ptr(new MemoryManager(*this)))
> -  .setOptLevel(llvm::CodeGenOpt::Less)
> -  .setUseOrcMCJITReplacement(true);
> +  .setOptLevel(llvm::CodeGenOpt::Less);
>
>llvm::StringRef mArch;
>llvm::StringRef mCPU;
>
>
> ___
> lldb-commits mailing list
> lldb-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D39578: Fix a couple of self-assignments using memcpy.

2017-11-13 Thread Greg Clayton via Phabricator via lldb-commits
clayborg requested changes to this revision.
clayborg added a comment.
This revision now requires changes to proceed.

First change looks good. Second one we can probably avoid doing anything in 
Value::AppendDataToHostBuffer and return 0. No need to copy data over itself.




Comment at: source/Core/Value.cpp:146-147
 size_t Value::AppendDataToHostBuffer(const Value &rhs) {
+  // FIXME: What should we do if this == &rhs?
+  // If we allow, change s/memcpy/memmove/ below.
   size_t curr_size = m_data_buffer.GetByteSize();

Should probably return 0 if this == &rhs?


https://reviews.llvm.org/D39578



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


[Lldb-commits] [PATCH] D39966: Add a data formatter for libc++ std::bitset

2017-11-13 Thread Pavel Labath via Phabricator via lldb-commits
labath created this revision.
Herald added a subscriber: mgorny.
Herald added a reviewer: EricWF.

https://reviews.llvm.org/D39966

Files:
  
packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/bitset/Makefile
  
packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/bitset/TestDataFormatterLibcxxBitset.py
  
packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/bitset/main.cpp
  source/Plugins/Language/CPlusPlus/CMakeLists.txt
  source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
  source/Plugins/Language/CPlusPlus/LibCxx.h
  source/Plugins/Language/CPlusPlus/LibCxxBitset.cpp

Index: source/Plugins/Language/CPlusPlus/LibCxxBitset.cpp
===
--- /dev/null
+++ source/Plugins/Language/CPlusPlus/LibCxxBitset.cpp
@@ -0,0 +1,105 @@
+//===-- LibCxxBitset.cpp *- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===--===//
+
+#include "LibCxx.h"
+#include "lldb/DataFormatters/FormattersHelpers.h"
+#include "lldb/Symbol/ClangASTContext.h"
+#include "lldb/Target/Target.h"
+
+using namespace lldb;
+using namespace lldb_private;
+
+namespace {
+
+class BitsetFrontEnd : public SyntheticChildrenFrontEnd {
+public:
+  BitsetFrontEnd(ValueObject &valobj) : SyntheticChildrenFrontEnd(valobj) {
+Update();
+  }
+
+  size_t GetIndexOfChildWithName(const ConstString &name) override {
+return formatters::ExtractIndexFromString(name.GetCString());
+  }
+
+  bool MightHaveChildren() override { return true; }
+  bool Update() override;
+  size_t CalculateNumChildren() override { return m_elements.size(); }
+  ValueObjectSP GetChildAtIndex(size_t idx) override;
+
+private:
+  std::vector m_elements;
+  ValueObjectSP m_first;
+  ByteOrder m_byte_order;
+  uint8_t m_byte_size;
+  CompilerType m_bool_type;
+};
+} // namespace
+
+bool BitsetFrontEnd::Update() {
+  m_elements.clear();
+  m_first.reset();
+
+  TargetSP target_sp = m_backend.GetTargetSP();
+  if (!target_sp)
+return false;
+
+  m_byte_order = target_sp->GetArchitecture().GetByteOrder();
+  m_byte_size = target_sp->GetArchitecture().GetAddressByteSize();
+  size_t capping_size = target_sp->GetMaximumNumberOfChildrenToDisplay();
+
+  size_t size = 0;
+  auto value_and_type =
+  m_backend.GetCompilerType().GetIntegralTemplateArgument(0);
+  if (value_and_type.second)
+size = value_and_type.first.getLimitedValue(capping_size);
+
+  m_bool_type = m_backend.GetCompilerType().GetBasicTypeFromAST(eBasicTypeBool);
+  m_elements.assign(size, ValueObjectSP());
+
+  m_first = m_backend.GetChildMemberWithName(ConstString("__first_"), true);
+  return false;
+}
+
+ValueObjectSP BitsetFrontEnd::GetChildAtIndex(size_t idx) {
+  if (idx >= m_elements.size() || !m_first)
+return ValueObjectSP();
+
+  if (m_elements[idx])
+return m_elements[idx];
+
+  ExecutionContext ctx = m_backend.GetExecutionContextRef().Lock(false);
+  CompilerType type;
+  ValueObjectSP chunk;
+  // For small bitsets __first_ is not an array, but a plain size_t.
+  if (m_first->GetCompilerType().IsArrayType(&type, nullptr, nullptr))
+chunk = m_first->GetChildAtIndex(
+idx / type.GetBitSize(ctx.GetBestExecutionContextScope()), true);
+  else {
+type = m_first->GetCompilerType();
+chunk = m_first;
+  }
+  if (!type || !chunk)
+return ValueObjectSP();
+
+  size_t chunk_idx = idx % type.GetBitSize(ctx.GetBestExecutionContextScope());
+  uint8_t value = !!(chunk->GetValueAsUnsigned(0) & (uint64_t(1) << chunk_idx));
+  DataExtractor data(&value, sizeof(value), m_byte_order, m_byte_size);
+
+  m_elements[idx] = CreateValueObjectFromData(llvm::formatv("[{0}]", idx).str(),
+  data, ctx, m_bool_type);
+
+  return m_elements[idx];
+}
+
+SyntheticChildrenFrontEnd *formatters::LibcxxBitsetSyntheticFrontEndCreator(
+CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp) {
+  if (valobj_sp)
+return new BitsetFrontEnd(*valobj_sp);
+  return nullptr;
+}
Index: source/Plugins/Language/CPlusPlus/LibCxx.h
===
--- source/Plugins/Language/CPlusPlus/LibCxx.h
+++ source/Plugins/Language/CPlusPlus/LibCxx.h
@@ -92,6 +92,10 @@
   lldb::ByteOrder m_byte_order;
 };
 
+SyntheticChildrenFrontEnd *
+LibcxxBitsetSyntheticFrontEndCreator(CXXSyntheticChildren *,
+ lldb::ValueObjectSP);
+
 SyntheticChildrenFrontEnd *
 LibcxxSharedPtrSyntheticFrontEndCreator(CXXSyntheticChildren *,
 lldb::ValueObjectSP);
Index: source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
===

[Lldb-commits] [PATCH] D39967: Refactoring of MemoryWrite function

2017-11-13 Thread Tatyana Krasnukha via Phabricator via lldb-commits
tatyana-krasnukha created this revision.

Comments in this function didn't match code. Moved it in right place and 
grouped cases, that need only WriteMemoryPrivate call, at the top of the 
function.
Applied clang-format.


Repository:
  rL LLVM

https://reviews.llvm.org/D39967

Files:
  source/Target/Process.cpp

Index: source/Target/Process.cpp
===
--- source/Target/Process.cpp
+++ source/Target/Process.cpp
@@ -129,11 +129,13 @@
  nullptr, nullptr,
  "If true, breakpoints will be ignored during expression evaluation."},
 {"unwind-on-error-in-expressions", OptionValue::eTypeBoolean, true, true,
- nullptr, nullptr, "If true, errors in expression evaluation will unwind "
-   "the stack back to the state before the call."},
+ nullptr, nullptr,
+ "If true, errors in expression evaluation will unwind "
+ "the stack back to the state before the call."},
 {"python-os-plugin-path", OptionValue::eTypeFileSpec, false, true, nullptr,
- nullptr, "A path to a python OS plug-in module file that contains a "
-  "OperatingSystemPlugIn class."},
+ nullptr,
+ "A path to a python OS plug-in module file that contains a "
+ "OperatingSystemPlugIn class."},
 {"stop-on-sharedlibrary-events", OptionValue::eTypeBoolean, true, false,
  nullptr, nullptr,
  "If true, stop when a shared library is loaded or unloaded."},
@@ -142,8 +144,9 @@
 {"memory-cache-line-size", OptionValue::eTypeUInt64, false, 512, nullptr,
  nullptr, "The memory cache line size"},
 {"optimization-warnings", OptionValue::eTypeBoolean, false, true, nullptr,
- nullptr, "If true, warn when stopped in code that is optimized where "
-  "stepping and variable availability may not behave as expected."},
+ nullptr,
+ "If true, warn when stopped in code that is optimized where "
+ "stepping and variable availability may not behave as expected."},
 {nullptr, OptionValue::eTypeInvalid, false, 0, nullptr, nullptr, nullptr}};
 
 enum {
@@ -1203,8 +1206,7 @@
   process_sp->GetStatus(*stream);
   process_sp->GetThreadStatus(*stream, only_threads_with_stop_reason,
   start_frame, num_frames,
-  num_frames_with_source,
-  stop_format);
+  num_frames_with_source, stop_format);
   if (curr_thread_stop_info_sp) {
 lldb::addr_t crashing_address;
 ValueObjectSP valobj_sp = StopInfo::GetCrashingDereference(
@@ -1414,7 +1416,7 @@
 lldb::pid_t pid, bool exited,
 int signo,  // Zero for no signal
 int exit_status // Exit value of process if signal is zero
-) {
+) {
   Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PROCESS));
   if (log)
 log->Printf("Process::SetProcessExitStatus (pid=%" PRIu64
@@ -1741,7 +1743,8 @@
 
 const lldb::ABISP &Process::GetABI() {
   if (!m_abi_sp)
-m_abi_sp = ABI::FindPlugin(shared_from_this(), GetTarget().GetArchitecture());
+m_abi_sp =
+ABI::FindPlugin(shared_from_this(), GetTarget().GetArchitecture());
   return m_abi_sp;
 }
 
@@ -2423,65 +2426,64 @@
 
   BreakpointSiteList bp_sites_in_range;
 
-  if (m_breakpoint_site_list.FindInRange(addr, addr + size,
- bp_sites_in_range)) {
+  if (!m_breakpoint_site_list.FindInRange(addr, addr + size,
+  bp_sites_in_range) ||
+  bp_sites_in_range.IsEmpty()) {
+
 // No breakpoint sites overlap
-if (bp_sites_in_range.IsEmpty())
-  return WriteMemoryPrivate(addr, buf, size, error);
-else {
-  const uint8_t *ubuf = (const uint8_t *)buf;
-  uint64_t bytes_written = 0;
+return WriteMemoryPrivate(addr, buf, size, error);
+  }
 
-  bp_sites_in_range.ForEach([this, addr, size, &bytes_written, &ubuf,
- &error](BreakpointSite *bp) -> void {
+  const uint8_t *ubuf = (const uint8_t *)buf;
+  uint64_t bytes_written = 0;
 
-if (error.Success()) {
-  addr_t intersect_addr;
-  size_t intersect_size;
-  size_t opcode_offset;
-  const bool intersects = bp->IntersectsRange(
-  addr, size, &intersect_addr, &intersect_size, &opcode_offset);
-  UNUSED_IF_ASSERT_DISABLED(intersects);
-  assert(intersects);
-  assert(addr <= intersect_addr && intersect_addr < addr + size);
-  assert(addr < intersect_addr + intersect_size &&
- intersect_addr + intersect_size <= addr + size);
-  assert(opcode_offset + intersect_size <= bp->GetByteSize());
+  bp_sites_in_range.ForEach([this, addr, size, &bytes_written, &ubuf,
+ &error](BreakpointSite *bp) -> void {
 
-  // Check for bytes before this breakpoint
-  const addr_t curr_

[Lldb-commits] [PATCH] D39967: Refactoring of MemoryWrite function

2017-11-13 Thread Tatyana Krasnukha via Phabricator via lldb-commits
tatyana-krasnukha added inline comments.



Comment at: source/Target/Process.cpp:2462
-  // We weren't able to write all of the requested bytes, we
-  // are done looping and will return the number of bytes that
-  // we have written so far.

This comment says that function will return the number of written bytes, but 
really it will return zero in this case



Comment at: source/Target/Process.cpp:2484
 
   // Write any remaining bytes after the last breakpoint if we have any left
   return 0; // bytes_written;

This comment relates to line 2476 here


Repository:
  rL LLVM

https://reviews.llvm.org/D39967



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


[Lldb-commits] [PATCH] D39969: Set error status in ObjectFile::LoadInMemory if it is not set

2017-11-13 Thread Tatyana Krasnukha via Phabricator via lldb-commits
tatyana-krasnukha created this revision.
Herald added a subscriber: ki.stfu.

When breakpoints intersect a section, process->WriteMemory returns 0 without 
setting the error, LoadInMemory breaks execution and returns this error, but 
client code treat it as success.

Just added setting of error status for this case.

Applied clang-format.


Repository:
  rL LLVM

https://reviews.llvm.org/D39969

Files:
  source/Symbol/ObjectFile.cpp


Index: source/Symbol/ObjectFile.cpp
===
--- source/Symbol/ObjectFile.cpp
+++ source/Symbol/ObjectFile.cpp
@@ -78,8 +78,8 @@
 // and object container plug-ins can use these bytes to see if they
 // can parse this file.
 if (file_size > 0) {
-  data_sp =
-  DataBufferLLVM::CreateSliceFromPath(file->GetPath(), 512, 
file_offset);
+  data_sp = DataBufferLLVM::CreateSliceFromPath(file->GetPath(), 512,
+file_offset);
   data_offset = 0;
 }
   }
@@ -122,8 +122,8 @@
 }
 // We failed to find any cached object files in the container
 // plug-ins, so lets read the first 512 bytes and try again 
below...
-data_sp = 
DataBufferLLVM::CreateSliceFromPath(archive_file.GetPath(),
- 512, file_offset);
+data_sp = DataBufferLLVM::CreateSliceFromPath(
+archive_file.GetPath(), 512, file_offset);
   }
 }
   }
@@ -211,7 +211,8 @@
lldb::offset_t file_offset,
lldb::offset_t file_size,
ModuleSpecList &specs) {
-  DataBufferSP data_sp = DataBufferLLVM::CreateSliceFromPath(file.GetPath(), 
512, file_offset);
+  DataBufferSP data_sp =
+  DataBufferLLVM::CreateSliceFromPath(file.GetPath(), 512, file_offset);
   if (data_sp) {
 if (file_size == 0) {
   const lldb::offset_t actual_file_size = file.GetByteSize();
@@ -665,7 +666,6 @@
 }
 
 Status ObjectFile::LoadInMemory(Target &target, bool set_pc) {
-  Status error;
   ProcessSP process = target.CalculateProcess();
   if (!process)
 return Status("No Process");
@@ -675,6 +675,8 @@
   SectionList *section_list = GetSectionList();
   if (!section_list)
 return Status("No section in object file");
+
+  Status error;
   size_t section_count = section_list->GetNumSections(0);
   for (size_t i = 0; i < section_count; ++i) {
 SectionSP section_sp = section_list->GetSectionAtIndex(i);
@@ -687,8 +689,13 @@
   section_sp->GetSectionData(section_data);
   lldb::offset_t written = process->WriteMemory(
   addr, section_data.GetDataStart(), section_data.GetByteSize(), 
error);
-  if (written != section_data.GetByteSize())
+  if (written != section_data.GetByteSize()) {
+if (!error.Fail())
+  error.SetErrorStringWithFormat(
+  "One or more breakpoints intersect section '%s'",
+  section_sp->GetName().AsCString());
 return error;
+  }
 }
   }
   if (set_pc) {
@@ -701,6 +708,4 @@
   return error;
 }
 
-void ObjectFile::RelocateSection(lldb_private::Section *section)
-{
-}
+void ObjectFile::RelocateSection(lldb_private::Section *section) {}


Index: source/Symbol/ObjectFile.cpp
===
--- source/Symbol/ObjectFile.cpp
+++ source/Symbol/ObjectFile.cpp
@@ -78,8 +78,8 @@
 // and object container plug-ins can use these bytes to see if they
 // can parse this file.
 if (file_size > 0) {
-  data_sp =
-  DataBufferLLVM::CreateSliceFromPath(file->GetPath(), 512, file_offset);
+  data_sp = DataBufferLLVM::CreateSliceFromPath(file->GetPath(), 512,
+file_offset);
   data_offset = 0;
 }
   }
@@ -122,8 +122,8 @@
 }
 // We failed to find any cached object files in the container
 // plug-ins, so lets read the first 512 bytes and try again below...
-data_sp = DataBufferLLVM::CreateSliceFromPath(archive_file.GetPath(),
- 512, file_offset);
+data_sp = DataBufferLLVM::CreateSliceFromPath(
+archive_file.GetPath(), 512, file_offset);
   }
 }
   }
@@ -211,7 +211,8 @@
lldb::offset_t file_offset,
lldb::offset_t file_size,
ModuleSpecList &specs) {
-  DataBufferSP data_sp = DataBufferLLVM::CreateSliceFromPath(file.GetPath(), 512, file_offset);
+  DataBufferSP data_sp =
+  DataBufferLLVM::CreateSliceFromPath(file.GetPath(), 512, file_offset);
   if (data_sp) {
 if (file

[Lldb-commits] [lldb] r318079 - Reformat a comment. NFC.

2017-11-13 Thread Stephane Sezer via lldb-commits
Author: sas
Date: Mon Nov 13 12:13:25 2017
New Revision: 318079

URL: http://llvm.org/viewvc/llvm-project?rev=318079&view=rev
Log:
Reformat a comment. NFC.

Modified:
lldb/trunk/include/lldb/lldb-private-defines.h

Modified: lldb/trunk/include/lldb/lldb-private-defines.h
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/lldb-private-defines.h?rev=318079&r1=318078&r2=318079&view=diff
==
--- lldb/trunk/include/lldb/lldb-private-defines.h (original)
+++ lldb/trunk/include/lldb/lldb-private-defines.h Mon Nov 13 12:13:25 2017
@@ -13,8 +13,7 @@
 #if defined(__cplusplus)
 
 // Include Compiler.h here so we don't define LLVM_FALLTHROUGH and then
-// Compiler.h
-// later tries to redefine it.
+// Compiler.h later tries to redefine it.
 #include "llvm/Support/Compiler.h"
 
 #ifndef LLVM_FALLTHROUGH


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


[Lldb-commits] [PATCH] D39966: Add a data formatter for libc++ std::bitset

2017-11-13 Thread Jim Ingham via Phabricator via lldb-commits
jingham accepted this revision.
jingham added a comment.
This revision is now accepted and ready to land.

Looks fine.  Seems like Update doesn't need to grab the bool type on every 
pass, but I don't think that matters IRL.  Thanks for adding this.




Comment at: source/Plugins/Language/CPlusPlus/LibCxxBitset.cpp:62
+
+  m_bool_type = 
m_backend.GetCompilerType().GetBasicTypeFromAST(eBasicTypeBool);
+  m_elements.assign(size, ValueObjectSP());

Does this need to be done every time you Update?  Couldn't you do this in the 
constructor instead?  This is probably pretty cheap call, so it doesn't matter 
much, but it seems odd.


https://reviews.llvm.org/D39966



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


[Lldb-commits] [PATCH] D39578: Fix a couple of self-assignments using memcpy.

2017-11-13 Thread Don Hinton via Phabricator via lldb-commits
hintonda updated this revision to Diff 122730.
hintonda added a comment.

- Address comments.


https://reviews.llvm.org/D39578

Files:
  source/Core/RegisterValue.cpp
  source/Core/Value.cpp


Index: source/Core/Value.cpp
===
--- source/Core/Value.cpp
+++ source/Core/Value.cpp
@@ -142,6 +142,9 @@
 }
 
 size_t Value::AppendDataToHostBuffer(const Value &rhs) {
+  if (this == &rhs)
+return 0;
+
   size_t curr_size = m_data_buffer.GetByteSize();
   Status error;
   switch (rhs.GetValueType()) {
Index: source/Core/RegisterValue.cpp
===
--- source/Core/RegisterValue.cpp
+++ source/Core/RegisterValue.cpp
@@ -539,6 +539,9 @@
 }
 
 bool RegisterValue::CopyValue(const RegisterValue &rhs) {
+  if (this == &rhs)
+return rhs.m_type == eTypeInvalid ? false : true;
+
   m_type = rhs.m_type;
   switch (m_type) {
   case eTypeInvalid:


Index: source/Core/Value.cpp
===
--- source/Core/Value.cpp
+++ source/Core/Value.cpp
@@ -142,6 +142,9 @@
 }
 
 size_t Value::AppendDataToHostBuffer(const Value &rhs) {
+  if (this == &rhs)
+return 0;
+
   size_t curr_size = m_data_buffer.GetByteSize();
   Status error;
   switch (rhs.GetValueType()) {
Index: source/Core/RegisterValue.cpp
===
--- source/Core/RegisterValue.cpp
+++ source/Core/RegisterValue.cpp
@@ -539,6 +539,9 @@
 }
 
 bool RegisterValue::CopyValue(const RegisterValue &rhs) {
+  if (this == &rhs)
+return rhs.m_type == eTypeInvalid ? false : true;
+
   m_type = rhs.m_type;
   switch (m_type) {
   case eTypeInvalid:
___
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 10/29/2017 - 11/4/2017

2017-11-13 Thread Galina Kistanova via lldb-commits
Hello everyone,

Below are some buildbot numbers for the week of 10/29/2017 - 11/4/2017.

Please see the same data in attached csv files:

The longest time each builder was red during the 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 week:

   buildername|  was_red
--+--
 lldb-windows7-android| 129:25:17
 perf-x86_64-penryn-O3-polly-parallel-fast| 83:15:00
 perf-x86_64-penryn-O3-polly-unprofitable | 43:41:03
 ubuntu-gcc7.1-werror | 37:47:55
 llvm-clang-x86_64-expensive-checks-win   | 31:43:18
 clang-s390x-linux-lnt| 26:03:09
 clang-with-lto-ubuntu| 25:40:23
 clang-with-thin-lto-ubuntu   | 25:25:28
 clang-s390x-linux-multistage | 22:49:01
 lldb-amd64-ninja-freebsd11   | 22:34:41
 clang-with-thin-lto-windows  | 20:30:26
 clang-s390x-linux| 20:28:29
 clang-lld-x86_64-2stage  | 20:17:14
 clang-ppc64be-linux  | 13:32:17
 clang-x86_64-debian-fast | 11:45:03
 clang-ppc64be-linux-multistage   | 11:41:30
 llvm-clang-lld-x86_64-debian-fast| 11:10:37
 sanitizer-x86_64-linux-bootstrap-ubsan   | 10:36:14
 clang-ppc64be-linux-lnt  | 10:36:08
 clang-cmake-x86_64-sde-avx512-linux  | 10:29:43
 clang-bpf-build  | 10:18:17
 clang-atom-d525-fedora-rel   | 09:54:59
 clang-cmake-x86_64-avx2-linux| 09:50:40
 sanitizer-ppc64be-linux  | 09:30:49
 sanitizer-x86_64-linux   | 09:27:43
 sanitizer-x86_64-linux-autoconf  | 07:09:04
 clang-cmake-armv7-a15-selfhost   | 06:11:00
 clang-cuda-build | 05:45:08
 clang-cmake-armv7-a15-selfhost-neon  | 05:45:07
 clang-ppc64le-linux-multistage   | 05:40:25
 clang-cmake-aarch64-lld  | 05:09:32
 clang-x86_64-linux-abi-test  | 04:53:30
 clang-cmake-thumbv7-a15-full-sh  | 04:28:07
 llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast | 03:51:32
 llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast   | 03:35:17
 clang-x86-windows-msvc2015   | 03:01:05
 sanitizer-x86_64-linux-bootstrap | 02:48:18
 clang-x86_64-linux-selfhost-modules-2| 02:41:17
 clang-x64-ninja-win7 | 02:40:52
 reverse-iteration| 02:36:13
 sanitizer-x86_64-linux-bootstrap-msan| 02:06:53
 clang-cmake-aarch64-full | 02:05:27
 sanitizer-x86_64-linux-fast  | 02:02:26
 clang-ppc64le-linux-lnt  | 01:55:53
 lld-x86_64-freebsd   | 01:54:04
 lld-x86_64-darwin13  | 01:50:57
 clang-ppc64le-linux  | 01:50:37
 clang-x86_64-linux-selfhost-modules  | 01:39:22
 clang-hexagon-elf| 01:14:13
 sanitizer-windows| 01:12:31
 lldb-x86_64-ubuntu-14.04-buildserver | 01:07:52
 lldb-x86_64-darwin-13.4  | 01:07:49
 lldb-amd64-ninja-netbsd8 | 01:02:29
 libcxx-libcxxabi-x86_64-linux-ubuntu-cxx03   | 00:56:40
 clang-cmake-x86_64-avx2-linux-perf   | 00:54:05
 lldb-x86_64-ubuntu-14.04-cmake   | 00:53:04
 clang-cmake-armv7-a15-full   | 00:50:38
 llvm-hexagon-elf | 00:49:44
 clang-cmake-aarch64-global-isel  | 00:49:27
 clang-cmake-aarch64-quick| 00:44:16
 clang-cmake-thumbv7-a15  | 00:40:52
 clang-cmake-armv7-a15| 00:40:17
 sanitizer-x86_64-linux-android   | 00:38:29
 sanitizer-x86_64-linux-fuzzer| 00:35:35
 lldb-x86-windows-msvc2015| 00:32:47
 clang-sphinx-docs| 00:10:50
 clang-tools-sphinx-docs  | 00:10:42
(67 rows)


"Status change ratio" by active builder (percent of builds that changed the
builder status from greed to red or from red to green):

   

[Lldb-commits] Buildbot numbers for the week of 10/22/2017 - 10/28/2017

2017-11-13 Thread Galina Kistanova via lldb-commits
Hello everyone,

Below are some buildbot numbers for the week of 10/22/2017 - 10/28/2017.

Please see the same data in attached csv files:

The longest time each builder was red during the 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 week:

buildername | was_red
+-
 lldb-x86_64-darwin-13.4| 57:06:25
 clang-bpf-build| 41:30:07
 reverse-iteration  | 34:30:37
 sanitizer-x86_64-linux | 31:48:17
 libcxx-libcxxabi-x86_64-linux-ubuntu-gcc-tot-cxx1z | 28:29:51
 libcxx-libcxxabi-x86_64-linux-debian-noexceptions  | 21:41:43
 ubuntu-gcc7.1-werror   | 21:30:43
 lldb-x86_64-ubuntu-14.04-cmake | 16:49:30
 llvm-clang-x86_64-expensive-checks-win | 14:20:08
 clang-cmake-aarch64-quick  | 13:02:25
 lld-x86_64-win7| 12:40:35
 sanitizer-x86_64-linux-fast| 12:17:19
 llvm-clang-lld-x86_64-debian-fast  | 08:06:40
 aosp-O3-polly-before-vectorizer-unprofitable   | 06:24:22
 clang-x86_64-linux-selfhost-modules-2  | 06:13:09
 clang-x86_64-linux-selfhost-modules| 05:59:40
 clang-lld-x86_64-2stage| 05:38:46
 sanitizer-x86_64-linux-bootstrap-msan  | 05:31:44
 clang-with-lto-ubuntu  | 05:05:14
 clang-cmake-aarch64-full   | 04:46:23
 clang-ppc64be-linux-multistage | 04:23:41
 clang-cmake-armv7-a15-selfhost-neon| 04:18:29
 clang-with-thin-lto-ubuntu | 04:03:58
 llvm-mips-linux| 03:52:04
 clang-ppc64be-linux-lnt| 03:41:32
 clang-ppc64be-linux| 03:39:44
 clang-x64-ninja-win7   | 03:35:48
 clang-x86_64-linux-abi-test| 03:35:33
 sanitizer-ppc64be-linux| 03:34:38
 clang-with-thin-lto-windows| 03:02:41
 clang-ppc64le-linux| 03:00:57
 clang-cmake-x86_64-avx2-linux  | 02:59:49
 clang-cmake-x86_64-sde-avx512-linux| 02:58:28
 clang-x86-windows-msvc2015 | 02:55:17
 lldb-x86_64-ubuntu-14.04-android   | 02:44:33
 clang-ppc64le-linux-multistage | 02:38:59
 clang-ppc64le-linux-lnt| 02:38:35
 llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast   | 02:38:26
 clang-s390x-linux-lnt  | 02:37:01
 clang-s390x-linux  | 02:35:07
 clang-cmake-aarch64-global-isel| 02:33:22
 clang-cmake-thumbv7-a15| 02:32:09
 lldb-windows7-android  | 02:15:37
 clang-cuda-build   | 02:09:15
 clang-atom-d525-fedora-rel | 02:08:49
 clang-s390x-linux-multistage   | 02:06:21
 libcxx-libcxxabi-libunwind-x86_64-linux-debian | 01:59:39
 sanitizer-x86_64-linux-bootstrap-ubsan | 01:41:16
 lldb-x86-windows-msvc2015  | 01:40:55
 llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast | 01:39:13
 sanitizer-x86_64-linux-bootstrap   | 01:37:27
 clang-cmake-x86_64-avx2-linux-perf | 01:30:57
 lld-x86_64-freebsd | 01:19:21
 sanitizer-x86_64-linux-fuzzer  | 01:17:25
 lld-x86_64-darwin13| 01:08:12
 sanitizer-x86_64-linux-android | 01:02:16
 lldb-amd64-ninja-netbsd8   | 00:58:21
 clang-x86_64-debian-fast   | 00:51:37
 clang-cmake-armv7-a15-full | 00:50:39
 llvm-hexagon-elf   | 00:48:42
 clang-cmake-armv7-a15  | 00:43:02
 clang-hexagon-elf  | 00:42:46
 lldb-x86_64-ubuntu-14.04-buildserver   | 00:40:54
 sanitizer-x86_64-linux-autoconf| 00:36:48
 polly-arm-linux| 00:32:57
 polly-amd64-linux  | 00:26:50
 sanitizer-windows  | 00:11:34
 lldb-amd64-ninja-freebs

[Lldb-commits] Buildbot numbers for the last week of 11/5/2017 - 11/11/2017

2017-11-13 Thread Galina Kistanova via lldb-commits
Hello everyone,

Below are some buildbot numbers for the last week of 11/5/2017 - 11/11/2017.

Please see the same data in attached csv files:

The longest time each builder was red during the 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 week:

  buildername  |  was_red
---+--
 clang-ppc64le-linux   | 105:44:38
 libcxx-libcxxabi-x86_64-linux-ubuntu-gcc-tot-cxx1z| 70:10:09
 clang-cmake-thumbv7-a15-full-sh   | 52:37:11
 clang-cmake-armv7-a15-selfhost| 50:02:47
 clang-cmake-x86_64-sde-avx512-linux   | 49:10:11
 clang-cmake-x86_64-avx2-linux-perf| 48:34:50
 clang-cmake-x86_64-avx2-linux | 48:34:19
 clang-x86-windows-msvc2015| 46:49:23
 llvm-mips-linux   | 46:43:58
 llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast  | 46:24:03
 clang-cmake-aarch64-full  | 46:20:52
 clang-cmake-armv7-a15-full| 45:23:59
 clang-x64-ninja-win7  | 45:20:58
 clang-cmake-aarch64-global-isel   | 44:00:13
 clang-cmake-aarch64-quick | 42:51:07
 clang-cmake-armv7-a15-selfhost-neon   | 41:20:46
 clang-cmake-thumbv7-a15   | 40:45:23
 clang-cmake-armv7-a15 | 40:22:08
 polly-amd64-linux | 30:29:53
 polly-arm-linux   | 30:18:22
 aosp-O3-polly-before-vectorizer-unprofitable  | 24:07:02
 clang-atom-d525-fedora-rel| 10:47:23
 clang-x86_64-linux-abi-test   | 10:36:23
 ubuntu-gcc7.1-werror  | 10:20:34
 clang-s390x-linux-multistage  | 09:58:03
 libcxx-libcxxabi-libunwind-aarch64-linux-noexceptions | 09:43:35
 clang-x86_64-linux-selfhost-modules-2 | 08:45:51
 clang-x86_64-linux-selfhost-modules   | 08:36:15
 clang-s390x-linux-lnt | 07:37:46
 clang-with-thin-lto-ubuntu| 07:01:54
 clang-lld-x86_64-2stage   | 06:53:14
 sanitizer-x86_64-linux| 06:11:38
 clang-with-lto-ubuntu | 06:11:03
 lld-x86_64-darwin13   | 05:57:04
 libcxx-libcxxabi-x86_64-linux-debian-noexceptions | 05:50:31
 clang-cmake-aarch64-lld   | 05:43:42
 sanitizer-ppc64be-linux   | 05:39:57
 clang-s390x-linux | 05:38:52
 clang-ppc64le-linux-multistage| 05:38:18
 lldb-windows7-android | 05:36:08
 libcxx-libcxxabi-libunwind-x86_64-linux-debian| 05:33:10
 clang-x86_64-debian-fast  | 04:58:16
 clang-ppc64be-linux-lnt   | 04:57:46
 llvm-clang-lld-x86_64-debian-fast | 04:33:10
 lldb-x86_64-ubuntu-14.04-android  | 04:19:54
 clang-ppc64le-linux-lnt   | 04:19:07
 llvm-clang-x86_64-expensive-checks-win| 04:17:34
 clang-with-thin-lto-windows   | 04:05:12
 sanitizer-x86_64-linux-fuzzer | 04:03:04
 sanitizer-x86_64-linux-bootstrap-msan | 03:32:52
 clang-ppc64be-linux   | 03:19:18
 clang-cuda-build  | 03:14:22
 clang-native-arm-lnt  | 03:04:31
 llvm-hexagon-elf  | 03:01:38
 clang-hexagon-elf | 03:00:48
 clang-ppc64be-linux-multistage| 02:55:48
 llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast| 02:53:52
 sanitizer-x86_64-linux-android| 02:51:35
 libcxx-libcxxabi-x86_64-linux-ubuntu-msan | 02:48:16
 perf-x86_64-penryn-O3-polly-parallel-fast | 02:46:43
 sanitizer-x86_64-linux-bootstrap-ubsan| 02:46:36
 libcxx-libcxxabi-libunwind-x86_64-linux-ubuntu| 02:44:48
 libcxx-libcxxabi-libunwind-arm-linux  | 02:43:10
 libcxx-libcxxabi-x86_64-linux-ubuntu-cxx11| 02:40:29
 sanitiz