================
@@ -122,8 +123,14 @@ struct ForkLaunchInfo {
         ExitWithError(error_fd, "close");
       break;
     case FileAction::eFileActionDuplicate:
-      if (dup2(action.fd, action.arg) == -1)
-        ExitWithError(error_fd, "dup2");
+      if (action.fd != action.arg) {
+        if (dup2(action.fd, action.arg) == -1)
+          ExitWithError(error_fd, "dup2");
+      } else {
+        if (fcntl(action.fd, F_SETFD,
+                  fcntl(action.fd, F_GETFD) & ~FD_CLOEXEC) == -1)
----------------
DavidSpickett wrote:

So if the file descriptors are not the same, we want to duplicate what 
action.fd refers to, into the file descriptor action.arg. Seems logical, we can 
then pass the new file descriptor to the debugee, I think?

(unless this is forking into another part of lldb)

If they are not the same, then we don't want to close action.fd when we next 
exec, which is when we fork to run the debugee process? Is this because 
action.fd is for example opened by the system, not by lldb or the debugee and 
we don't want to interfere with that?

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

Reply via email to