From: David Edelsohn Date: Thu, 17 Jan 2002 20:01:49 +0000 (+0000) Subject: install.texi (*-ibm-aix*): Update assembler and exception handling information. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2705baf5464f845b6515f5a30649aa7312ef8b96;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index de5d585daba..5d6e957eda1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2002-01-17 David Edelsohn + + * 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 * dbxout.c (dbxout_type): Support const and volatile. diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 6d1ea9b7d5c..1c110c56177 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -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. diff --git a/gcc/doc/trouble.texi b/gcc/doc/trouble.texi index 0b61c44c260..fb6e9832653 100644 --- a/gcc/doc/trouble.texi +++ b/gcc/doc/trouble.texi @@ -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