Multifunction profiler

Measure time spent in given functions or calls count to given enter
and exit functions.

> igprof --fm-int LIBRARY_LIST REGEX_LIST
> igprof --fm-float LIBRARY_LIST REGEX_LIST
Measures time spent in all functions that can be found from libraries that
mach any regular expression given in REGEX_LIST.

> igprof --fenter-exit LIBRARY_LIST REGEX1_LIST REGEX2_LIST
> igprof --fenter-exit-float LIBRARY_LIST REGEX1_LIST REGEX2_LIST
Counts calls to functions that maches to REGEX lists. Functions that
matches to REGEX1_LIST will increase enter counter. Functions that
matches to REGEX2_LIST will increase exit counter.

All lists should be in form ITEM1:ITEM2:ITEM3...
for example /lib64/libc.so.6:/libpcre.so.0 would check all
symbols in libc.so.6 and libpcre.so.0. Each library item is passed to program as
they are written. REGEX is getting ^ in the begin of the expression and
$ at the end of the expression

float version should be used when function returns floating point
value. (%XMM0 register)

EDIT:One line was missing from profile-multifunction.cc type 1 hooking
EDIT2:removed [ -o ] from igprof script and used if [ ] || [ ] syntax instead,
which should be posix code