I am absolute beginner to Shell scripting. My task is to make a script, which will show functions used in a file (caller and callee). I have 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> Okay, 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 have no idea how to accomplish it. I'd know how to do it in C, etc, but not here. I think this is the right pseudo-code.
If (end of line == ">:") caller == last column; while (end of line == ">") { callee == last column; echo "$caller -> $callee" } Can anyone tell me, how to write this in BASH? Thank you very much, Maybe it's a silly question, but I don't know anyting about shell yet.
C? If so, it's unusual to be forbidden to useawkandsed, which are both written inC.objdumpinto a shortsedscript, obviating the need forgrep,awk, etc. See below. Works for me.