2008/5/28 Thiemo Seufer <[EMAIL PROTECTED]>:
>
> After a closer look I believe the logic of the test is just plain wrong:
>
> aux (l) unsigned long l;
> { int x; exit (l >= ((unsigned long)&x)); }
> main () { int q; aux((unsigned long)&q); },
>
> The test returns true for a downward-growing stack, but that sets
> SCM_I_GSC_STACK_GROWS_UP=1 !

Are you sure you're not missing a step?  According to my
understanding, for a downwards-growing stack:

   &x < l
   => (l >= &x) is TRUE
   => exit status of the test program is non-zero
   => AC_TRY_RUN believes that the test program _failed_
   => SCM_I_GSC_STACK_GROWS_UP stays as 0

> For paranoia reasons I checked that
> the test behaves the same on mips, powerpc and i386.

What exactly do you mean here?  (My guess: that you compiled and ran
the test program by hand, and that the exit status was 1 in each
case?)

> Using "(l < ((unsigned long& ..." does the right thing. Amazingly
> this means the test is wrong on all platforms, and guile appears to
> mostly cope with it. :-)

Unfortunately that is very unlikely, so I'm afraid there is still
something more subtle that we are missing.

Regards,
        Neil



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to