install.texi (hppa*-hp-hpux*): Update binutils and linker information.

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

From-SVN: r143834
This commit is contained in:
John David Anglin 2009-01-31 22:29:16 +00:00 committed by John David Anglin
parent 30f3e4272a
commit be7659ba0b
2 changed files with 40 additions and 68 deletions

View File

@ -1,5 +1,8 @@
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.
* config/pa/fptr.c: Revert license to GPL 2.
* config/pa/milli64.S: Likewise.

View File

@ -3049,17 +3049,27 @@ longer a multiple of 2 bytes.
@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
@ -3083,17 +3093,6 @@ or @samp{98}. Another way is to add an appropriate set of predefines
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.
@html
@ -3119,15 +3118,6 @@ and Latin-America.
@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 @@ with the one implemented under HP-UX 11 using secondary definitions.
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 @@ installation prefixes must be used if both are to be installed on
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 @@ result, it's not possible to switch linkers in the middle of a GCC build.
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,32 +3215,24 @@ options, including program core dumps. Binutils 2.14 corrects a
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.
This port still is undergoing significant development.
POSIX threads are the default. The optional DCE thread library is not
supported, so @option{--enable-threads=dce} does not work.
@html
<hr />