cflow.1p (7230B)
- '\" et
- .TH CFLOW "1P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual"
- .\"
- .SH PROLOG
- This manual page is part of the POSIX Programmer's Manual.
- The Linux implementation of this interface may differ (consult
- the corresponding Linux manual page for details of Linux behavior),
- or the interface may not be implemented on Linux.
- .\"
- .SH NAME
- cflow
- \(em generate a C-language flowgraph (\fBDEVELOPMENT\fP)
- .SH SYNOPSIS
- .LP
- .nf
- cflow \fB[\fR-r\fB] [\fR-d \fInum\fB] [\fR-D \fIname\fB[\fR=\fIdef\fB]]\fR...\fB [\fR-i \fIincl\fB] [\fR-I \fIdir\fB]\fR...
- \fB[\fR-U \fIdir\fB]\fR... \fIfile\fR...
- .fi
- .SH DESCRIPTION
- The
- .IR cflow
- utility shall analyze a collection of object files or assembler,
- C-language,
- .IR lex ,
- or
- .IR yacc
- source files, and attempt to build a graph, written to standard output,
- charting the external references.
- .SH OPTIONS
- The
- .IR cflow
- utility shall conform to the Base Definitions volume of POSIX.1\(hy2017,
- .IR "Section 12.2" ", " "Utility Syntax Guidelines",
- except that the order of the
- .BR \-D ,
- .BR \-I ,
- and
- .BR \-U
- options (which are identical to their interpretation by
- .IR c99 )
- is significant.
- .P
- The following options shall be supported:
- .IP "\fB\-d\ \fInum\fR" 10
- Indicate the depth at which the flowgraph is cut off. The application
- shall ensure that the argument
- .IR num
- is a decimal integer. By default this is a very large number
- (typically greater than 32\|000). Attempts to set the cut-off depth to
- a non-positive integer shall be ignored.
- .IP "\fB\-i\ \fIincl\fR" 10
- Increase the number of included symbols. The
- .IR incl
- option-argument is one of the following characters:
- .RS 10
- .IP "\fIx\fP" 6
- Include external and static data symbols. The default shall be to
- include only functions in the flowgraph.
- .IP "\fR_\fP" 6
- (Underscore) Include names that begin with an
- <underscore>.
- The default shall be to exclude these functions (and data if
- .BR "\-i\ x"
- is used).
- .RE
- .IP "\fB\-r\fP" 10
- Reverse the caller:callee relationship, producing an inverted listing
- showing the callers of each function. The listing shall also be sorted
- in lexicographical order by callee.
- .SH OPERANDS
- The following operand is supported:
- .IP "\fIfile\fR" 10
- The pathname of a file for which a graph is to be generated.
- Filenames suffixed by
- .BR .l
- shall shall be taken to be
- .IR lex
- input,
- .BR .y
- as
- .IR yacc
- input,
- .BR .c
- as
- .IR c99
- input, and
- .BR .i
- as the output of
- .IR c99
- .BR \-E .
- Such files shall be processed as appropriate, determined by their
- suffix.
- .RS 10
- .P
- Files suffixed by
- .BR .s
- (conventionally assembler source) may have more limited information
- extracted from them.
- .RE
- .SH STDIN
- Not used.
- .SH "INPUT FILES"
- The input files shall be object files or assembler, C-language,
- .IR lex ,
- or
- .IR yacc
- source files.
- .SH "ENVIRONMENT VARIABLES"
- The following environment variables shall affect the execution of
- .IR cflow :
- .IP "\fILANG\fP" 10
- Provide a default value for the internationalization variables that are
- unset or null. (See the Base Definitions volume of POSIX.1\(hy2017,
- .IR "Section 8.2" ", " "Internationalization Variables"
- for the precedence of internationalization variables used to determine
- the values of locale categories.)
- .IP "\fILC_ALL\fP" 10
- If set to a non-empty string value, override the values of all the
- other internationalization variables.
- .IP "\fILC_COLLATE\fP" 10
- .br
- Determine the locale for the ordering of the output when the
- .BR \-r
- option is used.
- .IP "\fILC_CTYPE\fP" 10
- Determine the locale for the interpretation of sequences of bytes of
- text data as characters (for example, single-byte as opposed to
- multi-byte characters in arguments and input files).
- .IP "\fILC_MESSAGES\fP" 10
- .br
- Determine the locale that should be used to affect the format and
- contents of diagnostic messages written to standard error.
- .IP "\fINLSPATH\fP" 10
- Determine the location of message catalogs for the processing of
- .IR LC_MESSAGES .
- .SH "ASYNCHRONOUS EVENTS"
- Default.
- .SH STDOUT
- The flowgraph written to standard output shall be formatted as follows:
- .sp
- .RS 4
- .nf
- "%d %s:%s\en", <\fIreference number\fR>, <\fIglobal\fR>, <\fIdefinition\fR>
- .fi
- .P
- .RE
- .P
- Each line of output begins with a reference (that is, line) number,
- followed by indentation of at least one column position per level.
- This is followed by the name of the global, a
- <colon>,
- and its definition. Normally globals are only functions not defined as
- an external or beginning with an
- <underscore>;
- see the OPTIONS section for the
- .BR \-i
- inclusion option. For information extracted from C-language source, the
- definition consists of an abstract type declaration (for example,
- .BR "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 filename and location counter under which
- the symbol appeared (for example,
- .IR text ).
- .P
- Once a definition of a name has been written, subsequent references to
- that name contain only the reference number of the line where the
- definition can be found. For undefined references, only
- .BR \(dq<\|>\(dq
- shall be written.
- .SH STDERR
- The standard error shall be used only for diagnostic messages.
- .SH "OUTPUT FILES"
- None.
- .SH "EXTENDED DESCRIPTION"
- None.
- .SH "EXIT STATUS"
- The following exit values shall be returned:
- .IP "\00" 6
- Successful completion.
- .IP >0 6
- An error occurred.
- .SH "CONSEQUENCES OF ERRORS"
- Default.
- .LP
- .IR "The following sections are informative."
- .SH "APPLICATION USAGE"
- Files produced by
- .IR lex
- and
- .IR yacc
- cause the reordering of line number declarations, and this can confuse
- .IR cflow .
- To obtain proper results, the input of
- .IR yacc
- or
- .IR lex
- must be directed to
- .IR cflow .
- .SH EXAMPLES
- Given the following in
- .BR file.c :
- .sp
- .RS 4
- .nf
- int i;
- int f();
- int g();
- int h();
- int
- main()
- {
- f();
- g();
- f();
- }
- int
- f()
- {
- i = h();
- }
- .fi
- .P
- .RE
- .P
- The command:
- .sp
- .RS 4
- .nf
- cflow -i x file.c
- .fi
- .P
- .RE
- .P
- produces the output:
- .sp
- .RS 4
- .nf
- 1 main: int(), <file.c 6>
- 2 f: int(), <file.c 13>
- 3 h: <>
- 4 i: int, <file.c 1>
- 5 g: <>
- .fi
- .P
- .RE
- .SH RATIONALE
- None.
- .SH "FUTURE DIRECTIONS"
- None.
- .SH "SEE ALSO"
- .IR "\fIc99\fR\^",
- .IR "\fIlex\fR\^",
- .IR "\fIyacc\fR\^"
- .P
- The Base Definitions volume of POSIX.1\(hy2017,
- .IR "Chapter 8" ", " "Environment Variables",
- .IR "Section 12.2" ", " "Utility Syntax Guidelines"
- .\"
- .SH COPYRIGHT
- Portions of this text are reprinted and reproduced in electronic form
- from IEEE Std 1003.1-2017, Standard for Information Technology
- -- Portable Operating System Interface (POSIX), The Open Group Base
- Specifications Issue 7, 2018 Edition,
- Copyright (C) 2018 by the Institute of
- Electrical and Electronics Engineers, Inc and The Open Group.
- In the event of any discrepancy between this version and the original IEEE and
- The Open Group Standard, the original IEEE and The Open Group Standard
- is the referee document. The original Standard can be obtained online at
- http://www.opengroup.org/unix/online.html .
- .PP
- Any typographical or formatting errors that appear
- in this page are most likely
- to have been introduced during the conversion of the source files to
- man page format. To report such errors, see
- https://www.kernel.org/doc/man-pages/reporting_bugs.html .