mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-20 19:10:13 +08:00
90a79256fe
From-SVN: r25306
149 lines
6.7 KiB
Plaintext
149 lines
6.7 KiB
Plaintext
AIX 4.3 archive libraries
|
|
|
|
AIX 4.3 utilizes a new "large format" archive to support both 32-bit and
|
|
64-bit object modules. The routines provided in AIX 4.3.0 and AIX 4.3.1
|
|
to parse archive libraries did not handle the new format correctly. These
|
|
routines are used by GCC and result in error messages during linking such
|
|
as "not a COFF file". The version of the routines shipped with AIX 4.3.1
|
|
should work for a 32-bit environment. The "-g" option of the archive
|
|
command may be used to create archives of 32-bit objects using the
|
|
original "small format". A correct version of the routines is shipped
|
|
with AIX 4.3.2.
|
|
|
|
|
|
AIX 4.3.2 binder
|
|
|
|
The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core
|
|
with a segmentation fault when invoked by any version of GCC. A fix for
|
|
APAR IX87327 will be available from IBM Customer Support.
|
|
|
|
|
|
AIX 4.3.0 assembler
|
|
|
|
The AIX 4.3.0.0 assembler generates incorrect object files if the ".bs"
|
|
pseudo-op references symbols in certain sections. If GCC is invoked with
|
|
the -g debugging option (including during bootstrapping), incorrect object
|
|
files will be produced and the AIX linker will fail with a severe error.
|
|
A fix for APAR IX74254 (64BIT DISASSEMBLED OUPUT FROM COMPILER FAILS TO
|
|
ASSEMBLE/BIND) is available from IBM Customer Support and from its
|
|
service.boulder.ibm.com website as PTF U453956.
|
|
|
|
|
|
AIX 4.1 binder
|
|
|
|
Some versions of the AIX binder (linker) can fail with a relocation
|
|
overflow severe error when the -bbigtoc option is used to link
|
|
GCC-produced object files into an executable that overflows the TOC.
|
|
Linking f771, the GNU Fortran backend, will fail in this manner. A fix
|
|
for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
|
|
available from IBM Customer Support and from its website as PTF U455193.
|
|
|
|
Due to changes in the way that GCC invokes the binder (linker) for AIX 4.1,
|
|
the link step now may produce warnings of duplicate symbols which were not
|
|
reported before. The assembly files generated by GCC for AIX always have
|
|
included multiple symbol definitions for certain global variable and
|
|
function declarations in the original program. The warnings should not
|
|
prevent the linker from producing a correct library or runnable executable.
|
|
|
|
|
|
AIX NLS problems
|
|
|
|
AIX on the RS/6000 provides support (NLS) for environments outside of
|
|
the United States. Compilers and assemblers use NLS to support
|
|
locale-specific representations of various objects including
|
|
floating-point numbers ("." vs "," for separating decimal fractions).
|
|
There have been problems reported where the library linked with GCC does
|
|
not produce the same floating-point formats that the assembler accepts.
|
|
If you have this problem, set the LANG environment variable to "C" or
|
|
"En_US".
|
|
|
|
|
|
AIX 3.2.5 XLC-1.3 problems
|
|
|
|
XLC version 1.3.0.0 distributed with AIX 3.2.5 will miscompile jump.c when
|
|
building the stage1 compiler during the bootstrap process. This will cause
|
|
GCC to crash and the bootstrap to fail later while compiling libgcc2.c. XLC
|
|
version 1.3.0.1 or later fixes this problem. XLC-1.3.0.19 also cannot
|
|
bootstrap GCC so please avoid that release as well. You can obtain
|
|
XLC-1.3.0.24 by requesting PTF 432238 from IBM, or just ask for the latest
|
|
release of XLC-1.3.
|
|
|
|
There also have been reports of problems bootstrapping GCC with some older
|
|
releases of xlc-1.2.1, including xlc-1.2.1.8. Newer releases of xlc-1.2.1
|
|
do not exhibit this problem: xlc-1.2.1.28 is known to bootstrap properly.
|
|
|
|
|
|
AIX 3.2 common-mode support
|
|
|
|
AIX common-mode providing transparent support of both the POWER and PowerPC
|
|
architectures is usable in AIX 3.2.3 and above but an export file and
|
|
support for hidden export via libc.a will not exist until AIX 4.1. libgcc.a
|
|
also must be compiled in common-mode. Note that executables generated for
|
|
the POWER (RIOS1 and RSC) architecture will run directly on systems using
|
|
the MPC601 chip. Common-mode only improves the performance of a single
|
|
executable run on both POWER and PowerPC architecture platforms by not using
|
|
POWER- or PowerPC-specific instructions and eliminating the need to trap to
|
|
emulation (for POWER instructions run on PowerPC).
|
|
|
|
To link a common-mode application prior to AIX 4.1 and run it on a system at
|
|
AIX level 3.2.3 or above, use the text between the "<>" as an export file
|
|
(e.g. milli.exp)
|
|
|
|
<><><><><><><><><><><>
|
|
#!
|
|
__mulh 0x3100
|
|
__mull 0x3180
|
|
__divss 0x3200
|
|
__divus 0x3280
|
|
__quoss 0x3300
|
|
__quous 0x3380
|
|
<><><><><><><><><><><>
|
|
|
|
and then link with -Wl,-bI:milli.exp.
|
|
|
|
|
|
AIX 3.1 and 3.2 assembler problems
|
|
|
|
Specifying the -g flag to GCC on the RS/6000 requires upgrading the
|
|
standard AIX assembler distributed with AIX 3.1 and versions of AIX
|
|
3.2 earlier than 3.2.4 with a replacement that is available from IBM.
|
|
Note that Makefile.in specifies the -g when compiling libgcc2.c.
|
|
|
|
You can test for the presence of a fixed assembler by entering the following:
|
|
% as -u < /dev/null
|
|
If the command exits normally, the assembler fix already is installed.
|
|
If the assembler complains that "-u" is an unknown flag, you need to order
|
|
the fix.
|
|
|
|
If you are running AIX 3.1 (lslpp -h bos.obj output reports
|
|
03.01.0005.XXXX where the 0005 can be any higher number and the XXXX
|
|
can be any value), call IBM Support at 800-237-5511 and ask for
|
|
shipment of AIX/6000 fix PTF U403044 for APAR IX22829 (.extern foo
|
|
conflicts with defining foo).
|
|
|
|
If you are running AIX 3.2 but not 3.2.4 or later (lslpp -h bos.obj
|
|
output reports 03.02.0000.0000), a newer update to the assembler fix
|
|
is available. Ask for shipment of AIX/6000 fix PTF U416277 for
|
|
IX32992 (.global prevents detection of duplicate symbol).
|
|
|
|
If you are running AIX 3.2.4 or later, you already have the new
|
|
assembler.
|
|
|
|
Any customer can order and get the replacement assembler, and install it on
|
|
one or more machines. It is available on diskette from IBM Customer Support
|
|
and from its website.
|
|
|
|
If you contact IBM Customer Support, they may also ask you for your customer
|
|
number. If you do not know it, you will still be able to get the fix, but
|
|
you will have to be persistent. IBM has corresponding support organizations
|
|
outside of North America. Call your IBM branch office and ask them to put
|
|
you in touch with the department that handles fixes for AIX/6000. If that
|
|
doesn't work, ask for the department that handles software defect support
|
|
for AIX/6000 and ask for the APAR fix.
|
|
|
|
If you use the GNU assembler instead of the system supplied assembler, you need
|
|
an assembler modified after October 16th, 1995 in order to build the GNU C
|
|
compiler. This is because the GNU C compiler wants to build a variant of its
|
|
library, libgcc.a with the -mcpu=common switch to support building programs
|
|
that can run on either the Power or PowerPC machines.
|