Problem ------- In this assignment we will learn to access the details of a call graph (such as indentifying callers or callees of a given function). For this purpose, you have to write a plugin to traverse the call graphs and a. print the callers of every function, b. print the callees of the `main' function (but not other functions). Procedure --------- 1. Iterate over call graph (structure variable `cgraph_node', details are in file $SOURCE_D/gcc/cgraph.h). We have already seen how to iterate over cgraph in assignment 1. 2. In order to find the list of callers, iterate over the structure represented by the following field `struct cgraph_edge *callers' 3. In order to find the list of callees, iterate over the structure represented by the following field `struct cgraph_edge *callees' 4. In order to find out whether a node in the call graph represents the `main' function, use the macro MAIN_NAME_P. Details of this macro can be found in the file $SOURCE_D/gcc/tree.h). As a general tip, you should use cscope and search for the uses of the data structures, APIs and macros in the source files. Examining some usages gives valuable information.