Re: gcj segfaults on i686/x86_64-apple-darwin*

Andreas Tobler <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
Andrew Haley wrote:
> Jack Howarth wrote:
>> On Mon, Nov 09, 2009 at 02:33:11PM +0000, Andrew Haley wrote:
>>> Jack Howarth wrote:
>>>
>>>>    Shouldn't the libjava testsuite contain some rudimentary tests using gcj
>>>> to make sure it is functional?
>>> Sure.
>>>
>>>> The recent testsuite results don't suggest
>>>> major problems with java on intel darwin...
>>>>
>>>> http://gcc.gnu.org/ml/gcc-testresults/2009-11/msg00666.html
>>>> http://gcc.gnu.org/ml/gcc-testresults/2009-10/msg01308.html
>>> This means that, whatever the cause of the bug, it wasn't present
>>> when these tests were run.
>>>
>>> You can easily verify that yourself by running 'make check-target-libjava'.
> 
>>    Actually the nature of the testsuite will mask this failure on intel darwin.
>> The gcj compiler doesn't segfault when presented with a *.class file to compile
>> into an executable. Only when presented a *.java file will the gcj compiler abort.
> 
> In that case, gcj isn't aborting.  gcj only ever compiles .class -> .o, where
> .java -> .class compilation is performed by ecj1.

That is what I told you, Andrew, on #irc.

>> I suspect if the libjava harness was fixed to compile the java files if a ecj1 was
>> built that all of the libjava.lang tests would suddenly fail on darwin.
> 
> Andreas Tobler Seems to think it's to do with stack execution, but
> I can't understand how that can be: gcj doesn't generate executable
> code on the stack.

Gcj not, but what is with ecj1? The suggestion I posted to the PR 
affects the ecjx linking.

The patchlet I posted in the 41991 PR does allow me to compile a java 
file into a class file and execute it with gij. Also the same for java 
to binary compile. This was not the case before. I went back to Jan 31 
09 and I always got an Abort with ecj1.

Note beside, I always installed the built gcc and tested the installed 
binaries.

[deuterium:~] andreast% gcj -C hello.java
[deuterium:~] andreast% gij hello
Hello World
Hello Andreas

[deuterium:~] andreast% gcj --main=testme -O testme.java
[deuterium:~] andreast% ./a.out
Hello

[deuterium:~] andreast% gcj -v
Using built-in specs.
Reading specs from 
/Volumes/development/gcc/head/testbin-x86_64/lib/gcc/x86_64-apple-darwin9/4.5.0/../../../libgcj.spec
  rename spec startfile to startfileorig
rename spec lib to liborig
COLLECT_GCC=gcj
COLLECT_LTO_WRAPPER=/Volumes/development/gcc/head/testbin-x86_64/libexec/gcc/x86_64-apple-darwin9/4.5.0/lto-wrapper
Target: x86_64-apple-darwin9
Configured with: /Volumes/development/gcc/head/gcc/configure 
--prefix=/Volumes/development/gcc/head/testbin-x86_64 
--build=x86_64-apple-darwin9 --target=x86_64-apple-darwin9 
--disable-static --with-gmp=/usr/local/x86_64 
--with-mpfr=/usr/local/x86_64 --enable-java-awt=xlib 
--enable-languages=c,c++,java
Thread model: posix
gcc version 4.5.0 20091111 (experimental) [trunk revision 153973] (GCC)


I'll run some more tests.

Andreas
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.