Issue 12721 - gcc3_linux_intel UNO bridge broken
Summary: gcc3_linux_intel UNO bridge broken
Status: CLOSED FIXED
Alias: None
Product: udk
Classification: Code
Component: code (show other issues)
Version: 644
Hardware: PC Linux, all
: P3 Trivial (vote)
Target Milestone: OOo 1.1 Beta2
Assignee: Stephan Bergmann
QA Contact: issues@udk
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-03-27 14:22 UTC by Stephan Bergmann
Modified: 2003-04-29 16:08 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments

Note You need to log in before you can comment on or make changes to this issue.
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