Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm Sender: cygwin-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com Message-ID: <373B6E50.82BF93F7@doc.ic.ac.uk> Date: Fri, 14 May 1999 01:29:04 +0100 From: Kaveh Goudarzi X-Mailer: Mozilla 4.5 [en] (Win98; U) X-Accept-Language: en MIME-Version: 1.0 To: Cygwin Cygnus Subject: cygnus, egcs and jni bug ? Content-Type: multipart/mixed; boundary="------------CD77B0DE456EEE8D6A48DD48" --------------CD77B0DE456EEE8D6A48DD48 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi, I'm trying to create a dll using egcs for use with Java but find that functions returning double or float values don't work properly. That is in the conversion between C double to Java double something goes wrong. I was wondering if anyone else has had this problem or it's peculiar to my setup. Sample code, setup and compile options follow. thanks in advance, Kaveh. my setup is as follow : Win98 on a PII 300 MHz IBM ThinkPad Cygnus 20.1 chaman:~% gcc -v Reading specs from E:\Unix\Cygnus20.1\cygwin-b20\H-i586-cygwin32\lib\gcc-lib\i586-cygwin32/egcs-2.91.60/specs gcc version egcs-2.91.60 19981201 (egcs-1.1.1 release) chaman:~% java -version java version "1.2" Classic VM (build JDK-1.2-V, native threads) I've also applied the necessary patch to jni_md.h I've attatched the sample program which illustrates this. The Java class has three static native methods returnInt, returnFloat and returnDouble. The native C counterparts simply print the input parameter and return it. Running the code gives me : chaman:~/java/jni% java Bug 10 3.14 3.141592 C returning input parameter 10 Java Calling native returnInt ( 10 ) = 10 C returning input parameter 3.14 Java Calling native returnFloat ( 3.14 ) = NaN C returning input parameter 3.14159 Java Calling native returnDouble ( 3.141592 ) = NaN chaman:~/java/jni% Bug.java contains the java code, BugImp.c contains the C sources. I compile the code as follows : chaman:~/java/jni% make javac Bug.java javah Bug gcc -c -DBUILDING_DLL=1 -D_DLL=1 -I. -Ie:/Java/jdk1.2/include -Ie:/Java/jdk1.2/include/win32 -g -Wall -O2 -o BugImp.o BugImp.c dllwrap --output-def bug.def --add-stdcall-alias --driver-name gcc -o bug.dll BugImp.o -Wl,-e,__cygwin_noncygwin_dll_entry AT 12 -s Warning: no export definition file provided dllwrap will create one, but may not be what you want chaman:~/java/jni% --------------CD77B0DE456EEE8D6A48DD48 Content-Type: application/x-unknown-content-type-cfile; name="BugImp.c" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="BugImp.c" I2luY2x1ZGUgPGpuaS5oPg0KI2luY2x1ZGUgPHN0ZGlvLmg+DQoNCkpOSUVYUE9SVCBqZG91 YmxlIEpOSUNBTEwgSmF2YV9CdWdfcmV0dXJuRG91YmxlDQogIChKTklFbnYgKmVudiwgamNs YXNzIGNsYXp6LCBqZG91YmxlIGQpDQp7DQogIHByaW50ZiAoIlx0QyByZXR1cm5pbmcgaW5w dXQgcGFyYW1ldGVyICVnXG4iLCBkICkgOw0KICByZXR1cm4gZCA7DQp9DQoNCkpOSUVYUE9S VCBqZmxvYXQgSk5JQ0FMTCBKYXZhX0J1Z19yZXR1cm5GbG9hdA0KICAoSk5JRW52ICplbnYs IGpjbGFzcyBjbGF6eiwgamZsb2F0IGYpDQp7DQogIHByaW50ZiAoIlx0QyByZXR1cm5pbmcg aW5wdXQgcGFyYW1ldGVyICVnXG4iLCBmICkgOw0KICByZXR1cm4gZiA7DQp9DQoNCg0KSk5J RVhQT1JUIGppbnQgSk5JQ0FMTCBKYXZhX0J1Z19yZXR1cm5JbnQNCiAgKEpOSUVudiAqZW52 LCBqY2xhc3MgY2xhenosIGppbnQgaSkNCnsNCiAgcHJpbnRmICgiXHRDIHJldHVybmluZyBp bnB1dCBwYXJhbWV0ZXIgJWRcbiIsIChpbnQpIGkgKSA7DQogIHJldHVybiBpIDsNCn0NCg0K DQppbnQgbWFpbiAoIGludCBhcmdjICwgY2hhciAqIGFyZ3YgW10gKQ0Kew0KICBkb3VibGUg ZCA9IDMuMTMxNCA7DQogIGpkb3VibGUgamQgOw0KICBqZCA9IChqZG91YmxlKSBkIDsNCg0K ICBwcmludGYgKCJcdEMgQ2FsbGluZyBKYXZhIG5ldGl2ZSBtZXRob2RzIFxuIikgOw0KICBq ZCA9IEphdmFfQnVnX3JldHVybkRvdWJsZSAoIE5VTEwsIE5VTEwsIDMuMTQxNSApIDsNCiAg ZCA9IChkb3VibGUpIGpkIDsNCiAgamQgPSAoamRvdWJsZSkgZCA7DQogIHByaW50ZiAoInJl dHVybiB2YWwgPSAlZ1xuIiwgKGRvdWJsZSkgamQgKSA7DQoNCiAgcmV0dXJuIDAgOw0KfQ0K --------------CD77B0DE456EEE8D6A48DD48 Content-Type: application/x-unknown-content-type-JBuilder.JavaFile; name="Bug.java" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="Bug.java" aW1wb3J0IGphdmEubGFuZy4qIDsNCmltcG9ydCBqYXZhLmlvLiogOw0KDQpwdWJsaWMgY2xh c3MgQnVnDQp7DQoNCiAgc3RhdGljDQogICAgew0KICAgICAgU3lzdGVtLmxvYWRMaWJyYXJ5 ICgiYnVnIikgOw0KICAgIH0NCg0KICBwdWJsaWMgc3RhdGljIG5hdGl2ZSBpbnQgcmV0dXJu SW50ICggaW50IGkgKTsNCiAgcHVibGljIHN0YXRpYyBuYXRpdmUgZmxvYXQgcmV0dXJuRmxv YXQgKCBmbG9hdCBmICk7DQogIHB1YmxpYyBzdGF0aWMgbmF0aXZlIGRvdWJsZSByZXR1cm5E b3VibGUgKCBkb3VibGUgZCApOw0KDQogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluICggU3Ry aW5nIFtdIGFyZ3YgKQ0KICAgIHsNCiAgICAgIC8vIGFyZyBjaGVjaw0KICAgICAgaWYgKCBh cmd2Lmxlbmd0aCA8IDMgKQ0KCXsNCglTeXN0ZW0uZXJyLnByaW50bG4gKCJVc2FnZTogamF2 YSBCdWcgaW50VmFsIEZsb2F0VmFsIERvdWJsZVZhbFxuIik7DQoJU3lzdGVtLmV4aXQgKDEp IDsNCgl9DQoNCiAgICAgIC8vIHJlYWQgYXJncyBmcm9tIGNvbW1hbmQgbGluZQ0KICAgICAg aW50IGkgPSBJbnRlZ2VyLnBhcnNlSW50IChhcmd2WzBdKSA7DQogICAgICBmbG9hdCBmID0g IEZsb2F0LnBhcnNlRmxvYXQgKGFyZ3ZbMV0pIDsNCiAgICAgIGRvdWJsZSBkID0gRG91Ymxl LnBhcnNlRG91YmxlIChhcmd2WzJdKSA7DQoNCiAgICAgIC8vIGNhbGwgZnVuY3Rpb25zIGFu ZCBkaXNwbGF5IHJldHVybiB2YWxzDQogICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCJKYXZh IENhbGxpbmcgbmF0aXZlIHJldHVybkludCAoICIgDQoJCQkgICsgaSArICIgKSA9ICIgKyBy ZXR1cm5JbnQgKGkpICkgOw0KDQogICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCJKYXZhIENh bGxpbmcgbmF0aXZlIHJldHVybkZsb2F0ICggIiANCgkJCSAgKyBmICsgIiApID0gIiArIHJl dHVybkZsb2F0IChmKSApIDsNCg0KICAgICAgU3lzdGVtLm91dC5wcmludGxuICgiSmF2YSBD YWxsaW5nIG5hdGl2ZSByZXR1cm5Eb3VibGUgKCAiIA0KCQkJICArIGQgKyAiICkgPSAiICsg cmV0dXJuRG91YmxlIChkKSApIDsNCiAgICB9DQp9DQo= --------------CD77B0DE456EEE8D6A48DD48 Content-Type: text/plain; charset=us-ascii -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com --------------CD77B0DE456EEE8D6A48DD48--