-
Notifications
You must be signed in to change notification settings - Fork 159
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Possible slicing/frame issue #44
Comments
After some careful looking, I don't believe this is an issue. The function truly starts at 0x8d710 and then it jumps to 0x8d6f0. This jump at 0x8d6f0 may or may not in fact be a tail call, but at least our current tail call identification code says it is not a tail call. Therefore, code at 0x8d6f0 is also considered parts of the function starting at 0x8d710. The takeaway is that Dyninst allows the cases where the function entry is not the lowest address of a function, while objdump does not. |
Well, objdump is not trying to be clever about where the function ends. It just splits based on the symbol table, and the stripped binary doesn't tell about unexported symbols. Your file has one symbol at So I guess However it did synthesize |
If you had |
While dissassembling
stdlibc++.so
on Fedora 21, I ran into an issue with an instruction (non VEX) we didn't have implemented (rdrand
). I implemented that instruction and now it appears dyninst is running into a slicing issue.The binary I am disassembling is available here.
The function that contains the issue starts at 0x8d710. Dyninst knows that this function starts at 0x8d710, however the disassembly for that function starts at 0x8d6f0, which doesn't seem right to me.
Dyninst (dyn_dump) output:
The objdump output is a little strange as well, because the function should only really be the first 3 lines because of the unconditional jump. Not sure what's going on here either. Objdump however does start at the correct address, 0x8d710.
objdump output:
If this is intentional behavior that I'm unaware of, this can be closed.
The text was updated successfully, but these errors were encountered: