cxref(1)
cxref - generate C program cross-reference
Showing IRIX 6.5.30 (default release). Unchanged since IRIX 6.5.
NAME cxref - generate C program cross-reference SYNOPSIS cxref [ options ] files DESCRIPTION The cxref command analyzes a collection of C, yacc, and lex files and attempts to build a cross-reference table. It produces a listing on standard output of all symbols (auto, static, and global) in each file separately, or, with the -c option, in combination. Each symbol contains an asterisk (*) before the declaring reference. If the environment variable _XPG is defined, cxref operates in conformance with the X/Open XPG4 specifications. The format of the output may differ in accordance to the XPG4 standards. In addition to the -D, -I -nostdinc and -U options [which are interpreted just as they are by cc(1) and cpp(1)], the following options are interpreted by cxref: -c Print a combined cross-reference of all input files. -h Do not print column headers. -w<num> Width option which formats output no wider than <num> (decimal) columns. This option will default to 80 if <num> is not specified or is less than 51. If _XPG is set then there should be at least one space between -w and num. -o file Direct output to file. -s Operate silently; do not print input file names. -t Format listing for 80-column width. -v Print on standard error the arguments passed to sub-passes and such other information as seems interesting. -exclude regex excludes cross-reference data from files whose name matches regex, where regex is a regular expression(see regex(3)). -include regex includes cross-reference data from files whose name matches regex, where regex is a regular expression(see regex(3)). By default everything in the named files is cross-referenced. For example, to cross-reference leaving out all headers from /usr/include but including <stdio.h>, the following suffices: cxref -exclude '/usr/include/.*' -include '.*/stdio.h' test.c -raw Instead of being processed into a cross reference output, the raw cross-reference information from the C compiler is passed directly to the output. The format of this data is described below. -rawin file Pass in to cxref for formatting the file as if it were the output of cxref -raw. The file must be in the proper format: if it is not, the result will likely be chaos. DIAGNOSTICS Most error/warning messages come from the C compiler. The C compiler is not the same as cc. RAW DATA FORMAT A cross raw reference record (the format may change from release to release) is a line of white-space separated fields. Each record docu- ments a single cross-reference instance and is terminated with a new- line. All data is in plain text. All numbers are in decimal. symaddr is the integer internal symbol address. Not used. symname is the name of a variable or function. code is one of D,M,A, or R. D if this is a declaration. M if this is a modification of the variable. A if the address is taken. R if this is a reference to the variable or function. filename is the source file name where found. line-number is the line number where the reference was found. column-number is the column number where the reference was found. type is one of B, F, or N. B means this is a function body (so code above is D). F means this is a function, not a data variable, and not a function body (code may be D, as a declaration, or A, or R). N means this is not a function. scope-level is an integer giving the current local scope level. Local (inner) scopes with no declarations are not interesting so they are not counted. include-depth is an integer giving the current #include nesting depth. FILES /usr/bin/cxref /usr/lib/ecfe SEE ALSO cc(1) NOTES The -acpp option is ignored. There is no way to combine K&R C with ANSI cpp. The -nocpp option is ignored. However, cxref accepts files suffixed with .i as C files. The -nostdinc option does not work. cxref attempts to understand many of the options normally passed to cc(1). Many options are irrelevant to cxref so they are silently ignored. Options not understood by cxref must not be passed on the com- mand line. Since the compiler predefines know and created by cc are not identical to those built into cxref, it is wise to use -show option to cc to create a script file with the -D and -U options shown as being passed to the compiler. Invoke cxref via the script (there are too many -D items to do this command creation reliably on the command line). Edit the script to remove options that cxref does not understand. Some #pragmas known to the regular cc command are not known to cxref, so useless warnings about unknown pragmas may appear at times.