snowdosker wrote:

Hello, Enrico

2) in order to proceed, let's "align" our development environment in terms

of source code modifications. In fact, to build jchevm, just like you, I had
to add some declarations in some header files, and modify the pread()
call into a read(). My proposal is the following:
let's install the new versions of Cygwin, Classpath, and jchevm,
build them from scratch, produce a written document with all the steps
and modifications, and post it this mailing list.
Afterwards, we will be able to write and debug some test cases.

what do you think?


I think that I already did this since started.. Just recorded all (or I hope all) I did
Below is copy of my records....


Install Cygwin ( http://developer.classpath.org/mediation/ClasspathOnCygwin )
   + gcc-core
   + gcc-g++
   + gcc-java
   + make
   + zip
   + GTK
   + pkgconfig
   + autocofig
   + automake
   + libtool
(not sure that I recorded all optional packages I installed)


Download  jikes  from
http://prdownloads.sourceforge.net/jikes/jikes-1.22.tar.bz2?download

Apply this patch
http://sourceforge.net/tracker/index.php?func=detail&aid=1202863&group_id=128803&atid=712760


build jikes ( cygwin version )
-----------------
$ tar -xjf jikes-1.22.tar.bz2
$ cd jikes-1.22
$ ./configure
$ make && make install



Build Classpth-0.20
-----------------
$ ./configure --with-jikes --enable-gtk-peer --enable-jni
$ make
$install


Build JCHEVM
-----------------
$ ./configure --with-classpath=/usr/local/classpath
Add cache clean to  autogen.sh  before each call automake or autoconfig
--
rm -rf autom4te*.cache
echo "running automake"
....
rm -rf autom4te*.cache
echo "running autoconf"
---


libjc/definitions.h    ADD
--------------------
#if defined (__CYGWIN__)
#define PTHREAD_STACK_MIN 1024
#endif


libjc/properties.c    ADD
--------------------
#if defined(__CYGWIN__)
   if (_jc_set_property(env,
       "user.timezone", _tzname[0]) != JNI_OK)
       return JNI_ERR;
#else

   if (_jc_set_property(env,
       "user.timezone", localtime(&now)->tm_zone) != JNI_OK)
       return JNI_ERR;
#endif


libjc/os_functions.c  ADD
--------------------
/************************************************************************
*                CYGWIN                    *
************************************************************************/

#elif defined(__CYGWIN__)

#include <unistd.h>

int
_jc_num_cpus(_jc_env *env)
{

      return (int)sysconf(_SC_NPROCESSORS_ONLN);
}



in libjc/zip.c   replace
---------------------------------
pread(3) with  lseek,read


libjc/arch/arch_definitions.h
-----------------------------------
Remove:
#define _JC_LIBRARY_FMT        "lib%s.so"

Add:
#define _JC_LIBRARY_FMT        "lib%s.dll.a"



libjc/arch/i386/i386_libjc.h    ( not sure for this is correct! )
-------------------
#elif defined(__CYGWIN__)
extern inline const void *
_jc_jmpbuf_sp(const sigjmp_buf buf)
{
   return (const void *)buf[7];
}




libjc\native\java_lang_VMThread.c  ADD
--------------------------------------------
/* Cygwin pthread_create() with supplied attributes is completely broken! */
#ifdef __CYGWIN__
#define _JC_NO_THREAD_ATTRIBUTES    1
#endif



libjc\jc_invoke.c
---------------------------------------------
in "static const struct poptOption jc_popt_options[] = {" remove POPT_AUTOHELP
in libjc\arch\arch_definitions.h
redefine dll name format for cygwin
--------------------------------
#if defined(__CYGWIN__)
 #define _JC_LIBRARY_FMT        "cyg%s-0.dll"
#elif
 #define _JC_LIBRARY_FMT        "lib%s.dll.a"
#endif

Hi Ivan,

ok, in order to double check these guidelines, I'll do the whole
build from scratch and see if they lead me to the point where you are now.
I'll have the time to do it tomorrow or wednsday, though.

In the mean time, could you try to: apply the latest Archie's patch, enable the assertions,
and see where jchevm exits?

Enrico

Reply via email to