Re: [Lldb-commits] [PATCH] D20565: Add MemoryRegionInfo to SB API

2016-06-01 Thread Howard Hellyer via lldb-commits
hhellyer updated this revision to Diff 59205.
hhellyer added a comment.

I've switch to a unique_ptr from a shared_ptr in SBMemoryRegionInfo.


http://reviews.llvm.org/D20565

Files:
  include/lldb/API/LLDB.h
  include/lldb/API/SBDefines.h
  include/lldb/API/SBMemoryRegionInfo.h
  include/lldb/API/SBMemoryRegionInfoList.h
  include/lldb/API/SBProcess.h
  include/lldb/API/SBStream.h
  include/lldb/Target/Process.h
  include/lldb/lldb-forward.h
  source/API/CMakeLists.txt
  source/API/SBMemoryRegionInfo.cpp
  source/API/SBMemoryRegionInfoList.cpp
  source/API/SBProcess.cpp

Index: source/API/SBProcess.cpp
===
--- source/API/SBProcess.cpp
+++ source/API/SBProcess.cpp
@@ -23,6 +23,7 @@
 #include "lldb/Core/State.h"
 #include "lldb/Core/Stream.h"
 #include "lldb/Core/StreamFile.h"
+#include "lldb/Target/MemoryRegionInfo.h"
 #include "lldb/Target/Process.h"
 #include "lldb/Target/RegisterContext.h"
 #include "lldb/Target/SystemRuntime.h"
@@ -36,6 +37,8 @@
 #include "lldb/API/SBDebugger.h"
 #include "lldb/API/SBEvent.h"
 #include "lldb/API/SBFileSpec.h"
+#include "lldb/API/SBMemoryRegionInfo.h"
+#include "lldb/API/SBMemoryRegionInfoList.h"
 #include "lldb/API/SBThread.h"
 #include "lldb/API/SBThreadCollection.h"
 #include "lldb/API/SBStream.h"
@@ -1476,3 +1479,74 @@
 error.ref() = PluginManager::SaveCore(process_sp, core_file);
 return error;
 }
+
+lldb::SBError
+SBProcess::GetMemoryRegionInfo (lldb::addr_t load_addr, SBMemoryRegionInfo &sb_region_info)
+{
+lldb::SBError sb_error;
+ProcessSP process_sp(GetSP());
+MemoryRegionInfoSP region_info_sp = std::make_shared();
+if (process_sp)
+{
+Process::StopLocker stop_locker;
+if (stop_locker.TryLock(&process_sp->GetRunLock()))
+{
+std::lock_guard guard(process_sp->GetTarget().GetAPIMutex());
+sb_error.ref() = process_sp->GetMemoryRegionInfo(load_addr, *region_info_sp);
+if( sb_error.Success() ) {
+sb_region_info.ref() = *region_info_sp;
+}
+}
+else
+{
+Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+if (log)
+log->Printf ("SBProcess(%p)::GetMemoryRegionInfo() => error: process is running",
+ static_cast(process_sp.get()));
+sb_error.SetErrorString("process is running");
+}
+}
+else
+{
+sb_error.SetErrorString ("SBProcess is invalid");
+}
+return sb_error;
+}
+
+lldb::SBMemoryRegionInfoList
+SBProcess::GetMemoryRegions()
+{
+lldb::SBError sb_error;
+lldb::SBMemoryRegionInfoList sb_region_list;
+ProcessSP process_sp(GetSP());
+if (process_sp)
+{
+Process::StopLocker stop_locker;
+if (stop_locker.TryLock(&process_sp->GetRunLock()))
+{
+std::lock_guard guard(process_sp->GetTarget().GetAPIMutex());
+std::vector region_list;
+sb_error.ref() = process_sp->GetMemoryRegions(region_list);
+if( sb_error.Success() ) {
+std::vector::iterator end = region_list.end();
+for( std::vector::iterator it = region_list.begin(); it != end; it++ ) {
+SBMemoryRegionInfo sb_region_info(it->get());
+sb_region_list.Append(sb_region_info);
+}
+}
+}
+else
+{
+Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+if (log)
+log->Printf ("SBProcess(%p)::GetMemoryRegionInfo() => error: process is running",
+ static_cast(process_sp.get()));
+sb_error.SetErrorString("process is running");
+}
+}
+else
+{
+sb_error.SetErrorString ("SBProcess is invalid");
+}
+return sb_region_list;
+}
Index: source/API/SBMemoryRegionInfoList.cpp
===
--- /dev/null
+++ source/API/SBMemoryRegionInfoList.cpp
@@ -0,0 +1,172 @@
+//===-- SBMemoryRegionInfoList.cpp --*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===--===//
+
+#include "lldb/API/SBMemoryRegionInfo.h"
+#include "lldb/API/SBMemoryRegionInfoList.h"
+#include "lldb/API/SBStream.h"
+#include "lldb/Core/Log.h"
+#include "lldb/Target/MemoryRegionInfo.h"
+
+#include 
+
+using namespace lldb;
+using namespace lldb_private;
+
+class MemoryRegionInfoListImpl
+{
+public:
+MemoryRegionInfoListImpl () :
+m_regions()
+{
+}
+
+MemoryRegionInfoListImpl (const MemoryRegionInfoListImpl& rhs) :
+m_regions(rhs.m_regions)
+{
+}
+
+MemoryRegionInfoListImpl&
+o

Re: [Lldb-commits] [PATCH] D20565: Add MemoryRegionInfo to SB API

2016-06-01 Thread Howard Hellyer via lldb-commits
hhellyer added a comment.

In http://reviews.llvm.org/D20565#444507, @clayborg wrote:

> My main reason for making sure we use std::unique_ptr is for API 
> compatibility in the future. The size of std::unique_ptr and std::shared_ptr 
> differs and if anyone wrote an IDE or tool that links against the LLDB public 
> API, then we can't switch the layout of a class without breaking our ABI. So 
> it is safest to go with a std::unique_ptr since the backing class is so 
> simple and isn't expensive to copy.


That's reasonable, the objects themselves aren't so large or numerous that not 
sharing them will make much difference even if we don't ever need to modify 
them.
SBMemoryRegionInfoList was already using a unique_ptr to hold a reference to 
its impl object so that didn't need updating.


http://reviews.llvm.org/D20565



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


Re: [Lldb-commits] [PATCH] D20565: Add MemoryRegionInfo to SB API

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

One last thing: we should default construct a MemoryRegionInfo in all 
SBMemoryRegionInfo::SBMemoryRegionInfo() constructors so we don't have a make 
sure to call a non-const ref() method before it the pointer is valid. I know 
there is other code that does this, but any new code we have been updating to 
always default constructing an object into the std::unique_ptr just to be safe 
and avoid potential crashes.


http://reviews.llvm.org/D20565



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


Re: [Lldb-commits] [PATCH] D20835: Mark the current column when displaying the context of the current breakpoint on the terminal.

2016-06-01 Thread Adrian Prantl via lldb-commits
aprantl updated this revision to Diff 59264.
aprantl added a comment.

I have one last question:
While trying to add a testcase I noticed that DisplaySourceLinesWithLineNumbers 
is still exported into Python with the old signature. What is the correct way 
to update the Python bindings?


http://reviews.llvm.org/D20835

Files:
  include/lldb/API/SBSourceManager.h
  include/lldb/Core/Debugger.h
  include/lldb/Core/SourceManager.h
  packages/Python/lldbsuite/test/settings/TestSettings.py
  packages/Python/lldbsuite/test/source-manager/TestSourceManager.py
  scripts/interface/SBSourceManager.i
  scripts/interface/SBStream.i
  source/API/SBSourceManager.cpp
  source/Commands/CommandObjectSource.cpp
  source/Core/Debugger.cpp
  source/Core/Disassembler.cpp
  source/Core/SourceManager.cpp
  source/Core/StreamAsynchronousIO.cpp
  source/Target/StackFrame.cpp

Index: source/Target/StackFrame.cpp
===
--- source/Target/StackFrame.cpp
+++ source/Target/StackFrame.cpp
@@ -1579,6 +1579,7 @@
 {
 size_t num_lines = target->GetSourceManager().DisplaySourceLinesWithLineNumbers (m_sc.line_entry.file,
   m_sc.line_entry.line,
+  m_sc.line_entry.column,
   source_lines_before,
   source_lines_after,
   "->",
Index: source/Core/StreamAsynchronousIO.cpp
===
--- source/Core/StreamAsynchronousIO.cpp
+++ source/Core/StreamAsynchronousIO.cpp
@@ -15,12 +15,11 @@
 using namespace lldb;
 using namespace lldb_private;
 
-
-StreamAsynchronousIO::StreamAsynchronousIO (Debugger &debugger, bool for_stdout) :
-Stream (0, 4, eByteOrderBig),
-m_debugger (debugger),
-m_data (),
-m_for_stdout (for_stdout)
+StreamAsynchronousIO::StreamAsynchronousIO(Debugger &debugger, bool for_stdout)
+: Stream(debugger.GetUseColor() ? eANSIColor : 0, 4, eByteOrderBig),
+  m_debugger(debugger),
+  m_data(),
+  m_for_stdout(for_stdout)
 {
 }
 
Index: source/Core/SourceManager.cpp
===
--- source/Core/SourceManager.cpp
+++ source/Core/SourceManager.cpp
@@ -22,6 +22,7 @@
 #include "lldb/Symbol/Function.h"
 #include "lldb/Symbol/SymbolContext.h"
 #include "lldb/Target/Target.h"
+#include "lldb/Utility/AnsiTerminal.h"
 
 using namespace lldb;
 using namespace lldb_private;
@@ -101,6 +102,7 @@
 SourceManager::DisplaySourceLinesWithLineNumbersUsingLastFile (uint32_t start_line,
uint32_t count,
uint32_t curr_line,
+   uint32_t curr_column,
const char* current_line_cstr,
Stream *s,
const SymbolContextList *bp_locs)
@@ -152,7 +154,21 @@
   prefix,
   line == curr_line ? current_line_cstr : "",
   line);
-size_t this_line_size = m_last_file_sp->DisplaySourceLines (line, 0, 0, s);
+bool DumbTerminal = s->GetFlags().Test(Stream::eANSIColor);
+size_t this_line_size =
+m_last_file_sp->DisplaySourceLines(line, line == curr_line ? curr_column : 0, s);
+if (DumbTerminal && curr_column && line == curr_line)
+{
+// Display caret cursor. Unfortunately we don't know the
+// length of the current token.
+std::string src_line;
+m_last_file_sp->GetLine(line, src_line);
+return_value += s->Printf("\t");
+// Insert a space for every non-tab character in the source line.
+for (int i = 0; i < curr_column - 1 && i < src_line.length(); ++i)
+  return_value += s->PutChar(src_line[i] == '\t' ? '\t' : ' ');
+return_value += s->Printf("^\n");
+}
 if (this_line_size == 0)
 {
 m_last_line = UINT32_MAX;
@@ -170,6 +186,7 @@
 (
 const FileSpec &file_spec,
 uint32_t line,
+uint32_t column,
 uint32_t context_before,
 uint32_t context_after,
 const char* current_line_cstr,
@@ -192,7 +209,7 @@
 m_last_line = 0;
 m_last_file_sp = file_sp;
 }
-

[Lldb-commits] [PATCH] D20875: Fix JavaArraySyntheticFrontEnd for non-reference ValueObject.

2016-06-01 Thread Andrew Ford via lldb-commits
andrewford created this revision.
andrewford added reviewers: clayborg, tberghammer.
andrewford added a subscriber: lldb-commits.

Fix missing return after checking that m_backend is not a pointer or reference 
type.

http://reviews.llvm.org/D20875

Files:
  source/Plugins/Language/Java/JavaFormatterFunctions.cpp

Index: source/Plugins/Language/Java/JavaFormatterFunctions.cpp
===
--- source/Plugins/Language/Java/JavaFormatterFunctions.cpp
+++ source/Plugins/Language/Java/JavaFormatterFunctions.cpp
@@ -99,7 +99,7 @@
 GetDereferencedValueObject()
 {
 if (!m_backend.IsPointerOrReferenceType())
-m_backend.GetSP();
+return m_backend.GetSP();
 
 Error error;
 return m_backend.Dereference(error);


Index: source/Plugins/Language/Java/JavaFormatterFunctions.cpp
===
--- source/Plugins/Language/Java/JavaFormatterFunctions.cpp
+++ source/Plugins/Language/Java/JavaFormatterFunctions.cpp
@@ -99,7 +99,7 @@
 GetDereferencedValueObject()
 {
 if (!m_backend.IsPointerOrReferenceType())
-m_backend.GetSP();
+return m_backend.GetSP();
 
 Error error;
 return m_backend.Dereference(error);
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


Re: [Lldb-commits] [PATCH] D20875: Fix JavaArraySyntheticFrontEnd for non-reference ValueObject.

2016-06-01 Thread Tamas Berghammer via lldb-commits
tberghammer accepted this revision.
tberghammer added a comment.
This revision is now accepted and ready to land.

Looks good, thanks for fixing it (I seen strange issues caused by this so it 
will help a lot).


http://reviews.llvm.org/D20875



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


[Lldb-commits] [lldb] r271433 - [tsan] Prefer mangled name looking up variable declaration for racy address

2016-06-01 Thread Devin Coughlin via lldb-commits
Author: dcoughlin
Date: Wed Jun  1 16:32:45 2016
New Revision: 271433

URL: http://llvm.org/viewvc/llvm-project?rev=271433&view=rev
Log:
[tsan] Prefer mangled name looking up variable declaration for racy address

For Thread Sanitizer reports, LLDB tries to find a global variable declaration
corresponding to the racy address in order to provide a filename and line
number. This commit changes the lookup of the variable to use the mangled
name for lookup and fall back to the demangled version if unavailable. This
is needed to report locations of races on Swift global variables.

I've also added a test to make sure we look up C++ globals correctly.

rdar://problem/26459401

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

Added:

lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/

lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/Makefile

lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/TestTsanCPPGlobalLocation.py

lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/main.cpp
Modified:

lldb/trunk/source/Plugins/InstrumentationRuntime/ThreadSanitizer/ThreadSanitizerRuntime.cpp

Added: 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/Makefile
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/Makefile?rev=271433&view=auto
==
--- 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/Makefile
 (added)
+++ 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/Makefile
 Wed Jun  1 16:32:45 2016
@@ -0,0 +1,6 @@
+LEVEL = ../../../make
+
+CXX_SOURCES := main.cpp
+CFLAGS_EXTRAS := -fsanitize=thread -g
+
+include $(LEVEL)/Makefile.rules

Added: 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/TestTsanCPPGlobalLocation.py
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/TestTsanCPPGlobalLocation.py?rev=271433&view=auto
==
--- 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/TestTsanCPPGlobalLocation.py
 (added)
+++ 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/TestTsanCPPGlobalLocation.py
 Wed Jun  1 16:32:45 2016
@@ -0,0 +1,54 @@
+"""
+Tests that TSan correctly reports the filename and line number of a racy 
global C++ variable.
+"""
+
+import os, time
+import lldb
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.decorators import *
+import lldbsuite.test.lldbutil as lldbutil
+import json
+
+class TsanCPPGlobalLocationTestCase(TestBase):
+
+mydir = TestBase.compute_mydir(__file__)
+
+@expectedFailureAll(oslist=["linux"], bugnumber="non-core functionality, 
need to reenable and fix later (DES 2014.11.07)")
+@skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default
+@skipIfRemote
+@skipUnlessCompilerRt
+@skipUnlessThreadSanitizer
+def test (self):
+self.build ()
+self.tsan_tests ()
+
+def setUp(self):
+# Call super's setUp().
+TestBase.setUp(self)
+
+def tsan_tests (self):
+exe = os.path.join (os.getcwd(), "a.out")
+self.expect("file " + exe, patterns = [ "Current executable set to 
.*a.out" ])
+
+self.runCmd("run")
+
+stop_reason = 
self.dbg.GetSelectedTarget().process.GetSelectedThread().GetStopReason()
+if stop_reason == lldb.eStopReasonExec:
+# On OS X 10.10 and older, we need to re-exec to enable 
interceptors.
+self.runCmd("continue")
+
+# the stop reason of the thread should be breakpoint.
+self.expect("thread list", "A data race should be detected",
+substrs = ['stopped', 'stop reason = Data race detected'])
+
+self.expect("thread info -s", "The extended stop info should contain 
the TSan provided fields",
+substrs = ["instrumentation_class", "description", "mops"])
+
+output_lines = self.res.GetOutput().split('\n')
+json_line = '\n'.join(output_lines[2:])
+data = json.loads(json_line)
+self.assertEqual(data["instrumentation_class"], "ThreadSanitizer")
+self.assertEqual(data["issue_type"], "data-race")
+
+self.assertTrue(data["location_filename"].endswith("/main.cpp"))
+self.assertEqual(data["location_line"], line_number('main.cpp', '// 
global variable'))

Added: 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/main.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/main.cpp?rev=271433&view=auto

Re: [Lldb-commits] [PATCH] D20760: [tsan] Prefer mangled name when looking up global variable declaration for racy address

2016-06-01 Thread Devin Coughlin via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL271433: [tsan] Prefer mangled name looking up variable 
declaration for racy address (authored by dcoughlin).

Changed prior to commit:
  http://reviews.llvm.org/D20760?vs=58862&id=59280#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D20760

Files:
  
lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/Makefile
  
lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/TestTsanCPPGlobalLocation.py
  
lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/main.cpp
  
lldb/trunk/source/Plugins/InstrumentationRuntime/ThreadSanitizer/ThreadSanitizerRuntime.cpp

Index: lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/Makefile
===
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/Makefile
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/Makefile
@@ -0,0 +1,6 @@
+LEVEL = ../../../make
+
+CXX_SOURCES := main.cpp
+CFLAGS_EXTRAS := -fsanitize=thread -g
+
+include $(LEVEL)/Makefile.rules
Index: lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/TestTsanCPPGlobalLocation.py
===
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/TestTsanCPPGlobalLocation.py
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/TestTsanCPPGlobalLocation.py
@@ -0,0 +1,54 @@
+"""
+Tests that TSan correctly reports the filename and line number of a racy global C++ variable.
+"""
+
+import os, time
+import lldb
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.decorators import *
+import lldbsuite.test.lldbutil as lldbutil
+import json
+
+class TsanCPPGlobalLocationTestCase(TestBase):
+
+mydir = TestBase.compute_mydir(__file__)
+
+@expectedFailureAll(oslist=["linux"], bugnumber="non-core functionality, need to reenable and fix later (DES 2014.11.07)")
+@skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default
+@skipIfRemote
+@skipUnlessCompilerRt
+@skipUnlessThreadSanitizer
+def test (self):
+self.build ()
+self.tsan_tests ()
+
+def setUp(self):
+# Call super's setUp().
+TestBase.setUp(self)
+
+def tsan_tests (self):
+exe = os.path.join (os.getcwd(), "a.out")
+self.expect("file " + exe, patterns = [ "Current executable set to .*a.out" ])
+
+self.runCmd("run")
+
+stop_reason = self.dbg.GetSelectedTarget().process.GetSelectedThread().GetStopReason()
+if stop_reason == lldb.eStopReasonExec:
+# On OS X 10.10 and older, we need to re-exec to enable interceptors.
+self.runCmd("continue")
+
+# the stop reason of the thread should be breakpoint.
+self.expect("thread list", "A data race should be detected",
+substrs = ['stopped', 'stop reason = Data race detected'])
+
+self.expect("thread info -s", "The extended stop info should contain the TSan provided fields",
+substrs = ["instrumentation_class", "description", "mops"])
+
+output_lines = self.res.GetOutput().split('\n')
+json_line = '\n'.join(output_lines[2:])
+data = json.loads(json_line)
+self.assertEqual(data["instrumentation_class"], "ThreadSanitizer")
+self.assertEqual(data["issue_type"], "data-race")
+
+self.assertTrue(data["location_filename"].endswith("/main.cpp"))
+self.assertEqual(data["location_line"], line_number('main.cpp', '// global variable'))
Index: lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/main.cpp
===
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/main.cpp
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/main.cpp
@@ -0,0 +1,38 @@
+//===-- main.cpp *- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===--===//
+#include 
+#include 
+#include 
+#include 
+
+long my_global_variable;  // global variable
+
+void *f1(void *p) {
+my_global_variable = 42;
+return NULL;
+}
+
+void *f2(void *p) {
+my_global_variable = 43;
+return NULL;
+}
+
+int main (int argc, char const *argv[])
+{
+pthread_t t1;
+pthread_create(&t1, NULL, f1, NULL);
+
+pthread_t t2;
+pthread_create(&t2, NULL, f2, NULL);
+
+pthread_join(t1, NULL);
+pthread_join(t2, NULL)

[Lldb-commits] [lldb] r271453 - Fix JavaArraySyntheticFrontEnd for non-reference ValueObject.

2016-06-01 Thread Tamas Berghammer via lldb-commits
Author: tberghammer
Date: Wed Jun  1 19:45:38 2016
New Revision: 271453

URL: http://llvm.org/viewvc/llvm-project?rev=271453&view=rev
Log:
Fix JavaArraySyntheticFrontEnd for non-reference ValueObject.

Summary: Fix missing return after checking that m_backend is not a pointer or 
reference type.

Reviewers: clayborg, tberghammer

Subscribers: lldb-commits

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

Modified:
lldb/trunk/source/Plugins/Language/Java/JavaFormatterFunctions.cpp

Modified: lldb/trunk/source/Plugins/Language/Java/JavaFormatterFunctions.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/Java/JavaFormatterFunctions.cpp?rev=271453&r1=271452&r2=271453&view=diff
==
--- lldb/trunk/source/Plugins/Language/Java/JavaFormatterFunctions.cpp 
(original)
+++ lldb/trunk/source/Plugins/Language/Java/JavaFormatterFunctions.cpp Wed Jun  
1 19:45:38 2016
@@ -99,7 +99,7 @@ private:
 GetDereferencedValueObject()
 {
 if (!m_backend.IsPointerOrReferenceType())
-m_backend.GetSP();
+return m_backend.GetSP();
 
 Error error;
 return m_backend.Dereference(error);


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


Re: [Lldb-commits] [PATCH] D20875: Fix JavaArraySyntheticFrontEnd for non-reference ValueObject.

2016-06-01 Thread Tamas Berghammer via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL271453: Fix JavaArraySyntheticFrontEnd for non-reference 
ValueObject. (authored by tberghammer).

Changed prior to commit:
  http://reviews.llvm.org/D20875?vs=59265&id=59321#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D20875

Files:
  lldb/trunk/source/Plugins/Language/Java/JavaFormatterFunctions.cpp

Index: lldb/trunk/source/Plugins/Language/Java/JavaFormatterFunctions.cpp
===
--- lldb/trunk/source/Plugins/Language/Java/JavaFormatterFunctions.cpp
+++ lldb/trunk/source/Plugins/Language/Java/JavaFormatterFunctions.cpp
@@ -99,7 +99,7 @@
 GetDereferencedValueObject()
 {
 if (!m_backend.IsPointerOrReferenceType())
-m_backend.GetSP();
+return m_backend.GetSP();
 
 Error error;
 return m_backend.Dereference(error);


Index: lldb/trunk/source/Plugins/Language/Java/JavaFormatterFunctions.cpp
===
--- lldb/trunk/source/Plugins/Language/Java/JavaFormatterFunctions.cpp
+++ lldb/trunk/source/Plugins/Language/Java/JavaFormatterFunctions.cpp
@@ -99,7 +99,7 @@
 GetDereferencedValueObject()
 {
 if (!m_backend.IsPointerOrReferenceType())
-m_backend.GetSP();
+return m_backend.GetSP();
 
 Error error;
 return m_backend.Dereference(error);
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits