


      CCCCFFFFLLLLOOOOWWWW((((1111))))                    ((((UUUUNNNNIIIIXXXX 5555....2222))))                   CCCCFFFFLLLLOOOOWWWW((((1111))))



      NNNNAAAAMMMMEEEE
           cflow - generate C flow graph

      SSSSYYYYNNNNTTTTAAAAXXXX
           ccccfffflllloooowwww [----rrrr] [----iiiixxxx] [----iiii____] [----ddddnum] files

      DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
           _C_f_l_o_w analyzes a collection of C, YACC, LEX, and assembler
           files and attempts to build a graph charting the external
           references. Files with the ....yyyy, ....llll, ....cccc, and ....iiii extensions are
           YACC'd, LEX'd, and C-preprocessed (bypassed for ....iiii files) as
           appropriate and then run through the first pass of _l_i_n_t(1).
           (The ----IIII, ----DDDD, and ----UUUU options of the C-preprocessor are also
           understood.) Files with the ....ssss extension are assembled and
           information is extracted from the symbol table.  A graph of
           all external references is produced and displayed on the
           standard output.

           Each output line consists of a reference number (a line
           number), appropriate indentation to indicate its level, the
           name of the global (normally only a function not defined as
           an external or beginning with an underscore; see below for
           the ----iiii inclusion option), a colon, and its definition. For
           information extracted from C source, the definition consists
           of an abstract type declaration (e.g., cccchhhhaaaarrrr ****), 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.,
           _t_e_x_t).  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 _f_i_l_e._c:

                int  i;

                main()
                {
                     f();
                     g();
                     f();
                }

                f()
                {
                     i = h();
                }



      Page 1                                                   (9010-E)






      CCCCFFFFLLLLOOOOWWWW((((1111))))                    ((((UUUUNNNNIIIIXXXX 5555....2222))))                   CCCCFFFFLLLLOOOOWWWW((((1111))))



           the command

                cflow file.c

           produces the 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  ----eeee  option  of
           _p_r(1) can be used to compress the tab expansion to something
           less than every eight spaces.

           The following options are interpreted by _c_f_l_o_w:

           ----rrrr     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.

           ----iiiixxxx    Include external and static data symbols. The default
                  is to include only functions in the flow graph.

           ----iiii____    Include names that  begin  with  an  underscore.  The
                  default  is  to  exclude these functions (and data if
                  -_i_x is used).

           ----ddddnum  The _n_u_m decimal integer indicates the depth at  which
                  the  flow graph is cut off. By default this is a very
                  large number.  Do not  set  the  cutoff  depth  to  a
                  nonpositive integer.

      DDDDIIIIAAAAGGGGNNNNOOOOSSSSTTTTIIIICCCCSSSS
           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).

      SSSSEEEEEEEE AAAALLLLSSSSOOOO
           as(1), cc(1), lex(1), lint(1), nm(1), pr(1), yacc(1).

      BBBBUUUUGGGGSSSS
           Files produced by _l_e_x(1) and _y_a_c_c(1) cause the reordering of
           line  number  declarations  which can confuse _c_f_l_o_w.  To get
           proper results, feed _c_f_l_o_w the _y_a_c_c or _l_e_x input.







      Page 2                                                   (9010-E)



