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/CMakeLis... ============================================================================== --- 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_expo... ============================================================================== --- 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/framedyn... ============================================================================== --- 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?r... ============================================================================== --- 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] == '?'))