harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Hindess <mark.hind...@googlemail.com>
Subject Re: [classlib][build] difference between classlib 'debug' and 'release' build modes
Date Tue, 26 Jun 2007 19:24:01 GMT

On 26 June 2007 at 21:57, "Alexei Zakharov" <alexei.zakharov@gmail.com> wrote:
> > Investigating...
> 
> Done.
> 
> Tim Ellison wrote:
> >> The fdlibm code we depend upon is already tweaked to use "-O0", so for
> >> now I'd just try the same override for the LUNI natives to see if that
> >> is where the problem lies.
> 
> The reason of these failures lies in fdlibm indeed. Yes, it was
> tweaked to use "-O0" but there was a typo in this tweak and it does
> not affect the compilation. As a result fdlibm was compiled with "-O1"
> as all other natives. I has created HARMONY-4287 and attached a patch
> for this issue. The patch itself is trivial:
> 
> <--- H4287.patch
> 
> Index: src/main/native/fdlibm/unix/makefile
> ===================================================================
> --- src/main/native/fdlibm/unix/makefile	(revision 550787)
> +++ src/main/native/fdlibm/unix/makefile	(working copy)
> @@ -45,7 +45,7 @@
>  	$(FDLIBM_DIST)w_scalb.o $(FDLIBM_DIST)w_sinh.o $(FDLIBM_DIST)w_sqrt.o
> 
>  # OPTS is overriden
> -OPTS := -O0 -ffloat-store -fpic
> +OPT = -O0 -ffloat-store -fpic
>  DEFINES += -D_IEEE_LIBM
> 
>  LIBNAME = $(LIBPATH)libhyfdlibm.a
> 
>  <---
> 
> So I suggest to commit it and include into our M2 build. Waiting for
> other committer's vote...

+1

-Mark.

> Thanks,
> Alexei
> 
> 2007/6/26, Alexei Zakharov <alexei.zakharov@gmail.com>:
> > Oops, please discard my previous message. The real matrix is (as
> > Vladimir has said):
> > Classlib (debug) + DRLVM (any) = StrictMathTest passes
> > Classlib (release) + DRLVM (any) = StrictMathTest fails
> > Investigating...
> >
> > 2007/6/26, Alexei Zakharov <alexei.zakharov@gmail.com>:
> > > I also see these failures of StrictMathTest (as well as MathTest) on
> > > Linux 32bit. And it can be only reproduced if tests are run on the
> > > release build of DRLVM. I.e.
> > >
> > > Classlib(Debug) + DRLVM(Debug) = tests pass
> > > Classlib(Release) + DRLVM(Debug) = tests pass
> > > Classlib(Release) + J9VM = tests pass
> > > Classlib(Release) + DRLVM(Release) = tests fail
> > >
> > > So this looks like a DRLVM issue.
> > >
> > > Regards,
> > >
> > > 2007/6/26, Tim Ellison <t.p.ellison@gmail.com>:
> > > > Vladimir Ivanov wrote:
> > > > > Fwd it from the '[general][M2] Code frozen' thread
> > > > > ===========================
> > > > > OK, looking through the federated build I found the difference betwee
> n
> > > > > my 'DRLVM' build and federated one. In the first case 'classlib'
was
> > > > > built in the 'debug' mode.
> > > > > When classlib was rebuilt with -Dhy.cfg=release option the
> > > > > StrictMathTest failed on this build too.
> > > > > So we should look at the differences between classlib 'debug' and
> > > > > 'release' build modes to find the reason of these test failure.
> > > >
> > > > The most pertinent difference is that the natives are compiled with "-g
> "
> > > > in debug mode, and "-O1" in release mode.
> > > >
> > > > There are a bunch of natives in StrictMath.  Could you try reducing the
> > > > optimization level of the native code compile for them separately and
> > > > see if that fixes the problem?
> > > >
> > > > The fdlibm code we depend upon is already tweaked to use "-O0", so for
> > > > now I'd just try the same override for the LUNI natives to see if that
> > > > is where the problem lies.
> > > >
> > > > Something like this (untested), below.
> > > >
> > > > Regards,
> > > > Tim
> > > >
> > > >
> > > > Index: src/main/native/luni/unix/makefile
> > > > ===================================================================
> > > > --- src/main/native/luni/unix/makefile  (revision 550526)
> > > > +++ src/main/native/luni/unix/makefile  (working copy)
> > > > @@ -22,6 +22,9 @@
> > > >  # CFLAGS += -fpic -Wall -Werror
> > > >  CFLAGS += -fpic -Wall
> > > >
> > > > +# Override OPTS to remove optimizations
> > > > +OPTS := -O0
> > > > +
> > > >  BUILDFILES = \
> > > >         $(SHAREDSUB)luni_copyright.o $(SHAREDSUB)file.o procimpl.o \
> > > >         $(SHAREDSUB)oos.o $(SHAREDSUB)nethelp.o \
> 



Mime
View raw message