Version and Platform (required):
- Binary Ninja Version: 3.2.3814-dev (if version is stable, please also test the latest development build via the "Update Channel" option)
- OS: Manjaro Linux
- OS Version: 6.0.7-2
- CPU Architecture: x64
Bug Description:
When a function called is part of a HLIL return statement (e.g. return func()) the option to override the call type is not available.
Steps To Reproduce:
Please provide all steps required to reproduce the behavior:
- Compile this program
void func() { func(); }
int main() {func(); }
- Open it in Binary Ninja
- Right click on
func() in main (Override call type is available)
- Right click on
return func() in func (It is not available)
Retyping func to return void makes the option available again, as it is no longer part of a return statement (HLIL_RET with an operand of HLIL_CALL, to HLIL_CALL).
I have also seen this behaviour with __tailcall calls.
Expected Behavior:
The option to overrde call types should be available on all function calls.
Version and Platform (required):
Bug Description:
When a function called is part of a HLIL return statement (e.g.
return func()) the option to override the call type is not available.Steps To Reproduce:
Please provide all steps required to reproduce the behavior:
func()in main (Override call typeis available)return func()infunc(It is not available)Retyping
functo return void makes the option available again, as it is no longer part of a return statement (HLIL_RETwith an operand ofHLIL_CALL, toHLIL_CALL).I have also seen this behaviour with
__tailcallcalls.Expected Behavior:
The option to overrde call types should be available on all function calls.