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: