summaryrefslogtreecommitdiff
path: root/cppu/util
diff options
context:
space:
mode:
authorTor Lillqvist <tlillqvist@novell.com>2011-01-16 22:13:31 +0200
committerTor Lillqvist <tlillqvist@novell.com>2011-01-16 23:31:10 +0200
commitcf3abb4ad91e2f77f4ca64b012a68001fa0ea8f3 (patch)
treea8b340a1108a5a86530bea5f6cb97fa80cc895b2 /cppu/util
parent40773f5b34b6e8776e0733a9c6d3ce2504f9645d (diff)
Use separate .map files for 64-bit MSVC build
Unfortunately the C++ name mangling in a 64-bit MSVC compilation is slightly different from that in a 32-bit one: -- An 'E' is inserted for pointers to indicate that they are 64 bits. I don't fully understand the rationale for this; isn't that the only kind of pointer in 64-bit code produced by a C++ compiler anyway? -- As there is only one calling convention on x64 Windows, __cdecl, the indications for other calling conventions (here, especially __thiscall) change to that for __cdecl. It should be possible to write a tool to at least partially automate conversion of 32-bit mangled names to 64-bit ones, and thus make it easy to create mscx map files from the corresponding msci ones in LibreOffice. Sure, it probably wouldn't work 100% correctly in all cases, but it would help a lot.
Diffstat (limited to 'cppu/util')
-rw-r--r--cppu/util/makefile.mk2
-rw-r--r--cppu/util/purpenvhelper3MSCX.map8
2 files changed, 10 insertions, 0 deletions
diff --git a/cppu/util/makefile.mk b/cppu/util/makefile.mk
index 5eb7eac74..47a3c9abb 100644
--- a/cppu/util/makefile.mk
+++ b/cppu/util/makefile.mk
@@ -76,6 +76,8 @@ DEF2NAME := $(SHL2TARGET)
SHL2VERSIONMAP:=uno_purpenvhelper$(COMID).map
.ELIF "$(GUI)"=="OS2"
SHL2VERSIONMAP:=uno_purpenvhelperwntgcc.map
+.ELIF "$(COMNAME)"=="mscx"
+SHL2VERSIONMAP:=$(SHL2TARGET)X.map
.ELSE
SHL2VERSIONMAP:=$(SHL2TARGET).map
.ENDIF # "$(GUI)$(COM)"=="WNTGCC"
diff --git a/cppu/util/purpenvhelper3MSCX.map b/cppu/util/purpenvhelper3MSCX.map
new file mode 100644
index 000000000..22485191c
--- /dev/null
+++ b/cppu/util/purpenvhelper3MSCX.map
@@ -0,0 +1,8 @@
+UDK_3_0_0 {
+ global:
+ ?Environment_initWithEnterable@purpenv@helper@cppu@@YAXPEAU_uno_Environment@@PEAVEnterable@3@@Z;
+ ?createMapping@purpenv@helper@cppu@@YAXPEAPEAU_uno_Mapping@@PEAU_uno_Environment@@1P6AX_NPEAX3PEAU_typelib_TypeDescriptionReference@@PEAU_typelib_MethodParameter@@JPEBU_typelib_TypeDescription@@3QEAPEAXPEAPEAU_uno_Any@@@Z3@Z;
+
+ local:
+ *;
+};