### 4.5 Symspecs

Many of the output options allow functions to be included or excluded using symspecs (symbol specifications), which observe the following syntax:

           filename_containing_a_dot
         | funcname_not_containing_a_dot
         | linenumber
         | ( [ any_filename ] `:' ( any_funcname | linenumber ) )

Here are some sample symspecs:

‘`main.c`’
  Selects everything in file `main.c`—the dot in the string tells `gprof` to interpret the string as a filename, rather than as a function name. To select a file whose name does not contain a dot, a trailing colon should be specified. For example, ‘`odd:`’ is interpreted as the file named `odd`.
‘`main`’
  Selects all functions named ‘`main`’.

  Note that there may be multiple instances of the same function name because some of the definitions may be local (i.e., static). Unless a function name is unique in a program, you must use the colon notation explained below to specify a function from a specific source file.

  Sometimes, function names contain dots. In such cases, it is necessary to add a leading colon to the name. For example, ‘`:.mul`’ selects function ‘`.mul`’.

  In some object file formats, symbols have a leading underscore. `gprof` will normally not print these underscores. When you name a symbol in a symspec, you should type it exactly as `gprof` prints it in its output. For example, if the compiler produces a symbol ‘`_main`’ from your `main` function, `gprof` still prints it as ‘`main`’ in its output, so you should use ‘`main`’ in symspecs.

‘`main.c:main`’
  Selects function ‘`main`’ in file `main.c`.
‘`main.c:134`’
  Selects line 134 in file `main.c`.