diff --git a/core/org.eclipse.cdt.core.aix/library/spawner.c b/core/org.eclipse.cdt.core.aix/library/spawner.c index f07ce0221c9..b8707ca0e2b 100644 --- a/core/org.eclipse.cdt.core.aix/library/spawner.c +++ b/core/org.eclipse.cdt.core.aix/library/spawner.c @@ -249,23 +249,38 @@ Java_org_eclipse_cdt_utils_spawner_Spawner_raise(JNIEnv * env, jobject jobj, switch (sig) { case 0: /* NOOP */ - status = kill(pid, 0); + status = killpg(pid, 0); + if(status == -1) { + status = kill(pid, 0); + } break; case 2: /* INTERRUPT */ - status = kill(pid, SIGINT); + status = killpg(pid, SIGINT); + if(status == -1) { + status = kill(pid, SIGINT); + } break; case 9: /* KILL */ - status = kill(pid, SIGKILL); + status = killpg(pid, SIGKILL); + if(status == -1) { + status = kill(pid, SIGKILL); + } break; case 15: /* TERM */ - status = kill(pid, SIGTERM); + status = killpg(pid, SIGTERM); + if(status == -1) { + status = kill(pid, SIGTERM); + } break; default: - status = kill(pid, sig); /* WHAT ?? */ + status = killpg(pid, sig); /* WHAT ?? */ + if(status == -1) { + status = kill(pid, sig); /* WHAT ?? */ + } break; } diff --git a/core/org.eclipse.cdt.core.aix/os/aix/ppc/libpty.so b/core/org.eclipse.cdt.core.aix/os/aix/ppc/libpty.so index 5a777eb82de..67ad7692422 100644 Binary files a/core/org.eclipse.cdt.core.aix/os/aix/ppc/libpty.so and b/core/org.eclipse.cdt.core.aix/os/aix/ppc/libpty.so differ diff --git a/core/org.eclipse.cdt.core.aix/os/aix/ppc/libspawner.so b/core/org.eclipse.cdt.core.aix/os/aix/ppc/libspawner.so index 19c8c1dd60e..e7b411361b0 100644 Binary files a/core/org.eclipse.cdt.core.aix/os/aix/ppc/libspawner.so and b/core/org.eclipse.cdt.core.aix/os/aix/ppc/libspawner.so differ