How to test a fresh HotSpot build on Windows without building the whole JDK?
Tim.Bell at Sun.COM
Wed Nov 19 11:43:50 PST 2008
Volker Simonis wrote:
> Here are my findings so far:
[... snip! ...]
> So apparently I have to link jvm.dll somhow specially if I use VS2005
> and use "mt.exe" in order to add a mainfest to it. Does anybody has
> experience with this?
The VS2005 and VS2008 runtime libraries (msvcr80.dll or msvcr90.dll respectively) will refuse
to run if they do not find the correct 'manifest' information when loaded.
Starting with VS2005, every use of the ld command to create a .dll or a .exe will also create a
.manifest file in the same directory. That manifest is what the runtime library is checking.
If you move or copy a .exe or a .dll, your choices are:
1) Also put the .manifest file there so the runtime can find it.
2) Use the mt command to insert the manifest as an attribute on the .dll or .exe file just
created (the 'ld' command itself will not do that). Once you add the manifest as an attribute,
you don't need to keep track of the extra .manifest file.
The changes in 6764892 [Note 1] implement option 2. This is what all the work under 6523947
> Thank you and best regards,
> PS: I just rememered the change "6764892: VS2008 changes required to
> compile hotspot sources" which has been recently posted on the list:
> But it was in hotspot-comp and I synced jdk7:( I'll try it tomorrow -
> looks like this could solve my problems...
You want these changes. They are headed for the JDK7 HotSpot master, but have not been pushed
up yet. I just marked 6764892 as public, so it should be pushed in the bug parade in the next
few days. The relevant information is in the changeset referenced in [Note 1].
Since you are building your JVM using VS2005, you will get msvcr80.dll with it. Inserting that
jvm.dll into a pre-built JDK 7 will be problematic because the current JDK 7 builds use Visual
Studio 2003 and hence msvcr71.dll with all other native libraries. In our experience, nothing
good will happen if you try mixing two runtimes in the same process address space. As a result
of this incompatibility, I have been doing full control builds of the entire JDK while working
on the fixes for 6523947 and related bug-IDs 6728735, 6733976, 6764892, 6759959, 6754862 [Note 2].
If you can build the gamma launcher using VS2005 and run that to quickly test your JVM you will
probably be better off.
Hope this helps -
More information about the hotspot-dev