Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ cflow(1) — svr4 — mips UMIPS RISC/os 5.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

as(1)

cc(1)

lex(1)

lint(1)

nm(1)

yacc(1)

pr(1)



CFLOW(1-SVR4)       RISC/os Reference Manual        CFLOW(1-SVR4)



NAME
     cflow - generate C flowgraph

SYNOPSIS
     cflow [-r] [-ix] [-i] [-dnum] files

DESCRIPTION
     The cflow command 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 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 -i options below).  For
     information extracted from C source, the definition consists
     of an abstract type declaration (e.g., char *), 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 file.c:

          int  i;

          main()
          {
               f();
               g();
               f();
          }
          f()
          {
               i = h();
          }





                        Printed 11/19/92                   Page 1





CFLOW(1-SVR4)       RISC/os Reference Manual        CFLOW(1-SVR4)



     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, the output of cflow
     can be piped to the pr command, using the -e option, to
     compress the tab expansion to something less than every
     eight spaces.

     In addition to the -D, -I, and -U options [which are inter-
     preted 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 func-
            tion.  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.

INTERNATIONAL FUNCTIONALITY
     cflow can analyze programs with literals and constants con-
     taining characters from supplementary codesets.

SEE ALSO
     as(1), cc(1), lex(1), lint(1), nm(1), yacc(1).
     pr(1) in the User's Reference Manual.

DIAGNOSTICS
     Complains about multiple definitions and only believes the
     first.

NOTES
     Files produced by lex and yacc cause the reordering of line



 Page 2                 Printed 11/19/92





CFLOW(1-SVR4)       RISC/os Reference Manual        CFLOW(1-SVR4)



     number declarations, which can confuse cflow.  To get proper
     results, feed cflow the yacc or lex input.





















































                        Printed 11/19/92                   Page 3



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