Author: tfaber
Date: Sun Sep 15 14:33:33 2013
New Revision: 60135
URL:
http://svn.reactos.org/svn/reactos?rev=60135&view=rev
Log:
[SPEC2DEF]
- Ignore C++ redirects again because they breaks msvcrt
CORE-7465 #resolve
[FRAMEDYN]
- Work around the lack of C++ redirects
Added:
trunk/reactos/dll/win32/framedyn/fix_exports_msvc.s (with props)
Modified:
trunk/reactos/dll/win32/framedyn/CMakeLists.txt
trunk/reactos/dll/win32/framedyn/framedyn_msvc.spec
trunk/reactos/tools/spec2def/spec2def.c
Modified: trunk/reactos/dll/win32/framedyn/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/framedyn/CMakeLi…
==============================================================================
--- trunk/reactos/dll/win32/framedyn/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/framedyn/CMakeLists.txt [iso-8859-1] Sun Sep 15 14:33:33 2013
@@ -12,7 +12,11 @@
chstring.cpp
${CMAKE_CURRENT_BINARY_DIR}/framedyn.def)
-add_library(framedyn SHARED ${SOURCE})
+if(MSVC)
+ add_asm_files(framedyn_asm fix_exports_msvc.s)
+endif()
+
+add_library(framedyn SHARED ${SOURCE} ${framedyn_asm})
set_module_type(framedyn win32dll UNICODE)
add_importlibs(framedyn oleaut32 msvcrt kernel32 ntdll)
Added: trunk/reactos/dll/win32/framedyn/fix_exports_msvc.s
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/framedyn/fix_exp…
==============================================================================
--- trunk/reactos/dll/win32/framedyn/fix_exports_msvc.s (added)
+++ trunk/reactos/dll/win32/framedyn/fix_exports_msvc.s [iso-8859-1] Sun Sep 15 14:33:33
2013
@@ -0,0 +1,48 @@
+#include <asm.inc>
+
+.code64
+.align 4
+
+MACRO(DEFINE_ALIAS, alias, orig)
+EXTERN &orig:ABS
+ALIAS <&alias> = <&orig>
+ENDM
+
+DEFINE_ALIAS ?AllocSysString@CHString@@QBEPAGXZ, ?AllocSysString@CHString@@QBEPA_WXZ
+DEFINE_ALIAS ?AssignCopy@CHString@@IAEXHPBG@Z, ?AssignCopy@CHString@@IAEXHPB_W@Z
+DEFINE_ALIAS ??0CHString@@QAE@PBG@Z, ??0CHString@@QAE@PB_W@Z
+DEFINE_ALIAS ??0CHString@@QAE@PBGH@Z, ??0CHString@@QAE@PB_WH@Z
+DEFINE_ALIAS ??0CHString@@QAE@GH@Z, ??0CHString@@QAE@_WH@Z
+DEFINE_ALIAS ?Collate@CHString@@QBEHPBG@Z, ?Collate@CHString@@QBEHPB_W@Z
+DEFINE_ALIAS ?Compare@CHString@@QBEHPBG@Z, ?Compare@CHString@@QBEHPB_W@Z
+DEFINE_ALIAS ?CompareNoCase@CHString@@QBEHPBG@Z, ?CompareNoCase@CHString@@QBEHPB_W@Z
+DEFINE_ALIAS ?ConcatCopy@CHString@@IAEXHPBGH0@Z, ?ConcatCopy@CHString@@IAEXHPB_WH0@Z
+DEFINE_ALIAS ?ConcatInPlace@CHString@@IAEXHPBG@Z, ?ConcatInPlace@CHString@@IAEXHPB_W@Z
+DEFINE_ALIAS ?Find@CHString@@QBEHPBG@Z, ?Find@CHString@@QBEHPB_W@Z
+DEFINE_ALIAS ?Find@CHString@@QBEHG@Z, ?Find@CHString@@QBEH_W@Z
+DEFINE_ALIAS ?FindOneOf@CHString@@QBEHPBG@Z, ?FindOneOf@CHString@@QBEHPB_W@Z
+DEFINE_ALIAS ?Format@CHString@@QAAXPBGZZ, ?Format@CHString@@QAAXPB_WZZ
+DEFINE_ALIAS ?FormatMessageW@CHString@@QAAXPBGZZ, ?FormatMessageW@CHString@@QAAXPB_WZZ
+DEFINE_ALIAS ?FormatV@CHString@@QAEXPBGPAD@Z, ?FormatV@CHString@@QAEXPB_WPAD@Z
+DEFINE_ALIAS ?GetAt@CHString@@QBEGH@Z, ?GetAt@CHString@@QBE_WH@Z
+DEFINE_ALIAS ?GetBuffer@CHString@@QAEPAGH@Z, ?GetBuffer@CHString@@QAEPA_WH@Z
+DEFINE_ALIAS ?GetBufferSetLength@CHString@@QAEPAGH@Z,
?GetBufferSetLength@CHString@@QAEPA_WH@Z
+DEFINE_ALIAS ?LoadStringW@CHString@@IAEHIPAGI@Z, ?LoadStringW@CHString@@IAEHIPA_WI@Z
+DEFINE_ALIAS ?LockBuffer@CHString@@QAEPAGXZ, ?LockBuffer@CHString@@QAEPA_WXZ
+DEFINE_ALIAS ?ReverseFind@CHString@@QBEHG@Z, ?ReverseFind@CHString@@QBEH_W@Z
+DEFINE_ALIAS ?SafeStrlen@CHString@@KGHPBG@Z, ?SafeStrlen@CHString@@KGHPB_W@Z
+DEFINE_ALIAS ?SetAt@CHString@@QAEXHG@Z, ?SetAt@CHString@@QAEXH_W@Z
+DEFINE_ALIAS ?SpanExcluding@CHString@@QBE?AV1@PBG@Z,
?SpanExcluding@CHString@@QBE?AV1@PB_W@Z
+DEFINE_ALIAS ?SpanIncluding@CHString@@QBE?AV1@PBG@Z,
?SpanIncluding@CHString@@QBE?AV1@PB_W@Z
+DEFINE_ALIAS ??BCHString@@QBEPBGXZ, ??BCHString@@QBEPB_WXZ
+DEFINE_ALIAS ??YCHString@@QAEABV0@PBG@Z, ??YCHString@@QAEABV0@PB_W@Z
+DEFINE_ALIAS ??YCHString@@QAEABV0@G@Z, ??YCHString@@QAEABV0@_W@Z
+DEFINE_ALIAS ??4CHString@@QAEABV0@PBG@Z, ??4CHString@@QAEABV0@PB_W@Z
+DEFINE_ALIAS ??4CHString@@QAEABV0@G@Z, ??4CHString@@QAEABV0@_W@Z
+DEFINE_ALIAS ??ACHString@@QBEGH@Z, ??ACHString@@QBE_WH@Z
+DEFINE_ALIAS ??H@YG?AVCHString@@GABV0@@Z, ??H@YG?AVCHString@@_WABV0@@Z
+DEFINE_ALIAS ??H@YG?AVCHString@@ABV0@G@Z, ??H@YG?AVCHString@@ABV0@_W@Z
+DEFINE_ALIAS ??H@YG?AVCHString@@ABV0@PBG@Z, ??H@YG?AVCHString@@ABV0@PB_W@Z
+DEFINE_ALIAS ??H@YG?AVCHString@@PBGABV0@@Z, ??H@YG?AVCHString@@PB_WABV0@@Z
+
+END
Propchange: trunk/reactos/dll/win32/framedyn/fix_exports_msvc.s
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/dll/win32/framedyn/framedyn_msvc.spec
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/framedyn/framedy…
==============================================================================
--- trunk/reactos/dll/win32/framedyn/framedyn_msvc.spec [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/framedyn/framedyn_msvc.spec [iso-8859-1] Sun Sep 15 14:33:33
2013
@@ -1,43 +1,43 @@
@ thiscall ?AllocBeforeWrite@CHString@@IAEXH@Z(long)
@ thiscall ?AllocBuffer@CHString@@IAEXH@Z(long)
@ thiscall ?AllocCopy@CHString@@IBEXAAV1@HHH@Z(ptr long long long)
-@ thiscall ?AllocSysString@CHString@@QBEPAGXZ() ?AllocSysString@CHString@@QBEPA_WXZ
-@ thiscall ?AssignCopy@CHString@@IAEXHPBG@Z(long wstr) ?AssignCopy@CHString@@IAEXHPB_W@Z
+@ thiscall ?AllocSysString@CHString@@QBEPAGXZ()
+@ thiscall ?AssignCopy@CHString@@IAEXHPBG@Z(long wstr)
@ thiscall ??0CHString@@QAE@ABV0@@Z(ptr)
@ thiscall ??0CHString@@QAE@PBD@Z(str)
@ thiscall ??0CHString@@QAE@PBE@Z(str)
-@ thiscall ??0CHString@@QAE@PBG@Z(wstr) ??0CHString@@QAE@PB_W@Z
-@ thiscall ??0CHString@@QAE@PBGH@Z(wstr long) ??0CHString@@QAE@PB_WH@Z
-@ thiscall ??0CHString@@QAE@GH@Z(long long) ??0CHString@@QAE@_WH@Z
+@ thiscall ??0CHString@@QAE@PBG@Z(wstr)
+@ thiscall ??0CHString@@QAE@PBGH@Z(wstr long)
+@ thiscall ??0CHString@@QAE@GH@Z(long long)
@ thiscall ??0CHString@@QAE@XZ()
-@ thiscall ?Collate@CHString@@QBEHPBG@Z(wstr) ?Collate@CHString@@QBEHPB_W@Z
-@ thiscall ?Compare@CHString@@QBEHPBG@Z(wstr) ?Compare@CHString@@QBEHPB_W@Z
-@ thiscall ?CompareNoCase@CHString@@QBEHPBG@Z(wstr) ?CompareNoCase@CHString@@QBEHPB_W@Z
-@ thiscall ?ConcatCopy@CHString@@IAEXHPBGH0@Z(long wstr long wstr)
?ConcatCopy@CHString@@IAEXHPB_WH0@Z
-@ thiscall ?ConcatInPlace@CHString@@IAEXHPBG@Z(long wstr)
?ConcatInPlace@CHString@@IAEXHPB_W@Z
+@ thiscall ?Collate@CHString@@QBEHPBG@Z(wstr)
+@ thiscall ?Compare@CHString@@QBEHPBG@Z(wstr)
+@ thiscall ?CompareNoCase@CHString@@QBEHPBG@Z(wstr)
+@ thiscall ?ConcatCopy@CHString@@IAEXHPBGH0@Z(long wstr long wstr)
+@ thiscall ?ConcatInPlace@CHString@@IAEXHPBG@Z(long wstr)
@ thiscall ?CopyBeforeWrite@CHString@@IAEXXZ()
@ thiscall ?Empty@CHString@@QAEXXZ()
-@ thiscall ?Find@CHString@@QBEHPBG@Z(wstr) ?Find@CHString@@QBEHPB_W@Z
-@ thiscall ?Find@CHString@@QBEHG@Z(long) ?Find@CHString@@QBEH_W@Z
-@ thiscall ?FindOneOf@CHString@@QBEHPBG@Z(wstr) ?FindOneOf@CHString@@QBEHPB_W@Z
+@ thiscall ?Find@CHString@@QBEHPBG@Z(wstr)
+@ thiscall ?Find@CHString@@QBEHG@Z(long)
+@ thiscall ?FindOneOf@CHString@@QBEHPBG@Z(wstr)
@ thiscall ?Format@CHString@@QAAXIZZ(long long long)
-@ thiscall ?Format@CHString@@QAAXPBGZZ(long wstr long) ?Format@CHString@@QAAXPB_WZZ
+@ thiscall ?Format@CHString@@QAAXPBGZZ(long wstr long)
@ thiscall ?FormatMessageW@CHString@@QAAXIZZ(long long long)
-@ thiscall ?FormatMessageW@CHString@@QAAXPBGZZ(long ptr long)
?FormatMessageW@CHString@@QAAXPB_WZZ
-@ thiscall ?FormatV@CHString@@QAEXPBGPAD@Z(wstr long) ?FormatV@CHString@@QAEXPB_WPAD@Z
+@ thiscall ?FormatMessageW@CHString@@QAAXPBGZZ(long ptr long)
+@ thiscall ?FormatV@CHString@@QAEXPBGPAD@Z(wstr long)
@ thiscall ?FreeExtra@CHString@@QAEXXZ()
@ thiscall ?GetAllocLength@CHString@@QBEHXZ()
-@ thiscall ?GetAt@CHString@@QBEGH@Z(long) ?GetAt@CHString@@QBE_WH@Z
-@ thiscall ?GetBuffer@CHString@@QAEPAGH@Z(long) ?GetBuffer@CHString@@QAEPA_WH@Z
-@ thiscall ?GetBufferSetLength@CHString@@QAEPAGH@Z(long)
?GetBufferSetLength@CHString@@QAEPA_WH@Z
+@ thiscall ?GetAt@CHString@@QBEGH@Z(long)
+@ thiscall ?GetBuffer@CHString@@QAEPAGH@Z(long)
+@ thiscall ?GetBufferSetLength@CHString@@QAEPAGH@Z(long)
@ thiscall ?GetData@CHString@@IBEPAUCHStringData@@XZ()
@ thiscall ?GetLength@CHString@@QBEHXZ()
@ thiscall ?Init@CHString@@IAEXXZ()
@ thiscall ?IsEmpty@CHString@@QBEHXZ()
@ thiscall ?Left@CHString@@QBE?AV1@H@Z(long)
@ thiscall ?LoadStringW@CHString@@QAEHI@Z(long)
-@ thiscall ?LoadStringW@CHString@@IAEHIPAGI@Z(long wstr long)
?LoadStringW@CHString@@IAEHIPA_WI@Z
-@ thiscall ?LockBuffer@CHString@@QAEPAGXZ() ?LockBuffer@CHString@@QAEPA_WXZ
+@ thiscall ?LoadStringW@CHString@@IAEHIPAGI@Z(long wstr long)
+@ thiscall ?LockBuffer@CHString@@QAEPAGXZ()
@ thiscall ?MakeLower@CHString@@QAEXXZ()
@ thiscall ?MakeReverse@CHString@@QAEXXZ()
@ thiscall ?MakeUpper@CHString@@QAEXXZ()
@@ -46,31 +46,31 @@
@ thiscall ?Release@CHString@@KGXPAUCHStringData@@@Z(ptr)
@ thiscall ?Release@CHString@@IAEXXZ()
@ thiscall ?ReleaseBuffer@CHString@@QAEXH@Z(long)
-@ thiscall ?ReverseFind@CHString@@QBEHG@Z(long) ?ReverseFind@CHString@@QBEH_W@Z
+@ thiscall ?ReverseFind@CHString@@QBEHG@Z(long)
@ thiscall ?Right@CHString@@QBE?AV1@H@Z(long)
-@ stdcall ?SafeStrlen@CHString@@KGHPBG@Z(wstr) ?SafeStrlen@CHString@@KGHPB_W@Z
-@ thiscall ?SetAt@CHString@@QAEXHG@Z(long long) ?SetAt@CHString@@QAEXH_W@Z
-@ thiscall ?SpanExcluding@CHString@@QBE?AV1@PBG@Z(long wstr)
?SpanExcluding@CHString@@QBE?AV1@PB_W@Z
-@ thiscall ?SpanIncluding@CHString@@QBE?AV1@PBG@Z(long wstr)
?SpanIncluding@CHString@@QBE?AV1@PB_W@Z
+@ stdcall ?SafeStrlen@CHString@@KGHPBG@Z(wstr)
+@ thiscall ?SetAt@CHString@@QAEXHG@Z(long long)
+@ thiscall ?SpanExcluding@CHString@@QBE?AV1@PBG@Z(long wstr)
+@ thiscall ?SpanIncluding@CHString@@QBE?AV1@PBG@Z(long wstr)
@ thiscall ?TrimLeft@CHString@@QAEXXZ()
@ thiscall ?TrimRight@CHString@@QAEXXZ()
@ thiscall ?UnlockBuffer@CHString@@QAEXXZ()
-@ thiscall ??BCHString@@QBEPBGXZ(ptr) ??BCHString@@QBEPB_WXZ
+@ thiscall ??BCHString@@QBEPBGXZ(ptr)
@ thiscall ??YCHString@@QAEABV0@ABV0@@Z(ptr)
@ thiscall ??YCHString@@QAEABV0@D@Z(long)
-@ thiscall ??YCHString@@QAEABV0@PBG@Z(wstr) ??YCHString@@QAEABV0@PB_W@Z
-@ thiscall ??YCHString@@QAEABV0@G@Z(long) ??YCHString@@QAEABV0@_W@Z
+@ thiscall ??YCHString@@QAEABV0@PBG@Z(wstr)
+@ thiscall ??YCHString@@QAEABV0@G@Z(long)
@ thiscall ??4CHString@@QAEABV0@PAV0@@Z(ptr)
@ thiscall ??4CHString@@QAEABV0@ABV0@@Z(ptr)
@ thiscall ??4CHString@@QAEABV0@PBD@Z(str)
@ thiscall ??4CHString@@QAEABV0@D@Z(long)
@ thiscall ??4CHString@@QAEABV0@PBE@Z(str)
-@ thiscall ??4CHString@@QAEABV0@PBG@Z(wstr) ??4CHString@@QAEABV0@PB_W@Z
-@ thiscall ??4CHString@@QAEABV0@G@Z(long) ??4CHString@@QAEABV0@_W@Z
-@ thiscall ??ACHString@@QBEGH@Z(long) ??ACHString@@QBE_WH@Z
+@ thiscall ??4CHString@@QAEABV0@PBG@Z(wstr)
+@ thiscall ??4CHString@@QAEABV0@G@Z(long)
+@ thiscall ??ACHString@@QBEGH@Z(long)
@ thiscall ??1CHString@@QAE@XZ()
-@ stdcall ??H@YG?AVCHString@@GABV0@@Z(long ptr) ??H@YG?AVCHString@@_WABV0@@Z
-@ stdcall ??H@YG?AVCHString@@ABV0@G@Z(ptr long) ??H@YG?AVCHString@@ABV0@_W@Z
-@ stdcall ??H@YG?AVCHString@@ABV0@PBG@Z(ptr wstr) ??H@YG?AVCHString@@ABV0@PB_W@Z
-@ stdcall ??H@YG?AVCHString@@PBGABV0@@Z(wstr ptr) ??H@YG?AVCHString@@PB_WABV0@@Z
+@ stdcall ??H@YG?AVCHString@@GABV0@@Z(long ptr)
+@ stdcall ??H@YG?AVCHString@@ABV0@G@Z(ptr long)
+@ stdcall ??H@YG?AVCHString@@ABV0@PBG@Z(ptr wstr)
+@ stdcall ??H@YG?AVCHString@@PBGABV0@@Z(wstr ptr)
@ stdcall ??H@YG?AVCHString@@ABV0@0@Z(ptr ptr)
Modified: trunk/reactos/tools/spec2def/spec2def.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/spec2def/spec2def.c?…
==============================================================================
--- trunk/reactos/tools/spec2def/spec2def.c [iso-8859-1] (original)
+++ trunk/reactos/tools/spec2def/spec2def.c [iso-8859-1] Sun Sep 15 14:33:33 2013
@@ -349,11 +349,19 @@
}
else if (pexp->pcRedirection)
{
- int fDeco;
-
- fDeco = ((giArch == ARCH_X86) && !ScanToken(pexp->pcRedirection,
'.'));
- fprintf(fileDest, "=");
- PrintName(fileDest, pexp, "", 1, fDeco && !gbMSComp);
+ if (gbMSComp && (pexp->pcName[0] == '?'))
+ {
+ fprintf(stderr, "warning: ignoring C++ redirection %.*s ->
%.*s\n",
+ pexp->nNameLength, pexp->pcName, pexp->nRedirectionLength,
pexp->pcRedirection);
+ }
+ else
+ {
+ int fDeco;
+
+ fDeco = ((giArch == ARCH_X86) && !ScanToken(pexp->pcRedirection,
'.'));
+ fprintf(fileDest, "=");
+ PrintName(fileDest, pexp, "", 1, fDeco && !gbMSComp);
+ }
}
else if (((pexp->uFlags & FL_STUB) || (pexp->nCallingConvention ==
CC_STUB)) &&
(pexp->pcName[0] == '?'))