Created attachment 26043 [details] dejagnu log Target is i686-pc-mingw32 Host is i686-pc-mingw32 Build is i686-pc-cygwin === libjava tests === Schedule of variations: unix Running target unix Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target. Using /usr/share/dejagnu/config/unix.exp as generic interface file for target. Using /tmp/gcc/libjava/testsuite/config/default.exp as tool-and-target-specific interface file. WARNING: Assuming target board is the local machine (which is probably wrong). You may need to set your DEJAGNU environment variable. Running /tmp/gcc/libjava/testsuite/libjava.cni/cni.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jar/jar.exp ... FAIL: TestClosureGC run FAIL: libjava.jar/TestClosureGC.jar execution - gij test FAIL: simple output FAIL: libjava.jar/simple.jar execution - gij test Running /tmp/gcc/libjava/testsuite/libjava.jni/jni.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jvmti/jvmti-interp.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jvmti/jvmti.exp ... Running /tmp/gcc/libjava/testsuite/libjava.lang/lang.exp ... FAIL: ArrayStore execution - source compiled test FAIL: ArrayStore -findirect-dispatch execution - source compiled test FAIL: ArrayStore -O3 execution - source compiled test FAIL: ArrayStore -O3 -findirect-dispatch execution - source compiled test FAIL: ArrayStore2 execution - source compiled test FAIL: ArrayStore2 -findirect-dispatch execution - source compiled test FAIL: ArrayStore2 -O3 execution - source compiled test FAIL: ArrayStore2 -O3 -findirect-dispatch execution - source compiled test FAIL: Divide_1 output - source compiled test FAIL: Divide_1 -findirect-dispatch output - source compiled test FAIL: Divide_1 -O3 output - source compiled test FAIL: Divide_1 -O3 -findirect-dispatch output - source compiled test FAIL: ExtraClassLoader execution - source compiled test FAIL: ExtraClassLoader -findirect-dispatch execution - source compiled test FAIL: ExtraClassLoader -O3 execution - source compiled test FAIL: ExtraClassLoader -O3 -findirect-dispatch execution - source compiled test FAIL: InvokeInterface output - source compiled test FAIL: InvokeInterface -findirect-dispatch output - source compiled test FAIL: InvokeInterface -O3 output - source compiled test FAIL: InvokeInterface -O3 -findirect-dispatch output - source compiled test FAIL: PR218 output - source compiled test FAIL: PR218 -findirect-dispatch output - source compiled test FAIL: PR218 -O3 output - source compiled test FAIL: PR218 -O3 -findirect-dispatch output - source compiled test FAIL: Process_6 output - source compiled test FAIL: Process_6 -findirect-dispatch output - source compiled test FAIL: Process_6 -O3 output - source compiled test FAIL: Process_6 -O3 -findirect-dispatch output - source compiled test FAIL: ProxyTest execution - source compiled test FAIL: ProxyTest -findirect-dispatch execution - source compiled test FAIL: ProxyTest -O3 execution - source compiled test FAIL: ProxyTest -O3 -findirect-dispatch execution - source compiled test FAIL: Serialization execution - source compiled test FAIL: Serialization -findirect-dispatch execution - source compiled test FAIL: Serialization -O3 execution - source compiled test FAIL: Serialization -O3 -findirect-dispatch execution - source compiled test FAIL: StackTrace2 execution - source compiled test FAIL: StackTrace2 -findirect-dispatch execution - source compiled test FAIL: StackTrace2 -O3 execution - source compiled test FAIL: StackTrace2 -O3 -findirect-dispatch execution - source compiled test FAIL: StringBuffer_1 execution - source compiled test FAIL: StringBuffer_1 -findirect-dispatch execution - source compiled test FAIL: StringBuffer_1 -O3 execution - source compiled test FAIL: StringBuffer_1 -O3 -findirect-dispatch execution - source compiled test FAIL: StringBuffer_overflow output - source compiled test FAIL: StringBuffer_overflow -findirect-dispatch output - source compiled test FAIL: StringBuffer_overflow -O3 output - source compiled test FAIL: StringBuffer_overflow -O3 -findirect-dispatch output - source compiled test FAIL: String_overflow output - source compiled test FAIL: String_overflow -findirect-dispatch output - source compiled test FAIL: String_overflow -O3 output - source compiled test FAIL: String_overflow -O3 -findirect-dispatch output - source compiled test FAIL: TestProxy execution - source compiled test FAIL: TestProxy -findirect-dispatch execution - source compiled test FAIL: TestProxy -O3 execution - source compiled test FAIL: TestProxy -O3 -findirect-dispatch execution - source compiled test FAIL: Thread_Sleep -findirect-dispatch output - source compiled test FAIL: Thread_Sleep -O3 -findirect-dispatch output - source compiled test FAIL: Thread_Sleep_2 output - source compiled test FAIL: Thread_Sleep_2 -findirect-dispatch output - source compiled test FAIL: Thread_Sleep_2 -O3 output - source compiled test FAIL: Thread_Sleep_2 -O3 -findirect-dispatch output - source compiled test 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: Throw_3 execution - source compiled test FAIL: Throw_3 -findirect-dispatch execution - source compiled test FAIL: Throw_3 -O3 execution - source compiled test FAIL: Throw_3 -O3 -findirect-dispatch execution - source compiled test FAIL: instinit2 execution - source compiled test FAIL: instinit2 -findirect-dispatch execution - source compiled test FAIL: instinit2 -O3 execution - source compiled test FAIL: instinit2 -O3 -findirect-dispatch execution - source compiled test FAIL: invokethrow execution - source compiled test FAIL: invokethrow -findirect-dispatch execution - source compiled test FAIL: invokethrow -O3 execution - source compiled test FAIL: invokethrow -O3 -findirect-dispatch execution - source compiled test FAIL: md5test execution - source compiled test FAIL: md5test -findirect-dispatch execution - source compiled test FAIL: md5test -O3 execution - source compiled test FAIL: md5test -O3 -findirect-dispatch execution - source compiled test FAIL: pr184 output - source compiled test FAIL: pr184 -findirect-dispatch output - source compiled test FAIL: pr184 -O3 output - source compiled test FAIL: pr184 -O3 -findirect-dispatch output - source compiled test FAIL: pr21785 execution - source compiled test FAIL: pr21785 -findirect-dispatch execution - source compiled test FAIL: pr21785 -O3 execution - source compiled test FAIL: pr21785 -O3 -findirect-dispatch execution - source compiled test FAIL: pr26990 execution - source compiled test FAIL: pr26990 -findirect-dispatch execution - source compiled test FAIL: pr26990 -O3 execution - source compiled test FAIL: pr26990 -O3 -findirect-dispatch execution - source compiled test FAIL: shatest execution - source compiled test FAIL: shatest -findirect-dispatch execution - source compiled test FAIL: shatest -O3 execution - source compiled test FAIL: shatest -O3 -findirect-dispatch execution - source compiled test Running /tmp/gcc/libjava/testsuite/libjava.loader/loader.exp ... FAIL: TestEarlyGC execution - source compiled test FAIL: TestMultiple execution - source compiled test FAIL: TestParent execution - source compiled test Running /tmp/gcc/libjava/testsuite/libjava.mauve/mauve.exp ... sh: /configure: No such file or directory FAIL: Mauve configure Running /tmp/gcc/libjava/testsuite/libjava.special/special.exp ... Running /tmp/gcc/libjava/testsuite/libjava.verify/verify.exp ... === libjava Summary === # of expected passes 2235 # of unexpected failures 106 # of untested testcases 70 Makefile:385: recipe for target `check-DEJAGNU' failed make[1]: *** [check-DEJAGNU] Error 1 make[1]: Leaving directory `/tmp/gcc/i686-pc-mingw32/libjava/testsuite' Makefile:409: recipe for target `check-am' failed make: *** [check-am] Error 2
stacktrace Starting program: /tmp/gcc/i686-pc-mingw32/libjava/testsuite/.libs/TestClosureGC [New Thread 3600.0xf5c] [New Thread 3600.0x1338] Program received signal SIGSEGV, Segmentation fault. 0x00401462 in StringBuffer_overflow.Fail(java.lang.String, java.lang.Object)void () at StringBuffer_overflow.java:122 122 StringBuffer_overflow.java: No such file or directory. in StringBuffer_overflow.java (gdb) bt #0 0x00401462 in StringBuffer_overflow.Fail(java.lang.String, java.lang.Object)void () at StringBuffer_overflow.java:122 warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.) warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.) warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.) #1 0x00000001 in ?? () warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.) #2 0x0022fb48 in ?? () #3 0x69ce87f7 in ffi_call_win32 () at ../.././libffi/src/x86/win32.S:424 #4 0x69ce85a5 in ffi_call (cif=0x22fc58, fn=0x40142c <StringBuffer_overflow.Fail(java.lang.String, java.lang.Object)void+12>, rvalue=0x22fc48, avalue=0x22fbb0) at ../.././libffi/src/x86/ffi.c:319 #5 0x696d1cb5 in _Jv_CallAnyMethodA (obj=0xa97f08, obj@entry=0x0, return_type=return_type@entry=0x403240, meth=meth@entry=0x4031c0, is_constructor=is_constructor@entry=0x1, is_virtual_call=0x0, parameter_types=parameter_types@entry=0xa5fde0, args=args@entry=0x22fcb8, result=result@entry=0x22fd08, is_jni_call=is_jni_call@entry=0x0, iface=iface@entry=0x0) at ../.././libjava/java/lang/reflect/natMethod.cc:535 #6 0x696d20ee in _Jv_CallAnyMethodA (obj=0x0, return_type=0x403240, meth=0x4031c0, is_constructor=0x1, parameter_types=0xa5fde0, args=0xa5fbe0, iface=0x0) at ../.././libjava/java/lang/reflect/natMethod.cc:670 #7 0x696d0759 in java::lang::reflect::Constructor::newInstance ( this=0xa96ba0, args=0xa5fbe0) at ../.././libjava/java/lang/reflect/natConstructor.cc:92 #8 0x00401822 in StringBuffer_overflow.appendbasic()void () ---Type <return> to continue, or q <return> to quit--- at StringBuffer_overflow.java:52 #9 0x00a5fbe8 in ?? () #10 0x696bf9d2 in gnu::java::lang::MainThread::call_main (this=0x246470) at ../.././libjava/gnu/java/lang/natMainThread.cc:54 #11 0x696fda26 in gnu.java.lang.MainThread.run()void (this=@bfdf60) at /tmp/gcc/libjava/gnu/java/lang/MainThread.java:106 #12 0x696ce8b2 in _Jv_ThreadRun (thread=0xbfdf60) at ../.././libjava/java/lang/natThread.cc:335 #13 0x69683fb0 in _Jv_RunMain (vm_args=vm_args@entry=0x0, klass=klass@entry=0x4035e0, name=name@entry=0x0, argc=argc@entry=0x1, argv=argv@entry=0x3d8660, is_jar=is_jar@entry=0x0) at ../.././libjava/prims.cc:1790 #14 0x696841a6 in _Jv_RunMain (klass=klass@entry=0x4035e0, name=name@entry=0x0, argc=argc@entry=0x1, argv=argv@entry=0x3d8660, is_jar=is_jar@entry=0x0) at ../.././libjava/prims.cc:1815 #15 0x6968420f in JvRunMain (klass=0x4035e0, argc=0x1, argv=0x3d8660) at ../.././libjava/prims.cc:1821 #16 0x00401402 in StringBuffer_overflow.<clinit>()void () at StringBuffer_overflow.java:109 #17 0x004010bb in __mingw_CRTStartup () at /usr/src/mingw-runtime/mingw-runtime-3.20-1/src/mingwrt-3.20-mingw32/crt1.c:244 Backtrace stopped: frame did not save the PC Starting program: /tmp/gcc/i686-pc-mingw32/libjava/testsuite/.libs/ExtraClassLoader [New Thread 1824.0x1310] [New Thread 1824.0x12d8] Program received signal SIGSEGV, Segmentation fault. java::lang::Object::getClass (this=0x1) at ../.././libjava/java/lang/natObject.cc:58 58 return (*dt)->clas; (gdb) bt #0 java::lang::Object::getClass (this=0x1) at ../.././libjava/java/lang/natObject.cc:58 #1 0x69ce87f7 in ffi_call_win32 () at ../.././libffi/src/x86/win32.S:424 #2 0x69ce87a5 in ffi_raw_call (cif=0xc01a0c, fn=0x696ca980 <java::lang::Object::getClass()>, rvalue=0x22fc18, fake_avalue=0x22fa44) at ../.././libffi/src/x86/ffi.c:647 #3 0x6969c7a4 in _Jv_InterpMethod::run (retp=0x22fd80, args=0x22fda0, meth=0xac9e10) at ../.././libjava/interpret-run.cc:611 #4 0x69ce89a5 in ffi_closure_raw_SYSV () at ../.././libffi/src/x86/win32.S:695 #5 0x696c7f36 in java::lang::Class::newInstance (this=0xc0bda8) at ../.././libjava/java/lang/natClass.cc:664 #6 0x004014e8 in ExtraClassLoader.main(java.lang.String[])void () at ExtraClassLoader.java:9 #7 0x696bf9d2 in gnu::java::lang::MainThread::call_main (this=0xc0ef60) at ../.././libjava/gnu/java/lang/natMainThread.cc:54 #8 0x696fda26 in gnu.java.lang.MainThread.run()void (this=@c0ef60) at /tmp/gcc/libjava/gnu/java/lang/MainThread.java:106 #9 0x696ce8b2 in _Jv_ThreadRun (thread=0xc0ef60) at ../.././libjava/java/lang/natThread.cc:335 #10 0x69683fb0 in _Jv_RunMain (vm_args=vm_args@entry=0x0, klass=klass@entry=0x0, name=name@entry=0x406064 "ExtraClassLoader", argc=argc@entry=0x1, argv=argv@entry=0x3d8660, is_jar=is_jar@entry=0x0) at ../.././libjava/prims.cc:1790 ---Type <return> to continue, or q <return> to quit---q Quit Starting program: /tmp/gcc/i686-pc-mingw32/libjava/testsuite/.libs/ProxyTest [New Thread 2688.0x16a4] [New Thread 2688.0x9e4] Program received signal SIGSEGV, Segmentation fault. java.lang.reflect.Proxy.Proxy(java.lang.reflect.InvocationHandler) (this=@1, handler=@a973f0) at /tmp/gcc/libjava/classpath/java/lang/reflect/Proxy.java:210 210 h = handler; (gdb) bt #0 java.lang.reflect.Proxy.Proxy(java.lang.reflect.InvocationHandler) ( this=@1, handler=@a973f0) at /tmp/gcc/libjava/classpath/java/lang/reflect/Proxy.java:210 #1 0x69ce87f7 in ffi_call_win32 () at ../.././libffi/src/x86/win32.S:424 #2 0x69ce85a5 in ffi_call (cif=0x22fc98, fn=0x69a1b120 <java.lang.reflect.Proxy.Proxy(java.lang.reflect.InvocationHandler)>, rvalue=0x22fc88, avalue=0x22fbf0) at ../.././libffi/src/x86/ffi.c:319 #3 0x696d1cb5 in _Jv_CallAnyMethodA (obj=0xa973f0, obj@entry=0x0, return_type=return_type@entry=0xbf5a18, meth=meth@entry=0xa96c00, is_constructor=is_constructor@entry=0x1, is_virtual_call=0x0, parameter_types=parameter_types@entry=0xa5faa0, args=args@entry=0x22fcf8, result=result@entry=0x22fd48, is_jni_call=is_jni_call@entry=0x0, iface=iface@entry=0x0) at ../.././libjava/java/lang/reflect/natMethod.cc:535 #4 0x696d20ee in _Jv_CallAnyMethodA (obj=0x0, return_type=0xbf5a18, meth=0xa96c00, is_constructor=0x1, parameter_types=0xa5faa0, args=0xa5fab0, iface=0x0) at ../.././libjava/java/lang/reflect/natMethod.cc:670 #5 0x696d0759 in java::lang::reflect::Constructor::newInstance ( this=0xfa0fa8, args=0xa5fab0) at ../.././libjava/java/lang/reflect/natConstructor.cc:92 #6 0x69a1db51 in java.lang.reflect.Proxy.newProxyInstance(java.lang.ClassLoader, java.lang.Class[], java.lang.reflect.InvocationHandler)java.lang.Object ( ---Type <return> to continue, or q <return> to quit---q loadeQuit (gdb) Starting program: /tmp/gcc/i686-pc-mingw32/libjava/testsuite/.libs/Serialization [New Thread 3328.0x630] [New Thread 3328.0x104c] Program received signal SIGSEGV, Segmentation fault. 0x69a9eb5c in java.util.LinkedList.writeObject(java.io.ObjectOutputStream)void (this=@1, s=@e33ba0) at /tmp/gcc/libjava/classpath/java/util/LinkedList.java:789 789 s.writeInt(size); (gdb) bt #0 0x69a9eb5c in java.util.LinkedList.writeObject(java.io.ObjectOutputStream)void (this=@1, s=@e33ba0) at /tmp/gcc/libjava/classpath/java/util/LinkedList.java:789 #1 0x69ce87f7 in ffi_call_win32 () at ../.././libffi/src/x86/win32.S:424 #2 0x69ce85a5 in ffi_call (cif=0x22fbf8, fn=0x69a9eb40 <java.util.LinkedList.writeObject(java.io.ObjectOutputStream)void>, rvalue=0x22fbe8, avalue=0x22fb50) at ../.././libffi/src/x86/ffi.c:319 #3 0x696d1cb5 in _Jv_CallAnyMethodA (obj=obj@entry=0xe33ba0, return_type=return_type@entry=0x6a3ab050, meth=meth@entry=0x69ecee1c, is_constructor=is_constructor@entry=0x0, is_virtual_call=0x0, parameter_types=parameter_types@entry=0xa5fad0, args=args@entry=0x22fc58, result=result@entry=0x22fca8, is_jni_call=is_jni_call@entry=0x0, iface=iface@entry=0x0) at ../.././libjava/java/lang/reflect/natMethod.cc:535 #4 0x696d20ee in _Jv_CallAnyMethodA (obj=obj@entry=0xe33ba0, return_type=0x6a3ab050, meth=meth@entry=0x69ecee1c, is_constructor=is_constructor@entry=0x0, parameter_types=0xa5fad0, args=args@entry=0xa5fa90, iface=0x0) at ../.././libjava/java/lang/reflect/natMethod.cc:670 #5 0x696d2553 in java::lang::reflect::Method::invoke (this=0xe3ae60, obj=0xe33ba0, args=0xa5fa90) at ../.././libjava/java/lang/reflect/natMethod.cc:205 #6 0x699e48ed in java.io.ObjectOutputStream.callWriteMethod(java.lang.Object, j---Type <return> to continue, or q <return> to quit---q Quit Starting program: /tmp/gcc/i686-pc-mingw32/libjava/testsuite/.libs/TestProxy [New Thread 6016.0x1160] [New Thread 6016.0xffc] Program received signal SIGSEGV, Segmentation fault. java.lang.reflect.Proxy.Proxy(java.lang.reflect.InvocationHandler) (this=@1, handler=@a97438) at /tmp/gcc/libjava/classpath/java/lang/reflect/Proxy.java:210 210 h = handler; (gdb) bt #0 java.lang.reflect.Proxy.Proxy(java.lang.reflect.InvocationHandler) ( this=@1, handler=@a97438) at /tmp/gcc/libjava/classpath/java/lang/reflect/Proxy.java:210 #1 0x69ce87f7 in ffi_call_win32 () at ../.././libffi/src/x86/win32.S:424 #2 0x69ce85a5 in ffi_call (cif=0x22fc88, fn=0x69a1b120 <java.lang.reflect.Proxy.Proxy(java.lang.reflect.InvocationHandler)>, rvalue=0x22fc78, avalue=0x22fbe0) at ../.././libffi/src/x86/ffi.c:319 #3 0x696d1cb5 in _Jv_CallAnyMethodA (obj=0xa97438, obj@entry=0x0, return_type=return_type@entry=0xbfab48, meth=meth@entry=0xa96c00, is_constructor=is_constructor@entry=0x1, is_virtual_call=0x0, parameter_types=parameter_types@entry=0xa5fa40, args=args@entry=0x22fce8, result=result@entry=0x22fd38, is_jni_call=is_jni_call@entry=0x0, iface=iface@entry=0x0) at ../.././libjava/java/lang/reflect/natMethod.cc:535 #4 0x696d20ee in _Jv_CallAnyMethodA (obj=0x0, return_type=0xbfab48, meth=0xa96c00, is_constructor=0x1, parameter_types=0xa5fa40, args=0xa5fa50, iface=0x0) at ../.././libjava/java/lang/reflect/natMethod.cc:670 #5 0x696d0759 in java::lang::reflect::Constructor::newInstance ( this=0xc00270, args=0xa5fa50) at ../.././libjava/java/lang/reflect/natConstructor.cc:92 #6 0x69a1db51 in java.lang.reflect.Proxy.newProxyInstance(java.lang.ClassLoader, java.lang.Class[], java.lang.reflect.InvocationHandler)java.lang.Object ( ---Type <return> to continue, or q <return> to quit---q loadeQuit Starting program: /tmp/gcc/i686-pc-mingw32/libjava/testsuite/.libs/Throw_2 [New Thread 1440.0x648] [New Thread 1440.0x9fc] 1 Program received signal SIGSEGV, Segmentation fault. java.lang.String.length()int (this=null) at /tmp/gcc/libjava/java/lang/String.java:451 451 return count; (gdb) bt #0 java.lang.String.length()int (this=null) at /tmp/gcc/libjava/java/lang/String.java:451 #1 0x696ca001 in java::lang::VMDouble::parseDouble (str=0x0) at ../.././libjava/java/lang/natVMDouble.cc:165 #2 0x699f565d in java.lang.Double.parseDouble(java.lang.String)double ( str=null) at /tmp/gcc/libjava/classpath/java/lang/Double.java:348 #3 0x004014a2 in StringBuffer_overflow.Fail(java.lang.String, java.lang.Object)void () at StringBuffer_overflow.java:124 #4 0x69a17ec2 in java.lang.reflect.Modifier.isPublic(int)boolean ( mod=0xbf0d20) at /tmp/gcc/libjava/java/lang/reflect/Modifier.java:258 #5 0x696fda26 in gnu.java.lang.MainThread.run()void (this=@a54b80) at /tmp/gcc/libjava/gnu/java/lang/MainThread.java:106 #6 0x696ce8b2 in _Jv_ThreadRun (thread=0xbfdf60) at ../.././libjava/java/lang/natThread.cc:335 #7 0x69683fb0 in _Jv_RunMain (vm_args=vm_args@entry=0x0, klass=klass@entry= 0x0, name=name@entry=0x404064 "Throw_2\000", argc=argc@entry=0x1, argv=argv@entry=0x3d8658, is_jar=is_jar@entry=0x0) at ../.././libjava/prims.cc:1790 #8 0x696841a6 in _Jv_RunMain (klass=klass@entry=0x0, name=name@entry=0x404064 "Throw_2\000", argc=argc@entry=0x1, argv=argv@entry=0x3d8658, is_jar=is_jar@entry=0x0) at ../.././libjava/prims.cc:1815 #9 0x696841df in JvRunMainName (name=0x404064 "Throw_2\000", argc=0x1, ---Type <return> to continue, or q <return> to quit--- argv=0x3d8658) at ../.././libjava/prims.cc:1827 #10 0x00402032 in __mingwthr_run_key_dtors () at /usr/src/mingw-runtime/mingw-runtime-3.20-1/src/mingwrt-3.20-mingw32/tlsthrd.c:112 #11 0x004010bb in __mingw_CRTStartup () at /usr/src/mingw-runtime/mingw-runtime-3.20-1/src/mingwrt-3.20-mingw32/crt1.c:244 #12 0x004012a8 in mainCRTStartup () at /usr/src/mingw-runtime/mingw-runtime-3.20-1/src/mingwrt-3.20-mingw32/crt1.c:264 (gdb) Starting program: /tmp/gcc/i686-pc-mingw32/libjava/testsuite/.libs/md5test [New Thread 2624.0x330] [New Thread 2624.0x8d8] Program received signal SIGSEGV, Segmentation fault. gnu::java::net::PlainSocketImpl::connect (this=0xe1bf90, addr=0xe11d00, timeout=0x0) at gnu/java/net/natPlainSocketImpl.cc:147 147 jbyteArray haddress = host->addr; (gdb) bt #0 gnu::java::net::PlainSocketImpl::connect (this=0xe1bf90, addr=0xe11d00, timeout=0x0) at gnu/java/net/natPlainSocketImpl.cc:147 #1 0x69a38ff5 in java.net.Socket.connect(java.net.SocketAddress, int)void ( this=@e11d10, endpoint=@e11d00, timeout=0x0) at /tmp/gcc/libjava/classpath/java/net/Socket.java:454 #2 0x69a2a7fb in java.net.Socket.connect(java.net.SocketAddress)void ( this=<optimized out>, endpoint=@e11d00) at /tmp/gcc/libjava/classpath/java/net/Socket.java:414 #3 0x61def12e in _fu8359___ZN3gnu4java3net16CRLFOutputStream6class$E () at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPConnection.java:255 #4 0x61def170 in gnu.java.net.protocol.ftp.FTPConnection.FTPConnection(java.lang.String, int) (this=<optimized out>, hostname=hostname@entry=@a56558, port=port@entry=0xffffffff) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPConnection.java:223 #5 0x61df0821 in connect (this=@ab7f80) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPURLConnection.java:121 #6 gnu.java.net.protocol.ftp.FTPURLConnection.connect()void (this=@ab7f80) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPURLConnection.java:96 #7 0x61ded9f6 in gnu.java.net.protocol.ftp.FTPURLConnection.getInputStream()jav---Type <return> to continue, or q <return> to quit--- a.io.InputStream (this=@ab7f80) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPURLConnection.java:165 #8 0x69a2a536 in java.net.URL.openStream()java.io.InputStream ( this=<optimized out>) at /tmp/gcc/libjava/classpath/java/net/URL.java:737 #9 0x69a5c0f7 in java.security.Security.loadProviders(java.lang.String, java.lang.String)boolean (baseUrl=baseUrl@entry=@a5e6e0, vendor=vendor@entry=@a58a00) at /tmp/gcc/libjava/classpath/java/security/Security.java:131 #10 0x69a5c3b9 in java.security.Security.<clinit>()void () at /tmp/gcc/libjava/classpath/java/security/Security.java:80 #11 0x696c7cea in java::lang::Class::initializeClass (this=0x69e9ebc0) at ../.././libjava/java/lang/natClass.cc:785 #12 0x69a590f3 in java.security.Security.getProviders()java.security.Provider[] () at /tmp/gcc/libjava/classpath/java/security/Security.java:310 #13 0x69a5f0f9 in java.security.MessageDigest.getInstance(java.lang.String)java.security.MessageDigest (algorithm=@a581e0) at /tmp/gcc/libjava/classpath/java/security/MessageDigest.java:90 #14 0x00401691 in StringBuffer_overflow.insert()void () at StringBuffer_overflow.java:92 #15 0x00a581e0 in ?? () #16 0x00bf57a8 in ?? () Backtrace stopped: Not enough registers or memory available to unwind further (gdb) Starting program: /tmp/gcc/i686-pc-mingw32/libjava/testsuite/.libs/pr21785 [New Thread 1340.0xaa4] [New Thread 1340.0x15d4] Program received signal SIGSEGV, Segmentation fault. gnu::java::net::PlainSocketImpl::connect (this=0xe24f90, addr=0xe10a90, timeout=0x0) at gnu/java/net/natPlainSocketImpl.cc:147 147 jbyteArray haddress = host->addr; (gdb) bt #0 gnu::java::net::PlainSocketImpl::connect (this=0xe24f90, addr=0xe10a90, timeout=0x0) at gnu/java/net/natPlainSocketImpl.cc:147 #1 0x69a38ff5 in java.net.Socket.connect(java.net.SocketAddress, int)void ( this=@e10aa0, endpoint=@e10a90, timeout=0x0) at /tmp/gcc/libjava/classpath/java/net/Socket.java:454 #2 0x69a2a7fb in java.net.Socket.connect(java.net.SocketAddress)void ( this=<optimized out>, endpoint=@e10a90) at /tmp/gcc/libjava/classpath/java/net/Socket.java:414 #3 0x61def12e in _fu8359___ZN3gnu4java3net16CRLFOutputStream6class$E () at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPConnection.java:255 #4 0x61def170 in gnu.java.net.protocol.ftp.FTPConnection.FTPConnection(java.lang.String, int) (this=<optimized out>, hostname=hostname@entry=@a563d8, port=port@entry=0xffffffff) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPConnection.java:223 #5 0x61df0821 in connect (this=@ab7f80) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPURLConnection.java:121 #6 gnu.java.net.protocol.ftp.FTPURLConnection.connect()void (this=@ab7f80) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPURLConnection.java:96 #7 0x61ded9f6 in gnu.java.net.protocol.ftp.FTPURLConnection.getInputStream()jav---Type <return> to continue, or q <return> to quit--- a.io.InputStream (this=@ab7f80) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPURLConnection.java:165 #8 0x69a2a536 in java.net.URL.openStream()java.io.InputStream ( this=<optimized out>) at /tmp/gcc/libjava/classpath/java/net/URL.java:737 #9 0x69a5c0f7 in java.security.Security.loadProviders(java.lang.String, java.lang.String)boolean (baseUrl=baseUrl@entry=@a5e6e0, vendor=vendor@entry=@a58a00) at /tmp/gcc/libjava/classpath/java/security/Security.java:131 #10 0x69a5c3b9 in java.security.Security.<clinit>()void () at /tmp/gcc/libjava/classpath/java/security/Security.java:80 #11 0x696c7cea in java::lang::Class::initializeClass (this=0x69e9ebc0) at ../.././libjava/java/lang/natClass.cc:785 #12 0x69a590f3 in java.security.Security.getProviders()java.security.Provider[] () at /tmp/gcc/libjava/classpath/java/security/Security.java:310 #13 0x69a5f0f9 in java.security.MessageDigest.getInstance(java.lang.String)java.security.MessageDigest (algorithm=@e1bfe0) at /tmp/gcc/libjava/classpath/java/security/MessageDigest.java:90 #14 0x699e5af6 in java.io.ObjectStreamClass.calculateClassUID(java.lang.Class)long (this=<optimized out>, cl=@a53ed8) at /tmp/gcc/libjava/classpath/java/io/ObjectStreamClass.java:897 #15 0x699defae in java.io.ObjectStreamClass.getClassUID(java.lang.Class)long ( this=this@entry=@bfdf00, cl=cl@entry=@a53ed8) at /tmp/gcc/libjava/classpath/java/io/ObjectStreamClass.java:818 ---Type <return> to continue, or q <return> to quit--- #16 0x699ec8eb in java.io.ObjectStreamClass.ObjectStreamClass(java.lang.Class) (this=this@entry=@bfdf00, cl=cl@entry=@a53ed8) at /tmp/gcc/libjava/classpath/java/io/ObjectStreamClass.java:636 #17 0x699ec989 in lookupForClassObject (cl=@a53ed8) at /tmp/gcc/libjava/classpath/java/io/ObjectStreamClass.java:115 #18 java.io.ObjectStreamClass.lookupForClassObject(java.lang.Class)java.io.ObjectStreamClass (cl=@a53ed8) at /tmp/gcc/libjava/classpath/java/io/ObjectStreamClass.java:106 #19 0x699ed588 in java.io.ObjectOutputStream.writeObject(java.lang.Object, boolean)void (this=@abbeb0, obj=obj@entry=@a97580, shared=shared@entry=0x1) at /tmp/gcc/libjava/classpath/java/io/ObjectOutputStream.java:321 #20 0x699ee139 in java.io.ObjectOutputStream.writeObject(java.lang.Object)void (this=<optimized out>, obj=@a97580) at /tmp/gcc/libjava/classpath/java/io/ObjectOutputStream.java:186 #21 0x00401452 in StringBuffer_overflow.Fail(java.lang.String, java.lang.Object)void () at StringBuffer_overflow.java:122 #22 0x00bfdf60 in ?? () #23 0x00000000 in ?? () (gdb) Starting program: /tmp/gcc/i686-pc-mingw32/libjava/testsuite/.libs/pr26990 [New Thread 2456.0x1440] [New Thread 2456.0xef8] Program received signal SIGSEGV, Segmentation fault. gnu::java::net::PlainSocketImpl::connect (this=0xe1bf90, addr=0xe12d40, timeout=0x0) at gnu/java/net/natPlainSocketImpl.cc:147 147 jbyteArray haddress = host->addr; (gdb) bt #0 gnu::java::net::PlainSocketImpl::connect (this=0xe1bf90, addr=0xe12d40, timeout=0x0) at gnu/java/net/natPlainSocketImpl.cc:147 #1 0x69a38ff5 in java.net.Socket.connect(java.net.SocketAddress, int)void ( this=@e12d50, endpoint=@e12d40, timeout=0x0) at /tmp/gcc/libjava/classpath/java/net/Socket.java:454 #2 0x69a2a7fb in java.net.Socket.connect(java.net.SocketAddress)void ( this=<optimized out>, endpoint=@e12d40) at /tmp/gcc/libjava/classpath/java/net/Socket.java:414 #3 0x61def12e in _fu8359___ZN3gnu4java3net16CRLFOutputStream6class$E () at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPConnection.java:255 #4 0x61def170 in gnu.java.net.protocol.ftp.FTPConnection.FTPConnection(java.lang.String, int) (this=<optimized out>, hostname=hostname@entry=@a565d0, port=port@entry=0xffffffff) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPConnection.java:223 #5 0x61df0821 in connect (this=@ab7f80) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPURLConnection.java:121 #6 gnu.java.net.protocol.ftp.FTPURLConnection.connect()void (this=@ab7f80) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPURLConnection.java:96 #7 0x61ded9f6 in gnu.java.net.protocol.ftp.FTPURLConnection.getInputStream()jav---Type <return> to continue, or q <return> to quit--- a.io.InputStream (this=@ab7f80) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPURLConnection.java:165 #8 0x69a2a536 in java.net.URL.openStream()java.io.InputStream ( this=<optimized out>) at /tmp/gcc/libjava/classpath/java/net/URL.java:737 #9 0x69a5c0f7 in java.security.Security.loadProviders(java.lang.String, java.lang.String)boolean (baseUrl=baseUrl@entry=@a5e6e0, vendor=vendor@entry=@a58a00) at /tmp/gcc/libjava/classpath/java/security/Security.java:131 #10 0x69a5c3b9 in java.security.Security.<clinit>()void () at /tmp/gcc/libjava/classpath/java/security/Security.java:80 #11 0x696c7cea in java::lang::Class::initializeClass (this=0x69e9ebc0) at ../.././libjava/java/lang/natClass.cc:785 #12 0x69a5ae28 in java.security.Security.getProvider(java.lang.String)java.security.Provider (name=null) at /tmp/gcc/libjava/classpath/java/security/Security.java:328 #13 0x69a0ae39 in java.lang.SecurityManager.SecurityManager() ( this=<optimized out>) at /tmp/gcc/libjava/classpath/java/lang/SecurityManager.java:180 #14 0x004013d9 in StringBuffer_overflow.StringBuffer_overflow() () at StringBuffer_overflow.java:10 #15 0x0040141a in void StringBuffer_overflow::__U3c_clinit__U3e_() () at StringBuffer_overflow.java:10 #16 0x00a53ed8 in ?? () ---Type <return> to continue, or q <return> to quit--- #17 0x696fda26 in gnu.java.lang.MainThread.run()void (this=@a97da8) at /tmp/gcc/libjava/gnu/java/lang/MainThread.java:106 #18 0x696ce8b2 in _Jv_ThreadRun (thread=0xbfdf60) at ../.././libjava/java/lang/natThread.cc:335 #19 0x69683fb0 in _Jv_RunMain (vm_args=vm_args@entry=0x0, klass=klass@entry=0x0, name=name@entry=0x403064 "pr26990", argc=argc@entry=0x1, argv=argv@entry=0x3d8658, is_jar=is_jar@entry=0x0) at ../.././libjava/prims.cc:1790 #20 0x696841a6 in _Jv_RunMain (klass=klass@entry=0x0, name=name@entry=0x403064 "pr26990", argc=argc@entry=0x1, argv=argv@entry=0x3d8658, is_jar=is_jar@entry=0x0) at ../.././libjava/prims.cc:1815 #21 0x696841df in JvRunMainName (name=0x403064 "pr26990", argc=0x1, argv=0x3d8658) at ../.././libjava/prims.cc:1827 #22 0x00401d92 in do_pseudo_reloc (start=<optimized out>, end=<optimized out>, base=<optimized out>) at /usr/src/mingw-runtime/mingw-runtime-3.20-1/src/mingwrt-3.20-mingw32/pseudo-reloc.c:205 #23 _pei386_runtime_relocator () at /usr/src/mingw-runtime/mingw-runtime-3.20-1/src/mingwrt-3.20-mingw32/pseudo-reloc.c:364 #24 0x004010bb in __mingw_CRTStartup () at /usr/src/mingw-runtime/mingw-runtime-3.20-1/src/mingwrt-3.20-mingw32/crt1---Type <return> to continue, or q <return> to quit--- .c:244 #25 0x004012a8 in mainCRTStartup () at /usr/src/mingw-runtime/mingw-runtime-3.20-1/src/mingwrt-3.20-mingw32/crt1.c:264 Starting program: /tmp/gcc/i686-pc-mingw32/libjava/testsuite/.libs/shatest [New Thread 5720.0x17a8] [New Thread 5720.0x118c] Program received signal SIGSEGV, Segmentation fault. gnu::java::net::PlainSocketImpl::connect (this=0xe1af90, addr=0xe11d50, timeout=0x0) at gnu/java/net/natPlainSocketImpl.cc:147 147 jbyteArray haddress = host->addr; (gdb) bt #0 gnu::java::net::PlainSocketImpl::connect (this=0xe1af90, addr=0xe11d50, timeout=0x0) at gnu/java/net/natPlainSocketImpl.cc:147 #1 0x69a38ff5 in java.net.Socket.connect(java.net.SocketAddress, int)void ( this=@e11d60, endpoint=@e11d50, timeout=0x0) at /tmp/gcc/libjava/classpath/java/net/Socket.java:454 #2 0x69a2a7fb in java.net.Socket.connect(java.net.SocketAddress)void ( this=<optimized out>, endpoint=@e11d50) at /tmp/gcc/libjava/classpath/java/net/Socket.java:414 #3 0x61def12e in _fu8359___ZN3gnu4java3net16CRLFOutputStream6class$E () at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPConnection.java:255 #4 0x61def170 in gnu.java.net.protocol.ftp.FTPConnection.FTPConnection(java.lang.String, int) (this=<optimized out>, hostname=hostname@entry=@a56588, port=port@entry=0xffffffff) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPConnection.java:223 #5 0x61df0821 in connect (this=@ab7f80) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPURLConnection.java:121 #6 gnu.java.net.protocol.ftp.FTPURLConnection.connect()void (this=@ab7f80) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPURLConnection.java:96 #7 0x61ded9f6 in gnu.java.net.protocol.ftp.FTPURLConnection.getInputStream()jav---Type <return> to continue, or q <return> to quit--- a.io.InputStream (this=@ab7f80) at /tmp/gcc/libjava/classpath/gnu/java/net/protocol/ftp/FTPURLConnection.java:165 #8 0x69a2a536 in java.net.URL.openStream()java.io.InputStream ( this=<optimized out>) at /tmp/gcc/libjava/classpath/java/net/URL.java:737 #9 0x69a5c0f7 in java.security.Security.loadProviders(java.lang.String, java.lang.String)boolean (baseUrl=baseUrl@entry=@a5e6e0, vendor=vendor@entry=@a58a00) at /tmp/gcc/libjava/classpath/java/security/Security.java:131 #10 0x69a5c3b9 in java.security.Security.<clinit>()void () at /tmp/gcc/libjava/classpath/java/security/Security.java:80 #11 0x696c7cea in java::lang::Class::initializeClass (this=0x69e9ebc0) at ../.././libjava/java/lang/natClass.cc:785 #12 0x69a590f3 in java.security.Security.getProviders()java.security.Provider[] () at /tmp/gcc/libjava/classpath/java/security/Security.java:310 #13 0x69a5f0f9 in java.security.MessageDigest.getInstance(java.lang.String)java.security.MessageDigest (algorithm=@a58200) at /tmp/gcc/libjava/classpath/java/security/MessageDigest.java:90 #14 0x00401689 in StringBuffer_overflow.insert()void () at StringBuffer_overflow.java:86 #15 0x00bfdf60 in ?? () #16 0x696fda26 in gnu.java.lang.MainThread.run()void (this=@696cdde0) at /tmp/gcc/libjava/gnu/java/lang/MainThread.java:106 #17 0x696ce8b2 in _Jv_ThreadRun (thread=0xbfdf60) ---Type <return> to continue, or q <return> to quit--- at ../.././libjava/java/lang/natThread.cc:335 #18 0x69683fb0 in _Jv_RunMain (vm_args=vm_args@entry=0x0, klass=klass@entry=0x0, name=name@entry=0x404064 "shatest", argc=argc@entry=0x1, argv=argv@entry=0x3d8658, is_jar=is_jar@entry=0x0) at ../.././libjava/prims.cc:1790 #19 0x696841a6 in _Jv_RunMain (klass=klass@entry=0x0, name=name@entry=0x404064 "shatest", argc=argc@entry=0x1, argv=argv@entry=0x3d8658, is_jar=is_jar@entry=0x0) at ../.././libjava/prims.cc:1815 #20 0x696841df in JvRunMainName (name=0x404064 "shatest", argc=0x1, argv=0x3d8658) at ../.././libjava/prims.cc:1827 #21 0x00402132 in ___w64_mingwthr_remove_key_dtor (key=0x1) at /usr/src/mingw-runtime/mingw-runtime-3.20-1/src/mingwrt-3.20-mingw32/tlsthrd.c:93 #22 0x004010bb in __mingw_CRTStartup () at /usr/src/mingw-runtime/mingw-runtime-3.20-1/src/mingwrt-3.20-mingw32/crt1.c:244 #23 0x004012a8 in mainCRTStartup () at /usr/src/mingw-runtime/mingw-runtime-3.20-1/src/mingwrt-3.20-mingw32/crt1.c:264 (gdb) Starting program: /tmp/gcc/i686-pc-mingw32/libjava/testsuite/.libs/TestEarlyGC [New Thread 2808.0x37c] [New Thread 2808.0x1134] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 2808.0x1134] java.io.PrintStream.writeChars(java.lang.String, int, int)void ( this=this@entry=@2, str=str@entry=@aabfa8, offset=offset@entry=0x0, count=0xac6f00) at /tmp/gcc/libjava/java/io/PrintStream.java:343 343 converter.setOutput(work_bytes, 0); (gdb) bt #0 java.io.PrintStream.writeChars(java.lang.String, int, int)void ( this=this@entry=@2, str=str@entry=@aabfa8, offset=offset@entry=0x0, count=0xac6f00) at /tmp/gcc/libjava/java/io/PrintStream.java:343 #1 0x699dd791 in java.io.PrintStream.print(java.lang.String, boolean)void ( this=@2, str=@aabfa8, println=println@entry=0x1) at /tmp/gcc/libjava/java/io/PrintStream.java:287 #2 0x699dd872 in java.io.PrintStream.println(java.lang.String)void ( this=<optimized out>, str=@aabfa8) at /tmp/gcc/libjava/java/io/PrintStream.java:554 #3 0x69ce87f7 in ffi_call_win32 () at ../.././libffi/src/x86/win32.S:424 #4 0x69ce87a5 in ffi_raw_call (cif=0xc0ae7c, fn=0x699dd850 <java.io.PrintStream.println(java.lang.String)void>, rvalue=0xe1fd58, fake_avalue=0xe1fb80) at ../.././libffi/src/x86/ffi.c:647 #5 0x6969c7a4 in _Jv_InterpMethod::run (retp=0xe1fec0, args=0xe1fee0, meth=0xaa2c40) at ../.././libjava/interpret-run.cc:611 #6 0x69ce89a5 in ffi_closure_raw_SYSV () at ../.././libffi/src/x86/win32.S:695 #7 0x696caac0 in _Jv_FinalizeObject (obj=0xaa7e30) at ../.././libjava/java/lang/natObject.cc:121 #8 0x69cf8464 in GC_invoke_finalizers () at ../.././boehm-gc/finalize.c:848 #9 0x696bf145 in gnu::gcj::runtime::FinalizerThread::run ( this=<optimized out>) at ../.././libjava/gnu/gcj/runtime/natFinalizerThread.cc:60 #10 0x696ce8b2 in _Jv_ThreadRun (thread=0xaccf00) ---Type <return> to continue, or q <return> to quit--- at ../.././libjava/java/lang/natThread.cc:335 #11 0x696d6dd2 in really_start (x=0xa64b48) at ../.././libjava/win32-threads.cc:355 #12 0x69d0134c in thread_start (arg=0xc0cff8) at ../.././boehm-gc/win32_threads.c:509 #13 0x00000000 in ?? () (gdb)
please fix java::lang::Class::initializeClass for mingw32 ia-32 by adding __thiscall before being involved this bug. surely PR50053 is fixed but i leaved a kludge toward this bug.
it seems that libffi handles calling convention of method which is cdecl or stdcall. but not for thiscall for mingw32 ia-32.
Hmm, this might be another instance for already solved PR/50053. Could you recheck, if error is still present for current 4.7 trunk version. Thanks
(In reply to comment #4) > Hmm, this might be another instance for already solved PR/50053. Could you > recheck, if error is still present for current 4.7 trunk version. > > Thanks Target is i686-pc-mingw32 Host is i686-pc-mingw32 Build is i686-pc-cygwin === libjava tests === Schedule of variations: unix Running target unix Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target. Using /usr/share/dejagnu/config/unix.exp as generic interface file for target. Using /tmp/gcc/libjava/testsuite/config/default.exp as tool-and-target-specific interface file. WARNING: Assuming target board is the local machine (which is probably wrong). You may need to set your DEJAGNU environment variable. Running /tmp/gcc/libjava/testsuite/libjava.cni/cni.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jar/jar.exp ... FAIL: TestClosureGC run FAIL: libjava.jar/TestClosureGC.jar execution - gij test FAIL: simple output FAIL: libjava.jar/simple.jar execution - gij test Running /tmp/gcc/libjava/testsuite/libjava.jni/jni.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jvmti/jvmti-interp.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jvmti/jvmti.exp ... Running /tmp/gcc/libjava/testsuite/libjava.lang/lang.exp ... FAIL: ArrayStore execution - source compiled test FAIL: ArrayStore -findirect-dispatch execution - source compiled test FAIL: ArrayStore -O3 execution - source compiled test FAIL: ArrayStore -O3 -findirect-dispatch execution - source compiled test FAIL: ArrayStore2 execution - source compiled test FAIL: ArrayStore2 -findirect-dispatch execution - source compiled test FAIL: ArrayStore2 -O3 execution - source compiled test FAIL: ArrayStore2 -O3 -findirect-dispatch execution - source compiled test FAIL: Divide_1 output - source compiled test FAIL: Divide_1 -findirect-dispatch output - source compiled test FAIL: Divide_1 -O3 output - source compiled test FAIL: Divide_1 -O3 -findirect-dispatch output - source compiled test FAIL: ExtraClassLoader execution - source compiled test FAIL: ExtraClassLoader -findirect-dispatch execution - source compiled test FAIL: ExtraClassLoader -O3 execution - source compiled test FAIL: ExtraClassLoader -O3 -findirect-dispatch execution - source compiled test FAIL: InvokeInterface output - source compiled test FAIL: InvokeInterface -findirect-dispatch output - source compiled test FAIL: InvokeInterface -O3 output - source compiled test FAIL: InvokeInterface -O3 -findirect-dispatch output - source compiled test FAIL: PR218 output - source compiled test FAIL: PR218 -findirect-dispatch output - source compiled test FAIL: PR218 -O3 output - source compiled test FAIL: PR218 -O3 -findirect-dispatch output - source compiled test FAIL: Process_6 output - source compiled test FAIL: Process_6 -findirect-dispatch output - source compiled test FAIL: Process_6 -O3 output - source compiled test FAIL: Process_6 -O3 -findirect-dispatch output - source compiled test FAIL: ProxyTest execution - source compiled test FAIL: ProxyTest -findirect-dispatch execution - source compiled test FAIL: ProxyTest -O3 execution - source compiled test FAIL: ProxyTest -O3 -findirect-dispatch execution - source compiled test FAIL: Serialization execution - source compiled test FAIL: Serialization -findirect-dispatch execution - source compiled test FAIL: Serialization -O3 execution - source compiled test FAIL: Serialization -O3 -findirect-dispatch execution - source compiled test FAIL: StackTrace2 execution - source compiled test FAIL: StackTrace2 -findirect-dispatch execution - source compiled test FAIL: StackTrace2 -O3 execution - source compiled test FAIL: StackTrace2 -O3 -findirect-dispatch execution - source compiled test FAIL: StringBuffer_1 execution - source compiled test FAIL: StringBuffer_1 -findirect-dispatch execution - source compiled test FAIL: StringBuffer_1 -O3 execution - source compiled test FAIL: StringBuffer_1 -O3 -findirect-dispatch execution - source compiled test FAIL: StringBuffer_overflow output - source compiled test FAIL: StringBuffer_overflow -findirect-dispatch output - source compiled test FAIL: StringBuffer_overflow -O3 output - source compiled test FAIL: StringBuffer_overflow -O3 -findirect-dispatch output - source compiled test FAIL: String_overflow output - source compiled test FAIL: String_overflow -findirect-dispatch output - source compiled test FAIL: String_overflow -O3 output - source compiled test FAIL: String_overflow -O3 -findirect-dispatch output - source compiled test FAIL: TestProxy execution - source compiled test FAIL: TestProxy -findirect-dispatch execution - source compiled test FAIL: TestProxy -O3 execution - source compiled test FAIL: TestProxy -O3 -findirect-dispatch execution - source compiled test FAIL: Thread_Sleep -findirect-dispatch output - source compiled test FAIL: Thread_Sleep -O3 -findirect-dispatch output - source compiled test FAIL: Thread_Sleep_2 output - source compiled test FAIL: Thread_Sleep_2 -findirect-dispatch output - source compiled test FAIL: Thread_Sleep_2 -O3 output - source compiled test FAIL: Thread_Sleep_2 -O3 -findirect-dispatch output - source compiled test 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: Throw_3 execution - source compiled test FAIL: Throw_3 -findirect-dispatch execution - source compiled test FAIL: Throw_3 -O3 execution - source compiled test FAIL: Throw_3 -O3 -findirect-dispatch execution - source compiled test FAIL: instinit2 execution - source compiled test FAIL: instinit2 -findirect-dispatch execution - source compiled test FAIL: instinit2 -O3 execution - source compiled test FAIL: instinit2 -O3 -findirect-dispatch execution - source compiled test FAIL: invokethrow execution - source compiled test FAIL: invokethrow -findirect-dispatch execution - source compiled test FAIL: invokethrow -O3 execution - source compiled test FAIL: invokethrow -O3 -findirect-dispatch execution - source compiled test FAIL: md5test execution - source compiled test FAIL: md5test -findirect-dispatch execution - source compiled test FAIL: md5test -O3 execution - source compiled test FAIL: md5test -O3 -findirect-dispatch execution - source compiled test FAIL: pr184 output - source compiled test FAIL: pr184 -findirect-dispatch output - source compiled test FAIL: pr184 -O3 output - source compiled test FAIL: pr184 -O3 -findirect-dispatch output - source compiled test FAIL: pr21785 execution - source compiled test FAIL: pr21785 -findirect-dispatch execution - source compiled test FAIL: pr21785 -O3 execution - source compiled test FAIL: pr21785 -O3 -findirect-dispatch execution - source compiled test FAIL: pr26990 execution - source compiled test FAIL: pr26990 -findirect-dispatch execution - source compiled test FAIL: pr26990 -O3 execution - source compiled test FAIL: pr26990 -O3 -findirect-dispatch execution - source compiled test FAIL: shatest execution - source compiled test FAIL: shatest -findirect-dispatch execution - source compiled test FAIL: shatest -O3 execution - source compiled test FAIL: shatest -O3 -findirect-dispatch execution - source compiled test Running /tmp/gcc/libjava/testsuite/libjava.loader/loader.exp ... FAIL: TestEarlyGC execution - source compiled test FAIL: TestMultiple execution - source compiled test FAIL: TestParent execution - source compiled test Running /tmp/gcc/libjava/testsuite/libjava.mauve/mauve.exp ... sh: /configure: No such file or directory FAIL: Mauve configure Running /tmp/gcc/libjava/testsuite/libjava.special/special.exp ... Running /tmp/gcc/libjava/testsuite/libjava.verify/verify.exp ... === libjava Summary === # of expected passes 2235 # of unexpected failures 106 # of untested testcases 70 Makefile:385: recipe for target `check-DEJAGNU' failed make[1]: *** [check-DEJAGNU] Error 1 make[1]: Leaving directory `/tmp/gcc/i686-pc-mingw32/libjava/testsuite' Makefile:409: recipe for target `check-am' failed make: *** [check-am] Error 2 $ ../../../host-i686-pc-cygwin/gcc/gcj -B .. -v Using built-in specs. Reading specs from ../libgcj.spec rename spec startfile to startfileorig rename spec lib to liborig COLLECT_GCC=../../../host-i686-pc-cygwin/gcc/gcj Target: i686-pc-mingw32 Configured with: ./configure -C --prefix=/usr --enable-win32-registry --enable-java-awt=qt --enable-threads=win32 --enable-languages=c,c++,lto,java --with-win32-nlsapi=unicode --enable-tls --disable-bootstrap --target=i686-pc-mingw32 --enable-shared --enable-load-library --enable-interpreter --disable-sjlj-exceptions --enable-gomp --with-ecj-jar=/tmp/gcc/org.eclipse.jdt.core_3.7.0.v_B35.jar --with-antlr-jar=/tmp/gcc/antlr-3.3-complete.jar --with-libiconv-prefix=/usr/i686-pc-mingw32 --with-x=no --enable-cloog-backend=isl --with-sysroot=/usr/i686-pc-mingw32/sys-root --with-build-sysroot=/usr/i686-pc-mingw32/sys-root : (reconfigured) ./configure -C --prefix=/usr --enable-win32-registry --enable-java-awt=qt --enable-threads=win32 --with-win32-nlsapi=unicode --enable-tls --disable-bootstrap --target=i686-pc-mingw32 --enable-shared --enable-load-library --enable-interpreter --disable-sjlj-exceptions --enable-gomp --with-ecj-jar=/tmp/gcc/org.eclipse.jdt.core_3.7.0.v_B35.jar --with-antlr-jar=/tmp/gcc/antlr-3.3-complete.jar --with-libiconv-prefix=/usr/i686-pc-mingw32 --with-x=no --enable-cloog-backend=isl --with-sysroot=/usr/i686-pc-mingw32/sys-root --with-build-sysroot=/usr/i686-pc-mingw32/sys-root target_alias=i686-pc-mingw32 --enable-languages=c,c++,java,lto --no-create --no-recursion : (reconfigured) ./configure -C --prefix=/usr --enable-win32-registry --enable-java-awt=qt --enable-threads=win32 --with-win32-nlsapi=unicode --enable-tls --disable-bootstrap --target=i686-pc-mingw32 --enable-shared --enable-load-library --enable-interpreter --disable-sjlj-exceptions --enable-gomp --with-ecj-jar=/tmp/gcc/org.eclipse.jdt.core_3.7.0.v_B35.jar --with-antlr-jar=/tmp/gcc/antlr-3.3-complete.jar --with-libiconv-prefix=/usr/i686-pc-mingw32 --with-x=no --enable-cloog-backend=isl --with-sysroot=/usr/i686-pc-mingw32/sys-root --with-build-sysroot=/usr/i686-pc-mingw32/sys-root target_alias=i686-pc-mingw32 --enable-languages=c,c++,java,lto --no-create --no-recursion Thread model: win32 gcc version 4.7.0 20111218 (experimental) (GCC)
Created attachment 26338 [details] proposed patch for handling thiscall adopted from https://bugzilla.mozilla.org/show_bug.cgi?id=552533 without any permission. Test Run By Administrator on Mon Jan 16 16:41:35 2012 Target is i686-pc-mingw32 Host is i686-pc-mingw32 Build is i686-pc-cygwin === libjava tests === Schedule of variations: unix Running target unix Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target. Using /usr/share/dejagnu/config/unix.exp as generic interface file for target. Using /tmp/gcc/libjava/testsuite/config/default.exp as tool-and-target-specific interface file. WARNING: Assuming target board is the local machine (which is probably wrong). You may need to set your DEJAGNU environment variable. Running /tmp/gcc/libjava/testsuite/libjava.cni/cni.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jar/jar.exp ... FAIL: TestClosureGC output FAIL: libjava.jar/TestClosureGC.jar execution - gij test FAIL: simple output FAIL: libjava.jar/simple.jar execution - gij test Running /tmp/gcc/libjava/testsuite/libjava.jni/jni.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jvmti/jvmti-interp.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jvmti/jvmti.exp ... Running /tmp/gcc/libjava/testsuite/libjava.lang/lang.exp ... FAIL: ArrayStore execution - source compiled test FAIL: ArrayStore -findirect-dispatch execution - source compiled test FAIL: ArrayStore -O3 execution - source compiled test FAIL: ArrayStore -O3 -findirect-dispatch execution - source compiled test FAIL: ArrayStore2 execution - source compiled test FAIL: ArrayStore2 -findirect-dispatch execution - source compiled test FAIL: ArrayStore2 -O3 execution - source compiled test FAIL: ArrayStore2 -O3 -findirect-dispatch execution - source compiled test FAIL: Divide_1 output - source compiled test FAIL: Divide_1 -findirect-dispatch output - source compiled test FAIL: Divide_1 -O3 output - source compiled test FAIL: Divide_1 -O3 -findirect-dispatch output - source compiled test FAIL: ExtraClassLoader execution - source compiled test FAIL: ExtraClassLoader -findirect-dispatch execution - source compiled test FAIL: ExtraClassLoader -O3 execution - source compiled test FAIL: ExtraClassLoader -O3 -findirect-dispatch execution - source compiled test FAIL: PR218 output - source compiled test FAIL: PR218 -findirect-dispatch output - source compiled test FAIL: PR218 -O3 output - source compiled test FAIL: PR218 -O3 -findirect-dispatch output - source compiled test FAIL: Process_6 output - source compiled test FAIL: Process_6 -findirect-dispatch output - source compiled test FAIL: Process_6 -O3 output - source compiled test FAIL: Process_6 -O3 -findirect-dispatch output - source compiled test FAIL: ProxyTest execution - source compiled test FAIL: ProxyTest -findirect-dispatch execution - source compiled test FAIL: ProxyTest -O3 execution - source compiled test FAIL: ProxyTest -O3 -findirect-dispatch execution - source compiled test FAIL: StackTrace2 execution - source compiled test FAIL: StackTrace2 -findirect-dispatch execution - source compiled test FAIL: StackTrace2 -O3 execution - source compiled test FAIL: StackTrace2 -O3 -findirect-dispatch execution - source compiled test FAIL: StringBuffer_1 execution - source compiled test FAIL: StringBuffer_1 -findirect-dispatch execution - source compiled test FAIL: StringBuffer_1 -O3 execution - source compiled test FAIL: StringBuffer_1 -O3 -findirect-dispatch execution - source compiled test FAIL: StringBuffer_overflow output - source compiled test FAIL: StringBuffer_overflow -findirect-dispatch output - source compiled test FAIL: StringBuffer_overflow -O3 output - source compiled test FAIL: StringBuffer_overflow -O3 -findirect-dispatch output - source compiled test FAIL: String_overflow output - source compiled test FAIL: String_overflow -findirect-dispatch output - source compiled test FAIL: String_overflow -O3 output - source compiled test FAIL: String_overflow -O3 -findirect-dispatch output - source compiled test FAIL: TestProxy execution - source compiled test FAIL: TestProxy -findirect-dispatch execution - source compiled test FAIL: TestProxy -O3 execution - source compiled test FAIL: TestProxy -O3 -findirect-dispatch execution - source compiled test FAIL: Thread_Sleep_2 output - source compiled test FAIL: Thread_Sleep_2 -findirect-dispatch output - source compiled test FAIL: Thread_Sleep_2 -O3 output - source compiled test FAIL: Thread_Sleep_2 -O3 -findirect-dispatch output - source compiled test 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: Throw_3 execution - source compiled test FAIL: Throw_3 -findirect-dispatch execution - source compiled test FAIL: Throw_3 -O3 execution - source compiled test FAIL: Throw_3 -O3 -findirect-dispatch execution - source compiled test FAIL: instinit2 execution - source compiled test FAIL: instinit2 -findirect-dispatch execution - source compiled test FAIL: instinit2 -O3 execution - source compiled test FAIL: instinit2 -O3 -findirect-dispatch execution - source compiled test FAIL: invokethrow execution - source compiled test FAIL: invokethrow -findirect-dispatch execution - source compiled test FAIL: invokethrow -O3 execution - source compiled test FAIL: invokethrow -O3 -findirect-dispatch execution - source compiled test FAIL: md5test execution - source compiled test FAIL: md5test -findirect-dispatch execution - source compiled test FAIL: md5test -O3 execution - source compiled test FAIL: md5test -O3 -findirect-dispatch execution - source compiled test FAIL: pr184 output - source compiled test FAIL: pr184 -findirect-dispatch output - source compiled test FAIL: pr184 -O3 output - source compiled test FAIL: pr184 -O3 -findirect-dispatch output - source compiled test FAIL: pr21785 execution - source compiled test FAIL: pr21785 -findirect-dispatch execution - source compiled test FAIL: pr21785 -O3 execution - source compiled test FAIL: pr21785 -O3 -findirect-dispatch execution - source compiled test FAIL: pr26990 execution - source compiled test FAIL: pr26990 -findirect-dispatch execution - source compiled test FAIL: pr26990 -O3 execution - source compiled test FAIL: pr26990 -O3 -findirect-dispatch execution - source compiled test FAIL: shatest execution - source compiled test FAIL: shatest -findirect-dispatch execution - source compiled test FAIL: shatest -O3 execution - source compiled test FAIL: shatest -O3 -findirect-dispatch execution - source compiled test Running /tmp/gcc/libjava/testsuite/libjava.loader/loader.exp ... FAIL: TestEarlyGC execution - source compiled test FAIL: TestMultiple execution - source compiled test FAIL: TestParent execution - source compiled test Running /tmp/gcc/libjava/testsuite/libjava.mauve/mauve.exp ... sh: /configure: No such file or directory FAIL: Mauve configure Running /tmp/gcc/libjava/testsuite/libjava.special/special.exp ... Running /tmp/gcc/libjava/testsuite/libjava.verify/verify.exp ... === libjava Summary === # of expected passes 2249 # of unexpected failures 96 # of untested testcases 65 Makefile:385: recipe for target `check-DEJAGNU' failed make[1]: *** [check-DEJAGNU] Error 1 make[1]: Leaving directory `/tmp/gcc/i686-pc-mingw32/libjava/testsuite' Makefile:409: recipe for target `check-am' failed make: *** [check-am] Error 2
after applying pr50057 patch http://gcc.gnu.org/bugzilla/attachment.cgi?id=26365 === libjava Summary === # of expected passes 2324 # of unexpected failures 51 # of untested testcases 35
Created attachment 26499 [details] proposed patch for handling thiscall r2 (In reply to comment #6) fixed the problem in handling closure of java method/function. but there is another problem awaits for this fix. i'll set another bug report.
Created attachment 26513 [details] proposed patch for handling thiscall r3 Target is i686-pc-mingw32 Host is i686-pc-mingw32 Build is i686-pc-cygwin === libjava tests === Schedule of variations: unix Running target unix Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target. Using /usr/share/dejagnu/config/unix.exp as generic interface file for target. Using /tmp/gcc/libjava/testsuite/config/default.exp as tool-and-target-specific interface file. WARNING: Assuming target board is the local machine (which is probably wrong). You may need to set your DEJAGNU environment variable. Running /tmp/gcc/libjava/testsuite/libjava.cni/cni.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jar/jar.exp ... FAIL: TestClosureGC output FAIL: libjava.jar/TestClosureGC.jar execution - gij test FAIL: simple output FAIL: libjava.jar/simple.jar execution - gij test Running /tmp/gcc/libjava/testsuite/libjava.jni/jni.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jvmti/jvmti-interp.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jvmti/jvmti.exp ... Running /tmp/gcc/libjava/testsuite/libjava.lang/lang.exp ... FAIL: ExtraClassLoader execution - source compiled test FAIL: ExtraClassLoader -findirect-dispatch execution - source compiled test FAIL: ExtraClassLoader -O3 execution - source compiled test FAIL: ExtraClassLoader -O3 -findirect-dispatch execution - source compiled test FAIL: ProxyTest -O3 execution - source compiled test FAIL: ProxyTest -O3 -findirect-dispatch execution - source compiled test FAIL: StackTrace2 output - source compiled test FAIL: StackTrace2 -findirect-dispatch output - source compiled test FAIL: StackTrace2 -O3 output - source compiled test FAIL: StackTrace2 -O3 -findirect-dispatch output - source compiled test FAIL: TestProxy -O3 execution - source compiled test FAIL: TestProxy -O3 -findirect-dispatch execution - source compiled test FAIL: Thread_Sleep output - source compiled test FAIL: Thread_Sleep -findirect-dispatch output - source compiled test FAIL: Thread_Sleep -O3 output - source compiled test FAIL: Thread_Sleep -O3 -findirect-dispatch output - source compiled test FAIL: Thread_Sleep_2 output - source compiled test FAIL: Thread_Sleep_2 -findirect-dispatch output - source compiled test FAIL: Thread_Sleep_2 -O3 output - source compiled test FAIL: Thread_Sleep_2 -O3 -findirect-dispatch output - source compiled test 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: md5test execution - source compiled test FAIL: md5test -findirect-dispatch execution - source compiled test FAIL: md5test -O3 execution - source compiled test FAIL: md5test -O3 -findirect-dispatch execution - source compiled test FAIL: pr21785 execution - source compiled test FAIL: pr21785 -findirect-dispatch execution - source compiled test FAIL: pr21785 -O3 execution - source compiled test FAIL: pr21785 -O3 -findirect-dispatch execution - source compiled test FAIL: pr26990 execution - source compiled test FAIL: pr26990 -findirect-dispatch execution - source compiled test FAIL: pr26990 -O3 execution - source compiled test FAIL: pr26990 -O3 -findirect-dispatch execution - source compiled test FAIL: shatest execution - source compiled test FAIL: shatest -findirect-dispatch execution - source compiled test FAIL: shatest -O3 execution - source compiled test FAIL: shatest -O3 -findirect-dispatch execution - source compiled test Running /tmp/gcc/libjava/testsuite/libjava.loader/loader.exp ... FAIL: TestEarlyGC execution - source compiled test FAIL: TestMultiple output - source compiled test FAIL: TestParent output - source compiled test Running /tmp/gcc/libjava/testsuite/libjava.mauve/mauve.exp ... sh: /configure: No such file or directory FAIL: Mauve configure Running /tmp/gcc/libjava/testsuite/libjava.special/special.exp ... Running /tmp/gcc/libjava/testsuite/libjava.verify/verify.exp ... === libjava Summary === # of expected passes 2331 # of unexpected failures 48 # of untested testcases 31
Hmm, not sure if you already noticed it, but ffi_call supports by recent patch thiscall/fastcall convention. So parts of you patch won't apply mainline.
Comment on attachment 26513 [details] proposed patch for handling thiscall r3 @@ -505,6 +508,23 @@ ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, ... ... + *(unsigned int*) &__tramp[24] = 0x8304244c; /* xchgl 4(%esp),%ecx*/ \ + *(unsigned short*) &__tramp[28] = 0x04c4; /* add $0x4,%esp */ \ + *(unsigned char*)/* __not short*__ */ &__tramp[30] = 0xc3; /* ret */ \ + } #define FFI_INIT_TRAMPOLINE_STDCALL(TRAMP,FUN,CTX,SIZE) \ { unsigned char *__tramp = (unsigned char*)(TRAMP); \
(In reply to comment #11) > + *(unsigned int*) &__tramp[24] = 0x8304244c; /* xchgl 4(%esp),%ecx*/ \ Don't use this insn, it implies lock prefix and costs hundreds of cycles.
Right the following sequence seems to be better IMHO: pop %eax push %ecx push %eax mov __ctx, %eax call fun pop %ecx mov %ecx, %(esp) ret
(In reply to comment #13) > Right the following sequence seems to be better IMHO: > > pop %eax > push %ecx > push %eax > mov __ctx, %eax > call fun > pop %ecx > mov %ecx, %(esp) > ret I'd avoid push and pop insns and go directly with moves and %esp adjustments. Please see i.e. libitm/config/x86/sjlj.S for some ideas.
So this should be better then: #define FFI_INIT_TRAMPOLINE_THISCALL(TRAMP,FUN,CTX,SIZE) \ { unsigned char *__tramp = (unsigned char*)(TRAMP); \ unsigned int __fun = (unsigned int)(FUN); \ unsigned int __ctx = (unsigned int)(CTX); \ unsigned int __dis = __fun - (__ctx + 22); \ *(unsigned int *) &__tramp[0] = 0x8924048b; /* mov (%esp), %eax */ \ *(unsigned int *) &__tramp[4] = 0xec83240c; /* mov %ecx, (%esp) */ \ *(unsigned int *) &__tramp[8] = 0x24048904; /* sub $4,(%esp) */ \ /* mov %eax, (%esp) */ \ *(unsigned char*) &__tramp[12] = 0xb8; \ *(unsigned int*) &__tramp[13] = __ctx; /* movl __ctx, %eax */ \ *(unsigned char *) &__tramp[17] = 0xe8; \ *(unsigned int*) &__tramp[18] = __dis; /* call __fun */ \ *(unsigned int*) &__tramp[22] = 0x83240c8b; /* mov (%esp), %ecx */ \ *(unsigned int*) &__tramp[26] = 0x0c8904c4; /* add $4, %esp */ \ *(unsigned char*) &__tramp[30] = 0x24; /* mov %ecx, (%esp) */ \ *(unsigned short*) &__tramp[31] = 0xc3; /* ret */ \ }
(In reply to comment #15) > #define FFI_INIT_TRAMPOLINE_THISCALL(TRAMP,FUN,CTX,SIZE) \ > { unsigned char *__tramp = (unsigned char*)(TRAMP); \ > unsigned int __fun = (unsigned int)(FUN); \ > unsigned int __ctx = (unsigned int)(CTX); \ > unsigned int __dis = __fun - (__ctx + 22); \ > *(unsigned int *) &__tramp[0] = 0x8924048b; /* mov (%esp), %eax */ \ > *(unsigned int *) &__tramp[4] = 0xec83240c; /* mov %ecx, (%esp) */ \ > *(unsigned int *) &__tramp[8] = 0x24048904; /* sub $4,(%esp) */ \ > /* mov %eax, (%esp) */ \ > *(unsigned char*) &__tramp[12] = 0xb8; \ > *(unsigned int*) &__tramp[13] = __ctx; /* movl __ctx, %eax */ \ > *(unsigned char *) &__tramp[17] = 0xe8; \ > *(unsigned int*) &__tramp[18] = __dis; /* call __fun */ \ > *(unsigned int*) &__tramp[22] = 0x83240c8b; /* mov (%esp), %ecx */ \ > *(unsigned int*) &__tramp[26] = 0x0c8904c4; /* add $4, %esp */ \ > *(unsigned char*) &__tramp[30] = 0x24; /* mov %ecx, (%esp) */ \ > *(unsigned short*) &__tramp[31] = 0xc3; /* ret */ \ > } IMO, you will need to keep 16byte stack alignment at function call, so: movl (%esp), %eax movl %ecx, (%esp) subl $12, %esp movl %eax, (%esp) movl __ctx, %eax call fun mov (%esp), %ecx addl $16, %esp jmp *%ecx
Ok, here is a variant treating stack-alignment for closure. ChangeLog 2012-01-31 Kai Tietz <ktietz@redhat.com> * src/prep_cif.c (ffi_prep_cif): Allow for X86_WIN32 also FFI_THISCALL. * src/x86/ffi.c (ffi_closure_THISCALL): Add prototype. (FFI_INIT_TRAMPOLINE_THISCALL): New trampoline code. (ffi_prep_closure_loc): Add FFI_THISCALL support. * src/x86/ffitarget.h (FFI_TRAMPOLINE_SIZE): Adjust size. * src/x86/win32.S (ffi_closure_THISCALL): New closure code for thiscall-calling convention. * testsuite/libffi.call/closure_thiscall.c: New test. Index: gcc/libffi/src/prep_cif.c =================================================================== --- gcc.orig/libffi/src/prep_cif.c +++ gcc/libffi/src/prep_cif.c @@ -93,7 +93,12 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff ffi_type **ptr; FFI_ASSERT(cif != NULL); +#ifndef X86_WIN32 FFI_ASSERT((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI)); +#else + FFI_ASSERT(abi > FFI_FIRST_ABI && abi <= FFI_DEFAULT_ABI + || abi == FFI_THISCALL); +#endif cif->abi = abi; cif->arg_types = atypes; Index: gcc/libffi/src/x86/ffi.c =================================================================== --- gcc.orig/libffi/src/x86/ffi.c +++ gcc/libffi/src/x86/ffi.c @@ -449,6 +449,8 @@ void FFI_HIDDEN ffi_closure_raw_SYSV (ff #ifdef X86_WIN32 void FFI_HIDDEN ffi_closure_STDCALL (ffi_closure *) __attribute__ ((regparm(1))); +void FFI_HIDDEN ffi_closure_THISCALL (ffi_closure *) + __attribute__ ((regparm(1))); #endif #ifdef X86_WIN64 void FFI_HIDDEN ffi_closure_win64 (ffi_closure *); @@ -608,6 +610,33 @@ ffi_prep_incoming_args_SYSV(char *stack, *(unsigned int*) &__tramp[6] = __dis; /* jmp __fun */ \ } +#define FFI_INIT_TRAMPOLINE_THISCALL(TRAMP,FUN,CTX,SIZE) \ +{ unsigned char *__tramp = (unsigned char*)(TRAMP); \ + unsigned int __fun = (unsigned int)(FUN); \ + unsigned int __ctx = (unsigned int)(CTX); \ + unsigned int __dis = __fun - (__ctx + 22); \ + unsigned short __size = (unsigned short)(SIZE); \ + *(unsigned int *) &__tramp[0] = 0x8324048b; /* mov (%esp), %eax */ \ + *(unsigned int *) &__tramp[4] = 0x4c8910ec; /* sub $16, %esp */ \ + *(unsigned int *) &__tramp[8] = 0x04890424; /* mov %ecx, 4(%esp) */ \ + *(unsigned char*) &__tramp[12] = 0x24; /* mov %eax, (%esp) */ \ + *(unsigned char*) &__tramp[13] = 0xb8; \ + *(unsigned int *) &__tramp[14] = __size; /* mov __size, %eax */ \ + *(unsigned int *) &__tramp[18] = 0x08244c8d; /* lea 8(%esp), %ecx */ \ + *(unsigned int *) &__tramp[22] = 0x4802e8c1; /* shr $2, %eax ; dec %eax */ \ + *(unsigned short*) &__tramp[26] = 0x0b74; /* jz 1f */ \ + *(unsigned int *) &__tramp[28] = 0x890c518b; /* 2b: mov 12(%eax), %edx */ \ + *(unsigned int *) &__tramp[32] = 0x04c18311; /* mov %edx, (%ecx) ; add $4, %edx */ \ + *(unsigned char*) &__tramp[36] = 0x48; /* dec %eax */ \ + *(unsigned short*) &__tramp[37] = 0xf575; /* jnz 2b ; 1f: */ \ + *(unsigned char*) &__tramp[39] = 0xb8; \ + *(unsigned int*) &__tramp[40] = __ctx; /* movl __ctx, %eax */ \ + *(unsigned char *) &__tramp[44] = 0xe8; \ + *(unsigned int*) &__tramp[45] = __dis; /* call __fun */ \ + *(unsigned char*) &__tramp[49] = 0xc2; /* ret */ \ + *(unsigned short*) &__tramp[50] = (__size + 12); /* ret (__size + 12) */ \ + } + #define FFI_INIT_TRAMPOLINE_STDCALL(TRAMP,FUN,CTX,SIZE) \ { unsigned char *__tramp = (unsigned char*)(TRAMP); \ unsigned int __fun = (unsigned int)(FUN); \ @@ -650,6 +679,13 @@ ffi_prep_closure_loc (ffi_closure* closu (void*)codeloc); } #ifdef X86_WIN32 + else if (cif->abi == FFI_THISCALL) + { + FFI_INIT_TRAMPOLINE_THISCALL (&closure->tramp[0], + &ffi_closure_THISCALL, + (void*)codeloc, + cif->bytes); + } else if (cif->abi == FFI_STDCALL) { FFI_INIT_TRAMPOLINE_STDCALL (&closure->tramp[0], Index: gcc/libffi/src/x86/ffitarget.h =================================================================== --- gcc.orig/libffi/src/x86/ffitarget.h +++ gcc/libffi/src/x86/ffitarget.h @@ -103,7 +103,7 @@ typedef enum ffi_abi { #define FFI_NATIVE_RAW_API 0 #else #ifdef X86_WIN32 -#define FFI_TRAMPOLINE_SIZE 13 +#define FFI_TRAMPOLINE_SIZE 52 #else #ifdef X86_WIN64 #define FFI_TRAMPOLINE_SIZE 29 Index: gcc/libffi/src/x86/win32.S =================================================================== --- gcc.orig/libffi/src/x86/win32.S +++ gcc/libffi/src/x86/win32.S @@ -170,6 +170,16 @@ ca_epilogue: ret ffi_call_win32 ENDP +ffi_closure_THISCALL PROC NEAR FORCEFRAME + push ebp + mov ebp, esp + sub esp, 40 + lea edx, [ebp -24] + mov [ebp - 12], edx /* resp */ + lea edx, [ebp + 12] /* account for stub return address on stack */ + jmp stub +ffi_closure_THISCALL ENDP + ffi_closure_SYSV PROC NEAR FORCEFRAME ;; the ffi_closure ctx is passed in eax by the trampoline. @@ -177,6 +187,7 @@ ffi_closure_SYSV PROC NEAR FORCEFRAME lea edx, [ebp - 24] mov [ebp - 12], edx ;; resp lea edx, [ebp + 8] +stub: mov [esp + 8], edx ;; args lea edx, [ebp - 12] mov [esp + 4], edx ;; &resp @@ -573,6 +584,19 @@ _ffi_call_win32: popl %ebp ret .ffi_call_win32_end: + .balign 16 + .globl _ffi_closure_THISCALL +#ifndef __OS2__ + .def _ffi_closure_THISCALL; .scl 2; .type 32; .endef +#endif +_ffi_closure_THISCALL: + pushl %ebp + movl %esp, %ebp + subl $40, %esp + leal -24(%ebp), %edx + movl %edx, -12(%ebp) /* resp */ + leal 12(%ebp), %edx /* account for stub return address on stack */ + jmp .stub .LFE1: # This assumes we are using gas. @@ -591,6 +615,7 @@ _ffi_closure_SYSV: leal -24(%ebp), %edx movl %edx, -12(%ebp) /* resp */ leal 8(%ebp), %edx +.stub: movl %edx, 4(%esp) /* args = __builtin_dwarf_cfa () */ leal -12(%ebp), %edx movl %edx, (%esp) /* &resp */ Index: gcc/libffi/testsuite/libffi.call/closure_thiscall.c =================================================================== --- /dev/null +++ gcc/libffi/testsuite/libffi.call/closure_thiscall.c @@ -0,0 +1,64 @@ +/* Area: closure_call (thiscall convention) + Purpose: Check handling when caller expects thiscall callee + Limitations: none. + PR: none. + Originator: <ktietz@redhat.com> */ + +/* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ +#include "ffitest.h" + +static void +closure_test_thiscall(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata) +{ + *(ffi_arg*)resp = + (int)*(int *)args[0] + (int)(*(int *)args[1]) + + (int)(*(int *)args[2]) + (int)(*(int *)args[3]) + + (int)(intptr_t)userdata; + + printf("%d %d %d %d: %d\n", + (int)*(int *)args[0], (int)(*(int *)args[1]), + (int)(*(int *)args[2]), (int)(*(int *)args[3]), + (int)*(ffi_arg *)resp); + +} + +typedef int (__thiscall *closure_test_type0)(int, int, int, int); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[17]; + int res; + void* sp_pre; + void* sp_post; + char buf[1024]; + + cl_arg_types[0] = &ffi_type_uint; + cl_arg_types[1] = &ffi_type_uint; + cl_arg_types[2] = &ffi_type_uint; + cl_arg_types[3] = &ffi_type_uint; + cl_arg_types[4] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_THISCALL, 4, + &ffi_type_sint, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_thiscall, + (void *) 3 /* userdata */, code) == FFI_OK); + + asm volatile (" movl %%esp,%0" : "=g" (sp_pre)); + res = (*(closure_test_type0)code)(0, 1, 2, 3); + asm volatile (" movl %%esp,%0" : "=g" (sp_post)); + /* { dg-output "0 1 2 3: 9" } */ + + printf("res: %d\n",res); + /* { dg-output "\nres: 9" } */ + + sprintf(buf, "mismatch: pre=%p vs post=%p", sp_pre, sp_post); + printf("stack pointer %s\n", (sp_pre == sp_post ? "match" : buf)); + /* { dg-output "\nstack pointer match" } */ + exit(0); +}
http://gcc.gnu.org/bugzilla/attachment.cgi?id=26537 Result after applied above patch Tested only of the following ExtraClassLoader md5test pr21785 pr26990 ProxyTest shatest StackTrace2 TestProxy Thread_Sleep Thread_Sleep_2 Throw_2 Test Run By Administrator on Wed Feb 1 14:09:46 2012 Target is i686-pc-mingw32 Host is i686-pc-mingw32 Build is i686-pc-cygwin === libjava tests === Schedule of variations: unix Running target unix Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target. Using /usr/share/dejagnu/config/unix.exp as generic interface file for target. Using /tmp/gcc/libjava/testsuite/config/default.exp as tool-and-target-specific interface file. WARNING: Assuming target board is the local machine (which is probably wrong). You may need to set your DEJAGNU environment variable. Running /tmp/gcc/libjava/testsuite/libjava.cni/cni.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jar/jar.exp ... FAIL: TestClosureGC output FAIL: libjava.jar/TestClosureGC.jar execution - gij test FAIL: simple output FAIL: libjava.jar/simple.jar execution - gij test Running /tmp/gcc/libjava/testsuite/libjava.jni/jni.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jvmti/jvmti-interp.exp ... Running /tmp/gcc/libjava/testsuite/libjava.jvmti/jvmti.exp ... Running /tmp/gcc/libjava/testsuite/libjava.lang/lang.exp ... FAIL: ExtraClassLoader execution - source compiled test FAIL: ExtraClassLoader -findirect-dispatch execution - source compiled test FAIL: ExtraClassLoader -O3 execution - source compiled test FAIL: ExtraClassLoader -O3 -findirect-dispatch execution - source compiled test FAIL: ProxyTest -O3 execution - source compiled test FAIL: ProxyTest -O3 -findirect-dispatch execution - source compiled test FAIL: StackTrace2 output - source compiled test FAIL: StackTrace2 -findirect-dispatch output - source compiled test FAIL: StackTrace2 -O3 output - source compiled test FAIL: StackTrace2 -O3 -findirect-dispatch output - source compiled test FAIL: TestProxy -O3 execution - source compiled test FAIL: TestProxy -O3 -findirect-dispatch execution - source compiled test FAIL: Thread_Sleep -O3 output - source compiled test FAIL: Thread_Sleep -O3 -findirect-dispatch output - source compiled test FAIL: Thread_Sleep_2 output - source compiled test FAIL: Thread_Sleep_2 -findirect-dispatch output - source compiled test FAIL: Thread_Sleep_2 -O3 output - source compiled test FAIL: Thread_Sleep_2 -O3 -findirect-dispatch output - source compiled test 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 Running /tmp/gcc/libjava/testsuite/libjava.loader/loader.exp ... FAIL: TestEarlyGC execution - source compiled test FAIL: TestMultiple output - source compiled test FAIL: TestParent output - source compiled test Running /tmp/gcc/libjava/testsuite/libjava.mauve/mauve.exp ... sh: /configure: No such file or directory FAIL: Mauve configure Running /tmp/gcc/libjava/testsuite/libjava.special/special.exp ... Running /tmp/gcc/libjava/testsuite/libjava.verify/verify.exp ... === libjava Summary === # of expected passes 109 # of unexpected failures 30 # of untested testcases 15
Author: ktietz Date: Wed Feb 1 10:46:36 2012 New Revision: 183794 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183794 Log: PR target/51500 * interpret.cc (_Jv_init_cif): Handle thiscall convention for 32-bit Windows. * java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Likewise. * java/lang/reflect/natVMProxy.cc (invoke_t): Add thiscall-attribute for 32-bit Windows. Modified: trunk/libjava/ChangeLog trunk/libjava/interpret.cc trunk/libjava/java/lang/reflect/natMethod.cc trunk/libjava/java/lang/reflect/natVMProxy.cc
Created attachment 26573 [details] proposed patch for workaround Throw_2 failure it was call %ebx for sig_pat. and Throw_2 test passed with this patch.
Created attachment 26574 [details] proposed patch for workaround TestEarlyGC failure it deals raw closure stub with thiscall calling convention. TestEarlyGC test passed with this patch.
Breakpoint 9, _Unwind_RaiseException (exc=0xa92820) at ../.././libgcc/unwind.inc:88 88 uw_init_context (&this_context); (gdb) bt #0 _Unwind_RaiseException (exc=0xa92820) at ../.././libgcc/unwind.inc:88 #1 0x6968e0a0 in _Jv_Throw (value=0xbfeb40) at ../.././libjava/exception.cc:132 #2 0x6969fc07 in _Jv_InterpMethod::run (retp=0x22fe08, args=0x22fe28, meth=0xbf8d80) at ../.././libjava/interpret-run.cc:2695 #3 0x69ce1125 in ffi_closure_raw_SYSV () at ../.././libffi/src/x86/win32.S:723 #4 0x00f90015 in ?? () #5 0x696fa456 in gnu.java.lang.MainThread.run()void (this=0xbfdf60) at /tmp/gcc/libjava/gnu/java/lang/MainThread.java:106 #6 0x696cbfd2 in _Jv_ThreadRun (thread=0xbfdf60) at ../.././libjava/java/lang/natThread.cc:335 #7 0x69683f5d in _Jv_RunMain (vm_args=0x22ff30, klass=0x0, name=0x3d883a "ExtraClassLoader", argc=0x1, argv=0x3d88d4, is_jar=0x0) at ../.././libjava/prims.cc:1795 #8 0x66bc6bed in main (argc=0x4, argv=0x3d88c8) at ../.././libjava/gij.cc:333 #9 0x004010fd in __mingw_CRTStartup () at ../../.././winsup/mingw/crt1.c:244 #10 0x00000408 in ?? () #11 0x7ffdc000 in ?? () #12 0x00000000 in ?? () (gdb) c Continuing. Breakpoint 10, uw_frame_state_for (context=context@entry=0x22f948, fs=fs@entry=0x22f9c8) at ../.././libgcc/unwind-dw2.c:1187 1187 return MD_FALLBACK_FRAME_STATE_FOR (context, fs); (gdb) bt #0 uw_frame_state_for (context=context@entry=0x22f948, fs=fs@entry=0x22f9c8) at ../.././libgcc/unwind-dw2.c:1187 #1 0x6e9547f8 in _Unwind_RaiseException (exc=0xa92820) at ../.././libgcc/unwind.inc:99 #2 0x6968e0a0 in _Jv_Throw (value=0xbfeb40) at ../.././libjava/exception.cc:132 #3 0x6969fc07 in _Jv_InterpMethod::run (retp=0x22fe08, args=0x22fe28, meth=0xbf8d80) at ../.././libjava/interpret-run.cc:2695 #4 0x69ce1125 in ffi_closure_raw_SYSV () at ../.././libffi/src/x86/win32.S:723 #5 0x00f90015 in ?? () #6 0x696fa456 in gnu.java.lang.MainThread.run()void (this=0xbfdf60) at /tmp/gcc/libjava/gnu/java/lang/MainThread.java:106 #7 0x696cbfd2 in _Jv_ThreadRun (thread=0xbfdf60) at ../.././libjava/java/lang/natThread.cc:335 #8 0x69683f5d in _Jv_RunMain (vm_args=0x22ff30, klass=0x0, name=0x3d883a "ExtraClassLoader", argc=0x1, argv=0x3d88d4, is_jar=0x0) at ../.././libjava/prims.cc:1795 #9 0x66bc6bed in main (argc=0x4, argv=0x3d88c8) at ../.././libjava/gij.cc:333 #10 0x004010fd in __mingw_CRTStartup () at ../../.././winsup/mingw/crt1.c:244 #11 0x00000408 in ?? () #12 0x7ffdc000 in ?? () #13 0x00000000 in ?? () (gdb) si 0x6e953cbd in i386_w32_fallback_frame_state (fs=0x22f9c8, context=<optimized out>) at ./md-unwind-support.h:134 134 if (SIG_PAT1 || SIG_PAT2 || SIG_SEH1 || SIG_SEH2) (gdb) p context $1 = <optimized out> (gdb) up #1 uw_frame_state_for (context=context@entry=0x22f948, fs=fs@entry=0x22f9c8) at ../.././libgcc/unwind-dw2.c:1187 1187 return MD_FALLBACK_FRAME_STATE_FOR (context, fs); (gdb) p context $2 = (struct _Unwind_Context *) 0x22f948 (gdb) p *context $3 = { reg = {0x22fa8c, 0x0, 0x22fa90, 0x22fde4, 0x0, 0x22fe20, 0x22fe1c, 0x22fdec, 0x22fe24, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, cfa = 0x22fe28, ra = 0xf90015, lsda = 0x0, bases = { tbase = 0x0, dbase = 0x0, func = 0x69ce1100 }, flags = 0x40000000, version = 0x0, args_size = 0x0, by_value = "" } (gdb) bt #0 0x6e953cbd in i386_w32_fallback_frame_state (fs=0x22f9c8, context=<optimized out>) at ./md-unwind-support.h:134 #1 uw_frame_state_for (context=context@entry=0x22f948, fs=fs@entry=0x22f9c8) at ../.././libgcc/unwind-dw2.c:1187 #2 0x6e9547f8 in _Unwind_RaiseException (exc=0xa92820) at ../.././libgcc/unwind.inc:99 #3 0x6968e0a0 in _Jv_Throw (value=0xbfeb40) at ../.././libjava/exception.cc:132 #4 0x6969fc07 in _Jv_InterpMethod::run (retp=0x22fe08, args=0x22fe28, meth=0xbf8d80) at ../.././libjava/interpret-run.cc:2695 #5 0x69ce1125 in ffi_closure_raw_SYSV () at ../.././libffi/src/x86/win32.S:723 #6 0x00f90015 in ?? () #7 0x696fa456 in gnu.java.lang.MainThread.run()void (this=0xbfdf60) at /tmp/gcc/libjava/gnu/java/lang/MainThread.java:106 #8 0x696cbfd2 in _Jv_ThreadRun (thread=0xbfdf60) at ../.././libjava/java/lang/natThread.cc:335 #9 0x69683f5d in _Jv_RunMain (vm_args=0x22ff30, klass=0x0, name=0x3d883a "ExtraClassLoader", argc=0x1, argv=0x3d88d4, is_jar=0x0) at ../.././libjava/prims.cc:1795 #10 0x66bc6bed in main (argc=0x4, argv=0x3d88c8) at ../.././libjava/gij.cc:333 #11 0x004010fd in __mingw_CRTStartup () at ../../.././winsup/mingw/crt1.c:244 #12 0x00000408 in ?? () #13 0x7ffdc000 in ?? () ---Type <return> to continue, or q <return> to quit--- #14 0x00000000 in ?? () attachment 26573 [details] didn't solve case where exception does we need to feed dwarf2 frame info into closure trampoline in win32?
(In reply to comment #22) > Breakpoint 9, _Unwind_RaiseException (exc=0xa92820) > at ../.././libgcc/unwind.inc:88 > 88 uw_init_context (&this_context); > (gdb) bt > #0 _Unwind_RaiseException (exc=0xa92820) at ../.././libgcc/unwind.inc:88 > #1 0x6968e0a0 in _Jv_Throw (value=0xbfeb40) > at ../.././libjava/exception.cc:132 > #2 0x6969fc07 in _Jv_InterpMethod::run (retp=0x22fe08, args=0x22fe28, > meth=0xbf8d80) at ../.././libjava/interpret-run.cc:2695 the message of the exception was 'attempt to use uninitialized class loader'
Created attachment 26584 [details] proposed patch for workaround TestEarlyGC failure fixed wrong assumption to the code. but got following in ExtraClassLoader test Starting program: /tmp/gcc/i686-pc-mingw32/libjava/.libs/gij -cp D:\\cygwin\\tmp\\gcc\\libjava\\testsuite\\libjava.lang\\ExtraClassLoader.jar ExtraClassLoader [New Thread 5268.0x140c] [New Thread 5268.0xd84] Exception in thread "main" java.lang.SecurityException: attempt to use uninitialized class loader at java.lang.Throwable.<init>(/tmp/gcc/libjava/classpath/java/lang/Throwable.java:161) at java.lang.ClassLoader.checkInitialized(/tmp/gcc/libjava/classpath/java/lang/Exception.java:78) at java.lang.ClassLoader.findLoadedClass(/tmp/gcc/libjava/java/lang/ClassLoader.java:694) at java.lang.Class.forName(/tmp/gcc/i686-pc-mingw32/libjava/../.././libjava/java/lang/natClass.cc:105) at ExtraClassLoader.main(ExtraClassLoader.java:8) [Inferior 1 (process 5268) exited with code 01] (gdb)
Fixed so far. Remaining part is about exception.cc and part of a different bug-report