			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.
