[Lldb-commits] [lldb] r269164 - Corrected aarch64 register no in TestBreakpointConditions.py
Author: omjavaid
Date: Wed May 11 04:29:14 2016
New Revision: 269164
URL: http://llvm.org/viewvc/llvm-project?rev=269164&view=rev
Log:
Corrected aarch64 register no in TestBreakpointConditions.py
Test uses x1 in breakpoint expression while objdump shows that x1 is never used
in the code and may have random values.
Using x0 make sure that we are using a registe that will have a positive value
and breakpoint expression will evaluate true atleast once.
Modified:
lldb/trunk/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_conditions/TestBreakpointConditions.py
Modified:
lldb/trunk/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_conditions/TestBreakpointConditions.py
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_conditions/TestBreakpointConditions.py?rev=269164&r1=269163&r2=269164&view=diff
==
---
lldb/trunk/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_conditions/TestBreakpointConditions.py
(original)
+++
lldb/trunk/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_conditions/TestBreakpointConditions.py
Wed May 11 04:29:14 2016
@@ -108,7 +108,7 @@ class BreakpointConditionsTestCase(TestB
if arch in ['x86_64', 'i386']:
self.runCmd("breakpoint modify -c ($eax&&i)")
elif arch in ['aarch64']:
-self.runCmd("breakpoint modify -c ($x1&&i)")
+self.runCmd("breakpoint modify -c ($x0&&i)")
elif arch in ['arm']:
self.runCmd("breakpoint modify -c ($r0&&i)")
elif re.match("mips",arch):
___
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D20091: Rewriting TestMultithreaded.py to solve flakyness on Linux
labath accepted this revision. labath added a comment. I am somewhat surprised that this solves anything (I mean, you claim that the problem is the ordering between the push and pop, but I don't see how this could change that ordering). If the problem was that the check_listener was not waiting long enough, then it should be sufficient to increase the timeout... That said, I don't think it should make things any worse either, so I'm ready to give it a go... http://reviews.llvm.org/D20091 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D20091: Rewriting TestMultithreaded.py to solve flakyness on Linux
ravitheja added a comment. @labath, Well the other tests in TestMultithreaded.py are not flaky and I see the only difference as an extra push operation, so I thought the push operation could be potential bottleneck. http://reviews.llvm.org/D20091 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r269168 - Rewriting TestMultithreaded.py to solve flakyness on Linux
Author: ravitheja
Date: Wed May 11 04:54:41 2016
New Revision: 269168
URL: http://llvm.org/viewvc/llvm-project?rev=269168&view=rev
Log:
Rewriting TestMultithreaded.py to solve flakyness on Linux
Summary:
test_listener_event_process_state checks for Threads
and Frames in the multithreaded_queue. The listener_func has
more computational load, which may be latter executed than the
pop leading to the failure. This patch tries to only check for
frames in listener_func as presence of frames also confirms
prescence of threads and avoids the second push into the
multithreaded_queue.
Reviewers: lldb-commits, clayborg, labath
Differential Revision: http://reviews.llvm.org/D20091
Modified:
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp
Modified:
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py?rev=269168&r1=269167&r2=269168&view=diff
==
---
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py
(original)
+++
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py
Wed May 11 04:54:41 2016
@@ -37,7 +37,6 @@ class SBBreakpointCallbackCase(TestBase)
@skipIfNoSBHeaders
@skipIfWindows # clang-cl does not support throw or catch
(llvm.org/pr24538)
@expectedFlakeyFreeBSD
-@expectedFlakeyLinux # Driver occasionally returns '1' as exit status
@expectedFailureAll("llvm.org/pr23139", oslist=["linux"], compiler="gcc",
compiler_version=[">=","4.9"], archs=["x86_64"])
def test_sb_api_listener_event_process_state(self):
""" Test that a registered SBListener receives events when a process
Modified:
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp?rev=269168&r1=269167&r2=269168&view=diff
==
---
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp
(original)
+++
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp
Wed May 11 04:54:41 2016
@@ -18,7 +18,6 @@ using namespace std;
// listener thread control
extern atomic g_done;
-multithreaded_queue g_thread_descriptions;
multithreaded_queue g_frame_functions;
extern SBListener g_listener;
@@ -30,26 +29,21 @@ void listener_func() {
if (got_event) {
if (!event.IsValid())
throw Exception("event is not valid in listener thread");
-
- // send process description
- SBProcess process = SBProcess::GetProcessFromEvent(event);
- SBStream description;
-
- for (int i = 0; i < process.GetNumThreads(); ++i) {
-// send each thread description
-description.Clear();
-SBThread thread = process.GetThreadAtIndex(i);
-thread.GetDescription(description);
-g_thread_descriptions.push(description.GetData());
-
-// send each frame function name
-uint32_t num_frames = thread.GetNumFrames();
-for(int j = 0; j < num_frames; ++j) {
- const char* function_name =
thread.GetFrameAtIndex(j).GetSymbol().GetName();
- if (function_name)
-g_frame_functions.push(function_name);
+// send process description
+SBProcess process = SBProcess::GetProcessFromEvent(event);
+SBStream description;
+
+for (int i = 0; i < process.GetNumThreads(); ++i) {
+// send each thread description
+SBThread thread = process.GetThreadAtIndex(i);
+// send each frame function name
+uint32_t num_frames = thread.GetNumFrames();
+for(int j = 0; j < num_frames; ++j) {
+const char* function_name =
thread.GetFrameAtIndex(j).GetSymbol().GetName();
+if (function_name)
+g_frame_functions.push(string(function_name));
+}
}
- }
}
}
}
@@ -57,12 +51,8 @@ void listener_func() {
void check_listener(SBDebugger &dbg) {
// check thread description
bool got_description = false;
- string desc = g_thread_descriptions.pop(5, got_description);
- if (!got_description)
-throw Exception("Expected at least one thread description string");
-
- // check at least one frame has a function name
- desc = g_frame_functions.pop(5, got_description);
- if (!got_description)
-throw Exception("Expected at least one frame function name string");
+ string func_name = g_frame_functions.pop(5, got_description);
+
+ if(got_description
Re: [Lldb-commits] [PATCH] D20091: Rewriting TestMultithreaded.py to solve flakyness on Linux
This revision was automatically updated to reflect the committed changes.
Closed by commit rL269168: Rewriting TestMultithreaded.py to solve flakyness on
Linux (authored by ravitheja).
Changed prior to commit:
http://reviews.llvm.org/D20091?vs=56671&id=56870#toc
Repository:
rL LLVM
http://reviews.llvm.org/D20091
Files:
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp
Index:
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp
===
---
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp
+++
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp
@@ -18,7 +18,6 @@
// listener thread control
extern atomic g_done;
-multithreaded_queue g_thread_descriptions;
multithreaded_queue g_frame_functions;
extern SBListener g_listener;
@@ -30,39 +29,30 @@
if (got_event) {
if (!event.IsValid())
throw Exception("event is not valid in listener thread");
-
- // send process description
- SBProcess process = SBProcess::GetProcessFromEvent(event);
- SBStream description;
-
- for (int i = 0; i < process.GetNumThreads(); ++i) {
-// send each thread description
-description.Clear();
-SBThread thread = process.GetThreadAtIndex(i);
-thread.GetDescription(description);
-g_thread_descriptions.push(description.GetData());
-
-// send each frame function name
-uint32_t num_frames = thread.GetNumFrames();
-for(int j = 0; j < num_frames; ++j) {
- const char* function_name =
thread.GetFrameAtIndex(j).GetSymbol().GetName();
- if (function_name)
-g_frame_functions.push(function_name);
+// send process description
+SBProcess process = SBProcess::GetProcessFromEvent(event);
+SBStream description;
+
+for (int i = 0; i < process.GetNumThreads(); ++i) {
+// send each thread description
+SBThread thread = process.GetThreadAtIndex(i);
+// send each frame function name
+uint32_t num_frames = thread.GetNumFrames();
+for(int j = 0; j < num_frames; ++j) {
+const char* function_name =
thread.GetFrameAtIndex(j).GetSymbol().GetName();
+if (function_name)
+g_frame_functions.push(string(function_name));
+}
}
- }
}
}
}
void check_listener(SBDebugger &dbg) {
// check thread description
bool got_description = false;
- string desc = g_thread_descriptions.pop(5, got_description);
- if (!got_description)
-throw Exception("Expected at least one thread description string");
-
- // check at least one frame has a function name
- desc = g_frame_functions.pop(5, got_description);
- if (!got_description)
-throw Exception("Expected at least one frame function name string");
+ string func_name = g_frame_functions.pop(5, got_description);
+
+ if(got_description == false)
+throw Exception("Expected at least one frame function");
}
Index:
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py
===
---
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py
+++
lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py
@@ -37,7 +37,6 @@
@skipIfNoSBHeaders
@skipIfWindows # clang-cl does not support throw or catch
(llvm.org/pr24538)
@expectedFlakeyFreeBSD
-@expectedFlakeyLinux # Driver occasionally returns '1' as exit status
@expectedFailureAll("llvm.org/pr23139", oslist=["linux"], compiler="gcc",
compiler_version=[">=","4.9"], archs=["x86_64"])
def test_sb_api_listener_event_process_state(self):
""" Test that a registered SBListener receives events when a process
Index: lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp
===
--- lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp
+++ lldb/trunk/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp
@@ -18,7 +18,6 @@
// listener thread control
extern atomic g_done;
-multithreaded_queue g_thread_descriptions;
multithreaded_queue g_frame_functions;
extern SBListener g_listener;
@@ -30,39 +29,30 @@
if (got_event) {
if (!event.IsValid())
throw Exception("event is not valid in listener thread");
-
- // send process description
- SBProcess process = SBProcess::GetProcessFromEvent(event);
- SBStream description;
-
- for (int i = 0; i < pr
Re: [Lldb-commits] [PATCH] D18858: [LLDB][MIPS] Setting appropriate ArchSpec::m_flags based on ABI
nitesh.jain updated this revision to Diff 56891.
nitesh.jain added a comment.
Added IsMIPS() method.
Repository:
rL LLVM
http://reviews.llvm.org/D18858
Files:
include/lldb/Core/ArchSpec.h
source/Core/ArchSpec.cpp
source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
Index: source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
===
--- source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
+++ source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
@@ -1697,8 +1697,7 @@
I->section_name = name;
-if (arch_spec.GetMachine() == llvm::Triple::mips ||
arch_spec.GetMachine() == llvm::Triple::mipsel
-|| arch_spec.GetMachine() == llvm::Triple::mips64 ||
arch_spec.GetMachine() == llvm::Triple::mips64el)
+if (arch_spec.IsMIPS())
{
uint32_t arch_flags = arch_spec.GetFlags ();
DataExtractor data;
@@ -1712,13 +1711,27 @@
}
}
// Settings appropriate ArchSpec ABI Flags
-if (header.e_flags & llvm::ELF::EF_MIPS_ABI2)
+switch(header.e_flags & llvm::ELF::EF_MIPS_ABI)
{
-arch_flags |= lldb_private::ArchSpec::eMIPSABI_N32;
-}
-else if (header.e_flags & llvm::ELF::EF_MIPS_ABI_O32)
-{
- arch_flags |= lldb_private::ArchSpec::eMIPSABI_O32;
+case llvm::ELF::EF_MIPS_ABI_O32:
+arch_flags |= lldb_private::ArchSpec::eMIPSABI_O32;
+break;
+case EF_MIPS_ABI_O64:
+arch_flags |= lldb_private::ArchSpec::eMIPSABI_O64;
+break;
+case EF_MIPS_ABI_EABI32:
+arch_flags |=
lldb_private::ArchSpec::eMIPSABI_EABI32;
+break;
+case EF_MIPS_ABI_EABI64:
+arch_flags |=
lldb_private::ArchSpec::eMIPSABI_EABI64;
+break;
+default:
+// ABI Mask doesn't cover N32 and N64 ABI.
+if (header.e_ident[EI_CLASS] ==
llvm::ELF::ELFCLASS64)
+arch_flags |=
lldb_private::ArchSpec::eMIPSABI_N64;
+else if (header.e_flags && llvm::ELF::EF_MIPS_ABI2)
+arch_flags |=
lldb_private::ArchSpec::eMIPSABI_N32;
+break;
}
arch_spec.SetFlags (arch_flags);
}
Index: source/Core/ArchSpec.cpp
===
--- source/Core/ArchSpec.cpp
+++ source/Core/ArchSpec.cpp
@@ -507,6 +507,18 @@
return "unknown";
}
+bool
+ArchSpec::IsMIPS() const
+{
+const llvm::Triple::ArchType machine = GetMachine();
+if(machine == llvm::Triple::mips ||
+ machine == llvm::Triple::mipsel ||
+ machine == llvm::Triple::mips64 ||
+ machine == llvm::Triple::mips64el)
+ return true;
+return false;
+}
+
std::string
ArchSpec::GetClangTargetCPU ()
{
Index: include/lldb/Core/ArchSpec.h
===
--- include/lldb/Core/ArchSpec.h
+++ include/lldb/Core/ArchSpec.h
@@ -69,6 +69,9 @@
eMIPSABI_O32= 0x2000,
eMIPSABI_N32= 0x4000,
eMIPSABI_N64= 0x8000,
+eMIPSABI_O64= 0x0002,
+eMIPSABI_EABI32 = 0x0004,
+eMIPSABI_EABI64 = 0x0008,
eMIPSABI_mask = 0x000ff000
};
@@ -289,6 +292,14 @@
const char *
GetArchitectureName () const;
+//-
+/// if MIPS architecture return true.
+///
+/// @return a boolean value.
+//-
+bool
+IsMIPS() const;
+
//--
/// Returns a string representing current architecture as a target CPU
/// for tools like compiler, disassembler etc.
Index: source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
===
--- source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
+++ source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
@@ -1697,8 +1697,7 @@
I->section_name = name;
-if (arch_spec.GetMachine() == llvm::Triple::mips || arch_spec.GetMachine() == llvm::Triple::mipsel
-|| arch_spec.GetMachine() == llvm::Triple::mips64 || arch_spec.GetMachine() == llvm::Triple::mips64el)
+if (arch
[Lldb-commits] [lldb] r269181 - [LLDB][MIPS] Setting appropriate ArchSpec::m_flags based on ABI
Author: slthakur
Date: Wed May 11 08:08:29 2016
New Revision: 269181
URL: http://llvm.org/viewvc/llvm-project?rev=269181&view=rev
Log:
[LLDB][MIPS] Setting appropriate ArchSpec::m_flags based on ABI
Patch by Nitesh Jain.
Summary: The ArchSpec::m_flags will be set based on ELF flag ABI.
Reviewers: ovyalov, clayborg
Subscribers: lldb-commits, mohit.bhakkad, sagar, jaydeep, bhushan
Differential: D18858
Modified:
lldb/trunk/include/lldb/Core/ArchSpec.h
lldb/trunk/source/Core/ArchSpec.cpp
lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
Modified: lldb/trunk/include/lldb/Core/ArchSpec.h
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ArchSpec.h?rev=269181&r1=269180&r2=269181&view=diff
==
--- lldb/trunk/include/lldb/Core/ArchSpec.h (original)
+++ lldb/trunk/include/lldb/Core/ArchSpec.h Wed May 11 08:08:29 2016
@@ -69,6 +69,9 @@ public:
eMIPSABI_O32= 0x2000,
eMIPSABI_N32= 0x4000,
eMIPSABI_N64= 0x8000,
+eMIPSABI_O64= 0x0002,
+eMIPSABI_EABI32 = 0x0004,
+eMIPSABI_EABI64 = 0x0008,
eMIPSABI_mask = 0x000ff000
};
@@ -289,6 +292,14 @@ public:
const char *
GetArchitectureName () const;
+//-
+/// if MIPS architecture return true.
+///
+/// @return a boolean value.
+//-
+bool
+IsMIPS() const;
+
//--
/// Returns a string representing current architecture as a target CPU
/// for tools like compiler, disassembler etc.
Modified: lldb/trunk/source/Core/ArchSpec.cpp
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ArchSpec.cpp?rev=269181&r1=269180&r2=269181&view=diff
==
--- lldb/trunk/source/Core/ArchSpec.cpp (original)
+++ lldb/trunk/source/Core/ArchSpec.cpp Wed May 11 08:08:29 2016
@@ -507,6 +507,18 @@ ArchSpec::GetArchitectureName () const
return "unknown";
}
+bool
+ArchSpec::IsMIPS() const
+{
+const llvm::Triple::ArchType machine = GetMachine();
+if(machine == llvm::Triple::mips ||
+ machine == llvm::Triple::mipsel ||
+ machine == llvm::Triple::mips64 ||
+ machine == llvm::Triple::mips64el)
+ return true;
+return false;
+}
+
std::string
ArchSpec::GetClangTargetCPU ()
{
Modified: lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp?rev=269181&r1=269180&r2=269181&view=diff
==
--- lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp (original)
+++ lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp Wed May 11
08:08:29 2016
@@ -1697,8 +1697,7 @@ ObjectFileELF::GetSectionHeaderInfo(Sect
I->section_name = name;
-if (arch_spec.GetMachine() == llvm::Triple::mips ||
arch_spec.GetMachine() == llvm::Triple::mipsel
-|| arch_spec.GetMachine() == llvm::Triple::mips64 ||
arch_spec.GetMachine() == llvm::Triple::mips64el)
+if (arch_spec.IsMIPS())
{
uint32_t arch_flags = arch_spec.GetFlags ();
DataExtractor data;
@@ -1712,13 +1711,27 @@ ObjectFileELF::GetSectionHeaderInfo(Sect
}
}
// Settings appropriate ArchSpec ABI Flags
-if (header.e_flags & llvm::ELF::EF_MIPS_ABI2)
+switch(header.e_flags & llvm::ELF::EF_MIPS_ABI)
{
-arch_flags |= lldb_private::ArchSpec::eMIPSABI_N32;
-}
-else if (header.e_flags & llvm::ELF::EF_MIPS_ABI_O32)
-{
- arch_flags |= lldb_private::ArchSpec::eMIPSABI_O32;
+case llvm::ELF::EF_MIPS_ABI_O32:
+arch_flags |= lldb_private::ArchSpec::eMIPSABI_O32;
+break;
+case EF_MIPS_ABI_O64:
+arch_flags |= lldb_private::ArchSpec::eMIPSABI_O64;
+break;
+case EF_MIPS_ABI_EABI32:
+arch_flags |=
lldb_private::ArchSpec::eMIPSABI_EABI32;
+break;
+case EF_MIPS_ABI_EABI64:
+arch_flags |=
lldb_private::ArchSpec::eMIPSABI_EABI64;
+break;
+default:
+// ABI Mask doesn't cover N32 and
Re: [Lldb-commits] [PATCH] D18858: [LLDB][MIPS] Setting appropriate ArchSpec::m_flags based on ABI
nitesh.jain closed this revision. nitesh.jain added a comment. Commited in revision 269181 Repository: rL LLVM http://reviews.llvm.org/D18858 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D20106: Generalize child process monitoring functions
labath added a comment. In http://reviews.llvm.org/D20106#426224, @zturner wrote: > It's too bad llvm doesn't have an equivalent of boost::any, because that > would be perfect here :-/ I actually think that a `std::function` is better here than an `any` type because it ensures type safety (even though `std::function` will use something equivalent to `any` underneath). What makes this API slightly cumbersome in my mind is the fact that we have 4 arguments which we are forwarding. If we condensed that into say 2 (pid, and a `struct StopInfo`), then I think it would be perfect. http://reviews.llvm.org/D20106 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D20106: Generalize child process monitoring functions
labath updated this revision to Diff 56903.
labath marked 3 inline comments as done.
labath added a comment.
Herald added a subscriber: emaste.
Remove the typedef and add changes to windows, osx, and freebsd-specific code.
I didn't
try building NetBSD, but given that there is no Plugins/Process/NetBSD, I don't
think I
need to do any changes there at all. I'll keep an eye out on the buildbots after
submitting this.
I'd like to draw attention to the osx change in Host.mm in particular, as I not
too
familiar with objjective c, but making a copy there made the thing work for me
(without
that, I was getting errors, presumably because the block was only capturing the
reference, which was not enough if to keep the function object alive).
http://reviews.llvm.org/D20106
Files:
include/lldb/Host/Host.h
include/lldb/Host/HostNativeProcessBase.h
include/lldb/Host/HostProcess.h
include/lldb/Host/posix/HostProcessPosix.h
include/lldb/Host/windows/HostProcessWindows.h
include/lldb/Target/Process.h
include/lldb/Target/ProcessLaunchInfo.h
source/Host/common/Host.cpp
source/Host/common/HostProcess.cpp
source/Host/common/MonitoringProcessLauncher.cpp
source/Host/macosx/Host.mm
source/Host/posix/HostProcessPosix.cpp
source/Host/windows/Host.cpp
source/Host/windows/HostProcessWindows.cpp
source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
source/Plugins/Process/FreeBSD/ProcessMonitor.h
source/Plugins/Process/Windows/Live/ProcessWindowsLive.cpp
source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp
source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h
source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
source/Target/Process.cpp
source/Target/ProcessLaunchInfo.cpp
Index: source/Target/ProcessLaunchInfo.cpp
===
--- source/Target/ProcessLaunchInfo.cpp
+++ source/Target/ProcessLaunchInfo.cpp
@@ -244,12 +244,9 @@
}
void
-ProcessLaunchInfo::SetMonitorProcessCallback (Host::MonitorChildProcessCallback callback,
- void *baton,
- bool monitor_signals)
+ProcessLaunchInfo::SetMonitorProcessCallback(const Host::MonitorChildProcessCallback &callback, bool monitor_signals)
{
m_monitor_callback = callback;
-m_monitor_callback_baton = baton;
m_monitor_signals = monitor_signals;
}
@@ -259,7 +256,6 @@
if (m_monitor_callback && ProcessIDIsValid())
{
Host::StartMonitoringChildProcess (m_monitor_callback,
- m_monitor_callback_baton,
GetProcessID(),
m_monitor_signals);
return true;
Index: source/Target/Process.cpp
===
--- source/Target/Process.cpp
+++ source/Target/Process.cpp
@@ -1512,21 +1512,15 @@
// found in the global target list (we want to be completely sure that the
// lldb_private::Process doesn't go away before we can deliver the signal.
bool
-Process::SetProcessExitStatus (void *callback_baton,
- lldb::pid_t pid,
- bool exited,
- int signo, // Zero for no signal
- int exit_status // Exit value of process if signal is zero
-)
+Process::SetProcessExitStatus(lldb::pid_t pid, bool exited,
+ int signo, // Zero for no signal
+ int exit_status // Exit value of process if signal is zero
+ )
{
Log *log(lldb_private::GetLogIfAnyCategoriesSet (LIBLLDB_LOG_PROCESS));
if (log)
-log->Printf ("Process::SetProcessExitStatus (baton=%p, pid=%" PRIu64 ", exited=%i, signal=%i, exit_status=%i)\n",
- callback_baton,
- pid,
- exited,
- signo,
- exit_status);
+log->Printf("Process::SetProcessExitStatus (pid=%" PRIu64 ", exited=%i, signal=%i, exit_status=%i)\n", pid,
+exited, signo, exit_status);
if (exited)
{
Index: source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
===
--- source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
+++ source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
@@ -405,11 +405,7 @@
AsyncThread (void *arg);
static bool
-MonitorDebugserverProcess (void *callback_baton,
- lldb::pid_t pid,
- bool exited,
- int signo,
- int exit_status);
+MonitorDebugserverProcess(ProcessGDBRemote *process, lldb::pid_t pid, bool exited, int signo, int exit_status);
lldb::Stat
[Lldb-commits] [lldb] r269187 - Xfail failing watchpoint tests on aarch64-linux
Author: omjavaid
Date: Wed May 11 08:57:20 2016
New Revision: 269187
URL: http://llvm.org/viewvc/llvm-project?rev=269187&view=rev
Log:
Xfail failing watchpoint tests on aarch64-linux
Some watchpoint tests fail on aarch64-linux as it lacks support for intalling
watchpoints which are not alligned at 8bytes boundary.
Marking them as xfail for now.
Modified:
lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py
lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py
lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py
lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_events/TestWatchpointEvents.py
lldb/trunk/packages/Python/lldbsuite/test/python_api/watchpoint/condition/TestWatchpointConditionAPI.py
Modified:
lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py?rev=269187&r1=269186&r2=269187&view=diff
==
---
lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py
(original)
+++
lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py
Wed May 11 08:57:20 2016
@@ -30,6 +30,7 @@ class WatchpointLLDBCommandTestCase(Test
self.d = {'CXX_SOURCES': self.source, 'EXE': self.exe_name}
@expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not
supported
+@expectedFailureAll(oslist=["linux"], archs=["aarch64"],
bugnumber="llvm.org/pr27710")
@expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24446:
WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows")
def test_watchpoint_command(self):
"""Test 'watchpoint command'."""
@@ -84,6 +85,7 @@ class WatchpointLLDBCommandTestCase(Test
substrs = ['(int32_t)', 'cookie = 777'])
@expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not
supported
+@expectedFailureAll(oslist=["linux"], archs=["aarch64"],
bugnumber="llvm.org/pr27710")
@expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24446:
WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows")
def test_watchpoint_command_can_disable_a_watchpoint(self):
"""Test that 'watchpoint command' action can disable a watchpoint
after it is triggered."""
Modified:
lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py?rev=269187&r1=269186&r2=269187&view=diff
==
---
lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py
(original)
+++
lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py
Wed May 11 08:57:20 2016
@@ -32,6 +32,7 @@ class WatchpointPythonCommandTestCase(Te
@skipIfFreeBSD # timing out on buildbot
@expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24446:
WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows")
@expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not
supported
+@expectedFailureAll(oslist=["linux"], archs=["aarch64"],
bugnumber="llvm.org/pr27710")
def test_watchpoint_command(self):
"""Test 'watchpoint command'."""
self.build(dictionary=self.d)
Modified:
lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py?rev=269187&r1=269186&r2=269187&view=diff
==
---
lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py
(original)
+++
lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py
Wed May 11 08:57:20 2016
@@ -30,6 +30,7 @@ class WatchpointConditionCmdTestCase(Tes
self.d = {'CXX_SOURCES': self.source, 'EXE': self.exe_name}
@expectedFailureAn
Re: [Lldb-commits] [lldb] r269025 - Fix race in TestExitDuringStep and unify pseudo_barrier handling
Hi, so I think this is our old "compiler generates unpredictable number of source locations for a line" friend again, which got triggered by a random code reshuffle. Assuming the test still passes for you after that, can you prepare a change to remove the "num_expected_locations = 1" from the relevant lines? If that doesn't fix it, then we'll need to think harder about this. pl On 10 May 2016 at 21:25, Ed Maste wrote: > On 10 May 2016 at 03:54, Pavel Labath via lldb-commits > wrote: >> Author: labath >> Date: Tue May 10 02:54:25 2016 >> New Revision: 269025 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=269025&view=rev >> Log: >> Fix race in TestExitDuringStep and unify pseudo_barrier handling > > After this change TestThreadExit is failing on FreeBSD 10 with: > ... > File > "/tank/emaste/src/llvm/tools/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/TestThreadExit.py", > line 36, in test > bp3_id = lldbutil.run_break_set_by_file_and_line (self, > "main.cpp", self.break_3, num_expected_locations=1) > File > "/tank/emaste/src/llvm/tools/lldb/packages/Python/lldbsuite/test/lldbutil.py", > line 342, in run_break_set_by_file_and_line > check_breakpoint_result (test, break_results, num_locations = > num_expected_locations) > File > "/tank/emaste/src/llvm/tools/lldb/packages/Python/lldbsuite/test/lldbutil.py", > line 474, in check_breakpoint_result > test.assertTrue (num_locations == out_num_locations, "Expecting %d > locations, got %d."%(num_locations, out_num_locations)) > AssertionError: False is not True : Expecting 1 locations, got 2. > ... > > "breakpoint list" shows: > > 3: file = > '/tank/emaste/src/llvm/tools/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/main.cpp', > line = 67, locations = 2 > 3.1: where = a.out`main + 1437 at main.cpp:67, address = > 0x004018bd, unresolved, hit count = 0 > 3.2: where = a.out`main + 1846 at main.cpp:67, address = > 0x00401a56, unresolved, hit count = 0 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [lldb] r269025 - Fix race in TestExitDuringStep and unify pseudo_barrier handling
On 11 May 2016 at 10:10, Pavel Labath wrote:
> Hi,
>
> so I think this is our old "compiler generates unpredictable number of
> source locations for a line" friend again, which got triggered by a
> random code reshuffle. Assuming the test still passes for you after
> that, can you prepare a change to remove the "num_expected_locations =
> 1" from the relevant lines?
Indeed. I'm able to get the test passing with this ugly workaround:
---
a/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/TestThreadExit.py
+++
b/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/TestThreadExit.py
@@ -31,16 +31,18 @@ class ThreadExitTestCase(TestBase):
self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
# This should create a breakpoint with 1 location.
+ # Note, Clang 3.4.1 on FreeBSD 10 produces debug info with two locations
+ # for breakpoint 3. Work around that by requiring at least one location.
bp1_id = lldbutil.run_break_set_by_file_and_line (self,
"main.cpp", self.break_1, num_expected_locations=1)
bp2_id = lldbutil.run_break_set_by_file_and_line (self,
"main.cpp", self.break_2, num_expected_locations=1)
-bp3_id = lldbutil.run_break_set_by_file_and_line (self,
"main.cpp", self.break_3, num_expected_locations=1)
+bp3_id = lldbutil.run_break_set_by_file_and_line (self,
"main.cpp", self.break_3, num_expected_locations=-1)
bp4_id = lldbutil.run_break_set_by_file_and_line (self,
"main.cpp", self.break_4, num_expected_locations=1)
# The breakpoint list should show 1 locations.
self.expect("breakpoint list -f", "Breakpoint location shown
correctly",
substrs = ["1: file = 'main.cpp', line = %d, exact_match
= 0, locations = 1" % self.break_1,
"2: file = 'main.cpp', line = %d, exact_match
= 0, locations = 1" % self.break_2,
- "3: file = 'main.cpp', line = %d, exact_match
= 0, locations = 1" % self.break_3,
+ "3: file = 'main.cpp', line = %d, exact_match
= 0, locations = " % self.break_3,
"4: file = 'main.cpp', line = %d, exact_match
= 0, locations = 1" % self.break_4])
# Run the program.
@@ -76,6 +78,10 @@ class ThreadExitTestCase(TestBase):
# Run to the fourth breakpoint
self.runCmd("continue")
+ # bp3 may have multiple locations. Continue if we're still
stopped there.
+if lldbutil.get_one_thread_stopped_at_breakpoint_id(process, bp3_id):
+self.runCmd("continue")
+
stopped_thread =
lldbutil.get_one_thread_stopped_at_breakpoint_id(process, bp4_id)
self.assertIsNotNone(stopped_thread, "Process is not stopped
at breakpoint 4")
___
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [lldb] r269025 - Fix race in TestExitDuringStep and unify pseudo_barrier handling
Hmm.. So you actually needed to insert the additional "continue"
command. That is not good. I was hoping it would be enough to just
remove the strict check for the location numbers.
Working around it this way is quite ugly. Let's try something else.
Would getting rid of the do{}while loop in the macro fix the problem?
I added it to make the macro a bit more safe, but I don't think it's
really necessary...
It may be worth making this into a separate test case though, as this
should just work.
pl
On 11 May 2016 at 16:24, Ed Maste wrote:
> On 11 May 2016 at 10:10, Pavel Labath wrote:
>> Hi,
>>
>> so I think this is our old "compiler generates unpredictable number of
>> source locations for a line" friend again, which got triggered by a
>> random code reshuffle. Assuming the test still passes for you after
>> that, can you prepare a change to remove the "num_expected_locations =
>> 1" from the relevant lines?
>
> Indeed. I'm able to get the test passing with this ugly workaround:
>
> ---
> a/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/TestThreadExit.py
> +++
> b/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/TestThreadExit.py
> @@ -31,16 +31,18 @@ class ThreadExitTestCase(TestBase):
> self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
>
> # This should create a breakpoint with 1 location.
> + # Note, Clang 3.4.1 on FreeBSD 10 produces debug info with two
> locations
> + # for breakpoint 3. Work around that by requiring at least one
> location.
> bp1_id = lldbutil.run_break_set_by_file_and_line (self,
> "main.cpp", self.break_1, num_expected_locations=1)
> bp2_id = lldbutil.run_break_set_by_file_and_line (self,
> "main.cpp", self.break_2, num_expected_locations=1)
> -bp3_id = lldbutil.run_break_set_by_file_and_line (self,
> "main.cpp", self.break_3, num_expected_locations=1)
> +bp3_id = lldbutil.run_break_set_by_file_and_line (self,
> "main.cpp", self.break_3, num_expected_locations=-1)
> bp4_id = lldbutil.run_break_set_by_file_and_line (self,
> "main.cpp", self.break_4, num_expected_locations=1)
>
> # The breakpoint list should show 1 locations.
> self.expect("breakpoint list -f", "Breakpoint location shown
> correctly",
> substrs = ["1: file = 'main.cpp', line = %d, exact_match
> = 0, locations = 1" % self.break_1,
> "2: file = 'main.cpp', line = %d, exact_match
> = 0, locations = 1" % self.break_2,
> - "3: file = 'main.cpp', line = %d, exact_match
> = 0, locations = 1" % self.break_3,
> + "3: file = 'main.cpp', line = %d, exact_match
> = 0, locations = " % self.break_3,
> "4: file = 'main.cpp', line = %d, exact_match
> = 0, locations = 1" % self.break_4])
>
> # Run the program.
> @@ -76,6 +78,10 @@ class ThreadExitTestCase(TestBase):
>
> # Run to the fourth breakpoint
> self.runCmd("continue")
> + # bp3 may have multiple locations. Continue if we're still
> stopped there.
> +if lldbutil.get_one_thread_stopped_at_breakpoint_id(process, bp3_id):
> +self.runCmd("continue")
> +
> stopped_thread =
> lldbutil.get_one_thread_stopped_at_breakpoint_id(process, bp4_id)
> self.assertIsNotNone(stopped_thread, "Process is not stopped
> at breakpoint 4")
___
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D20106: Generalize child process monitoring functions
krytarowski added a comment. I'm going to test NetBSD. http://reviews.llvm.org/D20106 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D15067: Design building out of sources
krytarowski added a comment. In http://reviews.llvm.org/D15067#419964, @labath wrote: > Good question. I don't really have an opinion on that... Is it just that > single line? (this would be simpler if you uploaded the final version :) ). > If it just that single line, then I think it's fine. If you also need to play > with the ADDITIONAL_VERSIONS and such, then we should think about making a > macro or doing something else to avoid code duplication (there is already a > FIXME in scripts/Python/modules/readline mentioning the additional versions). Sorry for delay. I'm going to update the diff. Repository: rL LLVM http://reviews.llvm.org/D15067 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r269205 - Generalize child process monitoring functions
Author: labath
Date: Wed May 11 11:59:04 2016
New Revision: 269205
URL: http://llvm.org/viewvc/llvm-project?rev=269205&view=rev
Log:
Generalize child process monitoring functions
Summary:
This replaces the C-style "void *" baton of the child process monitoring
functions with a more
C++-like API taking a std::function. The motivation for this was that it was
very difficult to
handle the ownership of the object passed into the callback function -- each
caller ended up
implementing his own way of doing it, some doing it better than others. With
the new API, one can
just pass a smart pointer into the callback and all of the lifetime management
will be handled
automatically.
This has enabled me to simplify the rather complicated handshake in
Host::RunShellCommand. I have
left handling of MonitorDebugServerProcess (my original motivation for this
change) to a separate
commit to reduce the scope of this change.
Reviewers: clayborg, zturner, emaste, krytarowski
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D20106
Modified:
lldb/trunk/include/lldb/Host/Host.h
lldb/trunk/include/lldb/Host/HostNativeProcessBase.h
lldb/trunk/include/lldb/Host/HostProcess.h
lldb/trunk/include/lldb/Host/posix/HostProcessPosix.h
lldb/trunk/include/lldb/Host/windows/HostProcessWindows.h
lldb/trunk/include/lldb/Target/Process.h
lldb/trunk/include/lldb/Target/ProcessLaunchInfo.h
lldb/trunk/source/Host/common/Host.cpp
lldb/trunk/source/Host/common/HostProcess.cpp
lldb/trunk/source/Host/common/MonitoringProcessLauncher.cpp
lldb/trunk/source/Host/macosx/Host.mm
lldb/trunk/source/Host/posix/HostProcessPosix.cpp
lldb/trunk/source/Host/windows/Host.cpp
lldb/trunk/source/Host/windows/HostProcessWindows.cpp
lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.h
lldb/trunk/source/Plugins/Process/Windows/Live/ProcessWindowsLive.cpp
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h
lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
lldb/trunk/source/Target/Process.cpp
lldb/trunk/source/Target/ProcessLaunchInfo.cpp
Modified: lldb/trunk/include/lldb/Host/Host.h
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/Host.h?rev=269205&r1=269204&r2=269205&view=diff
==
--- lldb/trunk/include/lldb/Host/Host.h (original)
+++ lldb/trunk/include/lldb/Host/Host.h Wed May 11 11:59:04 2016
@@ -38,12 +38,10 @@ class ProcessLaunchInfo;
class Host
{
public:
-
-typedef bool (*MonitorChildProcessCallback) (void *callback_baton,
- lldb::pid_t pid,
- bool exited,
- int signal,// Zero for no
signal
- int status); // Exit value
of process if signal is zero
+typedef std::function // Exit value of process if signal
is zero
+MonitorChildProcessCallback;
//--
/// Start monitoring a child process.
@@ -65,10 +63,6 @@ public:
/// A function callback to call when a child receives a signal
/// (if \a monitor_signals is true) or a child exits.
///
-/// @param[in] callback_baton
-/// A void * of user data that will be pass back when
-/// \a callback is called.
-///
/// @param[in] pid
/// The process ID of a child process to monitor, -1 for all
/// processes.
@@ -84,8 +78,8 @@ public:
///
/// @see static void Host::StopMonitoringChildProcess (uint32_t)
//--
-static HostThread StartMonitoringChildProcess(MonitorChildProcessCallback
callback, void *callback_baton, lldb::pid_t pid,
- bool monitor_signals);
+static HostThread
+StartMonitoringChildProcess(const MonitorChildProcessCallback &callback,
lldb::pid_t pid, bool monitor_signals);
enum SystemLogType
{
Modified: lldb/trunk/include/lldb/Host/HostNativeProcessBase.h
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/HostNativeProcessBase.h?rev=269205&r1=269204&r2=269205&view=diff
==
--- lldb/trunk/include/lldb/Host/HostNativeProcessBase.h (original)
+++ lldb/trunk/include/lldb/Host/HostNativeProcessBase.h Wed May 11 11:59:04
2016
@@ -46,9 +46,10 @@ class HostNativeProcessBase
return m_process;
}
-virtual HostThread StartMonito
Re: [Lldb-commits] [PATCH] D20106: Generalize child process monitoring functions
This revision was automatically updated to reflect the committed changes.
Closed by commit rL269205: Generalize child process monitoring functions
(authored by labath).
Changed prior to commit:
http://reviews.llvm.org/D20106?vs=56903&id=56932#toc
Repository:
rL LLVM
http://reviews.llvm.org/D20106
Files:
lldb/trunk/include/lldb/Host/Host.h
lldb/trunk/include/lldb/Host/HostNativeProcessBase.h
lldb/trunk/include/lldb/Host/HostProcess.h
lldb/trunk/include/lldb/Host/posix/HostProcessPosix.h
lldb/trunk/include/lldb/Host/windows/HostProcessWindows.h
lldb/trunk/include/lldb/Target/Process.h
lldb/trunk/include/lldb/Target/ProcessLaunchInfo.h
lldb/trunk/source/Host/common/Host.cpp
lldb/trunk/source/Host/common/HostProcess.cpp
lldb/trunk/source/Host/common/MonitoringProcessLauncher.cpp
lldb/trunk/source/Host/macosx/Host.mm
lldb/trunk/source/Host/posix/HostProcessPosix.cpp
lldb/trunk/source/Host/windows/Host.cpp
lldb/trunk/source/Host/windows/HostProcessWindows.cpp
lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.h
lldb/trunk/source/Plugins/Process/Windows/Live/ProcessWindowsLive.cpp
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h
lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
lldb/trunk/source/Target/Process.cpp
lldb/trunk/source/Target/ProcessLaunchInfo.cpp
Index: lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
===
--- lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -3584,6 +3584,8 @@
Error
ProcessGDBRemote::LaunchAndConnectToDebugserver (const ProcessInfo &process_info)
{
+using namespace std::placeholders; // For _1, _2, etc.
+
Error error;
if (m_debugserver_pid == LLDB_INVALID_PROCESS_ID)
{
@@ -3595,7 +3597,8 @@
// special terminal key sequences (^C) don't affect debugserver.
debugserver_launch_info.SetLaunchInSeparateProcessGroup(true);
-debugserver_launch_info.SetMonitorProcessCallback (MonitorDebugserverProcess, this, false);
+debugserver_launch_info.SetMonitorProcessCallback(std::bind(MonitorDebugserverProcess, this, _1, _2, _3, _4),
+ false);
debugserver_launch_info.SetUserID(process_info.GetUserID());
#if defined (__APPLE__) && (defined (__arm__) || defined (__arm64__) || defined (__aarch64__))
@@ -3657,14 +3660,11 @@
}
bool
-ProcessGDBRemote::MonitorDebugserverProcess
-(
-void *callback_baton,
-lldb::pid_t debugserver_pid,
-bool exited,// True if the process did exit
-int signo, // Zero for no signal
-int exit_status // Exit value of process if signal is zero
-)
+ProcessGDBRemote::MonitorDebugserverProcess(ProcessGDBRemote *process, lldb::pid_t debugserver_pid,
+bool exited,// True if the process did exit
+int signo, // Zero for no signal
+int exit_status // Exit value of process if signal is zero
+)
{
// The baton is a "ProcessGDBRemote *". Now this class might be gone
// and might not exist anymore, so we need to carefully try to get the
@@ -3680,15 +3680,14 @@
// debugserver that we are tracking...
Log *log (ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PROCESS));
-ProcessGDBRemote *process = (ProcessGDBRemote *)callback_baton;
-
// Get a shared pointer to the target that has a matching process pointer.
// This target could be gone, or the target could already have a new process
// object inside of it
TargetSP target_sp (Debugger::FindTargetWithProcess(process));
if (log)
-log->Printf ("ProcessGDBRemote::MonitorDebugserverProcess (baton=%p, pid=%" PRIu64 ", signo=%i (0x%x), exit_status=%i)", callback_baton, debugserver_pid, signo, signo, exit_status);
+log->Printf("ProcessGDBRemote::%s(process=%p, pid=%" PRIu64 ", signo=%i (0x%x), exit_status=%i)", __FUNCTION__,
+process, debugserver_pid, signo, signo, exit_status);
if (target_sp)
{
Index: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h
===
--- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h
+++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h
@@ -121,13 +121,6 @@
bool
DebugserverProcessReaped (lldb::pid_t pid);
-st
Re: [Lldb-commits] [PATCH] D19998: Add a "-gmodules" category to the test suite.
tfiala added a comment. Hi Adrian, I think this has stalled. What do we need to resolve now? http://reviews.llvm.org/D19998 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D19998: Add a "-gmodules" category to the test suite.
aprantl added a comment. I still need some expertise on how to disable the configuration on platforms with older versions of clang (or different compilers like gcc). http://reviews.llvm.org/D19998 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D19998: Add a "-gmodules" category to the test suite.
tfiala added a comment. Oh right, I recall there was an action item on me. I'll catch up with you on that in a bit. http://reviews.llvm.org/D19998 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D20135: Keep original source path and mapped path in LineEntry
ted updated this revision to Diff 56967.
ted marked an inline comment as done.
ted added a comment.
Addressed Jim's comments.
Make BreakpointResolver check both original and mapped files.
Changed ThreadPlanStepOverRange line 235 to use original_file.
Changed "struct SourceInfo" operators in CommandobjectSource to use original
file.
Changed LineEntry::GetSameLineContiguousAddressRagne to use original file.
http://reviews.llvm.org/D20135
Files:
include/lldb/Symbol/LineEntry.h
source/Breakpoint/BreakpointResolver.cpp
source/Commands/CommandObjectSource.cpp
source/Symbol/LineEntry.cpp
source/Symbol/LineTable.cpp
source/Symbol/SymbolContext.cpp
source/Target/StackFrame.cpp
source/Target/StackFrameList.cpp
source/Target/ThreadPlanStepOverRange.cpp
source/Target/ThreadPlanStepRange.cpp
Index: source/Target/ThreadPlanStepRange.cpp
===
--- source/Target/ThreadPlanStepRange.cpp
+++ source/Target/ThreadPlanStepRange.cpp
@@ -155,7 +155,7 @@
SymbolContext new_context(frame->GetSymbolContext(eSymbolContextEverything));
if (m_addr_context.line_entry.IsValid() && new_context.line_entry.IsValid())
{
-if (m_addr_context.line_entry.file == new_context.line_entry.file)
+if (m_addr_context.line_entry.original_file == new_context.line_entry.original_file)
{
if (m_addr_context.line_entry.line == new_context.line_entry.line)
{
Index: source/Target/ThreadPlanStepOverRange.cpp
===
--- source/Target/ThreadPlanStepOverRange.cpp
+++ source/Target/ThreadPlanStepOverRange.cpp
@@ -232,7 +232,7 @@
sc = frame_sp->GetSymbolContext (eSymbolContextEverything);
if (sc.line_entry.IsValid())
{
-if (sc.line_entry.file != m_addr_context.line_entry.file
+if (sc.line_entry.original_file != m_addr_context.line_entry.original_file
&& sc.comp_unit == m_addr_context.comp_unit
&& sc.function == m_addr_context.function)
{
@@ -256,7 +256,7 @@
// some code fragment by using #include directly.
LineEntry prev_line_entry;
if (line_table->GetLineEntryAtIndex(entry_idx - 1, prev_line_entry)
-&& prev_line_entry.file == line_entry.file)
+&& prev_line_entry.original_file == line_entry.original_file)
{
SymbolContext prev_sc;
Address prev_address = prev_line_entry.range.GetBaseAddress();
@@ -289,7 +289,7 @@
if (next_line_function != m_addr_context.function)
break;
-if (next_line_entry.file == m_addr_context.line_entry.file)
+if (next_line_entry.original_file == m_addr_context.line_entry.original_file)
{
const bool abort_other_plans = false;
const RunMode stop_other_threads = RunMode::eAllThreads;
Index: source/Target/StackFrameList.cpp
===
--- source/Target/StackFrameList.cpp
+++ source/Target/StackFrameList.cpp
@@ -350,6 +350,7 @@
if (unwind_block)
{
Address curr_frame_address (unwind_frame_sp->GetFrameCodeAddress());
+TargetSP target_sp = m_thread.CalculateTarget();
// Be sure to adjust the frame address to match the address
// that was used to lookup the symbol context above. If we are
// in the first concrete frame, then we lookup using the current
@@ -362,9 +363,8 @@
// If curr_frame_address points to the first address in a section then after
// adjustment it will point to an other section. In that case resolve the
// address again to the correct section plus offset form.
-TargetSP target = m_thread.CalculateTarget();
-addr_t load_addr = curr_frame_address.GetOpcodeLoadAddress(target.get(), eAddressClassCode);
-curr_frame_address.SetOpcodeLoadAddress(load_addr - 1, target.get(), eAddressClassCode);
+addr_t load_addr = curr_frame_address.GetOpcodeLoadAddress(target_sp.get(), eAddressClassCode);
+curr_frame_address.SetOpcodeLoadAddress(load_addr - 1, targe
Re: [Lldb-commits] [PATCH] D20135: Keep original source path and mapped path in LineEntry
jingham accepted this revision. jingham added a comment. This revision is now accepted and ready to land. Looks good to me. http://reviews.llvm.org/D20135 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D15067: Add CMake bits necessary for standalone build
krytarowski retitled this revision from "Design building out of sources" to
"Add CMake bits necessary for standalone build".
krytarowski updated this revision to Diff 56970.
Repository:
rL LLVM
http://reviews.llvm.org/D15067
Files:
cmake/modules/LLDBStandalone.cmake
scripts/CMakeLists.txt
Index: scripts/CMakeLists.txt
===
--- scripts/CMakeLists.txt
+++ scripts/CMakeLists.txt
@@ -9,6 +9,8 @@
${LLDB_SOURCE_DIR}/include/lldb/lldb-versioning.h
)
+include(FindPythonInterp)
+
find_package(SWIG REQUIRED)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp
Index: cmake/modules/LLDBStandalone.cmake
===
--- cmake/modules/LLDBStandalone.cmake
+++ cmake/modules/LLDBStandalone.cmake
@@ -6,57 +6,78 @@
option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the 'install' target." OFF)
- set(LLDB_PATH_TO_LLVM_SOURCE "" CACHE PATH
-"Path to LLVM source code. Not necessary if using an installed LLVM.")
- set(LLDB_PATH_TO_LLVM_BUILD "" CACHE PATH
-"Path to the directory where LLVM was built or installed.")
-
- set(LLDB_PATH_TO_CLANG_SOURCE "" CACHE PATH
-"Path to Clang source code. Not necessary if using an installed Clang.")
- set(LLDB_PATH_TO_CLANG_BUILD "" CACHE PATH
-"Path to the directory where Clang was built or installed.")
-
- if (LLDB_PATH_TO_LLVM_SOURCE)
-if (NOT EXISTS "${LLDB_PATH_TO_LLVM_SOURCE}/cmake/config-ix.cmake")
- message(FATAL_ERROR "Please set LLDB_PATH_TO_LLVM_SOURCE to the root "
- "directory of LLVM source code.")
+ # Rely on llvm-config.
+ set(CONFIG_OUTPUT)
+ find_program(LLVM_CONFIG "llvm-config")
+ if(LLVM_CONFIG)
+message(STATUS "Found LLVM_CONFIG as ${LLVM_CONFIG}")
+set(CONFIG_COMMAND ${LLVM_CONFIG}
+ "--assertion-mode"
+ "--bindir"
+ "--libdir"
+ "--includedir"
+ "--prefix"
+ "--src-root")
+execute_process(
+ COMMAND ${CONFIG_COMMAND}
+ RESULT_VARIABLE HAD_ERROR
+ OUTPUT_VARIABLE CONFIG_OUTPUT
+)
+if(NOT HAD_ERROR)
+ string(REGEX REPLACE
+"[ \t]*[\r\n]+[ \t]*" ";"
+CONFIG_OUTPUT ${CONFIG_OUTPUT})
+
else()
- get_filename_component(LLVM_MAIN_SRC_DIR ${LLDB_PATH_TO_LLVM_SOURCE}
- ABSOLUTE)
- set(LLVM_MAIN_INCLUDE_DIR "${LLVM_MAIN_SRC_DIR}/include")
- list(APPEND CMAKE_MODULE_PATH "${LLVM_MAIN_SRC_DIR}/cmake/modules")
+ string(REPLACE ";" " " CONFIG_COMMAND_STR "${CONFIG_COMMAND}")
+ message(STATUS "${CONFIG_COMMAND_STR}")
+ message(FATAL_ERROR "llvm-config failed with status ${HAD_ERROR}")
endif()
+ else()
+message(FATAL_ERROR "llvm-config not found -- ${LLVM_CONFIG}")
endif()
- if (LLDB_PATH_TO_CLANG_SOURCE)
- get_filename_component(CLANG_MAIN_SRC_DIR ${LLDB_PATH_TO_CLANG_SOURCE}
- ABSOLUTE)
- set(CLANG_MAIN_INCLUDE_DIR "${CLANG_MAIN_SRC_DIR}/include")
+ list(GET CONFIG_OUTPUT 0 ENABLE_ASSERTIONS)
+ list(GET CONFIG_OUTPUT 1 TOOLS_BINARY_DIR)
+ list(GET CONFIG_OUTPUT 2 LIBRARY_DIR)
+ list(GET CONFIG_OUTPUT 3 INCLUDE_DIR)
+ list(GET CONFIG_OUTPUT 4 LLVM_OBJ_ROOT)
+ list(GET CONFIG_OUTPUT 5 MAIN_SRC_DIR)
+
+ if(NOT MSVC_IDE)
+set(LLVM_ENABLE_ASSERTIONS ${ENABLE_ASSERTIONS}
+ CACHE BOOL "Enable assertions")
+# Assertions should follow llvm-config's.
+mark_as_advanced(LLVM_ENABLE_ASSERTIONS)
endif()
- list(APPEND CMAKE_MODULE_PATH "${LLDB_PATH_TO_LLVM_BUILD}/lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm")
+ set(LLVM_TOOLS_BINARY_DIR ${TOOLS_BINARY_DIR} CACHE PATH "Path to llvm/bin")
+ set(LLVM_LIBRARY_DIR ${LIBRARY_DIR} CACHE PATH "Path to llvm/lib")
+ set(LLVM_MAIN_INCLUDE_DIR ${INCLUDE_DIR} CACHE PATH "Path to llvm/include")
+ set(LLVM_BINARY_DIR ${LLVM_OBJ_ROOT} CACHE PATH "Path to LLVM build tree")
+ set(LLVM_MAIN_SRC_DIR ${MAIN_SRC_DIR} CACHE PATH "Path to LLVM source tree")
- if (LLDB_PATH_TO_LLVM_BUILD)
-get_filename_component(PATH_TO_LLVM_BUILD ${LLDB_PATH_TO_LLVM_BUILD}
- ABSOLUTE)
- else()
-message(FATAL_ERROR "Please set LLDB_PATH_TO_LLVM_BUILD to the root "
-"directory of LLVM build or install site.")
- endif()
+ find_program(LLVM_TABLEGEN_EXE "llvm-tblgen" ${LLVM_TOOLS_BINARY_DIR}
+NO_DEFAULT_PATH)
- if (LLDB_PATH_TO_CLANG_BUILD)
-get_filename_component(PATH_TO_CLANG_BUILD ${LLDB_PATH_TO_CLANG_BUILD}
- ABSOLUTE)
+ set(LLVM_CMAKE_PATH "${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm")
+ set(LLVMCONFIG_FILE "${LLVM_CMAKE_PATH}/LLVMConfig.cmake")
+ if(EXISTS ${LLVMCONFIG_FILE})
+list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_PATH}")
+include(${LLVMCONFIG_FILE})
else()
-message(FATAL_ERROR "Please set LLDB_PATH_TO_CLANG_BUILD to the root "
-"directory of Clang build or install site.")
+message(FATAL_ERROR "No
Re: [Lldb-commits] [PATCH] D15067: Add CMake bits necessary for standalone build
krytarowski added a comment. Updated. Can I commit it this way as it is? Repository: rL LLVM http://reviews.llvm.org/D15067 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D15067: Add CMake bits necessary for standalone build
Eugene.Zelenko added a comment. I would like to see implemented my comment about LLVM_CONFIG and find_program(). Repository: rL LLVM http://reviews.llvm.org/D15067 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D15067: Add CMake bits necessary for standalone build
krytarowski added a comment. In http://reviews.llvm.org/D15067#427814, @Eugene.Zelenko wrote: > I would like to see implemented my comment about LLVM_CONFIG and > find_program(). Could you first push this to clang? I don't want to drift from clang myself. Repository: rL LLVM http://reviews.llvm.org/D15067 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D15067: Add CMake bits necessary for standalone build
Eugene.Zelenko added a comment. In http://reviews.llvm.org/D15067#427834, @krytarowski wrote: > In http://reviews.llvm.org/D15067#427814, @Eugene.Zelenko wrote: > > > I would like to see implemented my comment about LLVM_CONFIG and > > find_program(). > > > Could you first push this to clang? I don't want to drift from clang myself. I'm not sure about Clang make files, but I built Clang with LLVM. LLDB is more problematic, so I build it standalone with previously build Clang. This why I'd like to specify path in CMake parameters, not relying in find_program(). Repository: rL LLVM http://reviews.llvm.org/D15067 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r269250 - Keep original source path and mapped path in LineEntry
Author: ted
Date: Wed May 11 17:46:53 2016
New Revision: 269250
URL: http://llvm.org/viewvc/llvm-project?rev=269250&view=rev
Log:
Keep original source path and mapped path in LineEntry
Summary:
The "file" variable in a LineEntry was mapped using target.source-map, except
when stepping through inlined code. This patch adds a new variable to
LineEntry, "original_file", that contains the original file from the debug
info. "file" will continue to (possibly) be mapped.
Some code has been changed to use "original_file". This is code dealing with
symbols. Code dealing with source files will still use "file". Reviewers,
please confirm that these particular changes are correct.
Tests run on Ubuntu 12.04 show no regression.
Reviewers: clayborg, jingham
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D20135
Modified:
lldb/trunk/include/lldb/Symbol/LineEntry.h
lldb/trunk/source/Breakpoint/BreakpointResolver.cpp
lldb/trunk/source/Commands/CommandObjectSource.cpp
lldb/trunk/source/Symbol/LineEntry.cpp
lldb/trunk/source/Symbol/LineTable.cpp
lldb/trunk/source/Symbol/SymbolContext.cpp
lldb/trunk/source/Target/StackFrame.cpp
lldb/trunk/source/Target/StackFrameList.cpp
lldb/trunk/source/Target/ThreadPlanStepOverRange.cpp
lldb/trunk/source/Target/ThreadPlanStepRange.cpp
Modified: lldb/trunk/include/lldb/Symbol/LineEntry.h
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/LineEntry.h?rev=269250&r1=269249&r2=269250&view=diff
==
--- lldb/trunk/include/lldb/Symbol/LineEntry.h (original)
+++ lldb/trunk/include/lldb/Symbol/LineEntry.h Wed May 11 17:46:53 2016
@@ -168,10 +168,21 @@ struct LineEntry
GetSameLineContiguousAddressRange () const;
//--
+/// Apply file mappings from target.source-map to the LineEntry's file.
+///
+/// @param[in] target_sp
+/// Shared pointer to the target this LineEntry belongs to.
+//--
+
+void
+ApplyFileMappings(lldb::TargetSP target_sp);
+
+//--
// Member variables.
//--
AddressRangerange; ///< The section offset
address range for this line entry.
-FileSpecfile;
+FileSpecfile; ///< The source file, possibly
mapped by the target.source-map setting
+FileSpecoriginal_file; ///< The original source file,
from debug info.
uint32_tline; ///< The source line number,
or zero if there is no line number information.
uint16_tcolumn; ///< The column number of the
source line, or zero if there is no column information.
uint16_tis_start_of_statement:1,///< Indicates this entry is
the beginning of a statement.
Modified: lldb/trunk/source/Breakpoint/BreakpointResolver.cpp
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Breakpoint/BreakpointResolver.cpp?rev=269250&r1=269249&r2=269250&view=diff
==
--- lldb/trunk/source/Breakpoint/BreakpointResolver.cpp (original)
+++ lldb/trunk/source/Breakpoint/BreakpointResolver.cpp Wed May 11 17:46:53 2016
@@ -75,6 +75,7 @@ BreakpointResolver::SetSCMatchesByLine (
bool first_entry = true;
FileSpec match_file_spec;
+FileSpec match_original_file_spec;
uint32_t closest_line_number = UINT32_MAX;
// Pull out the first entry, and all the others that match its file
spec, and stuff them in the tmp list.
@@ -86,11 +87,13 @@ BreakpointResolver::SetSCMatchesByLine (
if (first_entry)
{
match_file_spec = sc.line_entry.file;
+match_original_file_spec = sc.line_entry.original_file;
matches = true;
first_entry = false;
}
else
-matches = (sc.line_entry.file == match_file_spec);
+matches = ((sc.line_entry.file == match_file_spec) ||
+ (sc.line_entry.original_file ==
match_original_file_spec));
if (matches)
{
Modified: lldb/trunk/source/Commands/CommandObjectSource.cpp
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectSource.cpp?rev=269250&r1=269249&r2=269250&view=diff
==
--- lldb/trunk/source/Commands/CommandObjectSource.cpp (original)
+++ lldb/trunk/source/Commands/CommandObjectSource.cpp Wed May 11 17:46:53 2016
@@ -897,7 +897,7 @@ protected:
operator == (c
[Lldb-commits] [PATCH] D20188: Turn on LLDB_EDITLINE_USE_WCHAR on NetBSD
krytarowski created this revision. krytarowski added reviewers: emaste, clayborg. krytarowski added subscribers: lldb-commits, joerg. krytarowski set the repository for this revision to rL LLVM. The editline(3) library in NetBSD is by default internally wide. Repository: rL LLVM http://reviews.llvm.org/D20188 Files: include/lldb/Host/Editline.h Index: include/lldb/Host/Editline.h === --- include/lldb/Host/Editline.h +++ include/lldb/Host/Editline.h @@ -27,11 +27,12 @@ #include #include +#include // components needed to handle wide characters ( , codecvt_utf8, libedit built with '--enable-widec' ) -// are not consistenly available on non-OSX platforms. The wchar_t versions of libedit functions will only be +// are available on OSX and NetBSD. The wchar_t versions of libedit functions will only be // used in cases where this is true. This is a compile time dependecy, for now selected per target Platform -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__NetBSD__) #define LLDB_EDITLINE_USE_WCHAR 1 #include #else Index: include/lldb/Host/Editline.h === --- include/lldb/Host/Editline.h +++ include/lldb/Host/Editline.h @@ -27,11 +27,12 @@ #include #include +#include // components needed to handle wide characters ( , codecvt_utf8, libedit built with '--enable-widec' ) -// are not consistenly available on non-OSX platforms. The wchar_t versions of libedit functions will only be +// are available on OSX and NetBSD. The wchar_t versions of libedit functions will only be // used in cases where this is true. This is a compile time dependecy, for now selected per target Platform -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__NetBSD__) #define LLDB_EDITLINE_USE_WCHAR 1 #include #else ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D20193: test infra: catch bad decorators and import errors
tfiala created this revision.
tfiala added reviewers: labath, zturner.
tfiala added subscribers: lldb-commits, zturner.
This change enhances the LLDB test infrastructure to convert
load-time exceptions in a given Python test module into errors.
Before this change, specifying a non-existent test decorator,
or otherwise having some load-time error in a python test module,
would not get flagged as an error.
With this change, typos and other load-time errors in a python
test file get converted to errors and reported by the
test runner.
This change also includes test infrastructure tests that include
covering the new work here. I'm going to wait until we have
these infrastructure tests runnable on the main platforms before
I try to work that into all the normal testing workflows.
The test infrastructure tests can be run by using the standard python module
testing practice of doing the following:
cd packages/Python/lldbsuite/test_event
python -m unittest discover -s test/src -p 'Test*.py'
Those tests run the dotest inferior with a known broken test and verify that
the errors are caught. These tests did not pass until I modified dotest.py to
capture them properly.
@zturner, if you have the chance, if you could try those steps above (the
python -m unittest ... line) on Windows, that would be great if we can address
any python2/3/Windows bits there. I don't think there's anything fancy, but I
didn't want to hook it into test flow until I know it works there.
I'll be slowly adding more tests that cover some of the other breakage I've
occasionally seen that didn't get collected as part of the summarization. This
is the biggest one I'm aware of.
http://reviews.llvm.org/D20193
Files:
packages/Python/lldbsuite/test/dotest.py
packages/Python/lldbsuite/test/issue_verification/TestInvalidDecorator.py.park
packages/Python/lldbsuite/test_event/event_builder.py
packages/Python/lldbsuite/test_event/formatter/pickled.py
packages/Python/lldbsuite/test_event/test/resources/invalid_decorator/TestInvalidDecorator.py
packages/Python/lldbsuite/test_event/test/src/TestCatchInvalidDecorator.py
packages/Python/lldbsuite/test_event/test/src/event_collector.py
Index: packages/Python/lldbsuite/test_event/test/src/event_collector.py
===
--- /dev/null
+++ packages/Python/lldbsuite/test_event/test/src/event_collector.py
@@ -0,0 +1,83 @@
+from __future__ import absolute_import
+from __future__ import print_function
+
+import os
+import subprocess
+import sys
+
+from six.moves import cPickle
+
+
+def path_to_dotest_py():
+return os.path.join(
+os.path.dirname(__file__),
+os.path.pardir,
+os.path.pardir,
+os.path.pardir,
+os.path.pardir,
+os.path.pardir,
+os.path.pardir,
+"test",
+"dotest.py")
+
+
+def pickled_events_filename():
+return "/tmp/lldb_test_event_pickled_event_output.dat"
+
+
+def _collect_events_with_command(command):
+# Delete the events file if it exists
+if os.path.exists(pickled_events_filename()):
+os.remove(pickled_events_filename())
+
+if os.path.exists(pickled_events_filename()):
+raise Exception("pickled events filename should not exist!")
+
+# Run the single test with dotest.py, outputting
+# the raw pickled events to a temp file.
+with open(os.devnull, 'w') as dev_null_file:
+status = subprocess.call(
+command,
+stdout=dev_null_file,
+stderr=dev_null_file)
+
+# Unpickle the events
+events = []
+if os.path.exists(pickled_events_filename()):
+with open(pickled_events_filename(), "rb") as events_file:
+while True:
+try:
+# print("reading event")
+event = cPickle.load(events_file)
+# print("read event: {}".format(event))
+if event:
+events.append(event)
+except EOFError:
+# This is okay.
+break
+return events
+
+def collect_events_whole_file(test_filename):
+command = [
+sys.executable,
+path_to_dotest_py(),
+"--inferior",
+"--results-formatter=lldbsuite.test_event.formatter.pickled.RawPickledFormatter",
+"--results-file={}".format(pickled_events_filename()),
+"-p", os.path.basename(test_filename),
+os.path.dirname(test_filename)
+]
+return _collect_events_with_command(command)
+
+
+def collect_events_for_directory_with_filter(test_filename, filter):
+command = [
+sys.executable,
+path_to_dotest_py(),
+"--inferior",
+"--results-formatter=lldbsuite.test_event.formatter.pickled.RawPickledFormatter",
+"--results-file={}".format(pickled_events_filename()),
+"-f", filter,
+os.path.dirname(test_filename)
+]
+return _colle
Re: [Lldb-commits] [PATCH] D20188: Turn on LLDB_EDITLINE_USE_WCHAR on NetBSD
emaste added inline comments. Comment at: include/lldb/Host/Editline.h:33 @@ -31,3 +32,3 @@ // components needed to handle wide characters ( , codecvt_utf8, libedit built with '--enable-widec' ) -// are not consistenly available on non-OSX platforms. The wchar_t versions of libedit functions will only be +// are available on OSX and NetBSD. The wchar_t versions of libedit functions will only be // used in cases where this is true. This is a compile time dependecy, for now selected per target Platform Perhaps just `some platforms`? It doesn't make sense to repeat the list of `#if defined` conditions in the comment. Repository: rL LLVM http://reviews.llvm.org/D20188 ___ lldb-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
