Hello, As I was hinting in one of my earlier emails, there is a nasty error in darwin-nat.c, in the fact that we set the darwin_ops->to_kill method to a procedure that has the wrong profile: darwin_kill_inferior takes a target_ops * as its parameter, whereas the to_kill method is supposed to take none! Attached is a patch that fixes the issue, at least for now. But as you can see, darwin_kill_inferior makes calls to a few routines that are also used as methods in darwin's target_ops, and thus must take a target_ops as their first parameter. As a minimal change, what my first patch does is simply use the current_target global and passes it to darwin_wait and darwin_resume. But this isn't very satisfactory, I don't want to increase the use of a global if I can help it. As it turns out, all the routines being used by darwin_kill_inferior don't use the target_ops. So what my second patch did was extract out each of these routines inside another identical function, but without the target_ops parameter. What this does, basically, is defined the target_ops methods as wrappers to the real routines. This is what my second patch does. However, I'm really wondering whether it would make sense to have *all* the methods take the target_ops as the first parameter. We've been slowly adding this parameter as we need them, but really, why not be consistent across the board? Thoughts? -- Joel