diff options
author | Tor Lillqvist <tlillqvist@novell.com> | 2011-01-16 22:13:31 +0200 |
---|---|---|
committer | Tor Lillqvist <tlillqvist@novell.com> | 2011-01-16 23:31:10 +0200 |
commit | cf3abb4ad91e2f77f4ca64b012a68001fa0ea8f3 (patch) | |
tree | a8b340a1108a5a86530bea5f6cb97fa80cc895b2 /cppu/util | |
parent | 40773f5b34b6e8776e0733a9c6d3ce2504f9645d (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.mk | 2 | ||||
-rw-r--r-- | cppu/util/purpenvhelper3MSCX.map | 8 |
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: + *; +}; |