OS X Lion, make check stalls

Jack Howarth howarth at bromo.med.uc.edu
Thu Jul 28 15:56:28 CEST 2011


On Thu, Jul 28, 2011 at 03:19:49PM +0200, Stijn Vanden Eynde wrote:
> 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.

Not until Torbjorn fixes this in gmp svn and hopefully releases it with gmp-5.0.3.
Currently we will constantly revisit this issue.

> 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