Kai
12 months ago
commit
fb906f6394
5263 changed files with 1614588 additions and 0 deletions
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
|
||||
OPENJDK ASSEMBLY EXCEPTION |
||||
|
||||
The OpenJDK source code made available by Oracle America, Inc. (Oracle) at |
||||
openjdk.java.net ("OpenJDK Code") is distributed under the terms of the GNU |
||||
General Public License <http://www.gnu.org/copyleft/gpl.html> version 2 |
||||
only ("GPL2"), with the following clarification and special exception. |
||||
|
||||
Linking this OpenJDK Code statically or dynamically with other code |
||||
is making a combined work based on this library. Thus, the terms |
||||
and conditions of GPL2 cover the whole combination. |
||||
|
||||
As a special exception, Oracle gives you permission to link this |
||||
OpenJDK Code with certain code licensed by Oracle as indicated at |
||||
http://openjdk.java.net/legal/exception-modules-2007-05-08.html |
||||
("Designated Exception Modules") to produce an executable, |
||||
regardless of the license terms of the Designated Exception Modules, |
||||
and to copy and distribute the resulting executable under GPL2, |
||||
provided that the Designated Exception Modules continue to be |
||||
governed by the licenses under which they were offered by Oracle. |
||||
|
||||
As such, it allows licensees and sublicensees of Oracle's GPL2 OpenJDK Code |
||||
to build an executable that includes those portions of necessary code that |
||||
Oracle could not provide under GPL2 (or that Oracle has provided under GPL2 |
||||
with the Classpath exception). If you modify or add to the OpenJDK code, |
||||
that new GPL2 code may still be combined with Designated Exception Modules |
||||
if the new code is made subject to this exception by its copyright holder. |
@ -0,0 +1,347 @@
@@ -0,0 +1,347 @@
|
||||
The GNU General Public License (GPL) |
||||
|
||||
Version 2, June 1991 |
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc. |
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this license |
||||
document, but changing it is not allowed. |
||||
|
||||
Preamble |
||||
|
||||
The licenses for most software are designed to take away your freedom to share |
||||
and change it. By contrast, the GNU General Public License is intended to |
||||
guarantee your freedom to share and change free software--to make sure the |
||||
software is free for all its users. This General Public License applies to |
||||
most of the Free Software Foundation's software and to any other program whose |
||||
authors commit to using it. (Some other Free Software Foundation software is |
||||
covered by the GNU Library General Public License instead.) You can apply it to |
||||
your programs, too. |
||||
|
||||
When we speak of free software, we are referring to freedom, not price. Our |
||||
General Public Licenses are designed to make sure that you have the freedom to |
||||
distribute copies of free software (and charge for this service if you wish), |
||||
that you receive source code or can get it if you want it, that you can change |
||||
the software or use pieces of it in new free programs; and that you know you |
||||
can do these things. |
||||
|
||||
To protect your rights, we need to make restrictions that forbid anyone to deny |
||||
you these rights or to ask you to surrender the rights. These restrictions |
||||
translate to certain responsibilities for you if you distribute copies of the |
||||
software, or if you modify it. |
||||
|
||||
For example, if you distribute copies of such a program, whether gratis or for |
||||
a fee, you must give the recipients all the rights that you have. You must |
||||
make sure that they, too, receive or can get the source code. And you must |
||||
show them these terms so they know their rights. |
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and (2) |
||||
offer you this license which gives you legal permission to copy, distribute |
||||
and/or modify the software. |
||||
|
||||
Also, for each author's protection and ours, we want to make certain that |
||||
everyone understands that there is no warranty for this free software. If the |
||||
software is modified by someone else and passed on, we want its recipients to |
||||
know that what they have is not the original, so that any problems introduced |
||||
by others will not reflect on the original authors' reputations. |
||||
|
||||
Finally, any free program is threatened constantly by software patents. We |
||||
wish to avoid the danger that redistributors of a free program will |
||||
individually obtain patent licenses, in effect making the program proprietary. |
||||
To prevent this, we have made it clear that any patent must be licensed for |
||||
everyone's free use or not licensed at all. |
||||
|
||||
The precise terms and conditions for copying, distribution and modification |
||||
follow. |
||||
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
||||
|
||||
0. This License applies to any program or other work which contains a notice |
||||
placed by the copyright holder saying it may be distributed under the terms of |
||||
this General Public License. The "Program", below, refers to any such program |
||||
or work, and a "work based on the Program" means either the Program or any |
||||
derivative work under copyright law: that is to say, a work containing the |
||||
Program or a portion of it, either verbatim or with modifications and/or |
||||
translated into another language. (Hereinafter, translation is included |
||||
without limitation in the term "modification".) Each licensee is addressed as |
||||
"you". |
||||
|
||||
Activities other than copying, distribution and modification are not covered by |
||||
this License; they are outside its scope. The act of running the Program is |
||||
not restricted, and the output from the Program is covered only if its contents |
||||
constitute a work based on the Program (independent of having been made by |
||||
running the Program). Whether that is true depends on what the Program does. |
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's source code as |
||||
you receive it, in any medium, provided that you conspicuously and |
||||
appropriately publish on each copy an appropriate copyright notice and |
||||
disclaimer of warranty; keep intact all the notices that refer to this License |
||||
and to the absence of any warranty; and give any other recipients of the |
||||
Program a copy of this License along with the Program. |
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and you may |
||||
at your option offer warranty protection in exchange for a fee. |
||||
|
||||
2. You may modify your copy or copies of the Program or any portion of it, thus |
||||
forming a work based on the Program, and copy and distribute such modifications |
||||
or work under the terms of Section 1 above, provided that you also meet all of |
||||
these conditions: |
||||
|
||||
a) You must cause the modified files to carry prominent notices stating |
||||
that you changed the files and the date of any change. |
||||
|
||||
b) You must cause any work that you distribute or publish, that in whole or |
||||
in part contains or is derived from the Program or any part thereof, to be |
||||
licensed as a whole at no charge to all third parties under the terms of |
||||
this License. |
||||
|
||||
c) If the modified program normally reads commands interactively when run, |
||||
you must cause it, when started running for such interactive use in the |
||||
most ordinary way, to print or display an announcement including an |
||||
appropriate copyright notice and a notice that there is no warranty (or |
||||
else, saying that you provide a warranty) and that users may redistribute |
||||
the program under these conditions, and telling the user how to view a copy |
||||
of this License. (Exception: if the Program itself is interactive but does |
||||
not normally print such an announcement, your work based on the Program is |
||||
not required to print an announcement.) |
||||
|
||||
These requirements apply to the modified work as a whole. If identifiable |
||||
sections of that work are not derived from the Program, and can be reasonably |
||||
considered independent and separate works in themselves, then this License, and |
||||
its terms, do not apply to those sections when you distribute them as separate |
||||
works. But when you distribute the same sections as part of a whole which is a |
||||
work based on the Program, the distribution of the whole must be on the terms |
||||
of this License, whose permissions for other licensees extend to the entire |
||||
whole, and thus to each and every part regardless of who wrote it. |
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest your |
||||
rights to work written entirely by you; rather, the intent is to exercise the |
||||
right to control the distribution of derivative or collective works based on |
||||
the Program. |
||||
|
||||
In addition, mere aggregation of another work not based on the Program with the |
||||
Program (or with a work based on the Program) on a volume of a storage or |
||||
distribution medium does not bring the other work under the scope of this |
||||
License. |
||||
|
||||
3. You may copy and distribute the Program (or a work based on it, under |
||||
Section 2) in object code or executable form under the terms of Sections 1 and |
||||
2 above provided that you also do one of the following: |
||||
|
||||
a) Accompany it with the complete corresponding machine-readable source |
||||
code, which must be distributed under the terms of Sections 1 and 2 above |
||||
on a medium customarily used for software interchange; or, |
||||
|
||||
b) Accompany it with a written offer, valid for at least three years, to |
||||
give any third party, for a charge no more than your cost of physically |
||||
performing source distribution, a complete machine-readable copy of the |
||||
corresponding source code, to be distributed under the terms of Sections 1 |
||||
and 2 above on a medium customarily used for software interchange; or, |
||||
|
||||
c) Accompany it with the information you received as to the offer to |
||||
distribute corresponding source code. (This alternative is allowed only |
||||
for noncommercial distribution and only if you received the program in |
||||
object code or executable form with such an offer, in accord with |
||||
Subsection b above.) |
||||
|
||||
The source code for a work means the preferred form of the work for making |
||||
modifications to it. For an executable work, complete source code means all |
||||
the source code for all modules it contains, plus any associated interface |
||||
definition files, plus the scripts used to control compilation and installation |
||||
of the executable. However, as a special exception, the source code |
||||
distributed need not include anything that is normally distributed (in either |
||||
source or binary form) with the major components (compiler, kernel, and so on) |
||||
of the operating system on which the executable runs, unless that component |
||||
itself accompanies the executable. |
||||
|
||||
If distribution of executable or object code is made by offering access to copy |
||||
from a designated place, then offering equivalent access to copy the source |
||||
code from the same place counts as distribution of the source code, even though |
||||
third parties are not compelled to copy the source along with the object code. |
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program except as |
||||
expressly provided under this License. Any attempt otherwise to copy, modify, |
||||
sublicense or distribute the Program is void, and will automatically terminate |
||||
your rights under this License. However, parties who have received copies, or |
||||
rights, from you under this License will not have their licenses terminated so |
||||
long as such parties remain in full compliance. |
||||
|
||||
5. You are not required to accept this License, since you have not signed it. |
||||
However, nothing else grants you permission to modify or distribute the Program |
||||
or its derivative works. These actions are prohibited by law if you do not |
||||
accept this License. Therefore, by modifying or distributing the Program (or |
||||
any work based on the Program), you indicate your acceptance of this License to |
||||
do so, and all its terms and conditions for copying, distributing or modifying |
||||
the Program or works based on it. |
||||
|
||||
6. Each time you redistribute the Program (or any work based on the Program), |
||||
the recipient automatically receives a license from the original licensor to |
||||
copy, distribute or modify the Program subject to these terms and conditions. |
||||
You may not impose any further restrictions on the recipients' exercise of the |
||||
rights granted herein. You are not responsible for enforcing compliance by |
||||
third parties to this License. |
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent |
||||
infringement or for any other reason (not limited to patent issues), conditions |
||||
are imposed on you (whether by court order, agreement or otherwise) that |
||||
contradict the conditions of this License, they do not excuse you from the |
||||
conditions of this License. If you cannot distribute so as to satisfy |
||||
simultaneously your obligations under this License and any other pertinent |
||||
obligations, then as a consequence you may not distribute the Program at all. |
||||
For example, if a patent license would not permit royalty-free redistribution |
||||
of the Program by all those who receive copies directly or indirectly through |
||||
you, then the only way you could satisfy both it and this License would be to |
||||
refrain entirely from distribution of the Program. |
||||
|
||||
If any portion of this section is held invalid or unenforceable under any |
||||
particular circumstance, the balance of the section is intended to apply and |
||||
the section as a whole is intended to apply in other circumstances. |
||||
|
||||
It is not the purpose of this section to induce you to infringe any patents or |
||||
other property right claims or to contest validity of any such claims; this |
||||
section has the sole purpose of protecting the integrity of the free software |
||||
distribution system, which is implemented by public license practices. Many |
||||
people have made generous contributions to the wide range of software |
||||
distributed through that system in reliance on consistent application of that |
||||
system; it is up to the author/donor to decide if he or she is willing to |
||||
distribute software through any other system and a licensee cannot impose that |
||||
choice. |
||||
|
||||
This section is intended to make thoroughly clear what is believed to be a |
||||
consequence of the rest of this License. |
||||
|
||||
8. If the distribution and/or use of the Program is restricted in certain |
||||
countries either by patents or by copyrighted interfaces, the original |
||||
copyright holder who places the Program under this License may add an explicit |
||||
geographical distribution limitation excluding those countries, so that |
||||
distribution is permitted only in or among countries not thus excluded. In |
||||
such case, this License incorporates the limitation as if written in the body |
||||
of this License. |
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions of the |
||||
General Public License from time to time. Such new versions will be similar in |
||||
spirit to the present version, but may differ in detail to address new problems |
||||
or concerns. |
||||
|
||||
Each version is given a distinguishing version number. If the Program |
||||
specifies a version number of this License which applies to it and "any later |
||||
version", you have the option of following the terms and conditions either of |
||||
that version or of any later version published by the Free Software Foundation. |
||||
If the Program does not specify a version number of this License, you may |
||||
choose any version ever published by the Free Software Foundation. |
||||
|
||||
10. If you wish to incorporate parts of the Program into other free programs |
||||
whose distribution conditions are different, write to the author to ask for |
||||
permission. For software which is copyrighted by the Free Software Foundation, |
||||
write to the Free Software Foundation; we sometimes make exceptions for this. |
||||
Our decision will be guided by the two goals of preserving the free status of |
||||
all derivatives of our free software and of promoting the sharing and reuse of |
||||
software generally. |
||||
|
||||
NO WARRANTY |
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR |
||||
THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE |
||||
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE |
||||
PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, |
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
||||
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND |
||||
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, |
||||
YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. |
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL |
||||
ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE |
||||
PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY |
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR |
||||
INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA |
||||
BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A |
||||
FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER |
||||
OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. |
||||
|
||||
END OF TERMS AND CONDITIONS |
||||
|
||||
How to Apply These Terms to Your New Programs |
||||
|
||||
If you develop a new program, and you want it to be of the greatest possible |
||||
use to the public, the best way to achieve this is to make it free software |
||||
which everyone can redistribute and change under these terms. |
||||
|
||||
To do so, attach the following notices to the program. It is safest to attach |
||||
them to the start of each source file to most effectively convey the exclusion |
||||
of warranty; and each file should have at least the "copyright" line and a |
||||
pointer to where the full notice is found. |
||||
|
||||
One line to give the program's name and a brief idea of what it does. |
||||
|
||||
Copyright (C) <year> <name of author> |
||||
|
||||
This program is free software; you can redistribute it and/or modify it |
||||
under the terms of the GNU General Public License as published by the Free |
||||
Software Foundation; either version 2 of the License, or (at your option) |
||||
any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT |
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
||||
more details. |
||||
|
||||
You should have received a copy of the GNU General Public License along |
||||
with this program; if not, write to the Free Software Foundation, Inc., |
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
|
||||
Also add information on how to contact you by electronic and paper mail. |
||||
|
||||
If the program is interactive, make it output a short notice like this when it |
||||
starts in an interactive mode: |
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author Gnomovision comes |
||||
with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free |
||||
software, and you are welcome to redistribute it under certain conditions; |
||||
type 'show c' for details. |
||||
|
||||
The hypothetical commands 'show w' and 'show c' should show the appropriate |
||||
parts of the General Public License. Of course, the commands you use may be |
||||
called something other than 'show w' and 'show c'; they could even be |
||||
mouse-clicks or menu items--whatever suits your program. |
||||
|
||||
You should also get your employer (if you work as a programmer) or your school, |
||||
if any, to sign a "copyright disclaimer" for the program, if necessary. Here |
||||
is a sample; alter the names: |
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program |
||||
'Gnomovision' (which makes passes at compilers) written by James Hacker. |
||||
|
||||
signature of Ty Coon, 1 April 1989 |
||||
|
||||
Ty Coon, President of Vice |
||||
|
||||
This General Public License does not permit incorporating your program into |
||||
proprietary programs. If your program is a subroutine library, you may |
||||
consider it more useful to permit linking proprietary applications with the |
||||
library. If this is what you want to do, use the GNU Library General Public |
||||
License instead of this License. |
||||
|
||||
|
||||
"CLASSPATH" EXCEPTION TO THE GPL |
||||
|
||||
Certain source files distributed by Oracle America and/or its affiliates are |
||||
subject to the following clarification and special exception to the GPL, but |
||||
only where Oracle has expressly included in the particular source file's header |
||||
the words "Oracle designates this particular file as subject to the "Classpath" |
||||
exception as provided by Oracle in the LICENSE file that accompanied this code." |
||||
|
||||
Linking this library statically or dynamically with other modules is making |
||||
a combined work based on this library. Thus, the terms and conditions of |
||||
the GNU General Public License cover the whole combination. |
||||
|
||||
As a special exception, the copyright holders of this library give you |
||||
permission to link this library with independent modules to produce an |
||||
executable, regardless of the license terms of these independent modules, |
||||
and to copy and distribute the resulting executable under terms of your |
||||
choice, provided that you also meet, for each linked independent module, |
||||
the terms and conditions of the license of that module. An independent |
||||
module is a module which is not derived from or based on this library. If |
||||
you modify this library, you may extend this exception to your version of |
||||
the library, but you are not obligated to do so. If you do not wish to do |
||||
so, delete this exception statement from your version. |
@ -0,0 +1,14 @@
@@ -0,0 +1,14 @@
|
||||
README: |
||||
This file should be located at the top of the hotspot Mercurial repository. |
||||
|
||||
See http://openjdk.java.net/ for more information about the OpenJDK. |
||||
|
||||
See ../README-builds.html for complete details on build machine requirements. |
||||
|
||||
Simple Build Instructions: |
||||
|
||||
cd make && gnumake |
||||
|
||||
The files that will be imported into the jdk build will be in the "build" |
||||
directory. |
||||
|
@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
|
||||
The HotSpot Serviceability Agent (SA) is a debugger for hotspot core |
||||
dumps and hung processes. There is a read-only JDI (Java Debugger |
||||
Interface) implementation on top of SA. This is part of JDK product and |
||||
the classes are in $JDK/tools/sa-jdi.jar. |
||||
|
||||
In addition, there are few serviceability tools in $JDK/bin, namely, |
||||
jstack (java stack trace tool), jmap (heap tool), jinfo (Java config |
||||
tool) and jsadebugd. The classes for these are also in sa-jdi.jar |
||||
file. sa-jdi.jar file is built along with hotspot (libjvm.so) on Solaris |
||||
and Linux platforms. On Windows platform, SA-JDI is not included and |
||||
serviceability tools do not use SA. |
||||
|
||||
Apart from these, HotSpot SA consists of a number of tools that are |
||||
*not* included in JDK product bits. |
||||
|
||||
The sources and makefile for all-of-SA (including non-productized stuff) |
||||
are under $HOTSPOT_WS/agent directory. The makefile $HOTSPOT/agent/make |
||||
directory and shell scripts (and batch files) are used to build and run |
||||
SA non-product tools. There is also documentation of SA under |
||||
$HOTSPOT/agent/doc directory. |
||||
|
||||
To build complete SA, you need to have Rhino Mozilla jar (js.jar) |
||||
version 1.5R5 under $HOTSPOT/agent/src/share/lib directory. Rhino is |
||||
JavaScript interpreter written in Java. Rhino is used to implement SA |
||||
features such as |
||||
|
||||
* SA command line debugger's JavaScript interface |
||||
- refer to $HOTSPOT/agent/doc/clhsdb.html |
||||
- refer to $HOTSPOT/agent/doc/jsdb.html |
||||
* SA simple object query language (SOQL) |
||||
- language to query Java heap. |
||||
|
||||
Rhino's "js.jar" is not included in hotspot source bundles. You need to |
||||
download it from http://www.mozilla.org/rhino/download.html. |
||||
|
||||
Without js.jar, $HOTSPOT/agent/make/Makefile will fail to build. But, |
||||
note that sa-jdi.jar containing the productized portions of SA will |
||||
still be built when you build hotspot JVM. |
@ -0,0 +1,41 @@
@@ -0,0 +1,41 @@
|
||||
<html> |
||||
<head> |
||||
<title> |
||||
Replay |
||||
</title> |
||||
</head> |
||||
<body> |
||||
|
||||
<h1>Compiler replay</h1> |
||||
<p> |
||||
The compiler replay is a function to repeat the compiling process from a crashed java process in compiled method<br> |
||||
This function only exists in debug version of VM |
||||
</p> |
||||
<h2>Usage</h2> |
||||
<pre> |
||||
First, use SA to attach to the core file, if succeeded, do |
||||
hsdb> dumpreplaydata <address> | -a | <thread_id> [> replay.txt] |
||||
create file replay.txt, address is address of Method, or nmethod(CodeBlob) |
||||
hsdb> buildreplayjars [all | boot | app] |
||||
create files: |
||||
all: |
||||
app.jar, boot.jar |
||||
boot: |
||||
boot.jar |
||||
app: |
||||
app.jar |
||||
exit SA now. |
||||
Second, use the obtained replay text file, replay.txt and jar files, app.jar and boot.jar, using debug version of java |
||||
java -Xbootclasspath/p:boot.jar -cp app.jar -XX:ReplayDataFile=<datafile> -XX:+ReplayCompiles .... |
||||
This will replay the compiling process. |
||||
|
||||
With ReplayCompiles, the replay will recompile all the methods in app.jar, and in boot.jar to emulate the process in java app. |
||||
|
||||
notes: |
||||
1) Most time, we don't need the boot.jar which is the classes loaded from JDK. It will be only modified when an agent(JVMDI) is running and modifies the classes. |
||||
2) If encounter error as "<flag>" not found, that means the SA is using a VMStructs which is different from the one with corefile. In this case, SA has a utility tool vmstructsdump which is located at agent/src/os/<os>/proc/<os_platform> |
||||
|
||||
Use this tool to dump VM type library: |
||||
vmstructsdump libjvm.so > <type_name>.db |
||||
|
||||
set env SA_TYPEDB=<type_name>.db (refer different shell for set envs) |
@ -0,0 +1,137 @@
@@ -0,0 +1,137 @@
|
||||
<html> |
||||
<head> |
||||
<title> |
||||
Command line HSDB |
||||
</title> |
||||
</head> |
||||
<body> |
||||
|
||||
<h1>Command line HSDB</h1> |
||||
<p> |
||||
When debugging remote core dumps it is easier to work with command line tools instead of |
||||
GUI tools. Command line HSDB (CLHSDB) tool is alternative to SA GUI tool HSDB. |
||||
</p> |
||||
|
||||
<p> |
||||
There is also JavaScript based SA command line interface called <a href="jsdb.html">jsdb</a>. |
||||
But, CLHSDB supports Unix shell-like (or dbx/gdb-like) command line interface with |
||||
support for output redirection/appending (familiar >, >>), command history and so on. |
||||
Each CLHSDB command can have zero or more arguments and optionally end with output redirection |
||||
(or append) to a file. Commands may be stored in a file and run using <b>source</b> command. |
||||
<b>help</b> command prints usage message for all supported commands (or a specific command) |
||||
</p> |
||||
|
||||
<h3>Shell/batch scripts to run command line HSDB</h3> |
||||
|
||||
<ul> |
||||
<li>clhsdbproc.sh |
||||
<li>clhsdbproc64.sh |
||||
<li>clhsdbwindbg.bat |
||||
<li>clhsdbwindbg64.bat |
||||
</ul> |
||||
|
||||
<h3>Annotated output of CLHSDB help command</h3> |
||||
|
||||
<pre> |
||||
<code> |
||||
Available commands: |
||||
assert true | false <font color="red">turn on/off asserts in SA code</font> |
||||
attach pid | exec core <font color="red">attach SA to a process or core</font> |
||||
buildreplayjars [all | boot | app] <font color="red">build jars for replay, boot.jar for bootclasses, app.jar for application classes</font> |
||||
class name <font color="red">find a Java class from debuggee and print oop</font> |
||||
classes <font color="red">print all loaded Java classes with Klass*</font> |
||||
detach <font color="red">detach SA from current target</font> |
||||
dis address [ length ] <font color="red">disassemble (sparc/x86) specified number of instructions from given address</font> |
||||
dissemble address <font color="red">disassemble nmethod</font> |
||||
dumpcfg -a | id <font color="red">Dump the PhaseCFG for every compiler thread that has one live</font> |
||||
dumpclass { address | name } [ directory ] <font color="red">dump .class file for given Klass* or class name</font> |
||||
dumpcodecache <font color="red">dump codecache contents</font> |
||||
dumpheap [ file ] <font color="red">dump heap in hprof binary format</font> |
||||
dumpideal -a | id <font color="red">dump ideal graph like debug flag -XX:+PrintIdeal</font> |
||||
dumpilt -a | id <font color="red">dump inline tree for C2 compilation</font> |
||||
dumpreplaydata <address> | -a | <thread_id> [>replay.txt] <font color="red">dump replay data into a file</font> |
||||
echo [ true | false ] <font color="red">turn on/off command echo mode</font> |
||||
examine [ address/count ] | [ address,address] <font color="red">show contents of memory from given address</font> |
||||
field [ type [ name fieldtype isStatic offset address ] ] <font color="red">print info about a field of HotSpot type</font> |
||||
findpc address <font color="red">print info. about pointer location</font> |
||||
flags [ flag ] <font color="red">show all -XX flag name value pairs. or just show given flag</font> |
||||
help [ command ] <font color="red">print help message for all commands or just given command</font> |
||||
history <font color="red">show command history. usual !command-number syntax works.</font> |
||||
inspect expression <font color="red">inspect a given oop</font> |
||||
intConstant [ name [ value ] ] <font color="red">print out hotspot integer constant(s)</font> |
||||
jdis address <font color="red">show bytecode disassembly of a given Method*</font> |
||||
jhisto <font color="red">show Java heap histogram</font> |
||||
jseval script <font color="red">evaluate a given string as JavaScript code</font> |
||||
jsload file <font color="red">load and evaluate a JavaScript file</font> |
||||
jstack [-v] <font color="red">show Java stack trace of all Java threads. -v is verbose mode</font> |
||||
livenmethods <font color="red">show all live nmethods</font> |
||||
longConstant [ name [ value ] ] <font color="red">print out hotspot long constant(s)s</font> |
||||
mem address [ length ] <font color="red">show contents of memory -- also shows closest ELF/COFF symbol if found</font> |
||||
pmap <font color="red">show Solaris pmap-like output</font> |
||||
print expression <font color="red">print given Klass*, Method* or arbitrary address</font> |
||||
printas type expression <font color="red">print given address as given HotSpot type. eg. print JavaThread <address></font> |
||||
printmdo -a | expression <font color="red">print method data oop</font> |
||||
printstatics [ type ] <font color="red">print static fields of given HotSpot type (or all types if none specified)</font> |
||||
pstack [-v] <font color="red">show mixed mode stack trace for all Java, non-Java threads. -v is verbose mode</font> |
||||
quit <font color="red">quit CLHSDB tool</font> |
||||
reattach <font color="red">detach and re-attach SA to current target</font> |
||||
revptrs <font color="red">find liveness of oops</font> |
||||
scanoops start end [ type ] <font color="red">scan a Oop from given start to end address</font> |
||||
search [ heap | codecache | threads ] value <font color="red">search a value in heap or codecache or threads</font> |
||||
source filename <font color="red">load and execute CLHSDB commands from given file</font> |
||||
symbol name <font color="red">show address of a given ELF/COFF symbol</font> |
||||
sysprops <font color="red">show all Java System properties</font> |
||||
thread id <font color="red">show thread of id</font> |
||||
threads <font color="red">show all Java threads</font> |
||||
tokenize ... |
||||
type [ type [ name super isOop isInteger isUnsigned size ] ] <font color="red">show info. on HotSpot type</font> |
||||
universe <font color="red">print gc universe</font> |
||||
vmstructsdump <font color="red">dump hotspot type library in text</font> |
||||
verbose true | false <font color="red">turn on/off verbose mode</font> |
||||
versioncheck [ true | false ] <font color="red">turn on/off debuggee VM version check</font> |
||||
whatis address <font color="red">print info about any arbitrary address</font> |
||||
where { -a | id } <font color="red">print Java stack trace of given Java thread or all Java threads (-a)</font> |
||||
</code> |
||||
</pre> |
||||
|
||||
<h3>JavaScript integration</h3> |
||||
|
||||
<p>Few CLHSDB commands are already implemented in JavaScript. It is possible to extend CLHSDB command set |
||||
by implementing more commands in a JavaScript file and by loading it by <b>jsload</b> command. <b>jseval</b> |
||||
command may be used to evaluate arbitrary JavaScript expression from a string. Any JavaScript function |
||||
may be exposed as a CLHSDB command by registering it using JavaScript <b><code>registerCommand</code></b> |
||||
function. This function accepts command name, usage and name of the JavaScript implementation function |
||||
as arguments. |
||||
</p> |
||||
|
||||
<h3>Simple CLHSDB command implemented in JavaScript</h3> |
||||
|
||||
<b>File: test.js</b> |
||||
<pre> |
||||
<code> |
||||
function helloImpl(name) { |
||||
println("hello, " + name); |
||||
} |
||||
|
||||
// register the above JavaScript function as CLHSDB command |
||||
registerCommand("hello", "hello name", "helloImpl"); |
||||
</code> |
||||
</pre> |
||||
---------<br> |
||||
|
||||
"test.js" can be loaded in CLHSDB prompt using <b>jsload</b> command using |
||||
|
||||
<pre> |
||||
<code> |
||||
hsdb> jsload test.js |
||||
</code> |
||||
</pre> |
||||
|
||||
<h3>Compilation Replay</h3> |
||||
<p> |
||||
When a java process crashes in compiled method, usually a core file is saved. |
||||
The replay function can reproduce the compiling process in the core. |
||||
<a href="cireplay.html">cireplay.html</a> |
||||
|
||||
</body> |
||||
</html> |
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
<html> |
||||
<head> |
||||
<title> |
||||
SA HSDB GUI |
||||
</title> |
||||
</head> |
||||
<body> |
||||
<p> |
||||
Once the HSDB debugger has been launched, the threads list is displayed |
||||
if launched with debuggee options (pid or core) in command line. If |
||||
HSDB was launched without debuggee, empty screen is shown. |
||||
</p> |
||||
<p>File menu sub-menu options to attach, detach debuggee and exit tool.</p> |
||||
<p>Tools menu sub-menus include:</p> |
||||
<ul> |
||||
<li>browsing of the annotated stack memory ("Stack Memory" button). It |
||||
is currently annotated with the following information: |
||||
<ul> |
||||
<li> method names of the Java frames and their extents (supporting |
||||
inlined compiled methods) |
||||
<li> locations and types of oops, found using the oop map information |
||||
from compiled methods (interpreter oop maps coming soon) |
||||
<li> if a Java frame was interrupted by a signal (e.g., because of a |
||||
crash), annotates the frame with the signal name and number |
||||
<li> interpreter codelet descriptions for interpreted frames |
||||
</ul> |
||||
<li> finding which thread or threads caused a crash (currently |
||||
identified by the presence of a signal handler frame - solaris-only) |
||||
<li> browsing of oops using the Oop Inspector. |
||||
<li> browsing of the java.lang.Thread object's oop. |
||||
<li> Object Histogram and inspection of objects and liveness analysis therein. |
||||
<li> Class Browser - view Java classes, bytecode disassembly, |
||||
or create .class files for selected classes |
||||
<li> native disassembly (sparc, x86 only) and nmethod disassembly with annotations for safepoint details. |
||||
<li> view -XX flags, System properties, VM version of debuggee |
||||
</ul> |
||||
<p>Windows sub-menu options include:</p> |
||||
<ul> |
||||
<li> Windows sub-menu: Console window to run "CLHSDB" commands in GUI |
||||
<li> Windows sub-menu: Debugger console of underlying native debugger (MS Windbg or dbx (if used)) |
||||
</ul> |
||||
|
||||
</body> |
||||
</html> |
@ -0,0 +1,247 @@
@@ -0,0 +1,247 @@
|
||||
<html> |
||||
<head> |
||||
<title> |
||||
Using HotSpot Serviceability Agent (SA) |
||||
</title> |
||||
</head> |
||||
<body> |
||||
<h1>Using HotSpot Serviceability Agent (SA)</h1> |
||||
|
||||
<h3>HSDB GUI</h3> |
||||
<p> |
||||
The top-level GUI program using the HotSpot Serviceability Agent APIs is |
||||
called <b>HSDB</b>, the "HotSpot Debugger". To run it, type "hsdbproc.sh" |
||||
or "hsdbwindbg.bat" or 64-bit variants (on Unix, Windows platforms |
||||
respectively). More info. on HSDB GUI are in <a href="hsdb.html">hsdb.html</a>. |
||||
</p> |
||||
|
||||
<h3>SA Modes</h3> |
||||
<p> |
||||
There are three modes for the SA debugger: |
||||
<ul> |
||||
<li>attaching to a local process, |
||||
<li>opening a core file, and |
||||
<li>attaching to a remote "debug server". |
||||
</ul> |
||||
<p> |
||||
The remote case requires two programs to be running on the remote machine: |
||||
the rmiregistry (see the script "start-rmiregistry.sh" in this directory; |
||||
run this in the background) and the debug server (see the script |
||||
"start-debug-server-proc.sh"), in that order. start-rmiregistry.sh takes no |
||||
arguments; start-debug-server-proc.sh (or -windbg.bat) takes as argument |
||||
the process ID or the executable and core file names to allow remote debugging |
||||
of. |
||||
</p> |
||||
|
||||
<h3>Command line HSDB</h3> |
||||
<p> |
||||
There are also command line HSDB variants ("clhsdbproc.sh" or "clhsdbwindbg.bat" |
||||
or 64-bit variants). There is also a JavaScript based command line interface |
||||
called "jsdbproc.sh" [or "jsdbwindbg.bat" or 64-bit variants]. More details on |
||||
command line interfaces can be found in |
||||
<ul> |
||||
<li><a href="clhsdb.html">clhsdb.html</a> |
||||
<li><a href="jsdb.html">jsdb.html</a> |
||||
</ul> |
||||
</p> |
||||
|
||||
<h3>Other command line tools</h3> |
||||
<p> |
||||
The following table lists all SA command line tools. <xxx>windbg.bat |
||||
files are for Windows. .sh files are for Solaris. <xxx>64.sh are for |
||||
64 bit debugees. |
||||
</p> |
||||
|
||||
<table border="1"> |
||||
<tr> |
||||
<th> |
||||
Tool |
||||
</th> |
||||
<th> |
||||
Description |
||||
</th> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td> |
||||
dumpflagsproc.sh, |
||||
dumpflagsproc64.sh, |
||||
dumpflagswindbg.bat |
||||
dumpflagswindbg64.bat |
||||
</td> |
||||
<td> |
||||
dumps name and value of all -XX JVM command line arguments passed |
||||
to debuggee. |
||||
</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td> |
||||
<a name="dumpsysprops"></a> |
||||
dumpsyspropsproc.sh, |
||||
dumpsyspropsproc64.sh, |
||||
dumpsyspropswindbg.bat |
||||
dumpsyspropswindbg64.bat |
||||
</td> |
||||
<td> |
||||
This prints name and value of Java level System properties. |
||||
</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td> |
||||
<a name="heapdump"></a> |
||||
heapdumpproc.sh, |
||||
heapdumpproc64.sh, |
||||
heapdumpwindbg.bat |
||||
heapdumpwindbg64.bat |
||||
</td> |
||||
<td> |
||||
Dumps heap in a file in hprof binary format. |
||||
</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td> |
||||
<a name="heapsum"></a> |
||||
heapsumproc.sh, |
||||
heapsumproc64.sh, |
||||
heapsumwindbg.bat |
||||
heapsumwindbg64.bat |
||||
</td> |
||||
<td> |
||||
Prints summary information on Java heap. |
||||
</td> |
||||
</tr> |
||||
|
||||
|
||||
<tr> |
||||
<td> |
||||
jcoreproc.sh, |
||||
jcoreproc64.sh, |
||||
jcorewindbg.bat |
||||
jcorewindbg64.bat |
||||
</td> |
||||
<td> |
||||
This can retrieve .class files from the debuggee. |
||||
set the environment variable <b>JCORE_PACKAGES</b> to comman separated list of |
||||
packages whose classes have to be retrieved from the core file. |
||||
</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<tr> |
||||
<td> |
||||
jstackproc.sh, |
||||
jstackproc64.sh, |
||||
jstackwindbg.bat |
||||
jstackwindbg64.bat |
||||
</td> |
||||
<td> |
||||
used to get java stack trace for all java threads. |
||||
</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td> |
||||
jhistoproc.sh, |
||||
jhistoproc64.sh, |
||||
jhistowindbg.bat |
||||
jhistowindbg64.bat |
||||
</td> |
||||
<td> |
||||
used to get object histogram of java heap. |
||||
</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td> |
||||
permstatproc.sh, |
||||
permstatproc64.sh, |
||||
permstatwindbg.bat |
||||
permstatwindbg64.bat |
||||
</td> |
||||
<td> |
||||
To gather statistics on perm. generation. |
||||
</td> |
||||
</tr> |
||||
|
||||
<a name="mixed_pstack"></a> |
||||
<tr> |
||||
<tr> |
||||
<td> |
||||
pstackproc.sh, |
||||
pstackproc64.sh, |
||||
pstackwindbg.bat |
||||
pstackwindbg64.bat |
||||
</td> |
||||
<td> |
||||
This is cross platform mixed mode pstack utility. This works on any (non-java as well) process, core dump. For java process and core dumps, this prints both java and C/C++ frames. |
||||
</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td> |
||||
pmapproc.sh, |
||||
pmapproc64.sh, |
||||
pmapwindbg.bat |
||||
pmapwindbg64.bat |
||||
</td> |
||||
<td> |
||||
This is cross platform Solaris pmap-like utility. |
||||
</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td> |
||||
soqlproc.sh, |
||||
soqlproc64.sh, |
||||
soqlwindbg.bat |
||||
soqlwindbg64.bat |
||||
</td> |
||||
<td> |
||||
This is command line SOQL - Simple Object Query Language tool. |
||||
SOQL is SQL-like query language to query Java heap. |
||||
</td> |
||||
<tr> |
||||
<td> |
||||
start-debug-server-proc.sh, |
||||
start-debug-server-proc64.sh, |
||||
start-debug-server-windbg.bat, |
||||
start-debug-server-windbg64.bat, |
||||
start-rmiregistry.bat, |
||||
start-rmiregistry64.bat, |
||||
start-rmiregistry.sh |
||||
start-rmiregistry64.sh |
||||
</td> |
||||
<td> |
||||
These scripts are used to run SA remotely. |
||||
</td> |
||||
</tr> |
||||
</table> |
||||
|
||||
<h3>C2 Compilation Replay</h3> |
||||
<p> |
||||
When a java process crashes in compiled method, usually a core file is saved. |
||||
The C2 replay function can reproduce the compiling process in the core. |
||||
<a href="c2replay.html">c2replay.html</a> |
||||
|
||||
<h3>Debugging transported core dumps</h3> |
||||
<p> |
||||
When a core dump is moved from the machine where it was produced to a |
||||
difference machine, it may not always be possible for SA to debug the same. |
||||
More info. on debugging on transported core dumps is in |
||||
<a href="transported_core.html">transported_core.html</a>. |
||||
</p> |
||||
|
||||
<h3>SA Bugs</h3> |
||||
<p> |
||||
Not all of the possible states of target VMs have been tested (or |
||||
supportable) with SA. For example, the SA will probably not work at all |
||||
if it freezes the target VM during certain phases of GC. When filing bugs |
||||
a pointer to a core file (see gcore(1)) which the SA can not handle well |
||||
is best. |
||||
</p> |
||||
|
||||
</body> |
||||
</html> |
@ -0,0 +1,110 @@
@@ -0,0 +1,110 @@
|
||||
<html> |
||||
<head> |
||||
<title> |
||||
Debugging transported core dumps |
||||
</title> |
||||
</head> |
||||
<body> |
||||
<h1>Debugging transported core dumps</h1> |
||||
|
||||
<p> |
||||
When a core dump is moved to a machine different from the one where it was |
||||
produced ("transported core dump"), debuggers (dbx, gdb, windbg or SA) do not |
||||
always successfully open the dump. This is due to kernel, library (shared |
||||
objects or DLLs) mismatch between core dump machine and debugger machine. |
||||
</p> |
||||
|
||||
<p> |
||||
In most platforms, core dumps do not contain text (a.k.a) Code pages. |
||||
There pages are to be read from executable and shared objects (or DLLs). |
||||
Therefore it is important to have matching executable and shared object |
||||
files in debugger machine. |
||||
</p> |
||||
|
||||
<h3>Solaris transported core dumps</h3> |
||||
|
||||
<p> |
||||
Debuggers on Solaris (and Linux) use two addtional shared objects |
||||
<b>rtld_db.so</b> and <b>libthread_db.so</b>. rtld_db.so is used to |
||||
read information on shared objects from the core dump. libthread_db.so |
||||
is used to get information on threads from the core dump. rtld_db.so |
||||
evolves along with rtld.so (the runtime linker library) and libthread_db.so |
||||
evolves along with libthread.so (user land multithreading library). |
||||
Hence, debugger machine should have right version of rtld_db.so and |
||||
libthread_db.so to open the core dump successfully. More details on |
||||
these debugger libraries can be found in |
||||
<a href="http://docs.sun.com/app/docs/doc/817-1984/"> |
||||
Solaris Linkers and Libraries Guide - 817-1984</a> |
||||
</p> |
||||
|
||||
<h3>Solaris SA against transported core dumps</h3> |
||||
|
||||
<p> |
||||
With transported core dumps, you may get "rtld_db failures" or |
||||
"libthread_db failures" or SA may just throw some other error |
||||
(hotspot symbol is missing) when opening the core dump. |
||||
Enviroment variable <b>LIBSAPROC_DEBUG</b> may be set to any value |
||||
to debug such scenarios. With this env. var set, SA prints many |
||||
messages in standard error which can be useful for further debugging. |
||||
SA on Solaris uses <b>libproc.so</b> library. This library also |
||||
prints debug messages with env. var <b>LIBPROC_DEBUG</b>. But, |
||||
setting LIBSAPROC_DEBUG results in setting LIBPROC_DEBUG as well. |
||||
</p> |
||||
<p> |
||||
The best possible way to debug a transported core dump is to match the |
||||
debugger machine to that of core dump machine. i.e., have same Kernel |
||||
and libthread patch level between the machines. mdb (Solaris modular |
||||
debugger) may be used to find the Kernel patch level of core dump |
||||
machine and debugger machine may be brought to the same level. |
||||
</p> |
||||
<p> |
||||
If the matching machine is "far off" in your network, then |
||||
<ul> |
||||
<li>consider using rlogin and <a href="clhsdb.html">CLHSDB - SA command line HSDB interface</a> or |
||||
<li>use SA remote debugging and debug the core from core machine remotely. |
||||
</ul> |
||||
</p> |
||||
|
||||
<p> |
||||
But, it may not be feasible to find matching machine to debug. |
||||
If so, you can copy all application shared objects (and libthread_db.so, if needed) from the core dump |
||||
machine into your debugger machine's directory, say, /export/applibs. Now, set <b>SA_ALTROOT</b> |
||||
environment variable to point to /export/applibs directory. Note that /export/applibs should either |
||||
contain matching 'full path' of libraries. i.e., /usr/lib/libthread_db.so from core |
||||
machine should be under /export/applibs/use/lib directory and /use/java/jre/lib/sparc/client/libjvm.so |
||||
from core machine should be under /export/applibs/use/java/jre/lib/sparc/client so on or /export/applibs |
||||
should just contain libthread_db.so, libjvm.so etc. directly. |
||||
</p> |
||||
|
||||
<p> |
||||
Support for transported core dumps is <b>not</b> built into the standard version of libproc.so. You need to |
||||
set <b>LD_LIBRARY_PATH</b> env var to point to the path of a specially built version of libproc.so. |
||||
Note that this version of libproc.so has a special symbol to support transported core dump debugging. |
||||
In future, we may get this feature built into standard libproc.so -- if that happens, this step (of |
||||
setting LD_LIBRARY_PATH) can be skipped. |
||||
</p> |
||||
|
||||
<h3>Ignoring libthread_db.so failures</h3> |
||||
<p> |
||||
If you are okay with missing thread related information, you can set |
||||
<b>SA_IGNORE_THREADDB</b> environment variable to any value. With this |
||||
set, SA ignores libthread_db failure, but you won't be able to get any |
||||
thread related information. But, you would be able to use SA and get |
||||
other information. |
||||
</p> |
||||
|
||||
<h3>Linux SA against transported core dumps</h3> |
||||
<p> |
||||
On Linux, SA parses core and shared library ELF files. SA <b>does not</b> use |
||||
libthread_db.so or rtld_db.so for core dump debugging (although |
||||
libthread_db.so is used for live process debugging). But, you |
||||
may still face problems with transported core dumps, because matching shared |
||||
objects may not be in the path(s) specified in core dump file. To |
||||
workaround this, you can define environment variable <b>SA_ALTROOT</b> |
||||
to be the directory where shared libraries are kept. The semantics of |
||||
this env. variable is same as that for Solaris (please refer above). |
||||
</p> |
||||
|
||||
|
||||
</body> |
||||
</html> |
@ -0,0 +1,319 @@
@@ -0,0 +1,319 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
#
|
||||
|
||||
# This guards against adding broken .java files to the directory
|
||||
# hierarchy, but may be a pain to keep in sync
|
||||
|
||||
# Generated using the build-pkglist script
|
||||
ifeq "x$(GAMMADIR)" "x" |
||||
include ../../make/defs.make |
||||
else |
||||
include $(GAMMADIR)/make/defs.make |
||||
endif |
||||
|
||||
ifeq "x$(HOTSPOT_BUILD_VERSION)" "x" |
||||
SA_BUILD_VERSION=$(HOTSPOT_RELEASE_VERSION) |
||||
else |
||||
SA_BUILD_VERSION=$(HOTSPOT_RELEASE_VERSION)-$(HOTSPOT_BUILD_VERSION) |
||||
endif |
||||
|
||||
PKGLIST = \
|
||||
sun.jvm.hotspot \ |
||||
sun.jvm.hotspot.asm \ |
||||
sun.jvm.hotspot.asm.sparc \ |
||||
sun.jvm.hotspot.c1 \ |
||||
sun.jvm.hotspot.ci \ |
||||
sun.jvm.hotspot.code \ |
||||
sun.jvm.hotspot.compiler \ |
||||
sun.jvm.hotspot.debugger \ |
||||
sun.jvm.hotspot.debugger.amd64 \ |
||||
sun.jvm.hotspot.debugger.bsd \ |
||||
sun.jvm.hotspot.debugger.bsd.amd64 \ |
||||
sun.jvm.hotspot.debugger.bsd.x86 \ |
||||
sun.jvm.hotspot.debugger.cdbg \ |
||||
sun.jvm.hotspot.debugger.cdbg.basic \ |
||||
sun.jvm.hotspot.debugger.cdbg.basic.amd64 \ |
||||
sun.jvm.hotspot.debugger.cdbg.basic.x86 \ |
||||
sun.jvm.hotspot.debugger.dummy \ |
||||
sun.jvm.hotspot.debugger.linux \ |
||||
sun.jvm.hotspot.debugger.linux.amd64 \ |
||||
sun.jvm.hotspot.debugger.linux.aarch64 \ |
||||
sun.jvm.hotspot.debugger.linux.x86 \ |
||||
sun.jvm.hotspot.debugger.posix \ |
||||
sun.jvm.hotspot.debugger.posix.elf \ |
||||
sun.jvm.hotspot.debugger.proc \ |
||||
sun.jvm.hotspot.debugger.proc.amd64 \ |
||||
sun.jvm.hotspot.debugger.proc.aarch64 \ |
||||
sun.jvm.hotspot.debugger.proc.sparc \ |
||||
sun.jvm.hotspot.debugger.proc.x86 \ |
||||
sun.jvm.hotspot.debugger.remote \ |
||||
sun.jvm.hotspot.debugger.remote.amd64 \ |
||||
sun.jvm.hotspot.debugger.remote.sparc \ |
||||
sun.jvm.hotspot.debugger.remote.x86 \ |
||||
sun.jvm.hotspot.debugger.sparc \ |
||||
sun.jvm.hotspot.debugger.win32.coff \ |
||||
sun.jvm.hotspot.debugger.windbg \ |
||||
sun.jvm.hotspot.debugger.windbg.amd64 \ |
||||
sun.jvm.hotspot.debugger.windbg.x86 \ |
||||
sun.jvm.hotspot.debugger.x86 \ |
||||
sun.jvm.hotspot.gc_implementation \ |
||||
sun.jvm.hotspot.gc_implementation.g1 \ |
||||
sun.jvm.hotspot.gc_implementation.parallelScavenge \ |
||||
sun.jvm.hotspot.gc_implementation.shared \ |
||||
sun.jvm.hotspot.gc_interface \ |
||||
sun.jvm.hotspot.interpreter \ |
||||
sun.jvm.hotspot.jdi \ |
||||
sun.jvm.hotspot.memory \ |
||||
sun.jvm.hotspot.opto \ |
||||
sun.jvm.hotspot.oops \ |
||||
sun.jvm.hotspot.prims \ |
||||
sun.jvm.hotspot.runtime \ |
||||
sun.jvm.hotspot.runtime.amd64 \ |
||||
sun.jvm.hotspot.runtime.aarch64 \ |
||||
sun.jvm.hotspot.runtime.bsd \ |
||||
sun.jvm.hotspot.runtime.bsd_amd64 \ |
||||
sun.jvm.hotspot.runtime.bsd_x86 \ |
||||
sun.jvm.hotspot.runtime.linux \ |
||||
sun.jvm.hotspot.runtime.linux_amd64 \ |
||||
sun.jvm.hotspot.runtime.linux_aarch64 \ |
||||
sun.jvm.hotspot.runtime.linux_sparc \ |
||||
sun.jvm.hotspot.runtime.linux_x86 \ |
||||
sun.jvm.hotspot.runtime.posix \ |
||||
sun.jvm.hotspot.runtime.solaris_amd64 \ |
||||
sun.jvm.hotspot.runtime.solaris_sparc \ |
||||
sun.jvm.hotspot.runtime.solaris_x86 \ |
||||
sun.jvm.hotspot.runtime.sparc \ |
||||
sun.jvm.hotspot.runtime.win32_amd64 \ |
||||
sun.jvm.hotspot.runtime.win32_x86 \ |
||||
sun.jvm.hotspot.runtime.x86 \ |
||||
sun.jvm.hotspot.tools \ |
||||
sun.jvm.hotspot.tools.jcore \ |
||||
sun.jvm.hotspot.tools.soql \ |
||||
sun.jvm.hotspot.types \ |
||||
sun.jvm.hotspot.types.basic \ |
||||
sun.jvm.hotspot.ui \ |
||||
sun.jvm.hotspot.ui.action \ |
||||
sun.jvm.hotspot.ui.classbrowser \ |
||||
sun.jvm.hotspot.ui.resources \ |
||||
sun.jvm.hotspot.ui.table \ |
||||
sun.jvm.hotspot.ui.tree \ |
||||
sun.jvm.hotspot.ui.treetable \ |
||||
sun.jvm.hotspot.utilities \ |
||||
sun.jvm.hotspot.utilities.memo \ |
||||
sun.jvm.hotspot.utilities.soql \ |
||||
com.sun.java.swing.action \ |
||||
com.sun.java.swing.ui |
||||
#END PKGLIST
|
||||
|
||||
# Generated using the build-filelist script
|
||||
FILELIST = \
|
||||
sun/jvm/hotspot/*.java \ |
||||
sun/jvm/hotspot/asm/*.java \ |
||||
sun/jvm/hotspot/asm/sparc/*.java \ |
||||
sun/jvm/hotspot/c1/*.java \ |
||||
sun/jvm/hotspot/ci/*.java \ |
||||
sun/jvm/hotspot/code/*.java \ |
||||
sun/jvm/hotspot/compiler/*.java \ |
||||
sun/jvm/hotspot/debugger/*.java \ |
||||
sun/jvm/hotspot/debugger/amd64/*.java \ |
||||
sun/jvm/hotspot/debugger/bsd/*.java \ |
||||
sun/jvm/hotspot/debugger/bsd/amd64/*.java \ |
||||
sun/jvm/hotspot/debugger/bsd/x86/*.java \ |
||||
sun/jvm/hotspot/debugger/cdbg/*.java \ |
||||
sun/jvm/hotspot/debugger/cdbg/basic/*.java \ |
||||
sun/jvm/hotspot/debugger/cdbg/basic/amd64/*.java \ |
||||
sun/jvm/hotspot/debugger/cdbg/basic/x86/*.java \ |
||||
sun/jvm/hotspot/debugger/dummy/*.java \ |
||||
sun/jvm/hotspot/debugger/linux/*.java \ |
||||
sun/jvm/hotspot/debugger/linux/x86/*.java \ |
||||
sun/jvm/hotspot/debugger/linux/aarch64/*.java \ |
||||
sun/jvm/hotspot/debugger/posix/*.java \ |
||||
sun/jvm/hotspot/debugger/posix/elf/*.java \ |
||||
sun/jvm/hotspot/debugger/proc/*.java \ |
||||
sun/jvm/hotspot/debugger/proc/amd64/*.java \ |
||||
sun/jvm/hotspot/debugger/proc/sparc/*.java \ |
||||
sun/jvm/hotspot/debugger/proc/x86/*.java \ |
||||
sun/jvm/hotspot/debugger/proc/aarch64/*.java \ |
||||
sun/jvm/hotspot/debugger/remote/*.java \ |
||||
sun/jvm/hotspot/debugger/remote/amd64/*.java \ |
||||
sun/jvm/hotspot/debugger/remote/sparc/*.java \ |
||||
sun/jvm/hotspot/debugger/remote/x86/*.java \ |
||||
sun/jvm/hotspot/debugger/sparc/*.java \ |
||||
sun/jvm/hotspot/debugger/win32/coff/*.java \ |
||||
sun/jvm/hotspot/debugger/windbg/*.java \ |
||||
sun/jvm/hotspot/debugger/windbg/x86/*.java \ |
||||
sun/jvm/hotspot/debugger/x86/*.java \ |
||||
sun/jvm/hotspot/gc_implementation/g1/*.java \ |
||||
sun/jvm/hotspot/gc_implementation/parallelScavenge/*.java \ |
||||
sun/jvm/hotspot/gc_implementation/shared/*.java \ |
||||
sun/jvm/hotspot/interpreter/*.java \ |
||||
sun/jvm/hotspot/jdi/*.java \ |
||||
sun/jvm/hotspot/memory/*.java \ |
||||
sun/jvm/hotspot/oops/*.java \ |
||||
sun/jvm/hotspot/opto/*.java \ |
||||
sun/jvm/hotspot/prims/*.java \ |
||||
sun/jvm/hotspot/runtime/*.java \ |
||||
sun/jvm/hotspot/runtime/amd64/*.java \ |
||||
sun/jvm/hotspot/runtime/aarch64/*.java \ |
||||
sun/jvm/hotspot/runtime/bsd/*.java \ |
||||
sun/jvm/hotspot/runtime/bsd_amd64/*.java \ |
||||
sun/jvm/hotspot/runtime/bsd_x86/*.java \ |
||||
sun/jvm/hotspot/runtime/linux/*.java \ |
||||
sun/jvm/hotspot/runtime/linux_amd64/*.java \ |
||||
sun/jvm/hotspot/runtime/linux_aarch64/*.java \ |
||||
sun/jvm/hotspot/runtime/linux_sparc/*.java \ |
||||
sun/jvm/hotspot/runtime/linux_x86/*.java \ |
||||
sun/jvm/hotspot/runtime/posix/*.java \ |
||||
sun/jvm/hotspot/runtime/solaris_amd64/*.java \ |
||||
sun/jvm/hotspot/runtime/solaris_sparc/*.java \ |
||||
sun/jvm/hotspot/runtime/solaris_x86/*.java \ |
||||
sun/jvm/hotspot/runtime/sparc/*.java \ |
||||
sun/jvm/hotspot/runtime/win32_amd64/*.java \ |
||||
sun/jvm/hotspot/runtime/win32_x86/*.java \ |
||||
sun/jvm/hotspot/runtime/x86/*.java \ |
||||
sun/jvm/hotspot/tools/*.java \ |
||||
sun/jvm/hotspot/tools/jcore/*.java \ |
||||
sun/jvm/hotspot/tools/soql/*.java \ |
||||
sun/jvm/hotspot/types/*.java \ |
||||
sun/jvm/hotspot/types/basic/*.java \ |
||||
sun/jvm/hotspot/ui/*.java \ |
||||
sun/jvm/hotspot/ui/action/*.java \ |
||||
sun/jvm/hotspot/ui/classbrowser/*.java \ |
||||
sun/jvm/hotspot/ui/table/*.java \ |
||||
sun/jvm/hotspot/ui/tree/*.java \ |
||||
sun/jvm/hotspot/ui/treetable/*.java \ |
||||
sun/jvm/hotspot/utilities/*.java \ |
||||
sun/jvm/hotspot/utilities/memo/*.java \ |
||||
sun/jvm/hotspot/utilities/soql/*.java \ |
||||
com/sun/java/swing/action/*.java \ |
||||
com/sun/java/swing/ui/*.java |
||||
#END FILELIST
|
||||
|
||||
ifneq "x$(ALT_BOOTDIR)" "x" |
||||
BOOTDIR := $(ALT_BOOTDIR) |
||||
endif |
||||
|
||||
ifeq "x$(BOOTDIR)" "x" |
||||
JDK_HOME := $(shell dirname $(shell which java))/.. |
||||
else |
||||
JDK_HOME := $(BOOTDIR) |
||||
endif |
||||
|
||||
isUnix := $(shell test -r c:/; echo $$?) |
||||
|
||||
ifeq "$(isUnix)" "1" |
||||
CPS := : |
||||
else |
||||
CPS := ";" |
||||
endif |
||||
|
||||
SRC_DIR = ../src/share/classes |
||||
BUILD_DIR = ../build |
||||
OUTPUT_DIR = $(BUILD_DIR)/classes |
||||
DOC_DIR = $(BUILD_DIR)/doc |
||||
|
||||
# gnumake 3.78.1 does not accept the *s,
|
||||
# so use the shell to expand them
|
||||
ALLFILES := $(patsubst %,$(SRC_DIR)/%,$(FILELIST)) |
||||
ALLFILES := $(shell /bin/ls $(ALLFILES)) |
||||
|
||||
# tools.jar is used by the sa-jdi binding
|
||||
CLASSPATH = $(JDK_HOME)/lib/tools.jar |
||||
|
||||
CLASSPATH := $(subst \,/,$(CLASSPATH)) |
||||
|
||||
# FIXME: autogenerate call to rmic
|
||||
|
||||
SA_BUILD_VERSION_PROP = "sun.jvm.hotspot.runtime.VM.saBuildVersion=$(SA_BUILD_VERSION)" |
||||
|
||||
SA_PROPERTIES = $(OUTPUT_DIR)/sa.properties |
||||
JAVAC = $(JDK_HOME)/bin/javac |
||||
JAVA = $(JDK_HOME)/bin/java |
||||
JAVADOC = $(JDK_HOME)/bin/javadoc |
||||
RMIC = $(JDK_HOME)/bin/rmic |
||||
|
||||
# Tagging it on because there's no reason not to run it
|
||||
all: filelist |
||||
@mkdir -p $(OUTPUT_DIR) |
||||
@echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES) |
||||
$(JAVAC) -classpath $(CLASSPATH) -deprecation -sourcepath $(SRC_DIR) -g -d $(OUTPUT_DIR) @filelist |
||||
$(RMIC) -classpath $(OUTPUT_DIR) -d $(OUTPUT_DIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer |
||||
rm -f $(OUTPUT_DIR)/sun/jvm/hotspot/utilities/soql/sa.js |
||||
cp $(SRC_DIR)/sun/jvm/hotspot/utilities/soql/sa.js $(OUTPUT_DIR)/sun/jvm/hotspot/utilities/soql |
||||
mkdir -p $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources |
||||
rm -f $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources/* |
||||
cp $(SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources/ |
||||
cp -r $(SRC_DIR)/images/* $(OUTPUT_DIR)/ |
||||
|
||||
allprof: filelist |
||||
@mkdir -p $(OUTPUT_DIR) |
||||
@echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES) |
||||
$(JAVAC) -J-Xprof -classpath $(CLASSPATH) -deprecation -sourcepath $(SRC_DIR) -g -d $(OUTPUT_DIR) @filelist |
||||
$(RMIC) -classpath $(OUTPUT_DIR) -d $(OUTPUT_DIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer |
||||
rm -f $(OUTPUT_DIR)/sun/jvm/hotspot/utilities/soql/sa.js |
||||
cp $(SRC_DIR)/sun/jvm/hotspot/utilities/soql/sa.js $(OUTPUT_DIR)/sun/jvm/hotspot/utilities/soql |
||||
mkdir -p $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources |
||||
rm -f $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources/* |
||||
cp $(SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources/ |
||||
cp -r $(SRC_DIR)/images/* $(OUTPUT_DIR)/ |
||||
|
||||
.PHONY: filelist |
||||
filelist: $(ALLFILES) |
||||
@if [ ! -f $(JDK_HOME)/lib/tools.jar ] ; then \
|
||||
echo "Missing $(JDK_HOME)/lib/tools.jar file. Use 1.6.0 or later version jdk to build SA."; \
|
||||
echo ""; \
|
||||
exit 1; \
|
||||
fi |
||||
@rm -f $@ |
||||
@echo $(ALLFILES) > $@ |
||||
|
||||
.PHONY: natives |
||||
natives: |
||||
cd ../src/os/`$(JAVA) -classpath $(OUTPUT_DIR) sun.jvm.hotspot.utilities.PlatformInfo`; $(MAKE) all |
||||
|
||||
.PHONY: sa-jdi.jar |
||||
sa-jdi.jar: |
||||
echo "sa-jdi.jar is built by a hotspot build." |
||||
|
||||
docs: |
||||
@$(JAVADOC) -private -classpath $(CLASSPATH) -sourcepath $(SRC_DIR) -d $(DOC_DIR) $(PKGLIST) |
||||
|
||||
sizes: $(ALLFILES) |
||||
wc -l $(ALLFILES) |
||||
|
||||
cscope: $(ALLFILES) |
||||
rm -f java.files |
||||
echo $(ALLFILES) > java.files |
||||
cscope -b -i java.files -f java.out |
||||
rm -f java.files |
||||
|
||||
.PHONY: sa.jar |
||||
sa.jar: |
||||
rm -f $(BUILD_DIR)/sa.jar |
||||
cd $(OUTPUT_DIR) ; jar cvf ../sa.jar * |
||||
|
||||
clean:: |
||||
rm -rf filelist |
||||
cd ../src/os/`$(JAVA) -classpath $(OUTPUT_DIR) sun.jvm.hotspot.utilities.PlatformInfo`; $(MAKE) clean |
||||
rm -rf $(BUILD_DIR)/* |
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
These are the Java-level sources for the Serviceability Agent (SA). |
||||
|
||||
To build, type "gnumake all". |
||||
|
||||
For usage documentation, please refer to ../doc/index.html. |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh -f |
||||
|
||||
SH=`which sh` |
||||
MKS_HOME=`dirname $SH` |
||||
|
||||
CD=cd |
||||
FIND=$MKS_HOME/find |
||||
SORT=$MKS_HOME/sort |
||||
|
||||
$CD ../src/share/classes; $FIND sun \( -name SCCS -prune \) -o \( -name "*.java" \) -print | $SORT > ../../../make/filelist.txt |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh -f |
||||
|
||||
SH=`which sh` |
||||
MKS_HOME=`dirname $SH` |
||||
|
||||
CD=cd |
||||
FIND=$MKS_HOME/find |
||||
SED=$MKS_HOME/sed |
||||
SORT=$MKS_HOME/sort |
||||
|
||||
$CD ../src/share/classes; $FIND sun/jvm/hotspot com/sun/java/swing -type d -print | $SED -e 's/\//./g' | $SORT > ../../../make/pkglist.txt |
@ -0,0 +1,126 @@
@@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<!-- |
||||
Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved. |
||||
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
|
||||
This code is free software; you can redistribute it and/or modify it |
||||
under the terms of the GNU General Public License version 2 only, as |
||||
published by the Free Software Foundation. |
||||
|
||||
This code is distributed in the hope that it will be useful, but WITHOUT |
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
version 2 for more details (a copy is included in the LICENSE file that |
||||
accompanied this code). |
||||
|
||||
You should have received a copy of the GNU General Public License version |
||||
2 along with this work; if not, write to the Free Software Foundation, |
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
|
||||
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
or visit www.oracle.com if you need additional information or have any |
||||
questions. |
||||
|
||||
--> |
||||
|
||||
<!-- This is an Ant project file. Ant is a build tool like make or gnumake which is not |
||||
dependent on the underlying OS shell. For more information on Ant, please see |
||||
http://ant.apache.org/ --> |
||||
|
||||
<!-- A "project" describes a set of targets that may be requested |
||||
when Ant is executed. The "default" attribute defines the |
||||
target which is executed if no specific target is requested, |
||||
and the "basedir" attribute defines the current working directory |
||||
from which Ant executes the requested task. This is normally |
||||
set to the current working directory. |
||||
--> |
||||
|
||||
|
||||
<project name="HotSpot Serviceability Agent" default="all" basedir="."> |
||||
|
||||
<!-- Property Definitions --> |
||||
|
||||
<property name="app.name" value="sa"/> |
||||
<property name="dist.jar" value="${app.name}.jar"/> |
||||
<property name="classes" value="../build/classes"/> |
||||
|
||||
<!-- The "prepare" target is used to construct the deployment home |
||||
directory structure (if necessary), and to copy in static files |
||||
as required. In the example below, Ant is instructed to create |
||||
the deployment directory, copy the contents of the "web/" source |
||||
hierarchy, and set up the WEB-INF subdirectory appropriately. |
||||
--> |
||||
|
||||
<target name="prepare"> |
||||
<mkdir dir="${classes}"/> |
||||
</target> |
||||
|
||||
|
||||
<!-- The "clean" target removes the deployment home directory structure, |
||||
so that the next time the "compile" target is requested, it will need |
||||
to compile everything from scratch. |
||||
--> |
||||
|
||||
<target name="clean"> |
||||
<delete dir="${classes}"/> |
||||
</target> |
||||
|
||||
|
||||
<!-- The "compile" target is used to compile (or recompile) the Java classes |
||||
that make up this web application. The recommended source code directory |
||||
structure makes this very easy because the <javac> task automatically |
||||
works its way down a source code hierarchy and compiles any class that |
||||
has not yet been compiled, or where the source file is newer than the |
||||
class file. |
||||
|
||||
Feel free to adjust the compilation option parameters (debug, |
||||
optimize, and deprecation) to suit your requirements. It is also |
||||
possible to base them on properties, so that you can adjust this |
||||
behavior at runtime. |
||||
|
||||
The "compile" task depends on the "prepare" task, so the deployment |
||||
home directory structure will be created if needed the first time. |
||||
--> |
||||
|
||||
<target name="compile" depends="prepare" description="Compiles the sources"> |
||||
<javac srcdir="../src/share/classes" |
||||
destdir="${classes}" |
||||
debug="on" deprecation="on" |
||||
source="1.4"> |
||||
<classpath refid="javac.classpath" /> |
||||
</javac> |
||||
|
||||
<rmic classname="sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer" |
||||
base="${classes}"/> |
||||
</target> |
||||
|
||||
<target name="deploy" depends="compile" description="Creates a deployment bundle"> |
||||
<delete file="${classes}/${dist.jar}" /> |
||||
<copy todir="${classes}/sun/jvm/hotspot/utilities/soql/"> |
||||
<fileset dir="../src/share/classes/sun/jvm/hotspot/utilities/soql" includes="*.js" /> |
||||
</copy> |
||||
|
||||
<mkdir dir="${classes}/sun/jvm/hotspot/ui/resources" /> |
||||
<copy todir="${classes}/sun/jvm/hotspot/ui/resources"> |
||||
<fileset dir="../src/share/classes/sun/jvm/hotspot/ui/resources" includes="*.png" /> |
||||
</copy> |
||||
<copy todir="${classes}/toolbarButtonGraphics/development/"> |
||||
<fileset dir="../src/share/classes/images/toolbarButtonGraphics/development/" includes="*.gif" /> |
||||
</copy> |
||||
<copy todir="${classes}/toolbarButtonGraphics/general/"> |
||||
<fileset dir="../src/share/classes/images/toolbarButtonGraphics/general/" includes="*.gif" /> |
||||
</copy> |
||||
<copy todir="${classes}/toolbarButtonGraphics/navigation/"> |
||||
<fileset dir="../src/share/classes/images/toolbarButtonGraphics/navigation/" includes="*.gif" /> |
||||
</copy> |
||||
<copy todir="${classes}/toolbarButtonGraphics/text/"> |
||||
<fileset dir="../src/share/classes/images/toolbarButtonGraphics/text/" includes="*.gif" /> |
||||
</copy> |
||||
|
||||
<jar jarfile="${classes}/${dist.jar}" |
||||
basedir="${classes}"/> |
||||
</target> |
||||
|
||||
<target name="all" depends="deploy" description="Builds sources and deployment jar"/> |
||||
|
||||
</project> |
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
#!/bin/sh |
||||
|
||||
# |
||||
# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.CLHSDB $* |
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
#!/bin/sh |
||||
|
||||
# |
||||
# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.CLHSDB $* |
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
@echo off |
||||
|
||||
REM |
||||
REM Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.CLHSDB %1 %2 |
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
@echo off |
||||
|
||||
REM |
||||
REM Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.CLHSDB %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.FlagDumper $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.FlagDumper $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.FlagDumper %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.FlagDumper %1 %2 |
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.SysPropsDumper $* |
||||
|
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.SysPropsDumper $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.SysPropsDumper %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.SysPropsDumper %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.FinalizerInfo $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.FinalizerInfo $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.FinalizerInfo %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.FinalizerInfo %1 %2 |
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
// |
||||
// Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved. |
||||
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
// |
||||
// This code is free software; you can redistribute it and/or modify it |
||||
// under the terms of the GNU General Public License version 2 only, as |
||||
// published by the Free Software Foundation. |
||||
// |
||||
// This code is distributed in the hope that it will be useful, but WITHOUT |
||||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
// version 2 for more details (a copy is included in the LICENSE file that |
||||
// accompanied this code). |
||||
// |
||||
// You should have received a copy of the GNU General Public License version |
||||
// 2 along with this work; if not, write to the Free Software Foundation, |
||||
// Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
// |
||||
// Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
// or visit www.oracle.com if you need additional information or have any |
||||
// questions. |
||||
// |
||||
// |
||||
|
||||
// Do NOT use this policy file in a production system! |
||||
|
||||
grant { |
||||
// Allow everything for now |
||||
permission java.security.AllPermission; |
||||
}; |
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
#!/bin/sh |
||||
|
||||
# |
||||
# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.HeapDumper $* |
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
#!/bin/sh |
||||
|
||||
# |
||||
# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.HeapDumper $* |
||||
|
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
@echo off |
||||
|
||||
REM |
||||
REM Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.HeapDumper %1 %2 %3 %4 |
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
@echo off |
||||
|
||||
REM |
||||
REM Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.HeapDumper %1 %2 %3 %4 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.HeapSummary $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.HeapSummary $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.HeapSummary %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.HeapSummary %1 %2 |
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
REM |
||||
REM Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
java -showversion -cp ..\build\classes;..\src\share\lib\js.jar;.\sa.jar;lib\js.jar sun.jvm.hotspot.HSDB %1 %2 |
@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
STARTDIR=`dirname $0` |
||||
|
||||
if [ "x$SA_JAVA" = "x" ]; then |
||||
SA_JAVA=java |
||||
fi |
||||
|
||||
$SA_JAVA -showversion -cp $STARTDIR/../build/classes:$STARTDIR/../src/share/lib/js.jar:$STARTDIR/sa.jar:$STARTDIR/lib/js.jar sun.jvm.hotspot.HSDB $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.HSDB $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.HSDB $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.HSDB %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.HSDB %1 %2 |
@ -0,0 +1,262 @@
@@ -0,0 +1,262 @@
|
||||
<HTML> |
||||
|
||||
|
||||
<HEAD> |
||||
<TITLE> |
||||
Using The HotSpot Serviceability Agent |
||||
</TITLE> |
||||
</HEAD> |
||||
|
||||
<BODY TEXT="#000000" BGCOLOR="#FFFFFF"> |
||||
<H1> |
||||
Using The HotSpot Serviceability Agent |
||||
</H1> |
||||
|
||||
<P> |
||||
<H2> |
||||
Contents |
||||
</H2> |
||||
</P> |
||||
|
||||
<UL> |
||||
<LI> <A HREF = "#INTRODUCTION">Introduction</A> |
||||
<LI> <A HREF = "#SOURCES">Organization of the sources</A> |
||||
<LI> <A HREF = "#RUNNING">Running HSDB</A> |
||||
<LI> <A HREF = "#NOTES">Notes</A> |
||||
</UL> |
||||
|
||||
<H2> |
||||
<A NAME="INTRODUCTION"> |
||||
Introduction |
||||
</A> |
||||
</H2> |
||||
|
||||
<P> |
||||
The HotSpot Serviceability Agent (SA) is a set of Java APIs which |
||||
mirror the internal APIs of the HotSpot VM and which can be used to |
||||
examine the state of a HotSpot VM. |
||||
</P> |
||||
|
||||
<P> |
||||
The system understands the layout of certain VM data structures and is |
||||
able to traverse these structures in an examination-only fashion; that |
||||
is, it does not rely on being able to run code in the target VM. For |
||||
this reason it transparently works with either a running VM or a core |
||||
file. |
||||
</P> |
||||
|
||||
<P> |
||||
The system can reconstruct information about Java frames on the stack |
||||
and objects in the heap. Many of the important data structures in the |
||||
VM like the CodeCache, Universe, StubQueue, Frames, and VFrames have |
||||
been exposed and have relatively complete (or at least useful) |
||||
implementations. |
||||
</P> |
||||
|
||||
<P> |
||||
A small graphical debugger called HSDB (the "HotSpot Debugger") has |
||||
been written using these APIs. It provides stack memory dumps |
||||
annotated with method invocations, compiled-code inlining (if |
||||
present), interpreted vs. compiled code, interpreter codelets (if |
||||
interpreted), and live oops from oop-map information. It also provides |
||||
a tree-based oop inspector. More information will be added as |
||||
necessary; please <A HREF = "mailto:kenneth.russell@eng">send |
||||
email</A> with suggestions on what would be useful. |
||||
</P> |
||||
|
||||
<P> |
||||
The SA currently only works on Solaris. It uses dbx to connect to the |
||||
remote process or core file and communicates with a small piece of |
||||
code (an "import module") loaded into the debugger. |
||||
</P> |
||||
|
||||
<H2> |
||||
<A NAME="SOURCES"> |
||||
Organization of the sources |
||||
</A> |
||||
</H2> |
||||
|
||||
<P> |
||||
The Java-side source code, which is the bulk of the SA, is in |
||||
src/share/vm/agent. The organization of the sun.jvm.hotspot package |
||||
hierarchy mirrors the organization in the VM. This should allow |
||||
engineers familiar with the HotSpot sources to quickly understand how |
||||
the SA works and to make modifications if necessary. To build these |
||||
sources, cd to src/share/vm/agent and type "make". |
||||
</P> |
||||
|
||||
<P> |
||||
|
||||
The SA on Solaris works by communicating with a small piece of code |
||||
(an "import module") loaded into dbx. The source code for this import |
||||
module is in src/os/solaris/agent. To build this library, cd to |
||||
src/os/solaris/agent and type "make 32bit" or "make 64bit". The |
||||
distinction is necessary because the SPARC version of dbx ships with |
||||
two versions of its executable, and depending on which architecture |
||||
(v8 or v9) the debugger is running on selects the appropriate |
||||
executable. The SA tries the v8 version first, but if you are running |
||||
on a v9 machine you must provide both versions to the SA. |
||||
</P> |
||||
|
||||
<P> |
||||
|
||||
The system is currently hardwired to look on jano for its dbx |
||||
executable and import module. The relevant directory structure looks |
||||
like this: |
||||
|
||||
<UL> |
||||
<LI> .../hotspot/sa/ |
||||
<UL> |
||||
<LI> solaris/ |
||||
<UL> |
||||
<LI> sparc/ |
||||
<UL> |
||||
<LI> bin/ |
||||
<UL> |
||||
<LI> dbx: symlink to (v8) dbx 7.0 executable |
||||
</UL> |
||||
</UL> |
||||
<UL> |
||||
<LI> lib/ |
||||
<UL> |
||||
<LI> libsvc_agent_dbx.so: 32-bit version of import module |
||||
</UL> |
||||
</UL> |
||||
<LI> sparcv9/ |
||||
<UL> |
||||
<LI> lib/ |
||||
<UL> |
||||
<LI> libsvc_agent_dbx.so: 32-bit version of import module |
||||
</UL> |
||||
</UL> |
||||
</UL> |
||||
</UL> |
||||
</UL> |
||||
</P> |
||||
|
||||
<P> |
||||
The code which builds up path names to these executables is contained |
||||
in sun.jvm.hotspot.HotSpotAgent.java. There are hardcoded paths in |
||||
this file to jano, but the rest of the system is isolated from this. |
||||
</P> |
||||
|
||||
<P> |
||||
(It would be nice to have a panel in the debugger allowing |
||||
configuration of all of the known operating systems' options; right |
||||
now Solaris is the only supported OS, making that easier.) |
||||
</P> |
||||
|
||||
<H2> |
||||
<A NAME="RUNNING"> |
||||
Running HSDB |
||||
</A> |
||||
</H2> |
||||
|
||||
<P> |
||||
An installation of HSDB has been placed on jano. To access it, add the |
||||
following directory to your PATH: |
||||
</P> |
||||
|
||||
<P> |
||||
<PRE> |
||||
/net/jano/export/disk05/hotspot/sa/bin/common |
||||
</PRE> |
||||
</P> |
||||
|
||||
<P> |
||||
To start the debugger, type "hsdb". |
||||
</P> |
||||
|
||||
<P> |
||||
Alternatively, you can start a local build of the debugger by building |
||||
the sources in src/share/vm/agent, cd'ing to that directory, and |
||||
typing "java sun.jvm.hotspot.HSDB". |
||||
</P> |
||||
|
||||
<P> |
||||
There are three modes for the debugger: attaching to a local process, |
||||
opening a core file, and attaching to a remote "debug server". The |
||||
remote case requires two programs to be running on the remote machine: |
||||
the rmiregistry (see the script "start-rmiregistry" in this directory; |
||||
run this in the background) and the debug server (see the script |
||||
"start-debug-server"), in that order. start-rmiregistry takes no |
||||
arguments; start-debug-server takes as argument the process ID or the |
||||
executable and core file names to allow remote debugging of. Make sure |
||||
you do NOT have a CLASSPATH environment variable set when you run |
||||
these scripts. (The classes put into the rmiregistry are in sun.*, and |
||||
there are permissions problems if they aren't placed on the boot |
||||
classpath.) |
||||
</P> |
||||
|
||||
<P> |
||||
NOTE that the SA currently only works against VMs on Solaris/SPARC. |
||||
Remote debugging of Solaris/SPARC VMs on arbitrary platforms is |
||||
possible using the debug server; select "Connect to debug server..." |
||||
in HSDB. |
||||
</P> |
||||
|
||||
<P> |
||||
Once the debugger has been launched, the threads list is displayed. |
||||
The current set of functionality allows: |
||||
</P> |
||||
|
||||
<UL> |
||||
<LI> Browsing of the annotated stack memory ("Stack Memory" button). It |
||||
is currently annotated with the following information: |
||||
<UL> |
||||
<LI> Method names of the Java frames and their extents (supporting |
||||
inlined compiled methods) |
||||
<LI> Locations and types of oops, found using the oop map information |
||||
from compiled methods (interpreter oop maps coming soon) |
||||
<LI> If a Java frame was interrupted by a signal (e.g., because of a |
||||
crash), annotates the frame with the signal name and number |
||||
<LI> Interpreter codelet descriptions for interpreted frames |
||||
</UL> |
||||
<LI> Finding which thread or threads caused a crash (currently |
||||
identified by the presence of a signal handler frame) |
||||
<LI> Browsing of oops using the Oop Inspector. |
||||
<LI> Browsing of the java.lang.Thread object's oop. |
||||
<LI> Object histogram and inspection of objects therein. |
||||
</UL> |
||||
</P> |
||||
|
||||
<P> |
||||
More functionality is planned. Please <A HREF = |
||||
"mailto:kenneth.russell@eng">send email</A> with suggestions on what |
||||
would be useful, with any questions or comments, or if the debugger |
||||
crashes. |
||||
</P> |
||||
|
||||
<H2> |
||||
<A NAME="NOTES"> |
||||
Notes |
||||
</A> |
||||
</H2> |
||||
|
||||
<P> |
||||
HSDB does not suspend the system at a safepoint, but at an arbitrary |
||||
point. This means that many of the invariants in the VM's code are not |
||||
followed. |
||||
</P> |
||||
|
||||
<P> |
||||
As it happens, most of the places where the code ported over from the |
||||
VM has failed involve the topmost frame on the stack. Some |
||||
modifications have been made to allow the system to recognize |
||||
problematic situations. |
||||
</P> |
||||
|
||||
<P> |
||||
Certainly, not all of the failure modes of the debugger have been |
||||
found. Please <A HREF = "mailto:kenneth.russell@eng">send email</A> if |
||||
HSDB throws an exception. The best debugging aid in these situations |
||||
is a core file since it is a static view of the VM to which we can |
||||
then adapt the debugger code, as opposed to having to try to suspend |
||||
the VM over and over to reproduce the failure. gcore (1) is a useful |
||||
tool. (NOTE: do not try gcore with any application using the DGA X |
||||
server extension (example: Java2Demo); the kernel will panic. See bug |
||||
4343237.) |
||||
</P> |
||||
|
||||
</BODY> |
||||
</HTML> |
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
# set the environment variable JCORE_PACKAGES to a comma separated list of |
||||
# packages whose classes have to be retrieved from the core file. |
||||
|
||||
$SA_JAVA_CMD -Dsun.jvm.hotspot.tools.jcore.filter=sun.jvm.hotspot.tools.jcore.PackageNameFilter -Dsun.jvm.hotspot.tools.jcore.PackageNameFilter.pkgList=$JCORE_PACKAGES sun.jvm.hotspot.tools.jcore.ClassDump $* |
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
# set the environment variable JCORE_PACKAGES to a comma separated list of |
||||
# packages whose classes have to be retrieved from the core file. |
||||
|
||||
$SA_JAVA_CMD -Dsun.jvm.hotspot.tools.jcore.filter=sun.jvm.hotspot.tools.jcore.PackageNameFilter -Dsun.jvm.hotspot.tools.jcore.PackageNameFilter.pkgList=$JCORE_PACKAGES sun.jvm.hotspot.tools.jcore.ClassDump $* |
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
REM set the environment variable JCORE_PACKAGES to comman separated list of |
||||
REM packages whose classes have to be retrieved from the core file. |
||||
|
||||
%SA_JAVA_CMD% -Dsun.jvm.hotspot.tools.jcore.filter=sun.jvm.hotspot.tools.jcore.PackageNameFilter -Dsun.jvm.hotspot.tools.jcore.PackageNameFilter.pkgList=%JCORE_PACKAGES% sun.jvm.hotspot.tools.jcore.ClassDump %1 %2 |
||||
|
||||
|
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
REM set the environment variable JCORE_PACKAGES to comman separated list of |
||||
REM packages whose classes have to be retrieved from the core file. |
||||
|
||||
%SA_JAVA_CMD% -Dsun.jvm.hotspot.tools.jcore.filter=sun.jvm.hotspot.tools.jcore.PackageNameFilter -Dsun.jvm.hotspot.tools.jcore.PackageNameFilter.pkgList=%JCORE_PACKAGES% sun.jvm.hotspot.tools.jcore.ClassDump %1 %2 |
||||
|
||||
|
@ -0,0 +1,45 @@
@@ -0,0 +1,45 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
usage() |
||||
{ |
||||
echo "usage: $0 <java executable> <core file>" |
||||
exit 1 |
||||
} |
||||
# |
||||
if [ $# -lt 2 ]; then |
||||
usage |
||||
else |
||||
EXEC_FILE="${1}" |
||||
CORE_FILE="${2}" |
||||
echo "$0 attaching to core=${CORE_FILE}" |
||||
fi |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$JAVA_HOME/bin/jdb -J-Xbootclasspath/a:$SA_CLASSPATH:$JAVA_HOME/lib/tools.jar \ |
||||
-J-Dsun.boot.library.path=$JAVA_HOME/jre/lib/$CPU:$SA_LIBPATH \ |
||||
-connect sun.jvm.hotspot.jdi.SACoreAttachingConnector:core=${CORE_FILE},javaExecutable=${EXEC_FILE} |
@ -0,0 +1,45 @@
@@ -0,0 +1,45 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
usage() |
||||
{ |
||||
echo "usage: $0 <java executable> <core file>" |
||||
exit 1 |
||||
} |
||||
# |
||||
if [ $# -lt 2 ]; then |
||||
usage |
||||
else |
||||
EXEC_FILE="${1}" |
||||
CORE_FILE="${2}" |
||||
echo "$0 attaching to core=${CORE_FILE}" |
||||
fi |
||||
# |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$JAVA_HOME/bin/jdb -J-d64 -J-Xbootclasspath/a:$SA_CLASSPATH:$JAVA_HOME/lib/tools.jar \ |
||||
-J-Dsun.boot.library.path=$JAVA_HOME/jre/lib/$CPU:$SA_LIBPATH \ |
||||
-connect sun.jvm.hotspot.jdi.SACoreAttachingConnector:core=${CORE_FILE},javaExecutable=${EXEC_FILE} |
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
usage() |
||||
{ |
||||
echo "usage: $0 <java process ID>" |
||||
exit 1 |
||||
} |
||||
# |
||||
if [ $# -lt 1 ]; then |
||||
usage |
||||
else |
||||
PID="${1}" |
||||
echo "$0 attaching to PID=${PID}" |
||||
fi |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$JAVA_HOME/bin/jdb -J-Xbootclasspath/a:$SA_CLASSPATH:$JAVA_HOME/lib/tools.jar \ |
||||
-J-Dsun.boot.library.path=$JAVA_HOME/jre/lib/$CPU:$SA_LIBPATH \ |
||||
-connect sun.jvm.hotspot.jdi.SAPIDAttachingConnector:pid=${PID} |
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
usage() |
||||
{ |
||||
echo "usage: $0 <java process ID>" |
||||
exit 1 |
||||
} |
||||
# |
||||
if [ $# -lt 1 ]; then |
||||
usage |
||||
else |
||||
PID="${1}" |
||||
echo "$0 attaching to PID=${PID}" |
||||
fi |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$JAVA_HOME/bin/jdb -J-d64 -J-Xbootclasspath/a:$SA_CLASSPATH:$JAVA_HOME/lib/tools.jar \ |
||||
-J-Dsun.boot.library.path=$JAVA_HOME/jre/lib/$CPU:$SA_LIBPATH \ |
||||
-connect sun.jvm.hotspot.jdi.SAPIDAttachingConnector:pid=${PID} |
||||
|
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.ObjectHistogram $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.ObjectHistogram $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.ObjectHistogram %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.ObjectHistogram %1 %2 |
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
#!/bin/sh |
||||
|
||||
# |
||||
# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.soql.JSDB $* |
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
#!/bin/sh |
||||
|
||||
# |
||||
# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.soql.JSDB $* |
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
@echo off |
||||
|
||||
REM |
||||
REM Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.soql.JSDB %1 %2 |
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
@echo off |
||||
|
||||
REM |
||||
REM Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.soql.JSDB %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.StackTrace $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.StackTrace $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.StackTrace %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.StackTrace %1 %2 |
@ -0,0 +1,93 @@
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
||||
<html> |
||||
<head> |
||||
<title>Hotspot SA User Interface Notes</title> |
||||
</head> |
||||
|
||||
<body> |
||||
<h1>Hotspot SA User Interface Notes</h1> |
||||
|
||||
<h2>Workspace and Building</h2> |
||||
|
||||
<p> |
||||
All the source code for the Serviceability Agent is in |
||||
<code>src/share/vm/agent</code> in the HotSport workspace |
||||
<code>/net/jano.sfbay/export/disk05/hotspot/ws/1.4/sa_baseline</code> |
||||
<p> |
||||
You can build the project by typing <code>gnumake</code> in the |
||||
<code>src/share/vm/agent</code> directory. |
||||
<p> |
||||
You can also use the default build target using the Ant build file (build.xml). You can download Ant from |
||||
<a href="http://jakarta.apache.org/ant">http://jakarta.apache.org/ant</a>. Documentation for Ant can be |
||||
found at <a href="http://jakarta.apache.org/ant/manual/index.html">http://jakarta.apache.org/ant/manual/index.html</a> |
||||
|
||||
|
||||
<h2>Running the project</h2> |
||||
|
||||
<ul> |
||||
<li><code>java -cp classes sun.jvm.hotspot.HSDB</code> |
||||
</ul> |
||||
|
||||
<h2>Feedback</h2> |
||||
<p> |
||||
Refactoring of package hierarchy. All user interface components should be in |
||||
the ui package. Perhaps: sun.jvm.hotspot.ui.hsdb.Main for the HSDB. |
||||
<p> |
||||
The src\share\vm\agent area seems like a workspace so it should be organized like |
||||
one. In particular, I'd like to suggest the following directory layout:<br> |
||||
|
||||
<ul> |
||||
<li>src: All sources that are curently under the sun directory. |
||||
<li>classes: compiled class files. |
||||
<li>lib: Resources like images, icons and jar files. |
||||
<li>docs: Documentation |
||||
<li>deploy: distribution bundles for Java Web Start. |
||||
</ul> |
||||
|
||||
<p> |
||||
Seems like there is a lot of redundant functionality. Perhaps |
||||
this can be consolidated with a <code>javax.swing.Actions</code> architecture. |
||||
|
||||
<h2>Tasklist</h2> |
||||
|
||||
<p> |
||||
<b>Stack memory pane</b>: |
||||
It's one of the more useful JVM debugging tools in the SA. However, it |
||||
doesn't support any interaction with the text. |
||||
<p> |
||||
<b>Integrations with the NetBeans architecture (plug in).</b> See the |
||||
<a href="http://openide.netbeans.org">Netbeans Open APIs homepage</a> |
||||
|
||||
|
||||
<p> |
||||
HSDB: Object Histogram. Column sizes should be sized according the the |
||||
contents. i.e, The size and count columns should be narrow enought to |
||||
handle the largest window. Since there is a lot of data, sorting |
||||
and searching should be implemented. |
||||
<p> |
||||
|
||||
<h2>Log</h2> |
||||
|
||||
<i>Last modified: Tue Feb 05 19:15:12 Pacific Standard Time 2002</i> |
||||
<p> |
||||
sun.jvm.hotspot.oops.ObjectHistogram should be the underlying data |
||||
structure for the TableModels. It shouldnt bother with sorting the data - |
||||
the table model should do that. It should implement these methods: |
||||
|
||||
<pre> |
||||
public int getSize() |
||||
public ObjectHistogramElement getElementAt(int row); |
||||
</pre> |
||||
<p> |
||||
ObjectHistogramElement should return the String that represents |
||||
the third column |
||||
|
||||
|
||||
<hr> |
||||
<address><a href="mailto:mark.davidson@sun.com">Mark Davidson</a></address> |
||||
<!-- Created: Mon Jan 28 14:33:47 Pacific Standard Time 2002 --> |
||||
<!-- hhmts start --> |
||||
Last modified: Tue Feb 05 20:05:13 Pacific Standard Time 2002 |
||||
<!-- hhmts end --> |
||||
</body> |
||||
</html> |
@ -0,0 +1,146 @@
@@ -0,0 +1,146 @@
|
||||
|
||||
# make the directories |
||||
|
||||
SA_NAME=sa17 |
||||
SA_TEST=$SA_NAME/test |
||||
|
||||
mkdir $SA_NAME |
||||
mkdir $SA_NAME/solaris |
||||
mkdir $SA_NAME/solaris/amd64 |
||||
mkdir $SA_NAME/solaris/sparc |
||||
mkdir $SA_NAME/solaris/sparcv9 |
||||
mkdir $SA_NAME/solaris/i386 |
||||
mkdir $SA_NAME/linux |
||||
mkdir $SA_NAME/linux/i386 |
||||
mkdir $SA_NAME/linux/ia64 |
||||
mkdir $SA_NAME/linux/amd64 |
||||
mkdir $SA_NAME/win32 |
||||
mkdir $SA_NAME/win32/i386 |
||||
mkdir $SA_NAME/win32/ia64 |
||||
mkdir $SA_NAME/win32/amd64 |
||||
mkdir $SA_TEST |
||||
|
||||
# make sa.jar |
||||
jar -cvf $SA_NAME/sa.jar -C ../build/classes . |
||||
|
||||
# copy the native libraries |
||||
|
||||
cp ../src/os/solaris/proc/amd64/libsaproc.so $SA_NAME/solaris/amd64 |
||||
cp ../src/os/solaris/proc/sparc/libsaproc.so $SA_NAME/solaris/sparc |
||||
cp ../src/os/solaris/proc/sparcv9/libsaproc.so $SA_NAME/solaris/sparcv9 |
||||
cp ../src/os/solaris/proc/i386/libsaproc.so $SA_NAME/solaris/i386 |
||||
cp ../src/os/linux/i386/libsaproc.so $SA_NAME/linux/i386 |
||||
cp ../src/os/linux/ia64/libsaproc.so $SA_NAME/linux/ia64 |
||||
cp ../src/os/linux/amd64/libsaproc.so $SA_NAME/linux/amd64 |
||||
cp ../src/os/win32/windbg/i386/sawindbg.dll $SA_NAME/win32/i386 |
||||
cp ../src/os/win32/windbg/ia64/sawindbg.dll $SA_NAME/win32/ia64 |
||||
cp ../src/os/win32/windbg/amd64/sawindbg.dll $SA_NAME/win32/amd64 |
||||
|
||||
# copy Unix (Solaris and Linux) shell scripts |
||||
cp saenv.sh $SA_NAME ; chmod 755 $SA_NAME/saenv.sh |
||||
cp saenv64.sh $SA_NAME ; chmod 755 $SA_NAME/saenv64.sh |
||||
cp clhsdbproc.sh $SA_NAME ; chmod 755 $SA_NAME/clhsdbproc.sh |
||||
cp clhsdbproc64.sh $SA_NAME ; chmod 755 $SA_NAME/clhsdbproc64.sh |
||||
cp dumpflagsproc.sh $SA_NAME ; chmod 755 $SA_NAME/dumpflagsproc.sh |
||||
cp dumpflagsproc64.sh $SA_NAME ; chmod 755 $SA_NAME/dumpflagsproc64.sh |
||||
cp dumpsyspropsproc.sh $SA_NAME ; chmod 755 $SA_NAME/dumpsyspropsproc.sh |
||||
cp dumpsyspropsproc64.sh $SA_NAME ; chmod 755 $SA_NAME/dumpsyspropsproc64.sh |
||||
cp finalizerinfoproc.sh $SA_NAME ; chmod 755 $SA_NAME/finalizerinfoproc.sh |
||||
cp finalizerinfoproc64.sh $SA_NAME ; chmod 755 $SA_NAME/finalizerinfoproc64.sh |
||||
cp heapdumpproc.sh $SA_NAME ; chmod 755 $SA_NAME/heapdumpproc.sh |
||||
cp heapdumpproc64.sh $SA_NAME ; chmod 755 $SA_NAME/heapdumpproc64.sh |
||||
cp heapsumproc.sh $SA_NAME ; chmod 755 $SA_NAME/heapsumproc.sh |
||||
cp heapsumproc64.sh $SA_NAME ; chmod 755 $SA_NAME/heapsumproc64.sh |
||||
cp hsdbproc.sh $SA_NAME ; chmod 755 $SA_NAME/hsdbproc.sh |
||||
cp hsdbproc64.sh $SA_NAME ; chmod 755 $SA_NAME/hsdbproc64.sh |
||||
cp jcoreproc.sh $SA_NAME ; chmod 755 $SA_NAME/jcoreproc.sh |
||||
cp jcoreproc64.sh $SA_NAME ; chmod 755 $SA_NAME/jcoreproc64.sh |
||||
cp jdbcore.sh $SA_NAME ; chmod 755 $SA_NAME/jdbcore.sh |
||||
cp jdbcore64.sh $SA_NAME ; chmod 755 $SA_NAME/jdbcore64.sh |
||||
cp jdbproc.sh $SA_NAME ; chmod 755 $SA_NAME/jdbproc.sh |
||||
cp jdbproc64.sh $SA_NAME ; chmod 755 $SA_NAME/jdbproc64.sh |
||||
cp jhistoproc.sh $SA_NAME ; chmod 755 $SA_NAME/jhistoproc.sh |
||||
cp jhistoproc64.sh $SA_NAME ; chmod 755 $SA_NAME/jhistoproc64.sh |
||||
cp jsdbproc.sh $SA_NAME ; chmod 755 $SA_NAME/jsdbproc.sh |
||||
cp jsdbproc64.sh $SA_NAME ; chmod 755 $SA_NAME/jsdbproc64.sh |
||||
cp jstackproc.sh $SA_NAME ; chmod 755 $SA_NAME/jstackproc.sh |
||||
cp jstackproc64.sh $SA_NAME ; chmod 755 $SA_NAME/jstackproc64.sh |
||||
cp permstatproc.sh $SA_NAME ; chmod 755 $SA_NAME/permstatproc.sh |
||||
cp permstatproc64.sh $SA_NAME ; chmod 755 $SA_NAME/permstatproc64.sh |
||||
cp pmapproc.sh $SA_NAME ; chmod 755 $SA_NAME/pmapproc.sh |
||||
cp pmapproc64.sh $SA_NAME ; chmod 755 $SA_NAME/pmapproc64.sh |
||||
cp pstackproc.sh $SA_NAME ; chmod 755 $SA_NAME/pstackproc.sh |
||||
cp pstackproc64.sh $SA_NAME ; chmod 755 $SA_NAME/pstackproc64.sh |
||||
cp soqlproc.sh $SA_NAME ; chmod 755 $SA_NAME/soqlproc.sh |
||||
cp soqlproc64.sh $SA_NAME ; chmod 755 $SA_NAME/soqlproc64.sh |
||||
cp start-debug-server $SA_NAME ; chmod 755 $SA_NAME/start-debug-server |
||||
cp start-debug-server-proc.sh $SA_NAME ; chmod 755 $SA_NAME/start-debug-server-proc.sh |
||||
cp start-debug-server-proc64.sh $SA_NAME ; chmod 755 $SA_NAME/start-debug-server-proc64.sh |
||||
cp start-rmiregistry.sh $SA_NAME ; chmod 755 $SA_NAME/start-rmiregistry.sh |
||||
|
||||
# copy Windows batch files |
||||
cp saenv.bat $SA_NAME ; chmod 755 $SA_NAME/saenv.bat |
||||
cp saenv64.bat $SA_NAME ; chmod 755 $SA_NAME/saenv64.bat |
||||
cp clhsdbwindbg.bat $SA_NAME ; chmod 755 $SA_NAME/clhsdbwindbg.bat |
||||
cp clhsdbwindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/clhsdbwindbg64.bat |
||||
cp dumpflagswindbg.bat $SA_NAME ; chmod 755 $SA_NAME/dumpflagswindbg.bat |
||||
cp dumpflagswindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/dumpflagswindbg64.bat |
||||
cp dumpsyspropswindbg.bat $SA_NAME ; chmod 755 $SA_NAME/dumpsyspropswindbg.bat |
||||
cp dumpsyspropswindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/dumpsyspropswindbg64.bat |
||||
cp finalizerinfowindbg.bat $SA_NAME ; chmod 755 $SA_NAME/finalizerinfowindbg.bat |
||||
cp finalizerinfowindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/finalizerinfowindbg64.bat |
||||
cp heapdumpwindbg.bat $SA_NAME ; chmod 755 $SA_NAME/heapdumpwindbg.bat |
||||
cp heapdumpwindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/heapdumpwindbg64.bat |
||||
cp heapsumwindbg.bat $SA_NAME ; chmod 755 $SA_NAME/heapsumwindbg.bat |
||||
cp heapsumwindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/heapsumwindbg64.bat |
||||
cp hsdbwindbg.bat $SA_NAME ; chmod 755 $SA_NAME/hsdbwindbg.bat |
||||
cp hsdbwindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/hsdbwindbg64.bat |
||||
cp jcorewindbg.bat $SA_NAME ; chmod 755 $SA_NAME/jcorewindbg.bat |
||||
cp jcorewindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/jcorewindbg64.bat |
||||
cp jhistowindbg.bat $SA_NAME ; chmod 755 $SA_NAME/jhistowindbg.bat |
||||
cp jhistowindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/jhistowindbg64.bat |
||||
cp jsdbwindbg.bat $SA_NAME ; chmod 755 $SA_NAME/jsdbwindbg.bat |
||||
cp jsdbwindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/jsdbwindbg64.bat |
||||
cp jstackwindbg.bat $SA_NAME ; chmod 755 $SA_NAME/jstackwindbg.bat |
||||
cp jstackwindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/jstackwindbg64.bat |
||||
cp permstatwindbg.bat $SA_NAME ; chmod 755 $SA_NAME/permstatwindbg.bat |
||||
cp permstatwindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/permstatwindbg64.bat |
||||
cp pmapwindbg.bat $SA_NAME ; chmod 755 $SA_NAME/pmapwindbg.bat |
||||
cp pmapwindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/pmapwindbg64.bat |
||||
cp pstackwindbg.bat $SA_NAME ; chmod 755 $SA_NAME/pstackwindbg.bat |
||||
cp pstackwindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/pstackwindbg64.bat |
||||
cp soqlwindbg.bat $SA_NAME ; chmod 755 $SA_NAME/soqlwindbg.bat |
||||
cp soqlwindbg64.bat $SA_NAME ; chmod 755 $SA_NAME/soqlwindbg64.bat |
||||
cp start-debug-server-windbg.bat $SA_NAME ; chmod 755 $SA_NAME/start-debug-server-windbg.bat |
||||
cp start-debug-server-windbg64.bat $SA_NAME ; chmod 755 $SA_NAME/start-debug-server-windbg64.bat |
||||
cp start-rmiregistry.bat $SA_NAME ; chmod 755 $SA_NAME/start-rmiregistry.bat |
||||
|
||||
|
||||
# make the libproc test |
||||
cd ../test/libproc ; make; cd ../../make |
||||
|
||||
# copy libproc test suite |
||||
|
||||
cp ../test/libproc/README $SA_TEST/README-libproc |
||||
cp ../test/libproc/libproctest.sh $SA_TEST ; chmod 755 $SA_TEST/libproctest.sh |
||||
cp ../test/libproc/libproctest64.sh $SA_TEST ; chmod 755 $SA_TEST/libproctest64.sh |
||||
cp ../test/libproc/*.class $SA_TEST |
||||
|
||||
# copy RMI security policy file |
||||
cp grantAll.policy $SA_NAME |
||||
|
||||
# copy documentation |
||||
mkdir $SA_NAME/doc |
||||
cp ../doc/*.html $SA_NAME/doc |
||||
chmod 644 $SA_NAME/doc/*.html |
||||
|
||||
# make lib dir and copy other jar files |
||||
mkdir $SA_NAME/lib |
||||
cp ../src/share/lib/*.jar $SA_NAME/lib |
||||
|
||||
# tar and gzip |
||||
tar -cvf $SA_NAME.tar $SA_NAME |
||||
gzip $SA_NAME.tar |
||||
|
||||
# cleanup |
||||
\rm -rf $SA_NAME |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.PermStat $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.PermStat $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.PermStat %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.PermStat %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.PMap $* |
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.PMap $* |
||||
|
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.PMap %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.PMap %1 %2 |
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
type c++filt 1>/dev/null 2>/dev/null |
||||
if [ $? -eq 0 ]; then |
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.PStack $* | c++filt |
||||
else |
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.PStack $* |
||||
fi |
||||
|
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
type c++filt 1>/dev/null 2>/dev/null |
||||
if [ $? -eq 0 ]; then |
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.PStack $* | c++filt |
||||
else |
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.PStack $* |
||||
fi |
||||
|
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.PStack %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.PStack %1 %2 |
@ -0,0 +1,54 @@
@@ -0,0 +1,54 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
REM This is common environment settings for all SA |
||||
REM windows batch scripts |
||||
|
||||
REM set jre\bin and jre\bin\client (or server) in PATH |
||||
REM WINDBG_HOME must point to the Windows Debugging Tools |
||||
REM installation directory |
||||
|
||||
if "%SA_JAVA%" == "" goto no_sa_java |
||||
|
||||
goto sa_java_set |
||||
|
||||
:no_sa_java |
||||
set SA_JAVA=java |
||||
|
||||
:sa_java_set |
||||
|
||||
set SA_CLASSPATH=..\build\classes;..\src\share\lib\js.jar;sa.jar;lib\js.jar |
||||
|
||||
set SA_LIBPATH=..\src\os\win32\windbg\i386;.\win32\i386 |
||||
|
||||
set OPTIONS=-Dsun.jvm.hotspot.debugger.useWindbgDebugger |
||||
set OPTIONS=-Dsun.jvm.hotspot.debugger.windbg.imagePath="%PATH%" %OPTIONS% |
||||
set OPTIONS=-Dsun.jvm.hotspot.debugger.windbg.sdkHome="%WINDBG_HOME%" %OPTIONS% |
||||
|
||||
if "%SA_DISABLE_VERS_CHK%" == "" goto vers_chk |
||||
set OPTIONS="-Dsun.jvm.hotspot.runtime.VM.disableVersionCheck %OPTIONS%" |
||||
|
||||
:vers_chk |
||||
set SA_JAVA_CMD=%SA_JAVA% -showversion -cp %SA_CLASSPATH% -Djava.library.path=%SA_LIBPATH% %OPTIONS% |
@ -0,0 +1,83 @@
@@ -0,0 +1,83 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
# This file sets common environment variables for all SA scripts |
||||
|
||||
OS=`uname` |
||||
STARTDIR=`(cd \`dirname $0 \`; pwd)` |
||||
ARCH=`uname -m` |
||||
|
||||
if [ "x$SA_JAVA" = "x" ]; then |
||||
SA_JAVA=java |
||||
fi |
||||
|
||||
if [ "$OS" = "Linux" ]; then |
||||
if [ "$ARCH" = "ia64" ] ; then |
||||
SA_LIBPATH=$STARTDIR/../src/os/linux/ia64:$STARTDIR/linux/ia64 |
||||
OPTIONS="-Dsa.library.path=$SA_LIBPATH" |
||||
CPU=ia64 |
||||
elif [ "$ARCH" = "x86_64" ] ; then |
||||
SA_LIBPATH=$STARTDIR/../src/os/linux/amd64:$STARTDIR/linux/amd64 |
||||
OPTIONS="-Dsa.library.path=$SA_LIBPATH" |
||||
CPU=amd64 |
||||
else |
||||
SA_LIBPATH=$STARTDIR/../src/os/linux/i386:$STARTDIR/linux/i386 |
||||
OPTIONS="-Dsa.library.path=$SA_LIBPATH" |
||||
CPU=i386 |
||||
fi |
||||
else |
||||
# configure audit helper library if SA_ALTROOT is set |
||||
if [ -n "$SA_ALTROOT" ]; then |
||||
LD_AUDIT_32=$STARTDIR/../src/os/solaris/proc/`uname -p`/libsaproc_audit.so |
||||
export LD_AUDIT_32 |
||||
if [ ! -f $LD_AUDIT_32 ]; then |
||||
echo "SA_ALTROOT is set and can't find libsaproc_audit.so." |
||||
echo "Make sure to build it with 'make natives'." |
||||
exit 1 |
||||
fi |
||||
fi |
||||
SA_LIBPATH=$STARTDIR/../src/os/solaris/proc/`uname -p`:$STARTDIR/solaris/`uname -p` |
||||
OPTIONS="-Dsa.library.path=$SA_LIBPATH -Dsun.jvm.hotspot.debugger.useProcDebugger" |
||||
CPU=sparc |
||||
fi |
||||
|
||||
if [ "x$SA_DISABLE_VERS_CHK" != "x" ]; then |
||||
OPTIONS="-Dsun.jvm.hotspot.runtime.VM.disableVersionCheck ${OPTIONS}" |
||||
fi |
||||
|
||||
|
||||
SA_CLASSPATH=$STARTDIR/../build/classes:$STARTDIR/../src/share/lib/js.jar:$STARTDIR/sa.jar:$STARTDIR/lib/js.jar |
||||
|
||||
if [ ! -z "$SA_TYPEDB" ]; then |
||||
if [ ! -f $SA_TYPEDB ]; then |
||||
echo "$SA_TYPEDB is unreadable" |
||||
exit 1 |
||||
fi |
||||
OPTIONS="-Dsun.jvm.hotspot.typedb=$SA_TYPEDB ${OPTIONS}" |
||||
fi |
||||
|
||||
OPTIONS="-Djava.system.class.loader=sun.jvm.hotspot.SALauncherLoader ${OPTIONS}" |
||||
|
||||
SA_JAVA_CMD="$SA_PREFIX_CMD $SA_JAVA -showversion ${OPTIONS} -cp $SA_CLASSPATH $SA_OPTIONS" |
@ -0,0 +1,60 @@
@@ -0,0 +1,60 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
REM FIXME: How do I detect processor on Windows so that |
||||
REM AMD-64/IA-64 could be detected? Should I assume |
||||
REM MKS/Cygwin here? |
||||
|
||||
REM This is common environment settings for all SA |
||||
REM windows batch scripts |
||||
|
||||
REM set jre\bin and jre\bin\client (or server) in PATH |
||||
REM WINDBG_HOME must point to the Windows Debugging Tools |
||||
REM installation directory. |
||||
|
||||
if "%SA_JAVA%" == "" goto no_sa_java |
||||
|
||||
goto sa_java_set |
||||
|
||||
:no_sa_java |
||||
set SA_JAVA=java |
||||
|
||||
:sa_java_set |
||||
|
||||
set SA_CLASSPATH=..\build\classes;..\src\share\lib\js.jar;sa.jar;lib\js.jar |
||||
|
||||
REM For now, only AMD-64, IA-64 stack walking is not working anyway |
||||
set SA_LIBPATH=.\src\os\win32\windbg\amd64;.\win32\amd64 |
||||
|
||||
set OPTIONS=-Dsun.jvm.hotspot.debugger.useWindbgDebugger |
||||
set OPTIONS=-Dsun.jvm.hotspot.debugger.windbg.imagePath="%PATH%" %OPTIONS% |
||||
set OPTIONS=-Dsun.jvm.hotspot.debugger.windbg.sdkHome="%WINDBG_HOME%" %OPTIONS% |
||||
|
||||
if "%SA_DISABLE_VERS_CHK%" == "" goto vers_chk |
||||
set OPTIONS="-Dsun.jvm.hotspot.runtime.VM.disableVersionCheck %OPTIONS%" |
||||
|
||||
:vers_chk |
||||
|
||||
set SA_JAVA_CMD=%SA_JAVA% -showversion -cp %SA_CLASSPATH% -Djava.library.path=.%SA_LIBPATH% %OPTIONS% |
@ -0,0 +1,80 @@
@@ -0,0 +1,80 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
# This file sets common environment variables for all 64-bit Solaris [sparcv9, |
||||
# amd64] SA scripts. Please note that for 64-bit Linux use saenv.sh. |
||||
|
||||
OS=`uname` |
||||
STARTDIR=`dirname $0` |
||||
|
||||
CPU=`isainfo | grep sparcv9` |
||||
|
||||
if [ "x$CPU" != "x" ]; then |
||||
CPU=sparcv9 |
||||
else |
||||
CPU=`isainfo | grep amd64` |
||||
if [ "x$CPU" != "x" ]; then |
||||
CPU=amd64 |
||||
else |
||||
echo "unknown CPU, only sparcv9, amd64 are supported!" |
||||
exit 1 |
||||
fi |
||||
fi |
||||
|
||||
# configure audit helper library if SA_ALTROOT is set |
||||
if [ -n "$SA_ALTROOT" ]; then |
||||
LD_AUDIT_64=$STARTDIR/../src/os/solaris/proc/$CPU/libsaproc_audit.so |
||||
export LD_AUDIT_64 |
||||
if [ ! -f $LD_AUDIT_64 ]; then |
||||
echo "SA_ALTROOT is set and can't find libsaproc_audit.so." |
||||
echo "Make sure to build it with 'make natives'." |
||||
exit 1 |
||||
fi |
||||
fi |
||||
SA_LIBPATH=$STARTDIR/../src/os/solaris/proc/$CPU:$STARTDIR/solaris/$CPU |
||||
|
||||
OPTIONS="-Dsa.library.path=$SA_LIBPATH -Dsun.jvm.hotspot.debugger.useProcDebugger" |
||||
|
||||
if [ "x$SA_JAVA" = "x" ]; then |
||||
SA_JAVA=java |
||||
fi |
||||
|
||||
if [ "x$SA_DISABLE_VERS_CHK" != "x" ]; then |
||||
OPTIONS="-Dsun.jvm.hotspot.runtime.VM.disableVersionCheck ${OPTIONS}" |
||||
fi |
||||
|
||||
SA_CLASSPATH=$STARTDIR/../build/classes:$STARTDIR/../src/share/lib/js.jar:$STARTDIR/sa.jar::$STARTDIR/lib/js.jar |
||||
|
||||
if [ ! -z "$SA_TYPEDB" ]; then |
||||
if [ ! -f $SA_TYPEDB ]; then |
||||
echo "$SA_TYPEDB is unreadable" |
||||
exit 1 |
||||
fi |
||||
OPTIONS="-Dsun.jvm.hotspot.typedb=$SA_TYPEDB ${OPTIONS}" |
||||
fi |
||||
|
||||
OPTIONS="-Djava.system.class.loader=sun.jvm.hotspot.SALauncherLoader ${OPTIONS}" |
||||
|
||||
SA_JAVA_CMD="$SA_PREFIX_CMD $SA_JAVA -d64 -showversion ${OPTIONS} -cp $SA_CLASSPATH $SA_OPTIONS" |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.soql.SOQL $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
$SA_JAVA_CMD sun.jvm.hotspot.tools.soql.SOQL $* |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.soql.SOQL %1 %2 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
%SA_JAVA_CMD% sun.jvm.hotspot.tools.soql.SOQL %1 %2 |
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
#!/bin/sh |
||||
|
||||
STARTDIR=`dirname $0` |
||||
|
||||
if [ "x$SA_JAVA" = "x" ]; then |
||||
SA_JAVA=java |
||||
fi |
||||
|
||||
if [ -f $STARTDIR/sa.jar ] ; then |
||||
CP=$STARTDIR/sa.jar |
||||
else |
||||
CP=$STARTDIR/../build/classes |
||||
fi |
||||
|
||||
# License file for development version of dbx |
||||
setenv LM_LICENSE_FILE 7588@extend.eng:/usr/dist/local/config/sparcworks/license.dat:7588@setlicense |
||||
|
||||
$SA_JAVA -Xbootclasspath/p:$CP -Djava.rmi.server.codebase=file:/$CP -Djava.security.policy=$STARTDIR\/grantAll.policy sun.jvm.hotspot.DebugServer $* |
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv.sh |
||||
|
||||
if [ -f $STARTDIR/../lib/sa-jdi.jar ] ; then |
||||
CP=$STARTDIR/../lib/sa-jdi.jar |
||||
else |
||||
CP=$STARTDIR/../build/classes |
||||
fi |
||||
|
||||
$STARTDIR/java -classpath $CP ${OPTIONS} -Djava.rmi.server.codebase=file://$CP -Djava.security.policy=${STARTDIR}/grantAll.policy sun.jvm.hotspot.DebugServer $* |
||||
|
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
. `dirname $0`/saenv64.sh |
||||
|
||||
if [ -f $STARTDIR/sa.jar ] ; then |
||||
CP=$STARTDIR/sa.jar |
||||
else |
||||
CP=$STARTDIR/../build/classes |
||||
fi |
||||
|
||||
$SA_JAVA -d64 -classpath $CP ${OPTIONS} -Djava.rmi.server.codebase=file:/$CP -Djava.security.policy=$STARTDIR\/grantAll.policy sun.jvm.hotspot.DebugServer $* |
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv.bat |
||||
|
||||
REM check for .\sa.jar, if it does not exist |
||||
REM assume that we are in build configuration. |
||||
|
||||
if not exist .\sa.jar goto IN_BUILD_CONF |
||||
set SA_CLASSPATH=.\sa.jar |
||||
goto EXEC_CMD |
||||
|
||||
:IN_BUILD_CONF |
||||
set SA_CLASSPATH=..\build\classes |
||||
|
||||
:EXEC_CMD |
||||
%SA_JAVA% -classpath %SA_CLASSPATH% -Djava.rmi.server.codebase=file:/%SA_CLASSPATH% -Djava.security.policy=grantAll.policy -Djava.library.path=%SA_LIBPATH% %OPTIONS% sun.jvm.hotspot.DebugServer %1 %2 %3 %4 %5 %6 %7 %8 %9 |
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
call saenv64.bat |
||||
|
||||
REM check for .\sa.jar, if it does not exist |
||||
REM assume that we are in build configuration. |
||||
|
||||
if not exist .\sa.jar goto IN_BUILD_CONF |
||||
set SA_CLASSPATH=.\sa.jar |
||||
goto EXEC_CMD |
||||
|
||||
:IN_BUILD_CONF |
||||
set SA_CLASSPATH=..\build\classes |
||||
|
||||
:EXEC_CMD |
||||
%SA_JAVA% -classpath %SA_CLASSPATH% -Djava.rmi.server.codebase=file:/%SA_CLASSPATH% -Djava.security.policy=grantAll.policy -Djava.library.path=%SA_LIBPATH% %OPTIONS% sun.jvm.hotspot.DebugServer %1 %2 %3 %4 %5 %6 %7 %8 %9 |
@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
|
||||
@echo off |
||||
REM |
||||
REM Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. |
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
REM |
||||
REM This code is free software; you can redistribute it and/or modify it |
||||
REM under the terms of the GNU General Public License version 2 only, as |
||||
REM published by the Free Software Foundation. |
||||
REM |
||||
REM This code is distributed in the hope that it will be useful, but WITHOUT |
||||
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
REM version 2 for more details (a copy is included in the LICENSE file that |
||||
REM accompanied this code). |
||||
REM |
||||
REM You should have received a copy of the GNU General Public License version |
||||
REM 2 along with this work; if not, write to the Free Software Foundation, |
||||
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
REM |
||||
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
REM or visit www.oracle.com if you need additional information or have any |
||||
REM questions. |
||||
REM |
||||
REM |
||||
|
||||
REM check for .\sa.jar, if it does not exist |
||||
REM assume that we are in build configuration. |
||||
|
||||
if not exist .\sa.jar goto IN_BUILD_CONF |
||||
set CLASSPATH=.\sa.jar |
||||
goto EXEC_CMD |
||||
|
||||
:IN_BUILD_CONF |
||||
set CLASSPATH=..\build\classes |
||||
|
||||
:EXEC_CMD |
||||
start rmiregistry -J-Xbootclasspath/p:%CLASSPATH% |
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved. |
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
# |
||||
# This code is free software; you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License version 2 only, as |
||||
# published by the Free Software Foundation. |
||||
# |
||||
# This code is distributed in the hope that it will be useful, but WITHOUT |
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
# version 2 for more details (a copy is included in the LICENSE file that |
||||
# accompanied this code). |
||||
# |
||||
# You should have received a copy of the GNU General Public License version |
||||
# 2 along with this work; if not, write to the Free Software Foundation, |
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
# |
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
# or visit www.oracle.com if you need additional information or have any |
||||
# questions. |
||||
# |
||||
# |
||||
|
||||
STARTDIR=`dirname $0` |
||||
|
||||
if [ -f $STARTDIR/sa.jar ] ; then |
||||
CP=$STARTDIR/sa.jar |
||||
else |
||||
CP=$STARTDIR/../build/classes |
||||
fi |
||||
|
||||
rmiregistry -J-Xbootclasspath/p:$CP |
@ -0,0 +1,413 @@
@@ -0,0 +1,413 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved. |
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
* |
||||
* This code is free software; you can redistribute it and/or modify it |
||||
* under the terms of the GNU General Public License version 2 only, as |
||||
* published by the Free Software Foundation. |
||||
* |
||||
* This code is distributed in the hope that it will be useful, but WITHOUT |
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
* version 2 for more details (a copy is included in the LICENSE file that |
||||
* accompanied this code). |
||||
* |
||||
* You should have received a copy of the GNU General Public License version |
||||
* 2 along with this work; if not, write to the Free Software Foundation, |
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
* |
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
* or visit www.oracle.com if you need additional information or have any |
||||
* questions. |
||||
* |
||||
*/ |
||||
|
||||
#include <stdlib.h> |
||||
#include <jni.h> |
||||
#include "libproc.h" |
||||
|
||||
#if defined(x86_64) && !defined(amd64) |
||||
#define amd64 1 |
||||
#endif |
||||
|
||||
#ifdef i386 |
||||
#include "sun_jvm_hotspot_debugger_x86_X86ThreadContext.h" |
||||
#endif |
||||
|
||||
#ifdef amd64 |
||||
#include "sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext.h" |
||||
#endif |
||||
|
||||
#if defined(sparc) || defined(sparcv9) |
||||
#include "sun_jvm_hotspot_debugger_sparc_SPARCThreadContext.h" |
||||
#endif |
||||
|
||||
static jfieldID p_ps_prochandle_ID = 0; |
||||
static jfieldID threadList_ID = 0; |
||||
static jfieldID loadObjectList_ID = 0; |
||||
|
||||
static jmethodID createClosestSymbol_ID = 0; |
||||
static jmethodID createLoadObject_ID = 0; |
||||
static jmethodID getThreadForThreadId_ID = 0; |
||||
static jmethodID listAdd_ID = 0; |
||||
|
||||
#define CHECK_EXCEPTION_(value) if ((*env)->ExceptionOccurred(env)) { return value; } |
||||
#define CHECK_EXCEPTION if ((*env)->ExceptionOccurred(env)) { return;} |
||||
#define THROW_NEW_DEBUGGER_EXCEPTION_(str, value) { throw_new_debugger_exception(env, str); return value; } |
||||
#define THROW_NEW_DEBUGGER_EXCEPTION(str) { throw_new_debugger_exception(env, str); return;} |
||||
|
||||
static void throw_new_debugger_exception(JNIEnv* env, const char* errMsg) { |
||||
(*env)->ThrowNew(env, (*env)->FindClass(env, "sun/jvm/hotspot/debugger/DebuggerException"), errMsg); |
||||
} |
||||
|
||||
static struct ps_prochandle* get_proc_handle(JNIEnv* env, jobject this_obj) { |
||||
jlong ptr = (*env)->GetLongField(env, this_obj, p_ps_prochandle_ID); |
||||
return (struct ps_prochandle*)(intptr_t)ptr; |
||||
} |
||||
|
||||
/*
|
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: init0 |
||||
* Signature: ()V |
||||
*/ |
||||
JNIEXPORT void JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_init0 |
||||
(JNIEnv *env, jclass cls) { |
||||
jclass listClass; |
||||
|
||||
if (init_libproc(getenv("LIBSAPROC_DEBUG") != NULL) != true) { |
||||
THROW_NEW_DEBUGGER_EXCEPTION("can't initialize libproc"); |
||||
} |
||||
|
||||
// fields we use
|
||||
p_ps_prochandle_ID = (*env)->GetFieldID(env, cls, "p_ps_prochandle", "J"); |
||||
CHECK_EXCEPTION; |
||||
threadList_ID = (*env)->GetFieldID(env, cls, "threadList", "Ljava/util/List;"); |
||||
CHECK_EXCEPTION; |
||||
loadObjectList_ID = (*env)->GetFieldID(env, cls, "loadObjectList", "Ljava/util/List;"); |
||||
CHECK_EXCEPTION; |
||||
|
||||
// methods we use
|
||||
createClosestSymbol_ID = (*env)->GetMethodID(env, cls, "createClosestSymbol", |
||||
"(Ljava/lang/String;J)Lsun/jvm/hotspot/debugger/cdbg/ClosestSymbol;"); |
||||
CHECK_EXCEPTION; |
||||
createLoadObject_ID = (*env)->GetMethodID(env, cls, "createLoadObject", |
||||
"(Ljava/lang/String;JJ)Lsun/jvm/hotspot/debugger/cdbg/LoadObject;"); |
||||
CHECK_EXCEPTION; |
||||
getThreadForThreadId_ID = (*env)->GetMethodID(env, cls, "getThreadForThreadId", |
||||
"(J)Lsun/jvm/hotspot/debugger/ThreadProxy;"); |
||||
CHECK_EXCEPTION; |
||||
// java.util.List method we call
|
||||
listClass = (*env)->FindClass(env, "java/util/List"); |
||||
CHECK_EXCEPTION; |
||||
listAdd_ID = (*env)->GetMethodID(env, listClass, "add", "(Ljava/lang/Object;)Z"); |
||||
CHECK_EXCEPTION; |
||||
} |
||||
|
||||
JNIEXPORT jint JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_getAddressSize |
||||
(JNIEnv *env, jclass cls) |
||||
{ |
||||
#ifdef _LP64 |
||||
return 8; |
||||
#else |
||||
return 4; |
||||
#endif |
||||
|
||||
} |
||||
|
||||
|
||||
static void fillThreadsAndLoadObjects(JNIEnv* env, jobject this_obj, struct ps_prochandle* ph) { |
||||
int n = 0, i = 0; |
||||
|
||||
// add threads
|
||||
n = get_num_threads(ph); |
||||
for (i = 0; i < n; i++) { |
||||
jobject thread; |
||||
jobject threadList; |
||||
lwpid_t lwpid; |
||||
|
||||
lwpid = get_lwp_id(ph, i); |
||||
thread = (*env)->CallObjectMethod(env, this_obj, getThreadForThreadId_ID, |
||||
(jlong)lwpid); |
||||
CHECK_EXCEPTION; |
||||
threadList = (*env)->GetObjectField(env, this_obj, threadList_ID); |
||||
CHECK_EXCEPTION; |
||||
(*env)->CallBooleanMethod(env, threadList, listAdd_ID, thread); |
||||
CHECK_EXCEPTION; |
||||
} |
||||
|
||||
// add load objects
|
||||
n = get_num_libs(ph); |
||||
for (i = 0; i < n; i++) { |
||||
uintptr_t base; |
||||
const char* name; |
||||
jobject loadObject; |
||||
jobject loadObjectList; |
||||
|
||||
base = get_lib_base(ph, i); |
||||
name = get_lib_name(ph, i); |
||||
loadObject = (*env)->CallObjectMethod(env, this_obj, createLoadObject_ID, |
||||
(*env)->NewStringUTF(env, name), (jlong)0, (jlong)base); |
||||
CHECK_EXCEPTION; |
||||
loadObjectList = (*env)->GetObjectField(env, this_obj, loadObjectList_ID); |
||||
CHECK_EXCEPTION; |
||||
(*env)->CallBooleanMethod(env, loadObjectList, listAdd_ID, loadObject); |
||||
CHECK_EXCEPTION; |
||||
} |
||||
} |
||||
|
||||
/*
|
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: attach0 |
||||
* Signature: (I)V |
||||
*/ |
||||
JNIEXPORT void JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_attach0__I |
||||
(JNIEnv *env, jobject this_obj, jint jpid) { |
||||
|
||||
struct ps_prochandle* ph; |
||||
if ( (ph = Pgrab(jpid)) == NULL) { |
||||
THROW_NEW_DEBUGGER_EXCEPTION("Can't attach to the process"); |
||||
} |
||||
(*env)->SetLongField(env, this_obj, p_ps_prochandle_ID, (jlong)(intptr_t)ph); |
||||
fillThreadsAndLoadObjects(env, this_obj, ph); |
||||
} |
||||
|
||||
/*
|
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: attach0 |
||||
* Signature: (Ljava/lang/String;Ljava/lang/String;)V |
||||
*/ |
||||
JNIEXPORT void JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_attach0__Ljava_lang_String_2Ljava_lang_String_2 |
||||
(JNIEnv *env, jobject this_obj, jstring execName, jstring coreName) { |
||||
const char *execName_cstr; |
||||
const char *coreName_cstr; |
||||
jboolean isCopy; |
||||
struct ps_prochandle* ph; |
||||
|
||||
execName_cstr = (*env)->GetStringUTFChars(env, execName, &isCopy); |
||||
CHECK_EXCEPTION; |
||||
coreName_cstr = (*env)->GetStringUTFChars(env, coreName, &isCopy); |
||||
CHECK_EXCEPTION; |
||||
|
||||
if ( (ph = Pgrab_core(execName_cstr, coreName_cstr)) == NULL) { |
||||
(*env)->ReleaseStringUTFChars(env, execName, execName_cstr); |
||||
(*env)->ReleaseStringUTFChars(env, coreName, coreName_cstr); |
||||
THROW_NEW_DEBUGGER_EXCEPTION("Can't attach to the core file"); |
||||
} |
||||
(*env)->SetLongField(env, this_obj, p_ps_prochandle_ID, (jlong)(intptr_t)ph); |
||||
(*env)->ReleaseStringUTFChars(env, execName, execName_cstr); |
||||
(*env)->ReleaseStringUTFChars(env, coreName, coreName_cstr); |
||||
fillThreadsAndLoadObjects(env, this_obj, ph); |
||||
} |
||||
|
||||
/*
|
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: detach0 |
||||
* Signature: ()V |
||||
*/ |
||||
JNIEXPORT void JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_detach0 |
||||
(JNIEnv *env, jobject this_obj) { |
||||
struct ps_prochandle* ph = get_proc_handle(env, this_obj); |
||||
if (ph != NULL) { |
||||
Prelease(ph); |
||||
} |
||||
} |
||||
|
||||
/*
|
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: lookupByName0 |
||||
* Signature: (Ljava/lang/String;Ljava/lang/String;)J |
||||
*/ |
||||
JNIEXPORT jlong JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_lookupByName0 |
||||
(JNIEnv *env, jobject this_obj, jstring objectName, jstring symbolName) { |
||||
const char *objectName_cstr, *symbolName_cstr; |
||||
jlong addr; |
||||
jboolean isCopy; |
||||
struct ps_prochandle* ph = get_proc_handle(env, this_obj); |
||||
|
||||
objectName_cstr = NULL; |
||||
if (objectName != NULL) { |
||||
objectName_cstr = (*env)->GetStringUTFChars(env, objectName, &isCopy); |
||||
CHECK_EXCEPTION_(0); |
||||
} |
||||
symbolName_cstr = (*env)->GetStringUTFChars(env, symbolName, &isCopy); |
||||
CHECK_EXCEPTION_(0); |
||||
|
||||
addr = (jlong) lookup_symbol(ph, objectName_cstr, symbolName_cstr); |
||||
|
||||
if (objectName_cstr != NULL) { |
||||
(*env)->ReleaseStringUTFChars(env, objectName, objectName_cstr); |
||||
} |
||||
(*env)->ReleaseStringUTFChars(env, symbolName, symbolName_cstr); |
||||
return addr; |
||||
} |
||||
|
||||
/*
|
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: lookupByAddress0 |
||||
* Signature: (J)Lsun/jvm/hotspot/debugger/cdbg/ClosestSymbol; |
||||
*/ |
||||
JNIEXPORT jobject JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_lookupByAddress0 |
||||
(JNIEnv *env, jobject this_obj, jlong addr) { |
||||
uintptr_t offset; |
||||
const char* sym = NULL; |
||||
|
||||
struct ps_prochandle* ph = get_proc_handle(env, this_obj); |
||||
sym = symbol_for_pc(ph, (uintptr_t) addr, &offset); |
||||
if (sym == NULL) return 0; |
||||
return (*env)->CallObjectMethod(env, this_obj, createClosestSymbol_ID, |
||||
(*env)->NewStringUTF(env, sym), (jlong)offset); |
||||
} |
||||
|
||||
/*
|
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: readBytesFromProcess0 |
||||
* Signature: (JJ)Lsun/jvm/hotspot/debugger/ReadResult; |
||||
*/ |
||||
JNIEXPORT jbyteArray JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_readBytesFromProcess0 |
||||
(JNIEnv *env, jobject this_obj, jlong addr, jlong numBytes) { |
||||
|
||||
jboolean isCopy; |
||||
jbyteArray array; |
||||
jbyte *bufPtr; |
||||
ps_err_e err; |
||||
|
||||
array = (*env)->NewByteArray(env, numBytes); |
||||
CHECK_EXCEPTION_(0); |
||||
bufPtr = (*env)->GetByteArrayElements(env, array, &isCopy); |
||||
CHECK_EXCEPTION_(0); |
||||
|
||||
err = ps_pread(get_proc_handle(env, this_obj), (psaddr_t) (uintptr_t)addr, bufPtr, numBytes); |
||||
(*env)->ReleaseByteArrayElements(env, array, bufPtr, 0); |
||||
return (err == PS_OK)? array : 0; |
||||
} |
||||
|
||||
JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_getThreadIntegerRegisterSet0 |
||||
(JNIEnv *env, jobject this_obj, jint lwp_id) { |
||||
|
||||
struct reg gregs; |
||||
jboolean isCopy; |
||||
jlongArray array; |
||||
jlong *regs; |
||||
|
||||
struct ps_prochandle* ph = get_proc_handle(env, this_obj); |
||||
if (get_lwp_regs(ph, lwp_id, &gregs) != true) { |
||||
THROW_NEW_DEBUGGER_EXCEPTION_("get_thread_regs failed for a lwp", 0); |
||||
} |
||||
|
||||
#undef NPRGREG |
||||
#ifdef i386 |
||||
#define NPRGREG sun_jvm_hotspot_debugger_x86_X86ThreadContext_NPRGREG |
||||
#endif |
||||
#ifdef ia64 |
||||
#define NPRGREG IA64_REG_COUNT |
||||
#endif |
||||
#ifdef amd64 |
||||
#define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG |
||||
#endif |
||||
#if defined(sparc) || defined(sparcv9) |
||||
#define NPRGREG sun_jvm_hotspot_debugger_sparc_SPARCThreadContext_NPRGREG |
||||
#endif |
||||
|
||||
array = (*env)->NewLongArray(env, NPRGREG); |
||||
CHECK_EXCEPTION_(0); |
||||
regs = (*env)->GetLongArrayElements(env, array, &isCopy); |
||||
|
||||
#undef REG_INDEX |
||||
|
||||
#ifdef i386 |
||||
#define REG_INDEX(reg) sun_jvm_hotspot_debugger_x86_X86ThreadContext_##reg |
||||
|
||||
regs[REG_INDEX(GS)] = (uintptr_t) gregs.r_gs; |
||||
regs[REG_INDEX(FS)] = (uintptr_t) gregs.r_fs; |
||||
regs[REG_INDEX(ES)] = (uintptr_t) gregs.r_es; |
||||
regs[REG_INDEX(DS)] = (uintptr_t) gregs.r_ds; |
||||
regs[REG_INDEX(EDI)] = (uintptr_t) gregs.r_edi; |
||||
regs[REG_INDEX(ESI)] = (uintptr_t) gregs.r_esi; |
||||
regs[REG_INDEX(FP)] = (uintptr_t) gregs.r_ebp; |
||||
regs[REG_INDEX(SP)] = (uintptr_t) gregs.r_isp; |
||||
regs[REG_INDEX(EBX)] = (uintptr_t) gregs.r_ebx; |
||||
regs[REG_INDEX(EDX)] = (uintptr_t) gregs.r_edx; |
||||
regs[REG_INDEX(ECX)] = (uintptr_t) gregs.r_ecx; |
||||
regs[REG_INDEX(EAX)] = (uintptr_t) gregs.r_eax; |
||||
regs[REG_INDEX(PC)] = (uintptr_t) gregs.r_eip; |
||||
regs[REG_INDEX(CS)] = (uintptr_t) gregs.r_cs; |
||||
regs[REG_INDEX(SS)] = (uintptr_t) gregs.r_ss; |
||||
|
||||
#endif /* i386 */ |
||||
|
||||
#if ia64 |
||||
regs = (*env)->GetLongArrayElements(env, array, &isCopy); |
||||
int i; |
||||
for (i = 0; i < NPRGREG; i++ ) { |
||||
regs[i] = 0xDEADDEAD; |
||||
} |
||||
#endif /* ia64 */ |
||||
|
||||
#ifdef amd64 |
||||
#define REG_INDEX(reg) sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_##reg |
||||
|
||||
regs[REG_INDEX(R15)] = gregs.r_r15; |
||||
regs[REG_INDEX(R14)] = gregs.r_r14; |
||||
regs[REG_INDEX(R13)] = gregs.r_r13; |
||||
regs[REG_INDEX(R12)] = gregs.r_r12; |
||||
regs[REG_INDEX(RBP)] = gregs.r_rbp; |
||||
regs[REG_INDEX(RBX)] = gregs.r_rbx; |
||||
regs[REG_INDEX(R11)] = gregs.r_r11; |
||||
regs[REG_INDEX(R10)] = gregs.r_r10; |
||||
regs[REG_INDEX(R9)] = gregs.r_r9; |
||||
regs[REG_INDEX(R8)] = gregs.r_r8; |
||||
regs[REG_INDEX(RAX)] = gregs.r_rax; |
||||
regs[REG_INDEX(RCX)] = gregs.r_rcx; |
||||
regs[REG_INDEX(RDX)] = gregs.r_rdx; |
||||
regs[REG_INDEX(RSI)] = gregs.r_rsi; |
||||
regs[REG_INDEX(RDI)] = gregs.r_rdi; |
||||
regs[REG_INDEX(RIP)] = gregs.r_rip; |
||||
regs[REG_INDEX(CS)] = gregs.r_cs; |
||||
regs[REG_INDEX(RSP)] = gregs.r_rsp; |
||||
regs[REG_INDEX(SS)] = gregs.r_ss; |
||||
// regs[REG_INDEX(FSBASE)] = gregs.fs_base;
|
||||
// regs[REG_INDEX(GSBASE)] = gregs.gs_base;
|
||||
// regs[REG_INDEX(DS)] = gregs.ds;
|
||||
// regs[REG_INDEX(ES)] = gregs.es;
|
||||
// regs[REG_INDEX(FS)] = gregs.fs;
|
||||
// regs[REG_INDEX(GS)] = gregs.gs;
|
||||
|
||||
#endif /* amd64 */ |
||||
|
||||
#if defined(sparc) || defined(sparcv9) |
||||
|
||||
#define REG_INDEX(reg) sun_jvm_hotspot_debugger_sparc_SPARCThreadContext_##reg |
||||
|
||||
#ifdef _LP64 |
||||
regs[REG_INDEX(R_PSR)] = gregs.tstate; |
||||
regs[REG_INDEX(R_PC)] = gregs.tpc; |
||||
regs[REG_INDEX(R_nPC)] = gregs.tnpc; |
||||
regs[REG_INDEX(R_Y)] = gregs.y; |
||||
#else |
||||
regs[REG_INDEX(R_PSR)] = gregs.psr; |
||||
regs[REG_INDEX(R_PC)] = gregs.pc; |
||||
regs[REG_INDEX(R_nPC)] = gregs.npc; |
||||
regs[REG_INDEX(R_Y)] = gregs.y; |
||||
#endif |
||||
regs[REG_INDEX(R_G0)] = 0 ; |
||||
regs[REG_INDEX(R_G1)] = gregs.u_regs[0]; |
||||
regs[REG_INDEX(R_G2)] = gregs.u_regs[1]; |
||||
regs[REG_INDEX(R_G3)] = gregs.u_regs[2]; |
||||
regs[REG_INDEX(R_G4)] = gregs.u_regs[3]; |
||||
regs[REG_INDEX(R_G5)] = gregs.u_regs[4]; |
||||
regs[REG_INDEX(R_G6)] = gregs.u_regs[5]; |
||||
regs[REG_INDEX(R_G7)] = gregs.u_regs[6]; |
||||
regs[REG_INDEX(R_O0)] = gregs.u_regs[7]; |
||||
regs[REG_INDEX(R_O1)] = gregs.u_regs[8]; |
||||
regs[REG_INDEX(R_O2)] = gregs.u_regs[ 9]; |
||||
regs[REG_INDEX(R_O3)] = gregs.u_regs[10]; |
||||
regs[REG_INDEX(R_O4)] = gregs.u_regs[11]; |
||||
regs[REG_INDEX(R_O5)] = gregs.u_regs[12]; |
||||
regs[REG_INDEX(R_O6)] = gregs.u_regs[13]; |
||||
regs[REG_INDEX(R_O7)] = gregs.u_regs[14]; |
||||
#endif /* sparc */ |
||||
|
||||
|
||||
(*env)->ReleaseLongArrayElements(env, array, regs, JNI_COMMIT); |
||||
return array; |
||||
} |
@ -0,0 +1,844 @@
@@ -0,0 +1,844 @@
|
||||
/* |
||||
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved. |
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
||||
* |
||||
* This code is free software; you can redistribute it and/or modify it |
||||
* under the terms of the GNU General Public License version 2 only, as |
||||
* published by the Free Software Foundation. |
||||
* |
||||
* This code is distributed in the hope that it will be useful, but WITHOUT |
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
* version 2 for more details (a copy is included in the LICENSE file that |
||||
* accompanied this code). |
||||
* |
||||
* You should have received a copy of the GNU General Public License version |
||||
* 2 along with this work; if not, write to the Free Software Foundation, |
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
* |
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
||||
* or visit www.oracle.com if you need additional information or have any |
||||
* questions. |
||||
* |
||||
*/ |
||||
|
||||
#include <objc/objc-runtime.h> |
||||
#import <Foundation/Foundation.h> |
||||
#import <JavaNativeFoundation/JavaNativeFoundation.h> |
||||
|
||||
#include <jni.h> |
||||
|
||||
#import <mach/mach.h> |
||||
#import <mach/mach_types.h> |
||||
#import <sys/sysctl.h> |
||||
#import <stdio.h> |
||||
#import <stdarg.h> |
||||
#import <stdlib.h> |
||||
#import <strings.h> |
||||
#import <dlfcn.h> |
||||
#import <limits.h> |
||||
#import <errno.h> |
||||
#import <sys/types.h> |
||||
#import <sys/ptrace.h> |
||||
#include "libproc_impl.h" |
||||
|
||||
#define UNSUPPORTED_ARCH "Unsupported architecture!" |
||||
|
||||
#if defined(x86_64) && !defined(amd64) |
||||
#define amd64 1 |
||||
#endif |
||||
|
||||
#if amd64 |
||||
#include "sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext.h" |
||||
#else |
||||
#error UNSUPPORTED_ARCH |
||||
#endif |
||||
|
||||
static jfieldID symbolicatorID = 0; // set in _init0 |
||||
static jfieldID taskID = 0; // set in _init0 |
||||
|
||||
static jfieldID p_ps_prochandle_ID = 0; |
||||
static jfieldID loadObjectList_ID = 0; |
||||
static jmethodID listAdd_ID = 0; |
||||
|
||||
static jmethodID createClosestSymbol_ID = 0; |
||||
static jmethodID createLoadObject_ID = 0; |
||||
static jmethodID getJavaThreadsInfo_ID = 0; |
||||
|
||||
// indicator if thread id (lwpid_t) was set |
||||
static bool _threads_filled = false; |
||||
|
||||
static void putSymbolicator(JNIEnv *env, jobject this_obj, id symbolicator) { |
||||
(*env)->SetLongField(env, this_obj, symbolicatorID, (jlong)(intptr_t)symbolicator); |
||||
} |
||||
|
||||
static id getSymbolicator(JNIEnv *env, jobject this_obj) { |
||||
jlong ptr = (*env)->GetLongField(env, this_obj, symbolicatorID); |
||||
return (id)(intptr_t)ptr; |
||||
} |
||||
|
||||
static void putTask(JNIEnv *env, jobject this_obj, task_t task) { |
||||
(*env)->SetLongField(env, this_obj, taskID, (jlong)task); |
||||
} |
||||
|
||||
static task_t getTask(JNIEnv *env, jobject this_obj) { |
||||
jlong ptr = (*env)->GetLongField(env, this_obj, taskID); |
||||
return (task_t)ptr; |
||||
} |
||||
|
||||
#define CHECK_EXCEPTION_(value) if ((*env)->ExceptionOccurred(env)) { return value; } |
||||
#define CHECK_EXCEPTION if ((*env)->ExceptionOccurred(env)) { return;} |
||||
#define THROW_NEW_DEBUGGER_EXCEPTION_(str, value) { throw_new_debugger_exception(env, str); return value; } |
||||
#define THROW_NEW_DEBUGGER_EXCEPTION(str) { throw_new_debugger_exception(env, str); return;} |
||||
#define CHECK_EXCEPTION_CLEAR if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionClear(env); } |
||||
#define CHECK_EXCEPTION_CLEAR_VOID if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionClear(env); return; } |
||||
#define CHECK_EXCEPTION_CLEAR_(value) if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionClear(env); return value; } |
||||
|
||||
static void throw_new_debugger_exception(JNIEnv* env, const char* errMsg) { |
||||
jclass exceptionClass = (*env)->FindClass(env, "sun/jvm/hotspot/debugger/DebuggerException"); |
||||
CHECK_EXCEPTION; |
||||
(*env)->ThrowNew(env, exceptionClass, errMsg); |
||||
} |
||||
|
||||
static struct ps_prochandle* get_proc_handle(JNIEnv* env, jobject this_obj) { |
||||
jlong ptr = (*env)->GetLongField(env, this_obj, p_ps_prochandle_ID); |
||||
return (struct ps_prochandle*)(intptr_t)ptr; |
||||
} |
||||
|
||||
#if defined(__i386__) |
||||
#define hsdb_thread_state_t x86_thread_state32_t |
||||
#define hsdb_float_state_t x86_float_state32_t |
||||
#define HSDB_THREAD_STATE x86_THREAD_STATE32 |
||||
#define HSDB_FLOAT_STATE x86_FLOAT_STATE32 |
||||
#define HSDB_THREAD_STATE_COUNT x86_THREAD_STATE32_COUNT |
||||
#define HSDB_FLOAT_STATE_COUNT x86_FLOAT_STATE32_COUNT |
||||
#elif defined(__x86_64__) |
||||
#define hsdb_thread_state_t x86_thread_state64_t |
||||
#define hsdb_float_state_t x86_float_state64_t |
||||
#define HSDB_THREAD_STATE x86_THREAD_STATE64 |
||||
#define HSDB_FLOAT_STATE x86_FLOAT_STATE64 |
||||
#define HSDB_THREAD_STATE_COUNT x86_THREAD_STATE64_COUNT |
||||
#define HSDB_FLOAT_STATE_COUNT x86_FLOAT_STATE64_COUNT |
||||
#else |
||||
#error UNSUPPORTED_ARCH |
||||
#endif |
||||
|
||||
/* |
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: init0 |
||||
* Signature: ()V |
||||
*/ |
||||
JNIEXPORT void JNICALL |
||||
Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_init0(JNIEnv *env, jclass cls) { |
||||
symbolicatorID = (*env)->GetFieldID(env, cls, "symbolicator", "J"); |
||||
CHECK_EXCEPTION; |
||||
taskID = (*env)->GetFieldID(env, cls, "task", "J"); |
||||
CHECK_EXCEPTION; |
||||
|
||||
// for core file |
||||
p_ps_prochandle_ID = (*env)->GetFieldID(env, cls, "p_ps_prochandle", "J"); |
||||
CHECK_EXCEPTION; |
||||
loadObjectList_ID = (*env)->GetFieldID(env, cls, "loadObjectList", "Ljava/util/List;"); |
||||
CHECK_EXCEPTION; |
||||
|
||||
// methods we use |
||||
createClosestSymbol_ID = (*env)->GetMethodID(env, cls, "createClosestSymbol", |
||||
"(Ljava/lang/String;J)Lsun/jvm/hotspot/debugger/cdbg/ClosestSymbol;"); |
||||
CHECK_EXCEPTION; |
||||
createLoadObject_ID = (*env)->GetMethodID(env, cls, "createLoadObject", |
||||
"(Ljava/lang/String;JJ)Lsun/jvm/hotspot/debugger/cdbg/LoadObject;"); |
||||
CHECK_EXCEPTION; |
||||
|
||||
// java.util.List method we call |
||||
jclass listClass = (*env)->FindClass(env, "java/util/List"); |
||||
CHECK_EXCEPTION; |
||||
listAdd_ID = (*env)->GetMethodID(env, listClass, "add", "(Ljava/lang/Object;)Z"); |
||||
CHECK_EXCEPTION; |
||||
getJavaThreadsInfo_ID = (*env)->GetMethodID(env, cls, "getJavaThreadsInfo", |
||||
"()[J"); |
||||
CHECK_EXCEPTION; |
||||
|
||||
init_libproc(getenv("LIBSAPROC_DEBUG") != NULL); |
||||
} |
||||
|
||||
JNIEXPORT jint JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_getAddressSize |
||||
(JNIEnv *env, jclass cls) |
||||
{ |
||||
#ifdef _LP64 |
||||
return 8; |
||||
#else |
||||
#error UNSUPPORTED_ARCH |
||||
#endif |
||||
} |
||||
|
||||
/** called by Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_lookupByName0 */ |
||||
jlong lookupByNameIncore( |
||||
JNIEnv *env, struct ps_prochandle *ph, jobject this_obj, jstring objectName, jstring symbolName) |
||||
{ |
||||
const char *objectName_cstr, *symbolName_cstr; |
||||
jlong addr; |
||||
jboolean isCopy; |
||||
objectName_cstr = NULL; |
||||
if (objectName != NULL) { |
||||
objectName_cstr = (*env)->GetStringUTFChars(env, objectName, &isCopy); |
||||
CHECK_EXCEPTION_(0); |
||||
} |
||||
symbolName_cstr = (*env)->GetStringUTFChars(env, symbolName, &isCopy); |
||||
CHECK_EXCEPTION_(0); |
||||
|
||||
print_debug("look for %s \n", symbolName_cstr); |
||||
addr = (jlong) lookup_symbol(ph, objectName_cstr, symbolName_cstr); |
||||
|
||||
if (objectName_cstr != NULL) { |
||||
(*env)->ReleaseStringUTFChars(env, objectName, objectName_cstr); |
||||
} |
||||
(*env)->ReleaseStringUTFChars(env, symbolName, symbolName_cstr); |
||||
return addr; |
||||
} |
||||
|
||||
/* |
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: lookupByName0 |
||||
* Signature: (Ljava/lang/String;Ljava/lang/String;)J |
||||
*/ |
||||
JNIEXPORT jlong JNICALL |
||||
Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_lookupByName0( |
||||
JNIEnv *env, jobject this_obj, |
||||
jstring objectName, jstring symbolName) |
||||
{ |
||||
struct ps_prochandle* ph = get_proc_handle(env, this_obj); |
||||
if (ph != NULL && ph->core != NULL) { |
||||
return lookupByNameIncore(env, ph, this_obj, objectName, symbolName); |
||||
} |
||||
|
||||
jlong address = 0; |
||||
|
||||
JNF_COCOA_ENTER(env); |
||||
NSString *symbolNameString = JNFJavaToNSString(env, symbolName); |
||||
|
||||
print_debug("lookupInProcess called for %s\n", [symbolNameString UTF8String]); |
||||
|
||||
id symbolicator = getSymbolicator(env, this_obj); |
||||
if (symbolicator != nil) { |
||||
uint64_t (*dynamicCall)(id, SEL, NSString *) = (uint64_t (*)(id, SEL, NSString *))&objc_msgSend; |
||||
address = (jlong) dynamicCall(symbolicator, @selector(addressForSymbol:), symbolNameString); |
||||
} |
||||
|
||||
print_debug("address of symbol %s = %llx\n", [symbolNameString UTF8String], address); |
||||
JNF_COCOA_EXIT(env); |
||||
|
||||
return address; |
||||
} |
||||
|
||||
/* |
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: lookupByAddress0 |
||||
* Signature: (J)Lsun/jvm/hotspot/debugger/cdbg/ClosestSymbol; |
||||
*/ |
||||
JNIEXPORT jobject JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_lookupByAddress0 |
||||
(JNIEnv *env, jobject this_obj, jlong addr) { |
||||
uintptr_t offset; |
||||
const char* sym = NULL; |
||||
jstring sym_string; |
||||
|
||||
struct ps_prochandle* ph = get_proc_handle(env, this_obj); |
||||
if (ph != NULL && ph->core != NULL) { |
||||
sym = symbol_for_pc(ph, (uintptr_t) addr, &offset); |
||||
if (sym == NULL) return 0; |
||||
sym_string = (*env)->NewStringUTF(env, sym); |
||||
CHECK_EXCEPTION_(0); |
||||
return (*env)->CallObjectMethod(env, this_obj, createClosestSymbol_ID, |
||||
sym_string, (jlong)offset); |
||||
} |
||||
return 0; |
||||
} |
||||
|
||||
/** called from Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_readBytesFromProcess0 */ |
||||
jbyteArray readBytesFromCore( |
||||
JNIEnv *env, struct ps_prochandle *ph, jobject this_obj, jlong addr, jlong numBytes) |
||||
{ |
||||
jboolean isCopy; |
||||
jbyteArray array; |
||||
jbyte *bufPtr; |
||||
ps_err_e err; |
||||
|
||||
array = (*env)->NewByteArray(env, numBytes); |
||||
CHECK_EXCEPTION_(0); |
||||
bufPtr = (*env)->GetByteArrayElements(env, array, &isCopy); |
||||
CHECK_EXCEPTION_(0); |
||||
|
||||
err = ps_pread(ph, (psaddr_t) (uintptr_t)addr, bufPtr, numBytes); |
||||
(*env)->ReleaseByteArrayElements(env, array, bufPtr, 0); |
||||
return (err == PS_OK)? array : 0; |
||||
} |
||||
|
||||
/* |
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: readBytesFromProcess0 |
||||
* Signature: (JJ)Lsun/jvm/hotspot/debugger/ReadResult; |
||||
*/ |
||||
JNIEXPORT jbyteArray JNICALL |
||||
Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_readBytesFromProcess0( |
||||
JNIEnv *env, jobject this_obj, |
||||
jlong addr, jlong numBytes) |
||||
{ |
||||
print_debug("readBytesFromProcess called. addr = %llx numBytes = %lld\n", addr, numBytes); |
||||
|
||||
// must allocate storage instead of using former parameter buf |
||||
jbyteArray array; |
||||
|
||||
struct ps_prochandle* ph = get_proc_handle(env, this_obj); |
||||
if (ph != NULL && ph->core != NULL) { |
||||
return readBytesFromCore(env, ph, this_obj, addr, numBytes); |
||||
} |
||||
|
||||
array = (*env)->NewByteArray(env, numBytes); |
||||
CHECK_EXCEPTION_(0); |
||||
|
||||
unsigned long alignedAddress; |
||||
unsigned long alignedLength = 0; |
||||
kern_return_t result; |
||||
vm_offset_t *pages; |
||||
int *mapped; |
||||
long pageCount; |
||||
uint byteCount; |
||||
int i; |
||||
unsigned long remaining; |
||||
|
||||
alignedAddress = trunc_page(addr); |
||||
if (addr != alignedAddress) { |
||||
alignedLength += addr - alignedAddress; |
||||
} |
||||
alignedLength = round_page(numBytes); |
||||
pageCount = alignedLength/vm_page_size; |
||||
|
||||
// Allocate storage for pages and flags. |
||||
pages = malloc(pageCount * sizeof(vm_offset_t)); |
||||
mapped = calloc(pageCount, sizeof(int)); |
||||
|
||||
task_t gTask = getTask(env, this_obj); |
||||
// Try to read each of the pages. |
||||
for (i = 0; i < pageCount; i++) { |
||||
result = vm_read(gTask, alignedAddress + i*vm_page_size, vm_page_size, |
||||
&pages[i], &byteCount); |
||||
mapped[i] = (result == KERN_SUCCESS); |
||||
// assume all failures are unmapped pages |
||||
} |
||||
|
||||
print_debug("%ld pages\n", pageCount); |
||||
|
||||
remaining = numBytes; |
||||
|
||||
for (i = 0; i < pageCount; i++) { |
||||
unsigned long len = vm_page_size; |
||||
unsigned long start = 0; |
||||
|
||||
if (i == 0) { |
||||
start = addr - alignedAddress; |
||||
len = vm_page_size - start; |
||||
} |
||||
|
||||
if (i == (pageCount - 1)) { |
||||
len = remaining; |
||||
} |
||||
|
||||
if (mapped[i]) { |
||||
print_debug("page %d mapped (len %ld start %ld)\n", i, len, start); |
||||
(*env)->SetByteArrayRegion(env, array, 0, len, ((jbyte *) pages[i] + start)); |
||||
vm_deallocate(mach_task_self(), pages[i], vm_page_size); |
||||
} |
||||
|
||||
remaining -= len; |
||||
} |
||||
|
||||
free (pages); |
||||
free (mapped); |
||||
return array; |
||||
} |
||||
|
||||
/** Only used for core file reading, set thread_id for threads which is got after core file parsed. |
||||
* Thread context is available in Mach-O core file but thread id is not. We can get thread id |
||||
* from Threads which store all java threads information when they are created. Here we can identify |
||||
* them as java threads by checking if a thread's rsp or rbp within a java thread's stack. |
||||
* Note Macosx uses unique_thread_id which is different from other platforms though printed ids |
||||
* are still pthread id. Function BsdDebuggerLocal.getJavaThreadsInfo returns an array of long |
||||
* integers to host all java threads' id, stack_start, stack_end as: |
||||
* [uid0, stack_start0, stack_end0, uid1, stack_start1, stack_end1, ...] |
||||
* |
||||
* The work cannot be done at init0 since Threads is not available yet(VM not initialized yet). |
||||
* This function should be called only once if succeeded |
||||
*/ |
||||
bool fill_java_threads(JNIEnv* env, jobject this_obj, struct ps_prochandle* ph) { |
||||
int n = 0, i = 0, j; |
||||
struct reg regs; |
||||
|
||||
jlongArray thrinfos = (*env)->CallObjectMethod(env, this_obj, getJavaThreadsInfo_ID); |
||||
CHECK_EXCEPTION_(false); |
||||
int len = (int)(*env)->GetArrayLength(env, thrinfos); |
||||
uint64_t* cinfos = (uint64_t *)(*env)->GetLongArrayElements(env, thrinfos, NULL); |
||||
CHECK_EXCEPTION_(false); |
||||
n = get_num_threads(ph); |
||||
print_debug("fill_java_threads called, num_of_thread = %d\n", n); |
||||
for (i = 0; i < n; i++) { |
||||
if (!get_nth_lwp_regs(ph, i, ®s)) { |
||||
print_debug("Could not get regs of thread %d, already set!\n", i); |
||||
return false; |
||||
} |
||||
for (j = 0; j < len; j += 3) { |
||||
lwpid_t uid = cinfos[j]; |
||||
uint64_t beg = cinfos[j + 1]; |
||||
uint64_t end = cinfos[j + 2]; |
||||
if ((regs.r_rsp < end && regs.r_rsp >= beg) || |
||||
(regs.r_rbp < end && regs.r_rbp >= beg)) { |
||||
set_lwp_id(ph, i, uid); |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
(*env)->ReleaseLongArrayElements(env, thrinfos, (jlong*)cinfos, 0); |
||||
CHECK_EXCEPTION_(false); |
||||
return true; |
||||
} |
||||
|
||||
/* For core file only, called from |
||||
* Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_getThreadIntegerRegisterSet0 |
||||
*/ |
||||
jlongArray getThreadIntegerRegisterSetFromCore(JNIEnv *env, jobject this_obj, long lwp_id, struct ps_prochandle* ph) { |
||||
if (!_threads_filled) { |
||||
if (!fill_java_threads(env, this_obj, ph)) { |
||||
throw_new_debugger_exception(env, "Failed to fill in threads"); |
||||
return 0; |
||||
} else { |
||||
_threads_filled = true; |
||||
} |
||||
} |
||||
|
||||
struct reg gregs; |
||||
jboolean isCopy; |
||||
jlongArray array; |
||||
jlong *regs; |
||||
|
||||
if (get_lwp_regs(ph, lwp_id, &gregs) != true) { |
||||
THROW_NEW_DEBUGGER_EXCEPTION_("get_thread_regs failed for a lwp", 0); |
||||
} |
||||
|
||||
#undef NPRGREG |
||||
#undef REG_INDEX |
||||
#if amd64 |
||||
#define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG |
||||
#define REG_INDEX(reg) sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_##reg |
||||
|
||||
array = (*env)->NewLongArray(env, NPRGREG); |
||||
CHECK_EXCEPTION_(0); |
||||
regs = (*env)->GetLongArrayElements(env, array, &isCopy); |
||||
|
||||
regs[REG_INDEX(R15)] = gregs.r_r15; |
||||
regs[REG_INDEX(R14)] = gregs.r_r14; |
||||
regs[REG_INDEX(R13)] = gregs.r_r13; |
||||
regs[REG_INDEX(R12)] = gregs.r_r12; |
||||
regs[REG_INDEX(RBP)] = gregs.r_rbp; |
||||
regs[REG_INDEX(RBX)] = gregs.r_rbx; |
||||
regs[REG_INDEX(R11)] = gregs.r_r11; |
||||
regs[REG_INDEX(R10)] = gregs.r_r10; |
||||
regs[REG_INDEX(R9)] = gregs.r_r9; |
||||
regs[REG_INDEX(R8)] = gregs.r_r8; |
||||
regs[REG_INDEX(RAX)] = gregs.r_rax; |
||||
regs[REG_INDEX(RCX)] = gregs.r_rcx; |
||||
regs[REG_INDEX(RDX)] = gregs.r_rdx; |
||||
regs[REG_INDEX(RSI)] = gregs.r_rsi; |
||||
regs[REG_INDEX(RDI)] = gregs.r_rdi; |
||||
regs[REG_INDEX(RIP)] = gregs.r_rip; |
||||
regs[REG_INDEX(CS)] = gregs.r_cs; |
||||
regs[REG_INDEX(RSP)] = gregs.r_rsp; |
||||
regs[REG_INDEX(SS)] = gregs.r_ss; |
||||
regs[REG_INDEX(FSBASE)] = 0; |
||||
regs[REG_INDEX(GSBASE)] = 0; |
||||
regs[REG_INDEX(DS)] = gregs.r_ds; |
||||
regs[REG_INDEX(ES)] = gregs.r_es; |
||||
regs[REG_INDEX(FS)] = gregs.r_fs; |
||||
regs[REG_INDEX(GS)] = gregs.r_gs; |
||||
regs[REG_INDEX(TRAPNO)] = gregs.r_trapno; |
||||
regs[REG_INDEX(RFL)] = gregs.r_rflags; |
||||
|
||||
#endif /* amd64 */ |
||||
(*env)->ReleaseLongArrayElements(env, array, regs, JNI_COMMIT); |
||||
return array; |
||||
} |
||||
|
||||
/* |
||||
* Lookup the thread_t that corresponds to the given thread_id. |
||||
* The thread_id should be the result from calling thread_info() with THREAD_IDENTIFIER_INFO |
||||
* and reading the m_ident_info.thread_id returned. |
||||
* The returned thread_t is the mach send right to the kernel port for the corresponding thread. |
||||
* |
||||
* We cannot simply use the OSThread._thread_id field in the JVM. This is set to ::mach_thread_self() |
||||
* in the VM, but that thread port is not valid for a remote debugger to access the thread. |
||||
*/ |
||||
thread_t |
||||
lookupThreadFromThreadId(task_t task, jlong thread_id) { |
||||
print_debug("lookupThreadFromThreadId thread_id=0x%llx\n", thread_id); |
||||
|
||||
thread_array_t thread_list = NULL; |
||||
mach_msg_type_number_t thread_list_count = 0; |
||||
thread_t result_thread = 0; |
||||
int i; |
||||
|
||||
// get the list of all the send rights |
||||
kern_return_t result = task_threads(task, &thread_list, &thread_list_count); |
||||
if (result != KERN_SUCCESS) { |
||||
print_debug("task_threads returned 0x%x\n", result); |
||||
return 0; |
||||
} |
||||
|
||||
for(i = 0 ; i < thread_list_count; i++) { |
||||
thread_identifier_info_data_t m_ident_info; |
||||
mach_msg_type_number_t count = THREAD_IDENTIFIER_INFO_COUNT; |
||||
|
||||
// get the THREAD_IDENTIFIER_INFO for the send right |
||||
result = thread_info(thread_list[i], THREAD_IDENTIFIER_INFO, (thread_info_t) &m_ident_info, &count); |
||||
if (result != KERN_SUCCESS) { |
||||
print_debug("thread_info returned 0x%x\n", result); |
||||
break; |
||||
} |
||||
|
||||
// if this is the one we're looking for, return the send right |
||||
if (thread_id == m_ident_info.thread_id) |
||||
{ |
||||
result_thread = thread_list[i]; |
||||
break; |
||||
} |
||||
} |
||||
|
||||
vm_size_t thread_list_size = (vm_size_t) (thread_list_count * sizeof (thread_t)); |
||||
vm_deallocate(mach_task_self(), (vm_address_t) thread_list, thread_list_count); |
||||
|
||||
return result_thread; |
||||
} |
||||
|
||||
|
||||
/* |
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: getThreadIntegerRegisterSet0 |
||||
* Signature: (J)[J |
||||
*/ |
||||
JNIEXPORT jlongArray JNICALL |
||||
Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_getThreadIntegerRegisterSet0( |
||||
JNIEnv *env, jobject this_obj, |
||||
jlong thread_id) |
||||
{ |
||||
print_debug("getThreadRegisterSet0 called\n"); |
||||
|
||||
struct ps_prochandle* ph = get_proc_handle(env, this_obj); |
||||
if (ph != NULL && ph->core != NULL) { |
||||
return getThreadIntegerRegisterSetFromCore(env, this_obj, thread_id, ph); |
||||
} |
||||
|
||||
kern_return_t result; |
||||
thread_t tid; |
||||
mach_msg_type_number_t count = HSDB_THREAD_STATE_COUNT; |
||||
hsdb_thread_state_t state; |
||||
jlongArray registerArray; |
||||
jlong *primitiveArray; |
||||
task_t gTask = getTask(env, this_obj); |
||||
|
||||
tid = lookupThreadFromThreadId(gTask, thread_id); |
||||
|
||||
result = thread_get_state(tid, HSDB_THREAD_STATE, (thread_state_t)&state, &count); |
||||
|
||||
if (result != KERN_SUCCESS) { |
||||
print_error("getregs: thread_get_state(%d) failed (%d)\n", tid, result); |
||||
return NULL; |
||||
} |
||||
|
||||
#if amd64 |
||||
#define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG |
||||
#undef REG_INDEX |
||||
#define REG_INDEX(reg) sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_##reg |
||||
|
||||
// 64 bit |
||||
print_debug("Getting threads for a 64-bit process\n"); |
||||
registerArray = (*env)->NewLongArray(env, NPRGREG); |
||||
CHECK_EXCEPTION_(0); |
||||
primitiveArray = (*env)->GetLongArrayElements(env, registerArray, NULL); |
||||
|
||||
primitiveArray[REG_INDEX(R15)] = state.__r15; |
||||
primitiveArray[REG_INDEX(R14)] = state.__r14; |
||||
primitiveArray[REG_INDEX(R13)] = state.__r13; |
||||
primitiveArray[REG_INDEX(R12)] = state.__r12; |
||||
primitiveArray[REG_INDEX(R11)] = state.__r11; |
||||
primitiveArray[REG_INDEX(R10)] = state.__r10; |
||||
primitiveArray[REG_INDEX(R9)] = state.__r9; |
||||
primitiveArray[REG_INDEX(R8)] = state.__r8; |
||||
primitiveArray[REG_INDEX(RDI)] = state.__rdi; |
||||
primitiveArray[REG_INDEX(RSI)] = state.__rsi; |
||||
primitiveArray[REG_INDEX(RBP)] = state.__rbp; |
||||
primitiveArray[REG_INDEX(RBX)] = state.__rbx; |
||||
primitiveArray[REG_INDEX(RDX)] = state.__rdx; |
||||
primitiveArray[REG_INDEX(RCX)] = state.__rcx; |
||||
primitiveArray[REG_INDEX(RAX)] = state.__rax; |
||||
primitiveArray[REG_INDEX(TRAPNO)] = 0; // trapno, not used |
||||
primitiveArray[REG_INDEX(ERR)] = 0; // err, not used |
||||
primitiveArray[REG_INDEX(RIP)] = state.__rip; |
||||
primitiveArray[REG_INDEX(CS)] = state.__cs; |
||||
primitiveArray[REG_INDEX(RFL)] = state.__rflags; |
||||
primitiveArray[REG_INDEX(RSP)] = state.__rsp; |
||||
primitiveArray[REG_INDEX(SS)] = 0; // We don't have SS |
||||
primitiveArray[REG_INDEX(FS)] = state.__fs; |
||||
primitiveArray[REG_INDEX(GS)] = state.__gs; |
||||
primitiveArray[REG_INDEX(ES)] = 0; |
||||
primitiveArray[REG_INDEX(DS)] = 0; |
||||
primitiveArray[REG_INDEX(FSBASE)] = 0; |
||||
primitiveArray[REG_INDEX(GSBASE)] = 0; |
||||
print_debug("set registers\n"); |
||||
|
||||
(*env)->ReleaseLongArrayElements(env, registerArray, primitiveArray, 0); |
||||
|
||||
#else |
||||
#error UNSUPPORTED_ARCH |
||||
#endif /* amd64 */ |
||||
|
||||
return registerArray; |
||||
} |
||||
|
||||
/* |
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: translateTID0 |
||||
* Signature: (I)I |
||||
*/ |
||||
JNIEXPORT jint JNICALL |
||||
Java_sun_jvm_hotspot_debugger_macosx_MacOSXDebuggerLocal_translateTID0( |
||||
JNIEnv *env, jobject this_obj, jint tid) |
||||
{ |
||||
print_debug("translateTID0 called on tid = 0x%x\n", (int)tid); |
||||
|
||||
kern_return_t result; |
||||
thread_t foreign_tid, usable_tid; |
||||
mach_msg_type_name_t type; |
||||
|
||||
foreign_tid = tid; |
||||
|
||||
task_t gTask = getTask(env, this_obj); |
||||
result = mach_port_extract_right(gTask, foreign_tid, |
||||
MACH_MSG_TYPE_COPY_SEND, |
||||
&usable_tid, &type); |
||||
if (result != KERN_SUCCESS) |
||||
return -1; |
||||
|
||||
print_debug("translateTID0: 0x%x -> 0x%x\n", foreign_tid, usable_tid); |
||||
|
||||
return (jint) usable_tid; |
||||
} |
||||
|
||||
|
||||
static bool ptrace_continue(pid_t pid, int signal) { |
||||
// pass the signal to the process so we don't swallow it |
||||
int res; |
||||
if ((res = ptrace(PT_CONTINUE, pid, (caddr_t)1, signal)) < 0) { |
||||
print_error("attach: ptrace(PT_CONTINUE, %d) failed with %d\n", pid, res); |
||||
return false; |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
// waits until the ATTACH has stopped the process |
||||
// by signal SIGSTOP |
||||
static bool ptrace_waitpid(pid_t pid) { |
||||
int ret; |
||||
int status; |
||||
while (true) { |
||||
// Wait for debuggee to stop. |
||||
ret = waitpid(pid, &status, 0); |
||||
if (ret >= 0) { |
||||
if (WIFSTOPPED(status)) { |
||||
// Any signal will stop the thread, make sure it is SIGSTOP. Otherwise SIGSTOP |
||||
// will still be pending and delivered when the process is DETACHED and the process |
||||
// will go to sleep. |
||||
if (WSTOPSIG(status) == SIGSTOP) { |
||||
// Debuggee stopped by SIGSTOP. |
||||
return true; |
||||
} |
||||
if (!ptrace_continue(pid, WSTOPSIG(status))) { |
||||
print_error("attach: Failed to correctly attach to VM. VM might HANG! [PTRACE_CONT failed, stopped by %d]\n", WSTOPSIG(status)); |
||||
return false; |
||||
} |
||||
} else { |
||||
print_error("attach: waitpid(): Child process exited/terminated (status = 0x%x)\n", status); |
||||
return false; |
||||
} |
||||
} else { |
||||
switch (errno) { |
||||
case EINTR: |
||||
continue; |
||||
break; |
||||
case ECHILD: |
||||
print_error("attach: waitpid() failed. Child process pid (%d) does not exist \n", pid); |
||||
break; |
||||
case EINVAL: |
||||
print_error("attach: waitpid() failed. Invalid options argument.\n"); |
||||
break; |
||||
default: |
||||
print_error("attach: waitpid() failed. Unexpected error %d\n",errno); |
||||
break; |
||||
} |
||||
return false; |
||||
} |
||||
} |
||||
} |
||||
|
||||
// attach to a process/thread specified by "pid" |
||||
static bool ptrace_attach(pid_t pid) { |
||||
int res; |
||||
if ((res = ptrace(PT_ATTACH, pid, 0, 0)) < 0) { |
||||
print_error("ptrace(PT_ATTACH, %d) failed with %d\n", pid, res); |
||||
return false; |
||||
} else { |
||||
return ptrace_waitpid(pid); |
||||
} |
||||
} |
||||
|
||||
/* |
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: attach0 |
||||
* Signature: (I)V |
||||
*/ |
||||
JNIEXPORT void JNICALL |
||||
Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_attach0__I( |
||||
JNIEnv *env, jobject this_obj, jint jpid) |
||||
{ |
||||
print_debug("attach0 called for jpid=%d\n", (int)jpid); |
||||
|
||||
JNF_COCOA_ENTER(env); |
||||
|
||||
kern_return_t result; |
||||
task_t gTask = 0; |
||||
result = task_for_pid(mach_task_self(), jpid, &gTask); |
||||
if (result != KERN_SUCCESS) { |
||||
print_error("attach: task_for_pid(%d) failed: '%s' (%d)\n", (int)jpid, mach_error_string(result), result); |
||||
THROW_NEW_DEBUGGER_EXCEPTION("Can't attach to the process. Could be caused by an incorrect pid or lack of privileges."); |
||||
} |
||||
putTask(env, this_obj, gTask); |
||||
|
||||
// use ptrace to stop the process |
||||
// on os x, ptrace only needs to be called on the process, not the individual threads |
||||
if (ptrace_attach(jpid) != true) { |
||||
mach_port_deallocate(mach_task_self(), gTask); |
||||
THROW_NEW_DEBUGGER_EXCEPTION("Can't attach to the process"); |
||||
} |
||||
|
||||
id symbolicator = nil; |
||||
id jrsSymbolicator = objc_lookUpClass("JRSSymbolicator"); |
||||
if (jrsSymbolicator != nil) { |
||||
id (*dynamicCall)(id, SEL, pid_t) = (id (*)(id, SEL, pid_t))&objc_msgSend; |
||||
symbolicator = dynamicCall(jrsSymbolicator, @selector(symbolicatorForPid:), (pid_t)jpid); |
||||
} |
||||
if (symbolicator != nil) { |
||||
CFRetain(symbolicator); // pin symbolicator while in java heap |
||||
} |
||||
|
||||
putSymbolicator(env, this_obj, symbolicator); |
||||
if (symbolicator == nil) { |
||||
THROW_NEW_DEBUGGER_EXCEPTION("Can't attach symbolicator to the process"); |
||||
} |
||||
|
||||
JNF_COCOA_EXIT(env); |
||||
} |
||||
|
||||
/** For core file, |
||||
called from Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_attach0__Ljava_lang_String_2Ljava_lang_String_2 */ |
||||
static void fillLoadObjects(JNIEnv* env, jobject this_obj, struct ps_prochandle* ph) { |
||||
int n = 0, i = 0; |
||||
|
||||
// add load objects |
||||
n = get_num_libs(ph); |
||||
for (i = 0; i < n; i++) { |
||||
uintptr_t base; |
||||
const char* name; |
||||
jobject loadObject; |
||||
jobject loadObjectList; |
||||
jstring nameString; |
||||
|
||||
base = get_lib_base(ph, i); |
||||
name = get_lib_name(ph, i); |
||||
nameString = (*env)->NewStringUTF(env, name); |
||||
CHECK_EXCEPTION; |
||||
loadObject = (*env)->CallObjectMethod(env, this_obj, createLoadObject_ID, |
||||
nameString, (jlong)0, (jlong)base); |
||||
CHECK_EXCEPTION; |
||||
loadObjectList = (*env)->GetObjectField(env, this_obj, loadObjectList_ID); |
||||
CHECK_EXCEPTION; |
||||
(*env)->CallBooleanMethod(env, loadObjectList, listAdd_ID, loadObject); |
||||
CHECK_EXCEPTION; |
||||
} |
||||
} |
||||
|
||||
/* |
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: attach0 |
||||
* Signature: (Ljava/lang/String;Ljava/lang/String;)V |
||||
*/ |
||||
JNIEXPORT void JNICALL |
||||
Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_attach0__Ljava_lang_String_2Ljava_lang_String_2( |
||||
JNIEnv *env, jobject this_obj, jstring execName, jstring coreName) |
||||
{ |
||||
const char *execName_cstr; |
||||
const char *coreName_cstr; |
||||
jboolean isCopy; |
||||
struct ps_prochandle* ph; |
||||
|
||||
execName_cstr = (*env)->GetStringUTFChars(env, execName, &isCopy); |
||||
CHECK_EXCEPTION; |
||||
coreName_cstr = (*env)->GetStringUTFChars(env, coreName, &isCopy); |
||||
CHECK_EXCEPTION; |
||||
|
||||
print_debug("attach: %s %s\n", execName_cstr, coreName_cstr); |
||||
|
||||
if ( (ph = Pgrab_core(execName_cstr, coreName_cstr)) == NULL) { |
||||
(*env)->ReleaseStringUTFChars(env, execName, execName_cstr); |
||||
(*env)->ReleaseStringUTFChars(env, coreName, coreName_cstr); |
||||
THROW_NEW_DEBUGGER_EXCEPTION("Can't attach to the core file"); |
||||
} |
||||
(*env)->SetLongField(env, this_obj, p_ps_prochandle_ID, (jlong)(intptr_t)ph); |
||||
(*env)->ReleaseStringUTFChars(env, execName, execName_cstr); |
||||
(*env)->ReleaseStringUTFChars(env, coreName, coreName_cstr); |
||||
fillLoadObjects(env, this_obj, ph); |
||||
} |
||||
|
||||
/* |
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal |
||||
* Method: detach0 |
||||
* Signature: ()V |
||||
*/ |
||||
JNIEXPORT void JNICALL |
||||
Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_detach0( |
||||
JNIEnv *env, jobject this_obj) |
||||
{ |
||||
print_debug("detach0 called\n"); |
||||
struct ps_prochandle* ph = get_proc_handle(env, this_obj); |
||||
if (ph != NULL && ph->core != NULL) { |
||||
Prelease(ph); |
||||
return; |
||||
} |
||||
JNF_COCOA_ENTER(env); |
||||
task_t gTask = getTask(env, this_obj); |
||||
|
||||
// detach from the ptraced process causing it to resume execution |
||||
int pid; |
||||
kern_return_t k_res; |
||||
k_res = pid_for_task(gTask, &pid); |
||||
if (k_res != KERN_SUCCESS) { |
||||
print_error("detach: pid_for_task(%d) failed (%d)\n", pid, k_res); |
||||
} |
||||
else { |
||||
int res = ptrace(PT_DETACH, pid, 0, 0); |
||||
if (res < 0) { |
||||
print_error("detach: ptrace(PT_DETACH, %d) failed (%d)\n", pid, res); |
||||
} |
||||
} |
||||
|
||||
mach_port_deallocate(mach_task_self(), gTask); |
||||
id symbolicator = getSymbolicator(env, this_obj); |
||||
if (symbolicator != nil) { |
||||
CFRelease(symbolicator); |
||||
} |
||||
JNF_COCOA_EXIT(env); |
||||
} |
@ -0,0 +1,102 @@
@@ -0,0 +1,102 @@
|
||||
#
|
||||
# Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
#
|
||||
|
||||
ARCH := $(shell if ([ `uname -m` = "ia64" ]) ; then echo ia64 ; elif ([ `uname -m` = "amd64" ]) ; then echo amd64; elif ([ `uname -m` = "x86_64" ]) ; then echo amd64; elif ([ `uname -m` = "sparc64" ]) ; then echo sparc; else echo i386 ; fi ) |
||||
|
||||
OS := $(shell uname -s) |
||||
|
||||
GCC = gcc |
||||
|
||||
JAVAH = ${JAVA_HOME}/bin/javah |
||||
|
||||
ifneq ($(OS), Darwin) |
||||
SOURCES = salibelf.c \
|
||||
symtab.c \
|
||||
libproc_impl.c \
|
||||
ps_proc.c \
|
||||
ps_core.c \
|
||||
BsdDebuggerLocal.c |
||||
OBJS = $(SOURCES:.c=.o) |
||||
OBJSPLUS = $(OBJS) sadis.o |
||||
LIBSA = $(ARCH)/libsaproc.so |
||||
|
||||
LIBS = -lutil -lthread_db |
||||
|
||||
else |
||||
|
||||
SOURCES = symtab.c \
|
||||
libproc_impl.c \
|
||||
ps_core.c |
||||
OBJS = $(SOURCES:.c=.o) |
||||
OBJSPLUS = MacosxDebuggerLocal.o sadis.o $(OBJS) |
||||
EXTINCLUDE = -I. |
||||
EXTCFLAGS = -m64 -D__APPLE__ -framework JavaNativeFoundation |
||||
FOUNDATIONFLAGS = -framework Foundation -framework JavaNativeFoundation -framework Security -framework CoreFoundation |
||||
LIBSA = $(ARCH)/libsaproc.dylib |
||||
endif # Darwin
|
||||
|
||||
INCLUDES = -I${JAVA_HOME}/include -I${JAVA_HOME}/include/$(shell uname -s | tr "[:upper:]" "[:lower:]") $(EXTINCLUDE) |
||||
|
||||
|
||||
|
||||
CFLAGS = -c -fPIC -g -Wall -D_ALLBSD_SOURCE -D_GNU_SOURCE -D$(ARCH) $(INCLUDES) $(EXTCFLAGS) |
||||
|
||||
|
||||
|
||||
all: $(LIBSA) |
||||
|
||||
MacosxDebuggerLocal.o: MacosxDebuggerLocal.m |
||||
echo "OS="$(OS) |
||||
$(JAVAH) -jni -classpath ../../../build/classes \
|
||||
sun.jvm.hotspot.debugger.x86.X86ThreadContext \
|
||||
sun.jvm.hotspot.debugger.amd64.AMD64ThreadContext |
||||
$(GCC) $(CFLAGS) $(FOUNDATIONFLAGS) $< |
||||
|
||||
sadis.o: ../../share/native/sadis.c |
||||
$(JAVAH) -jni -classpath ../../../build/classes \
|
||||
sun.jvm.hotspot.asm.Disassembler |
||||
$(GCC) $(CFLAGS) $< |
||||
|
||||
.c.obj: |
||||
$(GCC) $(CFLAGS) |
||||
|
||||
ifndef LDNOMAP |
||||
LFLAGS_LIBSA = -Xlinker --version-script=mapfile |
||||
endif |
||||
|
||||
$(LIBSA): $(OBJSPLUS) mapfile |
||||
if [ ! -d $(ARCH) ] ; then mkdir $(ARCH) ; fi |
||||
$(GCC) -shared $(LFLAGS_LIBSA) -o $(LIBSA) $(FOUNDATIONFLAGS) $(OBJSPLUS) $(LIBS) $(SALIBS) |
||||
|
||||
test.o: $(LIBSA) test.c |
||||
$(GCC) -c -o test.o -g -D_GNU_SOURCE -D$(ARCH) $(INCLUDES) test.c |
||||
|
||||
test: test.o |
||||
$(GCC) -o test test.o -L$(ARCH) -lsaproc $(LIBS) |
||||
|
||||
clean: |
||||
rm -f $(LIBSA) |
||||
rm -f *.o |
||||
rm -f test.o |
||||
-rmdir $(ARCH) |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue