[SPEC2DEF]

- Ignore C++ redirects again because they breaks msvcrt
CORE-7465 #resolve
[FRAMEDYN]
- Work around the lack of C++ redirects

svn path=/trunk/; revision=60135
This commit is contained in:
Thomas Faber 2013-09-15 14:33:33 +00:00
parent b63e09b179
commit c0099fe498
4 changed files with 101 additions and 41 deletions

View file

@ -12,7 +12,11 @@ list(APPEND SOURCE
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)

View file

@ -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

View file

@ -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)

View file

@ -349,11 +349,19 @@ OutputLine_def(FILE *fileDest, EXPORT *pexp)
}
else if (pexp->pcRedirection)
{
int fDeco;
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);
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] == '?'))