Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ cflow(1) — DG/UX R4.11

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

as(1)

cc(1)

cpp(1)

lex(1)

lint(1)

pr(1)

yacc(1)



cflow(1)                          SDK R4.11                         cflow(1)


NAME
       cflow - generate a C flow graph

SYNOPSIS
       cflow [-r] [-ix] [-i] [-Dname=value] [-Uname] [-Idir] [-dnum]
       filename ...

DESCRIPTION
       Cflow analyzes a collection of C, yacc, lex, assembler, and object
       files and builds a graph charting the external function references.
       Files suffixed with .y, .l, and .c are processed by yacc, lex, and
       the C compiler as appropriate.  The results of the preprocessed
       files, and files suffixed with .i, are then run through the first
       pass of lint.  Files suffixed with .s are assembled.  Assembled
       files, and files suffixed with .o, have information extracted from
       their symbol tables.  The results are collected and turned into a
       graph of external references that is written on the standard output.

       Each line of output begins with a line number, followed by a suitable
       number of tabs indicating the level, then the name of the global
       symbol followed by a colon and its definition.  Normally only
       function names that do not begin with an underscore are listed (see
       the -i options below).  For information extracted from C source, the
       definition consists of an abstract type declaration (e.g., char *),
       and, delimited 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 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.

       As an example, 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: <>

       When the nesting level becomes too deep, use the -e option of pr(1)
       to compress the tab expansion to something less than every eight
       spaces.

       In addition to the -D, -I, and -U options (which are interpreted just
       as they are by cc), the following options are interpreted by cflow:

       -r     Reverse the ``caller:callee'' relationship producing an
              inverted listing showing the callers of each function.  The
              listing is also sorted in lexicographical order by callee.

       -ix    Include external and static data symbols.  The default is to
              include only functions in the flowgraph.

       -i    Include names that begin with an underscore.  The default 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 number is very large.
              Attempts to set the cutoff depth to a nonpositive integer will
              be ignored.

DIAGNOSTICS
       Complains about bad options.  Complains about multiple definitions
       and believes only the first.  Other messages may come from the
       various programs used (e.g., the C preprocessor).

SEE ALSO
       as(1), cc(1), cpp(1), lex(1), lint(1), pr(1), yacc(1).

NOTES
       Files produced by lex(1) and yacc(1) reorder line number
       declarations, which can confuse cflow.  To get proper results, feed
       cflow the yacc or lex input.


Licensed material--property of copyright holder(s)

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