[committed] Update install documentation for hppa*-hp-hpux*

John David Anglin dave@hiauly1.hia.nrc.ca
Sat Jan 31 22:56:00 GMT 2009

I updated the install documentation for hppa*-hp-hpux*.  Tested with
make doc on hppa64-hp-hpux11.11.  Committed to trunk.

J. David Anglin                                  dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)

2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
	information.  Remove some obsolete information.  Reorganize.

Index: doc/install.texi
--- doc/install.texi	(revision 143771)
+++ doc/install.texi	(working copy)
@@ -3049,18 +3049,28 @@
 @heading @anchor{hppa-hp-hpux}hppa*-hp-hpux*
 Support for HP-UX version 9 and older was discontinued in GCC 3.4.
-We require using gas/binutils on all hppa platforms;
-you may encounter a variety of problems if you try to use the HP assembler.
+We require using gas/binutils on all hppa platforms.  Version 2.19 or
+later is recommended.
-Specifically, @option{-g} does not work on HP-UX (since that system
-uses a peculiar debugging format which GCC does not know about), unless
-you use GAS and GDB@.  It may be helpful to configure GCC with the
+It may be helpful to configure GCC with the
 @uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}} and
 @option{--with-as=@dots{}} options to ensure that GCC can find GAS@.
-If you wish to use the pa-risc 2.0 architecture support with a 32-bit
-runtime, you must use gas/binutils 2.11 or newer.
+The HP assembler should not be used with GCC.  It is rarely tested and may
+not work.  It shouldn't be used with any languages other than C due to its
+many limitations.
+Specifically, @option{-g} does not work (HP-UX uses a peculiar debugging
+format which GCC does not know about).  It also inserts timestamps
+into each object file it creates, causing the 3-stage comparison test to
+fail during a bootstrap.  You should be able to continue by saying
+@samp{make all-host all-target} after getting the failure from @samp{make}.
+Various GCC features are not supported.  For example, it does not support weak
+symbols or alias definitions.  As a result, explicit template instantiations
+are required when using C++.  This makes it difficult if not impossible to
+build many C++ applications.
 There are two default scheduling models for instructions.  These are
 PROCESSOR_7100LC and PROCESSOR_8000.  They are selected from the pa-risc
 architecture specified for the target machine when configuring.
@@ -3083,17 +3093,6 @@
 to @env{CC}.  The description for the @option{munix=} option contains
 a list of the predefines used with each standard.
-As of GCC 4.1, @env{DWARF2} exception handling is available on HP-UX@.
-It is now the default.  This exposed a bug in the handling of data
-relocations in the GAS assembler.  The handling of 64-bit data relocations
-was seriously broken, affecting debugging and exception support on all
-@samp{hppa64-*-*} targets.  Under some circumstances, 32-bit data relocations
-could also be handled incorrectly.  This problem is fixed in GAS version
-2.16.91 20051125.
-GCC versions prior to 4.1 incorrectly passed and returned complex
-values.  They are now passed in the same manner as aggregates.
 More specific information to @samp{hppa*-hp-hpux*} targets follows.
@@ -3119,15 +3118,6 @@
 @uref{http://europe.itrc.hp.com/service/home/home.do,,} Europe.
 @end itemize
-The HP assembler on these systems has some problems.  Most notably the
-assembler inserts timestamps into each object file it creates, causing
-the 3-stage comparison test to fail during a bootstrap.
-You should be able to continue by saying @samp{make all-host all-target}
-after getting the failure from @samp{make}.
-GCC 4.0 requires CVS binutils as of April 28, 2004 or later.  Earlier
-versions require binutils 2.8 or later.
 The C++ ABI has changed incompatibly in GCC 4.0.  COMDAT subspaces are
 used for one-only code and data.  This resolves many of the previous
 problems in using C++ on this target.  However, the ABI is not compatible
@@ -3141,11 +3131,13 @@
 GCC 3.0 and up support HP-UX 11.  GCC 2.95.x is not supported and cannot
 be used to compile GCC 3.0 and up.
+The libffi and libjava libraries haven't been ported to 64-bit HP-UX@
+and don't build.
 Refer to @uref{binaries.html,,binaries} for information about obtaining
 precompiled GCC binaries for HP-UX@.  Precompiled binaries must be obtained
 to build the Ada language as it can't be bootstrapped using C@.  Ada is
-only available for the 32-bit PA-RISC runtime.  The libffi and libjava
-haven't been ported to HP-UX and don't build.
+only available for the 32-bit PA-RISC runtime.
 Starting with GCC 3.4 an ISO C compiler is required to bootstrap.  The
 bundled compiler supports only traditional C; you will need either HP's
@@ -3171,8 +3163,7 @@
 the same system.  The @samp{hppa[1-2]*-hp-hpux11*} target generates code
 for the 32-bit PA-RISC runtime architecture and uses the HP linker.
 The @samp{hppa64-hp-hpux11*} target generates 64-bit code for the
-PA-RISC 2.0 architecture.  The HP and GNU linkers are both supported
-for this target.
+PA-RISC 2.0 architecture.
 The script config.guess now selects the target type based on the compiler
 detected during configuration.  You must define @env{PATH} or @env{CC} so
@@ -3200,20 +3191,6 @@
 This has been reported to sometimes occur in unified builds of binutils
 and GCC@.
-GCC 3.0 through 3.2 require binutils 2.11 or above.  GCC 3.3 through
-GCC 4.0 require binutils 2.14 or later.
-Although the HP assembler can be used for an initial build, it shouldn't
-be used with any languages other than C and perhaps Fortran due to its
-many limitations.  For example, it does not support weak symbols or alias
-definitions.  As a result, explicit template instantiations are required
-when using C++.  This makes it difficult if not impossible to build many
-C++ applications.  You can't generate debugging information when using
-the HP assembler.  Finally, bootstrapping fails in the final
-comparison of object modules due to the time stamps that it inserts into
-the modules.  The bootstrap can be continued from this point with
-@samp{make all-host all-target}.
 A recent linker patch must be installed for the correct operation of
 GCC 3.3 and later.  @code{PHSS_26559} and @code{PHSS_24304} are the
 oldest linker patches that are known to work.  They are for HP-UX
@@ -3238,33 +3215,25 @@
 problem on the 64-bit port resulting from HP's non-standard use of
 the .init and .fini sections for array initializers and finalizers.
-There are a number of issues to consider in selecting which linker to
-use with the 64-bit port.  The GNU 64-bit linker can only create dynamic
-binaries.  The @option{-static} option causes linking with archive
-libraries but doesn't produce a truly static binary.  Dynamic binaries
-still require final binding by the dynamic loader to resolve a set of
-dynamic-loader-defined symbols.  The default behavior of the HP linker
-is the same as the GNU linker.  However, it can generate true 64-bit
-static binaries using the @option{+compat} option.
+Although the HP and GNU linkers are both supported for the
+@samp{hppa64-hp-hpux11*} target, it is strongly recommended that the
+HP linker be used for link editing on this target.
-The HP 64-bit linker doesn't support linkonce semantics.  As a
-result, C++ programs have many more sections than they should.
+At this time, the GNU linker does not support the creation of long
+branch stubs.  As a result, it can't successfully link binaries
+containing branch offsets larger than 8 megabytes.  In addition,
+there are problems linking shared libraries, linking executables
+with @option{-static}, and with dwarf2 unwind and exception support.
+It also doesn't provide stubs for internal calls to global functions
+in shared libraries, so these calls can't be overloaded.
-The GNU 64-bit linker has some issues with shared library support
-and exceptions.  As a result, we only support libgcc in archive
-format.  For similar reasons, dwarf2 unwind and exception support
-are disabled.  The GNU linker also has problems creating binaries
-with @option{-static}.  It doesn't provide stubs for internal
-calls to global functions in shared libraries, so these calls
-can't be overloaded.
+The HP dynamic loader does not support GNU symbol versioning, so symbol
+versioning is not supported.  It may be necessary to disable symbol
+versioning with @option{--disable-symvers} when using GNU ld.
-Thread support is not implemented in GCC 3.0 through 3.2, so the
-@option{--enable-threads} configure option does not work.  In 3.3
-and later, POSIX threads are supported.  The optional DCE thread
-library is not supported.
+POSIX threads are the default.  The optional DCE thread library is not
+supported, so @option{--enable-threads=dce} does not work.
-This port still is undergoing significant development.
 <hr />
 @end html

More information about the Gcc-patches mailing list