[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