You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Functions with a single basic block that end in a tail call to a linker stub are confused with linker stubs. This causes a cascade of problems that culminates in that function being replaced with, for instance, a strcmp.47 that has no body and accepts an x86_regs* as a parameter, while the original function could have had a completely different name and could have done much more than just tail-calling strcmp.
This is a product of fcd doing a single pass over executables to identify both blocks and functions and produce LLVM IR, and stub identification logic being shoddy.
The text was updated successfully, but these errors were encountered:
The solution is probably to replace the stub detection logic with proper tail call handling, and then in an AST pass or something, replace functions that literally just call another function with the exact same parameters with the function that it's calling.
Functions with a single basic block that end in a tail call to a linker stub are confused with linker stubs. This causes a cascade of problems that culminates in that function being replaced with, for instance, a
strcmp.47
that has no body and accepts anx86_regs*
as a parameter, while the original function could have had a completely different name and could have done much more than just tail-callingstrcmp
.This is a product of fcd doing a single pass over executables to identify both blocks and functions and produce LLVM IR, and stub identification logic being shoddy.
The text was updated successfully, but these errors were encountered: