			    AIX 4.3 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.
