annotate src/share/tools/hsdis/README @ 795:215f81b4d9b3

6841831: G1: assert(contains_reference(from),"We just added it!") fires Summary: During parallel rset updating we have to make sure that the worker ids of the refinement threads do not intersect with the worker ids that can be claimed by the mutator threads. Reviewed-by: tonyp
author iveresov
date Mon, 18 May 2009 11:52:46 -0700
parents 67a2f5ba5582
children c18cbe5936b8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
100
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
1 Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
2 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
3
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
4 This code is free software; you can redistribute it and/or modify it
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
5 under the terms of the GNU General Public License version 2 only, as
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
6 published by the Free Software Foundation.
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
7
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
8 This code is distributed in the hope that it will be useful, but WITHOUT
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
9 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
10 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
11 version 2 for more details (a copy is included in the LICENSE file that
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
12 accompanied this code).
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
13
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
14 You should have received a copy of the GNU General Public License version
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
15 2 along with this work; if not, write to the Free Software Foundation,
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
16 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
17
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
18 Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
19 CA 95054 USA or visit www.sun.com if you need additional information or
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
20 have any questions.
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
21
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
22 ________________________________________________________________________
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
23
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
24 'hsdis': A HotSpot plugin for disassembling dynamically generated code.
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
25
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
26 The files in this directory (Makefile, hsdis.[ch], hsdis-demo.c)
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
27 are built independently of the HotSpot JVM.
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
28
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
29 To use the plugin with a JVM, you need a new version that can load it.
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
30 If the product mode of your JVM does not accept -XX:+PrintAssembly,
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
31 you do not have a version that is new enough.
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
32
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
33 * Building
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
34
720
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
35 To build this project you a copy of GNU binutils to build against. It
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
36 is known to work with binutils 2.17 and binutils 2.19.1. Download a
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
37 copy of the software from http://directory.fsf.org/project/binutils or
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
38 one of it's mirrors. Builds targetting windows should use at least
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
39 2.19 and currently requires the use of a cross compiler.
100
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
40
720
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
41 The makefile looks for the sources in build/binutils or you can
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
42 specify it's location to the makefile using BINTUILS=path. It will
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
43 configure binutils and build it first and then build and link the
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
44 disasembly adapter. Make all will build the default target for your
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
45 platform. If you platform support both 32 and 64 simultaneously then
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
46 "make both" will build them both at once. "make all64" will
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
47 explicitly build the 64 bit version. By default this will build the
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
48 disassembler library only. If you build demo it will build a demo
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
49 program that attempts to exercise the library.
100
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
50
720
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
51 Windows
100
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
52
720
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
53 In theory this should be buildable on Windows but getting a working
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
54 GNU build environment on Windows has proven difficult. MINGW should
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
55 be able to do it but at the time of this writing I was unable to get
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
56 this working. Instead you can use the mingw cross compiler on linux
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
57 to produce the windows binaries. For 32-bit windows you can install
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
58 mingw32 using your package manager and it will be added to your path
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
59 automatically. For 64-bit you need to download the 64 bit mingw from
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
60 http://sourceforge.net/projects/mingw-w64. Grab a copy of the
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
61 complete toolchain and unpack it somewhere. Put the bin directory of
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
62 the toolchain in your path. The mingw installs contain cross compile
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
63 versions of gcc that are named with a prefix to indicate what they are
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
64 targetting and you must tell the Makefile which one to use. This
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
65 should either be i586-mingw32msvc or x86_64-pc-mingw32 depending on
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
66 which on you are targetting and there should be a version of gcc in
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
67 your path named i586-mingw32msvc-gcc or x86_64-pc-mingw32-gcc. Tell
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
68 the makefile what prefix to use to find the mingw tools by using
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
69 MINGW=. For example:
100
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
70
720
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
71 make MINGW=i586-mingw32msvc BINTUILS=build/binutils-2.19.1
100
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
72
720
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
73 will build the Win32 cross compiled version of hsdis based on 2.19.1.
100
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
74
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
75 * Installing
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
76
720
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
77 Products are named like build/$OS-$LIBARCH/hsdis-$LIBARCH.so. You can
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
78 install them on your LD_LIBRARY_PATH, or inside of your JRE next to
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
79 $LIBARCH/libjvm.so.
100
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
80
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
81 Now test:
720
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
82
67a2f5ba5582 6684007: PrintAssembly plugin not available for linux or windows
never
parents: 100
diff changeset
83 export LD_LIBRARY_PATH .../hsdis/build/$OS-$LIBARCH:$LD_LIBRARY_PATH
100
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
84 dargs='-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly'
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
85 dargs=$dargs' -XX:PrintAssemblyOptions=hsdis-print-bytes'
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
86 java $dargs -Xbatch CompileCommand=print,*String.hashCode HelloWorld
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
87
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
88 If the product mode of the JVM does not accept -XX:+PrintAssembly,
c7c777385a15 6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff changeset
89 you do not have a version new enough to use the hsdis plugin.