* signal.cc (_raise): New function.

* exceptions.cc (unused_sig_wrapper): Remove _raise.
* sigproc.h (class sigframe): Default frames to skip to zero or suffer from
exuberant optimization.
* fhandler_tty.cc (fhandler_tty::write): Set appropriate errno when WriteFile
to pipe fails.
This commit is contained in:
Christopher Faylor 2000-08-29 02:06:49 +00:00
parent 1b38471e5e
commit d824bcf985
5 changed files with 25 additions and 14 deletions

View File

@ -1,3 +1,12 @@
Mon Aug 28 22:03:21 2000 Christopher Faylor <cgf@cygnus.com>
* signal.cc (_raise): New function.
* exceptions.cc (unused_sig_wrapper): Remove _raise.
* sigproc.h (class sigframe): Default frames to skip to zero or suffer
from exuberant optimization.
* fhandler_tty.cc (fhandler_tty::write): Set appropriate errno when
WriteFile to pipe fails.
Fri Aug 25 23:44:48 2000 Christopher Faylor <cgf@cygnus.com>
* pinfo.h (pinfo): Un-inline release.

View File

@ -1074,18 +1074,6 @@ void unused_sig_wrapper ()
and returns to orignal caller. */
__asm__ volatile ("
.text
.globl __raise
__raise:
pushl %%ebp
movl %%esp,%%ebp
movl 8(%%ebp),%%eax
pushl %%eax
movl $_myself,%%eax
pushl %6(%%eax)
call __kill
mov %%ebp,%%esp
popl %%ebp
ret
_sigreturn:
addl $4,%%esp

View File

@ -568,9 +568,17 @@ fhandler_tty_slave::write (const void *ptr, size_t len)
if (WriteFile (get_output_handle (), buf, n, &n, NULL) == FALSE)
{
DWORD err = GetLastError ();
termios_printf ("WriteFile failed, %E");
towrite = (DWORD) -1;
switch (err)
{
case ERROR_NO_DATA:
err = ERROR_IO_DEVICE;
default:
__seterrno ();
}
_raise (SIGHUP); /* FIXME: Should this be SIGTTOU? */
towrite = (DWORD) -1;
break;
}

View File

@ -144,6 +144,12 @@ kill_worker (pid_t pid, int sig)
return res;
}
int
_raise (int sig)
{
return _kill (myself->pid, sig);
}
/* This is called _kill because the real kill is in newlib. */
int
_kill (pid_t pid, int sig)

View File

@ -60,7 +60,7 @@ public:
}
sigframe () {st = NULL;}
sigframe (sigthread &t, int up = 1)
sigframe (sigthread &t, int up = 0)
{
if (!t.frame && t.id == GetCurrentThreadId ())
set (t, up);