Issue 12721

Summary: gcc3_linux_intel UNO bridge broken
Product: udk Reporter: Stephan Bergmann <stephan.bergmann.secondary>
Component: codeAssignee: Stephan Bergmann <stephan.bergmann.secondary>
Status: CLOSED FIXED QA Contact: issues@udk <issues>
Severity: Trivial    
Priority: P3 CC: issues
Version: 644   
Target Milestone: OOo 1.1 Beta2   
Hardware: PC   
OS: Linux, all   
Issue Type: DEFECT Latest Confirmation in: ---
Developer Difficulty: ---

Description Stephan Bergmann 2003-03-27 14:22:42 UTC
Depending on how a compiler generates code (e.g., GCC 3.2.2 vs. GCC 3.0.1), a
bug in the gcc3_linux_intel UNO bridge is revealed:  If a C/C++ function returns
a complex object (class, struct, union), the 386 ABI specifies that the caller
pushes the address for that object on the stack, and the callee removes it from
the stack.  The code in the UNO bridge (callVirtualMethod in
bridges/source/cpp_uno/gcc3_linux_intel/uno2cpp.cxx) erroneously assumes that
the callee does *not* remove the address from the stack, corrupting the stack
and.  Can be verified with testtools' bridgetest_inprocess.

This can be a problem for other gcc*_intel UNO bridges as well.
Comment 1 Stephan Bergmann 2003-03-27 14:26:16 UTC
fixed
Comment 2 hans_werner67 2003-04-01 12:02:27 UTC
-
Comment 3 Stephan Bergmann 2003-04-17 09:26:57 UTC
verified
Comment 4 Stephan Bergmann 2003-04-29 16:08:58 UTC
verified in SRX644m12s1