autoconf
[Top][All Lists]
Advanced

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

Re: Issues w/ cross-compiling


From: Ralf Wildenhues
Subject: Re: Issues w/ cross-compiling
Date: Wed, 6 Aug 2008 22:51:44 +0200
User-agent: Mutt/1.5.18 (2008-05-17)

* Eric Blake wrote on Wed, Aug 06, 2008 at 03:19:51PM CEST:
> According to Ralf Wildenhues on 7/8/2008 2:57 PM:
> | This is odd.  I can confirm it though: bcc ("Bruce’s C compiler")
> | doesn't throw a compile error for

> | so I'm wondering whether we should change the test.  Changing
> | AC_LANG_BOOL_COMPILE_TRY(C) in a way so that it doesn't ever
> | warn (thus getting _AC_COMPUTE_INT_COMPILE to silently return
> | bogus results), isn't completely trivial, though
> | (unreachable code vs. code that is optimized away).
>
> What about a combination of approaches?
>
> static int test_array [1 - 2 * !(((long int) (sizeof (int))) <= 1)];
> return sizeof test_array - (test_array[0] = 0);

Oh, well.  This compiler is very unpredictable in its handling of
constant expressions.  Unpredictable in the sense of "not really doing
what you would expect from a nearly ANSI C compiler".

I did some more testing, tried out more variations of boolean error
reporting.  Things only grew more inconclusive.  Then I gave up for a
while.  If you are interested, I can produce a more detailed summary.

AFAIK all tests in Autoconf which use AC_LANG_BOOL_COMPILE_TRY can be
overridden by setting some cache variable correctly.  As another easy
way out, on GNU/Linux binfmt_misc support may be used to actually run
binaries created by bcc (in the simulator), which will help to get
correct test results.

With binfmt_misc support enabled, the Autoconf test suite failed:
Fortran tests (of course); AC_CHECK_LIB, AC_SEARCH_LIBS, and
AC_FUNC_STRTOD due to nonexistent libm; the cross-compile
AC_CHECK_ALIGNOF and AC_CHECK_SIZEOF tests (see above); and finally
the AC_CHECK_DECL test which is the only other non-cross issue, where it
fails to detect that a structure is declared: casting a structure type
name to void yields this error:
| a.c:12.18: error: need non-structure type
| a.c:12.18: error: compiler bug? - botched nodetype calculation

Cheers,
Ralf




reply via email to

[Prev in Thread] Current Thread [Next in Thread]