Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ cflow(1) — A/UX 2.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

as(1)

cc(1)

cpp(1)

lex(1)

lint(1)

nm(1)

pr(1)

yacc(1)




cflow(1) cflow(1)
NAME cflow - generate C flowgraph SYNOPSIS cflow [-dnum] [-i_] [-ix] [-r] file ... DESCRIPTION cflow analyzes a collection of C, yacc, lex, assembler, and object files and attempts to build a graph charting the external references. Files suffixed in .y, .l, .c, and .i are yacc'd, lex'd, and C-preprocessed (bypassed for .i files) as appropriate and then run through the first pass of lint(1). (The -I, -D, and -U flag options of the C- preprocessor are also understood.) Files suffixed with .s are assembled and information is extracted (as in .o files) from the symbol table. The output is collected and turned into a graph of external references which is displayed upon the standard output. Each line of output begins with a reference (i.e., line) number, followed by a suitable number of tabs indicating the level. Then the name of the global (normally only a func- tion not defined as an external or beginning with an under- score; see below for the -i inclusion flag option) a colon and its definition. For information extracted from C source, the definition consists of an abstract type declara- tion (e.g., char *), and, delimited by angle brackets, the name of the source file and the line number where the defin- ition was found. Definitions extracted from object files indicate the file name and location 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. When the nesting level becomes too deep, the -e flag option of pr(1) can be used to compress the tab expansion to some- thing less than every eight spaces. The following flag options are interpreted by cflow: -r 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. -ix Include external and static data symbols. The de- fault is to include only functions in the flowgraph. April, 1990 1



cflow(1) cflow(1)
-i_ Include names that begin with an underscore. The de- fault is to exclude these functions (and data if -ix is used). -dnum The num decimal integer indicates the depth at which the flowgraph is cut off. By default this is a very large number. Attempts to set the cutoff depth to a nonpositive integer will be met with contempt. EXAMPLES Given the following in file.c: int i; main() { f(); g(); f(); } f() { i = h(); } the command: cflow -ix file.c produces the output: 1 main: int(), <file.c 4> 2 f: int(), <file.c 11> 3 h: <> 4 i:int, <file.c 1> 5 g: <> DIAGNOSTICS Complains about bad flag options. Complains about multiple definitions and only believes the first. Other messages may come from the various programs used (e.g., the C- preprocessor). FILES /usr/bin/cflow /usr/lib/lpfx filters line(1) output into dag input /usr/lib/nmf converts nm output into dag input /usr/lib/dag graph maker /usr/lib/flip reverser 2 April, 1990



cflow(1) cflow(1)
SEE ALSO as(1), cc(1), cpp(1), lex(1), lint(1), nm(1), pr(1), yacc(1). BUGS Files produced by lex(1) and yacc(1) cause the reordering of line number declarations which can confuse cflow. To get proper results, feed cflow the yacc or lex input. April, 1990 3

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026