David,

I am still compiling with:

        env "CC=gcc2 -no-cpp-precomp -D_POSIX_SOURCE

but I still get those errors. ;(

DaR

> -----Original Message-----
> From: David N. Williams [mailto:David.N.Williams@;umich.edu]
> Sent: Friday, October 25, 2002 11:14 AM
> To: [EMAIL PROTECTED]
> Subject: Re: [gforth] --enable-indirect-threaded on PPC?
> 
> 
> Anton Ertl wrote:
> > Dennis Ruffer wrote:
> > 
> >>Anton,
> >>
> >>On Jaguar (10.2.1), your changes produce the following errors:
> >>
> >>signals.c: In function `bsd_signal':
> >>signals.c:77: `SA_ONSTACK' undeclared (first use in this function)
> >>signals.c:77: (Each undeclared identifier is reported only once
> >>signals.c:77: for each function it appears in.)
> >>signals.c: In function `install_signal_handlers':
> >>signals.c:359: `stack_t' undeclared (first use in this function)
> >>signals.c:359: parse error before `sigstack'
> >>signals.c:362: `sigstack' undeclared (first use in this function)
> >>signals.c:362: `SIGSTKSZ' undeclared (first use in this function)
> >>signals.c:365: warning: implicit declaration of function 
> `sigaltstack'
> >>signals.c:365: parse error before `)'
> >>
> >>DaR
> > 
> > 
> > Thanks.  Jaguar is a codename for some MacOS X version, 
> right?  Looks
> > like there's no sigaltstack() and friends there (nor SA_SIGINFO).  I
> > expected this from older Unices, but had hoped that this 
> functionality
> > would be present in all recent systems (after all, it's in Unix 95).
> > Try putting
> > 
> > #define _XOPEN_SOURCE 500
> > #define _XOPEN_SOURCE_EXTENDED
> > #define _POSIX_C_SOURCE 199506L
> > 
> > at the start of engine/signals.c and recompile.  Let me know if this
> > works or if you find another way to get to sigaltstack().  
> If not, you
> > will just have to eliminate this stuff and live with this minor
> > unpleasantness (the absensence of SA_SIGINFO causes much more
> > unpleasantness, though: "Invalid memory address" instead of "Stack
> > underflow" etc.).
> 
> I wonder if Dennis is compiling with -D_POSIX_SOURCE to avoid a 
> problem with the absence of the signals FPE_INTDIV, FPE_INTOVF, 
> and FPE_FLTSUB in MacOS X that was discussed around August 25. 
> That prevents the definition of SA_SIGINFO, along with just 
> about everything in Dennis's list above, as far as I can see.
> 
> In signals.c, gforth has
> 
> -----------------
> #ifdef SA_SIGINFO
> static void fpe_handler(int sig, siginfo_t *info, void *_)
>       /* handler for SIGFPE */
> {
>    int code;
> 
>    switch(info->si_code) {
>    case FPE_INTDIV: code=-10; break; /* integer divide by zero */
>    case FPE_INTOVF: code=-11; break; /* integer overflow */
>    case FPE_FLTDIV: code=-42; break; /* floating point divide by 
> zero */
>    case FPE_FLTOVF: code=-43; break; /* floating point overflow  */
>    case FPE_FLTUND: code=-54; break; /* floating point underflow  */
>    case FPE_FLTRES: code=-41; break; /* floating point inexact 
> result  */
>    case FPE_FLTINV: /* invalid floating point operation  */
>    case FPE_FLTSUB: /* subscript out of range  */
>    default: code=-55; break;
>    }
>    longjmp(throw_jmp_buf,code);
> }
> ------------------
> 
> On the other hand, /usr/include/sys/signals.h only has
> 
> ----------------------
> /* Codes for SIGFPE */
> #define FPE_NOOP        0       /* if only I knew... */
> #define FPE_FLTDIV      1       /* floating point divide by zero */
> #define FPE_FLTOVF      2       /* floating point overflow */
> #define FPE_FLTUND      3       /* floating point underflow */
> #define FPE_FLTRES      4       /* floating point inexact result */
> #define FPE_FLTINV      5       /* invalid floating point 
> operation */
> ----------------------
> 
> That's why I made the suggestion that compiler errors from the 
> nonexistent signals could be avoided by not defining SA_SIGINFO, 
> which is in signals.h like this:
> 
> ----------------------------
> #if  !defined(_POSIX_SOURCE)
> #define SA_ONSTACK      0x0001  /* take signal on signal stack */
> #define SA_RESTART      0x0002  /* restart system on signal 
> return */
> #define SA_DISABLE      0x0004  /* disable taking signals on 
> alternate stack */
> #define SA_RESETHAND    0x0004  /* reset to SIG_DFL when taking 
> signal */
> #define SA_NODEFER      0x0010  /* don't mask the signal we're 
> delivering */
> #define SA_NOCLDWAIT    0x0020  /* don't keep zombies around */
> #define SA_SIGINFO      0x0040  /* signal handler with 
> SA_SIGINFO args */
> #define SA_USERTRAMP    0x0100  /* do not bounce off kernel's 
> sigtramp */
> #endif
> ----------------------------
> 
> That has the effect of also eliminating the structures, etc., 
> used by sigaltstack(), because they also occur in signal.h in 
> the scope of a "#if !defined(_POSIX_SOURCE)" statement.
> 
> I was too ignorant to worry about defining _POSIX_SOURCE.
> 
> At any rate, maybe it comes down to what's the best way to get 
> around the missing signals, FPE_INTDIV, FPE_INTOVF, and FPE_FLTSUB.
> 
> -- David
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to