Add a module pass that displays constants and simple constraints applied to integer arguments for imported functions. It can help to infer how an API is used.
For example, if the mmap and mprotect libc functions never use the PROT_EXEC flag; it can be assumed the module does not generate dynamic code.
It outputs a YAML format:
caller: check_set_after import: externalfunction arguments: 1: - type: eq value: 3 ...
This first commit outputs the collected information. Following changes will help drive the analysis to specific function and mark binaries matching specific constraints. I also plan to extend the constraints to strings.