I was under the impression this is what tools/examine-relay did?non intuitive ? the only issue examine-relay currently have is that it doesn't split the output on the thread by thread basis... so, non intuition may mean thread switch ;-)
I never understood exactly how it does the indents though, it does it in a slightly non-intuitive way
basically, examine-relay scans every relay output...
and recreates the stack on a per thread basis... if it encounters a CALL, it pushes the info as a func call... if it's a RET, it pops the function call
(well, script is a bit more complicated because of, for example, missing function RET, like you could get while in exception handling, or mixed relay and other types of traces...)
I have some patches in my tree to keep in sync with latest relay output, I may submit them one day or the other
A+
-- Eric Pouech