Some handling of functions of the reflect library in the pointer analysis conflict with our use of summaries to avoid issued with reflection.
For example, calls to (reflect.Value).Call are eliminated (inlined) by the pointer analysis and do not appear in the callgraph. Despite us having a summary that overapproximates the dataflows in this function, our dataflow analysis is unsound because the summary is never used.
We need to find a way to have both pointer analysis and dataflow analysis work with the parts of the reflect library we can approximate (although in general, we do not support reflection).
Some handling of functions of the
reflect
library in the pointer analysis conflict with our use of summaries to avoid issued with reflection. For example, calls to(reflect.Value).Call
are eliminated (inlined) by the pointer analysis and do not appear in the callgraph. Despite us having a summary that overapproximates the dataflows in this function, our dataflow analysis is unsound because the summary is never used. We need to find a way to have both pointer analysis and dataflow analysis work with the parts of thereflect
library we can approximate (although in general, we do not support reflection).