process.c: perform bpt trick for clone as well so we can get the pid of the child before it starts doing something
file.c: rename dirent64 struct to kernel_dirent64 so things compile again with newer libcs
diff --git a/process.c b/process.c
index dda3b9e..47fc87d 100644
--- a/process.c
+++ b/process.c
@@ -548,12 +548,18 @@
 		}
 		tcp->flags |= TCB_FOLLOWFORK;
 
-		tcp->u_arg[0] |= CLONE_PTRACE;
-		setarg(tcp, 0);
+
+		if (setbpt(tcp) < 0)
+			return 0;
 	} else {
+		int bpt = tcp->flags & TCB_BPTSET;
+
 		if (!(tcp->flags & TCB_FOLLOWFORK))
 			return 0;
 
+		if (bpt)
+			clearbpt(tcp);
+
 		if (syserror(tcp))
 			return 0;
 
@@ -564,10 +570,21 @@
 			return 0;
 		}
 
-		/* For fork we need to re-attach, but thanks to CLONE_PTRACE we're
-		 * already attached.
-		 */
+		/* Attach to the new child */
+		if (ptrace(PTRACE_ATTACH, pid, (char *) 1, 0) < 0) {
+			perror("PTRACE_ATTACH");
+			fprintf(stderr, "Too late?\n");
+			droptcb(tcpchild);
+			return 0;
+		}
+
 		tcpchild->flags |= TCB_ATTACHED;
+		if (bpt) {
+			tcpchild->flags |= TCB_BPTSET;
+			tcpchild->baddr = tcp->baddr;
+			memcpy(tcpchild->inst, tcp->inst,
+				sizeof tcpchild->inst);
+		}
 		newoutf(tcpchild);
 		tcp->nchildren++;
 		if (!qflag)