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]