OS X Lion, make check stalls
Stijn Vanden Eynde
djcomidi at gmail.com
Thu Jul 28 15:19:49 CEST 2011
Hello again
I applied the patches to acinclude.m4 and configure.
GMP now installs without a flaw.
None of the checks fails or stalls anymore.
Thanks for the quick replies.
I consider it case closed.
Greetings, Stijn
On Thu, Jul 28, 2011 at 14:32, Jack Howarth <howarth at bromo.med.uc.edu>wrote:
> On Thu, Jul 28, 2011 at 12:16:42PM +0200, Torbjorn Granlund wrote:
> > Stijn Vanden Eynde <djcomidi at gmail.com> writes:
> >
> > I am currently trying to build gmp-5.0.2 on OS X Lion.
> > What is the problem:
> > Both ./configure and make run succesfully.
> > But "make check" stalls at a certain point.
> > The last lines I get are:
> > > PASS: t-fdiv_ui
> > > PASS: t-cdiv_ui
> > Up to this point there is nothing but a blinking cursor,
> > my guess is that the next check is in an infinite loop or so.
> > Which is strange, cause it didn't had this issue on Snow Leopard.
> >
> > Thanks for the bug report!
> >
> > Unfortunately, I cannot do much, since I have no adequate system where I
> > could attempt to reproduce this odd problem. You need to isolate it
> > yourself, and report it to Apple or us, depending on the nature of the
> > problem. Alternatively, if somebody else on this list want to make a
> > contribution to the project, please help with isolating this problem.
> >
> > I brave a guess: This is a compiler problem. Apple's track record is
> > really poor in this area. I see the LLVM name in your report. That
> > compiler is very immature, and miscompiles most non-trivial programs at
> > at least some optimisation level.
>
> Torbjörn,
> I emailed you about this before. The patch applied for gmp-5.0.2 had
> a minor flaw.
>
> http://gmplib.org/list-archives/gmp-bugs/2011-May/002255.html
> http://gmplib.org/list-archives/gmp-bugs/2011-May/002256.html
>
> The test in the generated configure for "checking how to switch to
> read-only data section... "
> should be...
>
> const int foo[] = {1,2,3};
>
> but since acinclude.m4 is missing the extra braces, the single braces are
> chewed away by autoconf leaving...
>
> const int foo = {1,2,3};
>
> This flawed test case produces a warning under clang but an error under
> llvm-gcc.
>
> --- acinclude.m4.orig 2011-05-17 19:03:09.000000000 -0400
> +++ acinclude.m4 2011-05-17 19:03:43.000000000 -0400
> @@ -1941,8 +1941,8 @@
> esac
>
> cat >conftest.c <<EOF
> -extern const int foo[]; /* Suppresses C++'s suppression of
> foo */
> -const int foo[] = {1,2,3};
> +extern const int foo[[]]; /* Suppresses C++'s suppression of
> foo */
> +const int foo[[]] = {1,2,3};
> EOF
> echo "Test program:" >&AC_FD_CC
> cat conftest.c >&AC_FD_CC
> --- configure.orig 2011-05-17 19:15:41.000000000 -0400
> +++ configure 2011-05-17 19:16:00.000000000 -0400
> @@ -26446,8 +26446,8 @@
> esac
>
> cat >conftest.c <<EOF
> -extern const int foo; /* Suppresses C++'s suppression of foo */
> -const int foo = {1,2,3};
> +extern const int foo[]; /* Suppresses C++'s suppression of
> foo */
> +const int foo[] = {1,2,3};
> EOF
> echo "Test program:" >&5
> cat conftest.c >&5
>
> will eliminate the miscompilation of gmp 5.0.2 under llvm-gcc. Again the
> origin of
> this problem is that the flawed test case produces...
>
> define(<RODATA>, < .section __TEXT,__literal4,4byte_literals>)
>
> in the generated config.m4 which is wrong.
> Jack
> ps The darwin linker developers comments on __literal4 are appended below.
>
>
> --------------------------------------------------------------------------------------
> I don't understand the context of what you sent or how it builds, but this
> line in invert_limb_build/config.m4 is very suspect:
>
> define(<RODATA>, < .section __TEXT,__literal4,4byte_literals>)
>
>
> The _literal4 section is special in mach-o. The linker is free to
> reorganize and coalesce any 4-byte duplicates in the section.
>
> The file ./invert_limb_build/mpn/tmp-invert_limb.s contains:
>
> mov approx_tab at GOTPCREL(%rip), %r8
> add $-512, %r8
> movzwl (%r8,%rax,2), %ecx
> ...
> .section __TEXT,__literal4,4byte_literals
> .align 1, 0x90
> approx_tab:
> .value 0x7fd,0x7f5,0x7ed,0x7e5,0x7dd,0x7d5,0x7ce,0x7c6
> .value 0x7bf,0x7b7,0x7b0,0x7a8,0x7a1,0x79a,0x792,0x78b
> ...
> .value 0x40e,0x40c,0x40a,0x408,0x406,0x404,0x402,0x400
>
>
> Even if the linker had not asserted on this, the program would surely do
> the wrong thing at runtime, because the linker can rearrange the content of
> the __literal4,4byte_literals section and this code depends on that big
> table being kept intact.
>
> That table should just be in the __TEXT,__const section which holds any
> non-special constant data. (and RODATA without relocations in it).
>
> ---------------------------------------------------------------------------------------
>
> >
> > --
> > Torbjörn
> > _______________________________________________
> > gmp-bugs mailing list
> > gmp-bugs at gmplib.org
> > https://gmplib.org/mailman/listinfo/gmp-bugs
>
More information about the gmp-bugs
mailing list