xref: /plan9/sys/man/1/calls (revision 81bcec06d2f065e75d849ff0be369337ab66c8a8)
CALLS 1
NAME
calls - print static call graph of a C program
SYNOPSIS
calls [ -ptv ] [ -f function ] [ -w width ... ] [ -D def ] [ -U def ] [ -I dir ] [ file ... ]
DESCRIPTION
Calls reads file s, which should be the source of C programs, and writes the analysed calling pattern to standard output. If no file names are given, standard input will be read. Calls is intended to help analyse the flow of a program by laying out the functions called in the hierarchical manner used in "Software Tools" by B. Kernighan and P. Plauger.

All input is first filtered through cpp (1). Functions called but not defined within the source file s are shown as:

function [external]

Recursive references are shown as:

<<< function

Options are:

0.6i -f Add function as a root of a call graph to be printed.

-p Make cpp search the APE include directories.

-t Provides a terse form of output, in which the calling pattern for any function is printed only once on the first occurrence of the function. Subsequent occurrences output the function name and a notation

"" 1i
... "[see line " xx ]
"" 0.6i
This is the default case.

0.6i -v Full output of function calling patterns on every occurrence.

-w n Set the output width to n . The default is 80 columns.

-D name

0

0.4v -D name=defn Define the name for cpp , as if by #define . If no definition is given, the name is defined as 1.

-U name Remove any initial definition of name , where name is a reserved symbol that is predefined by cpp .

-I dir Change the algorithm for searching for #include files whose names do not begin with / to look in dir before looking in the directories on the standard list.

EXAMPLES
What does cat call?
.EX % calls -f main /sys/src/cmd/cat.c 1 main 2 cat 3 read [external] 4 write [external] 5 sysfatal [external] 6 open [external] 7 sysfatal [external] 8 close [external] 9 exits [external]

What internal functions does dd call?

.EX % calls -f main /sys/src/cmd/dd.c | grep -v '\e[external\e]' 1 main 5 number 6 <<< number 9 match 17 flsh 21 term 22 stats 25 term ... [see line 21] 26 stats ... [see line 22]

Note the recursion in number .

Generate the PC kernel's internal call graph.

.EX cd /sys/src/9/pc calls -f main -I../port -I. ../port/*.c ../ip/*.c *.c | grep -v external
BUGS
Forward declared functions defined within a function body which are not subsequently used within that function body will be listed as having been called.

Does not understand calls through function pointers.

Does not understand the restricted scope of static functions.