I am completely new to Shell scripting. My task is to make a script that shows the functions used in the file (caller and callee). I used objdump, grep, awk etc. to get this output:
000000000040090d <usage>:
000000000040095d <failure>:
400970: e8 98 ff ff ff callq 40090d <usage>
000000000040097f <strton>:
4009bc: e8 9c ff ff ff callq 40095d <failure>
00000000004009c6 <main>:
400a0e: e8 6c ff ff ff callq 40097f <strton>
400a26: e8 32 ff ff ff callq 40095d <failure>
400a41: e8 39 ff ff ff callq 40097f <strton>
400a59: e8 ff fe ff ff callq 40095d <failure>
400a9a: e8 be fe ff ff callq 40095d <failure>
400aae: e8 cc fe ff ff callq 40097f <strton>
400ac2: e8 b8 fe ff ff callq 40097f <strton>
400ad1: e8 87 fe ff ff callq 40095d <failure>
400afe: e8 fe 01 00 00 callq 400d01 <set_timeout>
400b1c: e8 3c fe ff ff callq 40095d <failure>
400b26: e8 19 00 00 00 callq 400b44 <print_fib_upto>
400b37: e8 89 00 00 00 callq 400bc5 <print_ackermann>
Well, the result should look like this:
failure -> usage
strton -> failure
main -> failure
main -> print_ackermann
main -> print_fib_upto
main -> set_timeout
main -> strton
But I do not know how to do this. I know how to do this in C, etc., but not here. I think this is the correct pseudo code.
If (end of line == ">:")
caller == last column;
while (end of line == ">") {
callee == last column;
echo "$caller -> $callee"
}
Can someone tell me how to write this in BASH? Thanks a lot, Maybe this is a stupid question, but I still don't know what to do with the shell.
source
share