[Lldb-commits] [lldb] r246294 - Avoid usage of F_DUPFD_CLOEXEC where not available (e.g. kfreebsd*)

Sylvestre Ledru via lldb-commits lldb-commits at lists.llvm.org
Fri Aug 28 05:24:08 PDT 2015


Author: sylvestre
Date: Fri Aug 28 07:24:07 2015
New Revision: 246294

URL: http://llvm.org/viewvc/llvm-project?rev=246294&view=rev
Log:
Avoid usage of F_DUPFD_CLOEXEC where not available (e.g. kfreebsd*)

Summary:
kfreebsd doesn't have F_DUPFD_CLOEXEC, so use it conditionally.

Author: Emilio Pozuelo Monfort <pochu at debian.org>
Author: Petr Salinger <Petr.Salinger at seznam.cz>
Author: Gianfranco Costamagna

Reviewers: emaste

Subscribers: emaste

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

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

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=246294&r1=246293&r2=246294&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp (original)
+++ lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp Fri Aug 28 07:24:07 2015
@@ -462,11 +462,25 @@ ProcessFreeBSD::DoLaunch (Module *module
     int terminal = m_monitor->GetTerminalFD();
     if (terminal >= 0) {
         // The reader thread will close the file descriptor when done, so we pass it a copy.
+#ifdef F_DUPFD_CLOEXEC
         int stdio = fcntl(terminal, F_DUPFD_CLOEXEC, 0);
         if (stdio == -1) {
             error.SetErrorToErrno();
             return error;
         }
+#else
+        // Special case when F_DUPFD_CLOEXEC does not exist (Debian kFreeBSD)
+        int stdio = fcntl(terminal, F_DUPFD, 0);
+        if (stdio == -1) {
+            error.SetErrorToErrno();
+            return error;
+        }
+        stdio = fcntl(terminal, F_SETFD, FD_CLOEXEC);
+        if (stdio == -1) {
+            error.SetErrorToErrno();
+            return error;
+        }
+#endif
         SetSTDIOFileDescriptor(stdio);
     }
 




More information about the lldb-commits mailing list