install.texi (*-ibm-aix*): Update assembler and exception handling information.

* doc/install.texi (*-ibm-aix*): Update assembler and exception
        handling information.
        * doc/trouble.texi (Interoperation): Add libstdc++ information
        for AIX.
        (Misunderstandings): Add template instantiation and static template
        member information for AIX.

From-SVN: r48962
This commit is contained in:
David Edelsohn 2002-01-17 20:01:49 +00:00 committed by David Edelsohn
parent c56664e09e
commit 2705baf546
3 changed files with 48 additions and 22 deletions

View File

@ -1,3 +1,12 @@
2002-01-17 David Edelsohn <edelsohn@gnu.org>
* doc/install.texi (*-ibm-aix*): Update assembler and exception
handling information.
* doc/trouble.texi (Interoperation): Add libstdc++ information
for AIX.
(Misunderstandings): Add template instantiation and static template
member information for AIX.
2002-01-17 Jason Merrill <jason@redhat.com>
* dbxout.c (dbxout_type): Support const and volatile.

View File

@ -2512,14 +2512,15 @@ does not provide a definition that will confuse @command{configure}.
If this error occurs during stage2 or later, then the problem most likely
is the version of Make (see above).
Binutils 2.10 does not support AIX 4.3. Binutils available from the
@uref{http://www-1.ibm.com/servers/aix/products/aixos/linux/,,AIX
Toolbox for Linux: GNU and Open Source tools for AIX};
website does work. Binutils 2.11 is expected to include AIX 4.3
support. The GNU Assembler is necessary for @samp{libstdc++} to build. The
AIX native @command{ld} still is recommended. The native AIX tools do
The GNU Assembler incorrectly reports that it supports WEAK symbols on
AIX which causes GCC to try to utilize weak symbol functionality which
is not really supported on the platform. The native @command{as} and
@command{ld} still are recommended. The native AIX tools do
interoperate with GCC@.
Building @file{libstdc++.a} requires a fix for a AIX Assembler bug
APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1).
Linking executables and shared libraries may produce warnings of
duplicate symbols. The assembly files generated by GCC for AIX always
have included multiple symbol definitions for certain global variable
@ -2527,17 +2528,6 @@ and function declarations in the original program. The warnings should
not prevent the linker from producing a correct library or runnable
executable.
GCC's exception handling implementation stores process-specific data in
the shared library which prevents exception handling from working
correctly on AIX in a default installation. To work around this, the
shared objects need to be loaded in the process private segment to
prevent them from being shared and marked read-only. This is
accomplished on AIX by installing the shared libraries
(@file{libgcc_s.a} and @file{libstdc++.a}) with file permissions
disallowing read-other (@samp{chmod a+x,o-r}). If the shared libraries
have been used, the shared library segment can be cleaned using the
@samp{/usr/sbin/slibclean} command.
AIX 4.3 utilizes a ``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.

View File

@ -290,15 +290,37 @@ Although this behavior differs from most other systems, it is not a
bug because redefining an @code{extern} variable as @code{static}
is undefined in ISO C@.
@item
In extremely rare cases involving some very large functions you may
receive errors from the AIX Assembler complaining about a displacement
that is too large. If you should run into it, you can work around by
making your function smaller.
@item
The @file{libstdc++.a} library in GCC relies on the SVR4 dynamic
linker semantics which merges global symbols between libraries and
applications, especially necessary for C++ streams functionality.
This is not the default behavior of AIX shared libraries and dynamic
linking. @file{libstdc++.a} is built on AIX with ``runtime-linking''
enabled so that symbol merging can occur. To utilize this feature,
the application linked with @file{libstdc++.a} must include the
@option{-Wl,-brtl} flag on the link line. G++ cannot impose this
because this option may interfere with the semantics of the user
program and users may not always use @samp{g++} to link his or her
application. Applications are not required to use the
@option{-Wl,-brtl} flag on the link line---the rest of the
@file{libstdc++.a} library which is not dependent on the symbol
merging semantics will continue to function correctly.
@item
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 (@samp{.} vs @samp{,} 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 @env{LANG} environment variable to
@samp{C} or @samp{En_US}.
floating-point numbers (@samp{.} vs @samp{,} 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 @env{LANG}
environment variable to @samp{C} or @samp{En_US}.
@item
@opindex fdollars-in-identifiers
@ -901,6 +923,11 @@ implemented using the ISO standard @file{stdarg.h} method of
variable arguments. Furthermore, calls to functions using @file{stdarg.h}
variable arguments must have a prototype for the called function
in scope at the time of the call.
@item
On AIX and other platforms without weak symbol support, templates
need to be instantiated explicitly and symbols for static members
of templates will not be generated.
@end itemize
@node C++ Misunderstandings