Issuetracker : #i56947# CWS : N/A Author : (JCA) Description : FreeBSD porting : update files at bridges project catch up version up of bridge project of GNU/Linux --- bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx Thu Sep 8 07:20:08 2005 +++ bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx Wed Oct 26 15:10:05 2005 @@ -57,7 +57,7 @@ typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return sal_Int32 nParams, typelib_MethodParameter * pParams, void ** pCallStack, - sal_Int64 * pRegisterReturn /* space for register return */ ) + void * pReturnValue ) { // pCallStack: ret, [return ptr], this, params char * pCppStack = (char *)(pCallStack +1); @@ -74,7 +74,7 @@ { if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr )) { - pUnoReturn = pRegisterReturn; // direct way for simple types + pUnoReturn = pReturnValue; // direct way for simple types } else // complex return via ptr (pCppReturn) { @@ -215,7 +215,7 @@ uno_destructData( pUnoReturn, pReturnTypeDescr, 0 ); } // complex return ptr is set to eax - *(void **)pRegisterReturn = pCppReturn; + *static_cast< void ** >(pReturnValue) = pCppReturn; } if (pReturnTypeDescr) { @@ -228,7 +228,7 @@ //================================================================================================== extern "C" void cpp_vtable_call( int nFunctionIndex, int nVtableOffset, void** pCallStack, - sal_Int64 nRegReturn ) + void * pReturnValue ) { OSL_ENSURE( sizeof(sal_Int32)==sizeof(void *), "### unexpected!" ); @@ -275,7 +275,7 @@ pCppI, aMemberDescr.get(), ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef, 0, 0, // no params - pCallStack, &nRegReturn ); + pCallStack, pReturnValue ); } else { @@ -290,7 +290,7 @@ pCppI, aMemberDescr.get(), 0, // indicates void return 1, &aParam, - pCallStack, &nRegReturn ); + pCallStack, pReturnValue ); } break; } @@ -324,7 +324,7 @@ &pInterface, pTD, cpp_acquire ); pInterface->release(); TYPELIB_DANGER_RELEASE( pTD ); - *(void **)&nRegReturn = pCallStack[1]; + *static_cast< void ** >(pReturnValue) = pCallStack[1]; break; } TYPELIB_DANGER_RELEASE( pTD ); @@ -336,7 +336,7 @@ ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pReturnTypeRef, ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->nParams, ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pParams, - pCallStack, &nRegReturn ); + pCallStack, pReturnValue ); } break; } --- bridges/source/cpp_uno/gcc3_freebsd_intel/call.s Wed Jun 1 01:32:41 2005 +++ bridges/source/cpp_uno/gcc3_freebsd_intel/call.s Wed Oct 26 15:10:04 2005 @@ -9,12 +9,13 @@ .LCFIg0: movl %esp,%ebp .LCFIg1: - subl $0x8,%esp # 64bit nRegReturn + subl $0x4,%esp # 32bit returnValue + pushl %esp # 32bit &returnValue pushl %ecx # 32bit pCallStack pushl %edx # 32bit nVtableOffset pushl %eax # 32bit nFunctionIndex call cpp_vtable_call - movl 12(%esp),%eax # 64 bit nRegReturn, lower half + movl 16(%esp),%eax # 32bit returnValue leave ret .LFEg: @@ -29,7 +30,7 @@ .LCFIv0: movl %esp,%ebp .LCFIv1: - subl $0x8,%esp # 64bit nRegReturn + pushl $0 # 32bit null pointer (returnValue not used) pushl %ecx # 32bit pCallStack pushl %edx # 32bit nVtableOffset pushl %eax # 32bit nFunctionIndex @@ -48,13 +49,14 @@ .LCFIh0: movl %esp,%ebp .LCFIh1: - subl $0x8,%esp # 64bit nRegReturn + subl $0x8,%esp # 64bit returnValue + pushl %esp # 32bit &returnValue pushl %ecx # 32bit pCallStack pushl %edx # 32bit nVtableOffset pushl %eax # 32bit nFunctionIndex call cpp_vtable_call - movl 12(%esp),%eax # 64 bit nRegReturn, lower half - movl 16(%esp),%edx # 64 bit nRegReturn, upper half + movl 16(%esp),%eax # 64bit returnValue, lower half + movl 20(%esp),%edx # 64bit returnValue, upper half leave ret .LFEh: @@ -69,12 +71,13 @@ .LCFIf0: movl %esp,%ebp .LCFIf1: - subl $0x8,%esp # 64bit nRegReturn + subl $0x4,%esp # 32bit returnValue + pushl %esp # 32bit &returnValue pushl %ecx # 32bit pCallStack pushl %edx # 32bit nVtableOffset pushl %eax # 32bit nFunctionIndex call cpp_vtable_call - flds 12(%esp) # 64 bit nRegReturn, lower half + flds 16(%esp) # 32bit returnValue leave ret .LFEf: @@ -89,12 +92,13 @@ .LCFId0: movl %esp,%ebp .LCFId1: - subl $0x8,%esp # 64bit nRegReturn + subl $0x8,%esp # 64bit returnValue + pushl %esp # 32bit &returnValue pushl %ecx # 32bit pCallStack pushl %edx # 32bit nVtableOffset pushl %eax # 32bit nFunctionIndex call cpp_vtable_call - fldl 12(%esp) # 64 bit nRegReturn + fldl 16(%esp) # 64bit returnValue leave ret .LFEd: @@ -109,12 +113,13 @@ .LCFIc0: movl %esp,%ebp .LCFIc1: - subl $0x8,%esp # 64bit nRegReturn + subl $0x4,%esp # 32bit returnValue + pushl %esp # 32bit &returnValue pushl %ecx # 32bit pCallStack pushl %edx # 32bit nVtableOffset pushl %eax # 32bit nFunctionIndex call cpp_vtable_call - movl 12(%esp),%eax # 64 bit nRegReturn, lower half + movl 16(%esp),%eax # 32bit returnValue leave ret $4 .LFEc: