[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Guile FTBFS on hppa - problem in detecting stack direction?



On Wed, Aug 06, 2008 at 09:38:32PM +0100, Neil Jerram wrote:
> Hi hppa people!  I'm hoping you can help me fix a FTBFS that we're
> getting with Guile on hppa.
> 
> The build log is here:
> http://buildd.debian.org/fetch.cgi?pkg=guile-1.8;ver=1.8.5%2B1-2;arch=hppa;stamp=1217809852
> 
> The specific problem is a segmentation fault, at a point in a build
> that probably won't mean anything to non-Guile folks - but the key
> point is that we were recently seeing exactly the same segmentation
> fault (i.e. at the same place) on several other architectures (mips,
> mipsel, powerpc), and that was caused by the code in configure.in not
> detecting the stack direction properly.
> 
> This patch - http://git.savannah.gnu.org/gitweb/?p=guile.git;a=commit;h=9143131b2766d1e29e05d61b5021395b4c93a6bc
> - fixed the problem for mips, mipsel and powerpc, but it looks as
> though we are still getting the stack direction wrong on hppa.  (My
> understanding is that on hppa the stack actually grows upwards,
> whereas on most platforms it's downwards.)
> 
> I've appended the relevant bit of configure.in below.  Can anyone help
> with why this might not be working on hppa?
> 

According to the build.log,

checking stack direction... (cached) 0

this looks like it's obtaining the wrong result...

I'm not entirely sure why... what optimization pass is being used to
build this?

regards, Kyle

> Thanks,
>        Neil
> 
> #--------------------------------------------------------------------
> #
> # Which way does the stack grow?
> #
> # Following code comes from Autoconf 2.61's internal _AC_LIBOBJ_ALLOCA
> # macro (/usr/share/autoconf/autoconf/functions.m4).  Gnulib has
> # very similar code, so in future we could look at using that.
> #
> # An important detail is that the code involves find_stack_direction
> # calling _itself_ - which means that find_stack_direction (or at
> # least the second find_stack_direction() call) cannot be inlined.
> # If the code could be inlined, that might cause the test to give
> # an incorrect answer.
> #--------------------------------------------------------------------
> 
> SCM_I_GSC_STACK_GROWS_UP=0
> AC_CACHE_CHECK([stack direction],
> 	       [SCM_I_GSC_STACK_GROWS_UP],
> [AC_RUN_IFELSE([AC_LANG_SOURCE(
> [AC_INCLUDES_DEFAULT
> int
> find_stack_direction ()
> {
>   static char *addr = 0;
>   auto char dummy;
>   if (addr == 0)
>     {
>       addr = &dummy;
>       return find_stack_direction ();
>     }
>   else
>     return (&dummy > addr) ? 1 : -1;
> }
> 
> int
> main ()
> {
>   return find_stack_direction () < 0;
> }])],
> 	       [SCM_I_GSC_STACK_GROWS_UP=1],
> 	       [],
> 	       [AC_MSG_WARN(Guessing that stack grows down -- see scmconfig.h)])])
> 
> 
> -- 
> To UNSUBSCRIBE, email to debian-hppa-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> 


Reply to: