I'm in a gdb session to analyze a postmortem crash. I'm looking at disassemble output for a function and I see this:
=> 0x00007f8d354aed52 <+50>: callq *(%rax)
The => indicates that this was the instruction called at the time of the crash. So I got a seg fault calling the function at *(%rax). I'm pretty new to assembly. I see that parens around a register mean to deference (get the value at) that address. Thus (%rax) means to get the value of the pointer currently stored in %rax. What does the star decoration do on that? Does that further dereference that value (thus (%rax) is itself a pointer)? I'm having trouble googling *( assembly syntax.
This is x64 assembly generated from GCC 4.8 compiling C++ code.