Go to the first, previous, next, last section, table of contents.
g77 treats storage-associated areas involving a COMMON
block as explained in the section on common blocks.
A local EQUIVALENCE area is a collection of variables and arrays
connected to each other in any way via EQUIVALENCE, none of which are
listed in a COMMON statement.
Currently, g77 does not emit "true" debugging information for
members in a local EQUIVALENCE area, due to an apparent bug in the GBE.
(As of Version 0.5.19, g77 does emit 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 EQUIVALENCE areas.)
See section Options for Code Generation Conventions, for information on the `-fdebug-kludge' option.
Moreover, g77 implements a local EQUIVALENCE area such that its
type is an array of the C char data type.
The name g77 gives this array of char type is `__g77_equiv_x',
where x is the name of the item that is placed at the beginning (offset 0)
of this array.
If more than one such item is placed at the beginning, x is
the name that sorts to the top in an alphabetical sort of the list of
such items.
When debugging, you must therefore access members of EQUIVALENCE
areas by specifying the appropriate `__g77_equiv_x'
array section with the appropriate offset.
See the explanation of debugging COMMON blocks
for info applicable to debugging local EQUIVALENCE areas.
(Note: g77 version 0.5.18 and earlier chose the name
for x using a different method when more than one name was
in the list of names of entities placed at the beginning of the
array.
Though the documentation specified that the first name listed in
the EQUIVALENCE statements was chosen for x, g77
in fact chose the name using a method that was so complicated,
it seemed easier to change it to an alphabetical sort than to describe the
previous method in the documentation.)
Go to the first, previous, next, last section, table of contents.