Hi Etienne,
Enrico Migliore wrote:
I debugged the classical HelloWorld class with DDD and found the problem
in the following function:
_svmf_init(void)
{
pthread_once(...); <---- SEGSEGV signal
That's definitely a cygwin bug. I see.
The SEGSEGV signal is issued by Windows when the program does an
"Illegal storage access".
The following simple example does receive the signal:
void my_function (char *pippo)
{
pippo[0] = '\0';
}
int main (int argc, char** argv)
{
my_function("Hello World");
return 0;
}
Yet, I remember, that in JCHEVM I had to remove the POPT_AUTOHELP string
in a struct in order not to receive that signal,
therefore, I'm pretty much sure that somewhere in the Pthread library
there's an access to an area used to initialize constants:
something that maybe GCC likes but Windows doesn't.
That's just a guess.
In any case, before starting the port, I think that I and the people who
would like to help, will have analyze the code file by file.
Actually, you should really start looking at:
src/libsablevm/include/jni_system_specific.h
src/libsablevm/system.c
src/libsablevm/system.h
These are the files which contain system-specific code. Outside of
these files, the only real dependencies are POSIX calls. [I think
there's some exception in System.getCurrentMillis() implementation that
shouldn't even be in the VM to start with, as there's no VM-specific
functionality in it... I had to live with Classpath's decisions on
their VM interface.]
If you really want to read every single source file (!), then you should
definitely:
0.1) [prerequisite] read the JVMS fully, a few times over
0.2) [prerequisite] read the JNI spec fully, a few times over
1) read my Ph.D. thesis
2) read the documents in doc/
3) ask questions on sablevm-devel@ for clarifications
Going that deep shouldn't be necessary, though. Identifying POSIX
dependencies and replacing them with VMI-port calls should be sufficient
to start with.
Etienne
The documentation included in SableVM trunk is more than good.
Therefore, I would like to try do this job. I'm not sure I'll succeed
but I want to
As far as the port is concerned, there are 3 things to talk about:
build system in MSVC
-----------------------
to my knowledge, MSVC doesn't have a build system like UNIX (autotool +
configure) therefore, I think that the "config.h" file will have to be
built manually.
how to modify the source files?
------------------------------
Let's say that removing a POSIX dependancy in a SableVM file means:
replacing some lines of codes and replacing some include files. How am I
suppost to deal with this kind of thing? Should I modify the trunk or my
sandbox?
how to track source modifications
----------------------------------
Let's say that one source file gets modified by one of SableVM
developers, and another is added to the trunk. Should I rely on SVN to
know where the modifications were done?
ciao,
Enrico
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]