Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ () — Motorola System V 88k Release 3.2 Version 1.2C

Media Vault

Software Library

Restoration Projects

Artifacts Sought



  CFLOW(1)              (Advanced C Utilities)             CFLOW(1)



  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 attempts to build a graph
       charting the external references.  Files suffixed with .y,
       .l, and .c are yacced, lexed, and C-preprocessed as
       appropriate.  The results of the preprocessed files, and
       files suffixed with .i, are then run through the first pass
       of lint(1).  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
       which is displayed upon 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
       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:



  Page 1                                                   May 1989


















  CFLOW(1)              (Advanced C Utilities)             CFLOW(1)



            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, the output of cflow
       can  be piped to pr(1), 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
       interpreted  just  as  they  are  by  cc(1) and cpp(1)], 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


  Page 2                                                   May 1989


















  CFLOW(1)              (Advanced C Utilities)             CFLOW(1)



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

  DIAGNOSTICS
       Complains  about  bad  options.   Complains  about  multiple
       definitions and only believes 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), nm(1), yacc(1).
       pr(1) in the User's Reference Manual.

  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.

















  Page 3                                                   May 1989
















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