Re: [Lldb-commits] [PATCH] D17856: Fix expression evaluation with operator new

2016-07-12 Thread Pavel Labath via lldb-commits
labath requested a review of this revision.
labath added a comment.

Sean, could you take a quick look at this one as well?


http://reviews.llvm.org/D17856



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


[Lldb-commits] [lldb] r275164 - Dwarf parser: don't lookup void typedefs in the DWO

2016-07-12 Thread Pavel Labath via lldb-commits
Author: labath
Date: Tue Jul 12 04:26:30 2016
New Revision: 275164

URL: http://llvm.org/viewvc/llvm-project?rev=275164&view=rev
Log:
Dwarf parser: don't lookup void typedefs in the DWO

Summary:
void typedefs do not have a DW_AT_type attribute, so we end up with an empty 
encoding_uid
variable. These don't need to be looked up and trying to look that will assert 
in a debug build.

Reviewers: clayborg

Subscribers: lldb-commits, tberghammer

Differential Revision: http://reviews.llvm.org/D22218

Modified:
lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp

Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp?rev=275164&r1=275163&r2=275164&view=diff
==
--- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp 
(original)
+++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp Tue Jul 
12 04:26:30 2016
@@ -328,7 +328,7 @@ DWARFASTParserClang::ParseTypeFromDWARF
 }
 }
 
-if (tag == DW_TAG_typedef)
+if (tag == DW_TAG_typedef && encoding_uid.IsValid())
 {
 // Try to parse a typedef from the DWO file first as 
modules
 // can contain typedef'ed structures that have no 
names like:


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


Re: [Lldb-commits] [PATCH] D22218: Dwarf parser: don't lookup void typedefs in the DWO

2016-07-12 Thread Pavel Labath via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL275164: Dwarf parser: don't lookup void typedefs in the DWO 
(authored by labath).

Changed prior to commit:
  http://reviews.llvm.org/D22218?vs=63499&id=63657#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D22218

Files:
  lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp

Index: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
===
--- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
+++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
@@ -328,7 +328,7 @@
 }
 }
 
-if (tag == DW_TAG_typedef)
+if (tag == DW_TAG_typedef && encoding_uid.IsValid())
 {
 // Try to parse a typedef from the DWO file first as 
modules
 // can contain typedef'ed structures that have no 
names like:


Index: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
===
--- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
+++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
@@ -328,7 +328,7 @@
 }
 }
 
-if (tag == DW_TAG_typedef)
+if (tag == DW_TAG_typedef && encoding_uid.IsValid())
 {
 // Try to parse a typedef from the DWO file first as modules
 // can contain typedef'ed structures that have no names like:
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [lldb] r275165 - Fix a race on process exit

2016-07-12 Thread Pavel Labath via lldb-commits
Author: labath
Date: Tue Jul 12 04:37:55 2016
New Revision: 275165

URL: http://llvm.org/viewvc/llvm-project?rev=275165&view=rev
Log:
Fix a race on process exit

Summary:
Process::SetExitStatus was popping the process io handler and resetting 
m_process_input_reader
shared pointer, which is not a safe thing to do as the function is called 
asynchronously and
other threads may be accessing the member variable. (E.g. if the process 
terminates really
quickly, the private state thread might only be in the process of pushing the 
handler on the
stack. Sometimes, this leads to deadlock, as the shared pointer's state gets 
corrupted by the
concurrent access.

Since the IOHandler will be popped anyway in 
Process:HandleProcessStateChangedEvent when the
exited event gets processed, doing the same in SetExitStatus seems to be 
unnecessary.

Reviewers: clayborg

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D22209

Modified:
lldb/trunk/source/Target/Process.cpp

Modified: lldb/trunk/source/Target/Process.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Process.cpp?rev=275165&r1=275164&r2=275165&view=diff
==
--- lldb/trunk/source/Target/Process.cpp (original)
+++ lldb/trunk/source/Target/Process.cpp Tue Jul 12 04:37:55 2016
@@ -1462,14 +1462,6 @@ Process::SetExitStatus (int status, cons
 else
 m_exit_string.clear();
 
-// When we exit, we don't need the input reader anymore
-if (m_process_input_reader)
-{
-m_process_input_reader->SetIsDone(true);
-m_process_input_reader->Cancel();
-m_process_input_reader.reset();
-}
-
 // Clear the last natural stop ID since it has a strong
 // reference to this process
 m_mod_id.SetStopEventForLastNaturalStopID(EventSP());


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


Re: [Lldb-commits] [PATCH] D22209: Fix a race on process exit

2016-07-12 Thread Pavel Labath via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL275165: Fix a race on process exit (authored by labath).

Changed prior to commit:
  http://reviews.llvm.org/D22209?vs=63481&id=63659#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D22209

Files:
  lldb/trunk/source/Target/Process.cpp

Index: lldb/trunk/source/Target/Process.cpp
===
--- lldb/trunk/source/Target/Process.cpp
+++ lldb/trunk/source/Target/Process.cpp
@@ -1462,14 +1462,6 @@
 else
 m_exit_string.clear();
 
-// When we exit, we don't need the input reader anymore
-if (m_process_input_reader)
-{
-m_process_input_reader->SetIsDone(true);
-m_process_input_reader->Cancel();
-m_process_input_reader.reset();
-}
-
 // Clear the last natural stop ID since it has a strong
 // reference to this process
 m_mod_id.SetStopEventForLastNaturalStopID(EventSP());


Index: lldb/trunk/source/Target/Process.cpp
===
--- lldb/trunk/source/Target/Process.cpp
+++ lldb/trunk/source/Target/Process.cpp
@@ -1462,14 +1462,6 @@
 else
 m_exit_string.clear();
 
-// When we exit, we don't need the input reader anymore
-if (m_process_input_reader)
-{
-m_process_input_reader->SetIsDone(true);
-m_process_input_reader->Cancel();
-m_process_input_reader.reset();
-}
-
 // Clear the last natural stop ID since it has a strong
 // reference to this process
 m_mod_id.SetStopEventForLastNaturalStopID(EventSP());
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


Re: [Lldb-commits] [PATCH] D22219: Support loading files even when incorrect file name specified by the linker

2016-07-12 Thread Tamas Berghammer via lldb-commits
tberghammer updated this revision to Diff 63664.
tberghammer added a comment.

Add SBMemoryRegionInfo::GetName


http://reviews.llvm.org/D22219

Files:
  docs/lldb-gdb-remote.txt
  include/lldb/API/SBMemoryRegionInfo.h
  include/lldb/Target/MemoryRegionInfo.h
  packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py
  source/API/SBMemoryRegionInfo.cpp
  source/Core/DynamicLoader.cpp
  source/Plugins/Process/Linux/NativeProcessLinux.cpp
  source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
  source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp

Index: source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
===
--- source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
+++ source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
@@ -2224,6 +2224,15 @@
 
 response.PutChar (';');
 }
+
+// Name
+ConstString name = region_info.GetName();
+if (name)
+{
+response.PutCString("name:");
+response.PutCStringAsRawHex8(name.AsCString());
+response.PutChar(';');
+}
 }
 
 return SendPacketNoLock(response.GetData(), response.GetSize());
Index: source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
===
--- source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
+++ source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
@@ -2439,6 +2439,13 @@
 region_info.SetMapped(MemoryRegionInfo::eNo);
 }
 }
+else if (name.compare ("name") == 0)
+{
+StringExtractorGDBRemote name_extractor;
+name_extractor.GetStringRef().swap(value);
+name_extractor.GetHexByteString(value);
+region_info.SetName(value.c_str());
+}
 else if (name.compare ("error") == 0)
 {
 StringExtractorGDBRemote name_extractor;
Index: source/Plugins/Process/Linux/NativeProcessLinux.cpp
===
--- source/Plugins/Process/Linux/NativeProcessLinux.cpp
+++ source/Plugins/Process/Linux/NativeProcessLinux.cpp
@@ -1942,6 +1942,20 @@
 else
 return Error ("unexpected /proc/{pid}/maps exec permission char");
 
+line_extractor.GetChar();  // Read the private bit
+line_extractor.SkipSpaces();   // Skip the separator
+line_extractor.GetHexMaxU64(false, 0); // Read the offset
+line_extractor.GetHexMaxU64(false, 0); // Read the major device number
+line_extractor.GetChar();  // Read the device id separator
+line_extractor.GetHexMaxU64(false, 0); // Read the major device number
+line_extractor.SkipSpaces();   // Skip the separator
+line_extractor.GetU64(0, 10);  // Read the inode number
+
+line_extractor.SkipSpaces();
+const char* name = line_extractor.Peek();
+if (name)
+memory_region_info.SetName(name);
+
 return Error ();
 }
 
Index: source/Core/DynamicLoader.cpp
===
--- source/Core/DynamicLoader.cpp
+++ source/Core/DynamicLoader.cpp
@@ -12,13 +12,14 @@
 // Other libraries and framework includes
 // Project includes
 #include "lldb/lldb-private.h"
-#include "lldb/Target/DynamicLoader.h"
-#include "lldb/Target/Process.h"
-#include "lldb/Target/Target.h"
-#include "lldb/Core/PluginManager.h"
 #include "lldb/Core/Module.h"
 #include "lldb/Core/ModuleSpec.h"
+#include "lldb/Core/PluginManager.h"
 #include "lldb/Core/Section.h"
+#include "lldb/Target/DynamicLoader.h"
+#include "lldb/Target/MemoryRegionInfo.h"
+#include "lldb/Target/Process.h"
+#include "lldb/Target/Target.h"
 
 using namespace lldb;
 using namespace lldb_private;
@@ -177,37 +178,67 @@
 {
 Target &target = m_process->GetTarget();
 ModuleList &modules = target.GetImages();
+ModuleSpec module_spec (file, target.GetArchitecture());
 ModuleSP module_sp;
 
-ModuleSpec module_spec (file, target.GetArchitecture());
 if ((module_sp = modules.FindFirstModule (module_spec)))
 {
 UpdateLoadedSections(module_sp, link_map_addr, base_addr, base_addr_is_offset);
+return module_sp;
 }
-else if ((module_sp = target.GetSharedModule(module_spec)))
+
+if ((module_sp = target.GetSharedModule(module_spec)))
 {
 UpdateLoadedSections(module_sp, link_map_addr, base_addr, base_addr_is_offset);
+return module_sp;
 }
-else
+
+bool check_alternative_file_name = true;
+if (base_addr_is_offset)
 {
-if (base_addr_is_offset)
+// Try to fetch the load address of the file from the process as we need absolute load
+//

Re: [Lldb-commits] [PATCH] D15116: Fix for evaluating a function with an ambiguous symbol

2016-07-12 Thread Ewan Crawford via lldb-commits
EwanCrawford abandoned this revision.
EwanCrawford added a comment.

Thanks for getting around to looking at this Sean, i'd forgotten about it.
Unfortunately the patch seems to have gone stale as the test case no longer 
passes.
So i'm just going to close the review for now.


Repository:
  rL LLVM

http://reviews.llvm.org/D15116



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


Re: [Lldb-commits] [PATCH] D22213: [test] Fix category-based skipping

2016-07-12 Thread Todd Fiala via lldb-commits
tfiala accepted this revision.
tfiala added a comment.
This revision is now accepted and ready to land.

In http://reviews.llvm.org/D22213#480052, @labath wrote:

> Btw, I tried to make a unit test for this, but I could not get your meta test 
> runner to work -- the existing test was failing for me (it was not getting 
> any events apart from the global "test run started"/"test run finished" 
> events). Do you have any idea what could be wrong?


Hmm no initial thoughts on that yet.  What steps specifically did you take?  
(I'll see if I can repro it over here, it may have gone stale --- although I 
used it not too long ago.)

The change here looks good to me.


http://reviews.llvm.org/D22213



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


Re: [Lldb-commits] [PATCH] D21152: Hunt for unused memory properly when dealing with processes that can tell us about memory mappings

2016-07-12 Thread Todd Fiala via lldb-commits
tfiala added a comment.

Looks like this one can be closed out, @spyffe?


Repository:
  rL LLVM

http://reviews.llvm.org/D21152



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


[Lldb-commits] [lldb] r275173 - [test] Fix category-based skipping

2016-07-12 Thread Pavel Labath via lldb-commits
Author: labath
Date: Tue Jul 12 10:07:18 2016
New Revision: 275173

URL: http://llvm.org/viewvc/llvm-project?rev=275173&view=rev
Log:
[test] Fix category-based skipping

Summary:
LLDBTestResult.hardMarkAsSkipped marked the whole class as skipped when the 
first class in the
test failed the category check. This meant that subsequent tests in the same 
class did not run
even if they were passing the category filter. Fix that.

Reviewers: tfiala

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D22213

Modified:
lldb/trunk/packages/Python/lldbsuite/test/test_result.py

Modified: lldb/trunk/packages/Python/lldbsuite/test/test_result.py
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/test_result.py?rev=275173&r1=275172&r2=275173&view=diff
==
--- lldb/trunk/packages/Python/lldbsuite/test/test_result.py (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/test_result.py Tue Jul 12 
10:07:18 2016
@@ -113,8 +113,6 @@ class LLDBTestResult(unittest2.TextTestR
 def hardMarkAsSkipped(self,test):
 getattr(test, test._testMethodName).__func__.__unittest_skip__ = True
 getattr(test, test._testMethodName).__func__.__unittest_skip_why__ = 
"test case does not fall in any category of interest for this run"
-test.__class__.__unittest_skip__ = True
-test.__class__.__unittest_skip_why__ = "test case does not fall in any 
category of interest for this run"
 
 def startTest(self, test):
 if 
configuration.shouldSkipBecauseOfCategories(self.getCategoriesForTest(test)):


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


Re: [Lldb-commits] [PATCH] D22213: [test] Fix category-based skipping

2016-07-12 Thread Pavel Labath via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL275173: [test] Fix category-based skipping (authored by 
labath).

Changed prior to commit:
  http://reviews.llvm.org/D22213?vs=63487&id=63679#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D22213

Files:
  lldb/trunk/packages/Python/lldbsuite/test/test_result.py

Index: lldb/trunk/packages/Python/lldbsuite/test/test_result.py
===
--- lldb/trunk/packages/Python/lldbsuite/test/test_result.py
+++ lldb/trunk/packages/Python/lldbsuite/test/test_result.py
@@ -113,8 +113,6 @@
 def hardMarkAsSkipped(self,test):
 getattr(test, test._testMethodName).__func__.__unittest_skip__ = True
 getattr(test, test._testMethodName).__func__.__unittest_skip_why__ = 
"test case does not fall in any category of interest for this run"
-test.__class__.__unittest_skip__ = True
-test.__class__.__unittest_skip_why__ = "test case does not fall in any 
category of interest for this run"
 
 def startTest(self, test):
 if 
configuration.shouldSkipBecauseOfCategories(self.getCategoriesForTest(test)):


Index: lldb/trunk/packages/Python/lldbsuite/test/test_result.py
===
--- lldb/trunk/packages/Python/lldbsuite/test/test_result.py
+++ lldb/trunk/packages/Python/lldbsuite/test/test_result.py
@@ -113,8 +113,6 @@
 def hardMarkAsSkipped(self,test):
 getattr(test, test._testMethodName).__func__.__unittest_skip__ = True
 getattr(test, test._testMethodName).__func__.__unittest_skip_why__ = "test case does not fall in any category of interest for this run"
-test.__class__.__unittest_skip__ = True
-test.__class__.__unittest_skip_why__ = "test case does not fall in any category of interest for this run"
 
 def startTest(self, test):
 if configuration.shouldSkipBecauseOfCategories(self.getCategoriesForTest(test)):
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


Re: [Lldb-commits] [PATCH] D21032: Eliminate differences in lldbinline-generated Makefiles and ensure they're regenerated every time

2016-07-12 Thread Todd Fiala via lldb-commits
tfiala added a comment.

Did this one go in?  If so, can we close the review?

Thanks!


Repository:
  rL LLVM

http://reviews.llvm.org/D21032



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


[Lldb-commits] [PATCH] D22266: Add "support" for DW_CFA_GNU_args_size to the unwinder

2016-07-12 Thread Pavel Labath via lldb-commits
labath created this revision.
labath added a reviewer: jasonmolenda.
labath added a subscriber: lldb-commits.

This adds the knowledge of the DW_CFA_GNU_args_size instruction to the eh_frame 
parsing code.
Right now it is ignored as I am unsure how is it supposed to be handled, but 
now we are at least
able to parse the rest of the FDE containing this instruction.

I also add a fix for a bug which was exposed by this instruction. Namely, a 
mismatched sequence
of remember/restore instructions in the input could cause us to pop an empty 
stack and crash. Now
we just log the error and ignore the offending instruction.

http://reviews.llvm.org/D22266

Files:
  source/Symbol/DWARFCallFrameInfo.cpp

Index: source/Symbol/DWARFCallFrameInfo.cpp
===
--- source/Symbol/DWARFCallFrameInfo.cpp
+++ source/Symbol/DWARFCallFrameInfo.cpp
@@ -408,6 +408,7 @@
 bool
 DWARFCallFrameInfo::FDEToUnwindPlan (dw_offset_t dwarf_offset, Address 
startaddr, UnwindPlan& unwind_plan)
 {
+Log *log = GetLogIfAllCategoriesSet(LIBLLDB_LOG_UNWIND);
 lldb::offset_t offset = dwarf_offset;
 lldb::offset_t current_entry = offset;
 
@@ -648,13 +649,32 @@
 // the stack and place them in the current row. (This 
operation is
 // useful for compilers that move epilogue code into 
the body of a
 // function.)
+if (stack.empty())
+{
+if (log)
+log->Printf(
+"DWARFCallFrameInfo::%s(dwarf_offset: %" 
PRIx32 ", startaddr: %" PRIx64
+" encountered DW_CFA_restore_state but 
state stack is empty. Corrupt unwind info?",
+__FUNCTION__, dwarf_offset, 
startaddr.GetFileAddress());
+break;
+}
 lldb::addr_t offset = row->GetOffset ();
 row = stack.back ();
 stack.pop_back ();
 row->SetOffset (offset);
 break;
 }
 
+case DW_CFA_GNU_args_size: // 0x2e
+{
+// The DW_CFA_GNU_args_size instruction takes an 
unsigned LEB128 operand
+// representing an argument size. This instruction 
specifies the total of
+// the size of the arguments which have been pushed 
onto the stack.
+
+// TODO: Figure out how we should handle this.
+m_cfi_data.GetULEB128(&offset);
+}
+
 case DW_CFA_val_offset  :   // 0x14
 case DW_CFA_val_offset_sf   :   // 0x15
 default:


Index: source/Symbol/DWARFCallFrameInfo.cpp
===
--- source/Symbol/DWARFCallFrameInfo.cpp
+++ source/Symbol/DWARFCallFrameInfo.cpp
@@ -408,6 +408,7 @@
 bool
 DWARFCallFrameInfo::FDEToUnwindPlan (dw_offset_t dwarf_offset, Address startaddr, UnwindPlan& unwind_plan)
 {
+Log *log = GetLogIfAllCategoriesSet(LIBLLDB_LOG_UNWIND);
 lldb::offset_t offset = dwarf_offset;
 lldb::offset_t current_entry = offset;
 
@@ -648,13 +649,32 @@
 // the stack and place them in the current row. (This operation is
 // useful for compilers that move epilogue code into the body of a
 // function.)
+if (stack.empty())
+{
+if (log)
+log->Printf(
+"DWARFCallFrameInfo::%s(dwarf_offset: %" PRIx32 ", startaddr: %" PRIx64
+" encountered DW_CFA_restore_state but state stack is empty. Corrupt unwind info?",
+__FUNCTION__, dwarf_offset, startaddr.GetFileAddress());
+break;
+}
 lldb::addr_t offset = row->GetOffset ();
 row = stack.back ();
 stack.pop_back ();
 row->SetOffset (offset);
 break;
 }
 
+case DW_CFA_GNU_args_size: // 0x2e
+{
+// The DW_CFA_GNU_args_size instruction takes an unsigned LEB128 operand
+// representing an argument size. This instruction specifies the total of
+// the size of the arguments which have been pushed onto the stack.
+
+// TODO: Figure out how we should handle this.
+m_cfi_data.GetULEB128(&offset);
+}
+
  

[Lldb-commits] [lldb] r275175 - [NPL] Increase ETXTBSY workaround sleep

2016-07-12 Thread Pavel Labath via lldb-commits
Author: labath
Date: Tue Jul 12 10:13:11 2016
New Revision: 275175

URL: http://llvm.org/viewvc/llvm-project?rev=275175&view=rev
Log:
[NPL] Increase ETXTBSY workaround sleep

10ms does not seem to be enough all the time, go to 50.

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=275175&r1=275174&r2=275175&view=diff
==
--- lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp (original)
+++ lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp Tue Jul 12 
10:13:11 2016
@@ -569,7 +569,7 @@ NativeProcessLinux::ChildFunc(const Laun
 // issued, such as when running the test suite. (The file remains open 
when someone does
 // an "adb shell" command in the fork() child before it has had a 
chance to exec.) Since
 // this state should clear up quickly, wait a while and then give it 
one more go.
-usleep(1);
+usleep(5);
 execve(args.m_argv[0], const_cast(args.m_argv), 
const_cast(envp));
 }
 


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


Re: [Lldb-commits] [PATCH] D22213: [test] Fix category-based skipping

2016-07-12 Thread Pavel Labath via lldb-commits
labath added a comment.

I used the command you mentioned in the original patch:

  $ python -m unittest discover -s test/src -p 'Test*.py'
  FF
  ==
  FAIL: test_with_function_filter 
(TestCatchInvalidDecorator.TestCatchInvalidDecorator)
  --
  Traceback (most recent call last):
File 
"/usr/local/google/home/labath/ll/lldb/packages/Python/lldbsuite/test_event/test/src/TestCatchInvalidDecorator.py",
 line 56, in test_with_function_filter
  "At least one job or test error result should have been returned")
  AssertionError: At least one job or test error result should have been 
returned
  
  ==
  FAIL: test_with_whole_file 
(TestCatchInvalidDecorator.TestCatchInvalidDecorator)
  --
  Traceback (most recent call last):
File 
"/usr/local/google/home/labath/ll/lldb/packages/Python/lldbsuite/test_event/test/src/TestCatchInvalidDecorator.py",
 line 37, in test_with_whole_file
  "At least one job or test error result should have been returned")
  AssertionError: At least one job or test error result should have been 
returned
  
  --
  Ran 2 tests in 0.149s
  
  FAILED (failures=2)

I don't remember seeing any changes here so it's quite possible it never worked 
in the first place, but I have no idea what could be different about my setup.


http://reviews.llvm.org/D22213



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


Re: [Lldb-commits] [PATCH] D22235: Build clang Debug if we build lldb debug.

2016-07-12 Thread Todd Fiala via lldb-commits
tfiala added a comment.

We have a separate configuration for that build in Xcode - it is called 
DebugClang.  You can build that configuration from the command line with 
something like:

xcodebuild --scheme desktop --configuration DebugClang

or clone the "desktop" scheme in Xcode, setting the scheme build option to use 
the DebugClang configuration instead of the Debug configuration.

Generally we don't want to force building a debug llvm/clang by default in the 
default Debug configuration since it has a noticeable impact on test run time.

@clayborg, thoughts on that?


http://reviews.llvm.org/D22235



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


[Lldb-commits] [lldb] r275185 - Increase "process load" timeout

2016-07-12 Thread Pavel Labath via lldb-commits
Author: labath
Date: Tue Jul 12 11:06:31 2016
New Revision: 275185

URL: http://llvm.org/viewvc/llvm-project?rev=275185&view=rev
Log:
Increase "process load" timeout

Loading a dynamic library can take quite a long time, since it triggers a 
number of
shared-library-event stops for dependent libraries. This is especially true for 
remote targets
due to communication latency. Increase the default 500ms timeout to account for 
that.

Committing as obvious.

Modified:
lldb/trunk/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp

Modified: lldb/trunk/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp?rev=275185&r1=275184&r2=275185&view=diff
==
--- lldb/trunk/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp (original)
+++ lldb/trunk/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp Tue Jul 12 
11:06:31 2016
@@ -882,6 +882,7 @@ PlatformPOSIX::EvaluateLibdlExpression(l
 expr_options.SetIgnoreBreakpoints(true);
 expr_options.SetExecutionPolicy(eExecutionPolicyAlways);
 expr_options.SetLanguage(eLanguageTypeC_plus_plus);
+expr_options.SetTimeoutUsec(200); // 2 seconds
 
 Error expr_error;
 UserExpression::Evaluate(exe_ctx,


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


Re: [Lldb-commits] [PATCH] D20357: [LLDB][MIPS] Fix FPU Size Based on Dynamic FR

2016-07-12 Thread Greg Clayton via lldb-commits
clayborg requested changes to this revision.
clayborg added a comment.
This revision now requires changes to proceed.

Many issues. See inlined comments.



Comment at: include/lldb/lldb-private-types.h:57-58
@@ -56,1 +56,4 @@
// ax, ah, and al.
+const uint8_t *dynamic_size_dwarf_expr_bytes; // A DWARF expression 
that when evaluated gives 
+  // the byte size of this 
register. 
+size_t dynamic_size_dwarf_len; // The length of the DWARF expression 
in bytes in the 

If you choose to add these fields to RegisterInfo.h, then you will need to 
update all macros for that create arrays of RegisterInfo structs to fill in 
NULL into dynamic_size_dwarf_expr_bytes, and 0 into dynamic_size_dwarf_len.


Comment at: source/Plugins/Process/Utility/DynamicRegisterInfo.cpp:298-299
@@ +297,4 @@
+uint8_t dynamic_size = 0;
+reg_info_dict->GetValueForKeyAsInteger("dynamic_size_dwarf_len", 
dynamic_size);
+reg_info.dynamic_size_dwarf_len = dynamic_size;
+

We don't need a key named "dynamic_size_dwarf_len", we just need 
"dynamic_size_dwarf_expr_bytes". We can fill in 
"reg_info.dynamic_size_dwarf_len" after decoding the bytes in 
"dynamic_size_dwarf_expr_bytes".


Comment at: 
source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp:1639
@@ +1638,3 @@
+{
+   response.Printf("dynamic_size_dwarf_len:%" PRIu64 
";",reg_info->dynamic_size_dwarf_len);
+   response.PutCString("dynamic_size_dwarf_expr_bytes:");

We really don't need a "dynamic_size_dwarf_len" key. Just 
"dynamic_size_dwarf_expr_bytes" and we can determine the byte size from how 
many bytes are encoded as hex ASCII chars.


Comment at: source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp:96-97
@@ -91,2 +95,4 @@
 {
-return m_reg_info.GetRegisterInfoAtIndex (reg);
+ExecutionContext exe_ctx (CalculateThread());
+const ArchSpec &arch = 
m_thread.GetProcess()->GetTarget().GetArchitecture();
+RegisterInfo* reg_info = m_reg_info.GetRegisterInfoAtIndex (reg);

Put these two statements inside the "if (reg_info->dynamic_size_dwarf_len)" 
statement


Comment at: source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp:99
@@ +98,3 @@
+RegisterInfo* reg_info = m_reg_info.GetRegisterInfoAtIndex (reg);
+if(reg_info->dynamic_size_dwarf_len)
+{

add space and make sure "reg_info" isn't NULL.
```
if (reg_info && reg_info->dynamic_size_dwarf_len)
```


Comment at: 
source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp:954-994
@@ -941,2 +953,43 @@
 
+uint32_t
+GDBRemoteDynamicRegisterInfo::UpdateDynamicRegisterSize (ExecutionContext 
*exe_ctx,
+ RegisterContext 
*reg_ctx,
+ const 
lldb_private::ArchSpec &arch,
+ RegisterInfo* 
reg_info, size_t reg)
+{
+// In MIPS, the floating point registers size is depends on FR.
+// if SR.26  == 1 then all floating point registers are 64 bits.
+// else they are all 32 bits.
+
+int evaluate_result;
+uint8_t opcode_len = reg_info->dynamic_size_dwarf_len;
+uint32_t addr_size =  arch.GetAddressByteSize ();
+uint8_t* opcode_ptr = m_dynamic_reg_size_map[reg].data();
+DataExtractor dwarf_data (opcode_ptr, opcode_len, 
+  arch.GetByteOrder (),addr_size);
+ModuleSP opcode_ctx;
+DWARFExpression dwarf_expr (opcode_ctx, dwarf_data, nullptr, 0, 
opcode_len);
+Value result;
+Error error;
+const lldb::offset_t offset = 0;
+if(dwarf_expr.Evaluate (exe_ctx, nullptr, nullptr, reg_ctx, opcode_ctx, 
dwarf_data, nullptr,
+offset, opcode_len, eRegisterKindDWARF, nullptr, 
nullptr, result, &error))
+{
+evaluate_result = result.GetScalar().SInt(-1);
+switch (evaluate_result)
+{
+case 0: return 4;break;
+case 1: return 8;break;
+case -1: return reg_info->byte_size; break;
+default: assert(false && "Incorrect Dwarf Opcode bytes");
+ break;
+}
+return 0;
+}
+else
+{
+printf("Error executing DwarfExpression::Evaluate %s\n", 
error.AsCString());
+return reg_info->byte_size;
+}
+}
 

This should be a function in RegisterContext.h/RegisterContext.cpp and then the 
first two arguments are not needed. See previous comment for reasons why.


Comment at: source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.h:50-55
@@ -49,1 +49,8 @@
+
+// Detect the register size dynamically.
+uint32_t
+UpdateDynamicRegisterSize (ExecutionContext *exe_ctx,
+  

Re: [Lldb-commits] [PATCH] D22235: Build clang Debug if we build lldb debug.

2016-07-12 Thread Greg Clayton via lldb-commits
clayborg requested changes to this revision.
clayborg added a comment.
This revision now requires changes to proceed.

As Todd said, we already have a "DebugClang" configuration for this. We should 
abandon this change.


http://reviews.llvm.org/D22235



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


Re: [Lldb-commits] [PATCH] D22235: Build clang Debug if we build lldb debug.

2016-07-12 Thread Stephane Sezer via lldb-commits
sas abandoned this revision.
sas added a comment.

Ah, makes sense, I had missed the `DebugClang` build configuration. Thanks for 
pointing this out.


http://reviews.llvm.org/D22235



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


[Lldb-commits] [lldb] r275198 - Add logging to Linux Host::GetProcessAndStatInfo.

2016-07-12 Thread Oleksiy Vyalov via lldb-commits
Author: ovyalov
Date: Tue Jul 12 13:14:27 2016
New Revision: 275198

URL: http://llvm.org/viewvc/llvm-project?rev=275198&view=rev
Log:
Add logging to Linux Host::GetProcessAndStatInfo.

Modified:
lldb/trunk/source/Host/linux/Host.cpp

Modified: lldb/trunk/source/Host/linux/Host.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/linux/Host.cpp?rev=275198&r1=275197&r2=275198&view=diff
==
--- lldb/trunk/source/Host/linux/Host.cpp (original)
+++ lldb/trunk/source/Host/linux/Host.cpp Tue Jul 12 13:14:27 2016
@@ -8,12 +8,14 @@
 
//===--===//
 
 // C Includes
-#include 
-#include 
-#include 
-#include 
 #include 
+#include 
 #include 
+#include 
+#include 
+#include 
+#include 
+#include 
 
 // C++ Includes
 // Other libraries and framework includes
@@ -291,15 +293,25 @@ GetProcessAndStatInfo (lldb::pid_t pid,
 ::memset (&stat_info, 0, sizeof(stat_info));
 stat_info.ppid = LLDB_INVALID_PROCESS_ID;
 
+Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS));
+
 // Use special code here because proc/[pid]/exe is a symbolic link.
 char link_path[PATH_MAX];
 char exe_path[PATH_MAX] = "";
 if (snprintf (link_path, PATH_MAX, "/proc/%" PRIu64 "/exe", pid) <= 0)
+{
+if (log)
+log->Printf("%s: failed to sprintf pid %" PRIu64, __FUNCTION__, 
pid);
 return false;
+}
 
 ssize_t len = readlink (link_path, exe_path, sizeof(exe_path) - 1);
 if (len <= 0)
+{
+if (log)
+log->Printf("%s: failed to read link %s: %s", __FUNCTION__, 
link_path, strerror(errno));
 return false;
+}
 
 // readlink does not append a null byte.
 exe_path[len] = 0;


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


[Lldb-commits] [lldb] r275199 - Tweaks to the NSIndexPath formatter to enhance stability

2016-07-12 Thread Enrico Granata via lldb-commits
Author: enrico
Date: Tue Jul 12 13:33:52 2016
New Revision: 275199

URL: http://llvm.org/viewvc/llvm-project?rev=275199&view=rev
Log:
Tweaks to the NSIndexPath formatter to enhance stability

rdar://problem/25767901


Modified:
lldb/trunk/source/Plugins/Language/ObjC/NSIndexPath.cpp

Modified: lldb/trunk/source/Plugins/Language/ObjC/NSIndexPath.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/NSIndexPath.cpp?rev=275199&r1=275198&r2=275199&view=diff
==
--- lldb/trunk/source/Plugins/Language/ObjC/NSIndexPath.cpp (original)
+++ lldb/trunk/source/Plugins/Language/ObjC/NSIndexPath.cpp Tue Jul 12 13:33:52 
2016
@@ -31,6 +31,8 @@ class NSIndexPathSyntheticFrontEnd : pub
 public:
 NSIndexPathSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp) :
 SyntheticChildrenFrontEnd (*valobj_sp.get()),
+m_descriptor_sp(nullptr),
+m_impl(),
 m_ptr_size(0),
 m_uint_star_type()
 {
@@ -169,9 +171,8 @@ protected:
 Invalid
 };
 
-struct Impl {
-Mode m_mode;
-
+struct Impl
+{
 size_t
 GetNumIndexes ()
 {
@@ -200,48 +201,52 @@ protected:
 return m_outsourced.GetIndexAtIndex (idx);
 }
 }
-
-struct InlinedIndexes {
+
+struct InlinedIndexes
+{
 public:
-  void SetIndexes(uint64_t value, Process& p)
-  {
-  m_indexes = value;
-  _lengthForInlinePayload(p.GetAddressByteSize());
-  m_process = &p;
-  }
-  
-  size_t
-  GetNumIndexes ()
-  {
-  return m_count;
-  }
-
-  lldb::ValueObjectSP
-  GetIndexAtIndex (size_t idx, const CompilerType& desired_type)
-  {
-  std::pair 
value(_indexAtPositionForInlinePayload(idx));
-  if (!value.second)
-  return nullptr;
-  
-  Value v;
-  if (m_ptr_size == 8)
-  {
-  Scalar scalar( (unsigned long long)value.first );
-  v = Value(scalar);
-  }
-  else
-  {
-  Scalar scalar( (unsigned int)value.first );
-  v = Value(scalar);
-  }
-
-  v.SetCompilerType(desired_type);
-
-  StreamString idx_name;
-  idx_name.Printf("[%" PRIu64 "]", (uint64_t)idx);
+void SetIndexes(uint64_t value, Process& p)
+{
+m_indexes = value;
+_lengthForInlinePayload(p.GetAddressByteSize());
+m_process = &p;
+}
+
+size_t
+GetNumIndexes ()
+{
+return m_count;
+}
+
+lldb::ValueObjectSP
+GetIndexAtIndex (size_t idx, const CompilerType& desired_type)
+{
+if (!m_process)
+return nullptr;
 
-  return ValueObjectConstResult::Create(m_process, v, 
ConstString(idx_name.GetData()));
-  }
+std::pair 
value(_indexAtPositionForInlinePayload(idx));
+if (!value.second)
+return nullptr;
+
+Value v;
+if (m_ptr_size == 8)
+{
+Scalar scalar( (unsigned long long)value.first );
+v = Value(scalar);
+}
+else
+{
+Scalar scalar( (unsigned int)value.first );
+v = Value(scalar);
+}
+
+v.SetCompilerType(desired_type);
+
+StreamString idx_name;
+idx_name.Printf("[%" PRIu64 "]", (uint64_t)idx);
+
+return ValueObjectConstResult::Create(m_process, v, 
ConstString(idx_name.GetData()));
+}
 
 void
 Clear ()
@@ -251,53 +256,60 @@ protected:
 m_ptr_size = 0;
 m_process = nullptr;
 }
-
+
+InlinedIndexes () :
+m_indexes(0),
+m_count(0),
+m_ptr_size(0),
+m_process(nullptr)
+{
+}
+
 private:
-  uint64_t m_indexes;
-  size_t m_count;
-  uint32_t m_ptr_size;
-  Process *m_process;
-
-  // cfr. Foundation for the details of this code
-  size_t _lengthForInlinePayload(uint32_t ptr_size) {
-  m_ptr_size = ptr_size;
-  if (m_ptr_size == 8)
-  m_count = ((m_indexes >> 3) & 0x7);
-  else
-  m_count = ((m_indexes >> 3) & 0x3);
-  return m_count;
- 

[Lldb-commits] [PATCH] D22278: Fix a check in the objc trampoline handler

2016-07-12 Thread Stephane Sezer via lldb-commits
sas created this revision.
sas added reviewers: jingham, clayborg.
sas added a subscriber: lldb-commits.

The function FunctionCaller::WriteFunctionArguments returns false on
errors, so they should check for the false return value.

Change by Walter Erquinigo 

http://reviews.llvm.org/D22278

Files:
  
source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp

Index: 
source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
===
--- 
source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
+++ 
source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
@@ -818,7 +818,7 @@
 // if other threads were calling into here, but actually it isn't because 
we allocate a new args structure for
 // this call by passing args_addr = LLDB_INVALID_ADDRESS...
 
-if (impl_function_caller->WriteFunctionArguments(exe_ctx, args_addr, 
dispatch_values, diagnostics))
+if (!impl_function_caller->WriteFunctionArguments(exe_ctx, args_addr, 
dispatch_values, diagnostics))
 {
 if (log)
 {


Index: source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
===
--- source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
+++ source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
@@ -818,7 +818,7 @@
 // if other threads were calling into here, but actually it isn't because we allocate a new args structure for
 // this call by passing args_addr = LLDB_INVALID_ADDRESS...
 
-if (impl_function_caller->WriteFunctionArguments(exe_ctx, args_addr, dispatch_values, diagnostics))
+if (!impl_function_caller->WriteFunctionArguments(exe_ctx, args_addr, dispatch_values, diagnostics))
 {
 if (log)
 {
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [lldb] r275223 - Mark TagDecls as having external visible storage, like ContainerDecls.

2016-07-12 Thread Sean Callanan via lldb-commits
Author: spyffe
Date: Tue Jul 12 17:42:07 2016
New Revision: 275223

URL: http://llvm.org/viewvc/llvm-project?rev=275223&view=rev
Log:
Mark TagDecls as having external visible storage, like ContainerDecls.

The lookup tables can get out of date during the lifetime of the object so we
need to preserve LLDB's ability to answer questions about TagDecls' contents.



Modified:
lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata

Modified: lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata?rev=275223&r1=275222&r2=275223&view=diff
==
--- lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata (original)
+++ lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata Tue Jul 12 17:42:07 
2016
@@ -10,4 +10,7 @@


+   
+   
 


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


[Lldb-commits] [lldb] r275225 - This doesn't compiler on Darwin. Skipping it.

2016-07-12 Thread Greg Clayton via lldb-commits
Author: gclayton
Date: Tue Jul 12 18:06:28 2016
New Revision: 275225

URL: http://llvm.org/viewvc/llvm-project?rev=275225&view=rev
Log:
This doesn't compiler on Darwin. Skipping it.


Modified:

lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/smart_ptr/TestDataFormatterStdSmartPtr.py

Modified: 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/smart_ptr/TestDataFormatterStdSmartPtr.py
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/smart_ptr/TestDataFormatterStdSmartPtr.py?rev=275225&r1=275224&r2=275225&view=diff
==
--- 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/smart_ptr/TestDataFormatterStdSmartPtr.py
 (original)
+++ 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/smart_ptr/TestDataFormatterStdSmartPtr.py
 Tue Jul 12 18:06:28 2016
@@ -15,6 +15,7 @@ class StdSmartPtrDataFormatterTestCase(T
 
 @skipIfFreeBSD
 @skipIfWindows # libstdcpp not ported to Windows
+@skipIfDarwin # doesn't compile on Darwin
 def test_with_run_command(self):
 self.build()
 self.runCmd("file a.out", CURRENT_EXECUTABLE_SET)


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


[Lldb-commits] [lldb] r275226 - Remove assert since it was crashing the mutli process driver tests. Made the code behave correctly when indexes are out of range or the collection is empty and is "log

2016-07-12 Thread Greg Clayton via lldb-commits
Author: gclayton
Date: Tue Jul 12 18:07:50 2016
New Revision: 275226

URL: http://llvm.org/viewvc/llvm-project?rev=275226&view=rev
Log:
Remove assert since it was crashing the mutli process driver tests. Made the 
code behave correctly when indexes are out of range or the collection is empty 
and is "log enable lldb unwind" is enabled, log an error message.


Modified:
lldb/trunk/source/Symbol/UnwindPlan.cpp

Modified: lldb/trunk/source/Symbol/UnwindPlan.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/UnwindPlan.cpp?rev=275226&r1=275225&r2=275226&view=diff
==
--- lldb/trunk/source/Symbol/UnwindPlan.cpp (original)
+++ lldb/trunk/source/Symbol/UnwindPlan.cpp Tue Jul 12 18:07:50 2016
@@ -385,16 +385,27 @@ UnwindPlan::IsValidRowIndex (uint32_t id
 const UnwindPlan::RowSP
 UnwindPlan::GetRowAtIndex (uint32_t idx) const
 {
-// You must call IsValidRowIndex(idx) first before calling this!!!
-assert (idx < m_row_list.size());
-return m_row_list[idx];
+if (idx < m_row_list.size())
+return m_row_list[idx];
+else
+{
+Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_UNWIND));
+if (log)
+log->Printf ("error: UnwindPlan::GetRowAtIndex(idx = %u) invalid 
index (number rows is %u)", idx, (uint32_t)m_row_list.size());
+return UnwindPlan::RowSP();
+}
 }
 
 const UnwindPlan::RowSP
 UnwindPlan::GetLastRow () const
 {
-// You must call GetRowCount() first to make sure there is at least one row
-assert (!m_row_list.empty());
+if (m_row_list.empty())
+{
+Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_UNWIND));
+if (log)
+log->Printf ("UnwindPlan::GetLastRow() when rows are empty");
+return UnwindPlan::RowSP();
+}
 return m_row_list.back();
 }
 


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


Re: [Lldb-commits] [lldb] r275223 - Mark TagDecls as having external visible storage, like ContainerDecls.

2016-07-12 Thread Sean Callanan via lldb-commits
Argh, this isn’t what I wanted to commit AT ALL.
Sorry folks.  I’ll fix this momentarily.
Thanks to Jim Ingham for pointing it out.

Sean

> On Jul 12, 2016, at 3:42 PM, Sean Callanan via lldb-commits 
>  wrote:
> 
> Author: spyffe
> Date: Tue Jul 12 17:42:07 2016
> New Revision: 275223
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=275223&view=rev
> Log:
> Mark TagDecls as having external visible storage, like ContainerDecls.
> 
> The lookup tables can get out of date during the lifetime of the object so we
> need to preserve LLDB's ability to answer questions about TagDecls' contents.
> 
> 
> 
> Modified:
>lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata
> 
> Modified: lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata
> URL: 
> http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata?rev=275223&r1=275222&r2=275223&view=diff
> ==
> --- lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata (original)
> +++ lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata Tue Jul 12 17:42:07 
> 2016
> @@ -10,4 +10,7 @@
>   location = "group:tools/lldb-perf/lldbperf.xcodeproj">
>
> ++  location = "group:llvm">
> +   
> 
> 
> 
> ___
> 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] [lldb] r275237 - Revert r275223, which committed the wrong thing.

2016-07-12 Thread Sean Callanan via lldb-commits
Author: spyffe
Date: Tue Jul 12 18:31:42 2016
New Revision: 275237

URL: http://llvm.org/viewvc/llvm-project?rev=275237&view=rev
Log:
Revert r275223, which committed the wrong thing.

Modified:
lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata

Modified: lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata?rev=275237&r1=275236&r2=275237&view=diff
==
--- lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata (original)
+++ lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata Tue Jul 12 18:31:42 
2016
@@ -10,7 +10,4 @@


-   
-   
 


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


Re: [Lldb-commits] [lldb] r275223 - Mark TagDecls as having external visible storage, like ContainerDecls.

2016-07-12 Thread Sean Callanan via lldb-commits
Reverted with r275237.

Sean

> On Jul 12, 2016, at 4:33 PM, Sean Callanan  wrote:
> 
> Argh, this isn’t what I wanted to commit AT ALL.
> Sorry folks.  I’ll fix this momentarily.
> Thanks to Jim Ingham for pointing it out.
> 
> Sean
> 
>> On Jul 12, 2016, at 3:42 PM, Sean Callanan via lldb-commits 
>>  wrote:
>> 
>> Author: spyffe
>> Date: Tue Jul 12 17:42:07 2016
>> New Revision: 275223
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=275223&view=rev
>> Log:
>> Mark TagDecls as having external visible storage, like ContainerDecls.
>> 
>> The lookup tables can get out of date during the lifetime of the object so we
>> need to preserve LLDB's ability to answer questions about TagDecls' contents.
>> 
>> 
>> 
>> Modified:
>>   lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata
>> 
>> Modified: lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata
>> URL: 
>> http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata?rev=275223&r1=275222&r2=275223&view=diff
>> ==
>> --- lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata (original)
>> +++ lldb/trunk/lldb.xcworkspace/contents.xcworkspacedata Tue Jul 12 17:42:07 
>> 2016
>> @@ -10,4 +10,7 @@
>>   >  location = "group:tools/lldb-perf/lldbperf.xcodeproj">
>>   
>> +   > +  location = "group:llvm">
>> +   
>> 
>> 
>> 
>> ___
>> 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] [PATCH] D21757: Fix lldb-mi disable/enable breakpoints commands

2016-07-12 Thread Chuck Ries via lldb-commits
ChuckR added a subscriber: ki.stfu.
ChuckR added a comment.

@abidh @ki.stfu Do you have any feedback? We would like to check this in and I 
want to get more sign off then just me.


Repository:
  rL LLVM

http://reviews.llvm.org/D21757



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


Re: [Lldb-commits] [PATCH] D22284: [LLDB] Proposed change in multi-line edit behavior (Return = end/append, Meta+Return = line break)

2016-07-12 Thread Eugene Zelenko via lldb-commits
Eugene.Zelenko added a subscriber: Eugene.Zelenko.


Comment at: include/lldb/Host/Editline.h:289
@@ +288,3 @@
+unsigned char
+EndOrAddLineCommand (int ch);
+

Will be good idea to not add space between name and arguments list in new code. 
Same for other places.


Repository:
  rL LLVM

http://reviews.llvm.org/D22284



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


[Lldb-commits] [PATCH] D22294: Add functionality for rewriting symbols

2016-07-12 Thread Francis Ricci via lldb-commits
fjricci created this revision.
fjricci added reviewers: clayborg, lattner.
fjricci added subscribers: sas, lldb-commits.
Herald added a subscriber: kubabrecka.

Clang supports symbol rewrites via the -frewrite-map-file flag,
this patch adds complementary functionality in lldb.

Re-written symbols are required when, for example, two versions of the
same library are linked to the same binary, and the user needs to
differentiate the symbols.

The SymbolRewriter implemented in this patch will use a rewrite map
provided via the 'target symbols rewrite' command to lookup the original
symbol names instead of the names re-written by clang.

http://reviews.llvm.org/D22294

Files:
  include/lldb/Core/Module.h
  include/lldb/Core/ModuleList.h
  include/lldb/Symbol/SymbolRewriter.h
  include/lldb/Symbol/Symtab.h
  include/lldb/Target/Target.h
  include/lldb/lldb-forward.h
  lldb.xcodeproj/project.pbxproj
  packages/Python/lldbsuite/test/lang/c/symbol_rewriter/Makefile
  packages/Python/lldbsuite/test/lang/c/symbol_rewriter/TestSymbolRewriter.py
  packages/Python/lldbsuite/test/lang/c/symbol_rewriter/main.c
  packages/Python/lldbsuite/test/lang/c/symbol_rewriter/rewrite.map
  source/API/SBModule.cpp
  source/API/SBTarget.cpp
  source/Breakpoint/BreakpointResolverName.cpp
  source/Commands/CommandObjectSource.cpp
  source/Commands/CommandObjectTarget.cpp
  source/Core/AddressResolverName.cpp
  source/Core/Disassembler.cpp
  source/Core/Module.cpp
  source/Core/ModuleList.cpp
  source/Core/SourceManager.cpp
  source/Expression/IRExecutionUnit.cpp
  source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
  source/Plugins/DynamicLoader/Hexagon-DYLD/DynamicLoaderHexagonDYLD.cpp
  source/Plugins/DynamicLoader/Hexagon-DYLD/HexagonDYLDRendezvous.cpp
  source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
  source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp
  source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp
  source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
  source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
  
source/Plugins/InstrumentationRuntime/AddressSanitizer/AddressSanitizerRuntime.cpp
  
source/Plugins/InstrumentationRuntime/ThreadSanitizer/ThreadSanitizerRuntime.cpp
  source/Plugins/JITLoader/GDB/JITLoaderGDB.cpp
  source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp
  source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp
  source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
  
source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
  
source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
  source/Plugins/MemoryHistory/asan/MemoryHistoryASan.cpp
  source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
  source/Plugins/Process/Utility/InferiorCallPOSIX.cpp
  source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
  source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
  source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
  source/Plugins/SystemRuntime/MacOSX/SystemRuntimeMacOSX.cpp
  source/Symbol/CMakeLists.txt
  source/Symbol/Symbol.cpp
  source/Symbol/SymbolRewriter.cpp
  source/Symbol/Symtab.cpp
  source/Target/ObjCLanguageRuntime.cpp
  source/Target/Target.cpp

Index: source/Target/Target.cpp
===
--- source/Target/Target.cpp
+++ source/Target/Target.cpp
@@ -78,6 +78,7 @@
   m_mutex(),
   m_arch(target_arch),
   m_images(this),
+  m_symbol_rewriter(),
   m_section_load_history(),
   m_breakpoint_list(false),
   m_internal_breakpoint_list(true),
Index: source/Target/ObjCLanguageRuntime.cpp
===
--- source/Target/ObjCLanguageRuntime.cpp
+++ source/Target/ObjCLanguageRuntime.cpp
@@ -105,6 +105,7 @@
 
 SymbolContextList sc_list;
 const size_t matching_symbols = modules.FindSymbolsWithNameAndType (name,
+m_process->GetTarget().GetSymbolRewriter(),
 eSymbolTypeObjCClass,
 sc_list);
 
Index: source/Symbol/Symtab.cpp
===
--- source/Symbol/Symtab.cpp
+++ source/Symbol/Symtab.cpp
@@ -18,6 +18,7 @@
 #include "lldb/Symbol/ObjectFile.h"
 #include "lldb/Symbol/Symbol.h"
 #include "lldb/Symbol/SymbolContext.h"
+#include "lldb/Symbol/SymbolRewriter.h"
 #include "lldb/Symbol/Symtab.h"
 #include "Plugins/Language/ObjC/ObjCLanguage.h"
 #include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
@@ -806,11 +807,14 @@
 }
 
 size_t
-Symtab::FindAllSymbolsWithNameAndType (const ConstString &name, SymbolType symbol_type, std::vector& symbol_indexes)
+Symtab::FindAllSymbolsWithNameAn

Re: [Lldb-commits] [PATCH] D22266: Add "support" for DW_CFA_GNU_args_size to the unwinder

2016-07-12 Thread Jason Molenda via lldb-commits
jasonmolenda accepted this revision.
jasonmolenda added a comment.
This revision is now accepted and ready to land.

This is fine - is there a binary using this?  I'd love to see the assembly code 
and a dump of the eh_frame CFI.

I googled around and didn't find much about DW_CFA_GNU_args_size but in the 
libunwind llvm sources (v. 
https://llvm.org/svn/llvm-project/libunwind/trunk/src/ ) it takes the uleb 
value and adjusts the stack pointer by that value??  I don't see why that 
wouldn't be encoded in the normal "CFA is sp + offset" type rule of eh_frame so 
it must not be quite that simple.  lldb will probably unwind incorrectly if 
code built frameless (not using a frame pointer register) is encountered.


http://reviews.llvm.org/D22266



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