There is, and has been for awhile, the excellent etags program. For many languages it allows one to generate a TAGS file which emacs can use to jump from a call site to the definition. The versions of etags I have seen support literally oodles of languages.
Is there a similar program that can generate who-calls data?
For example, given a function foo, I'd like to generate an emacs buffer containing a list of functions which call foo. It would be great if it supported multiple languages, although I'm primarily thinking about C.