summaryrefslogtreecommitdiff
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 22:23:32 +0200
commit726f5b622b027d26f1d2ae6a31beadffb5c48312 (patch)
tree1bdf48554b333c5567d6ba5f9e90b2c8c1bf7d83
parent7e86fc3fe72f67b0d9240b4afad28c66dc482c80 (diff)
Use mscx.map 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.
-rw-r--r--salhelper/source/makefile.mk2
-rw-r--r--salhelper/source/mscx.map50
2 files changed, 52 insertions, 0 deletions
diff --git a/salhelper/source/makefile.mk b/salhelper/source/makefile.mk
index 26acb2e3051d..f4e54ea3c5c7 100644
--- a/salhelper/source/makefile.mk
+++ b/salhelper/source/makefile.mk
@@ -69,6 +69,8 @@ DEF1NAME= $(SHL1TARGET)
.IF "$(COMNAME)"=="msci"
SHL1VERSIONMAP=msci.map
+.ELIF "$(COMNAME)"=="mscx"
+SHL1VERSIONMAP=mscx.map
.ELIF "$(GUI)"=="OS2"
SHL1VERSIONMAP=gcc3os2.map
.ELIF "$(COMNAME)"=="sunpro5"
diff --git a/salhelper/source/mscx.map b/salhelper/source/mscx.map
new file mode 100644
index 000000000000..58f26e9041ab
--- /dev/null
+++ b/salhelper/source/mscx.map
@@ -0,0 +1,50 @@
+UDK_3_0_0 {
+ global:
+GetVersionInfo
+??0ORealDynamicLoader@salhelper@@IEAA@PEAPEAV01@AEBVOUString@rtl@@1PEAX2@Z
+??1ORealDynamicLoader@salhelper@@MEAA@XZ
+??_7ORealDynamicLoader@salhelper@@6B@
+?acquire@ORealDynamicLoader@salhelper@@QEAAKXZ
+?getApi@ORealDynamicLoader@salhelper@@QEBAPEAXXZ
+?newInstance@ORealDynamicLoader@salhelper@@SAPEAV12@PEAPEAV12@AEBVOUString@rtl@@1@Z
+?release@ORealDynamicLoader@salhelper@@QEAAKXZ
+??1SimpleReferenceObject@salhelper@@MEAA@XZ
+??2SimpleReferenceObject@salhelper@@SAPEAX_K@Z
+??2SimpleReferenceObject@salhelper@@SAPEAX_KAEBUnothrow_t@std@@@Z
+??3SimpleReferenceObject@salhelper@@SAXPEAX@Z
+??3SimpleReferenceObject@salhelper@@SAXPEAXAEBUnothrow_t@std@@@Z
+ local:
+ *;
+};
+
+UDK_3.1 {
+ global:
+ ??_VSimpleReferenceObject@salhelper@@KAXPEAX@Z;
+ ??_7SimpleReferenceObject@salhelper@@6B@;
+
+ ??0Condition@salhelper@@QEAA@AEAVMutex@osl@@@Z;
+ ??1Condition@salhelper@@UEAA@XZ;
+
+ ??0ConditionModifier@salhelper@@QEAA@AEAVCondition@1@@Z;
+ ??1ConditionModifier@salhelper@@QEAA@XZ;
+
+ ??0ConditionWaiter@salhelper@@QEAA@AEAVCondition@1@@Z;
+ ??0ConditionWaiter@salhelper@@QEAA@AEAVCondition@1@K@Z;
+ ??1ConditionWaiter@salhelper@@QEAA@XZ;
+
+ ??0timedout@ConditionWaiter@salhelper@@QEAA@XZ;
+ ??0timedout@ConditionWaiter@salhelper@@QEAA@AEBU012@@Z;
+ ??1timedout@ConditionWaiter@salhelper@@UEAA@XZ;
+ ??4timedout@ConditionWaiter@salhelper@@QEAAAEAU012@AEBU012@@Z;
+
+ ??0Timer@salhelper@@QEAA@XZ;
+ ??0Timer@salhelper@@QEAA@AEBUTTimeValue@1@@Z;
+ ??0Timer@salhelper@@QEAA@AEBUTTimeValue@1@0@Z;
+ ??1Timer@salhelper@@MEAA@XZ;
+
+ ?isExpired@Timer@salhelper@@QEBAEXZ;
+ ?isTicking@Timer@salhelper@@QEBAEXZ;
+ ?setRemainingTime@Timer@salhelper@@QEAAXAEBUTTimeValue@2@@Z;
+ ?start@Timer@salhelper@@QEAAXXZ;
+ ?stop@Timer@salhelper@@QEAAXXZ;
+} UDK_3_0_0;