[Libreoffice-commits] core.git: avmedia/source basic/Library_sb.mk basic/source bridges/inc bridges/Library_cpp_uno.mk bridges/Library_java_uno.mk bridges/source codemaker/Executable_cppumaker.mk config_host.mk.in configure.ac connectivity/Library_postgresql-sdbc-impl.mk connectivity/source dbaccess/Library_dbu.mk dbaccess/source dbaccess/win32 desktop/win32 distro-configs/LibreOfficeMinGW64.conf distro-configs/LibreOfficeMinGW.conf dtrans/source editeng/source embedserv/source extensions/source external/breakpad external/cairo external/clucene external/cppunit external/curl external/expat external/firebird external/freetype external/hunspell external/icu external/lcms2 external/libcmis external/liblangtag external/libxml2 external/libxmlsec external/libxslt external/lpsolve external/mingw-externals external/Module_external.mk external/mysqlcppconn external/neon external/nss external/openssl external/poppler external/postgresql external/python3 external/python33 external/redland forms/source fpic ker/source i18npool/source include/cppuhelper include/oox include/rtl include/sal include/systools include/wntgcci include/wntgccx m4/mingw.m4 odk/CustomTarget_check.mk odk/util postprocess/signing pyuno/CustomTarget_pyuno_pythonloader_ini.mk pyuno/CustomTarget_zipcore.mk pyuno/GeneratedPackage_python-core.mk pyuno/Module_pyuno.mk pyuno/Package_zipcore.mk pyuno/zipcore registry/source RepositoryExternal.mk RepositoryFixes.mk Repository.mk sal/osl sal/qa sal/systools scp2/InstallModule_ooo.mk scp2/InstallModule_python.mk scp2/InstallModule_ure.mk scp2/source sd/source setup_native/CustomTarget_wintools.mk setup_native/Module_setup_native.mk setup_native/Package_wintools.mk setup_native/source sfx2/source shell/inc shell/source solenv/gbuild svx/source sw/source vcl/Library_vcl.mk vcl/source vcl/win xmlsecurity/Library_xmlsecurity.mk xmlsecurity/Library_xsec_xmlsec.mk
Stephan Bergmann
sbergman at redhat.com
Fri Feb 10 18:01:54 UTC 2017
Repository.mk | 4
RepositoryExternal.mk | 21
RepositoryFixes.mk | 17
avmedia/source/win/interface.hxx | 6
basic/Library_sb.mk | 13
basic/source/runtime/wnt-mingw.s | 44
basic/source/sbx/sbxdec.hxx | 5
bridges/Library_cpp_uno.mk | 16
bridges/Library_java_uno.mk | 8
bridges/inc/cppinterfaceproxy.hxx | 2
bridges/source/cpp_uno/mingw_intel/call.s | 279 ----
bridges/source/cpp_uno/mingw_intel/callvirtualmethod.cxx | 137 --
bridges/source/cpp_uno/mingw_intel/callvirtualmethod.hxx | 40
bridges/source/cpp_uno/mingw_intel/cpp2uno.cxx | 507 --------
bridges/source/cpp_uno/mingw_intel/dllinit.cxx | 45
bridges/source/cpp_uno/mingw_intel/except.cxx | 293 ----
bridges/source/cpp_uno/mingw_intel/share.hxx | 95 -
bridges/source/cpp_uno/mingw_intel/smallstruct.cxx | 71 -
bridges/source/cpp_uno/mingw_intel/smallstruct.hxx | 32
bridges/source/cpp_uno/mingw_intel/uno2cpp.cxx | 378 ------
bridges/source/cpp_uno/mingw_x86-64/abi.cxx | 327 -----
bridges/source/cpp_uno/mingw_x86-64/abi.hxx | 61 -
bridges/source/cpp_uno/mingw_x86-64/call.s | 115 -
bridges/source/cpp_uno/mingw_x86-64/callvirtualmethod.cxx | 166 --
bridges/source/cpp_uno/mingw_x86-64/callvirtualmethod.hxx | 41
bridges/source/cpp_uno/mingw_x86-64/cpp2uno.cxx | 512 --------
bridges/source/cpp_uno/mingw_x86-64/except.cxx | 293 ----
bridges/source/cpp_uno/mingw_x86-64/share.hxx | 90 -
bridges/source/cpp_uno/mingw_x86-64/uno2cpp.cxx | 438 -------
bridges/source/cpp_uno/shared/cppinterfaceproxy.cxx | 2
bridges/source/jni_uno/jni_java2uno.cxx | 42
bridges/source/jni_uno/jni_uno2java.cxx | 16
codemaker/Executable_cppumaker.mk | 2
config_host.mk.in | 8
configure.ac | 791 +++----------
connectivity/Library_postgresql-sdbc-impl.mk | 2
connectivity/source/drivers/ado/AKeys.cxx | 4
connectivity/source/inc/ado/Aolevariant.hxx | 3
dbaccess/Library_dbu.mk | 6
dbaccess/source/ui/dlg/adodatalinks.cxx | 6
dbaccess/win32/source/odbcconfig/odbcconfig.cxx | 4
desktop/win32/source/applauncher/launcher.cxx | 4
desktop/win32/source/guiloader/genericloader.cxx | 10
desktop/win32/source/guistdio/guistdio.inc | 9
desktop/win32/source/officeloader/officeloader.cxx | 4
desktop/win32/source/unoinfo.cxx | 9
distro-configs/LibreOfficeMinGW.conf | 31
distro-configs/LibreOfficeMinGW64.conf | 32
dtrans/source/win32/clipb/MtaOleClipb.cxx | 6
dtrans/source/win32/dnd/idroptarget.cxx | 7
dtrans/source/win32/dnd/source.cxx | 7
dtrans/source/win32/dtobj/APNDataObject.cxx | 6
dtrans/source/win32/dtobj/XNotifyingDataObject.cxx | 7
dtrans/source/win32/dtobj/XTDataObject.cxx | 7
dtrans/source/win32/misc/ImplHelper.cxx | 76 -
editeng/source/editeng/impedit2.cxx | 6
embedserv/source/embed/esdll.cxx | 4
embedserv/source/embed/register.cxx | 3
embedserv/source/inc/embeddocaccess.hxx | 2
embedserv/source/inc/embservconst.h | 17
embedserv/source/inc/stdafx.h | 5
embedserv/source/inprocserv/dllentry.cxx | 16
extensions/source/activex/StdAfx2.cxx | 3
extensions/source/ole/comifaces.hxx | 5
extensions/source/ole/oledll.cxx | 3
extensions/source/ole/oleobjw.cxx | 8
extensions/source/ole/servprov.cxx | 5
extensions/source/ole/unoconversionutilities.hxx | 24
extensions/source/ole/unoobjw.cxx | 12
extensions/source/ole/unotypewrapper.cxx | 8
extensions/source/update/check/onlinecheck.cxx | 4
external/Module_external.mk | 4
external/breakpad/Module_breakpad.mk | 2
external/cairo/ExternalProject_cairo.mk | 2
external/cairo/ExternalProject_pixman.mk | 2
external/cairo/UnpackedTarball_pixman.mk | 2
external/clucene/UnpackedTarball_clucene.mk | 8
external/clucene/configs/clucene-config-MINGW-atomic.h | 150 --
external/clucene/configs/clucene-config-MINGW.h | 150 --
external/cppunit/ExternalProject_cppunit.mk | 6
external/curl/ExternalPackage_curl.mk | 4
external/curl/ExternalProject_curl.mk | 15
external/curl/UnpackedTarball_curl.mk | 1
external/curl/curl-7.26.0_mingw.patch | 24
external/expat/Module_expat.mk | 9
external/expat/StaticLibrary_expat.mk | 2
external/firebird/ExternalPackage_firebird.mk | 2
external/firebird/UnpackedTarball_firebird.mk | 2
external/freetype/ExternalProject_freetype.mk | 2
external/hunspell/ExternalProject_hunspell.mk | 1
external/icu/ExternalProject_icu.mk | 18
external/lcms2/ExternalProject_lcms2.mk | 1
external/libcmis/UnpackedTarball_cmis.mk | 2
external/liblangtag/ExternalProject_langtag.mk | 5
external/liblangtag/UnpackedTarball_langtag.mk | 8
external/liblangtag/liblangtag-0.5.1-mingw.patch | 64 -
external/libxml2/ExternalProject_xml2.mk | 15
external/libxmlsec/ExternalProject_xmlsec.mk | 16
external/libxmlsec/xmlsec1-configure.patch.1 | 2
external/libxmlsec/xmlsec1-customkeymanage.patch.1 | 6
external/libxslt/ExternalProject_xslt.mk | 14
external/lpsolve/ExternalProject_lpsolve.mk | 10
external/mingw-externals/CustomTarget_jawt.mk | 33
external/mingw-externals/Module_mingw-externals.mk | 20
external/mingw-externals/Package_mingw_dlls.mk | 16
external/mingw-externals/Package_mingw_gccdlls.mk | 19
external/mysqlcppconn/Library_mysqlcppconn.mk | 2
external/neon/neon.patch | 11
external/nss/ExternalProject_nss.mk | 21
external/nss/UnpackedTarball_nss.mk | 9
external/nss/nspr-4.9-build.patch.3 | 285 ----
external/nss/nss-3.13.3-build.patch.3 | 231 ---
external/nss/nss.mingw.patch.3 | 106 -
external/openssl/ExternalProject_openssl.mk | 6
external/openssl/UnpackedTarball_openssl.mk | 1
external/openssl/opensslmingw.patch | 123 --
external/poppler/poppler-snprintf.patch.1 | 27
external/postgresql/ExternalProject_postgresql.mk | 2
external/python3/ExternalPackage_python3.mk | 8
external/python3/ExternalProject_python3.mk | 5
external/python33/ExternalPackage_python3.mk | 8
external/python33/ExternalProject_python3.mk | 5
external/python33/UnpackedTarball_python3.mk | 2
external/redland/ExternalPackage_raptor.mk | 2
external/redland/ExternalPackage_rasqal.mk | 2
external/redland/ExternalPackage_redland.mk | 2
external/redland/ExternalProject_raptor.mk | 18
external/redland/ExternalProject_rasqal.mk | 21
external/redland/ExternalProject_redland.mk | 22
external/redland/UnpackedTarball_raptor.mk | 1
external/redland/UnpackedTarball_rasqal.mk | 1
external/redland/UnpackedTarball_redland.mk | 1
external/redland/raptor/raptor-mingw.patch.1 | 13
external/redland/rasqal/rasqal-mingw.patch.1 | 13
external/redland/redland/redland-mingw.patch.1 | 13
external/redland/redland/redland-msvc.patch.1 | 12
forms/source/xforms/datatypes.cxx | 6
fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx | 33
fpicker/source/win32/filepicker/comptr.hxx | 4
fpicker/source/win32/folderpicker/MtaFop.hxx | 3
i18npool/source/breakiterator/breakiterator_unicode.cxx | 1
i18npool/source/collator/collator_unicode.cxx | 6
i18npool/source/collator/gencoll_rule.cxx | 2
include/cppuhelper/implementationentry.hxx | 16
include/oox/helper/helper.hxx | 2
include/rtl/ustrbuf.hxx | 3
include/sal/config.h | 3
include/sal/types.h | 21
include/systools/win32/comptr.hxx | 4
include/systools/win32/snprintf.h | 5
include/systools/win32/uwinapi.h | 7
include/wntgcci/jni_md.h | 35
include/wntgcci/sehandler.hxx | 128 --
include/wntgccx/jni_md.h | 35
include/wntgccx/sehandler.hxx | 46
m4/mingw.m4 | 90 -
odk/CustomTarget_check.mk | 3
odk/util/check.pl | 6
postprocess/signing/no_signing.txt | 1
pyuno/CustomTarget_pyuno_pythonloader_ini.mk | 2
pyuno/CustomTarget_zipcore.mk | 34
pyuno/GeneratedPackage_python-core.mk | 20
pyuno/Module_pyuno.mk | 15
pyuno/Package_zipcore.mk | 18
pyuno/zipcore/python.cxx | 45
registry/source/regimpl.cxx | 3
sal/osl/w32/dllentry.c | 91 -
sal/osl/w32/file.cxx | 5
sal/osl/w32/file_dirvol.cxx | 3
sal/osl/w32/interlck.c | 4
sal/osl/w32/signal.cxx | 2
sal/osl/w32/system.h | 51
sal/osl/w32/tempfile.cxx | 4
sal/qa/rtl/oustringbuffer/test_oustringbuffer_assign.cxx | 3
sal/qa/rtl/strings/test_oustring_stringliterals.cxx | 3
sal/systools/win32/uwinapi/sntprintf.c | 31
scp2/InstallModule_ooo.mk | 8
scp2/InstallModule_python.mk | 8
scp2/InstallModule_ure.mk | 5
scp2/source/ooo/mingw_dlls.scp | 43
scp2/source/ooo/scpaction_ooo.scp | 15
scp2/source/ooo/ure.scp | 28
scp2/source/python/file_python.scp | 42
scp2/source/python/module_python.scp | 3
sd/source/ui/remotecontrol/BluetoothServer.cxx | 5
setup_native/CustomTarget_wintools.mk | 38
setup_native/Module_setup_native.mk | 13
setup_native/Package_wintools.mk | 22
setup_native/source/win32/wintools/makecab/makecab.c | 379 ------
setup_native/source/win32/wintools/makecab/parseddf.c | 386 ------
setup_native/source/win32/wintools/makecab/parseddf.h | 46
setup_native/source/win32/wintools/msidb/msidb.c | 620 ----------
setup_native/source/win32/wintools/msiinfo/msiinfo.c | 254 ----
setup_native/source/win32/wintools/msimsp/msimsp.c | 86 -
setup_native/source/win32/wintools/msitran/msitran.c | 122 --
sfx2/source/doc/syspathw32.cxx | 2
shell/inc/thumbviewer.hxx | 5
shell/inc/utilities.hxx | 24
shell/source/win32/shlxthandler/classfactory.cxx | 3
shell/source/win32/shlxthandler/ooofilt/ooofilt.cxx | 4
shell/source/win32/shlxthandler/prophdl/propertyhdl.cxx | 4
shell/source/win32/shlxthandler/util/iso8601_converter.cxx | 19
solenv/gbuild/platform/WNT_INTEL_GCC.mk | 47
solenv/gbuild/platform/WNT_X86_64_GCC.mk | 33
solenv/gbuild/platform/mingw.mk | 378 ------
svx/source/gengal/gengal.cxx | 7
sw/source/core/text/frmcrsr.cxx | 2
sw/source/core/text/porlay.cxx | 2
vcl/Library_vcl.mk | 1
vcl/source/edit/texteng.cxx | 2
vcl/source/gdi/sallayout.cxx | 2
vcl/win/app/salinst.cxx | 32
vcl/win/app/saltimer.cxx | 19
vcl/win/gdi/gdiimpl.cxx | 11
vcl/win/gdi/salprn.cxx | 20
vcl/win/window/salframe.cxx | 20
xmlsecurity/Library_xmlsecurity.mk | 2
xmlsecurity/Library_xsec_xmlsec.mk | 11
218 files changed, 338 insertions(+), 10121 deletions(-)
New commits:
commit 8646ab97dc37c0606b19057686bf3d610f9c15ee
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Feb 10 14:05:21 2017 +0100
Remove MinGW support
In OOo times, there'd originally been efforts to allow building on Windows with
MinGW. Later, in LO times, this has been shifted to an attempt of cross-
compiling for Windows on Linux. That attempt can be considered abandoned, and
the relevant code rotting.
Due to this heritage, there are now three kinds of MinGW-specific code in LO:
* Code from the original OOo native Windows effort that is no longer relevant
for the LO cross-compilation effort, but has never been removed properly.
* Code from the original OOo native Windows effort that is re-purposed for the
LO cross-compilation effort.
* Code that has been added specifially for the LO cross-compilation effort.
All three kinds of code are removed.
(An unrelated, remaining use of MinGW is for --enable-build-unowinreg, utilizing
--with-mingw-cross-compiler, MINGWCXX, and MINGWSTRIP.)
Change-Id: I49daad8669b4cbe49fa923050c4a4a6ff7dda568
Reviewed-on: https://gerrit.libreoffice.org/34127
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman at redhat.com>
diff --git a/Repository.mk b/Repository.mk
index a74522c..c7f054a 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -794,10 +794,6 @@ $(eval $(call gb_Helper_register_packages, \
$(if $(filter DESKTOP,$(BUILD_TYPE)),desktop_scripts_install) \
extras_fonts \
extras_wordbook \
- $(if $(filter WNTGCC,$(OS)$(COM)), \
- mingw_dlls \
- mingw_gccdlls \
- ) \
$(if $(filter MSC,$(COM)),msvc_dlls) \
more_fonts_conf \
instsetoo_native_setup \
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index 24f3975..3871080 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -720,32 +720,13 @@ endif # SYSTEM_CMIS
ifeq ($(ENABLE_JAVA),TRUE)
-ifeq ($(OS)$(COM),WNTGCC)
-
define gb_LinkTarget__use_jawt
-$(call gb_LinkTarget_use_custom_headers,$(1),external/jawt)
-
-$(call gb_LinkTarget_add_ldflags,$(1),\
- -L$(call gb_CustomTarget_get_workdir,external/jawt) \
-)
-
$(call gb_LinkTarget_add_libs,$(1),\
$(JAWTLIB) \
)
endef
-else # $(OS)$(COM) != WNTGCC
-
-define gb_LinkTarget__use_jawt
-$(call gb_LinkTarget_add_libs,$(1),\
- $(JAWTLIB) \
-)
-
-endef
-
-endif # $(OS)$(COM) = WNTGCC
-
else # !ENABLE_JAVA
gb_LinkTarget__use_jawt :=
@@ -2986,7 +2967,7 @@ $(call gb_LinkTarget_add_libs,$(1),\
$(call gb_UnpackedTarball_get_dir,postgresql)/src/interfaces/libpq/libpq$(gb_StaticLibrary_PLAINEXT) \
)
-ifeq ($(OS)$(COM),WNTMSC)
+ifeq ($(OS),WNT)
$(call gb_LinkTarget_use_external,$(1),openssl)
$(call gb_LinkTarget_use_system_win32_libs,$(1),\
diff --git a/RepositoryFixes.mk b/RepositoryFixes.mk
index b232f1a..82c0701 100644
--- a/RepositoryFixes.mk
+++ b/RepositoryFixes.mk
@@ -80,21 +80,6 @@ gb_Library_FILENAMES := $(patsubst rdf:rdf%,rdf:librdf%,$(gb_Library_FILENAMES))
# libpyuno_wrapper.dll => pyuno.pyd
gb_Library_FILENAMES := $(patsubst pyuno:pyuno.dll,pyuno:pyuno$(if $(MSVC_USE_DEBUG_RUNTIME),_d).pyd,$(gb_Library_FILENAMES))
-ifeq ($(COM),GCC)
-gb_Library_ILIBFILENAMES := $(patsubst libexttextcat:liblibext%,libexttextcat:libilibext%,$(gb_Library_ILIBFILENAMES))
-gb_Library_ILIBFILENAMES := $(patsubst z:iz%,z:zlib%,$(gb_Library_ILIBFILENAMES))
-
-# Libraries not provided by mingw(-w64), available only in the Windows
-# SDK. So if these actually are liked with somewhere, we can't
-# cross-compile that module then using MinGW. That needs to be fixed
-# then, and we need to use these libraries through run-time lookup of
-# APIs. Or something.
-gb_Library_SDKLIBFILENAMES:=
-
-gb_Library_FILENAMES := $(filter-out $(foreach lib,$(gb_Library_SDKLIBFILENAMES),$(lib):%),$(gb_Library_FILENAMES))
-gb_Library_FILENAMES += $(foreach lib,$(gb_Library_SDKLIBFILENAMES),$(lib):$(WINDOWS_SDK_HOME)/lib/$(lib).lib)
-
-else # $(COM) != GCC
gb_Library_ILIBFILENAMES := $(patsubst z:z%,z:zlib%,$(gb_Library_ILIBFILENAMES))
# these have prefix "lib" instead of "i"
@@ -110,8 +95,6 @@ gb_Library_ILIBFILENAMES += \
gb_Library_FILENAMES := $(filter-out $(foreach lib,$(gb_Library_LIBLIBFILENAMES),$(lib):%),$(gb_Library_FILENAMES))
gb_Library_FILENAMES += $(foreach lib,$(gb_Library_LIBLIBFILENAMES),$(lib):lib$(lib).dll)
-endif # ifeq ($(COM),GCC)
-
endif # ifeq ($(OS),WNT)
# vim: set noet sw=4 ts=4:
diff --git a/avmedia/source/win/interface.hxx b/avmedia/source/win/interface.hxx
index 41dcad4..0858477 100644
--- a/avmedia/source/win/interface.hxx
+++ b/avmedia/source/win/interface.hxx
@@ -25,9 +25,7 @@ extern "C" const IID IID_IMediaDet;
struct ISampleGrabber;
struct
-#ifndef __MINGW32__
__declspec(uuid("65BD0710-24D2-4ff7-9324-ED2E5D3ABAFA")) __declspec(novtable)
-#endif
IMediaDet : public IUnknown
{
public:
@@ -77,9 +75,7 @@ protected:
extern "C" const IID IID_ISampleGrabberCB;
struct
-#ifndef __MINGW32__
__declspec(uuid("0579154A-2B53-4994-B0D0-E773148EFF85")) __declspec(novtable)
-#endif
ISampleGrabberCB : public IUnknown
{
public:
@@ -97,9 +93,7 @@ protected:
extern "C" const IID IID_ISampleGrabber;
struct
-#ifndef __MINGW32__
__declspec(uuid("6B652FFF-11FE-4fce-92AD-0266B5D7C78F")) __declspec(novtable)
-#endif
ISampleGrabber : public IUnknown
{
public:
diff --git a/basic/Library_sb.mk b/basic/Library_sb.mk
index 0501c5d..20892a3 100644
--- a/basic/Library_sb.mk
+++ b/basic/Library_sb.mk
@@ -144,6 +144,9 @@ ifeq ($(OS)$(CPUNAME),WNTINTEL)
$(eval $(call gb_Library_add_exception_objects,sb,\
basic/source/runtime/dllmgr-x86 \
))
+$(eval $(call gb_Library_add_asmobjects,sb,\
+ basic/source/runtime/wnt-x86 \
+))
else
ifeq ($(OS)$(CPUNAME),WNTX86_64)
$(eval $(call gb_Library_add_exception_objects,sb,\
@@ -155,16 +158,6 @@ $(eval $(call gb_Library_add_exception_objects,sb,\
))
endif
endif
-ifeq ($(OS)$(COM)$(CPUNAME),WNTMSCINTEL)
-$(eval $(call gb_Library_add_asmobjects,sb,\
- basic/source/runtime/wnt-x86 \
-))
-endif
-ifeq ($(OS)$(COM)$(CPUNAME),WNTGCCINTEL)
-$(eval $(call gb_Library_add_asmobjects,sb,\
- basic/source/runtime/wnt-mingw \
-))
-endif
# Runtime dependency for unit-tests
$(eval $(call gb_Library_use_restarget,sb,sb))
diff --git a/basic/source/runtime/wnt-mingw.s b/basic/source/runtime/wnt-mingw.s
deleted file mode 100644
index 7d591da..0000000
--- a/basic/source/runtime/wnt-mingw.s
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# This file incorporates work covered by the following license notice:
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed
-# with this work for additional information regarding copyright
-# ownership. The ASF licenses this file to you under the Apache
-# License, Version 2.0 (the "License"); you may not use this file
-# except in compliance with the License. You may obtain a copy of
-# the License at http://www.apache.org/licenses/LICENSE-2.0 .
-#
-
-.intel_syntax
-
-.globl _DllMgr_call32 at 12
-.globl _DllMgr_callFp at 12
-
-_DllMgr_call32 at 12:
-_DllMgr_callFp at 12:
- push ebp
- mov ebp, esp
- push esi
- push edi
- mov ecx, [ebp+16]
- jecxz $1
- sub esp, ecx
- mov edi, esp
- mov esi, [ebp+12]
- shr ecx, 2
- rep movsd
-$1: call DWORD PTR [ebp+8]
- # for extra safety, do not trust esp after call (in case the Basic Declare
- # signature is wrong):
- mov edi, [ebp-8]
- mov esi, [ebp-4]
- mov esp, ebp
- pop ebp
- ret 12
diff --git a/basic/source/sbx/sbxdec.hxx b/basic/source/sbx/sbxdec.hxx
index 1c3461a..6b2aeab 100644
--- a/basic/source/sbx/sbxdec.hxx
+++ b/basic/source/sbx/sbxdec.hxx
@@ -24,13 +24,10 @@
#ifdef _WIN32
#include <prewin.h>
#include <postwin.h>
-
-#ifndef __MINGW32__
#include <comutil.h>
-#endif
#include <oleauto.h>
-
#endif
+
#endif
#include <basic/sbx.hxx>
diff --git a/bridges/Library_cpp_uno.mk b/bridges/Library_cpp_uno.mk
index d7ec27d..6486ea2 100644
--- a/bridges/Library_cpp_uno.mk
+++ b/bridges/Library_cpp_uno.mk
@@ -81,11 +81,6 @@ else ifeq ($(COM),MSC)
bridges_SELECTED_BRIDGE := msvc_win32_intel
bridge_exception_objects := cpp2uno dllinit uno2cpp
bridge_noopt_objects := except
-else ifeq ($(OS)$(COM),WNTGCC)
-bridges_SELECTED_BRIDGE := mingw_intel
-bridge_asm_objects := call
-bridge_noopt_objects := uno2cpp
-bridge_exception_objects := callvirtualmethod cpp2uno dllinit except smallstruct
endif
else ifeq ($(CPUNAME),M68K)
@@ -182,11 +177,6 @@ bridges_SELECTED_BRIDGE := msvc_win32_x86-64
bridge_exception_objects := cpp2uno dllinit uno2cpp
bridge_noopt_objects := except
bridge_asm_objects := call
-else ifeq ($(OS)$(COM),WNTGCC)
-bridges_SELECTED_BRIDGE := mingw_x86-64
-bridge_asm_objects := call
-bridge_noncallexception_noopt_objects := callvirtualmethod
-bridge_exception_objects := abi cpp2uno except uno2cpp
endif
endif
@@ -207,13 +197,9 @@ $(eval $(call gb_Library_add_defs,$(gb_CPPU_ENV)_uno,\
endif
ifeq ($(OS),WNT)
$(eval $(call gb_Library_add_defs,$(gb_CPPU_ENV)_uno,\
- $(if $(filter GCC,$(COM)),\
- $(if $(filter sjlj,$(EXCEPTIONS)),\
- -DBROKEN_ALLOCA \
- ), \
$(if $(cppu_no_leak)$(bndchk),,\
-DLEAK_STATIC_DATA \
- )) \
+ ) \
))
endif
diff --git a/bridges/Library_java_uno.mk b/bridges/Library_java_uno.mk
index 178a008..8d70e21 100644
--- a/bridges/Library_java_uno.mk
+++ b/bridges/Library_java_uno.mk
@@ -9,14 +9,6 @@
$(eval $(call gb_Library_Library,java_uno))
-ifeq ($(OS)$(COM),WNTGCC)
-ifeq ($(EXCEPTIONS),sjlj)
-$(eval $(call gb_Library_add_defs,java_uno,\
- -DBROKEN_ALLOCA \
-))
-endif
-endif
-
$(eval $(call gb_Library_use_internal_comprehensive_api,java_uno,\
udkapi \
))
diff --git a/bridges/inc/cppinterfaceproxy.hxx b/bridges/inc/cppinterfaceproxy.hxx
index 069e252..ccd8366 100644
--- a/bridges/inc/cppinterfaceproxy.hxx
+++ b/bridges/inc/cppinterfaceproxy.hxx
@@ -32,7 +32,7 @@ namespace com { namespace sun { namespace star { namespace uno {
class XInterface;
} } } }
-#if !defined __GNUG__ || defined __MINGW32__
+#if !defined __GNUG__
void dso_init();
void dso_exit();
#endif
diff --git a/bridges/source/cpp_uno/mingw_intel/call.s b/bridges/source/cpp_uno/mingw_intel/call.s
deleted file mode 100644
index 345efb8..0000000
--- a/bridges/source/cpp_uno/mingw_intel/call.s
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
- .text
-
-.globl _privateSnippetExecutorGeneral
-_privateSnippetExecutorGeneral:
-.LFBg:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIg0:
- movl %esp,%ebp
-.LCFIg1:
- 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 16(%esp),%eax # 32bit returnValue
- leave
- ret
-.LFEg:
- .long .-_privateSnippetExecutorGeneral
-
-.globl _privateSnippetExecutorVoid
-_privateSnippetExecutorVoid:
-.LFBv:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIv0:
- movl %esp,%ebp
-.LCFIv1:
- pushl $0 # 32bit null pointer (returnValue not used)
- pushl %ecx # 32bit pCallStack
- pushl %edx # 32bit nVtableOffset
- pushl %eax # 32bit nFunctionIndex
- call _cpp_vtable_call
- leave
- ret
-.LFEv:
- .long .-_privateSnippetExecutorVoid
-
-.globl _privateSnippetExecutorHyper
-_privateSnippetExecutorHyper:
-.LFBh:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIh0:
- movl %esp,%ebp
-.LCFIh1:
- 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 16(%esp),%eax # 64bit returnValue, lower half
- movl 20(%esp),%edx # 64bit returnValue, upper half
- leave
- ret
-.LFEh:
- .long .-_privateSnippetExecutorHyper
-
-.globl _privateSnippetExecutorFloat
-_privateSnippetExecutorFloat:
-.LFBf:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIf0:
- movl %esp,%ebp
-.LCFIf1:
- 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 16(%esp) # 32bit returnValue
- leave
- ret
-.LFEf:
- .long .-_privateSnippetExecutorFloat
-
-.globl _privateSnippetExecutorDouble
-_privateSnippetExecutorDouble:
-.LFBd:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFId0:
- movl %esp,%ebp
-.LCFId1:
- 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 16(%esp) # 64bit returnValue
- leave
- ret
-.LFEd:
- .long .-_privateSnippetExecutorDouble
-
-.globl _privateSnippetExecutorClass
-_privateSnippetExecutorClass:
-.LFBc:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIc0:
- movl %esp,%ebp
-.LCFIc1:
- 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 16(%esp),%eax # 32bit returnValue
- leave
- ret $4
-.LFEc:
- .long .-_privateSnippetExecutorClass
-
- .section .eh_frame,"dr"
-.Lframe1:
- .long .LECIE1-.LSCIE1 # length
-.LSCIE1:
- .long 0 # CIE_ID
- .byte 1 # version
- .string "zR" # augmentation
- .uleb128 1 # code_alignment_factor
- .sleb128 -4 # data_alignment_factor
- .byte 8 # return_address_register
- .uleb128 1 # augmentation size 1:
- .byte 0x1B # FDE Encoding (pcrel sdata4)
- # initial_instructions:
- .byte 0x0C # DW_CFA_def_cfa %esp, 4
- .uleb128 4
- .uleb128 4
- .byte 0x88 # DW_CFA_offset ret, 1
- .uleb128 1
- .align 4
-.LECIE1:
-.LSFDEg:
- .long .LEFDEg-.LASFDEg # length
-.LASFDEg:
- .long .LASFDEg-.Lframe1 # CIE_pointer
- .long .LFBg-. # initial_location
- .long .LFEg-.LFBg # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIg0-.LFBg
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIg1-.LCFIg0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEg:
-.LSFDEv:
- .long .LEFDEv-.LASFDEv # length
-.LASFDEv:
- .long .LASFDEv-.Lframe1 # CIE_pointer
- .long .LFBv-. # initial_location
- .long .LFEv-.LFBv # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIv0-.LFBv
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIv1-.LCFIv0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEv:
-.LSFDEh:
- .long .LEFDEh-.LASFDEh # length
-.LASFDEh:
- .long .LASFDEh-.Lframe1 # CIE_pointer
- .long .LFBh-. # initial_location
- .long .LFEh-.LFBh # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIh0-.LFBh
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIh1-.LCFIh0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEh:
-.LSFDEf:
- .long .LEFDEf-.LASFDEf # length
-.LASFDEf:
- .long .LASFDEf-.Lframe1 # CIE_pointer
- .long .LFBf-. # initial_location
- .long .LFEf-.LFBf # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIf0-.LFBf
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIf1-.LCFIf0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEf:
-.LSFDEd:
- .long .LEFDEd-.LASFDEd # length
-.LASFDEd:
- .long .LASFDEd-.Lframe1 # CIE_pointer
- .long .LFBd-. # initial_location
- .long .LFEd-.LFBd # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFId0-.LFBd
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFId1-.LCFId0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEd:
-.LSFDEc:
- .long .LEFDEc-.LASFDEc # length
-.LASFDEc:
- .long .LASFDEc-.Lframe1 # CIE_pointer
- .long .LFBc-. # initial_location
- .long .LFEc-.LFBc # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIc0-.LFBc
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIc1-.LCFIc0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEc:
diff --git a/bridges/source/cpp_uno/mingw_intel/callvirtualmethod.cxx b/bridges/source/cpp_uno/mingw_intel/callvirtualmethod.cxx
deleted file mode 100644
index 9b826bf..0000000
--- a/bridges/source/cpp_uno/mingw_intel/callvirtualmethod.cxx
+++ /dev/null
@@ -1,137 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include "sal/config.h"
-
-#include "cppu/macros.hxx"
-#include "sal/types.h"
-#include "typelib/typeclass.h"
-#include "typelib/typedescription.h"
-
-#include "callvirtualmethod.hxx"
-#include "share.hxx"
-#include "smallstruct.hxx"
-
-// For some reason, callVirtualMethod needs to be in a source file of its own,
-// so that stack unwinding upon a thrown exception from within the asm block
-// call works, at least with GCC 4.7.0 and --enable-dbgutil.
-
-// The call instruction within the asm section of callVirtualMethod may throw
-// exceptions. So that the compiler handles this correctly, it is important
-// that (a) callVirtualMethod might call dummy_can_throw_anything (although this
-// never happens at runtime), which in turn can throw exceptions, and (b)
-// callVirtualMethod is not inlined at its call site (so that any exceptions are
-// caught which are thrown from the instruction calling callVirtualMethod). [It
-// is unclear how much of this comment is still relevant -- see the above
-// comment.]
-void CPPU_CURRENT_NAMESPACE::callVirtualMethod(
- void * pAdjustedThisPtr, sal_Int32 nVtableIndex, void * pRegisterReturn,
- typelib_TypeDescription const * returnType, sal_Int32 * pStackLongs,
- sal_Int32 nStackLongs)
-{
- // parameter list is mixed list of * and values
- // reference parameters are pointers
-
- assert(pStackLongs && pAdjustedThisPtr);
- static_assert( (sizeof(void *) == 4) && (sizeof(sal_Int32) == 4), "### unexpected size of int!");
- assert(nStackLongs && pStackLongs && "### no stack in callVirtualMethod !");
-
- // never called
- if (! pAdjustedThisPtr) CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything("xxx"); // address something
-
- long edx, eax; // for register returns
- void * stackptr;
- asm volatile (
- "mov %%esp, %2\n\t"
- // copy values
- "mov %3, %%eax\n\t"
- "mov %%eax, %%edx\n\t"
- "dec %%edx\n\t"
- "shl $2, %%edx\n\t"
- "add %4, %%edx\n"
- "Lcopy:\n\t"
- "pushl 0(%%edx)\n\t"
- "sub $4, %%edx\n\t"
- "dec %%eax\n\t"
- "jne Lcopy\n\t"
- // do the actual call
- "mov %5, %%edx\n\t"
- "mov 0(%%edx), %%edx\n\t"
- "mov %6, %%eax\n\t"
- "shl $2, %%eax\n\t"
- "add %%eax, %%edx\n\t"
- "mov 0(%%edx), %%edx\n\t"
- "call *%%edx\n\t"
- // save return registers
- "mov %%eax, %0\n\t"
- "mov %%edx, %1\n\t"
- // cleanup stack
- "mov %2, %%esp\n\t"
- : "=m"(eax), "=m"(edx), "=m"(stackptr)
- : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr), "m"(nVtableIndex)
- : "eax", "ecx", "edx" );
- switch( returnType->eTypeClass )
- {
- case typelib_TypeClass_VOID:
- break;
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- ((long*)pRegisterReturn)[1] = edx;
- case typelib_TypeClass_LONG:
- case typelib_TypeClass_UNSIGNED_LONG:
- case typelib_TypeClass_CHAR:
- case typelib_TypeClass_ENUM:
- ((long*)pRegisterReturn)[0] = eax;
- break;
- case typelib_TypeClass_SHORT:
- case typelib_TypeClass_UNSIGNED_SHORT:
- *(unsigned short*)pRegisterReturn = eax;
- break;
- case typelib_TypeClass_BOOLEAN:
- case typelib_TypeClass_BYTE:
- *(unsigned char*)pRegisterReturn = eax;
- break;
- case typelib_TypeClass_FLOAT:
- asm ( "fstps %0" : : "m"(*(char *)pRegisterReturn) );
- break;
- case typelib_TypeClass_DOUBLE:
- asm ( "fstpl %0\n\t" : : "m"(*(char *)pRegisterReturn) );
- break;
- case typelib_TypeClass_STRUCT:
- if (bridges::cpp_uno::shared::isSmallStruct(returnType)) {
- if (returnType->nSize <= 1) {
- *(unsigned char*)pRegisterReturn = eax;
- }
- else if (returnType->nSize <= 2) {
- *(unsigned short*)pRegisterReturn = eax;
- }
- else if (returnType->nSize <= 8) {
- ((long*)pRegisterReturn)[0] = eax;
- if (returnType->nSize > 4) {
- ((long*)pRegisterReturn)[1] = edx;
- }
- }
- }
- break;
- default:
- break;
- }
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/mingw_intel/callvirtualmethod.hxx b/bridges/source/cpp_uno/mingw_intel/callvirtualmethod.hxx
deleted file mode 100644
index 76df8d9..0000000
--- a/bridges/source/cpp_uno/mingw_intel/callvirtualmethod.hxx
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_BRIDGES_SOURCE_CPP_UNO_MINGW_INTEL_CALLVIRTUALMETHOD_HXX
-#define INCLUDED_BRIDGES_SOURCE_CPP_UNO_MINGW_INTEL_CALLVIRTUALMETHOD_HXX
-
-#include "sal/config.h"
-
-#include "cppu/macros.hxx"
-#include "sal/types.h"
-#include "typelib/typedescription.h"
-
-namespace CPPU_CURRENT_NAMESPACE {
-
-void callVirtualMethod(
- void * pAdjustedThisPtr, sal_Int32 nVtableIndex, void * pRegisterReturn,
- typelib_TypeDescription const * returnType, sal_Int32 * pStackLongs,
- sal_Int32 nStackLongs);
-
-}
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/mingw_intel/cpp2uno.cxx b/bridges/source/cpp_uno/mingw_intel/cpp2uno.cxx
deleted file mode 100644
index 33d5590..0000000
--- a/bridges/source/cpp_uno/mingw_intel/cpp2uno.cxx
+++ /dev/null
@@ -1,507 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <uno/data.h>
-#include <typelib/typedescription.hxx>
-#include <sal/alloca.h>
-#include <sal/log.hxx>
-
-#include "bridge.hxx"
-#include "cppinterfaceproxy.hxx"
-#include "types.hxx"
-#include "vtablefactory.hxx"
-
-#include "share.hxx"
-#include "smallstruct.hxx"
-
-using namespace ::com::sun::star::uno;
-
-namespace
-{
-
-void cpp2uno_call(
- bridges::cpp_uno::shared::CppInterfaceProxy * pThis,
- const typelib_TypeDescription * pMemberTypeDescr,
- typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return
- sal_Int32 nParams, typelib_MethodParameter * pParams,
- void ** pCallStack,
- void * pReturnValue )
-{
- // pCallStack: ret, [return ptr], this, params
- char * pCppStack = (char *)(pCallStack +1);
-
- // return
- typelib_TypeDescription * pReturnTypeDescr = 0;
- if (pReturnTypeRef)
- TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
-
- void * pUnoReturn = 0;
- void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need
-
- if (pReturnTypeDescr)
- {
- if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr ))
- {
- pUnoReturn = pReturnValue; // direct way for simple types
- }
- else // complex return via ptr (pCppReturn)
- {
- if (!bridges::cpp_uno::shared::isSmallStruct(pReturnTypeDescr)) {
- pCppReturn = *(void **)pCppStack;
- pCppStack += sizeof(void *);
- }
- else {
- pCppReturn = pReturnValue;
- }
-
- pUnoReturn = (bridges::cpp_uno::shared::relatesToInterfaceType(
- pReturnTypeDescr )
- ? alloca( pReturnTypeDescr->nSize )
- : pCppReturn); // direct way
- }
- }
- // pop this
- pCppStack += sizeof( void* );
-
- // stack space
- static_assert(sizeof(void *) == sizeof(sal_Int32), "### unexpected size!");
- // parameters
- void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams );
- void ** pCppArgs = pUnoArgs + nParams;
- // indices of values this have to be converted (interface conversion cpp<=>uno)
- sal_Int32 * pTempIndices = (sal_Int32 *)(pUnoArgs + (2 * nParams));
- // type descriptions for reconversions
- typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams));
-
- sal_Int32 nTempIndices = 0;
-
- for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos )
- {
- const typelib_MethodParameter & rParam = pParams[nPos];
- typelib_TypeDescription * pParamTypeDescr = 0;
- TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
-
- if (!rParam.bOut
- && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
- // value
- {
- pCppArgs[nPos] = pCppStack;
- pUnoArgs[nPos] = pCppStack;
- switch (pParamTypeDescr->eTypeClass)
- {
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- case typelib_TypeClass_DOUBLE:
- pCppStack += sizeof(sal_Int32); // extra long
- break;
- default:
- break;
- }
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- else // ptr to complex value | ref
- {
- pCppArgs[nPos] = *(void **)pCppStack;
-
- if (! rParam.bIn) // is pure out
- {
- // uno out is unconstructed mem!
- pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize );
- pTempIndices[nTempIndices] = nPos;
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr;
- }
- // is in/inout
- else if (bridges::cpp_uno::shared::relatesToInterfaceType(
- pParamTypeDescr ))
- {
- uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ),
- *(void **)pCppStack, pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- pTempIndices[nTempIndices] = nPos; // has to be reconverted
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr;
- }
- else // direct way
- {
- pUnoArgs[nPos] = *(void **)pCppStack;
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- }
- pCppStack += sizeof(sal_Int32); // standard parameter length
- }
-
- // ExceptionHolder
- uno_Any aUnoExc; // Any will be constructed by callee
- uno_Any * pUnoExc = &aUnoExc;
-
- // invoke uno dispatch call
- (*pThis->getUnoI()->pDispatcher)(
- pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc );
-
- // in case an exception occurred...
- if (pUnoExc)
- {
- // destruct temporary in/inout params
- for ( ; nTempIndices--; )
- {
- sal_Int32 nIndex = pTempIndices[nTempIndices];
-
- if (pParams[nIndex].bIn) // is in/inout => was constructed
- uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndices], 0 );
- TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndices] );
- }
- if (pReturnTypeDescr)
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
-
- CPPU_CURRENT_NAMESPACE::raiseException(
- &aUnoExc, pThis->getBridge()->getUno2Cpp() );
- // has to destruct the any
- }
- else // else no exception occurred...
- {
- // temporary params
- for ( ; nTempIndices--; )
- {
- sal_Int32 nIndex = pTempIndices[nTempIndices];
- typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndices];
-
- if (pParams[nIndex].bOut) // inout/out
- {
- // convert and assign
- uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release );
- uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
- }
- // destroy temp uno param
- uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 );
-
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- // return
- if (pCppReturn) // has complex return
- {
- if (pUnoReturn != pCppReturn) // needs reconversion
- {
- uno_copyAndConvertData( pCppReturn, pUnoReturn, pReturnTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
- // destroy temp uno return
- uno_destructData( pUnoReturn, pReturnTypeDescr, 0 );
- }
- if (pReturnValue != pCppReturn)
- // complex return ptr is set to eax
- *static_cast< void ** >(pReturnValue) = pCppReturn;
- }
- if (pReturnTypeDescr)
- {
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
- }
- }
-}
-
-
-extern "C" void cpp_vtable_call(
- int nFunctionIndex, int nVtableOffset, void** pCallStack,
- void * pReturnValue )
-{
- static_assert(sizeof(sal_Int32)==sizeof(void *), "### unexpected!");
-
- // pCallStack: ret adr, [ret *], this, params
- void * pThis;
- if( nFunctionIndex & 0x80000000 )
- {
- nFunctionIndex &= 0x7fffffff;
- pThis = pCallStack[2];
- }
- else
- {
- pThis = pCallStack[1];
- }
- pThis = static_cast< char * >(pThis) - nVtableOffset;
- bridges::cpp_uno::shared::CppInterfaceProxy * pCppI
- = bridges::cpp_uno::shared::CppInterfaceProxy::castInterfaceToProxy(
- pThis);
-
- typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr();
-
- if (nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex)
- {
- SAL_WARN(
- "bridges",
- "illegal " << OUString::unacquired(&pTypeDescr->aBase.pTypeName)
- << " vtable index " << nFunctionIndex << "/"
- << pTypeDescr->nMapFunctionIndexToMemberIndex);
- throw RuntimeException(
- ("illegal " + OUString::unacquired(&pTypeDescr->aBase.pTypeName)
- + " vtable index " + OUString::number(nFunctionIndex) + "/"
- + OUString::number(pTypeDescr->nMapFunctionIndexToMemberIndex)),
- (XInterface *)pThis);
- }
-
- // determine called method
- sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex];
- assert(nMemberPos < pTypeDescr->nAllMembers);
-
- TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] );
-
- switch (aMemberDescr.get()->eTypeClass)
- {
- case typelib_TypeClass_INTERFACE_ATTRIBUTE:
- {
- if (pTypeDescr->pMapMemberIndexToFunctionIndex[nMemberPos] == nFunctionIndex)
- {
- // is GET method
- cpp2uno_call(
- pCppI, aMemberDescr.get(),
- ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef,
- 0, 0, // no params
- pCallStack, pReturnValue );
- }
- else
- {
- // is SET method
- typelib_MethodParameter aParam;
- aParam.pTypeRef =
- ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef;
- aParam.bIn = sal_True;
- aParam.bOut = sal_False;
-
- cpp2uno_call(
- pCppI, aMemberDescr.get(),
- 0, // indicates void return
- 1, &aParam,
- pCallStack, pReturnValue );
- }
- break;
- }
- case typelib_TypeClass_INTERFACE_METHOD:
- {
- // is METHOD
- switch (nFunctionIndex)
- {
- case 1: // acquire()
- pCppI->acquireProxy(); // non virtual call!
- break;
- case 2: // release()
- pCppI->releaseProxy(); // non virtual call!
- break;
- case 0: // queryInterface() opt
- {
- typelib_TypeDescription * pTD = 0;
- TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pCallStack[3] )->getTypeLibType() );
- if (pTD)
- {
- XInterface * pInterface = 0;
- (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface)(
- pCppI->getBridge()->getCppEnv(),
- (void **)&pInterface, pCppI->getOid().pData,
- (typelib_InterfaceTypeDescription *)pTD );
-
- if (pInterface)
- {
- ::uno_any_construct(
- reinterpret_cast< uno_Any * >( pCallStack[1] ),
- &pInterface, pTD, cpp_acquire );
- pInterface->release();
- TYPELIB_DANGER_RELEASE( pTD );
- *static_cast< void ** >(pReturnValue) = pCallStack[1];
- break;
- }
- TYPELIB_DANGER_RELEASE( pTD );
- }
- } // else perform queryInterface()
- default:
- cpp2uno_call(
- pCppI, aMemberDescr.get(),
- ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pReturnTypeRef,
- ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->nParams,
- ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pParams,
- pCallStack, pReturnValue );
- }
- break;
- }
- default:
- {
- throw RuntimeException( "no member description found!", (XInterface *)pThis );
- }
- }
-}
-
-extern "C" typedef void (*PrivateSnippetExecutor)();
-
-int const codeSnippetSize = 16;
-
-unsigned char * codeSnippet(
- unsigned char * code, sal_Int32 functionIndex, sal_Int32 vtableOffset,
- typelib_TypeDescriptionReference * returnType)
-{
- typelib_TypeDescription * returnTypeDescr = 0;
- if (returnType)
- TYPELIB_DANGER_GET( &returnTypeDescr, returnType );
-
- typelib_TypeClass returnTypeClass = returnType ? returnType->eTypeClass : typelib_TypeClass_VOID;
- if (!bridges::cpp_uno::shared::isSimpleType(returnTypeClass) &&
- !bridges::cpp_uno::shared::isSmallStruct(returnTypeDescr)) {
- functionIndex |= 0x80000000;
- }
- PrivateSnippetExecutor exec = privateSnippetExecutorGeneral;
- switch (returnTypeClass) {
- case typelib_TypeClass_VOID:
- exec = privateSnippetExecutorVoid;
- break;
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- exec = privateSnippetExecutorHyper;
- break;
- case typelib_TypeClass_FLOAT:
- exec = privateSnippetExecutorFloat;
- break;
- case typelib_TypeClass_DOUBLE:
- exec = privateSnippetExecutorDouble;
- break;
- case typelib_TypeClass_STRUCT:
- if (bridges::cpp_uno::shared::isSmallStruct(returnTypeDescr)) {
- if (returnType->pType->nSize <= 4) {
- exec = privateSnippetExecutorGeneral;
- }
- else if (returnType->pType->nSize <= 8) {
- exec = privateSnippetExecutorHyper;
- }
- }
- else {
- exec = privateSnippetExecutorClass;
- }
- break;
- case typelib_TypeClass_STRING:
- case typelib_TypeClass_TYPE:
- case typelib_TypeClass_ANY:
- case typelib_TypeClass_SEQUENCE:
- case typelib_TypeClass_INTERFACE:
- exec = privateSnippetExecutorClass;
- break;
- default:
- exec = privateSnippetExecutorGeneral;
- break;
- }
- if (returnType)
- TYPELIB_DANGER_RELEASE( returnTypeDescr );
- unsigned char * p = code;
- static_assert(sizeof (sal_Int32) == 4, "boo");
- // mov function_index, %eax:
- *p++ = 0xB8;
- *reinterpret_cast< sal_Int32 * >(p) = functionIndex;
- p += sizeof (sal_Int32);
- // mov vtable_offset, %edx:
- *p++ = 0xBA;
- *reinterpret_cast< sal_Int32 * >(p) = vtableOffset;
- p += sizeof (sal_Int32);
- // jmp privateSnippetExecutor:
- *p++ = 0xE9;
- *reinterpret_cast< sal_Int32 * >(p)
- = ((unsigned char *) exec) - p - sizeof (sal_Int32);
- p += sizeof (sal_Int32);
- assert(p - code <= codeSnippetSize);
- return code + codeSnippetSize;
-}
-
-}
-
-struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; };
-
-bridges::cpp_uno::shared::VtableFactory::Slot *
-bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block)
-{
- return static_cast< Slot * >(block) + 2;
-}
-
-std::size_t bridges::cpp_uno::shared::VtableFactory::getBlockSize(
- sal_Int32 slotCount)
-{
- return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize;
-}
-
-bridges::cpp_uno::shared::VtableFactory::Slot *
-bridges::cpp_uno::shared::VtableFactory::initializeBlock(
- void * block, sal_Int32 slotCount, sal_Int32,
- typelib_InterfaceTypeDescription *)
-{
- Slot * slots = mapBlockToVtable(block);
- slots[-2].fn = 0;
- slots[-1].fn = 0;
- return slots + slotCount;
-}
-
-unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
- Slot ** slots, unsigned char * code,
- typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset,
- sal_Int32 functionCount, sal_Int32 vtableOffset)
-{
- (*slots) -= functionCount;
- Slot * s = *slots;
- for (sal_Int32 i = 0; i < type->nMembers; ++i) {
- typelib_TypeDescription * member = 0;
- TYPELIB_DANGER_GET(&member, type->ppMembers[i]);
- assert(member != 0);
- switch (member->eTypeClass) {
- case typelib_TypeClass_INTERFACE_ATTRIBUTE:
- // Getter:
- (s++)->fn = code;
- code = codeSnippet(
- code, functionOffset++, vtableOffset,
- reinterpret_cast< typelib_InterfaceAttributeTypeDescription * >(
- member)->pAttributeTypeRef);
- // Setter:
- if (!reinterpret_cast<
- typelib_InterfaceAttributeTypeDescription * >(
- member)->bReadOnly)
- {
- (s++)->fn = code;
- code = codeSnippet(
- code, functionOffset++, vtableOffset,
- NULL);
- }
- break;
-
- case typelib_TypeClass_INTERFACE_METHOD:
- (s++)->fn = code;
- code = codeSnippet(
- code, functionOffset++, vtableOffset,
- reinterpret_cast< typelib_InterfaceMethodTypeDescription * >(
- member)->pReturnTypeRef);
- break;
-
- default:
- assert(false);
- break;
- }
- TYPELIB_DANGER_RELEASE(member);
- }
- return code;
-}
-
-void bridges::cpp_uno::shared::VtableFactory::flushCode(
- unsigned char const *, unsigned char const *)
-{}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/mingw_intel/dllinit.cxx b/bridges/source/cpp_uno/mingw_intel/dllinit.cxx
deleted file mode 100644
index 5b9bb38..0000000
--- a/bridges/source/cpp_uno/mingw_intel/dllinit.cxx
+++ /dev/null
@@ -1,45 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include <windows.h>
-
-
-void dso_init();
-void dso_exit();
-
-
-extern "C" BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpvReserved)
-{
- switch(dwReason) {
- case DLL_PROCESS_ATTACH:
- DisableThreadLibraryCalls(hModule);
-
- dso_init();
- break;
-
- case DLL_PROCESS_DETACH:
- if (!lpvReserved)
- dso_exit();
- break;
- }
-
- return TRUE;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/mingw_intel/except.cxx b/bridges/source/cpp_uno/mingw_intel/except.cxx
deleted file mode 100644
index 2798122..0000000
--- a/bridges/source/cpp_uno/mingw_intel/except.cxx
+++ /dev/null
@@ -1,293 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-
-#include <stdio.h>
-#include <string.h>
-
-#include <cxxabi.h>
-#ifndef _GLIBCXX_CDTOR_CALLABI // new in GCC 4.7 cxxabi.h
-#define _GLIBCXX_CDTOR_CALLABI
-#endif
-
-#include <rtl/strbuf.hxx>
-#include <rtl/ustrbuf.hxx>
-#include <sal/log.hxx>
-#include <osl/mutex.hxx>
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <typelib/typedescription.hxx>
-#include <uno/any2.h>
-#include <unordered_map>
-#include "share.hxx"
-
-
-using namespace ::std;
-using namespace ::osl;
-using namespace ::com::sun::star::uno;
-using namespace ::__cxxabiv1;
-
-
-namespace CPPU_CURRENT_NAMESPACE
-{
-
-void dummy_can_throw_anything( char const * )
-{
-}
-
-static OUString toUNOname( char const * p )
-{
-#if OSL_DEBUG_LEVEL > 1
- char const * start = p;
-#endif
-
- // example: N3com3sun4star4lang24IllegalArgumentExceptionE
-
- OUStringBuffer buf( 64 );
- assert( 'N' == *p );
- ++p; // skip N
-
- while ('E' != *p)
- {
- // read chars count
- long n = (*p++ - '0');
- while ('0' <= *p && '9' >= *p)
- {
- n *= 10;
- n += (*p++ - '0');
- }
- buf.appendAscii( p, n );
- p += n;
- if ('E' != *p)
- buf.append( '.' );
- }
-
-#if OSL_DEBUG_LEVEL > 1
- OUString ret( buf.makeStringAndClear() );
- OString c_ret( OUStringToOString( ret, RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> toUNOname(): %s => %s\n", start, c_ret.getStr() );
- return ret;
-#else
- return buf.makeStringAndClear();
-#endif
-}
-
-class RTTI
-{
- typedef std::unordered_map< OUString, type_info *, OUStringHash > t_rtti_map;
-
- Mutex m_mutex;
- t_rtti_map m_rttis;
- t_rtti_map m_generatedRttis;
-
-public:
- RTTI();
- ~RTTI();
-
- type_info * getRTTI( typelib_CompoundTypeDescription * );
-};
-
-RTTI::RTTI()
-{
-}
-
-RTTI::~RTTI()
-{
-}
-
-
-type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr )
-{
- type_info * rtti;
-
- OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName;
-
- MutexGuard guard( m_mutex );
- t_rtti_map::const_iterator iRttiFind( m_rttis.find( unoName ) );
- if (iRttiFind == m_rttis.end())
- {
- // RTTI symbol
- OStringBuffer buf( 64 );
- buf.append( "__ZTIN" );
- sal_Int32 index = 0;
- do
- {
- OUString token( unoName.getToken( 0, '.', index ) );
- buf.append( token.getLength() );
- OString c_token( OUStringToOString( token, RTL_TEXTENCODING_ASCII_US ) );
- buf.append( c_token );
- }
- while (index >= 0);
- buf.append( 'E' );
-
- OString symName( buf.makeStringAndClear() );
- // try to lookup the symbol in the generated rtti map
- t_rtti_map::const_iterator iFind( m_generatedRttis.find( unoName ) );
- if (iFind == m_generatedRttis.end())
- {
- // we must generate it !
- // symbol and rtti-name is nearly identical,
- // the symbol is prefixed with __ZTI
- char const * rttiName = symName.getStr() +5;
-#if OSL_DEBUG_LEVEL > 1
- fprintf( stderr,"generated rtti for %s\n", rttiName );
-#endif
- if (pTypeDescr->pBaseTypeDescription)
- {
- // ensure availability of base
- type_info * base_rtti = getRTTI(
- (typelib_CompoundTypeDescription *)pTypeDescr->pBaseTypeDescription );
- rtti = new __si_class_type_info(
- strdup( rttiName ), (__class_type_info *)base_rtti );
- }
- else
- {
- // this class has no base class
- rtti = new __class_type_info( strdup( rttiName ) );
- }
-
- pair< t_rtti_map::iterator, bool > insertion(
- m_generatedRttis.insert( t_rtti_map::value_type( unoName, rtti ) ) );
- assert(insertion.second && "### inserting new generated rtti failed?!");
- }
- else // taking already generated rtti
- {
- rtti = iFind->second;
- }
- }
- else
- {
- rtti = iRttiFind->second;
- }
-
- return rtti;
-}
-
-
-extern "C" {
-static void _GLIBCXX_CDTOR_CALLABI deleteException( void * pExc )
-{
- __cxa_exception const * header = ((__cxa_exception const *)pExc - 1);
- typelib_TypeDescription * pTD = 0;
- OUString unoName( toUNOname( header->exceptionType->name() ) );
- ::typelib_typedescription_getByName( &pTD, unoName.pData );
- assert(pTD && "### unknown exception type! leaving out destruction => leaking!!!");
- if (pTD)
- {
- ::uno_destructData( pExc, pTD, cpp_release );
- ::typelib_typedescription_release( pTD );
- }
-}
-}
-
-void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp )
-{
-#if OSL_DEBUG_LEVEL > 1
- OString cstr(
- OUStringToOString(
- OUString::unacquired( &pUnoExc->pType->pTypeName ),
- RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> uno exception occurred: %s\n", cstr.getStr() );
-#endif
- void * pCppExc;
- type_info * rtti;
-
- {
- // construct cpp exception object
- typelib_TypeDescription * pTypeDescr = 0;
- TYPELIB_DANGER_GET( &pTypeDescr, pUnoExc->pType );
- assert(pTypeDescr);
- if (! pTypeDescr)
- {
- throw RuntimeException(
- OUString("cannot get typedescription for type ") +
- OUString::unacquired( &pUnoExc->pType->pTypeName ) );
- }
-
- pCppExc = __cxa_allocate_exception( pTypeDescr->nSize );
- ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp );
-
- // destruct uno exception
- ::uno_any_destruct( pUnoExc, 0 );
- // avoiding locked counts
- static RTTI * s_rtti = 0;
- if (! s_rtti)
- {
- MutexGuard guard( Mutex::getGlobalMutex() );
- if (! s_rtti)
- {
-#ifdef LEAK_STATIC_DATA
- s_rtti = new RTTI();
-#else
- static RTTI rtti_data;
- s_rtti = &rtti_data;
-#endif
- }
- }
- rtti = (type_info *)s_rtti->getRTTI( (typelib_CompoundTypeDescription *) pTypeDescr );
- TYPELIB_DANGER_RELEASE( pTypeDescr );
- assert(rtti && "### no rtti for throwing exception!");
- if (! rtti)
- {
- throw RuntimeException(
- OUString("no rtti for type ") +
- OUString::unacquired( &pUnoExc->pType->pTypeName ) );
- }
- }
-
- __cxa_throw( pCppExc, rtti, deleteException );
-}
-
-void fillUnoException( __cxa_exception * header, uno_Any * pUnoExc, uno_Mapping * pCpp2Uno )
-{
- if (! header)
- {
- RuntimeException aRE( "no exception header!" );
- Type const & rType = cppu::UnoType<decltype(aRE)>::get();
- uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno );
- SAL_WARN("bridges", aRE.Message);
- return;
- }
-
- typelib_TypeDescription * pExcTypeDescr = 0;
- OUString unoName( toUNOname( header->exceptionType->name() ) );
-#if OSL_DEBUG_LEVEL > 1
- OString cstr_unoName( OUStringToOString( unoName, RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> c++ exception occurred: %s\n", cstr_unoName.getStr() );
-#endif
- typelib_typedescription_getByName( &pExcTypeDescr, unoName.pData );
- if (0 == pExcTypeDescr)
- {
- RuntimeException aRE( OUString("exception type not found: ") + unoName );
- Type const & rType = cppu::UnoType<decltype(aRE)>::get();
- uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno );
- SAL_WARN("bridges", aRE.Message);
- }
- else
- {
- // construct uno exception any
- uno_any_constructAndConvert( pUnoExc, header->adjustedPtr, pExcTypeDescr, pCpp2Uno );
- typelib_typedescription_release( pExcTypeDescr );
- }
-}
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/mingw_intel/share.hxx b/bridges/source/cpp_uno/mingw_intel/share.hxx
deleted file mode 100644
index 0ce7423..0000000
--- a/bridges/source/cpp_uno/mingw_intel/share.hxx
+++ /dev/null
@@ -1,95 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-#ifndef INCLUDED_BRIDGES_SOURCE_CPP_UNO_MINGW_INTEL_SHARE_HXX
-#define INCLUDED_BRIDGES_SOURCE_CPP_UNO_MINGW_INTEL_SHARE_HXX
-
-#include "uno/mapping.h"
-
-#include <typeinfo>
-#include <exception>
-#include <cstddef>
-
-#include "cppu/macros.hxx"
-#include "uno/any2.h"
-
-namespace CPPU_CURRENT_NAMESPACE
-{
-
-void dummy_can_throw_anything( char const * );
-
-// ----- following decl from libstdc++-v3/libsupc++/unwind-cxx.h and unwind.h
-
-struct _Unwind_Exception
-{
- unsigned exception_class __attribute__((__mode__(__DI__)));
- void * exception_cleanup;
- unsigned private_1 __attribute__((__mode__(__word__)));
- unsigned private_2 __attribute__((__mode__(__word__)));
-} __attribute__((__aligned__));
-
-struct __cxa_exception
-{
- ::std::type_info *exceptionType;
- void (*exceptionDestructor)(void *);
-
- ::std::unexpected_handler unexpectedHandler;
- ::std::terminate_handler terminateHandler;
-
- __cxa_exception *nextException;
-
- int handlerCount;
-
- int handlerSwitchValue;
- const unsigned char *actionRecord;
- const unsigned char *languageSpecificData;
- void *catchTemp;
- void *adjustedPtr;
-
- _Unwind_Exception unwindHeader;
-};
-
-struct __cxa_eh_globals
-{
- __cxa_exception *caughtExceptions;
- unsigned int uncaughtExceptions;
-};
-
-}
-
-extern "C" void privateSnippetExecutorGeneral();
-extern "C" void privateSnippetExecutorVoid();
-extern "C" void privateSnippetExecutorHyper();
-extern "C" void privateSnippetExecutorFloat();
-extern "C" void privateSnippetExecutorDouble();
-extern "C" void privateSnippetExecutorClass();
-
-extern "C" CPPU_CURRENT_NAMESPACE::__cxa_eh_globals *__cxa_get_globals () throw();
-
-namespace CPPU_CURRENT_NAMESPACE
-{
-
-void raiseException(
- uno_Any * pUnoExc, uno_Mapping * pUno2Cpp );
-
-void fillUnoException(
- __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno );
-}
-
-#endif
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/mingw_intel/smallstruct.cxx b/bridges/source/cpp_uno/mingw_intel/smallstruct.cxx
deleted file mode 100644
index 58c0338..0000000
--- a/bridges/source/cpp_uno/mingw_intel/smallstruct.cxx
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-
-#include "types.hxx"
-
-#include "typelib/typeclass.h"
-#include "typelib/typedescription.h"
-
-namespace bridges { namespace cpp_uno { namespace shared {
-
-namespace {
-bool isSimpleStruct(typelib_TypeDescription const * type) {
- switch (type->eTypeClass) {
- case typelib_TypeClass_STRUCT:
- {
- typelib_CompoundTypeDescription const * p
- = reinterpret_cast< typelib_CompoundTypeDescription const * >(
- type);
- for (sal_Int32 i = 0; i < p->nMembers; ++i) {
- switch (p->ppTypeRefs[i]->eTypeClass) {
- case typelib_TypeClass_STRUCT:
- {
- typelib_TypeDescription * t = 0;
- TYPELIB_DANGER_GET(&t, p->ppTypeRefs[i]);
- bool b = isSimpleStruct(t);
- TYPELIB_DANGER_RELEASE(t);
- if (!b) {
- return false;
- }
- }
- break;
-
- default:
- if (!isSimpleType(p->ppTypeRefs[i]->eTypeClass))
- return false;
- break;
- }
- }
- }
- return true;
-
- default:
- return false;
- }
-}
-}
-
-bool isSmallStruct(typelib_TypeDescription const * type) {
- return (type->nSize <= 8 && isSimpleStruct(type));
-}
-
-} } }
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/mingw_intel/smallstruct.hxx b/bridges/source/cpp_uno/mingw_intel/smallstruct.hxx
deleted file mode 100644
index 0ee4079..0000000
--- a/bridges/source/cpp_uno/mingw_intel/smallstruct.hxx
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-#ifndef INCLUDED_BRIDGES_SOURCE_CPP_UNO_MINGW_INTEL_SMALLSTRUCT_HXX
-#define INCLUDED_BRIDGES_SOURCE_CPP_UNO_MINGW_INTEL_SMALLSTRUCT_HXX
-
-#include "typelib/typeclass.h"
-#include "typelib/typedescription.h"
-
-namespace bridges { namespace cpp_uno { namespace shared {
-
-bool isSmallStruct(typelib_TypeDescription const * type);
-
-} } }
-
-#endif
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/mingw_intel/uno2cpp.cxx b/bridges/source/cpp_uno/mingw_intel/uno2cpp.cxx
deleted file mode 100644
index 5353da3..0000000
--- a/bridges/source/cpp_uno/mingw_intel/uno2cpp.cxx
+++ /dev/null
@@ -1,378 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <uno/data.h>
-#include <sal/alloca.h>
-
-#include "bridge.hxx"
-#include "types.hxx"
-#include "unointerfaceproxy.hxx"
-#include "vtables.hxx"
-
-#include "callvirtualmethod.hxx"
-#include "share.hxx"
-#include "smallstruct.hxx"
-
-using namespace ::com::sun::star::uno;
-
-namespace
-{
-
-static void cpp_call(
- bridges::cpp_uno::shared::UnoInterfaceProxy * pThis,
- bridges::cpp_uno::shared::VtableSlot aVtableSlot,
- typelib_TypeDescriptionReference * pReturnTypeRef,
- sal_Int32 nParams, typelib_MethodParameter * pParams,
- void * pUnoReturn, void * pUnoArgs[], uno_Any ** ppUnoExc )
-{
- // max space for: [complex ret ptr], values|ptr ...
- char * pCppStack =
-#ifdef BROKEN_ALLOCA
- (char *)malloc( sizeof(sal_Int32) + ((nParams+2) * sizeof(sal_Int64)) );
-#else
- (char *)alloca( sizeof(sal_Int32) + ((nParams+2) * sizeof(sal_Int64)) );
-#endif
- char * pCppStackStart = pCppStack;
-
- // return
- typelib_TypeDescription * pReturnTypeDescr = 0;
- TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
- assert(pReturnTypeDescr);
-
- void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion
-
- if (pReturnTypeDescr)
- {
- if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr ))
- {
- pCppReturn = pUnoReturn; // direct way for simple types
- }
- else
- {
- // complex return via ptr
- pCppReturn
- = (bridges::cpp_uno::shared::relatesToInterfaceType(
- pReturnTypeDescr )
-#ifdef BROKEN_ALLOCA
- ? malloc( pReturnTypeDescr->nSize )
-#else
- ? alloca( pReturnTypeDescr->nSize )
-#endif
- : pUnoReturn); // direct way
- if (!bridges::cpp_uno::shared::isSmallStruct(pReturnTypeDescr)) {
- *(void **)pCppStack = pCppReturn;
- pCppStack += sizeof(void *);
- }
- }
- }
- // push this
- void * pAdjustedThisPtr = reinterpret_cast< void ** >(pThis->getCppI())
- + aVtableSlot.offset;
- *(void**)pCppStack = pAdjustedThisPtr;
- pCppStack += sizeof( void* );
-
- // stack space
- static_assert(sizeof(void *) == sizeof(sal_Int32), "### unexpected size!");
- // args
-#ifdef BROKEN_ALLOCA
- void ** pCppArgs = (void **)malloc( 3 * sizeof(void *) * nParams );
-#else
- void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams );
-#endif
- // indices of values this have to be converted (interface conversion cpp<=>uno)
- sal_Int32 * pTempIndices = (sal_Int32 *)(pCppArgs + nParams);
- // type descriptions for reconversions
- typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams));
-
- sal_Int32 nTempIndices = 0;
-
- for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos )
- {
- const typelib_MethodParameter & rParam = pParams[nPos];
- typelib_TypeDescription * pParamTypeDescr = 0;
- TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
-
- if (!rParam.bOut
- && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
- {
- uno_copyAndConvertData( pCppArgs[nPos] = pCppStack, pUnoArgs[nPos], pParamTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
-
- switch (pParamTypeDescr->eTypeClass)
- {
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- case typelib_TypeClass_DOUBLE:
- pCppStack += sizeof(sal_Int32); // extra long
- break;
- default:
- break;
- }
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- else // ptr to complex value | ref
- {
- if (! rParam.bIn) // is pure out
- {
- // cpp out is constructed mem, uno out is not!
- uno_constructData(
-#ifdef BROKEN_ALLOCA
- *(void **)pCppStack = pCppArgs[nPos] = malloc( pParamTypeDescr->nSize ),
-#else
- *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
-#endif
- pParamTypeDescr );
- pTempIndices[nTempIndices] = nPos; // default constructed for cpp call
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr;
- }
- // is in/inout
- else if (bridges::cpp_uno::shared::relatesToInterfaceType(
- pParamTypeDescr ))
- {
- uno_copyAndConvertData(
-#ifdef BROKEN_ALLOCA
- *(void **)pCppStack = pCppArgs[nPos] = malloc( pParamTypeDescr->nSize ),
-#else
- *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
-#endif
- pUnoArgs[nPos], pParamTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
-
- pTempIndices[nTempIndices] = nPos; // has to be reconverted
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr;
- }
- else // direct way
- {
- *(void **)pCppStack = pCppArgs[nPos] = pUnoArgs[nPos];
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- }
- pCppStack += sizeof(sal_Int32); // standard parameter length
- }
-
- try
- {
- assert( !( (pCppStack - pCppStackStart ) & 3) && "UNALIGNED STACK !!! (Please DO panic)" );
- CPPU_CURRENT_NAMESPACE::callVirtualMethod(
- pAdjustedThisPtr, aVtableSlot.index,
- pCppReturn, pReturnTypeDescr,
- (sal_Int32 *)pCppStackStart, (pCppStack - pCppStackStart) / sizeof(sal_Int32) );
- // NO exception occurred...
- *ppUnoExc = 0;
-
- // reconvert temporary params
- for ( ; nTempIndices--; )
- {
- sal_Int32 nIndex = pTempIndices[nTempIndices];
- typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndices];
-
- if (pParams[nIndex].bIn)
- {
- if (pParams[nIndex].bOut) // inout
- {
- uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); // destroy uno value
- uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- }
- }
- else // pure out
- {
- uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- }
- // destroy temp cpp param => cpp: every param was constructed
- uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release );
-#ifdef BROKEN_ALLOCA
- free( pCppArgs[nIndex] );
-#endif
-
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- // return value
- if (pCppReturn && pUnoReturn != pCppReturn)
- {
- uno_copyAndConvertData( pUnoReturn, pCppReturn, pReturnTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- uno_destructData( pCppReturn, pReturnTypeDescr, cpp_release );
- }
- }
- catch (...)
- {
- // fill uno exception
- fillUnoException( __cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() );
-
- // temporary params
- for ( ; nTempIndices--; )
- {
- sal_Int32 nIndex = pTempIndices[nTempIndices];
- // destroy temp cpp param => cpp: every param was constructed
- uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndices], cpp_release );
- TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndices] );
-#ifdef BROKEN_ALLOCA
- free( pCppArgs[nIndex] );
-#endif
- }
- // return type
- if (pReturnTypeDescr)
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
- }
- if (pCppReturn && pUnoReturn != pCppReturn)
- {
-#ifdef BROKEN_ALLOCA
- free( pCppReturn );
-#endif
- }
-#ifdef BROKEN_ALLOCA
- free( pCppStackStart );
-#endif
-}
-
-}
-
-namespace bridges { namespace cpp_uno { namespace shared {
-
-void unoInterfaceProxyDispatch(
- uno_Interface * pUnoI, const typelib_TypeDescription * pMemberDescr,
- void * pReturn, void * pArgs[], uno_Any ** ppException )
-{
- // is my surrogate
- bridges::cpp_uno::shared::UnoInterfaceProxy * pThis
- = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy * >(pUnoI);
-
- switch (pMemberDescr->eTypeClass)
- {
- case typelib_TypeClass_INTERFACE_ATTRIBUTE:
- {
- VtableSlot aVtableSlot(
- getVtableSlot(
- reinterpret_cast<
- typelib_InterfaceAttributeTypeDescription const * >(
- pMemberDescr)));
- if (pReturn)
- {
- // dependent dispatch
- cpp_call(
- pThis, aVtableSlot,
- ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef,
- 0, 0, // no params
- pReturn, pArgs, ppException );
- }
- else
- {
- // is SET
- typelib_MethodParameter aParam;
- aParam.pTypeRef =
- ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef;
- aParam.bIn = sal_True;
- aParam.bOut = sal_False;
-
- typelib_TypeDescriptionReference * pReturnTypeRef = 0;
- OUString aVoidName("void");
- typelib_typedescriptionreference_new(
- &pReturnTypeRef, typelib_TypeClass_VOID, aVoidName.pData );
-
- // dependent dispatch
- aVtableSlot.index += 1; // get, then set method
- cpp_call(
- pThis, aVtableSlot,
- pReturnTypeRef,
- 1, &aParam,
- pReturn, pArgs, ppException );
-
- typelib_typedescriptionreference_release( pReturnTypeRef );
- }
-
- break;
- }
- case typelib_TypeClass_INTERFACE_METHOD:
- {
- VtableSlot aVtableSlot(
- getVtableSlot(
- reinterpret_cast<
- typelib_InterfaceMethodTypeDescription const * >(
- pMemberDescr)));
- switch (aVtableSlot.index)
- {
- // standard calls
- case 1: // acquire uno interface
- (*pUnoI->acquire)( pUnoI );
- *ppException = 0;
- break;
- case 2: // release uno interface
- (*pUnoI->release)( pUnoI );
- *ppException = 0;
- break;
- case 0: // queryInterface() opt
- {
- typelib_TypeDescription * pTD = 0;
- TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pArgs[0] )->getTypeLibType() );
- if (pTD)
- {
- uno_Interface * pInterface = 0;
- (*pThis->pBridge->getUnoEnv()->getRegisteredInterface)(
- pThis->pBridge->getUnoEnv(),
- (void **)&pInterface, pThis->oid.pData, (typelib_InterfaceTypeDescription *)pTD );
-
- if (pInterface)
- {
- ::uno_any_construct(
- reinterpret_cast< uno_Any * >( pReturn ),
- &pInterface, pTD, 0 );
- (*pInterface->release)( pInterface );
- TYPELIB_DANGER_RELEASE( pTD );
- *ppException = 0;
- break;
- }
- TYPELIB_DANGER_RELEASE( pTD );
- }
- } // else perform queryInterface()
- default:
- // dependent dispatch
- cpp_call(
- pThis, aVtableSlot,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pReturnTypeRef,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->nParams,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pParams,
- pReturn, pArgs, ppException );
- }
- break;
- }
- default:
- {
- ::com::sun::star::uno::RuntimeException aExc(
- OUString("illegal member type description!"),
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >() );
-
- Type const & rExcType = cppu::UnoType<decltype(aExc)>::get();
- // binary identical null reference
- ::uno_type_any_construct( *ppException, &aExc, rExcType.getTypeLibType(), 0 );
- }
- }
-}
-
-} } }
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/mingw_x86-64/abi.cxx b/bridges/source/cpp_uno/mingw_x86-64/abi.cxx
deleted file mode 100644
index aaf657f..0000000
--- a/bridges/source/cpp_uno/mingw_x86-64/abi.cxx
+++ /dev/null
@@ -1,327 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-
-// This is an implementation of the x86-64 ABI as described in 'System V
-// Application Binary Interface, AMD64 Architecture Processor Supplement'
-// (http://www.x86-64.org/documentation/abi-0.95.pdf)
-//
-// The code in this file is a modification of src/x86/ffi64.c from libffi
-// (http://sources.redhat.com/libffi/) which is under the following license:
-
-/* -----------------------------------------------------------------------
- ffi.c - Copyright (c) 2002 Bo Thorsen <bo at suse.de>
-
- x86-64 Foreign Function Interface
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- ``Software''), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
- ----------------------------------------------------------------------- */
-
-#include "sal/config.h"
-
-#include "abi.hxx"
-
-#include <sal/log.hxx>
-
-using namespace x86_64;
-
-/* Register class used for passing given 64bit part of the argument.
- These represent classes as documented by the PS ABI, with the exception
- of SSESF, SSEDF classes, that are basically SSE class, just gcc will
- use SF or DFmode move instead of DImode to avoid reformating penalties.
-
- Similary we play games with INTEGERSI_CLASS to use cheaper SImode moves
- whenever possible (upper half does contain padding).
- */
-enum x86_64_reg_class
-{
- X86_64_NO_CLASS,
- X86_64_INTEGER_CLASS,
- X86_64_INTEGERSI_CLASS,
- X86_64_SSE_CLASS,
- X86_64_SSESF_CLASS,
- X86_64_SSEDF_CLASS,
- X86_64_SSEUP_CLASS,
- X86_64_X87_CLASS,
- X86_64_X87UP_CLASS,
- X86_64_MEMORY_CLASS
-};
-
-#define MAX_CLASSES 4
-
-/* x86-64 register passing implementation. See x86-64 ABI for details. Goal
- of this code is to classify each 8bytes of incoming argument by the register
- class and assign registers accordingly. */
-
-/* Return the union class of CLASS1 and CLASS2.
- See the x86-64 PS ABI for details. */
-
-static enum x86_64_reg_class
-merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2)
- throw ()
-{
- /* Rule #1: If both classes are equal, this is the resulting class. */
- if (class1 == class2)
- return class1;
-
- /* Rule #2: If one of the classes is NO_CLASS, the resulting class is
- the other class. */
- if (class1 == X86_64_NO_CLASS)
- return class2;
- if (class2 == X86_64_NO_CLASS)
- return class1;
-
- /* Rule #3: If one of the classes is MEMORY, the result is MEMORY. */
- if (class1 == X86_64_MEMORY_CLASS || class2 == X86_64_MEMORY_CLASS)
- return X86_64_MEMORY_CLASS;
-
- /* Rule #4: If one of the classes is INTEGER, the result is INTEGER. */
- if ((class1 == X86_64_INTEGERSI_CLASS && class2 == X86_64_SSESF_CLASS)
- || (class2 == X86_64_INTEGERSI_CLASS && class1 == X86_64_SSESF_CLASS))
- return X86_64_INTEGERSI_CLASS;
- if (class1 == X86_64_INTEGER_CLASS || class1 == X86_64_INTEGERSI_CLASS
- || class2 == X86_64_INTEGER_CLASS || class2 == X86_64_INTEGERSI_CLASS)
- return X86_64_INTEGER_CLASS;
-
- /* Rule #5: If one of the classes is X87 or X87UP class, MEMORY is used. */
- if (class1 == X86_64_X87_CLASS || class1 == X86_64_X87UP_CLASS
- || class2 == X86_64_X87_CLASS || class2 == X86_64_X87UP_CLASS)
- return X86_64_MEMORY_CLASS;
-
- /* Rule #6: Otherwise class SSE is used. */
- return X86_64_SSE_CLASS;
-}
-
-/* Classify the argument of type TYPE and mode MODE.
- CLASSES will be filled by the register class used to pass each word
- of the operand. The number of words is returned. In case the parameter
- should be passed in memory, 0 is returned. As a special case for zero
- sized containers, classes[0] will be NO_CLASS and 1 is returned.
-
- See the x86-64 PS ABI for details.
-*/
-static int
-classify_argument( typelib_TypeDescriptionReference *pTypeRef, enum x86_64_reg_class classes[], int byteOffset ) throw ()
-{
- switch ( pTypeRef->eTypeClass )
- {
- case typelib_TypeClass_VOID:
- classes[0] = X86_64_NO_CLASS;
- return 1;
- case typelib_TypeClass_CHAR:
- case typelib_TypeClass_BOOLEAN:
- case typelib_TypeClass_BYTE:
- case typelib_TypeClass_SHORT:
- case typelib_TypeClass_UNSIGNED_SHORT:
- case typelib_TypeClass_LONG:
- case typelib_TypeClass_UNSIGNED_LONG:
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- case typelib_TypeClass_ENUM:
- if ( ( byteOffset % 8 + pTypeRef->pType->nSize ) <= 4 )
- classes[0] = X86_64_INTEGERSI_CLASS;
- else
- classes[0] = X86_64_INTEGER_CLASS;
- return 1;
- case typelib_TypeClass_FLOAT:
- if ( ( byteOffset % 8 ) == 0 )
- classes[0] = X86_64_SSESF_CLASS;
- else
- classes[0] = X86_64_SSE_CLASS;
- return 1;
- case typelib_TypeClass_DOUBLE:
- classes[0] = X86_64_SSEDF_CLASS;
- return 1;
- /*case LONGDOUBLE:
- classes[0] = X86_64_X87_CLASS;
- classes[1] = X86_64_X87UP_CLASS;
- return 2;*/
- case typelib_TypeClass_STRING:
- case typelib_TypeClass_TYPE:
- case typelib_TypeClass_ANY:
- case typelib_TypeClass_TYPEDEF:
- case typelib_TypeClass_SEQUENCE:
- case typelib_TypeClass_INTERFACE:
- return 0;
- case typelib_TypeClass_STRUCT:
- case typelib_TypeClass_EXCEPTION:
- {
- typelib_TypeDescription * pTypeDescr = 0;
- TYPELIB_DANGER_GET( &pTypeDescr, pTypeRef );
-
- const int UNITS_PER_WORD = 8;
- int words = ( pTypeDescr->nSize + UNITS_PER_WORD - 1 ) / UNITS_PER_WORD;
- enum x86_64_reg_class subclasses[MAX_CLASSES];
-
- /* If the struct is larger than 16 bytes, pass it on the stack. */
- if ( pTypeDescr->nSize > 16 )
- {
- TYPELIB_DANGER_RELEASE( pTypeDescr );
- return 0;
- }
-
- for ( int i = 0; i < words; i++ )
- classes[i] = X86_64_NO_CLASS;
-
- const typelib_CompoundTypeDescription *pStruct = reinterpret_cast<const typelib_CompoundTypeDescription*>( pTypeDescr );
-
- /* Merge the fields of structure. */
- for ( sal_Int32 nMember = 0; nMember < pStruct->nMembers; ++nMember )
- {
- typelib_TypeDescriptionReference *pTypeInStruct = pStruct->ppTypeRefs[ nMember ];
- int offset = byteOffset + pStruct->pMemberOffsets[ nMember ];
-
- int num = classify_argument( pTypeInStruct, subclasses, offset );
-
- if ( num == 0 )
- {
- TYPELIB_DANGER_RELEASE( pTypeDescr );
- return 0;
- }
-
- for ( int i = 0; i < num; i++ )
- {
- int pos = offset / 8;
- classes[i + pos] = merge_classes( subclasses[i], classes[i + pos] );
- }
- }
-
- TYPELIB_DANGER_RELEASE( pTypeDescr );
-
- /* Final merger cleanup. */
- for ( int i = 0; i < words; i++ )
- {
- /* If one class is MEMORY, everything should be passed in
- memory. */
- if ( classes[i] == X86_64_MEMORY_CLASS )
- return 0;
-
- /* The X86_64_SSEUP_CLASS should be always preceded by
- X86_64_SSE_CLASS. */
- if ( classes[i] == X86_64_SSEUP_CLASS
- && ( i == 0 || classes[i - 1] != X86_64_SSE_CLASS ) )
- classes[i] = X86_64_SSE_CLASS;
-
- /* X86_64_X87UP_CLASS should be preceded by X86_64_X87_CLASS. */
- if ( classes[i] == X86_64_X87UP_CLASS
- && ( i == 0 || classes[i - 1] != X86_64_X87_CLASS ) )
- classes[i] = X86_64_SSE_CLASS;
- }
- return words;
- }
-
- default:
- SAL_WARN("bridges", "Unhandled case: pType->eTypeClass == "
- << pTypeRef->eTypeClass);
- assert(false);
- }
- return 0; /* Never reached. */
-}
-
-/* Examine the argument and return set number of register required in each
- class. Return 0 iff parameter should be passed in memory. */
-bool x86_64::examine_argument( typelib_TypeDescriptionReference *pTypeRef, bool bInReturn, int &nUsedGPR, int &nUsedSSE ) throw ()
-{
- enum x86_64_reg_class classes[MAX_CLASSES];
- int n;
-
- n = classify_argument( pTypeRef, classes, 0 );
-
- if ( n == 0 )
- return false;
-
- nUsedGPR = 0;
- nUsedSSE = 0;
- for ( n--; n >= 0; n-- )
- switch ( classes[n] )
- {
- case X86_64_INTEGER_CLASS:
- case X86_64_INTEGERSI_CLASS:
- nUsedGPR++;
- break;
- case X86_64_SSE_CLASS:
- case X86_64_SSESF_CLASS:
- case X86_64_SSEDF_CLASS:
- nUsedSSE++;
- break;
- case X86_64_NO_CLASS:
- case X86_64_SSEUP_CLASS:
- break;
- case X86_64_X87_CLASS:
- case X86_64_X87UP_CLASS:
- if ( !bInReturn )
- return false;
- break;
- default:
- SAL_WARN("bridges", "Unhandled case: classes[n] == " << classes[n]);
- assert(false);
- }
- return true;
-}
-
-bool x86_64::return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef ) throw ()
-{
- int g, s;
-
- return examine_argument( pTypeRef, true, g, s ) == 0;
-}
-
-void x86_64::fill_struct( typelib_TypeDescriptionReference *pTypeRef, const sal_uInt64 *pGPR, const double *pSSE, void *pStruct ) throw ()
-{
- enum x86_64_reg_class classes[MAX_CLASSES];
- int n;
-
- n = classify_argument( pTypeRef, classes, 0 );
-
- sal_uInt64 *pStructAlign = reinterpret_cast<sal_uInt64 *>( pStruct );
- for ( n--; n >= 0; n-- )
- switch ( classes[n] )
- {
- case X86_64_INTEGER_CLASS:
- case X86_64_INTEGERSI_CLASS:
- *pStructAlign++ = *pGPR++;
- break;
- case X86_64_SSE_CLASS:
- case X86_64_SSESF_CLASS:
- case X86_64_SSEDF_CLASS:
- *pStructAlign++ = *reinterpret_cast<const sal_uInt64 *>( pSSE++ );
- break;
- default:
- break;
- }
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/mingw_x86-64/abi.hxx b/bridges/source/cpp_uno/mingw_x86-64/abi.hxx
deleted file mode 100644
index 09d2c97..0000000
--- a/bridges/source/cpp_uno/mingw_x86-64/abi.hxx
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_BRIDGES_SOURCE_CPP_UNO_MINGW_X86_64_ABI_HXX
-#define INCLUDED_BRIDGES_SOURCE_CPP_UNO_MINGW_X86_64_ABI_HXX
-
-// This is an implementation of the x86-64 ABI as described in 'System V
-// Application Binary Interface, AMD64 Architecture Processor Supplement'
-// (http://www.x86-64.org/documentation/abi-0.95.pdf)
-
-#include <typelib/typedescription.hxx>
-
-namespace x86_64
-{
-
-/* 6 general purpose registers are used for parameter passing */
-const sal_uInt32 MAX_GPR_REGS = 6;
-
-/* 8 SSE registers are used for parameter passing */
-const sal_uInt32 MAX_SSE_REGS = 8;
-
-/* Count number of required registers.
-
- Examine the argument and return set number of register required in each
- class.
-
- Return false iff parameter should be passed in memory.
-*/
-bool examine_argument( typelib_TypeDescriptionReference *pTypeRef, bool bInReturn, int &nUsedGPR, int &nUsedSSE ) throw ();
-
-/** Does function that returns this type use a hidden parameter, or registers?
-
- The value can be returned either in a hidden 1st parameter (which is a
- pointer to a structure allocated by the caller), or in registers (rax, rdx
- for the integers, xmm0, xmm1 for the floating point numbers).
-*/
-bool return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef ) throw ();
-
-void fill_struct( typelib_TypeDescriptionReference *pTypeRef, const sal_uInt64* pGPR, const double* pSSE, void *pStruct ) throw ();
-
-} // namespace x86_64
-
-#endif // INCLUDED_BRIDGES_SOURCE_CPP_UNO_MINGW_X86_64_ABI_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/mingw_x86-64/call.s b/bridges/source/cpp_uno/mingw_x86-64/call.s
deleted file mode 100644
index 88d568c..0000000
--- a/bridges/source/cpp_uno/mingw_x86-64/call.s
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
- .text
- .align 2
-.globl privateSnippetExecutor
-privateSnippetExecutor:
-.LFB3:
- pushq %rbp
-.LCFI0:
- movq %rsp, %rbp
-.LCFI1:
- subq $160, %rsp
-.LCFI2:
- movq %r10, -152(%rbp) # Save (nVtableOffset << 32) + nFunctionIndex
-
- movq %rdi, -112(%rbp) # Save GP registers
- movq %rsi, -104(%rbp)
- movq %rdx, -96(%rbp)
- movq %rcx, -88(%rbp)
- movq %r8 , -80(%rbp)
- movq %r9 , -72(%rbp)
-
- movsd %xmm0, -64(%rbp) # Save FP registers
- movsd %xmm1, -56(%rbp)
- movsd %xmm2, -48(%rbp)
- movsd %xmm3, -40(%rbp)
- movsd %xmm4, -32(%rbp)
- movsd %xmm5, -24(%rbp)
- movsd %xmm6, -16(%rbp)
- movsd %xmm7, -8(%rbp)
-
- leaq -144(%rbp), %r9 # 6th param: sal_uInt64 * pRegisterReturn
- leaq 16(%rbp), %r8 # 5rd param: void ** ovrflw
- leaq -64(%rbp), %rcx # 4th param: void ** fpreg
- leaq -112(%rbp), %rdx # 3rd param: void ** gpreg
- movl -148(%rbp), %esi # 2nd param: sal_int32 nVtableOffset
- movl -152(%rbp), %edi # 1st param: sal_int32 nFunctionIndex
-
- call cpp_vtable_call
-
- cmp $10, %rax # typelib_TypeClass_FLOAT
- je .Lfloat
- cmp $11, %rax # typelib_TypeClass_DOUBLE
- je .Lfloat
-
- movq -144(%rbp), %rax # Return value (int case)
- movq -136(%rbp), %rdx # Return value (int case)
- movq -144(%rbp), %xmm0 # Return value (int case)
- movq -136(%rbp), %xmm1 # Return value (int case)
- jmp .Lfinish
-.Lfloat:
- movlpd -144(%rbp), %xmm0 # Return value (float/double case)
-
-.Lfinish:
- leave
- ret
-.LFE3:
- .long .-privateSnippetExecutor
- # see http://refspecs.linuxfoundation.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html
- # for details of the .eh_frame, the "Common Information Entry" and "Frame Description Entry" formats
- # and http://mentorembedded.github.io/cxx-abi/exceptions.pdf for more info
- .section .eh_frame,"a"
-.Lframe1:
- .long .LECIE1-.LSCIE1
-.LSCIE1:
- .long 0x0
- .byte 0x1
- .string "zR"
- .uleb128 0x1
- .sleb128 -8
- .byte 0x10
- .uleb128 0x1
- .byte 0x1b
- .byte 0xc
- .uleb128 0x7
- .uleb128 0x8
- .byte 0x90
- .uleb128 0x1
- .align 8
-.LECIE1:
-.LSFDE1:
- .long .LEFDE1-.LASFDE1
-.LASFDE1:
- .long .LASFDE1-.Lframe1
- .long .LFB3-.
- .long .LFE3-.LFB3
- .uleb128 0x0
- .byte 0x4
- .long .LCFI0-.LFB3
- .byte 0xe
- .uleb128 0x10
- .byte 0x86
- .uleb128 0x2
- .byte 0x4
- .long .LCFI1-.LCFI0
- .byte 0xd
- .uleb128 0x6
- .align 8
-.LEFDE1:
diff --git a/bridges/source/cpp_uno/mingw_x86-64/callvirtualmethod.cxx b/bridges/source/cpp_uno/mingw_x86-64/callvirtualmethod.cxx
deleted file mode 100644
index 47b8f13..0000000
--- a/bridges/source/cpp_uno/mingw_x86-64/callvirtualmethod.cxx
+++ /dev/null
@@ -1,166 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include "sal/config.h"
-
-#include <cstring>
-
-#include "cppu/macros.hxx"
-#include "sal/types.h"
-#include "typelib/typeclass.h"
-#include "typelib/typedescription.h"
-
-#include "abi.hxx"
-#include "callvirtualmethod.hxx"
-
-// The call instruction within the asm block of callVirtualMethod may throw
-// exceptions. At least GCC 4.7.0 with -O0 would create (unnecessary)
-// .gcc_exception_table call-site table entries around all other calls in this
-// function that can throw, leading to std::terminate if the asm call throws an
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list