OSDN Git Service

* doc/install.texi (*-ibm-aix*): Update assembler and exception
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Jan 2002 20:01:49 +0000 (20:01 +0000)
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Jan 2002 20:01:49 +0000 (20:01 +0000)
        handling information.
        * doc/trouble.texi (Interoperation): Add libstdc++ information
        for AIX.
        (Misunderstandings): Add template instantiation and static template
        member information for AIX.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48962 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/doc/install.texi
gcc/doc/trouble.texi

index de5d585..5d6e957 100644 (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.
index 6d1ea9b..1c110c5 100644 (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.
index 0b61c44..fb6e983 100644 (file)
@@ -291,14 +291,36 @@ 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