From 3e3482dc6e39d9afafb13a44d615cf8e5016f5e0 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Sun, 16 Jan 2011 22:13:31 +0200 Subject: 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. --- cppu/util/makefile.mk | 2 ++ cppu/util/purpenvhelper3MSCX.map | 8 ++++++++ 2 files changed, 10 insertions(+) create mode 100644 cppu/util/purpenvhelper3MSCX.map (limited to 'cppu/util') diff --git a/cppu/util/makefile.mk b/cppu/util/makefile.mk index 5eb7eac74f26..47a3c9abb743 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 000000000000..22485191c805 --- /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: + *; +}; -- cgit