[Lldb-commits] [lldb] r346109 - [LLDB] Fix FreeBSD/Darwin build

2018-11-04 Thread David Carlier via lldb-commits
Author: devnexen
Date: Sun Nov  4 15:19:25 2018
New Revision: 346109

URL: http://llvm.org/viewvc/llvm-project?rev=346109&view=rev
Log:
[LLDB] Fix FreeBSD/Darwin build

Reviewers: JDevlieghere, tatyana-krasnukha

Reviwed By: tatyana-krasnukha

Differential Revision: https://reviews.llvm.org/D54084

Modified:
lldb/trunk/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp

Modified: lldb/trunk/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp?rev=346109&r1=346108&r2=346109&view=diff
==
--- lldb/trunk/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp (original)
+++ lldb/trunk/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp Sun Nov  4 
15:19:25 2018
@@ -63,12 +63,13 @@ Status NativeProcessProtocol::Launch(
 
   // Verify the working directory is valid if one was specified.
   FileSpec working_dir(launch_info.GetWorkingDirectory());
-  if (working_dir &&
-  (!working_dir.ResolvePath() ||
-   !llvm::sys::fs::is_directory(working_dir.GetPath())) {
-error.SetErrorStringWithFormat("No such file or directory: %s",
+  if (working_dir) {
+FileInstance::Instance().Resolve(working_dir);
+if (!llvm::sys::fs::is_directory(working_dir.GetPath())) {
+  error.SetErrorStringWithFormat("No such file or directory: %s",
working_dir.GetCString());
-return error;
+  return error;
+}
   }
 
   // Launch the inferior.

Modified: lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp?rev=346109&r1=346108&r2=346109&view=diff
==
--- lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp (original)
+++ lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp Sun Nov  4 
15:19:25 2018
@@ -375,11 +375,13 @@ Status ProcessFreeBSD::DoLaunch(Module *
 
   FileSpec working_dir = launch_info.GetWorkingDirectory();
   namespace fs = llvm::sys::fs;
-  if (working_dir && (!working_dir.ResolvePath() ||
-  !fs::is_directory(working_dir.GetPath( {
-error.SetErrorStringWithFormat("No such file or directory: %s",
+  if (working_dir) {
+FileSystem::Instance().Resolve(working_dir);
+if (!fs::is_directory(working_dir.GetPath())) {
+  error.SetErrorStringWithFormat("No such file or directory: %s",
working_dir.GetCString());
-return error;
+  return error;
+}
   }
 
   SetPrivateState(eStateLaunching);


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


[Lldb-commits] [lldb] r333888 - [LLDB] Unit tests basic support for OpenBSD

2018-06-04 Thread David Carlier via lldb-commits
Author: devnexen
Date: Mon Jun  4 04:57:12 2018
New Revision: 333888

URL: http://llvm.org/viewvc/llvm-project?rev=333888&view=rev
Log:
[LLDB] Unit tests basic support for OpenBSD

Add OpenBSD python module in order to support unit tests.

Reviewers: labath, zturner

Reviewed By: labath

Differential Revision: https://reviews.llvm.org/D47692

Modified:
lldb/trunk/lit/lit.cfg
lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py

Modified: lldb/trunk/lit/lit.cfg
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/lit.cfg?rev=333888&r1=333887&r2=333888&view=diff
==
--- lldb/trunk/lit/lit.cfg (original)
+++ lldb/trunk/lit/lit.cfg Mon Jun  4 04:57:12 2018
@@ -78,6 +78,10 @@ if platform.system() in ['Darwin']:
 config.cc += " -isysroot %s" % sdk_path
 config.cxx += " -isysroot %s" % sdk_path
 
+if platform.system() in ['OpenBSD']:
+config.cc += " -pthread"
+config.cxx += " -pthread"
+
 config.substitutions.append(('%cc', config.cc))
 config.substitutions.append(('%cxx', config.cxx))
 

Modified: lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py?rev=333888&r1=333887&r2=333888&view=diff
==
--- lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py Mon Jun  4 04:57:12 
2018
@@ -490,6 +490,8 @@ def getsource_if_available(obj):
 def builder_module():
 if sys.platform.startswith("freebsd"):
 return __import__("builder_freebsd")
+if sys.platform.startswith("openbsd"):
+return __import__("builder_openbsd")
 if sys.platform.startswith("netbsd"):
 return __import__("builder_netbsd")
 if sys.platform.startswith("linux"):
@@ -1395,7 +1397,7 @@ class Base(unittest2.TestCase):
 
 def getstdlibFlag(self):
 """ Returns the proper -stdlib flag, or empty if not required."""
-if self.platformIsDarwin() or self.getPlatform() == "freebsd":
+if self.platformIsDarwin() or self.getPlatform() == "freebsd" or 
self.getPlatform() == "openbsd":
 stdlibflag = "-stdlib=libc++"
 else:  # this includes NetBSD
 stdlibflag = ""
@@ -1424,7 +1426,7 @@ class Base(unittest2.TestCase):
  'FRAMEWORK_INCLUDES': "-F%s" % self.framework_dir,
  'LD_EXTRAS': "%s -Wl,-rpath,%s" % (self.dsym, 
self.framework_dir),
  }
-elif sys.platform.rstrip('0123456789') in ('freebsd', 'linux', 
'netbsd', 'darwin') or os.environ.get('LLDB_BUILD_TYPE') == 'Makefile':
+elif sys.platform.startswith('win'):
 d = {
 'CXX_SOURCES': sources,
 'EXE': exe_name,
@@ -1433,8 +1435,8 @@ class Base(unittest2.TestCase):
  os.path.join(
  os.environ["LLDB_SRC"],
  "include")),
-'LD_EXTRAS': "-L%s/../lib -llldb -Wl,-rpath,%s/../lib" % 
(lib_dir, lib_dir)}
-elif sys.platform.startswith('win'):
+'LD_EXTRAS': "-L%s -lliblldb" % os.environ["LLDB_IMPLIB_DIR"]}
+else:
 d = {
 'CXX_SOURCES': sources,
 'EXE': exe_name,
@@ -1443,7 +1445,7 @@ class Base(unittest2.TestCase):
  os.path.join(
  os.environ["LLDB_SRC"],
  "include")),
-'LD_EXTRAS': "-L%s -lliblldb" % os.environ["LLDB_IMPLIB_DIR"]}
+'LD_EXTRAS': "-L%s/../lib -llldb -Wl,-rpath,%s/../lib" % 
(lib_dir, lib_dir)}
 if self.TraceOn():
 print(
 "Building LLDB Driver (%s) from sources %s" %
@@ -1464,15 +1466,6 @@ class Base(unittest2.TestCase):
  'FRAMEWORK_INCLUDES': "-F%s" % self.framework_dir,
  'LD_EXTRAS': "%s -Wl,-rpath,%s -dynamiclib" % (self.dsym, 
self.framework_dir),
  }
-elif sys.platform.rstrip('0123456789') in ('freebsd', 'linux', 
'netbsd', 'darwin') or os.environ.get('LLDB_BUILD_TYPE') == 'Makefile':
-d = {
-'DYLIB_CXX_SOURCES': sources,
-'DYLIB_NAME': lib_name,
-'CFLAGS_EXTRAS': "%s -I%s -fPIC" % (stdflag,
-os.path.join(
-os.environ["LLDB_SRC"],
-"include")),
-'LD_EXTRAS': "-shared -L%s/../lib -llldb -Wl,-rpath,%s/../lib" 
% (lib_dir, lib_dir)}
 elif self.getPlatform() == 'windows':
 d = {
 'DY

[Lldb-commits] [lldb] r333889 - [LLDB] Unit tests basic support for OpenBSD

2018-06-04 Thread David Carlier via lldb-commits
Author: devnexen
Date: Mon Jun  4 04:59:18 2018
New Revision: 333889

URL: http://llvm.org/viewvc/llvm-project?rev=333889&view=rev
Log:
[LLDB] Unit tests basic support for OpenBSD

OpenBSD python module.

Added:
lldb/trunk/packages/Python/lldbsuite/test/plugins/builder_openbsd.py

Added: lldb/trunk/packages/Python/lldbsuite/test/plugins/builder_openbsd.py
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/plugins/builder_openbsd.py?rev=333889&view=auto
==
--- lldb/trunk/packages/Python/lldbsuite/test/plugins/builder_openbsd.py (added)
+++ lldb/trunk/packages/Python/lldbsuite/test/plugins/builder_openbsd.py Mon 
Jun  4 04:59:18 2018
@@ -0,0 +1,10 @@
+from builder_base import *
+
+
+def buildDsym(
+sender=None,
+architecture=None,
+compiler=None,
+dictionary=None,
+testdir=None):
+return False


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


[Lldb-commits] [lldb] r334177 - [LLDB] Unit tests / typo fix

2018-06-07 Thread David Carlier via lldb-commits
Author: devnexen
Date: Thu Jun  7 01:58:34 2018
New Revision: 334177

URL: http://llvm.org/viewvc/llvm-project?rev=334177&view=rev
Log:
[LLDB] Unit tests / typo fix

removing unnecessary comma.

Modified:
lldb/trunk/unittests/Symbol/TestType.cpp

Modified: lldb/trunk/unittests/Symbol/TestType.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Symbol/TestType.cpp?rev=334177&r1=334176&r2=334177&view=diff
==
--- lldb/trunk/unittests/Symbol/TestType.cpp (original)
+++ lldb/trunk/unittests/Symbol/TestType.cpp Thu Jun  7 01:58:34 2018
@@ -30,7 +30,7 @@ void TestGetTypeScopeAndBasenameHelper(c
 EXPECT_EQ(name, expected_name);
   }
 }
-};
+}
 
 TEST(Type, GetTypeScopeAndBasename) {
   TestGetTypeScopeAndBasenameHelper("int", false, "", "");


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


[Lldb-commits] [lldb] r335489 - [LLDB] Select helper sign comparison fix

2018-06-25 Thread David Carlier via lldb-commits
Author: devnexen
Date: Mon Jun 25 09:10:20 2018
New Revision: 335489

URL: http://llvm.org/viewvc/llvm-project?rev=335489&view=rev
Log:
[LLDB] Select helper sign comparison fix

The constant could be unsigned thus explicit cast to silent compilation warnings

Reviewers: aprantl

Reviewed By: aprantl

Differential Revision: https://reviews.llvm.org/D48540

Modified:
lldb/trunk/source/Utility/SelectHelper.cpp

Modified: lldb/trunk/source/Utility/SelectHelper.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/SelectHelper.cpp?rev=335489&r1=335488&r2=335489&view=diff
==
--- lldb/trunk/source/Utility/SelectHelper.cpp (original)
+++ lldb/trunk/source/Utility/SelectHelper.cpp Mon Jun 25 09:10:20 2018
@@ -109,8 +109,8 @@ lldb_private::Status SelectHelper::Selec
 pair.second.PrepareForSelect();
 const lldb::socket_t fd = pair.first;
 #if !defined(__APPLE__) && !defined(_MSC_VER)
-lldbassert(fd < FD_SETSIZE);
-if (fd >= FD_SETSIZE) {
+lldbassert(fd < static_cast(FD_SETSIZE));
+if (fd >= static_cast(FD_SETSIZE)) {
   error.SetErrorStringWithFormat("%i is too large for select()", fd);
   return error;
 }


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


[Lldb-commits] [lldb] r352744 - [LLDB] FreeBSD suppress compilation warning

2019-01-31 Thread David Carlier via lldb-commits
Author: devnexen
Date: Thu Jan 31 03:54:58 2019
New Revision: 352744

URL: http://llvm.org/viewvc/llvm-project?rev=352744&view=rev
Log:
[LLDB] FreeBSD suppress compilation warning

Reviewers: labath, teemperor

Reviewed By: teemperor

Differential Revision: https://reviews.llvm.org/D57506

Msource/Plugins/Process/FreeBSD/ProcessMonitor.cpp

Modified:
lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp

Modified: lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp?rev=352744&r1=352743&r2=352744&view=diff
==
--- lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp (original)
+++ lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp Thu Jan 31 
03:54:58 2019
@@ -167,7 +167,7 @@ static size_t DoWriteMemory(lldb::pid_t
 
   pi_desc.piod_op = PIOD_WRITE_D;
   pi_desc.piod_offs = (void *)vm_addr;
-  pi_desc.piod_addr = (void *)buf;
+  pi_desc.piod_addr = const_cast(buf);
   pi_desc.piod_len = size;
 
   if (PTRACE(PT_IO, pid, (caddr_t)&pi_desc, 0) < 0) {


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


[Lldb-commits] [lldb] lldb unused var fix for NetBSD < 10. (PR #93377)

2024-05-25 Thread David CARLIER via lldb-commits

https://github.com/devnexen created 
https://github.com/llvm/llvm-project/pull/93377

None

>From 9dcd8be919582006b5ade0b6c1f3074678f50bed Mon Sep 17 00:00:00 2001
From: David Carlier 
Date: Sat, 25 May 2024 10:59:54 +
Subject: [PATCH] lldb unused var fix for NetBSD < 10.

---
 lldb/source/Plugins/Process/NetBSD/NativeThreadNetBSD.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lldb/source/Plugins/Process/NetBSD/NativeThreadNetBSD.cpp 
b/lldb/source/Plugins/Process/NetBSD/NativeThreadNetBSD.cpp
index f561c21b9d91c..77b4301ea22e5 100644
--- a/lldb/source/Plugins/Process/NetBSD/NativeThreadNetBSD.cpp
+++ b/lldb/source/Plugins/Process/NetBSD/NativeThreadNetBSD.cpp
@@ -180,8 +180,6 @@ void NativeThreadNetBSD::SetStepping() {
 }
 
 std::string NativeThreadNetBSD::GetName() {
-  Log *log = GetLog(POSIXLog::Thread);
-
 #ifdef PT_LWPSTATUS
   struct ptrace_lwpstatus info = {};
   info.pl_lwpid = m_tid;
@@ -193,6 +191,8 @@ std::string NativeThreadNetBSD::GetName() {
   return info.pl_name;
 #else
   std::vector infos;
+  Log *log = GetLog(POSIXLog::Thread);
+
   int mib[5] = {CTL_KERN, KERN_LWP, static_cast(m_process.GetID()),
 sizeof(struct kinfo_lwp), 0};
   size_t size;

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


[Lldb-commits] [lldb] lldb unused var fix for NetBSD < 10. (PR #93377)

2024-05-25 Thread David CARLIER via lldb-commits

https://github.com/devnexen closed 
https://github.com/llvm/llvm-project/pull/93377
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [lldb] [lldb] checks beforehand if lldb can trace/attach a process on FreeBSD. (PR #79662)

2024-01-26 Thread David CARLIER via lldb-commits

https://github.com/devnexen created 
https://github.com/llvm/llvm-project/pull/79662

before having the generic EINVAL message, we check if the 
`security.bsd.unprivileged_proc_debug` allows process debugging.

close #79634

>From 492521e66288a497bf5b4a4a8ce554dffeb35727 Mon Sep 17 00:00:00 2001
From: David Carlier 
Date: Fri, 26 Jan 2024 22:47:15 +
Subject: [PATCH] [lldb] checks beforehand if lldb can trace/attach a process
 on FreeBSD.

before having the generic EINVAL message, we check if the
`security.bsd.unprivileged_proc_debug` allows process debugging.

close #79634
---
 .../Process/FreeBSD/NativeProcessFreeBSD.cpp  | 29 ++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp 
b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
index 19e0986ace31ff..7540ba29651782 100644
--- a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
@@ -48,14 +48,37 @@ static Status EnsureFDFlags(int fd, int flags) {
   return error;
 }
 
+static Status CanTrace() {
+  Status status;
+  int proc_debug, ret;
+  size_t len = sizeof(proc_debug);
+  ret = ::sysctlbyname("security.bsd.unprivileged_proc_debug", &proc_debug, 
&len, nullptr, 0);
+  if (ret != 0) {
+return Status("sysctlbyname() security.bsd.unprivileged_proc_debug 
failed");
+  }
+
+  if (proc_debug < 1) {
+return Status("process debug disabled by 
security.bsd.unprivileged_proc_debug oid");
+  }
+
+  return status;
+}
+
 // Public Static Methods
 
 llvm::Expected>
 NativeProcessFreeBSD::Manager::Launch(ProcessLaunchInfo &launch_info,
   NativeDelegate &native_delegate) {
   Log *log = GetLog(POSIXLog::Process);
-
   Status status;
+
+  status = CanTrace();
+
+  if (status.Fail()) {
+LLDB_LOG(log, "failed to launch process: {0}", status);
+return status.ToError();
+  }
+
   ::pid_t pid = ProcessLauncherPosixFork()
 .LaunchProcess(launch_info, status)
 .GetProcessId();
@@ -388,6 +411,10 @@ Status NativeProcessFreeBSD::PtraceWrapper(int req, 
lldb::pid_t pid, void *addr,
   Status error;
   int ret;
 
+  error = CanTrace();
+  if (error.Fail())
+return error;
+
   errno = 0;
   ret =
   ptrace(req, static_cast<::pid_t>(pid), static_cast(addr), data);

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


[Lldb-commits] [lldb] [lldb] checks beforehand if lldb can trace/attach a process on FreeBSD. (PR #79662)

2024-01-26 Thread David CARLIER via lldb-commits

https://github.com/devnexen updated 
https://github.com/llvm/llvm-project/pull/79662

>From 52618e6e6e028ea4a65728eda0c877dce176ccfa Mon Sep 17 00:00:00 2001
From: David Carlier 
Date: Fri, 26 Jan 2024 22:47:15 +
Subject: [PATCH] [lldb] checks beforehand if lldb can trace/attach a process
 on FreeBSD.

before having the generic EINVAL message, we check if the
`security.bsd.unprivileged_proc_debug` allows process debugging.

close #79634
---
 .../Process/FreeBSD/NativeProcessFreeBSD.cpp  | 29 ++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp 
b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
index 19e0986ace31ff6..b676d536ca89495 100644
--- a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
@@ -48,14 +48,37 @@ static Status EnsureFDFlags(int fd, int flags) {
   return error;
 }
 
+static Status CanTrace() {
+  Status status;
+  int proc_debug, ret;
+  size_t len = sizeof(proc_debug);
+  ret = ::sysctlbyname("security.bsd.unprivileged_proc_debug", &proc_debug,
+   &len, nullptr, 0);
+  if (ret != 0)
+return Status("sysctlbyname() security.bsd.unprivileged_proc_debug 
failed");
+
+  if (proc_debug < 1)
+return Status(
+"process debug disabled by security.bsd.unprivileged_proc_debug oid");
+
+  return status;
+}
+
 // Public Static Methods
 
 llvm::Expected>
 NativeProcessFreeBSD::Manager::Launch(ProcessLaunchInfo &launch_info,
   NativeDelegate &native_delegate) {
   Log *log = GetLog(POSIXLog::Process);
-
   Status status;
+
+  status = CanTrace();
+
+  if (status.Fail()) {
+LLDB_LOG(log, "failed to launch process: {0}", status);
+return status.ToError();
+  }
+
   ::pid_t pid = ProcessLauncherPosixFork()
 .LaunchProcess(launch_info, status)
 .GetProcessId();
@@ -388,6 +411,10 @@ Status NativeProcessFreeBSD::PtraceWrapper(int req, 
lldb::pid_t pid, void *addr,
   Status error;
   int ret;
 
+  error = CanTrace();
+  if (error.Fail())
+return error;
+
   errno = 0;
   ret =
   ptrace(req, static_cast<::pid_t>(pid), static_cast(addr), data);

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


[Lldb-commits] [lldb] [lldb] checks beforehand if lldb can trace/attach a process on FreeBSD. (PR #79662)

2024-01-26 Thread David CARLIER via lldb-commits


@@ -48,14 +48,37 @@ static Status EnsureFDFlags(int fd, int flags) {
   return error;
 }
 
+static Status CanTrace() {
+  Status status;
+  int proc_debug, ret;
+  size_t len = sizeof(proc_debug);
+  ret = ::sysctlbyname("security.bsd.unprivileged_proc_debug", &proc_debug,
+   &len, nullptr, 0);
+  if (ret != 0)
+return Status("sysctlbyname() security.bsd.unprivileged_proc_debug 
failed");

devnexen wrote:

since a long time :) e.g. even 9.0, EOL since more than a decade, had it.

https://github.com/llvm/llvm-project/pull/79662
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [lldb] [lldb] checks beforehand if lldb can trace/attach a process on FreeBSD. (PR #79662)

2024-01-26 Thread David CARLIER via lldb-commits


@@ -48,14 +48,37 @@ static Status EnsureFDFlags(int fd, int flags) {
   return error;
 }
 
+static Status CanTrace() {
+  Status status;

devnexen wrote:

true

https://github.com/llvm/llvm-project/pull/79662
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [lldb] [lldb] checks beforehand if lldb can trace/attach a process on FreeBSD. (PR #79662)

2024-01-26 Thread David CARLIER via lldb-commits

https://github.com/devnexen updated 
https://github.com/llvm/llvm-project/pull/79662

>From 7fccec625677e8cabe8c69ac2651c37716dc30bf Mon Sep 17 00:00:00 2001
From: David Carlier 
Date: Fri, 26 Jan 2024 22:47:15 +
Subject: [PATCH] [lldb] checks beforehand if lldb can trace/attach a process
 on FreeBSD.

before having the generic EINVAL message, we check if the
`security.bsd.unprivileged_proc_debug` allows process debugging.

close #79634
---
 .../Process/FreeBSD/NativeProcessFreeBSD.cpp  | 28 ++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp 
b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
index 19e0986ace31ff6..9692670e851c77a 100644
--- a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
@@ -48,14 +48,36 @@ static Status EnsureFDFlags(int fd, int flags) {
   return error;
 }
 
+static Status CanTrace() {
+  int proc_debug, ret;
+  size_t len = sizeof(proc_debug);
+  ret = ::sysctlbyname("security.bsd.unprivileged_proc_debug", &proc_debug,
+   &len, nullptr, 0);
+  if (ret != 0)
+return Status("sysctlbyname() security.bsd.unprivileged_proc_debug 
failed");
+
+  if (proc_debug < 1)
+return Status(
+"process debug disabled by security.bsd.unprivileged_proc_debug oid");
+
+  return {};
+}
+
 // Public Static Methods
 
 llvm::Expected>
 NativeProcessFreeBSD::Manager::Launch(ProcessLaunchInfo &launch_info,
   NativeDelegate &native_delegate) {
   Log *log = GetLog(POSIXLog::Process);
-
   Status status;
+
+  status = CanTrace();
+
+  if (status.Fail()) {
+LLDB_LOG(log, "failed to launch process: {0}", status);
+return status.ToError();
+  }
+
   ::pid_t pid = ProcessLauncherPosixFork()
 .LaunchProcess(launch_info, status)
 .GetProcessId();
@@ -388,6 +410,10 @@ Status NativeProcessFreeBSD::PtraceWrapper(int req, 
lldb::pid_t pid, void *addr,
   Status error;
   int ret;
 
+  error = CanTrace();
+  if (error.Fail())
+return error;
+
   errno = 0;
   ret =
   ptrace(req, static_cast<::pid_t>(pid), static_cast(addr), data);

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


[Lldb-commits] [lldb] [lldb] checks beforehand if lldb can trace/attach a process on FreeBSD. (PR #79662)

2024-01-26 Thread David CARLIER via lldb-commits

https://github.com/devnexen updated 
https://github.com/llvm/llvm-project/pull/79662

>From 746a6959e270b086184ce095b11eb4df691dc4c9 Mon Sep 17 00:00:00 2001
From: David Carlier 
Date: Fri, 26 Jan 2024 22:47:15 +
Subject: [PATCH] [lldb] checks beforehand if lldb can trace/attach a process
 on FreeBSD.

before having the generic EINVAL message, we check if the
`security.bsd.unprivileged_proc_debug` allows process debugging.

close #79634
---
 .../Process/FreeBSD/NativeProcessFreeBSD.cpp  | 27 ---
 1 file changed, 24 insertions(+), 3 deletions(-)

diff --git a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp 
b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
index 19e0986ace31ff..24726832fa4598 100644
--- a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
@@ -48,20 +48,38 @@ static Status EnsureFDFlags(int fd, int flags) {
   return error;
 }
 
+static Status CanTrace() {
+  int proc_debug, ret;
+  size_t len = sizeof(proc_debug);
+  ret = ::sysctlbyname("security.bsd.unprivileged_proc_debug", &proc_debug,
+   &len, nullptr, 0);
+  if (ret != 0)
+return Status("sysctlbyname() security.bsd.unprivileged_proc_debug 
failed");
+
+  if (proc_debug < 1)
+return Status(
+"process debug disabled by security.bsd.unprivileged_proc_debug oid");
+
+  return {};
+}
+
 // Public Static Methods
 
 llvm::Expected>
 NativeProcessFreeBSD::Manager::Launch(ProcessLaunchInfo &launch_info,
   NativeDelegate &native_delegate) {
   Log *log = GetLog(POSIXLog::Process);
-
   Status status;
+
   ::pid_t pid = ProcessLauncherPosixFork()
 .LaunchProcess(launch_info, status)
 .GetProcessId();
   LLDB_LOG(log, "pid = {0:x}", pid);
   if (status.Fail()) {
+auto error = CanTrace();
 LLDB_LOG(log, "failed to launch process: {0}", status);
+if (status.Fail())
+  return error.ToError();
 return status.ToError();
   }
 
@@ -392,8 +410,11 @@ Status NativeProcessFreeBSD::PtraceWrapper(int req, 
lldb::pid_t pid, void *addr,
   ret =
   ptrace(req, static_cast<::pid_t>(pid), static_cast(addr), data);
 
-  if (ret == -1)
-error.SetErrorToErrno();
+  if (ret == -1) {
+error = CanTrace();
+if (error.Success())
+  error.SetErrorToErrno();
+  }
 
   if (result)
 *result = ret;

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


[Lldb-commits] [lldb] [lldb] checks beforehand if lldb can trace/attach a process on FreeBSD. (PR #79662)

2024-01-26 Thread David CARLIER via lldb-commits

https://github.com/devnexen updated 
https://github.com/llvm/llvm-project/pull/79662

>From 7cfed8b3440d9257598fe94e02adc4d926692850 Mon Sep 17 00:00:00 2001
From: David Carlier 
Date: Fri, 26 Jan 2024 22:47:15 +
Subject: [PATCH] [lldb] checks beforehand if lldb can trace/attach a process
 on FreeBSD.

before having the generic EINVAL message, we check if the
`security.bsd.unprivileged_proc_debug` allows process debugging.

close #79634
---
 .../Process/FreeBSD/NativeProcessFreeBSD.cpp  | 39 ---
 1 file changed, 34 insertions(+), 5 deletions(-)

diff --git a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp 
b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
index 19e0986ace31ff..9c620e4807e344 100644
--- a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
@@ -48,20 +48,38 @@ static Status EnsureFDFlags(int fd, int flags) {
   return error;
 }
 
+static Status CanTrace() {
+  int proc_debug, ret;
+  size_t len = sizeof(proc_debug);
+  ret = ::sysctlbyname("security.bsd.unprivileged_proc_debug", &proc_debug,
+   &len, nullptr, 0);
+  if (ret != 0)
+return Status("sysctlbyname() security.bsd.unprivileged_proc_debug 
failed");
+
+  if (proc_debug < 1)
+return Status(
+"process debug disabled by security.bsd.unprivileged_proc_debug oid");
+
+  return {};
+}
+
 // Public Static Methods
 
 llvm::Expected>
 NativeProcessFreeBSD::Manager::Launch(ProcessLaunchInfo &launch_info,
   NativeDelegate &native_delegate) {
   Log *log = GetLog(POSIXLog::Process);
-
   Status status;
+
   ::pid_t pid = ProcessLauncherPosixFork()
 .LaunchProcess(launch_info, status)
 .GetProcessId();
   LLDB_LOG(log, "pid = {0:x}", pid);
   if (status.Fail()) {
+auto error = CanTrace();
 LLDB_LOG(log, "failed to launch process: {0}", status);
+if (status.Fail())
+  return error.ToError();
 return status.ToError();
   }
 
@@ -392,8 +410,11 @@ Status NativeProcessFreeBSD::PtraceWrapper(int req, 
lldb::pid_t pid, void *addr,
   ret =
   ptrace(req, static_cast<::pid_t>(pid), static_cast(addr), data);
 
-  if (ret == -1)
-error.SetErrorToErrno();
+  if (ret == -1) {
+error = CanTrace();
+if (error.Success())
+  error.SetErrorToErrno();
+  }
 
   if (result)
 *result = ret;
@@ -707,8 +728,12 @@ Status NativeProcessFreeBSD::SetBreakpoint(lldb::addr_t 
addr, uint32_t size,
 Status NativeProcessFreeBSD::GetLoadedModuleFileSpec(const char *module_path,
  FileSpec &file_spec) {
   Status error = PopulateMemoryRegionCache();
-  if (error.Fail())
+  if (error.Fail()) {
+auto status = CanTrace();
+if (status.Fail())
+  return status;
 return error;
+  }
 
   FileSpec module_file_spec(module_path);
   FileSystem::Instance().Resolve(module_file_spec);
@@ -729,8 +754,12 @@ NativeProcessFreeBSD::GetFileLoadAddress(const 
llvm::StringRef &file_name,
  lldb::addr_t &load_addr) {
   load_addr = LLDB_INVALID_ADDRESS;
   Status error = PopulateMemoryRegionCache();
-  if (error.Fail())
+  if (error.Fail()) {
+auto status = CanTrace();
+if (status.Fail())
+  return status;
 return error;
+  }
 
   FileSpec file(file_name);
   for (const auto &it : m_mem_region_cache) {

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


[Lldb-commits] [lldb] [lldb] checks beforehand if lldb can trace/attach a process on FreeBSD. (PR #79662)

2024-02-09 Thread David CARLIER via lldb-commits

devnexen wrote:

ping :)

https://github.com/llvm/llvm-project/pull/79662
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [lldb] [lldb] Fix FreeBSD build. (PR #81353)

2024-02-10 Thread David CARLIER via lldb-commits

https://github.com/devnexen created 
https://github.com/llvm/llvm-project/pull/81353

None

>From eaa5c11364bebb5e85a1dc976f2bfaceefaef7f8 Mon Sep 17 00:00:00 2001
From: David Carlier 
Date: Sat, 10 Feb 2024 10:02:07 +
Subject: [PATCH] [lldb] Fix FreeBSD build.

---
 .../Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp 
b/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp
index 997b5908511032..abfbdb1a970d4d 100644
--- a/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp
+++ b/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp
@@ -50,7 +50,7 @@ class ProcessFreeBSDKernelFVC : public ProcessFreeBSDKernel {
 class ProcessFreeBSDKernelKVM : public ProcessFreeBSDKernel {
 public:
   ProcessFreeBSDKernelKVM(lldb::TargetSP target_sp, lldb::ListenerSP listener,
-  kvm_t *fvc);
+  kvm_t *fvc, const FileSpec &core_file);
 
   ~ProcessFreeBSDKernelKVM();
 

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


[Lldb-commits] [lldb] [lldb] Fix FreeBSD build. (PR #81353)

2024-02-10 Thread David CARLIER via lldb-commits

https://github.com/devnexen closed 
https://github.com/llvm/llvm-project/pull/81353
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [lldb] [lldb] checks beforehand if lldb can trace/attach a process on FreeBSD. (PR #79662)

2024-02-11 Thread David CARLIER via lldb-commits

https://github.com/devnexen updated 
https://github.com/llvm/llvm-project/pull/79662

>From e2da8be542e7116369ab91cb0ce25163e18e76f3 Mon Sep 17 00:00:00 2001
From: David Carlier 
Date: Fri, 26 Jan 2024 22:47:15 +
Subject: [PATCH] [lldb] checks if lldb can trace/attach/set a breakpoint a
 process or load a file to debug on FreeBSD.

before having the generic EINVAL message, we check if the
`security.bsd.unprivileged_proc_debug` allows process debugging.

close #79634
---
 .../Process/FreeBSD/NativeProcessFreeBSD.cpp  | 39 ---
 1 file changed, 34 insertions(+), 5 deletions(-)

diff --git a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp 
b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
index 19e0986ace31ff..9c620e4807e344 100644
--- a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp
@@ -48,20 +48,38 @@ static Status EnsureFDFlags(int fd, int flags) {
   return error;
 }
 
+static Status CanTrace() {
+  int proc_debug, ret;
+  size_t len = sizeof(proc_debug);
+  ret = ::sysctlbyname("security.bsd.unprivileged_proc_debug", &proc_debug,
+   &len, nullptr, 0);
+  if (ret != 0)
+return Status("sysctlbyname() security.bsd.unprivileged_proc_debug 
failed");
+
+  if (proc_debug < 1)
+return Status(
+"process debug disabled by security.bsd.unprivileged_proc_debug oid");
+
+  return {};
+}
+
 // Public Static Methods
 
 llvm::Expected>
 NativeProcessFreeBSD::Manager::Launch(ProcessLaunchInfo &launch_info,
   NativeDelegate &native_delegate) {
   Log *log = GetLog(POSIXLog::Process);
-
   Status status;
+
   ::pid_t pid = ProcessLauncherPosixFork()
 .LaunchProcess(launch_info, status)
 .GetProcessId();
   LLDB_LOG(log, "pid = {0:x}", pid);
   if (status.Fail()) {
+auto error = CanTrace();
 LLDB_LOG(log, "failed to launch process: {0}", status);
+if (status.Fail())
+  return error.ToError();
 return status.ToError();
   }
 
@@ -392,8 +410,11 @@ Status NativeProcessFreeBSD::PtraceWrapper(int req, 
lldb::pid_t pid, void *addr,
   ret =
   ptrace(req, static_cast<::pid_t>(pid), static_cast(addr), data);
 
-  if (ret == -1)
-error.SetErrorToErrno();
+  if (ret == -1) {
+error = CanTrace();
+if (error.Success())
+  error.SetErrorToErrno();
+  }
 
   if (result)
 *result = ret;
@@ -707,8 +728,12 @@ Status NativeProcessFreeBSD::SetBreakpoint(lldb::addr_t 
addr, uint32_t size,
 Status NativeProcessFreeBSD::GetLoadedModuleFileSpec(const char *module_path,
  FileSpec &file_spec) {
   Status error = PopulateMemoryRegionCache();
-  if (error.Fail())
+  if (error.Fail()) {
+auto status = CanTrace();
+if (status.Fail())
+  return status;
 return error;
+  }
 
   FileSpec module_file_spec(module_path);
   FileSystem::Instance().Resolve(module_file_spec);
@@ -729,8 +754,12 @@ NativeProcessFreeBSD::GetFileLoadAddress(const 
llvm::StringRef &file_name,
  lldb::addr_t &load_addr) {
   load_addr = LLDB_INVALID_ADDRESS;
   Status error = PopulateMemoryRegionCache();
-  if (error.Fail())
+  if (error.Fail()) {
+auto status = CanTrace();
+if (status.Fail())
+  return status;
 return error;
+  }
 
   FileSpec file(file_name);
   for (const auto &it : m_mem_region_cache) {

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


[Lldb-commits] [lldb] [lldb] checks beforehand if lldb can trace/attach a process on FreeBSD. (PR #79662)

2024-02-11 Thread David CARLIER via lldb-commits

https://github.com/devnexen closed 
https://github.com/llvm/llvm-project/pull/79662
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [lldb] r371417 - LLDB - Simplify GetProgramFileSpec

2019-09-09 Thread David Carlier via lldb-commits
Author: devnexen
Date: Mon Sep  9 09:10:14 2019
New Revision: 371417

URL: http://llvm.org/viewvc/llvm-project?rev=371417&view=rev
Log:
LLDB - Simplify GetProgramFileSpec

Reviewers: zturner, emaste

Reviewed By: emaste

Differential Revision: https://reviews.llvm.org/D46518

Modified:
lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp

Modified: lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp?rev=371417&r1=371416&r2=371417&view=diff
==
--- lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp (original)
+++ lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp Mon Sep  9 09:10:14 2019
@@ -64,13 +64,10 @@ FileSpec HostInfoFreeBSD::GetProgramFile
   static FileSpec g_program_filespec;
   if (!g_program_filespec) {
 int exe_path_mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, getpid()};
-size_t exe_path_size;
-if (sysctl(exe_path_mib, 4, NULL, &exe_path_size, NULL, 0) == 0) {
-  char *exe_path = new char[exe_path_size];
-  if (sysctl(exe_path_mib, 4, exe_path, &exe_path_size, NULL, 0) == 0)
-g_program_filespec.SetFile(exe_path, FileSpec::Style::native);
-  delete[] exe_path;
-}
+char exe_path[PATH_MAX];
+size_t exe_path_size = sizeof(exe_path);
+if (sysctl(exe_path_mib, 4, exe_path, &exe_path_size, NULL, 0) == 0)
+  g_program_filespec.SetFile(exe_path, false);
   }
   return g_program_filespec;
 }


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


[Lldb-commits] [lldb] r371491 - [LLDB] FreeBSD fix new SetFile call.

2019-09-10 Thread David Carlier via lldb-commits
Author: devnexen
Date: Tue Sep 10 00:33:39 2019
New Revision: 371491

URL: http://llvm.org/viewvc/llvm-project?rev=371491&view=rev
Log:
[LLDB] FreeBSD fix new SetFile call.

Modified:
lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp

Modified: lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp?rev=371491&r1=371490&r2=371491&view=diff
==
--- lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp (original)
+++ lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp Tue Sep 10 00:33:39 2019
@@ -67,7 +67,7 @@ FileSpec HostInfoFreeBSD::GetProgramFile
 char exe_path[PATH_MAX];
 size_t exe_path_size = sizeof(exe_path);
 if (sysctl(exe_path_mib, 4, exe_path, &exe_path_size, NULL, 0) == 0)
-  g_program_filespec.SetFile(exe_path, false);
+  g_program_filespec.SetFile(exe_path, FileSpec::Style::native);
   }
   return g_program_filespec;
 }


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


[Lldb-commits] [lldb] r363135 - [LLDB] Fix FreeBSD build

2019-06-12 Thread David Carlier via lldb-commits
Author: devnexen
Date: Wed Jun 12 01:54:14 2019
New Revision: 363135

URL: http://llvm.org/viewvc/llvm-project?rev=363135&view=rev
Log:
[LLDB] Fix FreeBSD build

The auxiliary vector method had the wrong signature.

Reviewers: MaskRay, teemperor, aadsm

Reviewed By: MaskRay, teemperor

Differential Revision: https://reviews.llvm.org/D63187

Modified:
lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h

Modified: lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h?rev=363135&r1=363134&r2=363135&view=diff
==
--- lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h (original)
+++ lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h Wed Jun 12 
01:54:14 2019
@@ -127,7 +127,7 @@ public:
   size_t PutSTDIN(const char *buf, size_t len,
   lldb_private::Status &error) override;
 
-  const lldb_private::DataExtractor GetAuxvData() override;
+  lldb_private::DataExtractor GetAuxvData() override;
 
   // ProcessFreeBSD internal API.
 


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


[Lldb-commits] [lldb] r365761 - [LLDB] Fix FreeBSD build.

2019-07-11 Thread David Carlier via lldb-commits
Author: devnexen
Date: Thu Jul 11 05:21:04 2019
New Revision: 365761

URL: http://llvm.org/viewvc/llvm-project?rev=365761&view=rev
Log:
[LLDB] Fix FreeBSD build.

To align with the LaunchThread change.

Reviewers: MaskRay, mgorny

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D64398

Modified:
lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.h

Modified: lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp?rev=365761&r1=365760&r2=365761&view=diff
==
--- lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp (original)
+++ lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp Thu Jul 11 
05:21:04 2019
@@ -708,7 +708,7 @@ ProcessMonitor::ProcessMonitor(
 const lldb_private::ProcessLaunchInfo & /* launch_info */,
 lldb_private::Status &error)
 : m_process(static_cast(process)),
-  m_pid(LLDB_INVALID_PROCESS_ID), m_terminal_fd(-1), m_operation(0) {
+  m_operation_thread(nullptr), m_monitor_thread(nullptr), 
m_pid(LLDB_INVALID_PROCESS_ID), m_terminal_fd(-1), m_operation(0) {
   using namespace std::placeholders;
 
   std::unique_ptr args(
@@ -738,7 +738,7 @@ ProcessMonitor::ProcessMonitor(
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread.IsJoinable()) {
+  if (!m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process launch failed.");
 return;
@@ -747,8 +747,8 @@ ProcessMonitor::ProcessMonitor(
 
 ProcessMonitor::ProcessMonitor(ProcessFreeBSD *process, lldb::pid_t pid,
lldb_private::Status &error)
-: m_process(static_cast(process)), m_pid(pid),
-  m_terminal_fd(-1), m_operation(0) {
+: m_process(static_cast(process)),
+  m_operation_thread(nullptr), m_monitor_thread(nullptr), m_pid(pid), 
m_terminal_fd(-1), m_operation(0) {
   using namespace std::placeholders;
 
   sem_init(&m_operation_pending, 0, 0);
@@ -776,7 +776,7 @@ ProcessMonitor::ProcessMonitor(ProcessFr
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread.IsJoinable()) {
+  if (!m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process attach failed.");
 return;
@@ -789,11 +789,13 @@ ProcessMonitor::~ProcessMonitor() { Stop
 void ProcessMonitor::StartLaunchOpThread(LaunchArgs *args, Status &error) {
   static const char *g_thread_name = "lldb.process.freebsd.operation";
 
-  if (m_operation_thread.IsJoinable())
+  if (m_operation_thread->IsJoinable())
 return;
 
   m_operation_thread =
-  ThreadLauncher::LaunchThread(g_thread_name, LaunchOpThread, args, 
&error);
+  ThreadLauncher::LaunchThread(g_thread_name, LaunchOpThread, args);
+  if (!m_operation_thread)
+ error = m_operation_thread.takeError();
 }
 
 void *ProcessMonitor::LaunchOpThread(void *arg) {
@@ -955,11 +957,14 @@ void ProcessMonitor::StartAttachOpThread
  lldb_private::Status &error) {
   static const char *g_thread_name = "lldb.process.freebsd.operation";
 
-  if (m_operation_thread.IsJoinable())
+  if (m_operation_thread->IsJoinable())
 return;
 
   m_operation_thread =
-  ThreadLauncher::LaunchThread(g_thread_name, AttachOpThread, args, 
&error);
+  ThreadLauncher::LaunchThread(g_thread_name, AttachOpThread, args);
+
+  if (!m_operation_thread)
+   error = m_operation_thread.takeError();
 }
 
 void *ProcessMonitor::AttachOpThread(void *arg) {
@@ -1379,10 +1384,10 @@ bool ProcessMonitor::DupDescriptor(const
 }
 
 void ProcessMonitor::StopMonitoringChildProcess() {
-  if (m_monitor_thread.IsJoinable()) {
-m_monitor_thread.Cancel();
-m_monitor_thread.Join(nullptr);
-m_monitor_thread.Reset();
+  if (m_monitor_thread->IsJoinable()) {
+m_monitor_thread->Cancel();
+m_monitor_thread->Join(nullptr);
+m_monitor_thread->Reset();
   }
 }
 
@@ -1417,10 +1422,10 @@ void ProcessMonitor::StopMonitor() {
 bool ProcessMonitor::WaitForInitialTIDStop(lldb::tid_t tid) { return true; }
 
 void ProcessMonitor::StopOpThread() {
-  if (!m_operation_thread.IsJoinable())
+  if (!m_operation_thread->IsJoinable())
 return;
 
-  m_operation_thread.Cancel();
-  m_operation_thread.Join(nullptr);
-  m_operation_thread.Reset();
+  m_operation_thread->Cancel();
+  m_operation_thread->Join(nullptr);
+  m_operation_thread->Reset();
 }

Modified: lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.h
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.h?re