libffi unwind test fails
Laurent Blume
laurent at opencsw.org
Sun Mar 15 15:58:42 CET 2015
Look closer at the lines you've just quoted:
if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null
2>&1 && \
$CC conftest2.c conftest1.o > /dev/null 2>&1 ; then
See the $CFLAGS for the first GCC call? It's missing for the second.
So you get that actually executed:
+ gcc -Wa,--fatal-warnings -m64 -Wall -fexceptions -c conftest1.s
+ gcc conftest2.c conftest1.o
The first succeeds, creates a 64 bit object. The second fails, because
it tries to link a 64 bit object in 32 bit mode (the default).
Add a $CFLAGS, it'll work better. Report upstream too.
Laurent
On 13/03/2015 17:16, Riccardo Mottola wrote:
> Hi,
>
> the other thread reached a too deep reply level and got a bit out of
> topic :) The summary is: the toolchain supports unwind section type
> returns no even if it should return yes. This makes solaris-x86-64 fail.
> The test is executed only if target is X86_64, this is why we weren't
> seeing the test in the 32bit build.
>
> The full test check in configure.ac is:
> if test x$TARGET = xX86_64; then
> AC_CACHE_CHECK([toolchain supports unwind section type],
> libffi_cv_as_x86_64_unwind_section_type, [
> cat > conftest1.s << EOF
> .text
> .globl foo
> foo:
> jmp bar
> .section .eh_frame,"a", at unwind
> bar:
> EOF
>
> cat > conftest2.c << EOF
> extern void foo();
> int main(){foo();}
> EOF
>
> libffi_cv_as_x86_64_unwind_section_type=no
> # we ensure that we can compile _and_ link an assembly file
> containing an @unwind section
> # since the compiler can support it and not the linker (ie old
> binutils)
> if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null
> 2>&1 && \
> $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then
> libffi_cv_as_x86_64_unwind_section_type=yes
> fi
> ])
> if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
> AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1,
> [Define if your assembler supports unwind section
> type.])
> fi
> fi
>
> it links with $CC a small piece with assembler and tries to see if there
> are warnings.
>
> I created the two files manually, I tried:
> gcc -Wa,--fatal-warnings -m64 -c conftest1.s
>
> and got no error. (without -m64, I would get an unrecognized section type)
>
> then I do:
> cc -m64 conftest2.c conftest1.o
>
>
> and get no errors, so the test should pass.
>
> What's wrong?
>
> Riccardo
>
More information about the maintainers
mailing list