Create C callgraphs from gcc rtldumps via GraphViz.
Based on egypt, rewritten in python with added support for configurable root nodes and omission by regex. May or may not work with C++ code.
Compile your code with
-fdump-rtl-expand (eg. by running
This will generate some new files, most commonly with the extension
rtl2dot myproject.beepbop.expand | dot -Tsvg > myproject.svg to get a graph of the
main function of your project.
Valid options are:
--ignore <regex>Regular expression describing function names to be ignored
--root <function>Select the function to use as root node of the graph
--localIgnore functions that are not defined within the rtl dump (most likely library functions)
--indirectDraw a dashed line when the address of a function is taken
Any other arguments are treated as input files. If no input files are given, input is expected on stdin.
./rtl2dot.py smtpd.expand --root core_loop --ignore "client_send|logprintf|common_*" --local | dot -Tsvg > smtpd.svg
This program is free software. It comes without any warranty, to the extent permitted by applicable law. You can redistribute it and/or modify it under the terms of the Do What The Fuck You Want To Public License, Version 2, as published by Sam Hocevar and reproduced below.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004
Copyright (C) 2004 Sam Hocevar firstname.lastname@example.org
Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.