Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ cflow(1) — A/UX 0.7

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] files

     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
          function not defined as an external or beginning with an
          underscore; 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
          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.

          When the nesting level becomes too deep, the -e flag option
          of pr(1) can be used to compress the tab expansion to
          something 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
                 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.




     Page 1                                        (last mod. 1/16/87)





     cflow(1)                                                 cflow(1)



          -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 is a very
                 large number.  Attempts to set the cutoff depth to a
                 nonpositive integer will be met with contempt.

     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: <>

     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

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

     BUGS



     Page 2                                        (last mod. 1/16/87)





     cflow(1)                                                 cflow(1)



          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.




















































     Page 3                                        (last mod. 1/16/87)



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