
## Change: * Added `--dump-dot-func` command-line option that allows users to dump CFGs only for specific functions instead of dumping all functions (the current only available option being `--dump-dot-all`) ## Usage: * Users can now specify function names or regex patterns (e.g., `--dump-dot-func=main,helper` or `--dump-dot-func="init.*`") to generate .dot files only for functions of interest * Aims to save time when analysing specific functions in large binaries (e.g., only dumping graphs for performance-critical functions identified through profiling) and we can now avoid reduce output clutter from generating thousands of unnecessary .dot files when analysing large binaries ## Testing The introduced test `dump-dot-func.test` confirms the new option does the following: - [x] 1. `dump-dot-func` can correctly filter a specified functions - [x] 2. Can achieve the above with regexes - [x] 3. Can do 1. with a list of functions - [x] No option specified creates no dot files - [x] Passing in a non-existent function generates no dumping messages - [x] `dump-dot-all` continues to work as expected
25 lines
503 B
C++
25 lines
503 B
C++
#include <iostream>
|
|
|
|
// Multiple functions to test selective dumping
|
|
int add(int a, int b) { return a + b; }
|
|
|
|
int multiply(int a, int b) { return a * b; }
|
|
|
|
int main_helper() {
|
|
std::cout << "Helper function" << std::endl;
|
|
return 42;
|
|
}
|
|
|
|
int main_secondary() { return add(5, 3); }
|
|
|
|
void other_function() { std::cout << "Other function" << std::endl; }
|
|
|
|
int main() {
|
|
int result = add(10, 20);
|
|
result = multiply(result, 2);
|
|
main_helper();
|
|
main_secondary();
|
|
other_function();
|
|
return result;
|
|
}
|