Collect the necessary information for constructing the call graph section, and
emit to .callgraph section of the binary.
Numeric type identifiers for indirect calls and targets are computed from type
identifiers passed from clang front-end.
CGSectionFuncComdatCreator pass is used to create comdats for functions whose
symbols will be referenced from the call graph section. A call graph section
is created per function group, and is linked to the relevant function. This
enables dead-stripping of call graph symbols if linked function gets removed.
Original RFC: https://lists.llvm.org/pipermail/llvm-dev/2021-June/151044.html
Updated RFC: https://lists.llvm.org/pipermail/llvm-dev/2021-July/151739.html