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:
parent
c56664e09e
commit
2705baf546
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue