Go to the first, previous, next, last section, table of contents.
g77
names and lays out COMMON
areas
the same way f2c
does,
for compatibility with f2c
.
Currently, g77
does not emit "true" debugging information for
members of a COMMON
area, due to an apparent bug in the GBE.
(As of Version 0.5.19, g77
emits debugging information for such
members in the form of a constant string specifying the base name of
the aggregate area and the offset of the member in bytes from the start
of the area.
Use the `-fdebug-kludge' option to enable this behavior.
In gdb
, use `set language c' before printing the value
of the member, then `set language fortran' to restore the default
language, since gdb
doesn't provide a way to print a readable
version of a character string in Fortran language mode.
This kludge will be removed in a future version of g77
that,
in conjunction with a contemporary version of gdb
,
properly supports Fortran-language debugging, including access
to members of COMMON
areas.)
See section Options for Code Generation Conventions, for information on the `-fdebug-kludge' option.
Moreover, g77
currently implements a COMMON
area such that its
type is an array of the C char
data type.
So, when debugging, you must know the offset into a COMMON
area
for a particular item in that area, and you have to take into
account the appropriate multiplier for the respective sizes
of the types (as declared in your code) for the items preceding
the item in question as compared to the size of the char
type.
For example, using default implicit typing, the statement
COMMON I(15), R(20), T
results in a public 144-byte char
array named `_BLNK__'
with `I' placed at `_BLNK__[0]', `R' at `_BLNK__[60]',
and `T' at `_BLNK__[140]'.
(This is assuming that the target machine for
the compilation has 4-byte INTEGER(KIND=1)
and REAL(KIND=1)
types.)
Go to the first, previous, next, last section, table of contents.