OpenJDK 8 and fastdebug

Chris Dennis cdennis at terracottatech.com
Fri Apr 20 10:57:33 PDT 2012


The last time I tried this you needed to patch binutils on Mac OS because of the tighter restrictions on accessing "environ".

You'll need to do something like this (I forget where it's used):

#ifdef __APPLE__
#include <crt_externs.h>
#define environ (*_NSGetEnviron())
#endif

On Apr 20, 2012, at 1:42 PM, Volker Simonis wrote:

> Actually there is no.
> 
> But it's very easy to build hsdis - it's just one .c and one .h file.
> You just need to build binutils for your platform first (.configure;
> make) and than compile and link hsdis.c against libbfd.a, libopcodes.a
> and libiberty.a from binutils.
> This all can easily be done manually with just a few commands but it
> would be of course much better if you could provide a patch for the
> Makefile:)
> 
> 
> On Fri, Apr 20, 2012 at 6:52 PM, Henri Gomez <henri.gomez at gmail.com> wrote:
>> I'll look into build logs (thanks Jenkins)
>> 
>> BTW, I didn't see OSX or Darwin support into hsdis Makefile.
>> 
>> Le 20 avr. 2012 à 17:08, Volker Simonis <volker.simonis at gmail.com> a écrit :
>> 
>>> Somehow you managed to build a "fastdebug" JDK with a still optimized
>>> HotSpot VM:
>>> 
>>> OpenJDK 64-Bit Server VM (build 24.0-b04, mixed mode)
>>> 
>>> For -XX:+PrintOptoAssembly to work, you need a debug or fastdebug VM:
>>> 
>>> OpenJDK 64-Bit Server VM (build 22.0-b01-internal-jvmg, mixed mode)
>>> 
>>> You can easily build it from hotspot/src/make with these commands
>>> 
>>> ALT_BOOTDIR=<java_7_directory>
>>> ALT_OUTPUTDIR=<your_favourite_output_dir> make jvmg
>>> ALT_BOOTDIR=<java_7_directory>
>>> ALT_OUTPUTDIR=<your_favourite_output_dir> make fastdebug
>>> 
>>> for the debug and fastdebug case.
>>> 
>>> Or you can try to find out why SKIP_FASTDEBUG_BUILD=false hasn't been
>>> properly propagated into the HotSpot make file:)
>>> 
>>> Regards,
>>> Volker
>>> 
>>> On Fri, Apr 20, 2012 at 1:58 PM, Henri Gomez <henri.gomez at gmail.com> wrote:
>>>> Well, it seems my build is not fully debug enabled :
>>>> 
>>>> java -version -XX:+PrintOptoAssembly
>>>> openjdk version "1.8.0-jdk8-b30-x64-lambda-fastdebug"
>>>> OpenJDK Runtime Environment (build 1.8.0-jdk8-b30-x64-lambda-fastdebug-20120420)
>>>> OpenJDK 64-Bit Server VM (build 24.0-b04, mixed mode)
>>>> 
>>>> ---
>>>> 
>>>> java -XX:+PrintOptoAssembly
>>>> Unrecognized VM option 'PrintOptoAssembly'
>>>> Error: Could not create the Java Virtual Machine.
>>>> Error: A fatal exception has occurred. Program will exit.
>>>> 
>>>> ---
>>>> 
>>>> java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly
>>>> OpenJDK 64-Bit Server VM warning: PrintAssembly is enabled; turning on
>>>> DebugNonSafepoints to gain additional output
>>>> Could not load hsdis-amd64.dylib; library not loadable; PrintAssembly
>>>> is disabled
>>>> Syntaxe : java [-options] class [args...]
>>>> 
>>>> Hum ;-(
>>>> 
>>>> 2012/4/20 Remi Forax <forax at univ-mlv.fr>:
>>>>> Just hsdis, but maybe the one from Graal that use a better assembler syntax.
>>>>> 
>>>>> Rémi
>>>>> 
>>>>> Sent from my Phone
>>>>> 
>>>>> ----- Reply message -----
>>>>> From: "Krystal Mok" <rednaxelafx at gmail.com>
>>>>> To: "Remi Forax" <forax at univ-mlv.fr>
>>>>> Cc: <jdk8-dev at openjdk.java.net>
>>>>> Subject: OpenJDK 8 and fastdebug
>>>>> Date: Fri, Apr 20, 2012 09:44
>>>>> I see. That makes sense.BTW, is it hsdis, or is there a new disassembler plugin?
>>>>> 
>>>>> - Kris
>>>>> 
>>>>> On Fri, Apr 20, 2012 at 3:35 PM, Remi Forax <forax at univ-mlv.fr> wrote:
>>>>> 
>>>>> The idea is to bundle jadis with the fast debug VM.
>>>>> 
>>>>> Rémi
>>>>> 
>>>>> Sent from my Phone
>>>>> 
>>>>> 
>>>>> ----- Reply message -----
>>>>> From: "Krystal Mok" <rednaxelafx at gmail.com>
>>>>> To: "Rémi Forax" <forax at univ-mlv.fr>
>>>>> 
>>>>> Cc: <jdk8-dev at openjdk.java.net>
>>>>> Subject: OpenJDK 8 and fastdebug
>>>>> Date: Fri, Apr 20, 2012 08:55
>>>>> 
>>>>> 
>>>>> PrintAssembly is available in product builds, too. You'll just need to set -XX:+UnlockDiagnosticVMOptions before setting -XX:+PrintAssembly.
>>>>> 
>>>>> On the other hand, -XX:+PrintOptoAssembly is only available in a debug build.
>>>>> 
>>>>> - Kris
>>>>> 
>>>>> On Fri, Apr 20, 2012 at 2:00 PM, Rémi Forax <forax at univ-mlv.fr> wrote:
>>>>> 
>>>>> 
>>>>> On 04/20/2012 07:28 AM, Henri Gomez wrote:
>>>>> 
>>>>> 
>>>>> Just set
>>>>> 
>>>>> 
>>>>> 
>>>>> SKIP_FASTDEBUG_BUILD=false
>>>>> 
>>>>> 
>>>>> 
>>>>> (I don't know what role DEBUG_NAME plays)
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> Relative question, how can I check a java exec is in fastdebug mode ?
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> Check "java -version", it will show it is fastdebug.
>>>>> 
>>>>> 
>>>>> It seems good (http://openjdk-osx-build.googlecode.com/files/OpenJDK-OSX-8-x64-lambda-fastdebug-jdk-b30-20120420.dmg)
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> openjdk version "1.8.0-jdk8-b30-x64-lambda-fastdebug"
>>>>> 
>>>>> OpenJDK Runtime Environment (build 1.8.0-jdk8-b30-x64-lambda-fastdebug-20120420)
>>>>> 
>>>>> OpenJDK 64-Bit Server VM (build 24.0-b04, mixed mode)
>>>>> 
>>>>> 
>>>>> 
>>>>> Thanks
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> Many thanks, Henry,
>>>>> 
>>>>> now people can use -XX:+PrintAssembly :)
>>>>> 
>>>>> 
>>>>> 
>>>>> Rémi



More information about the jdk8-dev mailing list