NAME
cflow - generate C flowgraph
SYNOPSIS
ccffllooww [[--rr]] [[--iixx]] [[--ii_]] [[--ddnum]] files
DESCRIPTION
The ccffllooww command analyzes a collection of C, yyaacccc, lleexx,
assembler, and object files and builds a graph charting the
external function references. Files suffixed with ..yy, ..ll,
and ..cc are processed by yyaacccc, lleexx, and the C compiler as
appropriate. The results of the preprocessed files, and
files suffixed with ..ii, are then run through the first pass
of lliinntt. Files suffixed with ..ss are assembled. Assembled
files, and files suffixed with ..oo, have information
extracted from their symbol tables. The results are col-
lected and turned into a graph of external references that
is written on the standard output.
Each line of output begins with a reference number, followed
by a suitable number of tabs indicating the level, then the
name of the global symbol followed by a colon and its defin-
ition. Normally only function names that do not begin with
an underscore are listed (see the --ii options below). For
information extracted from C source, the definition consists
of an abstract type declaration (e.g., cchhaarr **), and, delim-
ited by angle brackets, the name of the source file and the
line number where the definition was found. Definitions
extracted from object files indicate the file name and loca-
tion counter under which the symbol appeared (e.g., text).
Leading underscores in C-style external names are deleted.
Once a definition of a name has been printed, subsequent
references to that name contain only the reference number of
the line where the definition may be found. For undefined
references, only <<>> is printed.
As an example, suppose the following code is in ffiillee..cc:
iinntt ii;;
mmaaiinn(())
{{
ff(());;
gg(());;
ff(());;
}}
ff(())
{{
ii == hh(());;
}}
The command
ccffllooww --iixx ffiillee..cc
produces the output
11 mmaaiinn:: iinntt(()),, <<ffiillee..cc 44>>
22 ff:: iinntt(()),, <<ffiillee..cc 1111>>
33 hh:: <<>>
44 ii:: iinntt,, <<ffiillee..cc 11>>
55 gg:: <<>>
When the nesting level becomes too deep, the output of ccffllooww
can be piped to the pprr command, using the --ee option, to
compress the tab expansion to something less than every
eight spaces.
In addition to the --DD, --II, and --UU options, which are inter-
preted just as they are by cccc, the following options are
interpreted by ccffllooww:
--rr Reverse the ``caller:callee'' relationship producing
an inverted listing showing the callers of each func-
tion. The listing is also sorted in lexicographical
order by callee.
--iixx Include external and static data symbols. The default
is to include only functions in the flowgraph.
--ii_ Include names that begin with an underscore. The
default is to exclude these functions (and data if
--iixx is used).
--ddnum The num decimal integer indicates the depth at which
the flowgraph is cut off. By default this number is
very large. Attempts to set the cutoff depth to a
nonpositive integer will be ignored.
SEE ALSO
as(1), cc(1) lex(1), lint(1), nm(1), pr(1), yacc(1)
DIAGNOSTICS
Complains about multiple definitions and only believes the
first.
NOTES
Files produced by lleexx and yyaacccc cause the reordering of line
number declarations, which can confuse ccffllooww. To get proper
results, feed ccffllooww the yyaacccc or lleexx input.
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |