public inbox for java-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jack Howarth <howarth@bromo.med.uc.edu>
To: Mike Stump <mikestump@comcast.net>
Cc: gcc-patches List <gcc-patches@gcc.gnu.org>,
	       Iain Sandoe <iains@gcc.gnu.org>,
	       Java Patches <java-patches@gcc.gnu.org>
Subject: Re: [PATCH]: Pass -no_pie on SYSTEMSPEC for darwin11
Date: Fri, 17 Jun 2011 19:24:00 -0000	[thread overview]
Message-ID: <20110617192406.GA27136@bromo.med.uc.edu> (raw)
In-Reply-To: <197F8B25-DAB9-467F-A916-089A6EA5FC10@comcast.net>

On Fri, Jun 17, 2011 at 10:43:07AM -0700, Mike Stump wrote:
> On Jun 16, 2011, at 7:21 PM, Jack Howarth wrote:
> >  The gcj compiler needs to pass -no_pie for linkage on darwin11 due to the new -pie
> > default of the linker. The attached patch accomplishes this by passing -no_pie on SYSTEMSPEC
> > for *-*-darwin[12]*. Since Darwin10 supports -no_pie in its linker, I included it in the
> > triplet match to simplify the syntax. Bootstrap and tested on x86_64-apple-darwin11.
> > Okay for gcc trunk?
> 
> The darwin aspects of this seem right to me.  I'm less familiar with the SYSTEMSPEC bit in libjava, someone want to give a quick comment on if this is the right knob to twist?

Mike,
   Since SYSTEMSPEC in configure.ac is setting system specific options for libgcj.spec.in, it seemed
the most rational place to append -no_pie to (and we already had a darwin entry in the case statement).
FYI, I also tried a different approach of not appending -no_pie SYSTEMSPEC on darwin but instead using...

Index: config/mh-darwin
===================================================================
--- config/mh-darwin	(revision 175150)
+++ config/mh-darwin	(working copy)
@@ -5,3 +5,4 @@ BOOT_CFLAGS += -mdynamic-no-pic
 
 # Ensure we don't try and use -pie, as it is incompatible with pch.
 BOOT_LDFLAGS += `case ${host} in *-*-darwin[1][1-9]*) echo -Wl,-no_pie ;; esac;`
+LDFLAGS_FOR_TARGET += `case ${host} in *-*-darwin[1][1-9]*) echo -Wl,-no_pie ;; esac;`

while this produced an apparently functional gcj (ecj1), the libjava testsuite showed two additional
regressions compared to my original SYSTEMSPEC approach to the problem...

cat <<'EOF' |
Native configuration is x86_64-apple-darwin11.0.0

		=== libjava tests ===


Running target unix/-m32
FAIL: TestClosureGC run               <================= new failure
FAIL: PR16923.c compilation
FAIL: TestLeak output - source compiled test  <================= new failure

		=== libjava Summary for unix/-m32 ===

# of expected passes		2570
# of unexpected failures	3
# of untested testcases		1

Running target unix/-m64
FAIL: TestClosureGC run     <==================== new failure
FAIL: PR16923 run
FAIL: Throw_2 execution - source compiled test
FAIL: Throw_2 -findirect-dispatch execution - source compiled test
FAIL: Throw_2 -O3 execution - source compiled test
FAIL: Throw_2 -O3 -findirect-dispatch execution - source compiled test
FAIL: TestLeak output - source compiled test   <======================= new failure

		=== libjava Summary for unix/-m64 ===

# of expected passes		2563
# of unexpected failures	7
# of untested testcases		6

		=== libjava Summary ===

# of expected passes		5133
# of unexpected failures	10
# of untested testcases		7

Compiler version: gcc libjava 
Platform: x86_64-apple-darwin11.0.0
configure flags: --prefix=/sw --prefix=/sw/lib/gcc4.7 --mandir=/sw/share/man --infodir=/sw/lib/gcc4.7/info --enable-languages=c,c++,fortran,objc,obj-c++,java --with-gmp=/sw --with-libiconv-prefix=/sw --with-ppl=/sw --with-cloog=/sw --with-mpc=/sw --with-system-zlib --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib --program-suffix=-fsf-4.7 --enable-checking=yes --enable-cloog-backend=isl

compared to the results for only passing -no_pie on libgcj.spec...

http://gcc.gnu.org/ml/gcc-testresults/2011-06/msg01853.html


> 
> Roughly, there are unresolved issues with position independent code with the garbage collector (or was it a problem with some unknown bit in the compiler), and this just turns off a new OS default for java to work around the issue.  I hope that's an at least half way accurate description.  We're aiming to have the default for C be -fpie, but for java, no pie.  For the C compiler, we must build the compiler without -pie in order for PCH to work.  It is reasonable to turn off pie in the java compiler as well.
> 
> Jack, do we have a PR number for this?  If so, please include in the changelog in the usual spot.

I plan on opening a PR shortly, but I was hoping to be able to reproduce the same failures under linux
using a bootstrap with the compiler defaulted to -fPIC code generation and the inverse change applied
to linux of...

BOOT_LDFLAGS += -pie

to see how its boehm-gc and libjava testsuite results were impacted.
                        Jack

> 
> > 2011-06-16  Jack Howarth <howarth@bromo.med.uc.edu>
> > 
> > 	* libjava/configure.ac (SYSTEMSPEC): Pass -no_pie for darwin11.
> > 	* libjava/configure: Regenerate.
> > 
> > 
> > Index: libjava/configure.ac
> > ===================================================================
> > --- libjava/configure.ac	(revision 175131)
> > +++ libjava/configure.ac	(working copy)
> > @@ -898,9 +898,12 @@ case "${host}" in
> >         SYSTEMSPEC="-lunicows $SYSTEMSPEC"
> >       fi
> >     ;;
> > -    *-*-darwin[[912]]*)
> > +    *-*-darwin9*)
> >       SYSTEMSPEC="%{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
> >     ;;
> > +    *-*-darwin[[12]]*)
> > +      SYSTEMSPEC="-no_pie %{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
> > +    ;;
> >     *)
> >       SYSTEMSPEC=
> >     ;;

  reply	other threads:[~2011-06-17 19:24 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20110617022132.GA18745@bromo.med.uc.edu>
2011-06-17 17:43 ` Mike Stump
2011-06-17 19:24   ` Jack Howarth [this message]
2011-06-18  7:51     ` IainS
2011-06-17  2:23 Jack Howarth
2011-06-17  8:29 ` Andrew Haley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110617192406.GA27136@bromo.med.uc.edu \
    --to=howarth@bromo.med.uc.edu \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=iains@gcc.gnu.org \
    --cc=java-patches@gcc.gnu.org \
    --cc=mikestump@comcast.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).