Re: [Lldb-commits] [PATCH] D20565: Add MemoryRegionInfo to SB API
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
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
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.
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.
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.
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
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
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.
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.
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