(Corba) Interfaces returned from functions are pushed as implicit parameter.
Original Reporter info from Mantis: aafemt
-
Reporter name: Dimitry Sibiryakov
Original Reporter info from Mantis: aafemt
- Reporter name: Dimitry Sibiryakov
Description:
When extarnal function returns C++ pure abstract class, garbage is assigned to an interface variable.
Steps to reproduce:
Install libfbclient.so version 3 from snapshots here: http://www.firebirdsql.org/en/snapshot-builds/
Compile attached program and run it.
Normally it must out "17" in the last line.
Additional information:
call fb_get_master_interface <== this is call of imported external function
movq -104(%rbp),%rax <== this instruction kills function's result which is returned in RAX
movq %rax,U_P$CREATE_MASTER
If replace the instruction with NOP, result is as expected.
Mantis conversion info:
- Mantis ID: 26593
- OS: Ubuntu
- OS Build: 14.04
- Build: 2.6.2-8
- Platform: linux x86_64
- Version: 2.6.2
- Fixed in version: 3.1.1
- Fixed in revision: 28716
- Monitored by: » Adriaan van Os (Adriaan van Os), » @PascalDragon (Sven Barth)
- Target version: 3.0.0