OSDN Git Service

* class.c (build_utf8_ref): Make decl DECL_USER_ALIGN.
[pf3gnuchains/gcc-fork.git] / gcc / java / gcj.texi
index b978958..01acf43 100644 (file)
 @c the word ``Java'.
 
 @c When this manual is copyrighted.
-@set copyrights-gcj 2001, 2002, 2003, 2004, 2005
-
-@c Versions
-@set which-gcj GCC-@value{version-GCC}
+@set copyrights-gcj 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010
 
 @copying
 @c man begin COPYRIGHT
 Copyright @copyright{} @value{copyrights-gcj} Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being ``GNU General Public License'', the Front-Cover
-texts being (a) (see below), and with the Back-Cover Texts being (b)
-(see below).  A copy of the license is included in the
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, the Front-Cover Texts being (a) (see below), and
+with the Back-Cover Texts being (b) (see below).
+A copy of the license is included in the
 @c man end
-section entitled
-``GNU Free Documentation License''.
+section entitled ``GNU Free Documentation License''.
 @ignore
 @c man begin COPYRIGHT
 man page gfdl(7).
@@ -64,10 +60,6 @@ man page gfdl(7).
 
 @dircategory Individual utilities
 @direntry
-* gcjh: (gcj)Invoking gcjh.
-                            Generate header files from Java class files
-* gjnih: (gcj)Invoking gjnih.
-                            Generate JNI header files from Java class files
 * jcf-dump: (gcj)Invoking jcf-dump.
                             Print information about Java class files
 * gij: (gcj)Invoking gij.   GNU interpreter for Java bytecode
@@ -77,8 +69,13 @@ man page gfdl(7).
                             Convert file from one encoding to another
 * grmic: (gcj)Invoking grmic.
                             Generate stubs for Remote Method Invocation.
-* grmiregistry: (gcj)Invoking grmiregistry.
-                            The remote object registry.
+* gc-analyze: (gcj)Invoking gc-analyze.
+                            Analyze Garbage Collector (GC) memory dumps.
+* aot-compile: (gcj)Invoking aot-compile.
+                            Compile bytecode to native and generate databases.
+* rebuild-gcj-db: (gcj)Invoking rebuild-gcj-db.
+                            Merge the per-solib databases made by aot-compile
+                            into one system-wide database.
 @end direntry
 @end format
 
@@ -87,12 +84,11 @@ man page gfdl(7).
 
 @titlepage
 @title GNU gcj
+@versionsubtitle
 @author Tom Tromey
 
 @page
 @vskip 0pt plus 1filll
-For the @value{which-gcj} Version*
-@sp 1
 Published by the Free Software Foundation @*
 51 Franklin Street, Fifth Floor@*
 Boston, MA 02110-1301, USA@*
@@ -112,27 +108,28 @@ files and object files, and it can read both Java source code and
 @file{.class} files.
 
 @menu
-* Copying::             The GNU General Public License
+* Copying::             The GNU General Public License
 * GNU Free Documentation License::
-                       How you can share and copy this manual
-* Invoking gcj::       Compiler options supported by @command{gcj}
-* Compatibility::      Compatibility between gcj and other tools for Java
-* Invoking gcjh::       Generate header files from class files
-* Invoking gjnih::      Generate JNI header files from class files
+                        How you can share and copy this manual
+* Invoking gcj::        Compiler options supported by @command{gcj}
+* Compatibility::       Compatibility between gcj and other tools for Java
 * Invoking jcf-dump::   Print information about class files
-* Invoking gij::       Interpreting Java bytecodes
+* Invoking gij::        Interpreting Java bytecodes
 * Invoking gcj-dbtool:: Tool for manipulating class file databases.
 * Invoking jv-convert:: Converting from one encoding to another
 * Invoking grmic::      Generate stubs for Remote Method Invocation.
-* Invoking grmiregistry:: The remote object registry.
+* Invoking gc-analyze:: Analyze Garbage Collector (GC) memory dumps.
+* Invoking aot-compile:: Compile bytecode to native and generate databases.
+* Invoking rebuild-gcj-db:: Merge the per-solib databases made by aot-compile
+                            into one system-wide database.
 * About CNI::           Description of the Compiled Native Interface
 * System properties::   Modifying runtime behavior of the libgcj library
-* Resources::          Where to look for more information
+* Resources::           Where to look for more information
 * Index::               Index.
 @end menu
 
 
-@include gpl.texi
+@include gpl_v3.texi
 
 @include fdl.texi
 
@@ -169,12 +166,12 @@ options specific to @command{gcj}.
 
 @menu
 * Input and output files::
-* Input Options::              How gcj finds files
+* Input Options::               How gcj finds files
 * Encodings::                   Options controlling source file encoding
-* Warnings::                   Options controlling warnings specific to gcj
-* Linking::                    Options for making an executable
-* Code Generation::            Options controlling the output of gcj
-* Configure-time Options::     Options you won't use
+* Warnings::                    Options controlling warnings specific to gcj
+* Linking::                     Options for making an executable
+* Code Generation::             Options controlling the output of gcj
+* Configure-time Options::      Options you won't use
 @end menu
 
 @c man begin OPTIONS gcj
@@ -236,7 +233,7 @@ searches the class path looking for matching @file{.class} or
 points at the installed @file{libgcj.jar}, a file which contains all the
 standard classes.
 
-In the below, a directory or path component can refer either to an
+In the text below, a directory or path component can refer either to an
 actual directory on the filesystem, or to a @file{.zip} or @file{.jar}
 file, which @command{gcj} will search as if it is a directory.
 
@@ -560,9 +557,10 @@ the ability to use certain reflection capabilities of the standard
 Java runtime environment. When set all meta-data except for that
 which is needed to obtain correct runtime semantics is eliminated.
 
-For code that does not use reflection (i.e. the methods in the
-@code{java.lang.reflect} package), @code{-freduced-reflection}
-will result in proper operation with a savings in executable code size.
+For code that does not use reflection (i.e. serialization, RMI, CORBA
+or call methods in the @code{java.lang.reflect} package),
+@code{-freduced-reflection} will result in proper operation with a
+savings in executable code size.
 
 JNI (@code{-fjni}) and the binary compatibility ABI
 (@code{-findirect-dispatch}) do not work properly without full
@@ -609,6 +607,13 @@ On some systems it's necessary to insert inline checks whenever
 accessing an object via a reference.  On other systems you won't need
 this because null pointer accesses are caught automatically by the
 processor.
+
+@item -fuse-atomic-builtins
+On some systems, gcc can generate code for built-in atomic operations.
+Use this option to force gcj to use these builtins when compiling Java
+code.  Where this capability is present it should be automatically
+detected, so you won't usually need to use this option.
+
 @end table
 
 @c man end
@@ -728,236 +733,6 @@ setting.
 @end itemize
 
 
-@node Invoking gcjh
-@chapter Invoking gcjh
-
-@c man title gcjh generate header files from Java class files
-
-@c man begin DESCRIPTION gcjh
-
-The @code{gcjh} program is used to generate header files from class
-files.  It can generate both CNI and JNI header files, as well as stub
-implementation files which can be used as a basis for implementing the
-required native methods.
-
-@c man end
-
-@ignore
-@c man begin SYNOPSIS gcjh
-gcjh [@option{-stubs}] [@option{-jni}]
-    [@option{-force}] [@option{-old}] [@option{-trace}] [@option{-J} @var{option}]
-    [@option{-add} @var{text}] [@option{-append} @var{text}] [@option{-friend} @var{text}]
-    [@option{-prepend} @var{text}]
-    [@option{--classpath}=@var{path}] [@option{--CLASSPATH}=@var{path}]
-    [@option{--bootclasspath}=@var{path}]
-    [@option{-I}@var{dir}@dots{}] [@option{-d} @var{dir}@dots{}]
-    [@option{-o} @var{file}] [@option{-td} @var{dir}]
-    [@option{-M}] [@option{-MM}] [@option{-MD}] [@option{-MMD}]
-    [@option{--version}] [@option{--help}] [@option{-v}] [@option{--verbose}]
-    @var{classname}@dots{}
-@c man end
-@c man begin SEEALSO gcjh
-gcc(1), gcj(1), gij(1), jcf-dump(1), gfdl(7),
-and the Info entries for @file{gcj} and @file{gcc}.
-@c man end
-@end ignore
-
-@c man begin OPTIONS gcjh
-
-@table @gcctabopt
-@item -stubs
-This causes @code{gcjh} to generate stub files instead of header files.
-By default the stub file will be named after the class, with a suffix of
-@samp{.cc}.  In JNI mode, the default output file will have the suffix
-@samp{.c}.
-
-@item -jni
-This tells @code{gcjh} to generate a JNI header or stub.  By default,
-CNI headers are generated.
-
-@item -force
-This option forces @code{gcjh} to write the output file.
-
-@item -old
-This option is accepted but ignored for compatibility.
-
-@item -trace
-This option is accepted but ignored for compatibility.
-
-@item -J @var{option}
-This option is accepted but ignored for compatibility.
-
-@item -add @var{text}
-Inserts @var{text} into the class body.  This is ignored in JNI mode.
-
-@item -append @var{text}
-Inserts @var{text} into the header file after the class declaration.
-This is ignored in JNI mode.
-
-@item -friend @var{text}
-Inserts @var{text} into the class as a @code{friend} declaration.
-This is ignored in JNI mode.
-
-@item -prepend @var{text}
-Inserts @var{text} into the header file before the class declaration.
-This is ignored in JNI mode.
-
-@item --classpath=@var{path}
-@itemx --CLASSPATH=@var{path}
-@itemx --bootclasspath=@var{path}
-@itemx -I@var{directory}
-@itemx -d @var{directory}
-@itemx -o @var{file}
-These options are all identical to the corresponding @command{gcj} options.
-
-@item -o @var{file}
-Sets the output file name.  This cannot be used if there is more than
-one class on the command line.
-
-@item -td @var{directory}
-Sets the name of the directory to use for temporary files.
-
-@item -M
-Print all dependencies to stdout; suppress ordinary output.
-
-@item -MM
-Print non-system dependencies to stdout; suppress ordinary output.
-
-@item -MD
-Print all dependencies to stdout.
-
-@item -MMD
-Print non-system dependencies to stdout.
-
-@item --help
-Print help about @code{gcjh} and exit.  No further processing is done.
-
-@item --version
-Print version information for @code{gcjh} and exit.  No further
-processing is done.
-
-@item -v, --verbose
-Print extra information while running.
-@end table
-
-All remaining options are considered to be names of classes.
-
-@c man end
-
-@node Invoking gjnih
-@chapter Invoking gjnih
-
-@c man title gjnih generate JNI header files from Java class files
-
-@c man begin DESCRIPTION gjnih
-
-The @code{gjnih} program is used to generate JNI header files from class
-files.  Running it is equivalent to running @code{gcjh -jni}.
-
-@c man end
-
-@ignore
-@c man begin SYNOPSIS gjnih
-gjnih [@option{-stubs}] [@option{-jni}]
-    [@option{-force}] [@option{-old}] [@option{-trace}] [@option{-J} @var{option}]
-    [@option{-add} @var{text}] [@option{-append} @var{text}] [@option{-friend} @var{text}]
-    [@option{-prepend} @var{text}]
-    [@option{--classpath}=@var{path}] [@option{--CLASSPATH}=@var{path}]
-    [@option{--bootclasspath}=@var{path}]
-    [@option{-I}@var{dir}@dots{}] [@option{-d} @var{dir}@dots{}]
-    [@option{-o} @var{file}] [@option{-td} @var{dir}]
-    [@option{-M}] [@option{-MM}] [@option{-MD}] [@option{-MMD}]
-    [@option{--version}] [@option{--help}] [@option{-v}] [@option{--verbose}]
-    @var{classname}@dots{}
-@c man end
-@c man begin SEEALSO gjnih
-gcc(1), gcj(1), gcjh(1), gij(1), jcf-dump(1), gfdl(7),
-and the Info entries for @file{gcj} and @file{gcc}.
-@c man end
-@end ignore
-
-@c man begin OPTIONS gjnih
-
-@table @gcctabopt
-@item -stubs
-This causes @code{gjnih} to generate stub files instead of header files.
-By default the stub file will be named after the class, with a suffix of
-@samp{.c}.
-
-@item -jni
-This option specifies the default behavior which is to generate a JNI
-header or stub.
-
-@item -force
-This option forces @code{gjnih} to write the output file.
-
-@item -old
-This option is accepted but ignored for compatibility.
-
-@item -trace
-This option is accepted but ignored for compatibility.
-
-@item -J @var{option}
-This option is accepted but ignored for compatibility.
-
-@item -add @var{text}
-Inserts @var{text} into the class body.  This is ignored in by
-@code{gjnih}.
-
-@item -append @var{text}
-Inserts @var{text} into the header file after the class declaration.
-This is ignored in by @code{gjnih}.
-
-@item -friend @var{text}
-Inserts @var{text} into the class as a @code{friend} declaration.
-This is ignored by @code{gjnih}.
-
-@item -prepend @var{text}
-Inserts @var{text} into the header file before the class declaration.
-This is ignored in by @code{gjnih}.
-
-@item --classpath=@var{path}
-@itemx --CLASSPATH=@var{path}
-@itemx --bootclasspath=@var{path}
-@itemx -I@var{directory}
-@itemx -d @var{directory}
-@itemx -o @var{file}
-These options are all identical to the corresponding @command{gcj} options.
-
-@item -o @var{file}
-Sets the output file name.  This cannot be used if there is more than
-one class on the command line.
-
-@item -td @var{directory}
-Sets the name of the directory to use for temporary files.
-
-@item -M
-Print all dependencies to stdout; suppress ordinary output.
-
-@item -MM
-Print non-system dependencies to stdout; suppress ordinary output.
-
-@item -MD
-Print all dependencies to stdout.
-
-@item -MMD
-Print non-system dependencies to stdout.
-
-@item --help
-Print help about @code{gjnih} and exit.  No further processing is done.
-
-@item --version
-Print version information for @code{gjnih} and exit.  No further
-processing is done.
-
-@item -v, --verbose
-Print extra information while running.
-@end table
-
-All remaining options are considered to be names of classes.
-
-@c man end
-
 @node Invoking jcf-dump
 @chapter Invoking jcf-dump
 
@@ -1161,7 +936,7 @@ gcj-dbtool [@option{-0}] [@option{-}] [@option{-n}] [@option{-a}] [@option{-f}]
   [@option{-v}] [@option{-m}] [@option{--version}] [@option{--help}]
 
 @c man end
-@c man begin SEEALSO gij
+@c man begin SEEALSO gcj-dbtool
 gcc(1), gcj(1), gcjh(1), jcf-dump(1), gfdl(7),
 and the Info entries for @file{gcj} and @file{gcc}.
 @c man end
@@ -1376,32 +1151,80 @@ Print version information, then exit.
 @c man end
 
 
-@node Invoking grmiregistry
-@chapter Invoking grmiregistry
+@node Invoking gc-analyze
+@chapter Invoking gc-analyze
 
-@c man title grmiregistry Remote object registry
+@c man title gc-analyze Analyze Garbage Collector (GC) memory dumps
 
-@c man begin SYNOPSIS grmiregistry
-@command{grmic} [@option{OPTION}] @dots{} [@var{port}]
+@c man begin SYNOPSIS gc-analyze
+@command{gc-analyze} [@option{OPTION}] @dots{} [@var{file}]
 @ignore
-  [@option{--help}]
+  [@option{-v}]
+  [@option{--verbose}]
+  [@option{-p} @var{tool-prefix}]
+  [@option{-d} @var{directory}]
   [@option{--version}]
+  [@option{--help}]
 @end ignore
 @c man end
 
-@c man begin DESCRIPTION grmiregistry
+@c man begin DESCRIPTION gc-analyze
+
+@command{gc-analyze} prints an analysis of a GC memory dump to
+standard out.
+
+The memory dumps may be created by calling
+@code{gnu.gcj.util.GCInfo.enumerate(String namePrefix)} from java
+code.  A memory dump will be created on an out of memory condition if
+@code{gnu.gcj.util.GCInfo.setOOMDump(String namePrefix)} is called
+before the out of memory occurs.
+
+Running this program will create two files: @file{TestDump001} and
+@file{TestDump001.bytes}.
 
-@command{grmiregistry} starts a remote object registry on the current
-host.  If no port number is specified, then port 1099 is used.
+@example
+import gnu.gcj.util.*;
+import java.util.*;
+
+public class GCDumpTest
+@{
+    static public void main(String args[])
+    @{
+        ArrayList<String> l = new ArrayList<String>(1000);
+
+        for (int i = 1; i < 1500; i++) @{
+            l.add("This is string #" + i);
+        @}
+        GCInfo.enumerate("TestDump");
+    @}
+@}
+@end example
+
+The memory dump may then be displayed by running:
+
+@example
+gc-analyze -v TestDump001
+@end example
 
 @c FIXME: Add real information here.
 @c This really isn't much more than the --help output.
 
 @c man end
 
-@c man begin OPTIONS grmiregistry
+@c man begin OPTIONS gc-analyze
 
 @table @gcctabopt
+@item --verbose
+@itemx -v
+Verbose output.
+
+@item -p @var{tool-prefix}
+Prefix added to the names of the @command{nm} and @command{readelf} commands.
+
+@item -d @var{directory}
+Directory that contains the executable and shared libraries used when
+the dump was generated.
+
 @item --help
 Print a help message, then exit.
 
@@ -1411,6 +1234,86 @@ Print version information, then exit.
 
 @c man end
 
+@node Invoking aot-compile
+@chapter Invoking aot-compile
+
+@c man title aot-compile Compile bytecode to native and generate databases
+
+@ignore
+
+@c man begin SYNOPSIS aot-compile
+aot-compile [@option{OPTION}] @dots{} @var{SRCDIR} @var{DSTDIR}
+
+aot-compile [@option{-M, --make}=@var{PATH}] [@option{-C, --gcj}=@var{PATH}]
+  [@option{-D, --dbtool}=@var{PATH}] [@option{-m, --makeflags}=@var{FLAGS}] 
+  [@option{-c, --gcjflags}=@var{FLAGS}] [@option{-l, --ldflags}=@var{FLAGS}] 
+  [@option{-e, --exclude}=@var{PATH}]
+@c man end
+
+@c man begin SEEALSO aot-compile
+gcc(1), gcj(1), gcjh(1), jcf-dump(1), gfdl(7),
+and the Info entries for @file{gcj} and @file{gcc}.
+@c man end
+
+@end ignore
+
+@c man begin DESCRIPTION aot-compile
+@code{aot-compile} is a script that searches a directory for Java bytecode
+(as class files, or in jars) and uses @code{gcj} to compile it to native
+code and generate the databases from it.
+@c man end
+
+@c man begin OPTIONS aot-compile
+@table @gcctabopt
+@item -M, --make=@var{PATH}
+Specify the path to the @code{make} executable to use.
+
+@item -C, --gcj=@var{PATH}
+Specify the path to the @code{gcj} executable to use.
+
+@item -D, --dbtool=@var{PATH}
+Specify the path to the @code{gcj-dbtool} executable to use.
+
+@item -m, --makeflags=@var{FLAGS}
+Specify flags to pass to @code{make} during the build.
+
+@item -c, --gcjflags=@var{FLAGS}
+Specify flags to pass to @code{gcj} during compilation, in addition to
+'-fPIC -findirect-dispatch -fjni'.
+
+@item -l, --ldflags=@var{FLAGS}
+Specify flags to pass to @code{gcj} during linking, in addition to
+'-Wl,-Bsymbolic'.
+
+@item -e, --exclude=@var{PATH}
+Do not compile @var{PATH}.
+
+@end table
+
+@c man end
+
+@node Invoking rebuild-gcj-db
+@chapter Invoking rebuild-gcj-db
+
+@c man title rebuild-gcj-db Merge the per-solib databases made by aot-compile into one system-wide database.
+@ignore
+
+@c man begin SYNOPSIS rebuild-gcj-db
+rebuild-gcj-db
+@c man end
+
+@c man begin SEEALSO rebuild-gcj-db
+gcc(1), gcj(1), gcjh(1), jcf-dump(1), gfdl(7),
+and the Info entries for @file{gcj} and @file{gcc}.
+@c man end
+
+@end ignore
+
+@c man begin DESCRIPTION rebuild-gcj-db
+@code{rebuild-gcj-db} is a script that merges the per-solib databases made by
+@code{aot-compile} into one system-wide database so @code{gij} can find the 
+solibs.
+@c man end
 
 @node About CNI
 @chapter About CNI
@@ -1436,7 +1339,7 @@ alternative to the standard JNI (Java Native Interface).
 * Mixing with C++::             How CNI can interoperate with C++.
 * Exception Handling::          How exceptions are handled.
 * Synchronization::             Synchronizing between Java and C++.
-* Invocation::                 Starting the Java runtime from C++.
+* Invocation::                  Starting the Java runtime from C++.
 * Reflection::                  Using reflection from C++.
 @end menu
 
@@ -1686,7 +1589,7 @@ you can only call an interface method when the declared type of the
 field being called matches the interface which declares that
 method.  The workaround is to cast the interface reference to the right
 superinterface.
+
 For example if you have: 
 
 @example 
@@ -1694,13 +1597,13 @@ interface A
 @{ 
   void a(); 
 @} 
+
 interface B extends A 
 @{ 
   void b(); 
 @} 
 @end example
+
 and declare a variable of type @code{B} in C++, you can't call
 @code{a()} unless you cast it to an @code{A} first.
 
@@ -2083,9 +1986,9 @@ working with Java Java @code{String} objects.
 The names and interfaces are analogous to those of @acronym{JNI}.
 
 
-@deftypefun jstring JvNewString (const char* @var{chars}, jsize @var{len})
-Returns a Java @code{String} object with characters from the C string
-@var{chars} up to the index @var{len} in that array.
+@deftypefun jstring JvNewString (const jchar* @var{chars}, jsize @var{len})
+Returns a Java @code{String} object with characters from the array of 
+Unicode characters @var{chars} up to the index @var{len} in that array.
 @end deftypefun
 
 @deftypefun jstring JvNewStringLatin1 (const char* @var{bytes}, jsize @var{len})
@@ -2462,7 +2365,7 @@ The example can be compiled with @command{c++ -c test.cc; gcj test.o}.
 int main(int argc, char *argv[])
 @{
   using namespace java::lang;
-  
+
   try
   @{
     JvCreateJavaVM(NULL);