		     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 the IBM Internet fix anonymous ftp server (FixDist) at
aix.boulder.ibm.com (198.17.57.66).

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.


			      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 4.1 binder

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.
