comparison src/share/tools/hsdis/README @ 100:c7c777385a15

6667042: PrintAssembly option does not work without special plugin Summary: remove old private plugin interface, simplify, rework old plugin to use unchanged Gnu sources Reviewed-by: kvn, rasbold
author jrose
date Wed, 02 Apr 2008 12:09:59 -0700
parents
children 67a2f5ba5582
comparison
equal deleted inserted replaced
99:8a4ef4e001d3 100:c7c777385a15
1 Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
2 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
3
4 This code is free software; you can redistribute it and/or modify it
5 under the terms of the GNU General Public License version 2 only, as
6 published by the Free Software Foundation.
7
8 This code is distributed in the hope that it will be useful, but WITHOUT
9 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 version 2 for more details (a copy is included in the LICENSE file that
12 accompanied this code).
13
14 You should have received a copy of the GNU General Public License version
15 2 along with this work; if not, write to the Free Software Foundation,
16 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17
18 Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
19 CA 95054 USA or visit www.sun.com if you need additional information or
20 have any questions.
21
22 ________________________________________________________________________
23
24 'hsdis': A HotSpot plugin for disassembling dynamically generated code.
25
26 The files in this directory (Makefile, hsdis.[ch], hsdis-demo.c)
27 are built independently of the HotSpot JVM.
28
29 To use the plugin with a JVM, you need a new version that can load it.
30 If the product mode of your JVM does not accept -XX:+PrintAssembly,
31 you do not have a version that is new enough.
32
33 * Building
34
35 To build this project you need a build of Gnu binutils to link against.
36 It is known to work with binutils 2.17.
37
38 The makefile looks for this build in $BINUTILS, or (if that is not set),
39 in .../binutils-2.17-$LIBARCH, where LIBARCH (as in HotSpot) is one of
40 the jre subdirectory keywords i386, amd64, sparc, sparcv9, etc.
41
42 To build Gnu binutils, first download a copy of the software:
43 http://directory.fsf.org/project/binutils/
44
45 Unpack the binutils tarball into an empty directory:
46 chdir ../../../../..
47 tar -xzf - < ../binutils-2.17.tar.gz
48 mv binutils-2.17 binutils-2.17-i386 #or binutils-2.17-sparc
49 cd binutils-2.17-i386
50
51 From inside that directory, run configure and make:
52 ( export CFLAGS='-fPIC'
53 ./configure i386-pc-elf )
54 gnumake
55
56 (Leave out or change the argument to configure if not on an i386 system.)
57
58 Next, untar again into another empty directory for the LP64 version:
59 chdir ..
60 tar -xzf - < ../binutils-2.17.tar.gz
61 mv binutils-2.17 binutils-2.17-amd64 #or binutils-2.17-sparcv9
62 cd binutils-2.17-amd64
63
64 From inside that directory, run configure for LP64 and make:
65 ( export ac_cv_c_bigendian=no CFLAGS='-m64 -fPIC' LDFLAGS=-m64
66 ./configure amd64-pc-elf )
67 gnumake
68
69 The -fPIC option is needed because the generated code will be
70 linked into the hsdid-$LIBARCH.so binary. If you miss the
71 option, the JVM will fail to load the disassembler.
72
73 You probably want two builds, one for 32 and one for 64 bits.
74 To build the 64-bit variation of a platforn, add LP64=1 to
75 the make command line for hsdis.
76
77 So, go back to the hsdis project and build:
78 chdir .../hsdis
79 gnumake
80 gnumake LP64=1
81
82 * Installing
83
84 Products are named like bin/$OS/hsdis-$LIBARCH.so.
85 You can install them on your LD_LIBRARY_PATH,
86 or inside of your JRE next to $LIBARCH/libjvm.so.
87
88 Now test:
89 export LD_LIBRARY_PATH .../hsdis/bin/solaris:$LD_LIBRARY_PATH
90 dargs='-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly'
91 dargs=$dargs' -XX:PrintAssemblyOptions=hsdis-print-bytes'
92 java $dargs -Xbatch CompileCommand=print,*String.hashCode HelloWorld
93
94 If the product mode of the JVM does not accept -XX:+PrintAssembly,
95 you do not have a version new enough to use the hsdis plugin.