Building gcc with broken gfortran

NightStrike nightstrike@gmail.com
Fri Jan 11 17:43:00 GMT 2019


On Fri, Jan 11, 2019 at 11:52 AM Steve Kargl
<sgk@troutmask.apl.washington.edu> wrote:
> > > ../gccx/configure --prefix=$HOME/work/x --enable-languages=c,fortran \
> > >   --enable-bootstrap --disable-nls
> >
> > Does that work on RHEL or Cent 6?  I don't see much different in what
> > I'm doing, other than wanting the faster clock_gettime.
>
> I use neither RHEL nor Cent 6.  May be that's you're problem. :)
>
> Have you tried the above exactly as I have typed it qout?  Your
> configure line starts with "../configure" suggesting that
> you are building within the source code directory.  Isn't
> that taboo?  What happens if you remove --enable-libstdcxx-time=rt?

Configuring (slightly differently) with --enable-languages=fortran
--disable-nls --disable-multilib
..............worked.

I guess I have some more combinations to test.......

> I don't understand what you mean by "wanting the faster clock_gettime".
> gfortran's system_clock() will use clock_gettime if configure finds
> that it is available on your system.
>
> % nm objx/x86_64-unknown-freebsd13.0/libgfortran/system_clock.o
> 0000000000000000 T _gfortran_system_clock_4
> 0000000000000000 T _gfortran_system_clock_8
>                  U clock_gettime
>
> program foo
>    implicit none
>    integer(8) count1, count2, rate, cmax
>    call system_clock(count1, rate, cmax)
>    print '(A,I0)', 'count = ', count1
>    print '(A,I0)', ' rate = ', rate
>    print '(A,I0)', ' cmax = ', cmax
>    call system("sleep 1")           ! sleep for 1 second + plus system
>    call system_clock(count2)
>    print '(A,I0)',   ' count = ', count2
>    print '(A,F8.4)', 'elaspe = ', real(count2 - count1, 8) / rate
> end program foo
>
> % gfcx -o z d.f90 && ./z
> count = 2588092417916290
>  rate = 1000000000
>  cmax = 9223372036854775807
>  count = 2588093482115892
> elaspe = 1.0642

I need this for C++, so that std::chrono::now() takes 200ns instead of
2000ns (yes, it matters there).  On RHEL/Cent 6, the included version
of glibc puts the faster VDSO method of getting time into librt, so
you need to explicitly link with -lrt to use it.  In later versions of
glibc, it's part of libc, and so this isn't required.  Jon told me I
could do away with that now, but I haven't tested it yet.  I hope he's
right, since I think you've proven that that might be part of my
overall problem.

Anyway, I just built 8.2 with the options listed above.  I'm now going
to add back in just the --enable-libstdcxx-time=rt option to see if
things break again.  If so, we've got a big clue to our culprit.



More information about the Gcc-help mailing list