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