[Lldb-commits] [PATCH] D29078: This patch implements a command to access and manipulate the Intel(R) MPX Boundary Tables.
valentinagiusti marked 2 inline comments as done. valentinagiusti added a comment. Hi Greg, thanks a lot for your review. I have a question about the API that you proposed, please have a look at the inline comments. Comment at: tools/intel-mpx/IntelMPXTablePlugin.cpp:143-150 + if (arch == llvm::Triple::ArchType::x86_64) { +bd_entry = +toU64(bd_entry_v[7], bd_entry_v[6], bd_entry_v[5], bd_entry_v[4], + bd_entry_v[3], bd_entry_v[2], bd_entry_v[1], bd_entry_v[0]); + } else { +bd_entry = +toU32(bd_entry_v[3], bd_entry_v[2], bd_entry_v[1], bd_entry_v[0]); clayborg wrote: > No need to do manual byte order stuff here, we can use SBData and you don't > need the "if (arch == ...)" since SBData knows the address byte size: > > ``` > SBError error; > SBData data; > data.SetData(error, bd_entry_v.data(), bd_entry_v.size(), > target.GetByteOrder(), target.GetAddressByteSize()); > lldb::addr_t bd_entry = data.GetAddress(error, 0); > ``` Hi Greg, thanks for the tip, but the code that you proposed doesn't work for i386 for me. GetAddress() fails with the error "unable to read data". To me it doesn't look like this API is able to handle different arch byte sizes. In fact, if I leave the "if (arch ==) check and I use GetUnsignedInt32() instead of GetAddress() it works. Is this a bug of GetAddress()? https://reviews.llvm.org/D29078 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r293045 - Replace chdir() usage with the llvm equivalent.
Author: labath Date: Wed Jan 25 05:10:52 2017 New Revision: 293045 URL: http://llvm.org/viewvc/llvm-project?rev=293045&view=rev Log: Replace chdir() usage with the llvm equivalent. This removes a hack in PosixApi.h, which tends to produce strange compile errors when it's included in the wrong order. Modified: lldb/trunk/include/lldb/Host/windows/PosixApi.h lldb/trunk/source/Host/windows/Windows.cpp lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp lldb/trunk/source/Target/Platform.cpp Modified: lldb/trunk/include/lldb/Host/windows/PosixApi.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/windows/PosixApi.h?rev=293045&r1=293044&r2=293045&view=diff == --- lldb/trunk/include/lldb/Host/windows/PosixApi.h (original) +++ lldb/trunk/include/lldb/Host/windows/PosixApi.h Wed Jan 25 05:10:52 2017 @@ -82,7 +82,6 @@ char *strcasestr(const char *s, const ch char *realpath(const char *name, char *resolved); int usleep(uint32_t useconds); -int chdir(const char *path); char *basename(char *path); char *dirname(char *path); Modified: lldb/trunk/source/Host/windows/Windows.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/windows/Windows.cpp?rev=293045&r1=293044&r2=293045&view=diff == --- lldb/trunk/source/Host/windows/Windows.cpp (original) +++ lldb/trunk/source/Host/windows/Windows.cpp Wed Jan 25 05:10:52 2017 @@ -23,12 +23,6 @@ #include #include -// These prototypes are defined in , but it also defines chdir(), -// giving multiply defined errors -extern "C" { -int _chdir(const char *path); -} - namespace { bool utf8ToWide(const char *utf8, wchar_t *buf, size_t bufSize) { const llvm::UTF8 *sourceStart = reinterpret_cast(utf8); @@ -189,9 +183,6 @@ char *basename(char *path) { return &l1[1]; } -// use _chdir() instead of SetCurrentDirectory() because it updates errno -int chdir(const char *path) { return _chdir(path); } - char *dirname(char *path) { char *l1 = strrchr(path, '\\'); char *l2 = strrchr(path, '/'); Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp?rev=293045&r1=293044&r2=293045&view=diff == --- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp (original) +++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp Wed Jan 25 05:10:52 2017 @@ -353,8 +353,6 @@ GDBRemoteCommunicationServerPlatform::Ha GDBRemoteCommunication::PacketResult GDBRemoteCommunicationServerPlatform::Handle_qGetWorkingDir( StringExtractorGDBRemote &packet) { - // If this packet is sent to a platform, then change the current working - // directory llvm::SmallString<64> cwd; if (std::error_code ec = llvm::sys::fs::current_path(cwd)) @@ -372,10 +370,8 @@ GDBRemoteCommunicationServerPlatform::Ha std::string path; packet.GetHexByteString(path); - // If this packet is sent to a platform, then change the current working - // directory - if (::chdir(path.c_str()) != 0) -return SendErrorResponse(errno); + if (std::error_code ec = llvm::sys::fs::set_current_path(path)) +return SendErrorResponse(ec.value()); return SendOKResponse(); } Modified: lldb/trunk/source/Target/Platform.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Platform.cpp?rev=293045&r1=293044&r2=293045&view=diff == --- lldb/trunk/source/Target/Platform.cpp (original) +++ lldb/trunk/source/Target/Platform.cpp Wed Jan 25 05:10:52 2017 @@ -748,14 +748,12 @@ Error Platform::Install(const FileSpec & bool Platform::SetWorkingDirectory(const FileSpec &file_spec) { if (IsHost()) { Log *log = GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PLATFORM); -if (log) - log->Printf("Platform::SetWorkingDirectory('%s')", - file_spec.GetCString()); -if (file_spec) { - if (::chdir(file_spec.GetCString()) == 0) -return true; +LLDB_LOG(log, "{0}", file_spec); +if (std::error_code ec = llvm::sys::fs::set_current_path(file_spec.GetPath())) { + LLDB_LOG(log, "error: {0}", ec.message()); + return false; } -return false; +return true; } else { m_working_dir.Clear(); return SetRemoteWorkingDirectory(file_spec); ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r293047 - include Host/Time.h in Cocoa.cpp
Author: labath Date: Wed Jan 25 05:19:49 2017 New Revision: 293047 URL: http://llvm.org/viewvc/llvm-project?rev=293047&view=rev Log: include Host/Time.h in Cocoa.cpp Time.h contains the necessary magic to enable timegm on all android targets. Modified: lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp Modified: lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp?rev=293047&r1=293046&r2=293047&view=diff == --- lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp (original) +++ lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp Wed Jan 25 05:19:49 2017 @@ -23,6 +23,7 @@ #include "lldb/DataFormatters/StringPrinter.h" #include "lldb/DataFormatters/TypeSummary.h" #include "lldb/Host/Endian.h" +#include "lldb/Host/Time.h" #include "lldb/Symbol/ClangASTContext.h" #include "lldb/Target/Language.h" #include "lldb/Target/ObjCLanguageRuntime.h" ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r293046 - NPL: Compartmentalize arm64 single step workaround better
Author: labath Date: Wed Jan 25 05:19:45 2017 New Revision: 293046 URL: http://llvm.org/viewvc/llvm-project?rev=293046&view=rev Log: NPL: Compartmentalize arm64 single step workaround better The main motivation for me doing this is being able to build an arm android lldb-server against api level 9 headers, but it seems like a good cleanup nonetheless. The entirety of the cpu_set_t dance now resides in SingleStepCheck.cpp, which is only built on arm64. Modified: lldb/trunk/source/Plugins/Process/Linux/NativeThreadLinux.cpp lldb/trunk/source/Plugins/Process/Linux/NativeThreadLinux.h lldb/trunk/source/Plugins/Process/Linux/SingleStepCheck.cpp lldb/trunk/source/Plugins/Process/Linux/SingleStepCheck.h Modified: lldb/trunk/source/Plugins/Process/Linux/NativeThreadLinux.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Linux/NativeThreadLinux.cpp?rev=293046&r1=293045&r2=293046&view=diff == --- lldb/trunk/source/Plugins/Process/Linux/NativeThreadLinux.cpp (original) +++ lldb/trunk/source/Plugins/Process/Linux/NativeThreadLinux.cpp Wed Jan 25 05:19:45 2017 @@ -220,63 +220,12 @@ Error NativeThreadLinux::Resume(uint32_t reinterpret_cast(data)); } -void NativeThreadLinux::MaybePrepareSingleStepWorkaround() { - if (!SingleStepWorkaroundNeeded()) -return; - - Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_THREAD)); - - if (sched_getaffinity(static_cast<::pid_t>(m_tid), sizeof m_original_cpu_set, -&m_original_cpu_set) != 0) { -// This should really not fail. But, just in case... -if (log) { - Error error(errno, eErrorTypePOSIX); - log->Printf( - "NativeThreadLinux::%s Unable to get cpu affinity for thread %" PRIx64 - ": %s", - __FUNCTION__, m_tid, error.AsCString()); -} -return; - } - - cpu_set_t set; - CPU_ZERO(&set); - CPU_SET(0, &set); - if (sched_setaffinity(static_cast<::pid_t>(m_tid), sizeof set, &set) != 0 && - log) { -// This may fail in very locked down systems, if the thread is not allowed -// to run on -// cpu 0. If that happens, only thing we can do is it log it and continue... -Error error(errno, eErrorTypePOSIX); -log->Printf( -"NativeThreadLinux::%s Unable to set cpu affinity for thread %" PRIx64 -": %s", -__FUNCTION__, m_tid, error.AsCString()); - } -} - -void NativeThreadLinux::MaybeCleanupSingleStepWorkaround() { - if (!SingleStepWorkaroundNeeded()) -return; - - if (sched_setaffinity(static_cast<::pid_t>(m_tid), sizeof m_original_cpu_set, -&m_original_cpu_set) != 0) { -Error error(errno, eErrorTypePOSIX); -Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_THREAD)); -log->Printf( -"NativeThreadLinux::%s Unable to reset cpu affinity for thread %" PRIx64 -": %s", -__FUNCTION__, m_tid, error.AsCString()); - } -} - Error NativeThreadLinux::SingleStep(uint32_t signo) { const StateType new_state = StateType::eStateStepping; MaybeLogStateChange(new_state); m_state = new_state; m_stop_info.reason = StopReason::eStopReasonNone; - - MaybePrepareSingleStepWorkaround(); + m_step_workaround = SingleStepWorkaround::Get(m_tid); intptr_t data = 0; if (signo != LLDB_INVALID_SIGNAL_NUMBER) @@ -338,7 +287,7 @@ bool NativeThreadLinux::IsStopped(int *s void NativeThreadLinux::SetStopped() { if (m_state == StateType::eStateStepping) -MaybeCleanupSingleStepWorkaround(); +m_step_workaround.reset(); const StateType new_state = StateType::eStateStopped; MaybeLogStateChange(new_state); Modified: lldb/trunk/source/Plugins/Process/Linux/NativeThreadLinux.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Linux/NativeThreadLinux.h?rev=293046&r1=293045&r2=293046&view=diff == --- lldb/trunk/source/Plugins/Process/Linux/NativeThreadLinux.h (original) +++ lldb/trunk/source/Plugins/Process/Linux/NativeThreadLinux.h Wed Jan 25 05:19:45 2017 @@ -10,11 +10,10 @@ #ifndef liblldb_NativeThreadLinux_H_ #define liblldb_NativeThreadLinux_H_ +#include "SingleStepCheck.h" #include "lldb/Host/common/NativeThreadProtocol.h" #include "lldb/lldb-private-forward.h" -#include - #include #include #include @@ -94,10 +93,6 @@ private: void SetStopped(); - inline void MaybePrepareSingleStepWorkaround(); - - inline void MaybeCleanupSingleStepWorkaround(); - // - // Member Variables // - @@ -107,7 +102,7 @@ private: std::string m_stop_description; using WatchpointIndexMap = std::map; WatchpointIndexMap m_watchpoint_index_map; - cpu_set_t m_original_cpu_set; // For si
[Lldb-commits] [PATCH] D29078: This patch implements a command to access and manipulate the Intel(R) MPX Boundary Tables.
valentinagiusti marked 3 inline comments as done. valentinagiusti added inline comments. Comment at: tools/intel-mpx/IntelMPXTablePlugin.cpp:199-218 + if (arch == llvm::Triple::ArchType::x86_64) { +lbound = toU64(bt_entry_v[7], bt_entry_v[6], bt_entry_v[5], bt_entry_v[4], + bt_entry_v[3], bt_entry_v[2], bt_entry_v[1], bt_entry_v[0]); +ubound = +~toU64(bt_entry_v[15], bt_entry_v[14], bt_entry_v[13], bt_entry_v[12], + bt_entry_v[11], bt_entry_v[10], bt_entry_v[9], bt_entry_v[8]); +value = clayborg wrote: > Use SBData and you don't need the "if (arch == ...)" since SBData knows the > address byte size: > > ``` > SBError error; > SBData data; > uint32_t addr_size = target.GetAddressByteSize(); > data.SetData(error, bt_entry_v.data(), bt_entry_v.size(), > target.GetByteOrder(), addr_size); > > lldb::addr_t lbound = data.GetAddress(error, 0 * addr_size); > lldb::addr_t ubound = data.GetAddress(error, 1 * addr_size); > uint64_t value = data.GetAddress(error, 2 * addr_size); > uint64_t meta = data.GetAddress(error, 3 * addr_size); > ``` same as above. Comment at: tools/intel-mpx/IntelMPXTablePlugin.cpp:313-314 + + lldb::SBData bndcfgu_data = bndcfgu_val.GetData(); + bndcfgu = bndcfgu_data.GetUnsignedInt64(error, 0); + if (!error.Success()) { clayborg wrote: > No need to use SBData here, the SBValue can provide what you need. You use > SBValue::GetValueAsUnsigned() and specify the invalid value to return as the > argument (zero for nullptr): > ``` > bndcfgu = bndcfgu_val.GetValueAsUnsigned(0); > ``` This also doesn't work, it returns the error: "could not resolve value"., which is why I opted for using SBData when I first wrote this code. Comment at: tools/intel-mpx/IntelMPXTablePlugin.cpp:359 + + if (!GetInitInfo(debugger, target, arch, frame, bndcfgu, arg, ptr, result, + error)) clayborg wrote: > I would either extract the target here before passing to any other functions > like this one and only pass the target. There is no need to pass both the > debugger and the target since you can do "target.GetDebugger()" anytime you > need the debugger from the target. You can also remove the "frame" variable > from this since it is only used in GetInitInfo(). I just wanted to avoid repeating the code to initialize the target and have it only inside GetInitInfo. https://reviews.llvm.org/D29078 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D29078: This patch implements a command to access and manipulate the Intel(R) MPX Boundary Tables.
valentinagiusti updated this revision to Diff 85733. valentinagiusti added a comment. Applied some of the proposed changes. https://reviews.llvm.org/D29078 Files: tools/CMakeLists.txt tools/intel-mpx/CMakeLists.txt tools/intel-mpx/IntelMPXTablePlugin.cpp tools/intel-mpx/test/Makefile tools/intel-mpx/test/README.txt tools/intel-mpx/test/TestMPXTable.py tools/intel-mpx/test/main.cpp Index: tools/intel-mpx/test/main.cpp === --- /dev/null +++ tools/intel-mpx/test/main.cpp @@ -0,0 +1,48 @@ +//===-- main.cpp *- C++ -*-===// + + The LLVM Compiler Infrastructure + + This file is distributed under the University of Illinois Open Source + License. See LICENSE.TXT for details. + +===--===// +// + +const int size = 5; + +#include +#include +#include + +void func(int *ptr) { + int *tmp; + +#if defined __GNUC__ && !defined __INTEL_COMPILER + __builtin___bnd_store_ptr_bounds ((void**)&ptr, ptr); +#endif + tmp = ptr + size - 1; +#if defined __GNUC__ && !defined __INTEL_COMPILER + __builtin___bnd_store_ptr_bounds ((void**)&tmp, tmp); +#endif + tmp = (int*)0x2; // Break 2. + + return; // Break 3. +} + +int +main(int argc, char const *argv[]) +{ + // This call returns 0 only if the CPU and the kernel support Intel(R) MPX. + if (prctl(PR_MPX_ENABLE_MANAGEMENT, 0, 0, 0, 0) != 0) +return -1; + + int* a = (int *) calloc(size, sizeof(int)); +#if defined __GNUC__ && !defined __INTEL_COMPILER + __builtin___bnd_store_ptr_bounds ((void**)&a, a); +#endif + func(a); // Break 1. + + free(a); // Break 4. + + return 0; +} Index: tools/intel-mpx/test/TestMPXTable.py === --- /dev/null +++ tools/intel-mpx/test/TestMPXTable.py @@ -0,0 +1,168 @@ +""" +Test mpx-table command. +""" + +from __future__ import print_function + + +import os +import time +import re +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +class TestMPXTable(TestBase): + +mydir = TestBase.compute_mydir(__file__) + +def setUp(self): +TestBase.setUp(self) + +@skipIf(compiler="clang") +@skipIf(oslist=no_match(['linux'])) +@skipIf(archs=no_match(['i386', 'x86_64'])) +@skipIf(compiler="gcc", compiler_version=["<", "5"]) #GCC version >= 5 supports Intel(R) MPX. +def test_show_command(self): +"""Test 'mpx-table show' command""" +self.build() + +lldb_exec_dir = os.environ["LLDB_IMPLIB_DIR"] +lldb_lib_dir = os.path.join(lldb_exec_dir, os.pardir, "lib") +plugin_file = os.path.join(lldb_lib_dir, "liblldb-intel-mpxtable.so") +if not os.path.isfile(plugin_file): +self.skipTest("Intel(R) mpx-table plugin missing.") +plugin_command = " " +seq = ("plugin", "load", plugin_file) +plugin_command = plugin_command.join(seq) +self.runCmd(plugin_command) + +exe = os.path.join(os.getcwd(), "a.out") +self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) + +self.b1 = line_number('main.cpp', '// Break 1.') +self.b2 = line_number('main.cpp', '// Break 2.') +self.b3 = line_number('main.cpp', '// Break 3.') +self.b4 = line_number('main.cpp', '// Break 4.') +lldbutil.run_break_set_by_file_and_line(self, "main.cpp", self.b1, num_expected_locations=1) +lldbutil.run_break_set_by_file_and_line(self, "main.cpp", self.b2, num_expected_locations=1) +lldbutil.run_break_set_by_file_and_line(self, "main.cpp", self.b3, num_expected_locations=1) +lldbutil.run_break_set_by_file_and_line(self, "main.cpp", self.b4, num_expected_locations=1) +self.runCmd("run", RUN_SUCCEEDED) + +target = self.dbg.GetSelectedTarget() +process = target.GetProcess() + +if (process.GetState() == lldb.eStateExited): +self.skipTest("Intel(R) MPX is not supported.") +else: +self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT, +substrs = ["stop reason = breakpoint 1."]) + +self.expect("mpx-table show a", + substrs = ['lbound = 0x', +', ubound = 0x', +'(pointer value = 0x', +', metadata = 0x', +')'], + error = False) + +self.expect("continue", STOPPED_DUE_TO_BREAKPOINT, + substrs = ["stop reason = breakpoint 2."]) + +# Check that out of scope pointer cannot be reached. +# +self.expect("mpx-table show a", + substrs = ['Invalid pointer.'], + error = True) + +self.expect
[Lldb-commits] [PATCH] D29126: [cmake] Remove VERSION property from executable targets
labath created this revision. Herald added a subscriber: ki.stfu. Currently, in the default configuration, the "install" target will install all llvm executables unversioned, except for three lldb tools which will be installed versioned (with a non-versioned symlink). This rectifies that situation. https://reviews.llvm.org/D29126 Files: tools/driver/CMakeLists.txt tools/lldb-mi/CMakeLists.txt tools/lldb-server/CMakeLists.txt Index: tools/lldb-server/CMakeLists.txt === --- tools/lldb-server/CMakeLists.txt +++ tools/lldb-server/CMakeLists.txt @@ -192,5 +192,3 @@ endif() target_link_libraries(lldb-server ${LLDB_SYSTEM_LIBS}) - -set_target_properties(lldb-server PROPERTIES VERSION ${LLDB_VERSION}) Index: tools/lldb-mi/CMakeLists.txt === --- tools/lldb-mi/CMakeLists.txt +++ tools/lldb-mi/CMakeLists.txt @@ -90,5 +90,3 @@ if (HAVE_LIBPTHREAD) target_link_libraries(lldb-mi pthread) endif () - -set_target_properties(lldb-mi PROPERTIES VERSION ${LLDB_VERSION}) Index: tools/driver/CMakeLists.txt === --- tools/driver/CMakeLists.txt +++ tools/driver/CMakeLists.txt @@ -29,6 +29,3 @@ # soon as possible. target_link_libraries(lldb ${LLDB_USED_LIBS}) endif() - -set_target_properties(lldb PROPERTIES VERSION ${LLDB_VERSION}) - Index: tools/lldb-server/CMakeLists.txt === --- tools/lldb-server/CMakeLists.txt +++ tools/lldb-server/CMakeLists.txt @@ -192,5 +192,3 @@ endif() target_link_libraries(lldb-server ${LLDB_SYSTEM_LIBS}) - -set_target_properties(lldb-server PROPERTIES VERSION ${LLDB_VERSION}) Index: tools/lldb-mi/CMakeLists.txt === --- tools/lldb-mi/CMakeLists.txt +++ tools/lldb-mi/CMakeLists.txt @@ -90,5 +90,3 @@ if (HAVE_LIBPTHREAD) target_link_libraries(lldb-mi pthread) endif () - -set_target_properties(lldb-mi PROPERTIES VERSION ${LLDB_VERSION}) Index: tools/driver/CMakeLists.txt === --- tools/driver/CMakeLists.txt +++ tools/driver/CMakeLists.txt @@ -29,6 +29,3 @@ # soon as possible. target_link_libraries(lldb ${LLDB_USED_LIBS}) endif() - -set_target_properties(lldb PROPERTIES VERSION ${LLDB_VERSION}) - ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D29126: [cmake] Remove VERSION property from executable targets
labath added a comment. @sylvestre.ledru, I know that debian installs all llvm tools versioned, but I have no idea through which mechanism. I am guessing it must be something different than this, as this is lldb-specific. Do you know if you would be impacted by this? https://reviews.llvm.org/D29126 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D29126: [cmake] Remove VERSION property from executable targets
mgorny added a comment. Technically the patch looks sane; however, I suggest you wait for some input from the others. As for Gentoo, I don't think we ever really cared for LLDB being versioned — only clang. https://reviews.llvm.org/D29126 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D29078: This patch implements a command to access and manipulate the Intel(R) MPX Boundary Tables.
clayborg added inline comments. Comment at: tools/intel-mpx/IntelMPXTablePlugin.cpp:151 + // + bd_entry--; + There is indeed a bug in SBData::SetData(): ``` void SBData::SetData(lldb::SBError &error, const void *buf, size_t size, lldb::ByteOrder endian, uint8_t addr_size) { if (!m_opaque_sp.get()) m_opaque_sp.reset(new DataExtractor(buf, size, endian, addr_size)); else m_opaque_sp->SetData(buf, size, endian); ``` Note that if "m_opaque_sp" already exists, it doesn't set the address byte size. I will fix this and check it in, then things should work for you. Comment at: tools/intel-mpx/IntelMPXTablePlugin.cpp:219 +} + +static std::vector uIntToU8(uint64_t input, size_t size) { I'll fix SBData and this should work Comment at: tools/intel-mpx/IntelMPXTablePlugin.cpp:315 + return true; +} + The GetValueAsUnsigned() should work. If you look at an x86_64 program: ``` (lldb) script >>> r = lldb.frame.FindRegister('rax') >>> print r (unsigned long) rax = 0x00010f10 >>> print r.GetValueAsUnsigned(0) 4294971152 >>> hex(4294971152) '0x10f10' ``` Maybe you defined "bndcfgu" the register in a way that makes this not work? This should work and you should step through the code to see why this fails for "bndcfgu". Let me know what you find. https://reviews.llvm.org/D29078 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D29078: This patch implements a command to access and manipulate the Intel(R) MPX Boundary Tables.
clayborg added inline comments. Comment at: tools/intel-mpx/IntelMPXTablePlugin.cpp:151 + // + bd_entry--; + clayborg wrote: > There is indeed a bug in SBData::SetData(): > > ``` > void SBData::SetData(lldb::SBError &error, const void *buf, size_t size, > lldb::ByteOrder endian, uint8_t addr_size) { > if (!m_opaque_sp.get()) > m_opaque_sp.reset(new DataExtractor(buf, size, endian, addr_size)); > else > m_opaque_sp->SetData(buf, size, endian); > ``` > > Note that if "m_opaque_sp" already exists, it doesn't set the address byte > size. > > I will fix this and check it in, then things should work for you. Actually if you can fix this with your patch that might be faster. llvm.org seems to be unreachable for me right now. Just change the void SBData::SetData(...) function from: ``` if (!m_opaque_sp.get()) m_opaque_sp.reset(new DataExtractor(buf, size, endian, addr_size)); else m_opaque_sp->SetData(buf, size, endian); ``` To: ``` if (!m_opaque_sp.get()) m_opaque_sp.reset(new DataExtractor(buf, size, endian, addr_size)); else { m_opaque_sp->SetData(buf, size, endian); m_opaque_sp->SetAddressByteSize(addr_size); } ``` https://reviews.llvm.org/D29078 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D29144: LLDB: fix for TestCallThatThrows.py test fail
boris.ulasevich created this revision. Additional change for https://reviews.llvm.org/D26497, https://reviews.llvm.org/D28945 - fix for TestCallThatThrows test fail (works for Mac only). Recent change of stop reason priorities affected function call mechanism: it is important that CallFunctionThreadPlan complete event StopInfo should not be overridden by other simultaneous events (internal breakpoint?), otherwise caller do not get proper return value. This change is a kind of fast fix for the test broken by my yesterday's change. I should admit, I do not like the code around, but any further change leads to tests fails with tedious LIBLLDB_LOG_STEP logs investigation. Repository: rL LLVM https://reviews.llvm.org/D29144 Files: lldb/source/Target/Process.cpp Index: lldb/source/Target/Process.cpp === --- lldb/source/Target/Process.cpp +++ lldb/source/Target/Process.cpp @@ -5248,15 +5248,17 @@ do_resume = false; handle_running_event = true; } else { + if (thread->IsThreadPlanDone(thread_plan_sp.get())) { +// clean preset StopInfo value when we have out plan completed +thread_sp->ResetStopInfo(); + } StopInfoSP stop_info_sp(thread_sp->GetStopInfo()); StopReason stop_reason = eStopReasonInvalid; if (stop_info_sp) stop_reason = stop_info_sp->GetStopReason(); - // FIXME: We only check if the stop reason is plan complete, - // should we make sure that - // it is OUR plan that is complete? - if (stop_reason == eStopReasonPlanComplete) { + if (stop_reason == eStopReasonPlanComplete && + thread->IsThreadPlanDone(thread_plan_sp.get())) { if (log) log->PutCString("Process::RunThreadPlan(): execution " "completed successfully."); Index: lldb/source/Target/Process.cpp === --- lldb/source/Target/Process.cpp +++ lldb/source/Target/Process.cpp @@ -5248,15 +5248,17 @@ do_resume = false; handle_running_event = true; } else { + if (thread->IsThreadPlanDone(thread_plan_sp.get())) { +// clean preset StopInfo value when we have out plan completed +thread_sp->ResetStopInfo(); + } StopInfoSP stop_info_sp(thread_sp->GetStopInfo()); StopReason stop_reason = eStopReasonInvalid; if (stop_info_sp) stop_reason = stop_info_sp->GetStopReason(); - // FIXME: We only check if the stop reason is plan complete, - // should we make sure that - // it is OUR plan that is complete? - if (stop_reason == eStopReasonPlanComplete) { + if (stop_reason == eStopReasonPlanComplete && + thread->IsThreadPlanDone(thread_plan_sp.get())) { if (log) log->PutCString("Process::RunThreadPlan(): execution " "completed successfully."); ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r293098 - Link debugserver against Foundation to get access to NSProcessInfo.
Author: spyffe Date: Wed Jan 25 15:32:00 2017 New Revision: 293098 URL: http://llvm.org/viewvc/llvm-project?rev=293098&view=rev Log: Link debugserver against Foundation to get access to NSProcessInfo. debugserver-mini can't use Foundation so disable that code there. Modified: lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.mm Modified: lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj?rev=293098&r1=293097&r2=293098&view=diff == --- lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj (original) +++ lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj Wed Jan 25 15:32:00 2017 @@ -98,6 +98,7 @@ 456F67691AD46CE9002850C2 /* DNBArchImplARM64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266B5ECF1460A68200E43F0A /* DNBArchImplARM64.cpp */; }; 456F676B1AD46CE9002850C2 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26ACA3340D3E956300A2120B /* CoreFoundation.framework */; settings = {ATTRIBUTES = (Required, ); }; }; 4971AE7213D10F4F00649E37 /* HasAVX.s in Sources */ = {isa = PBXBuildFile; fileRef = 4971AE7113D10F4F00649E37 /* HasAVX.s */; }; + 49D404621E39260F00570CDC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49D404611E39260F00570CDC /* Foundation.framework */; }; AF48558C1D75126800D19C07 /* StdStringExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF48558B1D75126800D19C07 /* StdStringExtractor.cpp */; }; AF48558D1D75127500D19C07 /* StdStringExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF48558B1D75126800D19C07 /* StdStringExtractor.cpp */; }; AFEC3364194A8B0B00FF05C6 /* Genealogy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFEC3363194A8B0B00FF05C6 /* Genealogy.cpp */; }; @@ -210,6 +211,7 @@ 456F67721AD46CE9002850C2 /* debugserver-nonui */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "debugserver-nonui"; sourceTree = BUILT_PRODUCTS_DIR; }; 4971AE7013D10F4F00649E37 /* HasAVX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HasAVX.h; sourceTree = ""; }; 4971AE7113D10F4F00649E37 /* HasAVX.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = HasAVX.s; sourceTree = ""; }; + 49D404611E39260F00570CDC /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 49F530111331519C008956F6 /* MachRegisterStatesI386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MachRegisterStatesI386.h; sourceTree = ""; }; 49F5301213316D7F008956F6 /* MachRegisterStatesX86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MachRegisterStatesX86_64.h; sourceTree = ""; }; 9457ECF61419864100DFE7D8 /* stack_logging.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stack_logging.h; sourceTree = ""; }; @@ -232,6 +234,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 49D404621E39260F00570CDC /* Foundation.framework in Frameworks */, 26CE05CF115C36F70022F371 /* CoreFoundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -253,6 +256,7 @@ 26ACA3330D3E94F200A2120B /* Framework */, 26C637D50C71334A0024798E /* source */, 1AB674ADFE9D54B511CA2CBB /* Products */, + 49D404601E39260F00570CDC /* Frameworks */, ); name = dbgnub; sourceTree = ""; @@ -483,6 +487,14 @@ sourceTree = ""; usesTabs = 0; }; + 49D404601E39260F00570CDC /* Frameworks */ = { + isa = PBXGroup; + children = ( + 49D404611E39260F00570CDC /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -874,8
Re: [Lldb-commits] [lldb] r292930 - Bug 30863 - Step doesn't stop with conditional breakpoint on the next line
While the Green Dragon job where this change was first built failed for infrastructure reasons in Jenkins, the LLDB build has been failing in the same way since this commit was made, and looks like it may be related. Can this be confirmed? *First built*: http://lab.llvm.org:8080/green/job/lldb_build_test/24539/console *New commits*: 292930 to lldb by bulasevich; 292929 to libcxx by ericwf *Failure*: ERROR: Connection was broken: java.io.IOException: Unexpected termination of the channel *Next build*: http://lab.llvm.org:8080/green/job/lldb_build_test/24540/console *New commits*: none *Failures*: FAIL: test_dsym (expression_command/call-throws/TestCallThatThrows.py) FAIL: test_dwarf (expression_command/call-throws/TestCallThatThrows.py) FAIL: test_gmodules (expression_command/call-throws/TestCallThatThrows.py) *Most recent build*: http://lab.llvm.org:8080/green/job/lldb_build_test/24605/console *Failures*: FAIL: test_dsym (expression_command/call-throws/TestCallThatThrows.py) FAIL: test_dwarf (expression_command/call-throws/TestCallThatThrows.py) FAIL: test_gmodules (expression_command/call-throws/TestCallThatThrows.py) -Tim On Tue, Jan 24, 2017 at 5:15 AM, Boris Ulasevich via lldb-commits < lldb-commits@lists.llvm.org> wrote: > Author: bulasevich > Date: Tue Jan 24 07:15:19 2017 > New Revision: 292930 > > URL: http://llvm.org/viewvc/llvm-project?rev=292930&view=rev > Log: > Bug 30863 - Step doesn't stop with conditional breakpoint on the next line > Differential Revisions: > https://reviews.llvm.org/D26497 (committed r290168, temporary reverted > r290197) > https://reviews.llvm.org/D28945 (fix for Ubuntu tests fail) > > Added: > lldb/trunk/packages/Python/lldbsuite/test/functionalities/breakpoint/ > step_over_breakpoint/ > - copied from r290180, lldb/trunk/packages/Python/lldbsuite/test/ > functionalities/breakpoint/step_over_breakpoint/ > Modified: > lldb/trunk/include/lldb/Target/Thread.h > lldb/trunk/include/lldb/Target/ThreadPlan.h > lldb/trunk/source/Target/StopInfo.cpp > lldb/trunk/source/Target/Thread.cpp > lldb/trunk/source/Target/ThreadPlanStepInstruction.cpp > lldb/trunk/source/Target/ThreadPlanStepRange.cpp > > Modified: lldb/trunk/include/lldb/Target/Thread.h > URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/ > lldb/Target/Thread.h?rev=292930&r1=292929&r2=292930&view=diff > > == > --- lldb/trunk/include/lldb/Target/Thread.h (original) > +++ lldb/trunk/include/lldb/Target/Thread.h Tue Jan 24 07:15:19 2017 > @@ -126,6 +126,7 @@ public: > // bit of data. > lldb::StopInfoSP stop_info_sp; // You have to restore the stop info > or you > // might continue with the wrong > signals. > +std::vector m_completed_plan_stack; > lldb::RegisterCheckpointSP > register_backup_sp; // You need to restore the registers, of > course... > uint32_t current_inlined_depth; > @@ -1029,6 +1030,15 @@ public: >bool WasThreadPlanDiscarded(ThreadPlan *plan); > >//-- > + /// Check if we have completed plan to override breakpoint stop reason > + /// > + /// @return > + /// Returns true if completed plan stack is not empty > + /// false otherwise. > + //-- > + bool CompletedPlanOverridesBreakpoint(); > + > + //-- >/// Queues a generic thread plan. >/// >/// @param[in] plan_sp > @@ -1213,6 +1223,8 @@ public: > >void SetStopInfo(const lldb::StopInfoSP &stop_info_sp); > > + void ResetStopInfo(); > + >void SetShouldReportStop(Vote vote); > >//-- > > > Modified: lldb/trunk/include/lldb/Target/ThreadPlan.h > URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/ > lldb/Target/ThreadPlan.h?rev=292930&r1=292929&r2=292930&view=diff > > == > --- lldb/trunk/include/lldb/Target/ThreadPlan.h (original) > +++ lldb/trunk/include/lldb/Target/ThreadPlan.h Tue Jan 24 07:15:19 2017 > @@ -40,9 +40,10 @@ namespace lldb_private { > // The thread maintaining a thread plan stack, and you program the > actions of a > // particular thread > // by pushing plans onto the plan stack. > -// There is always a "Current" plan, which is the head of the plan stack, > +// There is always a "Current" plan, which is the top of the plan stack, > // though in some cases > -// a plan may defer to plans higher in the stack for some piece of > information. > +// a plan may defer to plans higher in the stack for some piece of > information > +// (let us define that the plan stack grows downwards). > // > // The plan stack is never empty, there is alw
[Lldb-commits] [PATCH] D29144: LLDB: fix for TestCallThatThrows.py test fail
jingham requested changes to this revision. jingham added a comment. This revision now requires changes to proceed. Can you explain in more detail the scenario this is addressing? You seem to be handling a case where some plan has been completed, but it is not the function call plan we are waiting for. What was the completed thread plan which WAS done but wasn't the function call thread plan? Calling nested functions is tricky, and I'd like to understand what is going on when this goes wrong. BTW, if you only have a Mac available to you, you may be able to reproduce the Linux behavior locally by going into ProcessGDBRemote::DoAllocateMemory and turning off the code that checks SupportsAllocDeallocMemory, forcing us to use the InferiorMmap call instead. That might make development easier for you. Repository: rL LLVM https://reviews.llvm.org/D29144 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r293102 - Fix SBData::SetData() so that it always sets the address byte size correctly and added a test.
Author: gclayton Date: Wed Jan 25 15:50:28 2017 New Revision: 293102 URL: http://llvm.org/viewvc/llvm-project?rev=293102&view=rev Log: Fix SBData::SetData() so that it always sets the address byte size correctly and added a test. Modified: lldb/trunk/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py lldb/trunk/source/API/SBData.cpp Modified: lldb/trunk/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py?rev=293102&r1=293101&r2=293102&view=diff == --- lldb/trunk/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py Wed Jan 25 15:50:28 2017 @@ -22,6 +22,26 @@ class SBDataAPICase(TestBase): self.line = line_number('main.cpp', '// set breakpoint here') @add_test_categories(['pyapi']) +def test_byte_order_and_address_byte_size(self): +"""Test the SBData::SetData() to ensure the byte order and address +byte size are obeyed""" +addr_data = '\x11\x22\x33\x44\x55\x66\x77\x88' +error = lldb.SBError() +data = lldb.SBData() +data.SetData(error, addr_data, lldb.eByteOrderBig, 4) +addr = data.GetAddress(error, 0) +self.assertTrue(addr == 0x11223344); +data.SetData(error, addr_data, lldb.eByteOrderBig, 8) +addr = data.GetAddress(error, 0) +self.assertTrue(addr == 0x1122334455667788); +data.SetData(error, addr_data, lldb.eByteOrderLittle, 4) +addr = data.GetAddress(error, 0) +self.assertTrue(addr == 0x44332211); +data.SetData(error, addr_data, lldb.eByteOrderLittle, 8) +addr = data.GetAddress(error, 0) +self.assertTrue(addr == 0x8877665544332211); + +@add_test_categories(['pyapi']) def test_with_run_command(self): """Test the SBData APIs.""" self.build() Modified: lldb/trunk/source/API/SBData.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBData.cpp?rev=293102&r1=293101&r2=293102&view=diff == --- lldb/trunk/source/API/SBData.cpp (original) +++ lldb/trunk/source/API/SBData.cpp Wed Jan 25 15:50:28 2017 @@ -383,7 +383,11 @@ void SBData::SetData(lldb::SBError &erro if (!m_opaque_sp.get()) m_opaque_sp.reset(new DataExtractor(buf, size, endian, addr_size)); else + { m_opaque_sp->SetData(buf, size, endian); +m_opaque_sp->SetAddressByteSize(addr_size); + } + if (log) log->Printf("SBData::SetData (error=%p,buf=%p,size=%" PRIu64 ",endian=%d,addr_size=%c) => " ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D29078: This patch implements a command to access and manipulate the Intel(R) MPX Boundary Tables.
clayborg added a comment. I fixed SBData with: Sendingpackages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py Sendingsource/API/SBData.cpp Transmitting file data ..done Committing transaction... Committed revision 293102. https://reviews.llvm.org/D29078 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D29078: This patch implements a command to access and manipulate the Intel(R) MPX Boundary Tables.
clayborg added a comment. Let me know why your GetValueAsUnsigned isn't working on your register by stepping through it. https://reviews.llvm.org/D29078 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r293135 - Instead of weak-linking against LoggingSupport framework (which
Author: jmolenda Date: Wed Jan 25 20:13:43 2017 New Revision: 293135 URL: http://llvm.org/viewvc/llvm-project?rev=293135&view=rev Log: Instead of weak-linking against LoggingSupport framework (which requires that this private framework be available - and it is not available earlier than macOS 10.12 - to build lldb), dlopen the framework binary on demand in debugserver. We're already using dlsym() to look up all the symbols so there is no need to use weak linking here. Modified: lldb/trunk/tools/debugserver/source/MacOSX/DarwinLog/DarwinLogCollector.cpp Modified: lldb/trunk/tools/debugserver/source/MacOSX/DarwinLog/DarwinLogCollector.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/MacOSX/DarwinLog/DarwinLogCollector.cpp?rev=293135&r1=293134&r2=293135&view=diff == --- lldb/trunk/tools/debugserver/source/MacOSX/DarwinLog/DarwinLogCollector.cpp (original) +++ lldb/trunk/tools/debugserver/source/MacOSX/DarwinLog/DarwinLogCollector.cpp Wed Jan 25 20:13:43 2017 @@ -50,6 +50,7 @@ bool LookupSPICalls() { static bool s_has_spi; std::call_once(s_once_flag, [] { +dlopen ("/System/Library/PrivateFrameworks/LoggingSupport.framework/LoggingSupport", RTLD_NOW); s_os_activity_stream_for_pid = (os_activity_stream_for_pid_t)dlsym( RTLD_DEFAULT, "os_activity_stream_for_pid"); s_os_activity_stream_resume = (os_activity_stream_resume_t)dlsym( ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r293140 - Add Foundation to the debugserver-mini dependencies;
Author: jmolenda Date: Wed Jan 25 20:27:35 2017 New Revision: 293140 URL: http://llvm.org/viewvc/llvm-project?rev=293140&view=rev Log: Add Foundation to the debugserver-mini dependencies; debugserver-mini can use Foundation. Modified: lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj Modified: lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj?rev=293140&r1=293139&r2=293140&view=diff == --- lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj (original) +++ lldb/trunk/tools/debugserver/debugserver.xcodeproj/project.pbxproj Wed Jan 25 20:27:35 2017 @@ -101,6 +101,7 @@ 49D404621E39260F00570CDC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49D404611E39260F00570CDC /* Foundation.framework */; }; AF48558C1D75126800D19C07 /* StdStringExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF48558B1D75126800D19C07 /* StdStringExtractor.cpp */; }; AF48558D1D75127500D19C07 /* StdStringExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF48558B1D75126800D19C07 /* StdStringExtractor.cpp */; }; + AFA3FCA11E39984900218D5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49D404611E39260F00570CDC /* Foundation.framework */; }; AFEC3364194A8B0B00FF05C6 /* Genealogy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFEC3363194A8B0B00FF05C6 /* Genealogy.cpp */; }; /* End PBXBuildFile section */ @@ -244,6 +245,7 @@ buildActionMask = 2147483647; files = ( 456F676B1AD46CE9002850C2 /* CoreFoundation.framework in Frameworks */, + AFA3FCA11E39984900218D5E /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D29144: LLDB: fix for TestCallThatThrows.py test fail
boris.ulasevich added a comment. I work on the case when we have two plans complete: internal breakpoint plus our function call plan: Active plan stack: Element 0: Base thread plan. Completed Plan Stack: Element 0: Run to address: 0x00010e78be00 using breakpoint: 0 - but the breakpoint has been deleted. Element 1: Thread plan to call 0x10e7c4bf0 Repository: rL LLVM https://reviews.llvm.org/D29144 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits