Chapter 11. Known Causes of Trouble with GCC
In extremely rare cases involving some very large functions you may receive errors from the HP
•
linker complaining about an out of bounds unconditional branch offset. This used to occur more
often in previous versions of GCC, but is now exceptionally rare. If you should run into it, you can
work around by making your function smaller.
GCC compiled code sometimes emits warnings from the HP-UX assembler of the form:
•
(warning) Use of GR3 when
frame
= 8192 may cause conflict.
These warnings are harmless and can be safely ignored.
On the IBM RS/6000, compiling code of the form
•
extern int foo;
... foo ...
static int foo;
will cause the linker to report an undefined symbol
other systems, it is not a bug because redefining an
C.
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.
The
•
libstdc++.a
global symbols between libraries and applications, especially necessary for C++ streams function-
ality. This is not the default behavior of AIX shared libraries and dynamic linking.
built on AIX with "runtime-linking" enabled so that symbol merging can occur. To utilize this fea-
ture, the application linked with
G++ cannot impose this because this option may interfere with the semantics of the user program
and users may not always use
the
flag on the link line--the rest of the
-Wl,-brtl
on the symbol merging semantics will continue to function correctly.
An application can interpose its own definition of functions for functions invoked by
•
with "runtime-linking" enabled on AIX. To accomplish this the application must
libstdc++.a
be linked with "runtime-linking" option and the functions explicitly must be exported by the
application (
-Wl,-brtl,-bE:exportfile
AIX on the RS/6000 provides support (NLS) for environments outside of the United States. Compil-
•
ers and assemblers use NLS to support locale-specific representations of various objects including
floating-point numbers (
ported 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
Even if you specify
•
on the RS/6000 due to a restriction in the IBM assembler. GAS supports these identifiers.
On Ultrix, the Fortran compiler expects registers 2 through 5 to be saved by function calls. However,
•
the C compiler uses conventions compatible with BSD Unix: registers 2 through 5 may be clobbered
by function calls.
GCC uses the same convention as the Ultrix C compiler. You can use these options to produce code
compatible with the Fortran compiler:
-fcall-saved-r2 -fcall-saved-r3 -fcall-saved-r4 -fcall-saved-r5
On the Alpha, you may get assembler errors about invalid syntax as a result of floating point con-
•
stants. This is due to a bug in the C library functions
point numbers, they sometimes print
library in GCC relies on the SVR4 dynamic linker semantics which merges
libstdc++.a
to link his or her application. Applications are not required to use
g++
vs
for separating decimal fractions). There have been problems re-
.
,
-fdollars-in-identifiers
NaN
. Although this behavior differs from most
foo
variable as
extern
must include the
libstdc++.a
).
environment variable to
LANG
, you cannot successfully use
,
ecvt
fcvt
.
is undefined in ISO
static
libstdc++.a
flag on the link line.
-Wl,-brtl
library which is not dependent
or
C
in identifiers
$
and
. Given valid floating
gcvt
285
is
.
En_US
Need help?
Do you have a question about the ENTERPRISE LINUX 4 and is the answer not in the manual?