Commit e4ed8c3f37
Changed files (59)
lib
libc
mingw
gdtoa
lib-common
libarm32
secapi
src
lib/libc/mingw/crt/charmax.c
@@ -10,7 +10,7 @@
__declspec(dllimport) int __lconv_init (void);
-int mingw_initcharmax = 0;
+int __mingw_initcharmax = 0;
int _charmax = 255;
lib/libc/mingw/crt/crtdll.c
@@ -48,7 +48,7 @@ static int __proc_attached = 0;
static _onexit_table_t atexit_table;
-extern int mingw_app_type;
+extern int __mingw_app_type;
extern WINBOOL WINAPI DllMain (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved);
@@ -145,7 +145,7 @@ int __mingw_init_ehandler (void);
WINBOOL WINAPI
DllMainCRTStartup (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
{
- mingw_app_type = 0;
+ __mingw_app_type = 0;
if (dwReason == DLL_PROCESS_ATTACH)
{
#if defined(__x86_64__) && !defined(__SEH__)
lib/libc/mingw/crt/crtexe.c
@@ -66,7 +66,7 @@ extern _CRTALLOC(".CRT$XCZ") _PVFV __xc_z[];
/* TLS initialization hook. */
extern const PIMAGE_TLS_CALLBACK __dyn_tls_init_callback;
-extern int mingw_app_type;
+extern int __mingw_app_type;
HINSTANCE __mingw_winmain_hInstance;
_TCHAR *__mingw_winmain_lpCmdLine;
@@ -99,8 +99,8 @@ static void duplicate_ppstrings (int ac, char ***av);
static int __cdecl pre_c_init (void);
static void __cdecl pre_cpp_init (void);
-_CRTALLOC(".CRT$XIAA") _PIFV mingw_pcinit = pre_c_init;
-_CRTALLOC(".CRT$XCAA") _PVFV mingw_pcppinit = pre_cpp_init;
+_CRTALLOC(".CRT$XIAA") _PIFV __mingw_pcinit = pre_c_init;
+_CRTALLOC(".CRT$XCAA") _PVFV __mingw_pcppinit = pre_cpp_init;
extern int _MINGW_INSTALL_DEBUG_MATHERR;
@@ -126,7 +126,7 @@ static int __cdecl
pre_c_init (void)
{
managedapp = check_managed_app ();
- if (mingw_app_type)
+ if (__mingw_app_type)
__set_app_type(_GUI_APP);
else
__set_app_type (_CONSOLE_APP);
@@ -172,7 +172,7 @@ int WinMainCRTStartup (void)
#ifdef SEH_INLINE_ASM
asm ("\t.l_startw:\n");
#endif
- mingw_app_type = 1;
+ __mingw_app_type = 1;
ret = __tmainCRTStartup ();
#ifdef SEH_INLINE_ASM
asm ("\tnop\n"
@@ -198,7 +198,7 @@ int mainCRTStartup (void)
#ifdef SEH_INLINE_ASM
asm ("\t.l_start:\n");
#endif
- mingw_app_type = 0;
+ __mingw_app_type = 0;
ret = __tmainCRTStartup ();
#ifdef SEH_INLINE_ASM
asm ("\tnop\n"
@@ -226,7 +226,7 @@ __tmainCRTStartup (void)
WINBOOL inDoubleQuote = FALSE;
memset (&StartupInfo, 0, sizeof (STARTUPINFO));
- if (mingw_app_type)
+ if (__mingw_app_type)
GetStartupInfo (&StartupInfo);
{
void *lock_free = NULL;
@@ -304,7 +304,7 @@ __tmainCRTStartup (void)
__mingw_winmain_lpCmdLine = lpszCommandLine;
}
- if (mingw_app_type)
+ if (__mingw_app_type)
{
__mingw_winmain_nShowCmd = StartupInfo.dwFlags & STARTF_USESHOWWINDOW ?
StartupInfo.wShowWindow : SW_SHOWDEFAULT;
@@ -329,10 +329,9 @@ __tmainCRTStartup (void)
return mainret;
}
-extern int mingw_initltsdrot_force;
-extern int mingw_initltsdyn_force;
-extern int mingw_initltssuo_force;
-extern int mingw_initcharmax;
+extern int __mingw_initltsdrot_force;
+extern int __mingw_initltsdyn_force;
+extern int __mingw_initltssuo_force;
static int __cdecl
check_managed_app (void)
@@ -343,10 +342,9 @@ check_managed_app (void)
PIMAGE_OPTIONAL_HEADER64 pNTHeader64;
/* Force to be linked. */
- mingw_initltsdrot_force=1;
- mingw_initltsdyn_force=1;
- mingw_initltssuo_force=1;
- mingw_initcharmax=1;
+ __mingw_initltsdrot_force=1;
+ __mingw_initltsdyn_force=1;
+ __mingw_initltssuo_force=1;
pDOSHeader = (PIMAGE_DOS_HEADER) &__ImageBase;
if (pDOSHeader->e_magic != IMAGE_DOS_SIGNATURE)
lib/libc/mingw/crt/mingw_helpers.c
@@ -5,4 +5,4 @@
*/
/* 0:console, 1:windows. */
-int mingw_app_type = 0;
+int __mingw_app_type = 0;
lib/libc/mingw/crt/pseudo-reloc.c
@@ -21,6 +21,7 @@
#include <stdarg.h>
#include <memory.h>
#include <internal.h>
+#include <stdint.h>
#if defined(__CYGWIN__)
#include <wchar.h>
@@ -47,7 +48,7 @@
extern char __RUNTIME_PSEUDO_RELOC_LIST__;
extern char __RUNTIME_PSEUDO_RELOC_LIST_END__;
-extern char __MINGW_LSYMBOL(_image_base__);
+extern IMAGE_DOS_HEADER __MINGW_LSYMBOL(_image_base__);
void _pei386_runtime_relocator (void);
@@ -311,6 +312,7 @@ do_pseudo_reloc (void * start, void * end, void * base)
ptrdiff_t reloc_target = (ptrdiff_t) ((char *)end - (char*)start);
runtime_pseudo_reloc_v2 *v2_hdr = (runtime_pseudo_reloc_v2 *) start;
runtime_pseudo_reloc_item_v2 *r;
+ unsigned int bits;
/* A valid relocation list will contain at least one entry, and
* one v1 data structure (the smallest one) requires two DWORDs.
@@ -440,6 +442,23 @@ do_pseudo_reloc (void * start, void * end, void * base)
reldata -= ((ptrdiff_t) base + r->sym);
reldata += addr_imp;
+ bits = r->flags & 0xff;
+ if (bits < sizeof(ptrdiff_t)*8)
+ {
+ /* Check for overflows. We don't know if the target address is
+ * interpreted as a relative offset or as a truncated absolute
+ * address - to avoid false positives, allow offsets within the
+ * whole range of signed and unsigned N bits numbers, but error
+ * out for anything outside of that. Thus for relative offsets,
+ * this won't catch offsets that are only barely too large. */
+ ptrdiff_t max_unsigned = (1LL << bits) - 1;
+ ptrdiff_t min_signed = UINTPTR_MAX << (bits - 1);
+ if (reldata > max_unsigned || reldata < min_signed)
+ __report_error ("%d bit pseudo relocation at %p out of range, "
+ "targeting %p, yielding the value %p.\n",
+ bits, reloc_target, addr_imp, reldata);
+ }
+
/* Write the new relocation value back to *reloc_target */
switch ((r->flags & 0xff))
{
lib/libc/mingw/crt/tlssup.c
@@ -170,6 +170,6 @@ __dyn_tls_dtor (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
_CRTALLOC(".CRT$XLD") PIMAGE_TLS_CALLBACK __xl_d = (PIMAGE_TLS_CALLBACK) __dyn_tls_dtor;
-int mingw_initltsdrot_force = 0;
-int mingw_initltsdyn_force = 0;
-int mingw_initltssuo_force = 0;
+int __mingw_initltsdrot_force = 0;
+int __mingw_initltsdyn_force = 0;
+int __mingw_initltssuo_force = 0;
lib/libc/mingw/gdtoa/strtopx.c
@@ -127,4 +127,18 @@ long double __cdecl
__mingw_strtold (const char * __restrict__ src, char ** __restrict__ endptr)
__attribute__((alias("__strtold")));
+long double __cdecl
+strtold (const char * __restrict__ src, char ** __restrict__ endptr)
+ __attribute__((alias("__strtold")));
+
+#elif defined(__arm__) || defined(__aarch64__) || defined(_ARM_) || defined(_ARM64_)
+/* For ARM, where long double == double, provide the long double function as
+ * an alias for __strtod. Do this in a separate object file from other
+ * functions, to avoid linker conflicts if object files import both 'strtold'
+ * from libucrt*.a and the object file providing '__strtod'. */
+long double __cdecl
+strtold (const char * __restrict__ src, char ** __restrict__ endptr)
+{
+ return __mingw_strtod(src, endptr);
+}
#endif
lib/libc/mingw/include/config.h
@@ -1,18 +1,15 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
-/* Whether the linker provides __CTOR_LIST__ */
-#define HAVE_CTOR_LIST 1
-
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
+/* Define to 1 if you have the <stdio.h> header file. */
+#define HAVE_STDIO_H 1
+
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
@@ -52,7 +49,9 @@
/* Define to the version of this package. */
#define PACKAGE_VERSION "4.0b"
-/* Define to 1 if you have the ANSI C header files. */
+/* Define to 1 if all of the C90 standard headers exist (not just the ones
+ required in a freestanding environment). This macro is provided for
+ backward compatibility; new code need not use it. */
#define STDC_HEADERS 1
/* Version number of package */
lib/libc/mingw/include/msvcrt.h
@@ -1,7 +1,7 @@
#include <winbase.h>
-#ifndef __LIBMSVCRT__
-#error "This file should only be used in libmsvcrt.a"
+#ifndef __LIBMSVCRT_OS__
+#error "This file should only be used in libmsvcrt-os.a"
#endif
static inline HANDLE __mingw_get_msvcrt_handle(void)
lib/libc/mingw/lib64/bthprops.def → lib/libc/mingw/lib-common/bthprops.def
File renamed without changes
lib/libc/mingw/libarm32/fwpuclnt.def → lib/libc/mingw/lib-common/fwpuclnt.def
@@ -1,7 +1,7 @@
;
; Definition file of fwpuclnt.dll
; Automatic generated by gendef
-; written by Kai Tietz 2008-2014
+; written by Kai Tietz 2008
;
LIBRARY "fwpuclnt.dll"
EXPORTS
@@ -9,12 +9,14 @@ FwpiExpandCriteria0
FwpiFreeCriteria0
FwpiVpnTriggerAddAppSids
FwpiVpnTriggerAddFilePaths
+FwpiVpnTriggerAddSecurityDescriptor
FwpiVpnTriggerConfigureParameters
FwpiVpnTriggerEventSubscribe0
FwpiVpnTriggerEventUnsubscribe0
FwpiVpnTriggerInitializeNrptTriggering
FwpiVpnTriggerRemoveAppSids
FwpiVpnTriggerRemoveFilePaths
+FwpiVpnTriggerRemoveSecurityDescriptor
FwpiVpnTriggerResetNrptTriggering
FwpiVpnTriggerSetStateDisconnected
FwpiVpnTriggerUninitializeNrptTriggering
@@ -40,6 +42,8 @@ FwpmConnectionSetSecurityInfo0
FwpmConnectionSubscribe0
FwpmConnectionUnsubscribe0
FwpmDiagnoseNetFailure0
+FwpmDynamicKeywordSubscribe0
+FwpmDynamicKeywordUnsubscribe0
FwpmEngineClose0
FwpmEngineGetOption0
FwpmEngineGetSecurityInfo0
@@ -49,6 +53,7 @@ FwpmEngineSetSecurityInfo0
FwpmEventProviderCreate0
FwpmEventProviderDestroy0
FwpmEventProviderFireNetEvent0
+FwpmEventProviderFireNetEventEx0
FwpmEventProviderIsNetEventTypeEnabled0
FwpmFilterAdd0
FwpmFilterCreateEnumHandle0
@@ -66,9 +71,15 @@ FwpmFilterUnsubscribeChanges0
FwpmFreeMemory0
FwpmGetAppIdFromFileName0
FwpmGetSidFromOnlineId0
+FwpmIPsecS2STunnelAddConditions0
+FwpmIPsecS2STunnelAddInterfaceToCompartment0
+FwpmIPsecS2STunnelGetInterfaceForCompartment0
+FwpmIPsecS2STunnelRemoveConditions0
+FwpmIPsecS2STunnelRemoveInterfaceFromCompartment0
FwpmIPsecTunnelAdd0
FwpmIPsecTunnelAdd1
FwpmIPsecTunnelAdd2
+FwpmIPsecTunnelAdd3
FwpmIPsecTunnelAddConditions0
FwpmIPsecTunnelDeleteByKey0
FwpmLayerCreateEnumHandle0
@@ -79,12 +90,19 @@ FwpmLayerGetByKey0
FwpmLayerGetSecurityInfoByKey0
FwpmLayerSetSecurityInfoByKey0
FwpmNetEventCreateEnumHandle0
+FwpmNetEventCreateEnumHandleEx
FwpmNetEventDestroyEnumHandle0
FwpmNetEventEnum0
FwpmNetEventEnum1
FwpmNetEventEnum2
+FwpmNetEventEnum3
+FwpmNetEventEnum4
+FwpmNetEventEnum5
FwpmNetEventSubscribe0
FwpmNetEventSubscribe1
+FwpmNetEventSubscribe2
+FwpmNetEventSubscribe3
+FwpmNetEventSubscribe4
FwpmNetEventSubscriptionsGet0
FwpmNetEventUnsubscribe0
FwpmNetEventsGetSecurityInfo0
@@ -95,6 +113,7 @@ FwpmProviderAdd0
FwpmProviderContextAdd0
FwpmProviderContextAdd1
FwpmProviderContextAdd2
+FwpmProviderContextAdd3
FwpmProviderContextCreateEnumHandle0
FwpmProviderContextDeleteById0
FwpmProviderContextDeleteByKey0
@@ -102,12 +121,15 @@ FwpmProviderContextDestroyEnumHandle0
FwpmProviderContextEnum0
FwpmProviderContextEnum1
FwpmProviderContextEnum2
+FwpmProviderContextEnum3
FwpmProviderContextGetById0
FwpmProviderContextGetById1
FwpmProviderContextGetById2
+FwpmProviderContextGetById3
FwpmProviderContextGetByKey0
FwpmProviderContextGetByKey1
FwpmProviderContextGetByKey2
+FwpmProviderContextGetByKey3
FwpmProviderContextGetSecurityInfoByKey0
FwpmProviderContextSetSecurityInfoByKey0
FwpmProviderContextSubscribeChanges0
@@ -149,6 +171,10 @@ FwpmvSwitchEventUnsubscribe0
FwpmvSwitchEventsGetSecurityInfo0
FwpmvSwitchEventsSetSecurityInfo0
FwppConnectionGetByIPsecInfo
+FwppConnectionGetByS2STunnelId
+FwppConnectionGetS2STunnelId
+FwppGetMD5HashBytes
+FwppIPsecSaContextCreate
FwpsAleEndpointCreateEnumHandle0
FwpsAleEndpointDestroyEnumHandle0
FwpsAleEndpointEnum0
lib/libc/mingw/lib64/glu32.def → lib/libc/mingw/lib-common/glu32.def
File renamed without changes
lib/libc/mingw/lib-common/msvcrt.def.in
@@ -930,7 +930,7 @@ _scalb
F_X64(_scalbf)
_scanf_l
_scanf_s_l
-_scprintf
+F_NON_I386(_scprintf) ; i386 _scprintf replaced by emu
_scprintf_l
_scprintf_p_l
_scwprintf
@@ -1111,7 +1111,7 @@ _vprintf_l
_vprintf_p
_vprintf_p_l
_vprintf_s_l
-_vscprintf
+F_NON_I386(_vscprintf) ; i386 _vscprintf replaced by emu
_vscprintf_l
_vscprintf_p_l
_vscwprintf
lib/libc/mingw/lib-common/mswsock.def
@@ -22,6 +22,8 @@ MigrateWinsockConfiguration
MigrateWinsockConfigurationEx
NPLoadNameSpaces
NSPStartup
+; MSDN says ProcessSocketNotifications is from ws2_32.dll, not mswsock.dll
+; ProcessSocketNotifications
SetServiceA
SetServiceW
StartWsdpService
lib/libc/mingw/lib-common/ntdll.def.in
@@ -256,6 +256,7 @@ NtAccessCheckByTypeAndAuditAlarm
NtAccessCheckByTypeResultList
NtAccessCheckByTypeResultListAndAuditAlarm
NtAccessCheckByTypeResultListAndAuditAlarmByHandle
+NtAcquireCrossVmMutant
NtAcquireProcessActivityReference
NtAddAtom
NtAddAtomEx
@@ -310,6 +311,8 @@ NtCancelSynchronousIoFile
NtCancelTimer
NtCancelTimer2
NtCancelWaitCompletionPacket
+NtChangeProcessState
+NtChangeThreadState
NtClearEvent
NtClose
NtCloseObjectAuditAlarm
@@ -325,8 +328,10 @@ NtCompleteConnectPort
NtCompressKey
NtConnectPort
NtContinue
+NtContinueEx
NtConvertBetweenAuxiliaryCounterAndPerformanceCounter
NtCreateCrossVmEvent
+NtCreateCrossVmMutant
NtCreateDebugObject
NtCreateDirectoryObject
NtCreateDirectoryObjectEx
@@ -337,6 +342,7 @@ NtCreateEventPair
NtCreateFile
NtCreateIRTimer
NtCreateIoCompletion
+NtCreateIoRing
NtCreateJobObject
NtCreateJobSet
NtCreateKey
@@ -352,6 +358,7 @@ NtCreatePort
NtCreatePrivateNamespace
NtCreateProcess
NtCreateProcessEx
+NtCreateProcessStateChange
NtCreateProfile
NtCreateProfileEx
NtCreateRegistryTransaction
@@ -362,6 +369,7 @@ NtCreateSemaphore
NtCreateSymbolicLinkObject
NtCreateThread
NtCreateThreadEx
+NtCreateThreadStateChange
NtCreateTimer
NtCreateTimer2
NtCreateToken
@@ -387,6 +395,7 @@ NtDeleteValueKey
NtDeleteWnfStateData
NtDeleteWnfStateName
NtDeviceIoControlFile
+NtDirectGraphicsCall
NtDisableLastKnownGood
NtDisplayString
NtDrawText
@@ -543,6 +552,7 @@ NtQueryInformationWorkerFactory
NtQueryInstallUILanguage
NtQueryIntervalProfile
NtQueryIoCompletion
+NtQueryIoRingCapabilities
NtQueryKey
NtQueryLicenseValue
NtQueryMultipleValueKey
@@ -573,6 +583,7 @@ NtQueryWnfStateData
NtQueryWnfStateNameInformation
NtQueueApcThread
NtQueueApcThreadEx
+NtQueueApcThreadEx2
NtRaiseException
NtRaiseHardError
NtReadFile
@@ -580,6 +591,7 @@ NtReadFileScatter
NtReadOnlyEnlistment
NtReadRequestData
NtReadVirtualMemory
+NtReadVirtualMemoryEx
NtRecoverEnlistment
NtRecoverResourceManager
NtRecoverTransactionManager
@@ -639,6 +651,7 @@ NtSetIRTimer
NtSetInformationDebugObject
NtSetInformationEnlistment
NtSetInformationFile
+NtSetInformationIoRing
NtSetInformationJobObject
NtSetInformationKey
NtSetInformationObject
@@ -679,6 +692,7 @@ NtSignalAndWaitForSingleObject
NtSinglePhaseReject
NtStartProfile
NtStopProfile
+NtSubmitIoRing
NtSubscribeWnfStateChange
NtSuspendProcess
NtSuspendThread
@@ -836,6 +850,7 @@ RtlCanonicalizeDomainName
RtlCapabilityCheck
RtlCapabilityCheckForSingleSessionSku
RtlCaptureContext
+RtlCaptureContext2
RtlCaptureStackBackTrace
RtlCharToInteger
RtlCheckBootStatusIntegrity
@@ -864,6 +879,8 @@ RtlCommitDebugInfo
RtlCommitMemoryStream
RtlCompactHeap
RtlCompareAltitudes
+RtlCompareExchangePointerMapping
+RtlCompareExchangePropertyStore
RtlCompareMemory
RtlCompareMemoryUlong
RtlCompareString
@@ -877,6 +894,7 @@ RtlComputePrivatizedDllName_U
RtlConnectToSm
RtlConsoleMultiByteToUnicodeN
RtlConstructCrossVmEventPath
+RtlConstructCrossVmMutexPath
RtlContractHashTable
RtlConvertDeviceFamilyInfoToString
RtlConvertExclusiveToShared
@@ -957,6 +975,7 @@ RtlDecompressBuffer
RtlDecompressBufferEx
RtlDecompressFragment
RtlDefaultNpAcl
+RtlDelayExecution
RtlDelete
RtlDeleteAce
RtlDeleteAtomFromAtomTable
@@ -1071,6 +1090,7 @@ RtlFindActivationContextSectionString
RtlFindCharInUnicodeString
RtlFindClearBits
RtlFindClearBitsAndSet
+RtlFindClearBitsAndSetEx
F_X64(RtlFindClearBitsEx)
RtlFindClearRuns
RtlFindClosestEncodableLength
@@ -1149,6 +1169,7 @@ RtlGetFullPathName_UEx
RtlGetFullPathName_UstrEx
RtlGetFunctionTableListHead
RtlGetGroupSecurityDescriptor
+RtlGetImageFileMachines
RtlGetIntegerAtom
RtlGetInterruptTimePrecise
RtlGetLastNtStatus
@@ -1172,6 +1193,7 @@ RtlGetPersistedStateLocation
RtlGetProcessHeaps
RtlGetProcessPreferredUILanguages
RtlGetProductInfo
+RtlGetReturnAddressHijackTarget
RtlGetSaclSecurityDescriptor
RtlGetSearchPath
RtlGetSecurityDescriptorRMControl
@@ -1180,7 +1202,9 @@ RtlGetSetBootStatusData
RtlGetSuiteMask
RtlGetSystemBootStatus
RtlGetSystemBootStatusEx
+RtlGetSystemGlobalData
RtlGetSystemPreferredUILanguages
+RtlGetSystemTimeAndBias
RtlGetSystemTimePrecise
RtlGetThreadErrorMode
RtlGetThreadLangIdByIndex
@@ -1282,6 +1306,7 @@ RtlIpv6StringToAddressExA
RtlIpv6StringToAddressExW
RtlIpv6StringToAddressW
RtlIsActivationContextActive
+RtlIsApiSetImplemented
RtlIsCapabilitySid
RtlIsCloudFilesPlaceholder
RtlIsCriticalSectionLocked
@@ -1290,7 +1315,9 @@ RtlIsCurrentProcess
RtlIsCurrentThread
RtlIsCurrentThreadAttachExempt
RtlIsDosDeviceName_U
+RtlIsEcCode
RtlIsElevatedRid
+RtlIsEnclaveFeaturePresent
RtlIsGenericTableEmpty
RtlIsGenericTableEmptyAvl
RtlIsMultiSessionSku
@@ -1364,6 +1391,7 @@ RtlNewSecurityObjectWithMultipleInheritance
RtlNormalizeProcessParams
F_X86_ANY(RtlNormalizeSecurityDescriptor)
RtlNormalizeString
+RtlNotifyFeatureUsage
RtlNtPathNameToDosPathName
RtlNtStatusToDosError
RtlNtStatusToDosErrorNoTeb
@@ -1380,6 +1408,7 @@ RtlNumberOfSetBitsUlongPtr
RtlOemStringToUnicodeSize
RtlOemStringToUnicodeString
RtlOemToUnicodeN
+RtlOpenCrossProcessEmulatorWorkConnection
RtlOpenCurrentUser
RtlOsDeploymentState
RtlOwnerAcesPresent
@@ -1394,6 +1423,7 @@ RtlProtectHeap
RtlPublishWnfStateData
RtlPushFrame
RtlQueryActivationContextApplicationSettings
+RtlQueryAllFeatureConfigurations
RtlQueryAtomInAtomTable
RtlQueryCriticalSectionOwner
RtlQueryDepthSList
@@ -1401,6 +1431,9 @@ RtlQueryDynamicTimeZoneInformation
RtlQueryElevationFlags
RtlQueryEnvironmentVariable
RtlQueryEnvironmentVariable_U
+RtlQueryFeatureConfiguration
+RtlQueryFeatureConfigurationChangeStamp
+RtlQueryFeatureUsageNotificationSubscriptions
RtlQueryHeapInformation
RtlQueryImageMitigationPolicy
RtlQueryInformationAcl
@@ -1413,11 +1446,13 @@ RtlQueryPackageIdentity
RtlQueryPackageIdentityEx
RtlQueryPerformanceCounter
RtlQueryPerformanceFrequency
+RtlQueryPointerMapping
RtlQueryProcessBackTraceInformation
RtlQueryProcessDebugInformation
RtlQueryProcessHeapInformation
RtlQueryProcessLockInformation
RtlQueryProcessPlaceholderCompatibilityMode
+RtlQueryPropertyStore
RtlQueryProtectedPolicy
RtlQueryRegistryValueWithFallback
RtlQueryRegistryValues
@@ -1439,6 +1474,7 @@ RtlQueueApcWow64Thread
RtlQueueWorkItem
RtlRaiseCustomSystemEventTrigger
RtlRaiseException
+RtlRaiseNoncontinuableException
RtlRaiseStatus
RtlRandom
RtlRandomEx
@@ -1450,6 +1486,7 @@ RtlReadOutOfProcessMemoryStream
RtlReadThreadProfilingData
RtlRealPredecessor
RtlRealSuccessor
+RtlRegisterFeatureConfigurationChangeNotification
RtlRegisterForWnfMetaNotification
RtlRegisterSecureMemoryCacheCallback
RtlRegisterThreadWithCsrss
@@ -1465,7 +1502,9 @@ RtlReleaseSRWLockExclusive
RtlReleaseSRWLockShared
RtlRemoteCall
RtlRemoveEntryHashTable
+RtlRemovePointerMapping
RtlRemovePrivileges
+RtlRemovePropertyStore
RtlRemoveVectoredContinueHandler
RtlRemoveVectoredExceptionHandler
RtlReplaceSidInSd
@@ -1515,6 +1554,7 @@ RtlSetEnvironmentStrings
RtlSetEnvironmentVar
RtlSetEnvironmentVariable
RtlSetExtendedFeaturesMask
+RtlSetFeatureConfigurations
RtlSetGroupSecurityDescriptor
RtlSetHeapInformation
RtlSetImageMitigationPolicy
@@ -1571,6 +1611,7 @@ RtlStringFromGUIDEx
RtlStronglyEnumerateEntryHashTable
RtlSubAuthorityCountSid
RtlSubAuthoritySid
+RtlSubscribeForFeatureUsageNotification
RtlSubscribeWnfStateChangeNotification
RtlSubtreePredecessor
RtlSubtreeSuccessor
@@ -1626,6 +1667,8 @@ RtlUnlockMemoryBlockLookaside
RtlUnlockMemoryStreamRegion
RtlUnlockMemoryZone
RtlUnlockModuleSection
+RtlUnregisterFeatureConfigurationChangeNotification
+RtlUnsubscribeFromFeatureUsageNotifications
RtlUnsubscribeWnfNotificationWaitForCompletion
RtlUnsubscribeWnfNotificationWithCompletionCallback
RtlUnsubscribeWnfStateChangeNotification
@@ -1659,6 +1702,7 @@ RtlValidateProcessHeaps
RtlValidateUnicodeString
RtlVerifyVersionInfo
RtlVirtualUnwind
+RtlVirtualUnwind2
RtlWaitForWnfMetaNotification
RtlWaitOnAddress
RtlWakeAddressAll
@@ -1674,6 +1718,8 @@ RtlWerpReportException
RtlWnfCompareChangeStamp
RtlWnfDllUnloadCallback
RtlWow64CallFunction64
+RtlWow64ChangeProcessState
+RtlWow64ChangeThreadState
RtlWow64EnableFsRedirection
RtlWow64EnableFsRedirectionEx
F64(RtlWow64GetCpuAreaInfo)
@@ -1870,6 +1916,7 @@ ZwAccessCheckByTypeAndAuditAlarm
ZwAccessCheckByTypeResultList
ZwAccessCheckByTypeResultListAndAuditAlarm
ZwAccessCheckByTypeResultListAndAuditAlarmByHandle
+ZwAcquireCrossVmMutant
ZwAcquireProcessActivityReference
ZwAddAtom
ZwAddAtomEx
@@ -1924,6 +1971,8 @@ ZwCancelSynchronousIoFile
ZwCancelTimer
ZwCancelTimer2
ZwCancelWaitCompletionPacket
+ZwChangeProcessState
+ZwChangeThreadState
ZwClearEvent
ZwClose
ZwCloseObjectAuditAlarm
@@ -1939,8 +1988,10 @@ ZwCompleteConnectPort
ZwCompressKey
ZwConnectPort
ZwContinue
+ZwContinueEx
ZwConvertBetweenAuxiliaryCounterAndPerformanceCounter
ZwCreateCrossVmEvent
+ZwCreateCrossVmMutant
ZwCreateDebugObject
ZwCreateDirectoryObject
ZwCreateDirectoryObjectEx
@@ -1951,6 +2002,7 @@ ZwCreateEventPair
ZwCreateFile
ZwCreateIRTimer
ZwCreateIoCompletion
+ZwCreateIoRing
ZwCreateJobObject
ZwCreateJobSet
ZwCreateKey
@@ -1966,6 +2018,7 @@ ZwCreatePort
ZwCreatePrivateNamespace
ZwCreateProcess
ZwCreateProcessEx
+ZwCreateProcessStateChange
ZwCreateProfile
ZwCreateProfileEx
ZwCreateRegistryTransaction
@@ -1976,6 +2029,7 @@ ZwCreateSemaphore
ZwCreateSymbolicLinkObject
ZwCreateThread
ZwCreateThreadEx
+ZwCreateThreadStateChange
ZwCreateTimer
ZwCreateTimer2
ZwCreateToken
@@ -2001,6 +2055,7 @@ ZwDeleteValueKey
ZwDeleteWnfStateData
ZwDeleteWnfStateName
ZwDeviceIoControlFile
+ZwDirectGraphicsCall
ZwDisableLastKnownGood
ZwDisplayString
ZwDrawText
@@ -2156,6 +2211,7 @@ ZwQueryInformationWorkerFactory
ZwQueryInstallUILanguage
ZwQueryIntervalProfile
ZwQueryIoCompletion
+ZwQueryIoRingCapabilities
ZwQueryKey
ZwQueryLicenseValue
ZwQueryMultipleValueKey
@@ -2186,6 +2242,7 @@ ZwQueryWnfStateData
ZwQueryWnfStateNameInformation
ZwQueueApcThread
ZwQueueApcThreadEx
+ZwQueueApcThreadEx2
ZwRaiseException
ZwRaiseHardError
ZwReadFile
@@ -2193,6 +2250,7 @@ ZwReadFileScatter
ZwReadOnlyEnlistment
ZwReadRequestData
ZwReadVirtualMemory
+ZwReadVirtualMemoryEx
ZwRecoverEnlistment
ZwRecoverResourceManager
ZwRecoverTransactionManager
@@ -2252,6 +2310,7 @@ ZwSetIRTimer
ZwSetInformationDebugObject
ZwSetInformationEnlistment
ZwSetInformationFile
+ZwSetInformationIoRing
ZwSetInformationJobObject
ZwSetInformationKey
ZwSetInformationObject
@@ -2292,6 +2351,7 @@ ZwSignalAndWaitForSingleObject
ZwSinglePhaseReject
ZwStartProfile
ZwStopProfile
+ZwSubmitIoRing
ZwSubscribeWnfStateChange
ZwSuspendProcess
ZwSuspendThread
lib/libc/mingw/lib64/opengl32.def → lib/libc/mingw/lib-common/opengl32.def
File renamed without changes
lib/libc/mingw/lib-common/query.def
@@ -0,0 +1,17 @@
+;
+; Definition file of query.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "query.dll"
+EXPORTS
+LoadBinaryFilter
+LoadTextFilter
+BindIFilterFromStorage
+BindIFilterFromStream
+DllCanUnloadNow
+DllGetClassObject
+DllRegisterServer
+DllUnregisterServer
+LoadIFilter
+LoadIFilterEx
lib/libc/mingw/lib-common/tbs.def
@@ -11,10 +11,12 @@ GetDeviceID
GetDeviceIDString
GetDeviceIDWithTimeout
Tbsi_Context_Create
+Tbsi_Create_Windows_Key
Tbsi_FilterLog
Tbsi_GetDeviceInfo
Tbsi_Get_OwnerAuth
Tbsi_Get_TCG_Log
+Tbsi_Get_TCG_Log_Ex
Tbsi_Physical_Presence_Command
Tbsi_Revoke_Attestation
Tbsi_ShaHash
@@ -22,4 +24,5 @@ Tbsip_Cancel_Commands
Tbsip_Context_Close
Tbsip_Submit_Command
Tbsip_Submit_Command_NonBlocking
+Tbsip_TestInterruptInformation
Tbsip_TestMorBit
lib/libc/mingw/lib-common/ws2_32.def.in
@@ -38,6 +38,7 @@ GetHostNameW
GetNameInfoW
InetNtopW
InetPtonW
+ProcessSocketNotifications
SetAddrInfoExA
SetAddrInfoExW
WPUCompleteOverlappedRequest
lib/libc/mingw/lib32/authz.def
@@ -8,26 +8,38 @@ EXPORTS
AuthzAccessCheck@36
AuthzAddSidsToContext@24
AuthzCachedAccessCheck@20
+AuthzComputeEffectivePermission@60
AuthzEnumerateSecurityEventSources@16
AuthzEvaluateSacl@24
AuthzFreeAuditEvent@4
+AuthzFreeCentralAccessPolicyCache@0
AuthzFreeContext@4
AuthzFreeHandle@4
AuthzFreeResourceManager@4
AuthzGetInformationFromContext@20
+AuthzInitializeCompoundContext@12
AuthzInitializeContextFromAuthzContext@28
AuthzInitializeContextFromSid@32
AuthzInitializeContextFromToken@32
-AuthzInitializeObjectAccessAuditEvent
-AuthzInitializeObjectAccessAuditEvent2
+AuthzInitializeObjectAccessAuditEvent@0
+AuthzInitializeObjectAccessAuditEvent2@0
+AuthzInitializeRemoteAccessCheck@4
+AuthzInitializeRemoteResourceManager@8
AuthzInitializeResourceManager@24
+AuthzInitializeResourceManagerEx@12
AuthzInstallSecurityEventSource@8
+AuthzModifyClaims@16
AuthzModifySecurityAttributes@12
+AuthzModifySids@16
AuthzOpenObjectAudit@32
+AuthzRegisterCapChangeNotification@12
AuthzRegisterSecurityEventSource@12
-AuthzReportSecurityEvent
+AuthzReportSecurityEvent@0
AuthzReportSecurityEventFromParams@20
+AuthzSetAppContainerInformation@16
+AuthzShutdownRemoteAccessCheck@0
AuthzUninstallSecurityEventSource@8
+AuthzUnregisterCapChangeNotification@4
AuthzUnregisterSecurityEventSource@8
AuthziAccessCheckEx@40
AuthziAllocateAuditParams@8
@@ -38,9 +50,9 @@ AuthziFreeAuditQueue@4
AuthziGenerateAdminAlertAuditW@16
AuthziInitializeAuditEvent@44
AuthziInitializeAuditEventType@20
-AuthziInitializeAuditParams
+AuthziInitializeAuditParams@0
AuthziInitializeAuditParamsFromArray@20
-AuthziInitializeAuditParamsWithRM
+AuthziInitializeAuditParamsWithRM@0
AuthziInitializeAuditQueue@20
AuthziInitializeContextFromSid@32
AuthziLogAuditEvent@12
@@ -48,6 +60,18 @@ AuthziModifyAuditEvent2@32
AuthziModifyAuditEvent@28
AuthziModifyAuditEventType@20
AuthziModifyAuditQueue@24
+AuthziQueryAuditPolicy@0
+AuthziSetAuditPolicy@0
AuthziModifySecurityAttributes@12
AuthziQuerySecurityAttributes@24
-AuthziSourceAudit
+AuthziSourceAudit@0
+FreeClaimDefinitions@8
+FreeClaimDictionary@4
+GenerateNewCAPID@4
+GetCentralAccessPoliciesByCapID@28
+GetCentralAccessPoliciesByDN@20
+GetClaimDefinitions@16
+GetClaimDomainInfo@12
+GetDefaultCAPESecurityDescriptor@4
+InitializeClaimDictionary@12
+RefreshClaimDictionary@4
lib/libc/mingw/lib32/fwpuclnt.def
@@ -5,6 +5,21 @@
;
LIBRARY "fwpuclnt.dll"
EXPORTS
+FwpiExpandCriteria0@20
+FwpiFreeCriteria0@8
+FwpiVpnTriggerAddAppSids@12
+FwpiVpnTriggerAddFilePaths@12
+FwpiVpnTriggerAddSecurityDescriptor@8
+FwpiVpnTriggerConfigureParameters@8
+FwpiVpnTriggerEventSubscribe0@20
+FwpiVpnTriggerEventUnsubscribe0@8
+FwpiVpnTriggerInitializeNrptTriggering@8
+FwpiVpnTriggerRemoveAppSids@4
+FwpiVpnTriggerRemoveFilePaths@4
+FwpiVpnTriggerRemoveSecurityDescriptor@4
+FwpiVpnTriggerResetNrptTriggering@4
+FwpiVpnTriggerSetStateDisconnected@8
+FwpiVpnTriggerUninitializeNrptTriggering@4
FwpmCalloutAdd0@16
FwpmCalloutCreateEnumHandle0@12
FwpmCalloutDeleteById0@8
@@ -18,7 +33,17 @@ FwpmCalloutSetSecurityInfoByKey0@28
FwpmCalloutSubscribeChanges0@20
FwpmCalloutSubscriptionsGet0@12
FwpmCalloutUnsubscribeChanges0@8
+FwpmConnectionCreateEnumHandle0@12
+FwpmConnectionDestroyEnumHandle0@8
+FwpmConnectionEnum0@20
+FwpmConnectionGetById0@16
+FwpmConnectionGetSecurityInfo0@28
+FwpmConnectionSetSecurityInfo0@24
+FwpmConnectionSubscribe0@20
+FwpmConnectionUnsubscribe0@8
FwpmDiagnoseNetFailure0@12
+FwpmDynamicKeywordSubscribe0@16
+FwpmDynamicKeywordUnsubscribe0@4
FwpmEngineClose0@4
FwpmEngineGetOption0@12
FwpmEngineGetSecurityInfo0@28
@@ -27,7 +52,8 @@ FwpmEngineSetOption0@12
FwpmEngineSetSecurityInfo0@24
FwpmEventProviderCreate0@8
FwpmEventProviderDestroy0@4
-FwpmEventProviderFireNetEvent0@12
+FwpmEventProviderFireNetEvent0@16
+FwpmEventProviderFireNetEventEx0@20
FwpmEventProviderIsNetEventTypeEnabled0@12
FwpmFilterAdd0@16
FwpmFilterCreateEnumHandle0@12
@@ -44,7 +70,17 @@ FwpmFilterSubscriptionsGet0@12
FwpmFilterUnsubscribeChanges0@8
FwpmFreeMemory0@4
FwpmGetAppIdFromFileName0@8
+FwpmGetSidFromOnlineId0@8
+FwpmIPsecS2STunnelAddConditions0@28
+FwpmIPsecS2STunnelAddInterfaceToCompartment0@12
+FwpmIPsecS2STunnelGetInterfaceForCompartment0@12
+FwpmIPsecS2STunnelRemoveConditions0@28
+FwpmIPsecS2STunnelRemoveInterfaceFromCompartment0@8
FwpmIPsecTunnelAdd0@28
+FwpmIPsecTunnelAdd1@32
+FwpmIPsecTunnelAdd2@32
+FwpmIPsecTunnelAdd3@32
+FwpmIPsecTunnelAddConditions0@20
FwpmIPsecTunnelDeleteByKey0@8
FwpmLayerCreateEnumHandle0@12
FwpmLayerDestroyEnumHandle0@8
@@ -54,19 +90,46 @@ FwpmLayerGetByKey0@12
FwpmLayerGetSecurityInfoByKey0@32
FwpmLayerSetSecurityInfoByKey0@28
FwpmNetEventCreateEnumHandle0@12
+FwpmNetEventCreateEnumHandleEx@16
FwpmNetEventDestroyEnumHandle0@8
FwpmNetEventEnum0@20
+FwpmNetEventEnum1@20
+FwpmNetEventEnum2@20
+FwpmNetEventEnum3@20
+FwpmNetEventEnum4@20
+FwpmNetEventEnum5@20
+FwpmNetEventSubscribe0@20
+FwpmNetEventSubscribe1@20
+FwpmNetEventSubscribe2@20
+FwpmNetEventSubscribe3@20
+FwpmNetEventSubscribe4@20
+FwpmNetEventSubscriptionsGet0@12
+FwpmNetEventUnsubscribe0@8
FwpmNetEventsGetSecurityInfo0@28
+FwpmNetEventsLost0@8
FwpmNetEventsSetSecurityInfo0@24
+FwpmProcessNameResolutionEvent0@16
FwpmProviderAdd0@12
FwpmProviderContextAdd0@16
+FwpmProviderContextAdd1@16
+FwpmProviderContextAdd2@16
+FwpmProviderContextAdd3@16
FwpmProviderContextCreateEnumHandle0@12
FwpmProviderContextDeleteById0@12
FwpmProviderContextDeleteByKey0@8
FwpmProviderContextDestroyEnumHandle0@8
FwpmProviderContextEnum0@20
+FwpmProviderContextEnum1@20
+FwpmProviderContextEnum2@20
+FwpmProviderContextEnum3@20
FwpmProviderContextGetById0@16
+FwpmProviderContextGetById1@16
+FwpmProviderContextGetById2@16
+FwpmProviderContextGetById3@16
FwpmProviderContextGetByKey0@12
+FwpmProviderContextGetByKey1@12
+FwpmProviderContextGetByKey2@12
+FwpmProviderContextGetByKey3@12
FwpmProviderContextGetSecurityInfoByKey0@32
FwpmProviderContextSetSecurityInfoByKey0@28
FwpmProviderContextSubscribeChanges0@20
@@ -96,51 +159,127 @@ FwpmSubLayerSetSecurityInfoByKey0@28
FwpmSubLayerSubscribeChanges0@20
FwpmSubLayerSubscriptionsGet0@12
FwpmSubLayerUnsubscribeChanges0@8
+FwpmSystemPortsGet0@8
+FwpmSystemPortsSubscribe0@20
+FwpmSystemPortsUnsubscribe0@8
FwpmTraceRestoreDefaults0@0
FwpmTransactionAbort0@4
FwpmTransactionBegin0@8
FwpmTransactionCommit0@4
+FwpmvSwitchEventSubscribe0@20
+FwpmvSwitchEventUnsubscribe0@8
+FwpmvSwitchEventsGetSecurityInfo0@28
+FwpmvSwitchEventsSetSecurityInfo0@24
+FwppConnectionGetByIPsecInfo@20
+FwppConnectionGetByS2STunnelId@16
+FwppConnectionGetS2STunnelId@16
+FwppGetMD5HashBytes@16
+FwppIPsecSaContextCreate@36
+FwpsAleEndpointCreateEnumHandle0@12
+FwpsAleEndpointDestroyEnumHandle0@8
+FwpsAleEndpointEnum0@20
+FwpsAleEndpointGetById0@16
+FwpsAleEndpointGetSecurityInfo0@28
+FwpsAleEndpointSetSecurityInfo0@24
FwpsAleExplicitCredentialsQuery0@16
+FwpsAleGetPortStatus0@12
FwpsClassifyUser0@28
FwpsFreeMemory0@4
FwpsGetInProcReplicaOffset0@4
FwpsLayerCreateInProcReplica0@8
FwpsLayerReleaseInProcReplica0@8
FwpsOpenToken0@20
+FwpsQueryIPsecDosFWUsed0@8
+FwpsQueryIPsecOffloadDone0@8
+GetUnifiedTraceHandle@4
+IPsecDospGetSecurityInfo0@28
+IPsecDospGetStatistics0@8
+IPsecDospSetSecurityInfo0@24
+IPsecDospStateCreateEnumHandle0@12
+IPsecDospStateDestroyEnumHandle0@8
+IPsecDospStateEnum0@20
+IPsecGetKeyFromDictator0@16
IPsecGetStatistics0@8
+IPsecGetStatistics1@8
+IPsecKeyDictationCheck0@16
+IPsecKeyManagerAddAndRegister0@16
+IPsecKeyManagerGetSecurityInfoByKey0@32
+IPsecKeyManagerSetSecurityInfoByKey0@28
+IPsecKeyManagerUnregisterAndDelete0@8
+IPsecKeyManagersGet0@12
IPsecKeyModuleAdd0@12
-IPsecKeyModuleCompleteAcquire0@16
IPsecKeyModuleDelete0@8
+IPsecKeyModuleUpdateAcquire0@20
+IPsecKeyNotification0@12
IPsecSaContextAddInbound0@16
+IPsecSaContextAddInbound1@16
+IPsecSaContextAddInboundAndTrackConnection@28
IPsecSaContextAddOutbound0@16
+IPsecSaContextAddOutbound1@16
+IPsecSaContextAddOutboundAndTrackConnection@28
IPsecSaContextCreate0@16
+IPsecSaContextCreate1@20
IPsecSaContextCreateEnumHandle0@12
IPsecSaContextDeleteById0@12
IPsecSaContextDestroyEnumHandle0@8
IPsecSaContextEnum0@20
+IPsecSaContextEnum1@20
IPsecSaContextExpire0@12
IPsecSaContextGetById0@16
+IPsecSaContextGetById1@16
IPsecSaContextGetSpi0@20
+IPsecSaContextGetSpi1@20
+IPsecSaContextSetSpi0@20
+IPsecSaContextSubscribe0@20
+IPsecSaContextSubscriptionsGet0@12
+IPsecSaContextUnsubscribe0@8
+IPsecSaContextUpdate0@16
IPsecSaCreateEnumHandle0@12
IPsecSaDbGetSecurityInfo0@28
IPsecSaDbSetSecurityInfo0@24
IPsecSaDestroyEnumHandle0@8
IPsecSaEnum0@20
+IPsecSaEnum1@20
IPsecSaInitiateAsync0@16
IkeextGetConfigParameters0@4
IkeextGetStatistics0@8
+IkeextGetStatistics1@8
IkeextSaCreateEnumHandle0@12
IkeextSaDbGetSecurityInfo0@28
IkeextSaDbSetSecurityInfo0@24
IkeextSaDeleteById0@12
IkeextSaDestroyEnumHandle0@8
IkeextSaEnum0@20
+IkeextSaEnum1@20
+IkeextSaEnum2@20
IkeextSaGetById0@16
+IkeextSaGetById1@20
+IkeextSaGetById2@20
+IkeextSaUpdateAdditionalAddressesByTunnelId0@24
+IkeextSaUpdatePreferredAddressesByTunnelId0@24
IkeextSetConfigParameters0@4
+NamespaceCallout@12
+WFPRIODequeueCompletion@12
WSADeleteSocketPeerTargetName@20
WSAImpersonateSocketPeer@12
WSAQuerySocketSecurity@28
WSARevertImpersonation@0
WSASetSocketPeerTargetName@20
WSASetSocketSecurity@20
-wfpdiagW@16
+WfpCloseDPConfigureHandle@4 ; forwards to NtClose in ntdll.dll
+WfpConfigureDPSecurityDescriptor@12
+WfpCreateDPConfigureHandle@4
+WfpRIOChannelClose@4 ; forwards to NtClose in ntdll.dll
+WfpRIOCleanupRequestQueue@8
+WfpRIOCloseCompletionQueue@8
+WfpRIOCreateChannel@12
+WfpRIOCreateCompletionQueue@16
+WfpRIOCreateRequestQueue@36
+WfpRIODeregisterBuffer@12
+WfpRIOIndicateActivityThreshold@8
+WfpRIONotify@8
+WfpRIOReceive@28
+WfpRIORegisterBuffer@16
+WfpRIOResume@4
+WfpRIOSend@28
+WfpRIOSuspend@4
lib/libc/mingw/lib32/ksuser.def
@@ -1,6 +1,15 @@
-LIBRARY ksuser.dll
+;
+; Definition file of ksuser.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "ksuser.dll"
EXPORTS
+KsCreateAllocator2@12
KsCreateAllocator@12
+KsCreateClock2@12
KsCreateClock@12
+KsCreatePin2@16
KsCreatePin@16
+KsCreateTopologyNode2@16
KsCreateTopologyNode@16
lib/libc/mingw/lib32/mswsock.def
@@ -1,4 +1,9 @@
-LIBRARY MSWSOCK.DLL
+;
+; Definition file of MSWSOCK.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "MSWSOCK.dll"
EXPORTS
AcceptEx@32
EnumProtocolsA@12
@@ -10,14 +15,53 @@ GetNameByTypeA@12
GetNameByTypeW@12
GetServiceA@28
GetServiceW@28
+GetSocketErrorMessageW@4
GetTypeByNameA@8
GetTypeByNameW@8
MigrateWinsockConfiguration@12
+MigrateWinsockConfigurationEx@20
NPLoadNameSpaces@12
+NSPStartup@8
+; MSDN says ProcessSocketNotifications is from ws2_32.dll, not mswsock.dll
+; ProcessSocketNotifications@28
SetServiceA@24
SetServiceW@24
+StartWsdpService@0
+StopWsdpService@0
+Tcpip4_WSHAddressToString@20
+Tcpip4_WSHEnumProtocols@16
+Tcpip4_WSHGetBroadcastSockaddr@12
+Tcpip4_WSHGetProviderGuid@8
+Tcpip4_WSHGetSockaddrType@12
+Tcpip4_WSHGetSocketInformation@32
+Tcpip4_WSHGetWSAProtocolInfo@12
+Tcpip4_WSHGetWildcardSockaddr@12
+Tcpip4_WSHGetWinsockMapping@8
+Tcpip4_WSHIoctl@52
+Tcpip4_WSHJoinLeaf@52
+Tcpip4_WSHNotify@20
+Tcpip4_WSHOpenSocket2@32
+Tcpip4_WSHOpenSocket@24
+Tcpip4_WSHSetSocketInformation@32
+Tcpip4_WSHStringToAddress@20
+Tcpip6_WSHAddressToString@20
+Tcpip6_WSHEnumProtocols@16
+Tcpip6_WSHGetProviderGuid@8
+Tcpip6_WSHGetSockaddrType@12
+Tcpip6_WSHGetSocketInformation@32
+Tcpip6_WSHGetWSAProtocolInfo@12
+Tcpip6_WSHGetWildcardSockaddr@12
+Tcpip6_WSHGetWinsockMapping@8
+Tcpip6_WSHIoctl@52
+Tcpip6_WSHJoinLeaf@52
+Tcpip6_WSHNotify@20
+Tcpip6_WSHOpenSocket2@32
+Tcpip6_WSHOpenSocket@24
+Tcpip6_WSHSetSocketInformation@32
+Tcpip6_WSHStringToAddress@20
TransmitFile@28
WSARecvEx@16
+WSPStartup@76
dn_expand@20
getnetbyname@4
inet_network@4
lib/libc/mingw/lib32/ntdll.def
@@ -229,6 +229,7 @@ NtAccessCheckByTypeAndAuditAlarm@64
NtAccessCheckByTypeResultList@44
NtAccessCheckByTypeResultListAndAuditAlarm@64
NtAccessCheckByTypeResultListAndAuditAlarmByHandle@68
+NtAcquireCrossVmMutant@8
NtAcquireProcessActivityReference@12
NtAcquireCMFViewOwnership@12
NtAddAtom@12
@@ -284,6 +285,8 @@ NtCancelSynchronousIoFile@12
NtCancelTimer2@8
NtCancelTimer@8
NtCancelWaitCompletionPacket@8
+NtChangeProcessState@24
+NtChangeThreadState@24
NtClearEvent@4
NtClose@4
NtCloseObjectAuditAlarm@12
@@ -299,8 +302,10 @@ NtCompleteConnectPort@4
NtCompressKey@4
NtConnectPort@32
NtContinue@8
+NtContinueEx@8
NtConvertBetweenAuxiliaryCounterAndPerformanceCounter@16
NtCreateCrossVmEvent@24
+NtCreateCrossVmMutant@24
NtCreateDebugObject@16
NtCreateDirectoryObject@12
NtCreateDirectoryObjectEx@20
@@ -311,6 +316,7 @@ NtCreateEventPair@12
NtCreateFile@44
NtCreateIRTimer@12
NtCreateIoCompletion@16
+NtCreateIoRing@20
NtCreateJobObject@12
NtCreateJobSet@12
NtCreateKey@28
@@ -326,6 +332,7 @@ NtCreatePort@20
NtCreatePrivateNamespace@16
NtCreateProcess@32
NtCreateProcessEx@36
+NtCreateProcessStateChange@20
NtCreateProfile@36
NtCreateProfileEx@40
NtCreateRegistryTransaction@16
@@ -336,6 +343,7 @@ NtCreateSemaphore@20
NtCreateSymbolicLinkObject@16
NtCreateThread@32
NtCreateThreadEx@44
+NtCreateThreadStateChange@20
NtCreateTimer2@20
NtCreateTimer@16
NtCreateToken@52
@@ -362,6 +370,7 @@ NtDeleteValueKey@8
NtDeleteWnfStateData@8
NtDeleteWnfStateName@4
NtDeviceIoControlFile@40
+NtDirectGraphicsCall@20
NtDisableLastKnownGood@0
NtDisplayString@4
NtDrawText@4
@@ -420,6 +429,7 @@ NtListenPort@8
NtLoadDriver@4
NtLoadEnclaveData@36
NtLoadKey2@12
+NtLoadKey3@32
NtLoadKey@8
NtLoadKeyEx@32
NtLockFile@40
@@ -517,6 +527,7 @@ NtQueryInformationWorkerFactory@20
NtQueryInstallUILanguage@4
NtQueryIntervalProfile@8
NtQueryIoCompletion@20
+NtQueryIoRingCapabilities@8
NtQueryKey@20
NtQueryLicenseValue@20
NtQueryMultipleValueKey@24
@@ -546,6 +557,7 @@ NtQueryVolumeInformationFile@20
NtQueryWnfStateData@24
NtQueryWnfStateNameInformation@20
NtQueueApcThread@20
+NtQueueApcThreadEx2@28
NtQueueApcThreadEx@24
NtRaiseException@12
NtRaiseHardError@24
@@ -554,6 +566,7 @@ NtReadFileScatter@36
NtReadOnlyEnlistment@8
NtReadRequestData@24
NtReadVirtualMemory@20
+NtReadVirtualMemoryEx@24
NtRecoverEnlistment@8
NtRecoverResourceManager@4
NtRecoverTransactionManager@4
@@ -614,6 +627,7 @@ NtSetIRTimer@8
NtSetInformationDebugObject@20
NtSetInformationEnlistment@16
NtSetInformationFile@20
+NtSetInformationIoRing@16
NtSetInformationJobObject@16
NtSetInformationKey@16
NtSetInformationObject@16
@@ -654,6 +668,7 @@ NtSignalAndWaitForSingleObject@16
NtSinglePhaseReject@8
NtStartProfile@4
NtStopProfile@4
+NtSubmitIoRing@16
NtSubscribeWnfStateChange@16
NtSuspendProcess@4
NtSuspendThread@8
@@ -832,6 +847,8 @@ RtlCommitDebugInfo@8
RtlCommitMemoryStream@8
RtlCompactHeap@8
RtlCompareAltitudes@8
+RtlCompareExchangePointerMapping@16
+RtlCompareExchangePropertyStore@16
RtlCompareMemory@12
RtlCompareMemoryUlong@12
RtlCompareString@12
@@ -844,6 +861,7 @@ RtlComputePrivatizedDllName_U@12
RtlConnectToSm@16
RtlConsoleMultiByteToUnicodeN@24
RtlConstructCrossVmEventPath@12
+RtlConstructCrossVmMutexPath@12
RtlContractHashTable@4
RtlConvertDeviceFamilyInfoToString@16
RtlConvertExclusiveToShared@4
@@ -919,6 +937,7 @@ RtlDecompressBuffer@24
RtlDecompressBufferEx@28
RtlDecompressFragment@32
RtlDefaultNpAcl@4
+RtlDelayExecution@8
RtlDelete@4
RtlDeleteAce@8
RtlDeleteAtomFromAtomTable@8
@@ -1099,6 +1118,7 @@ RtlGetFullPathName_U@16
RtlGetFullPathName_UEx@20
RtlGetFullPathName_UstrEx@32
RtlGetGroupSecurityDescriptor@12
+RtlGetImageFileMachines@8
RtlGetIntegerAtom@8
RtlGetInterruptTimePrecise@4
RtlGetLastNtStatus@0
@@ -1122,6 +1142,7 @@ RtlGetPersistedStateLocation@28
RtlGetProcessHeaps@8
RtlGetProcessPreferredUILanguages@16
RtlGetProductInfo@20
+RtlGetReturnAddressHijackTarget@0
RtlGetSaclSecurityDescriptor@16
RtlGetSearchPath@4
RtlGetSecurityDescriptorRMControl@8
@@ -1130,7 +1151,9 @@ RtlGetSetBootStatusData@24
RtlGetSuiteMask@0
RtlGetSystemBootStatus@16
RtlGetSystemBootStatusEx@12
+RtlGetSystemGlobalData@12
RtlGetSystemPreferredUILanguages@20
+RtlGetSystemTimeAndBias@12
RtlGetSystemTimePrecise@0
RtlGetThreadErrorMode@0
RtlGetThreadLangIdByIndex@16
@@ -1232,6 +1255,7 @@ RtlIpv6StringToAddressExA@16
RtlIpv6StringToAddressExW@16
RtlIpv6StringToAddressW@12
RtlIsActivationContextActive@4
+RtlIsApiSetImplemented@4
RtlIsCapabilitySid@4
RtlIsCloudFilesPlaceholder@8
RtlIsCriticalSectionLocked@4
@@ -1241,6 +1265,7 @@ RtlIsCurrentThread@4
RtlIsCurrentThreadAttachExempt@0
RtlIsDosDeviceName_U@4
RtlIsElevatedRid@4
+RtlIsEnclaveFeaturePresent@4
RtlIsGenericTableEmpty@4
RtlIsGenericTableEmptyAvl@4
RtlIsMultiSessionSku@0
@@ -1321,6 +1346,7 @@ RtlNewSecurityObjectWithMultipleInheritance@36
RtlNormalizeProcessParams@4
RtlNormalizeSecurityDescriptor@20
RtlNormalizeString@20
+RtlNotifyFeatureUsage@4
RtlNtPathNameToDosPathName@16
RtlNtStatusToDosError@4
RtlNtStatusToDosErrorNoTeb@4
@@ -1347,6 +1373,7 @@ RtlProtectHeap@8
RtlPublishWnfStateData@24
RtlPushFrame@4
RtlQueryActivationContextApplicationSettings@28
+RtlQueryAllFeatureConfigurations@16
RtlQueryAtomInAtomTable@24
RtlQueryCriticalSectionOwner@4
RtlQueryDepthSList@4
@@ -1354,6 +1381,9 @@ RtlQueryDynamicTimeZoneInformation@4
RtlQueryElevationFlags@4
RtlQueryEnvironmentVariable@24
RtlQueryEnvironmentVariable_U@12
+RtlQueryFeatureConfiguration@16
+RtlQueryFeatureConfigurationChangeStamp@0
+RtlQueryFeatureUsageNotificationSubscriptions@8
RtlQueryHeapInformation@20
RtlQueryImageMitigationPolicy@20
RtlQueryInformationAcl@16
@@ -1366,11 +1396,13 @@ RtlQueryPackageIdentity@24
RtlQueryPackageIdentityEx@28
RtlQueryPerformanceCounter@4
RtlQueryPerformanceFrequency@4
+RtlQueryPointerMapping@8
RtlQueryProcessBackTraceInformation@4
RtlQueryProcessDebugInformation@12
RtlQueryProcessHeapInformation@4
RtlQueryProcessLockInformation@4
RtlQueryProcessPlaceholderCompatibilityMode@0
+RtlQueryPropertyStore@8
RtlQueryProtectedPolicy@8
RtlQueryRegistryValueWithFallback@28
RtlQueryRegistryValues@20
@@ -1402,6 +1434,7 @@ RtlReadOutOfProcessMemoryStream@16
RtlReadThreadProfilingData@12
RtlRealPredecessor@4
RtlRealSuccessor@4
+RtlRegisterFeatureConfigurationChangeNotification@16
RtlRegisterForWnfMetaNotification@24
RtlRegisterSecureMemoryCacheCallback@4
RtlRegisterThreadWithCsrss@0
@@ -1417,7 +1450,9 @@ RtlReleaseSRWLockExclusive@4
RtlReleaseSRWLockShared@4
RtlRemoteCall@28
RtlRemoveEntryHashTable@12
+RtlRemovePointerMapping@8
RtlRemovePrivileges@12
+RtlRemovePropertyStore@8
RtlRemoveVectoredContinueHandler@4
RtlRemoveVectoredExceptionHandler@4
RtlReplaceSidInSd@16
@@ -1431,6 +1466,7 @@ RtlResetMemoryZone@4
RtlResetNtUserPfn@0
RtlResetRtlTranslations@4
RtlRestoreBootStatusDefaults@4
+RtlRestoreContext@8
RtlRestoreLastWin32Error@4
RtlRestoreSystemBootStatusDefaults@0
RtlRestoreThreadPreferredUILanguages@4
@@ -1463,6 +1499,7 @@ RtlSetEnvironmentStrings@8
RtlSetEnvironmentVar@20
RtlSetEnvironmentVariable@12
RtlSetExtendedFeaturesMask@12
+RtlSetFeatureConfigurations@16
RtlSetGroupSecurityDescriptor@12
RtlSetHeapInformation@16
RtlSetImageMitigationPolicy@20
@@ -1518,6 +1555,7 @@ RtlStringFromGUIDEx@12
RtlStronglyEnumerateEntryHashTable@8
RtlSubAuthorityCountSid@4
RtlSubAuthoritySid@8
+RtlSubscribeForFeatureUsageNotification@8
RtlSubscribeWnfStateChangeNotification@36
RtlSubtreePredecessor@4
RtlSubtreeSuccessor@4
@@ -1569,6 +1607,8 @@ RtlUnlockMemoryBlockLookaside@4
RtlUnlockMemoryStreamRegion@24
RtlUnlockMemoryZone@4
RtlUnlockModuleSection@4
+RtlUnregisterFeatureConfigurationChangeNotification@4
+RtlUnsubscribeFromFeatureUsageNotifications@8
RtlUnsubscribeWnfNotificationWaitForCompletion@4
RtlUnsubscribeWnfNotificationWithCompletionCallback@12
RtlUnsubscribeWnfStateChangeNotification@4
@@ -1789,6 +1829,7 @@ ZwAccessCheckByTypeAndAuditAlarm@64
ZwAccessCheckByTypeResultList@44
ZwAccessCheckByTypeResultListAndAuditAlarm@64
ZwAccessCheckByTypeResultListAndAuditAlarmByHandle@68
+ZwAcquireCrossVmMutant@8
ZwAcquireCMFViewOwnership@12
ZwAcquireProcessActivityReference@12
ZwAddAtom@12
@@ -1844,6 +1885,8 @@ ZwCancelSynchronousIoFile@12
ZwCancelTimer2@8
ZwCancelTimer@8
ZwCancelWaitCompletionPacket@8
+ZwChangeProcessState@24
+ZwChangeThreadState@24
ZwClearEvent@4
ZwClose@4
ZwCloseObjectAuditAlarm@12
@@ -1859,8 +1902,10 @@ ZwCompleteConnectPort@4
ZwCompressKey@4
ZwConnectPort@32
ZwContinue@8
+ZwContinueEx@8
ZwConvertBetweenAuxiliaryCounterAndPerformanceCounter@16
ZwCreateCrossVmEvent@24
+ZwCreateCrossVmMutant@24
ZwCreateDebugObject@16
ZwCreateDirectoryObject@12
ZwCreateDirectoryObjectEx@20
@@ -1871,6 +1916,7 @@ ZwCreateEventPair@12
ZwCreateFile@44
ZwCreateIRTimer@12
ZwCreateIoCompletion@16
+ZwCreateIoRing@20
ZwCreateJobObject@12
ZwCreateJobSet@12
ZwCreateKey@28
@@ -1886,6 +1932,7 @@ ZwCreatePort@20
ZwCreatePrivateNamespace@16
ZwCreateProcess@32
ZwCreateProcessEx@36
+ZwCreateProcessStateChange@20
ZwCreateProfile@36
ZwCreateProfileEx@40
ZwCreateRegistryTransaction@16
@@ -1896,6 +1943,7 @@ ZwCreateSemaphore@20
ZwCreateSymbolicLinkObject@16
ZwCreateThread@32
ZwCreateThreadEx@44
+ZwCreateThreadStateChange@20
ZwCreateTimer2@20
ZwCreateTimer@16
ZwCreateToken@52
@@ -1921,6 +1969,7 @@ ZwDeleteValueKey@8
ZwDeleteWnfStateData@8
ZwDeleteWnfStateName@4
ZwDeviceIoControlFile@40
+ZwDirectGraphicsCall@20
ZwDisableLastKnownGood@0
ZwDisplayString@4
ZwDrawText@4
@@ -1979,6 +2028,7 @@ ZwListenPort@8
ZwLoadDriver@4
ZwLoadEnclaveData@36
ZwLoadKey2@12
+ZwLoadKey3@32
ZwLoadKey@8
ZwLoadKeyEx@32
ZwLockFile@40
@@ -2076,6 +2126,7 @@ ZwQueryInformationWorkerFactory@20
ZwQueryInstallUILanguage@4
ZwQueryIntervalProfile@8
ZwQueryIoCompletion@20
+ZwQueryIoRingCapabilities@8
ZwQueryKey@20
ZwQueryLicenseValue@20
ZwQueryMultipleValueKey@24
@@ -2105,6 +2156,7 @@ ZwQueryVolumeInformationFile@20
ZwQueryWnfStateData@24
ZwQueryWnfStateNameInformation@20
ZwQueueApcThread@20
+ZwQueueApcThreadEx2@28
ZwQueueApcThreadEx@24
ZwRaiseException@12
ZwRaiseHardError@24
@@ -2113,6 +2165,7 @@ ZwReadFileScatter@36
ZwReadOnlyEnlistment@8
ZwReadRequestData@24
ZwReadVirtualMemory@20
+ZwReadVirtualMemoryEx@24
ZwRecoverEnlistment@8
ZwRecoverResourceManager@4
ZwRecoverTransactionManager@4
@@ -2173,6 +2226,7 @@ ZwSetIRTimer@8
ZwSetInformationDebugObject@20
ZwSetInformationEnlistment@16
ZwSetInformationFile@20
+ZwSetInformationIoRing@16
ZwSetInformationJobObject@16
ZwSetInformationKey@16
ZwSetInformationObject@16
@@ -2213,6 +2267,7 @@ ZwSignalAndWaitForSingleObject@16
ZwSinglePhaseReject@8
ZwStartProfile@4
ZwStopProfile@4
+ZwSubmitIoRing@16
ZwSubscribeWnfStateChange@16
ZwSuspendProcess@4
ZwSuspendThread@8
lib/libc/mingw/lib32/query.def
@@ -0,0 +1,17 @@
+;
+; Definition file of query.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "query.dll"
+EXPORTS
+LoadBinaryFilter@8
+LoadTextFilter@8
+BindIFilterFromStorage@12
+BindIFilterFromStream@12
+DllCanUnloadNow
+DllGetClassObject@12
+DllRegisterServer
+DllUnregisterServer
+LoadIFilter@12
+LoadIFilterEx@16
lib/libc/mingw/lib32/tbs.def
@@ -5,9 +5,24 @@
;
LIBRARY "tbs.dll"
EXPORTS
+Tbsi_Create_Attestation_From_Log@36
+Tbsi_Get_TCG_Logs@24
+GetDeviceID@16
+GetDeviceIDString@16
+GetDeviceIDWithTimeout@20
Tbsi_Context_Create@8
+Tbsi_Create_Windows_Key@4
+Tbsi_FilterLog@24
+Tbsi_GetDeviceInfo@8
+Tbsi_Get_OwnerAuth@16
Tbsi_Get_TCG_Log@12
+Tbsi_Get_TCG_Log_Ex@12
Tbsi_Physical_Presence_Command@20
+Tbsi_Revoke_Attestation@0
+Tbsi_ShaHash@32
Tbsip_Cancel_Commands@4
Tbsip_Context_Close@4
Tbsip_Submit_Command@28
+Tbsip_Submit_Command_NonBlocking@28
+Tbsip_TestInterruptInformation@4
+Tbsip_TestMorBit@4
lib/libc/mingw/lib32/user32.def
@@ -1,12 +1,13 @@
LIBRARY USER32.dll
EXPORTS
-;ord_1500@16 @1500
-;ord_1501@4 @1501
-;ord_1502@12 @1502
+GetPointerFrameArrivalTimes@12
+Wow64Transition DATA
ActivateKeyboardLayout@8
AddClipboardFormatListener@4
+AddVisualIdentifier@8
AdjustWindowRect@12
AdjustWindowRectEx@16
+AdjustWindowRectExForDpi@20
AlignRects@16
AllowForegroundActivation@0
AllowSetForegroundWindow@4
@@ -14,6 +15,7 @@ AnimateWindow@12
AnyPopup@0
AppendMenuA@16
AppendMenuW@16
+AreDpiAwarenessContextsEqual@8
ArrangeIconicWindows@4
AttachThreadInput@12
BeginDeferWindowPos@4
@@ -46,19 +48,13 @@ ChangeDisplaySettingsW@8
ChangeMenuA@20
ChangeMenuW@20
ChangeWindowMessageFilter@8
+DwmGetDxRgn@12
ChangeWindowMessageFilterEx@16
CharLowerA@4
CharLowerBuffA@8
CharLowerBuffW@8
CharLowerW@4
CharNextA@4
-;ord_1550@12 @1550
-;ord_1551@8 @1551
-;ord_1552@8 @1552
-;ord_1553@12 @1553
-;ord_1554@8 @1554
-;ord_1555@16 @1555
-;ord_1556@4 @1556
CharNextExA@12
CharNextW@4
CharPrevA@8
@@ -73,6 +69,7 @@ CharUpperBuffA@8
CharUpperBuffW@8
CharUpperW@4
CheckDesktopByThreadId@4
+CheckBannedOneCoreTransformApi@4
CheckDBCSEnabledExt@0
CheckDlgButton@12
CheckMenuItem@12
@@ -123,10 +120,12 @@ CreateMDIWindowA@40
CreateMDIWindowW@40
CreateMenu@0
CreatePopupMenu@0
+CreateSyntheticPointerDevice@12
CreateSystemThreads@16 ; ReactOS has the @8 variant
CreateWindowExA@48
CreateWindowExW@48
CreateWindowInBand@52
+CreateWindowInBandEx@56
CreateWindowIndirect@4
CreateWindowStationA@16
CreateWindowStationW@16
@@ -185,6 +184,7 @@ DestroyDCompositionHwndTarget@8
DestroyIcon@4
DestroyMenu@4
DestroyReasons@4
+DestroySyntheticPointerDevice@4
DestroyWindow@4
DeviceEventWorker@24 ; No documentation whatsoever, ReactOS has a stub with @20 - https://www.reactos.org/archives/public/ros-diffs/2011-February/040308.html
DialogBoxIndirectParamA@20
@@ -231,14 +231,18 @@ DrawTextW@20
DwmGetDxSharedSurface@24
DwmGetRemoteSessionOcclusionEvent@0
DwmGetRemoteSessionOcclusionState@0
+DwmKernelShutdown@0
+DwmKernelStartup@0
DwmLockScreenUpdates@4
DwmStartRedirection@8 ; Mentioned on http://habrahabr.ru/post/145174/ , enables GDI virtualization (for security purposes)
DwmStopRedirection@0
DwmValidateWindow@8
-EditWndProc@16
+EditWndProc@20
EmptyClipboard@0
EnableMenuItem@12
EnableMouseInPointer@4
+EnableNonClientDpiScaling@4
+EnableOneCoreTransformMode@0
EnableScrollBar@12
EnableSessionForMMCSS@4
EnableWindow@8
@@ -293,6 +297,7 @@ GetAppCompatFlags2@4
GetAppCompatFlags@8 ; ReactOS has @4 version http://doxygen.reactos.org/d9/d71/undocuser_8h_a9b76cdc68c523a061c86a40367049ed2.html
GetAsyncKeyState@4
GetAutoRotationState@4
+GetAwarenessFromDpiAwarenessContext@4
GetCIMSSM@4
GetCapture@0
GetCaretBlinkTime@0
@@ -326,6 +331,8 @@ GetDCEx@12
GetDesktopID@8
GetDesktopWindow@0
GetDialogBaseUnits@0
+GetDialogControlDpiChangeBehavior@4
+GetDialogDpiChangeBehavior@4
GetDisplayAutoRotationPreferences@4
GetDisplayConfigBufferSizes@12
GetDlgCtrlID@4
@@ -334,7 +341,12 @@ GetDlgItemInt@16
GetDlgItemTextA@16
GetDlgItemTextW@16
GetDoubleClickTime@0
+GetDpiAwarenessContextForProcess@4
GetDpiForMonitorInternal@16
+GetDpiForSystem@0
+GetDpiForWindow@4
+GetDpiFromDpiAwarenessContext@4
+GetExtendedPointerDeviceProperty@8
GetFocus@0
GetForegroundWindow@0
GetGUIThreadInfo@8
@@ -365,6 +377,7 @@ GetLayeredWindowAttributes@16
GetListBoxInfo@4
GetMagnificationDesktopColorEffect@4
GetMagnificationDesktopMagnification@12
+GetMagnificationDesktopSamplingMode@4
GetMagnificationLensCtxInformation@16
GetMenu@4
GetMenuBarInfo@16
@@ -396,6 +409,8 @@ GetPhysicalCursorPos@4
GetPointerCursorId@8
GetPointerDevice@8
GetPointerDeviceCursors@12
+GetPointerDeviceInputSpace@8
+GetPointerDeviceOrientation@8
GetPointerDeviceProperties@12
GetPointerDeviceRects@12
GetPointerDevices@8
@@ -403,6 +418,7 @@ GetPointerFrameInfo@12
GetPointerFrameInfoHistory@16
GetPointerFramePenInfo@12
GetPointerFramePenInfoHistory@16
+GetPointerFrameTimes@12
GetPointerFrameTouchInfo@12
GetPointerFrameTouchInfoHistory@16
GetPointerInfo@8
@@ -429,22 +445,26 @@ GetRawInputDeviceList@12
GetRawPointerDeviceData@20
GetReasonTitleFromReasonCode@12
GetRegisteredRawInputDevices@12
-GetQueueStatus@4
GetScrollBarInfo@12
GetScrollInfo@12
GetScrollPos@8
GetScrollRange@16
GetSendMessageReceiver@4
+GetShellChangeNotifyWindow@0
GetShellWindow@0
GetSubMenu@8
GetSysColor@4
GetSysColorBrush@4
+GetSystemDpiForProcess@4
GetSystemMenu@8
GetSystemMetrics@4
+GetSystemMetricsForDpi@8
GetTabbedTextExtentA@20
GetTabbedTextExtentW@20
GetTaskmanWindow@0
GetThreadDesktop@4
+GetThreadDpiAwarenessContext@0
+GetThreadDpiHostingBehavior@0
GetTitleBarInfo@8
GetTopLevelWindow@4
GetTopWindow@4
@@ -464,6 +484,8 @@ GetWindowCompositionInfo@8
GetWindowContextHelpId@4
GetWindowDC@4
GetWindowDisplayAffinity@8
+GetWindowDpiAwarenessContext@4
+GetWindowDpiHostingBehavior@4
GetWindowFeedbackSetting@20
GetWindowInfo@8
GetWindowLongA@8
@@ -473,6 +495,7 @@ GetWindowModuleFileName@12
GetWindowModuleFileNameA@12
GetWindowModuleFileNameW@12
GetWindowPlacement@8
+GetWindowProcessHandle@8
GetWindowRect@8
GetWindowRgn@8
GetWindowRgnBox@8
@@ -499,25 +522,34 @@ ImpersonateDdeClientWindow@8
InSendMessage@0
InSendMessageEx@4
InflateRect@12
+InheritWindowMonitor@8
+InitDManipHook@0
+InitializeGenericHidInjection@8
+InitializeInputDeviceInjection@28
InitializeLpkHooks@4
InitializeWin32EntryTable@4
+InitializePointerDeviceInjection@20
+InitializePointerDeviceInjectionEx@24
InitializeTouchInjection@8
+InjectDeviceInput@12
+InjectGenericHidInput@12
+InjectKeyboardInput@8
+InjectMouseInput@8
+InjectPointerInput@12
+InjectSyntheticPointerInput@12
InjectTouchInput@8
+InputSpaceRegionFromPoint@20
InsertMenuA@20
InsertMenuItemA@16
InsertMenuItemW@16
InsertMenuW@20
InternalGetWindowIcon@8
-;ord_2001@4 @2001
-;ord_2002@4 @2002
InternalGetWindowText@12
IntersectRect@12
-;ord_2005@4 @2005
InvalidateRect@12
InvalidateRgn@12
InvertRect@8
IsCharAlphaA@4
-;ord_2010@16 @2010
IsCharAlphaNumericA@4
IsCharAlphaNumericW@4
IsCharAlphaW@4
@@ -539,16 +571,20 @@ IsInDesktopWindowBand@4
IsMenu@4
IsProcess16Bit@0
IsMouseInPointerEnabled@0
+IsOneCoreTransformMode@0
IsProcessDPIAware@0
IsQueueAttached@0
IsRectEmpty@4
IsSETEnabled@0
IsServerSideWindow@4
IsThreadDesktopComposited@0
+IsThreadTSFEventAware@4
IsTopLevelWindow@4
IsTouchWindow@8
+IsValidDpiAwarenessContext@4
IsWinEventHookInstalled@4
IsWindow@4
+IsWindowArranged@4
IsWindowEnabled@4
IsWindowInDestroy@4
IsWindowRedirectedForPrint@4
@@ -565,12 +601,8 @@ LoadBitmapW@8
LoadCursorA@8
LoadCursorFromFileA@4
LoadCursorFromFileW@4
-;ord_2000@0 @2000
-;ord_2001@4 @2001
-;ord_2002@4 @2002
LoadCursorW@8
LoadIconA@8
-;ord_2005@4 @2005
LoadIconW@8
LoadImageA@24
LoadImageW@24
@@ -596,11 +628,19 @@ LookupIconIdFromDirectoryEx@20
MBToWCSEx@24
MBToWCSExt@20
MB_GetString@4
+MITGetCursorUpdateHandle@0
+MITSetForegroundRoutingInfo@8
+MITSetInputDelegationMode@8
+MITSetLastInputRecipient@4
+MITSynthesizeTouchInput@4
+MakeThreadTSFEventAware@4
MapDialogRect@8
+MapPointsByVisualIdentifier@20
MapVirtualKeyA@8
MapVirtualKeyExA@12
MapVirtualKeyExW@12
MapVirtualKeyW@8
+MapVisualRelativePoints@28
MapWindowPoints@16
MenuItemFromPoint@16
MenuWindowProcA@20
@@ -665,6 +705,28 @@ QueryBSDRWindow@0
QueryDisplayConfig@24
QuerySendMessage@4
QueryUserCounters@20
+RIMAddInputObserver@32
+RIMAreSiblingDevices@12
+RIMDeviceIoControl@36
+RIMEnableMonitorMappingForDevice@12
+RIMFreeInputBuffer@8
+RIMGetDevicePreparsedData@16
+RIMGetDevicePreparsedDataLockfree@12
+RIMGetDeviceProperties@12
+RIMGetDevicePropertiesLockfree@8
+RIMGetPhysicalDeviceRect@12
+RIMGetSourceProcessId@12
+RIMObserveNextInput@4
+RIMOnPnpNotification@4
+RIMOnTimerNotification@8
+RIMQueryDevicePath@8
+RIMReadInput@28
+RIMRegisterForInput@40
+RIMRemoveInputObserver@4
+RIMSetExtendedDeviceProperty@12
+RIMSetTestModeStatus@4
+RIMUnregisterForInput@4
+RIMUpdateInputObserverRegistration@16
RealChildWindowFromPoint@12
RealGetWindowClass@12
RealGetWindowClassA@12
@@ -680,17 +742,18 @@ RegisterClassExW@4
RegisterClassW@4
RegisterClipboardFormatA@4
RegisterClipboardFormatW@4
+RegisterDManipHook@0
RegisterDeviceNotificationA@12
RegisterDeviceNotificationW@12
RegisterErrorReportingDialog@8
RegisterFrostWindow@8
RegisterGhostWindow@8
RegisterHotKey@16
-RegisterPowerSettingNotification@12
RegisterLogonProcess@8
RegisterMessagePumpHook@4
RegisterPointerDeviceNotifications@8
RegisterPointerInputTarget@8
+RegisterPointerInputTargetEx@12
RegisterPowerSettingNotification@12
RegisterRawInputDevices@12
RegisterServicesProcess@4
@@ -706,10 +769,14 @@ RegisterWindowMessageA@4
RegisterWindowMessageW@4
ReleaseCapture@0
ReleaseDC@8
+ReleaseDwmHitTestWaiters@0
RemoveClipboardFormatListener@4
+RemoveInjectionDevice@4
RemoveMenu@12
RemovePropA@8
RemovePropW@8
+RemoveThreadTSFEventAwareness@4
+RemoveVisualIdentifier@4
ReplyMessage@4
ResolveDesktopForWOW@4
ReuseDDElParam@20
@@ -747,14 +814,19 @@ SetCursorContents@8
SetCursorPos@8
SetDebugErrorLevel@4
SetDeskWallpaper@4
+SetDesktopColorTransform@4
+SetDialogControlDpiChangeBehavior@12
+SetDialogDpiChangeBehavior@12
SetDisplayAutoRotationPreferences@4
SetDisplayConfig@20
SetDlgItemInt@16
SetDlgItemTextA@12
SetDlgItemTextW@12
SetDoubleClickTime@4
+SetFeatureReportResponse@12
SetFocus@4
SetForegroundWindow@4
+SetFullscreenMagnifierOffsetsDWMUpdated@12
SetGestureConfig@20
SetImmersiveBackgroundWindow@4
SetInternalWindowPos@16
@@ -764,6 +836,8 @@ SetLayeredWindowAttributes@16
SetLogonNotifyWindow@4
SetMagnificationDesktopColorEffect@4
SetMagnificationDesktopMagnification@16
+SetMagnificationDesktopMagnifierOffsetsDWMUpdated@4
+SetMagnificationDesktopSamplingMode@4
SetMagnificationLensCtxInformation@16
SetMenu@8
SetMenuContextHelpId@8
@@ -777,8 +851,10 @@ SetMessageQueue@4
SetMirrorRendering@8
SetParent@8
SetPhysicalCursorPos@8
+SetPointerDeviceInputSpace@12
SetProcessDPIAware@0
SetProcessDefaultLayout@4
+SetProcessDpiAwarenessContext@4
SetProcessDpiAwarenessInternal@4
SetProcessRestrictionExemption@4
SetProcessWindowStation@4
@@ -790,6 +866,7 @@ SetRectEmpty@4
SetScrollInfo@16
SetScrollPos@16
SetScrollRange@20
+SetShellChangeNotifyWindow@4
SetShellWindow@4
SetShellWindowEx@8
SetSysColors@12
@@ -799,6 +876,8 @@ SetSystemMenu@8
SetSystemTimer@16
SetTaskmanWindow@4
SetThreadDesktop@4
+SetThreadDpiAwarenessContext@4
+SetThreadDpiHostingBehavior@4
SetThreadInputBlocked@8
SetTimer@16
SetUserObjectInformationA@16
@@ -823,6 +902,7 @@ SetWindowTextW@8
SetWindowWord@12
SetWindowsHookA@8
SetWindowsHookExA@16
+SetWindowsHookExAW@20
SetWindowsHookExW@16
SetWindowsHookW@8
SfmDxBindSwapChain@12
@@ -854,6 +934,7 @@ SwitchDesktop@4
SwitchDesktopWithFade@12 ; Same as SwithDesktop(), only with fade (done at log-in), only usable by winlogon - http://blog.airesoft.co.uk/2010/08/things-microsoft-can-do-that-you-cant/
SwitchToThisWindow@8
SystemParametersInfoA@16
+SystemParametersInfoForDpi@20
SystemParametersInfoW@16
TabbedTextOutA@32
TabbedTextOutW@32
@@ -885,6 +966,7 @@ UnregisterDeviceNotification@4
UnregisterHotKey@8
UnregisterMessagePumpHook@0
UnregisterPointerInputTarget@8
+UnregisterPointerInputTargetEx@8
UnregisterPowerSettingNotification@4
UnregisterSessionPort@0
UnregisterSuspendResumeNotification@4
@@ -934,65 +1016,10 @@ wsprintfA
wsprintfW
wvsprintfA@12
wvsprintfW@12
-;ord_2500@16 @2500
-;ord_2501@12 @2501
-;ord_2502@8 @2502
-;ord_2503@24 @2503
-;ord_2504@8 @2504
-;ord_2505@8 @2505
-;ord_2506@12 @2506
-;ord_2507@4 @2507
-;ord_2508@8 @2508
-;ord_2509@4 @2509
-;ord_2510@12 @2510
-;ord_2511@8 @2511
-;ord_2512@12 @2512
-;ord_2513@4 @2513
-;ord_2514@8 @2514
-;ord_2515@8 @2515
-;ord_2516@12 @2516
-;ord_2517@4 @2517
-;ord_2518@0 @2518
-;ord_2519@4 @2519
-;ord_2520@0 @2520
-;ord_2521@8 @2521
-;ord_2522@4 @2522
-;ord_2523@8 @2523
-;ord_2524@8 @2524
-;ord_2525@12 @2525
-;ord_2526@12 @2526
-;ord_2527@12 @2527
+DelegateInput@24
+UndelegateInput@8
+HandleDelegatedInput@8
+GetProcessUIContextInformation@8
IsThreadMessageQueueAttached@4
-;ord_2529@4 @2529
-;ord_2530@8 @2530
-;ord_2531@16 @2531
-;ord_2532@8 @2532
-;ord_2533@4 @2533
-;ord_2534@8 @2534
-;ord_2535@0 @2535
-;ord_2536@8 @2536
-;ord_2537@16 @2537
-;ord_2538@4 @2538
-;ord_2539@4 @2539
-;ord_2540@4 @2540
-;ord_2541@0 @2541
-;ord_2544@4 @2544
-;ord_2545@8 @2545
-;ord_2546@4 @2546
-;ord_2547@4 @2547
-;ord_2548@4 @2548
-;ord_2549@4 @2549
-;ord_2550@8 @2550
-;ord_2551@20 @2551
-;ord_2552@8 @2552
-;ord_2553@32 @2553
-;ord_2554@12 @2554
-;ord_2555@16 @2555
-;ord_2556@8 @2556
-;ord_2557@12 @2557
-;ord_2558@12 @2558
-;ord_2559@16 @2559
-;ord_2560@20 @2560
-;ord_2561@0 @2561
-;ord_2562@0 @2562
-;ord_2563@0 @2563
+ReportInertia@20
+SetCoreWindow@8
lib/libc/mingw/lib32/ws2_32.def
@@ -33,14 +33,19 @@ FreeAddrInfoEx@4
FreeAddrInfoExW@4
FreeAddrInfoW@4
GetAddrInfoExA@40
+GetAddrInfoExCancel@4
+GetAddrInfoExOverlappedResult@4
GetAddrInfoExW@40
GetAddrInfoW@16
+GetHostNameW@8
GetNameInfoW@28
InetNtopW@16
InetPtonW@12
+ProcessSocketNotifications@28
SetAddrInfoExA@48
SetAddrInfoExW@48
WPUCompleteOverlappedRequest@20
+WPUGetProviderPathEx@20
WSAAccept@20
WSAAddressToStringA@20
WSAAddressToStringW@20
@@ -126,21 +131,30 @@ WSAStringToAddressW@20
WSAUnadvertiseProvider@4
WSAWaitForMultipleEvents@20
WSCDeinstallProvider@8
+WSCDeinstallProviderEx@12
WSCEnableNSProvider@8
WSCEnumProtocols@16
+WSCEnumProtocolsEx@20
WSCGetApplicationCategory@24
+WSCGetApplicationCategoryEx@28
WSCGetProviderInfo@24
WSCGetProviderPath@16
WSCInstallNameSpace@20
+WSCInstallNameSpaceEx2@28
WSCInstallNameSpaceEx@24
WSCInstallProvider@20
WSCInstallProviderAndChains@32
+WSCInstallProviderEx@28
WSCSetApplicationCategory@28
+WSCSetApplicationCategoryEx@32
WSCSetProviderInfo@24
WSCUnInstallNameSpace@4
+WSCUnInstallNameSpaceEx2@8
WSCUpdateProvider@20
+WSCUpdateProviderEx@24
WSCWriteNameSpaceOrder@8
WSCWriteProviderOrder@8
+WSCWriteProviderOrderEx@12
WahCloseApcHelper@4
WahCloseHandleHelper@4
WahCloseNotificationHandleHelper@4
lib/libc/mingw/lib64/fwpuclnt.def
@@ -1,146 +0,0 @@
-;
-; Definition file of fwpuclnt.dll
-; Automatic generated by gendef
-; written by Kai Tietz 2008
-;
-LIBRARY "fwpuclnt.dll"
-EXPORTS
-FwpmCalloutAdd0
-FwpmCalloutCreateEnumHandle0
-FwpmCalloutDeleteById0
-FwpmCalloutDeleteByKey0
-FwpmCalloutDestroyEnumHandle0
-FwpmCalloutEnum0
-FwpmCalloutGetById0
-FwpmCalloutGetByKey0
-FwpmCalloutGetSecurityInfoByKey0
-FwpmCalloutSetSecurityInfoByKey0
-FwpmCalloutSubscribeChanges0
-FwpmCalloutSubscriptionsGet0
-FwpmCalloutUnsubscribeChanges0
-FwpmDiagnoseNetFailure0
-FwpmEngineClose0
-FwpmEngineGetOption0
-FwpmEngineGetSecurityInfo0
-FwpmEngineOpen0
-FwpmEngineSetOption0
-FwpmEngineSetSecurityInfo0
-FwpmEventProviderCreate0
-FwpmEventProviderDestroy0
-FwpmEventProviderFireNetEvent0
-FwpmEventProviderIsNetEventTypeEnabled0
-FwpmFilterAdd0
-FwpmFilterCreateEnumHandle0
-FwpmFilterDeleteById0
-FwpmFilterDeleteByKey0
-FwpmFilterDestroyEnumHandle0
-FwpmFilterEnum0
-FwpmFilterGetById0
-FwpmFilterGetByKey0
-FwpmFilterGetSecurityInfoByKey0
-FwpmFilterSetSecurityInfoByKey0
-FwpmFilterSubscribeChanges0
-FwpmFilterSubscriptionsGet0
-FwpmFilterUnsubscribeChanges0
-FwpmFreeMemory0
-FwpmGetAppIdFromFileName0
-FwpmIPsecTunnelAdd0
-FwpmIPsecTunnelDeleteByKey0
-FwpmLayerCreateEnumHandle0
-FwpmLayerDestroyEnumHandle0
-FwpmLayerEnum0
-FwpmLayerGetById0
-FwpmLayerGetByKey0
-FwpmLayerGetSecurityInfoByKey0
-FwpmLayerSetSecurityInfoByKey0
-FwpmNetEventCreateEnumHandle0
-FwpmNetEventDestroyEnumHandle0
-FwpmNetEventEnum0
-FwpmNetEventsGetSecurityInfo0
-FwpmNetEventsSetSecurityInfo0
-FwpmProviderAdd0
-FwpmProviderContextAdd0
-FwpmProviderContextCreateEnumHandle0
-FwpmProviderContextDeleteById0
-FwpmProviderContextDeleteByKey0
-FwpmProviderContextDestroyEnumHandle0
-FwpmProviderContextEnum0
-FwpmProviderContextGetById0
-FwpmProviderContextGetByKey0
-FwpmProviderContextGetSecurityInfoByKey0
-FwpmProviderContextSetSecurityInfoByKey0
-FwpmProviderContextSubscribeChanges0
-FwpmProviderContextSubscriptionsGet0
-FwpmProviderContextUnsubscribeChanges0
-FwpmProviderCreateEnumHandle0
-FwpmProviderDeleteByKey0
-FwpmProviderDestroyEnumHandle0
-FwpmProviderEnum0
-FwpmProviderGetByKey0
-FwpmProviderGetSecurityInfoByKey0
-FwpmProviderSetSecurityInfoByKey0
-FwpmProviderSubscribeChanges0
-FwpmProviderSubscriptionsGet0
-FwpmProviderUnsubscribeChanges0
-FwpmSessionCreateEnumHandle0
-FwpmSessionDestroyEnumHandle0
-FwpmSessionEnum0
-FwpmSubLayerAdd0
-FwpmSubLayerCreateEnumHandle0
-FwpmSubLayerDeleteByKey0
-FwpmSubLayerDestroyEnumHandle0
-FwpmSubLayerEnum0
-FwpmSubLayerGetByKey0
-FwpmSubLayerGetSecurityInfoByKey0
-FwpmSubLayerSetSecurityInfoByKey0
-FwpmSubLayerSubscribeChanges0
-FwpmSubLayerSubscriptionsGet0
-FwpmSubLayerUnsubscribeChanges0
-FwpmTraceRestoreDefaults0
-FwpmTransactionAbort0
-FwpmTransactionBegin0
-FwpmTransactionCommit0
-FwpsAleExplicitCredentialsQuery0
-FwpsClassifyUser0
-FwpsFreeMemory0
-FwpsGetInProcReplicaOffset0
-FwpsLayerCreateInProcReplica0
-FwpsLayerReleaseInProcReplica0
-FwpsOpenToken0
-IPsecGetStatistics0
-IPsecKeyModuleAdd0
-IPsecKeyModuleCompleteAcquire0
-IPsecKeyModuleDelete0
-IPsecSaContextAddInbound0
-IPsecSaContextAddOutbound0
-IPsecSaContextCreate0
-IPsecSaContextCreateEnumHandle0
-IPsecSaContextDeleteById0
-IPsecSaContextDestroyEnumHandle0
-IPsecSaContextEnum0
-IPsecSaContextExpire0
-IPsecSaContextGetById0
-IPsecSaContextGetSpi0
-IPsecSaCreateEnumHandle0
-IPsecSaDbGetSecurityInfo0
-IPsecSaDbSetSecurityInfo0
-IPsecSaDestroyEnumHandle0
-IPsecSaEnum0
-IPsecSaInitiateAsync0
-IkeextGetConfigParameters0
-IkeextGetStatistics0
-IkeextSaCreateEnumHandle0
-IkeextSaDbGetSecurityInfo0
-IkeextSaDbSetSecurityInfo0
-IkeextSaDeleteById0
-IkeextSaDestroyEnumHandle0
-IkeextSaEnum0
-IkeextSaGetById0
-IkeextSetConfigParameters0
-WSADeleteSocketPeerTargetName
-WSAImpersonateSocketPeer
-WSAQuerySocketSecurity
-WSARevertImpersonation
-WSASetSocketPeerTargetName
-WSASetSocketSecurity
-wfpdiagW
lib/libc/mingw/lib64/query.def
@@ -1,1447 +0,0 @@
-;
-; Exports of file query.dll
-;
-; Autogenerated by gen_exportdef
-; Written by Kai Tietz, 2007
-;
-LIBRARY query.dll
-EXPORTS
-; class CCoTaskAllocator CoTaskAllocator
-?CoTaskAllocator@@3VCCoTaskAllocator@@A DATA
-; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(struct tagPROPVARIANT & __ptr64,class PMemoryAllocator & __ptr64) __ptr64
-??0CAllocStorageVariant@@QEAA@AEAUtagPROPVARIANT@@AEAVPMemoryAllocator@@@Z
-; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(class PDeSerStream & __ptr64,class PMemoryAllocator & __ptr64) __ptr64
-??0CAllocStorageVariant@@QEAA@AEAVPDeSerStream@@AEAVPMemoryAllocator@@@Z
-; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(char const * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
-??0CAllocStorageVariant@@QEAA@PEBDAEAVPMemoryAllocator@@@Z
-; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(unsigned short const * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
-??0CAllocStorageVariant@@QEAA@PEBGAEAVPMemoryAllocator@@@Z
-; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(struct _GUID const * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
-??0CAllocStorageVariant@@QEAA@PEBU_GUID@@AEAVPMemoryAllocator@@@Z
-; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(enum VARENUM,unsigned long,class PMemoryAllocator & __ptr64) __ptr64
-??0CAllocStorageVariant@@QEAA@W4VARENUM@@KAEAVPMemoryAllocator@@@Z
-; public: __cdecl CCatState::CCatState(void) __ptr64
-??0CCatState@@QEAA@XZ
-; public: __cdecl CCategorizationSet::CCategorizationSet(class CCategorizationSet const & __ptr64) __ptr64
-??0CCategorizationSet@@QEAA@AEBV0@@Z
-; public: __cdecl CCategorizationSet::CCategorizationSet(unsigned int) __ptr64
-??0CCategorizationSet@@QEAA@I@Z
-; public: __cdecl CCiAdminParams::CCiAdminParams(class CLangList * __ptr64) __ptr64
-??0CCiAdminParams@@QEAA@PEAVCLangList@@@Z
-; public: __cdecl CCiRegParams::CCiRegParams(unsigned short const * __ptr64) __ptr64
-??0CCiRegParams@@QEAA@PEBG@Z
-; public: __cdecl CColumnSet::CColumnSet(unsigned int) __ptr64
-??0CColumnSet@@QEAA@I@Z
-; public: __cdecl CColumns::CColumns(class CColumns const & __ptr64) __ptr64
-??0CColumns@@QEAA@AEBV0@@Z
-; public: __cdecl CColumns::CColumns(unsigned int) __ptr64
-??0CColumns@@QEAA@I@Z
-; public: __cdecl CContentRestriction::CContentRestriction(unsigned short const * __ptr64,class CFullPropSpec const & __ptr64,unsigned long,unsigned long) __ptr64
-??0CContentRestriction@@QEAA@PEBGAEBVCFullPropSpec@@KK@Z
-; public: __cdecl CDFA::CDFA(unsigned short const * __ptr64,class CTimeLimit & __ptr64,unsigned char) __ptr64
-??0CDFA@@QEAA@PEBGAEAVCTimeLimit@@E@Z
-; public: __cdecl CDbColId::CDbColId(struct _GUID const & __ptr64,unsigned short const * __ptr64) __ptr64
-??0CDbColId@@QEAA@AEBU_GUID@@PEBG@Z
-; public: __cdecl CDbColId::CDbColId(struct tagDBID const & __ptr64) __ptr64
-??0CDbColId@@QEAA@AEBUtagDBID@@@Z
-; public: __cdecl CDbColId::CDbColId(class CDbColId const & __ptr64) __ptr64
-??0CDbColId@@QEAA@AEBV0@@Z
-; public: __cdecl CDbColId::CDbColId(void) __ptr64
-??0CDbColId@@QEAA@XZ
-; public: __cdecl CDbColumns::CDbColumns(unsigned int) __ptr64
-??0CDbColumns@@QEAA@I@Z
-; public: __cdecl CDbContentRestriction::CDbContentRestriction(unsigned short const * __ptr64,struct tagDBID const & __ptr64,unsigned long,unsigned long) __ptr64
-??0CDbContentRestriction@@QEAA@PEBGAEBUtagDBID@@KK@Z
-; public: __cdecl CDbContentRestriction::CDbContentRestriction(unsigned short const * __ptr64,class CDbColumnNode const & __ptr64,unsigned long,unsigned long) __ptr64
-??0CDbContentRestriction@@QEAA@PEBGAEBVCDbColumnNode@@KK@Z
-; public: __cdecl CDbNatLangRestriction::CDbNatLangRestriction(unsigned short const * __ptr64,struct tagDBID const & __ptr64,unsigned long) __ptr64
-??0CDbNatLangRestriction@@QEAA@PEBGAEBUtagDBID@@K@Z
-; public: __cdecl CDbNatLangRestriction::CDbNatLangRestriction(unsigned short const * __ptr64,class CDbColumnNode const & __ptr64,unsigned long) __ptr64
-??0CDbNatLangRestriction@@QEAA@PEBGAEBVCDbColumnNode@@K@Z
-; public: __cdecl CDbQueryResults::CDbQueryResults(void) __ptr64
-??0CDbQueryResults@@QEAA@XZ
-; public: __cdecl CDbSelectNode::CDbSelectNode(void) __ptr64
-??0CDbSelectNode@@QEAA@XZ
-; public: __cdecl CDbSortSet::CDbSortSet(unsigned int) __ptr64
-??0CDbSortSet@@QEAA@I@Z
-; public: __cdecl CDefColumnRegEntry::CDefColumnRegEntry(void) __ptr64
-??0CDefColumnRegEntry@@QEAA@XZ
-; public: __cdecl CDriveInfo::CDriveInfo(unsigned short const * __ptr64,unsigned long) __ptr64
-??0CDriveInfo@@QEAA@PEBGK@Z
-; public: __cdecl CDynStream::CDynStream(class PMmStream * __ptr64) __ptr64
-??0CDynStream@@QEAA@PEAVPMmStream@@@Z
-; public: __cdecl CEventItem::CEventItem(unsigned short,unsigned short,unsigned long,unsigned short,unsigned long,void const * __ptr64) __ptr64
-??0CEventItem@@QEAA@GGKGKPEBX@Z
-; public: __cdecl CEventLog::CEventLog(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
-??0CEventLog@@QEAA@PEBG0@Z
-; public: __cdecl CException::CException(long) __ptr64
-??0CException@@QEAA@J@Z
-; public: __cdecl CException::CException(void) __ptr64
-??0CException@@QEAA@XZ
-; public: __cdecl CFileBuffer::CFileBuffer(class CFileMapView & __ptr64,unsigned int) __ptr64
-??0CFileBuffer@@QEAA@AEAVCFileMapView@@I@Z
-; public: __cdecl CFileMapView::CFileMapView(unsigned short const * __ptr64) __ptr64
-??0CFileMapView@@QEAA@PEBG@Z
-; public: __cdecl CFilterDaemon::CFilterDaemon(class CiProxy & __ptr64,class CCiFrameworkParams & __ptr64,class CLangList & __ptr64,unsigned char * __ptr64,unsigned long,struct ICiCFilterClient * __ptr64) __ptr64
-??0CFilterDaemon@@QEAA@AEAVCiProxy@@AEAVCCiFrameworkParams@@AEAVCLangList@@PEAEKPEAUICiCFilterClient@@@Z
-; public: __cdecl CFullPath::CFullPath(unsigned short const * __ptr64) __ptr64
-??0CFullPath@@QEAA@PEBG@Z
-; public: __cdecl CFullPath::CFullPath(unsigned short const * __ptr64,unsigned int) __ptr64
-??0CFullPath@@QEAA@PEBGI@Z
-; public: __cdecl CFullPropSpec::CFullPropSpec(class PDeSerStream & __ptr64) __ptr64
-??0CFullPropSpec@@QEAA@AEAVPDeSerStream@@@Z
-; public: __cdecl CFullPropSpec::CFullPropSpec(class CFullPropSpec const & __ptr64) __ptr64
-??0CFullPropSpec@@QEAA@AEBV0@@Z
-; public: __cdecl CFullPropSpec::CFullPropSpec(void) __ptr64
-??0CFullPropSpec@@QEAA@XZ
-; public: __cdecl CFwAsyncWorkItem::CFwAsyncWorkItem(class CWorkManager & __ptr64,class CWorkQueue & __ptr64) __ptr64
-??0CFwAsyncWorkItem@@QEAA@AEAVCWorkManager@@AEAVCWorkQueue@@@Z
-; public: __cdecl CFwEventItem::CFwEventItem(unsigned short,unsigned long,unsigned short,unsigned long,void * __ptr64) __ptr64
-??0CFwEventItem@@QEAA@GKGKPEAX@Z
-; public: __cdecl CGenericCiProxy::CGenericCiProxy(class CSharedNameGen & __ptr64,unsigned long,unsigned long) __ptr64
-??0CGenericCiProxy@@QEAA@AEAVCSharedNameGen@@KK@Z
-; public: __cdecl CGetDbProps::CGetDbProps(void) __ptr64
-??0CGetDbProps@@QEAA@XZ
-; public: __cdecl CImpersonateRemoteAccess::CImpersonateRemoteAccess(class CImpersonationTokenCache * __ptr64) __ptr64
-??0CImpersonateRemoteAccess@@QEAA@PEAVCImpersonationTokenCache@@@Z
-; public: __cdecl CImpersonationTokenCache::CImpersonationTokenCache(unsigned short const * __ptr64) __ptr64
-??0CImpersonationTokenCache@@QEAA@PEBG@Z
-; public: __cdecl CIndexTable::CIndexTable(class CiStorage & __ptr64,class CTransaction & __ptr64) __ptr64
-??0CIndexTable@@QEAA@AEAVCiStorage@@AEAVCTransaction@@@Z
-; public: __cdecl CInternalPropertyRestriction::CInternalPropertyRestriction(unsigned long,unsigned long,class CStorageVariant const & __ptr64,class CRestriction * __ptr64) __ptr64
-??0CInternalPropertyRestriction@@QEAA@KKAEBVCStorageVariant@@PEAVCRestriction@@@Z
-; public: __cdecl CKeyArray::CKeyArray(int,int) __ptr64
-??0CKeyArray@@QEAA@HH@Z
-; public: __cdecl CLangList::CLangList(struct ICiCLangRes * __ptr64,unsigned long) __ptr64
-??0CLangList@@QEAA@PEAUICiCLangRes@@K@Z
-; public: __cdecl CLocalGlobalPropertyList::CLocalGlobalPropertyList(unsigned long) __ptr64
-??0CLocalGlobalPropertyList@@QEAA@K@Z
-; public: __cdecl CLocalGlobalPropertyList::CLocalGlobalPropertyList(class CEmptyPropertyList * __ptr64,int,unsigned short const * __ptr64,unsigned long) __ptr64
-??0CLocalGlobalPropertyList@@QEAA@PEAVCEmptyPropertyList@@HPEBGK@Z
-; public: __cdecl CMachineAdmin::CMachineAdmin(unsigned short const * __ptr64,int) __ptr64
-??0CMachineAdmin@@QEAA@PEBGH@Z
-; public: __cdecl CMemSerStream::CMemSerStream(unsigned int) __ptr64
-??0CMemSerStream@@QEAA@I@Z
-; public: __cdecl CMemSerStream::CMemSerStream(unsigned char * __ptr64,unsigned long) __ptr64
-??0CMemSerStream@@QEAA@PEAEK@Z
-; public: __cdecl CMetaDataMgr::CMetaDataMgr(int,enum CiVRootTypeEnum,unsigned long,unsigned short const * __ptr64) __ptr64
-??0CMetaDataMgr@@QEAA@HW4CiVRootTypeEnum@@KPEBG@Z
-; public: __cdecl CMmStream::CMmStream(unsigned long,int) __ptr64
-??0CMmStream@@QEAA@KH@Z
-; public: __cdecl CMmStreamConsecBuf::CMmStreamConsecBuf(void) __ptr64
-??0CMmStreamConsecBuf@@QEAA@XZ
-; public: __cdecl CNatLanguageRestriction::CNatLanguageRestriction(unsigned short const * __ptr64,class CFullPropSpec const & __ptr64,unsigned long) __ptr64
-??0CNatLanguageRestriction@@QEAA@PEBGAEBVCFullPropSpec@@K@Z
-; public: __cdecl CNodeRestriction::CNodeRestriction(unsigned long,unsigned int) __ptr64
-??0CNodeRestriction@@QEAA@KI@Z
-; public: __cdecl CNormalizer::CNormalizer(class PNoiseList & __ptr64) __ptr64
-??0CNormalizer@@QEAA@AEAVPNoiseList@@@Z
-; public: __cdecl CPathParser::CPathParser(unsigned short const * __ptr64,unsigned long) __ptr64
-??0CPathParser@@QEAA@PEBGK@Z
-; public: __cdecl CPerfMon::CPerfMon(unsigned short const * __ptr64) __ptr64
-??0CPerfMon@@QEAA@PEBG@Z
-; public: __cdecl CPersDeComp::CPersDeComp(class PDirectory & __ptr64,unsigned long,class CPhysIndex & __ptr64,unsigned long,int,int) __ptr64
-??0CPersDeComp@@QEAA@AEAVPDirectory@@KAEAVCPhysIndex@@KHH@Z
-; protected: __cdecl CPhysStorage::CPhysStorage(class PStorage & __ptr64,class PStorageObject & __ptr64,unsigned long,unsigned int,class PMmStream * __ptr64,int,unsigned int,int) __ptr64
-??0CPhysStorage@@IEAA@AEAVPStorage@@AEAVPStorageObject@@KIPEAVPMmStream@@HIH@Z
-; protected: __cdecl CPhysStorage::CPhysStorage(class PStorage & __ptr64,class PStorageObject & __ptr64,unsigned long,class PMmStream * __ptr64,enum CPhysStorage::EOpenMode,int,unsigned int,int) __ptr64
-??0CPhysStorage@@IEAA@AEAVPStorage@@AEAVPStorageObject@@KPEAVPMmStream@@W4EOpenMode@1@HIH@Z
-; public: __cdecl CPidLookupTable::CPidLookupTable(void) __ptr64
-??0CPidLookupTable@@QEAA@XZ
-; public: __cdecl CPidRemapper::CPidRemapper(class XInterface<struct IPropertyMapper> & __ptr64) __ptr64
-??0CPidRemapper@@QEAA@AEAV?$XInterface@UIPropertyMapper@@@@@Z
-; public: __cdecl CPidRemapper::CPidRemapper(class CPidMapper const & __ptr64,class XInterface<struct IPropertyMapper> & __ptr64,class CRestriction * __ptr64,class CColumnSet * __ptr64,class CSortSet * __ptr64) __ptr64
-??0CPidRemapper@@QEAA@AEBVCPidMapper@@AEAV?$XInterface@UIPropertyMapper@@@@PEAVCRestriction@@PEAVCColumnSet@@PEAVCSortSet@@@Z
-; public: __cdecl CPropListFile::CPropListFile(class CEmptyPropertyList * __ptr64,int,unsigned short const * __ptr64,unsigned long) __ptr64
-??0CPropListFile@@QEAA@PEAVCEmptyPropertyList@@HPEBGK@Z
-; public: __cdecl CPropNameArray::CPropNameArray(class PDeSerStream & __ptr64) __ptr64
-??0CPropNameArray@@QEAA@AEAVPDeSerStream@@@Z
-; public: __cdecl CPropNameArray::CPropNameArray(unsigned int) __ptr64
-??0CPropNameArray@@QEAA@I@Z
-; public: __cdecl CPropStoreManager::CPropStoreManager(unsigned long) __ptr64
-??0CPropStoreManager@@QEAA@K@Z
-; public: __cdecl CPropertyRestriction::CPropertyRestriction(unsigned long,class CFullPropSpec const & __ptr64,class CStorageVariant const & __ptr64) __ptr64
-??0CPropertyRestriction@@QEAA@KAEBVCFullPropSpec@@AEBVCStorageVariant@@@Z
-; public: __cdecl CPropertyRestriction::CPropertyRestriction(void) __ptr64
-??0CPropertyRestriction@@QEAA@XZ
-; public: __cdecl CPropertyStoreWids::CPropertyStoreWids(class CPropStoreManager & __ptr64) __ptr64
-??0CPropertyStoreWids@@QEAA@AEAVCPropStoreManager@@@Z
-; public: __cdecl CPropertyValueParser::CPropertyValueParser(class CQueryScanner & __ptr64,unsigned short,unsigned long) __ptr64
-??0CPropertyValueParser@@QEAA@AEAVCQueryScanner@@GK@Z
-; public: __cdecl CQueryScanner::CQueryScanner(unsigned short const * __ptr64,int,unsigned long,int) __ptr64
-??0CQueryScanner@@QEAA@PEBGHKH@Z
-; public: __cdecl CRangeKeyRepository::CRangeKeyRepository(void) __ptr64
-??0CRangeKeyRepository@@QEAA@XZ
-; public: __cdecl CRcovStrmAppendTrans::CRcovStrmAppendTrans(class PRcovStorageObj & __ptr64) __ptr64
-??0CRcovStrmAppendTrans@@QEAA@AEAVPRcovStorageObj@@@Z
-; public: __cdecl CRcovStrmMDTrans::CRcovStrmMDTrans(class PRcovStorageObj & __ptr64,enum CRcovStrmMDTrans::MDOp,unsigned long) __ptr64
-??0CRcovStrmMDTrans@@QEAA@AEAVPRcovStorageObj@@W4MDOp@0@K@Z
-; protected: __cdecl CRcovStrmTrans::CRcovStrmTrans(class PRcovStorageObj & __ptr64,enum RcovOpType) __ptr64
-??0CRcovStrmTrans@@IEAA@AEAVPRcovStorageObj@@W4RcovOpType@@@Z
-; public: __cdecl CRegAccess::CRegAccess(unsigned long,unsigned short const * __ptr64) __ptr64
-??0CRegAccess@@QEAA@KPEBG@Z
-; public: __cdecl CRegChangeEvent::CRegChangeEvent(unsigned short const * __ptr64,int) __ptr64
-??0CRegChangeEvent@@QEAA@PEBGH@Z
-; public: __cdecl CRegNotify::CRegNotify(unsigned short const * __ptr64) __ptr64
-??0CRegNotify@@QEAA@PEBG@Z
-; public: __cdecl CRequestClient::CRequestClient(unsigned short const * __ptr64,struct IDBProperties * __ptr64) __ptr64
-??0CRequestClient@@QEAA@PEBGPEAUIDBProperties@@@Z
-; public: __cdecl CRequestQueue::CRequestQueue(unsigned int,unsigned int,unsigned int,int,unsigned int,unsigned int,struct _GUID const & __ptr64) __ptr64
-??0CRequestQueue@@QEAA@IIIHIIAEBU_GUID@@@Z
-; public: __cdecl CScopeRestriction::CScopeRestriction(unsigned short const * __ptr64,int,int) __ptr64
-??0CScopeRestriction@@QEAA@PEBGHH@Z
-; public: __cdecl CSdidLookupTable::CSdidLookupTable(void) __ptr64
-??0CSdidLookupTable@@QEAA@XZ
-; public: __cdecl CSizeSerStream::CSizeSerStream(void) __ptr64
-??0CSizeSerStream@@QEAA@XZ
-; public: __cdecl CSort::CSort(unsigned int) __ptr64
-??0CSort@@QEAA@I@Z
-; public: __cdecl CSortSet::CSortSet(unsigned int) __ptr64
-??0CSortSet@@QEAA@I@Z
-; public: __cdecl CStandardPropMapper::CStandardPropMapper(void) __ptr64
-??0CStandardPropMapper@@QEAA@XZ
-; public: __cdecl CSvcQuery::CSvcQuery(unsigned short const * __ptr64,struct IDBProperties * __ptr64) __ptr64
-??0CSvcQuery@@QEAA@PEBGPEAUIDBProperties@@@Z
-; public: __cdecl CSynRestriction::CSynRestriction(class CKey const & __ptr64,unsigned long,unsigned long,unsigned long,int) __ptr64
-??0CSynRestriction@@QEAA@AEBVCKey@@KKKH@Z
-; public: __cdecl CTimeLimit::CTimeLimit(unsigned long,unsigned long) __ptr64
-??0CTimeLimit@@QEAA@KK@Z
-; public: __cdecl CTransaction::CTransaction(void) __ptr64
-??0CTransaction@@QEAA@XZ
-; public: __cdecl CUnfilteredRestriction::CUnfilteredRestriction(void) __ptr64
-??0CUnfilteredRestriction@@QEAA@XZ
-; public: __cdecl CValueNormalizer::CValueNormalizer(class PKeyRepository & __ptr64) __ptr64
-??0CValueNormalizer@@QEAA@AEAVPKeyRepository@@@Z
-; public: __cdecl CVirtualString::CVirtualString(unsigned int) __ptr64
-??0CVirtualString@@QEAA@I@Z
-; public: __cdecl CWin32RegAccess::CWin32RegAccess(struct HKEY__ * __ptr64,unsigned short const * __ptr64) __ptr64
-??0CWin32RegAccess@@QEAA@PEAUHKEY__@@PEBG@Z
-; public: __cdecl CWordRestriction::CWordRestriction(class CKeyBuf const & __ptr64,unsigned long,unsigned long,unsigned long,int) __ptr64
-??0CWordRestriction@@QEAA@AEBVCKeyBuf@@KKKH@Z
-; public: __cdecl CWorkQueue::CWorkQueue(unsigned int,enum CWorkQueue::WorkQueueType) __ptr64
-??0CWorkQueue@@QEAA@IW4WorkQueueType@0@@Z
-; public: __cdecl CiStorage::CiStorage(unsigned short const * __ptr64,struct ICiCAdviseStatus & __ptr64,unsigned long,unsigned long,int) __ptr64
-??0CiStorage@@QEAA@PEBGAEAUICiCAdviseStatus@@KKH@Z
-; public: __cdecl SStorageObject::SStorageObject(class PStorageObject * __ptr64) __ptr64
-??0SStorageObject@@QEAA@PEAVPStorageObject@@@Z
-; protected: __cdecl CAllocStorageVariant::~CAllocStorageVariant(void) __ptr64
-??1CAllocStorageVariant@@IEAA@XZ
-; public: __cdecl CCatState::~CCatState(void) __ptr64
-??1CCatState@@QEAA@XZ
-; public: __cdecl CCatalogAdmin::~CCatalogAdmin(void) __ptr64
-??1CCatalogAdmin@@QEAA@XZ
-; public: __cdecl CCatalogEnum::~CCatalogEnum(void) __ptr64
-??1CCatalogEnum@@QEAA@XZ
-; public: __cdecl CColumns::~CColumns(void) __ptr64
-??1CColumns@@QEAA@XZ
-; public: __cdecl CContentRestriction::~CContentRestriction(void) __ptr64
-??1CContentRestriction@@QEAA@XZ
-; public: __cdecl CDFA::~CDFA(void) __ptr64
-??1CDFA@@QEAA@XZ
-; public: __cdecl CDbCmdTreeNode::~CDbCmdTreeNode(void) __ptr64
-??1CDbCmdTreeNode@@QEAA@XZ
-; public: __cdecl CDbColumns::~CDbColumns(void) __ptr64
-??1CDbColumns@@QEAA@XZ
-; public: __cdecl CDbPropSet::~CDbPropSet(void) __ptr64
-??1CDbPropSet@@QEAA@XZ
-; public: __cdecl CDbQueryResults::~CDbQueryResults(void) __ptr64
-??1CDbQueryResults@@QEAA@XZ
-; public: __cdecl CDbSortSet::~CDbSortSet(void) __ptr64
-??1CDbSortSet@@QEAA@XZ
-; public: __cdecl CDynStream::~CDynStream(void) __ptr64
-??1CDynStream@@QEAA@XZ
-; public: __cdecl CEventItem::~CEventItem(void) __ptr64
-??1CEventItem@@QEAA@XZ
-; public: __cdecl CEventLog::~CEventLog(void) __ptr64
-??1CEventLog@@QEAA@XZ
-; public: __cdecl CFileMapView::~CFileMapView(void) __ptr64
-??1CFileMapView@@QEAA@XZ
-; public: __cdecl CFilterDaemon::~CFilterDaemon(void) __ptr64
-??1CFilterDaemon@@QEAA@XZ
-; public: virtual __cdecl CFwAsyncWorkItem::~CFwAsyncWorkItem(void) __ptr64
-??1CFwAsyncWorkItem@@UEAA@XZ
-; public: __cdecl CFwEventItem::~CFwEventItem(void) __ptr64
-??1CFwEventItem@@QEAA@XZ
-; public: virtual __cdecl CGenericCiProxy::~CGenericCiProxy(void) __ptr64
-??1CGenericCiProxy@@UEAA@XZ
-; public: __cdecl CImpersonateClient::~CImpersonateClient(void) __ptr64
-??1CImpersonateClient@@QEAA@XZ
-; public: __cdecl CImpersonateSystem::~CImpersonateSystem(void) __ptr64
-??1CImpersonateSystem@@QEAA@XZ
-; public: __cdecl CImpersonationTokenCache::~CImpersonationTokenCache(void) __ptr64
-??1CImpersonationTokenCache@@QEAA@XZ
-; public: __cdecl CInternalPropertyRestriction::~CInternalPropertyRestriction(void) __ptr64
-??1CInternalPropertyRestriction@@QEAA@XZ
-; public: __cdecl CKeyArray::~CKeyArray(void) __ptr64
-??1CKeyArray@@QEAA@XZ
-; public: __cdecl CLangList::~CLangList(void) __ptr64
-??1CLangList@@QEAA@XZ
-; public: __cdecl CMachineAdmin::~CMachineAdmin(void) __ptr64
-??1CMachineAdmin@@QEAA@XZ
-; public: virtual __cdecl CMemSerStream::~CMemSerStream(void) __ptr64
-??1CMemSerStream@@UEAA@XZ
-; public: __cdecl CMetaDataMgr::~CMetaDataMgr(void) __ptr64
-??1CMetaDataMgr@@QEAA@XZ
-; public: virtual __cdecl CMmStream::~CMmStream(void) __ptr64
-??1CMmStream@@UEAA@XZ
-; public: __cdecl CMmStreamConsecBuf::~CMmStreamConsecBuf(void) __ptr64
-??1CMmStreamConsecBuf@@QEAA@XZ
-; public: __cdecl CNatLanguageRestriction::~CNatLanguageRestriction(void) __ptr64
-??1CNatLanguageRestriction@@QEAA@XZ
-; public: __cdecl CNodeRestriction::~CNodeRestriction(void) __ptr64
-??1CNodeRestriction@@QEAA@XZ
-; public: __cdecl CNotRestriction::~CNotRestriction(void) __ptr64
-??1CNotRestriction@@QEAA@XZ
-; public: __cdecl COccRestriction::~COccRestriction(void) __ptr64
-??1COccRestriction@@QEAA@XZ
-; public: __cdecl CParseCommandTree::~CParseCommandTree(void) __ptr64
-??1CParseCommandTree@@QEAA@XZ
-; public: __cdecl CPerfMon::~CPerfMon(void) __ptr64
-??1CPerfMon@@QEAA@XZ
-; public: __cdecl CPhraseRestriction::~CPhraseRestriction(void) __ptr64
-??1CPhraseRestriction@@QEAA@XZ
-; public: virtual __cdecl CPhysStorage::~CPhysStorage(void) __ptr64
-??1CPhysStorage@@UEAA@XZ
-; public: __cdecl CPidLookupTable::~CPidLookupTable(void) __ptr64
-??1CPidLookupTable@@QEAA@XZ
-; public: __cdecl CPidRemapper::~CPidRemapper(void) __ptr64
-??1CPidRemapper@@QEAA@XZ
-; public: __cdecl CProcess::~CProcess(void) __ptr64
-??1CProcess@@QEAA@XZ
-; public: __cdecl CPropStoreManager::~CPropStoreManager(void) __ptr64
-??1CPropStoreManager@@QEAA@XZ
-; public: virtual __cdecl CPropertyList::~CPropertyList(void) __ptr64
-??1CPropertyList@@UEAA@XZ
-; public: __cdecl CPropertyRestriction::~CPropertyRestriction(void) __ptr64
-??1CPropertyRestriction@@QEAA@XZ
-; public: __cdecl CPropertyStore::~CPropertyStore(void) __ptr64
-??1CPropertyStore@@QEAA@XZ
-; public: __cdecl CPropertyStoreWids::~CPropertyStoreWids(void) __ptr64
-??1CPropertyStoreWids@@QEAA@XZ
-; public: __cdecl CQueryUnknown::~CQueryUnknown(void) __ptr64
-??1CQueryUnknown@@QEAA@XZ
-; public: virtual __cdecl CRangeKeyRepository::~CRangeKeyRepository(void) __ptr64
-??1CRangeKeyRepository@@UEAA@XZ
-; public: __cdecl CRegChangeEvent::~CRegChangeEvent(void) __ptr64
-??1CRegChangeEvent@@QEAA@XZ
-; protected: virtual __cdecl CRegNotify::~CRegNotify(void) __ptr64
-??1CRegNotify@@MEAA@XZ
-; public: __cdecl CRestriction::~CRestriction(void) __ptr64
-??1CRestriction@@QEAA@XZ
-; public: __cdecl CScopeAdmin::~CScopeAdmin(void) __ptr64
-??1CScopeAdmin@@QEAA@XZ
-; public: __cdecl CScopeEnum::~CScopeEnum(void) __ptr64
-??1CScopeEnum@@QEAA@XZ
-; public: __cdecl CScopeRestriction::~CScopeRestriction(void) __ptr64
-??1CScopeRestriction@@QEAA@XZ
-; public: __cdecl CSdidLookupTable::~CSdidLookupTable(void) __ptr64
-??1CSdidLookupTable@@QEAA@XZ
-; public: virtual __cdecl CSizeSerStream::~CSizeSerStream(void) __ptr64
-??1CSizeSerStream@@UEAA@XZ
-; public: __cdecl CSort::~CSort(void) __ptr64
-??1CSort@@QEAA@XZ
-; public: __cdecl CSynRestriction::~CSynRestriction(void) __ptr64
-??1CSynRestriction@@QEAA@XZ
-; public: __cdecl CVirtualString::~CVirtualString(void) __ptr64
-??1CVirtualString@@QEAA@XZ
-; public: __cdecl CWin32RegAccess::~CWin32RegAccess(void) __ptr64
-??1CWin32RegAccess@@QEAA@XZ
-; public: __cdecl CWordRestriction::~CWordRestriction(void) __ptr64
-??1CWordRestriction@@QEAA@XZ
-; public: __cdecl CWorkManager::~CWorkManager(void) __ptr64
-??1CWorkManager@@QEAA@XZ
-; public: __cdecl CWorkQueue::~CWorkQueue(void) __ptr64
-??1CWorkQueue@@QEAA@XZ
-; public: __cdecl SStorageObject::~SStorageObject(void) __ptr64
-??1SStorageObject@@QEAA@XZ
-; public: class CDbColId & __ptr64 __cdecl CDbColId::operator=(class CDbColId const & __ptr64) __ptr64
-??4CDbColId@@QEAAAEAV0@AEBV0@@Z
-; public: int __cdecl CDbColId::operator==(class CDbColId const & __ptr64)const __ptr64
-??8CDbColId@@QEBAHAEBV0@@Z
-; public: void __cdecl CWorkManager::AbortWorkItems(void) __ptr64
-?AbortWorkItems@CWorkManager@@QEAAXXZ
-; public: void __cdecl CQueryScanner::Accept(void) __ptr64
-?Accept@CQueryScanner@@QEAAXXZ
-; public: void __cdecl CQueryScanner::AcceptCommand(void) __ptr64
-?AcceptCommand@CQueryScanner@@QEAAXXZ
-; public: void __cdecl CQueryScanner::AcceptWord(void) __ptr64
-?AcceptWord@CQueryScanner@@QEAAXXZ
-; public: int __cdecl CSdidLookupTable::AccessCheck(unsigned long,void * __ptr64,unsigned long,int & __ptr64) __ptr64
-?AccessCheck@CSdidLookupTable@@QEAAHKPEAXKAEAH@Z
-; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqLine(int) __ptr64
-?AcqLine@CQueryScanner@@QEAAPEAGH@Z
-; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqPath(void) __ptr64
-?AcqPath@CQueryScanner@@QEAAPEAGXZ
-; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqPhrase(void) __ptr64
-?AcqPhrase@CQueryScanner@@QEAAPEAGXZ
-; public: class CRangeRestriction * __ptr64 __cdecl CRangeKeyRepository::AcqRst(void) __ptr64
-?AcqRst@CRangeKeyRepository@@QEAAPEAVCRangeRestriction@@XZ
-; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqWord(void) __ptr64
-?AcqWord@CQueryScanner@@QEAAPEAGXZ
-; private: void __cdecl CPropertyStore::AcquireRead(class CReadWriteLockRecord & __ptr64) __ptr64
-?AcquireRead@CPropertyStore@@AEAAXAEAVCReadWriteLockRecord@@@Z
-; public: int __cdecl CDbColumns::Add(class CDbColId const & __ptr64,unsigned int) __ptr64
-?Add@CDbColumns@@QEAAHAEBVCDbColId@@I@Z
-; public: void __cdecl CDbQueryResults::Add(unsigned short * __ptr64,unsigned long) __ptr64
-?Add@CDbQueryResults@@QEAAXPEAGK@Z
-; public: int __cdecl CDbSortSet::Add(class CDbColId const & __ptr64,unsigned long,unsigned int) __ptr64
-?Add@CDbSortSet@@QEAAHAEBVCDbColId@@KI@Z
-; public: int __cdecl CDbSortSet::Add(class CDbSortKey const & __ptr64,unsigned int) __ptr64
-?Add@CDbSortSet@@QEAAHAEBVCDbSortKey@@I@Z
-; public: int __cdecl CKeyArray::Add(int,class CKey const & __ptr64) __ptr64
-?Add@CKeyArray@@QEAAHHAEBVCKey@@@Z
-; public: int __cdecl CKeyArray::Add(int,class CKeyBuf const & __ptr64) __ptr64
-?Add@CKeyArray@@QEAAHHAEBVCKeyBuf@@@Z
-; public: void __cdecl CWorkQueue::Add(class PWorkItem * __ptr64) __ptr64
-?Add@CWorkQueue@@QEAAXPEAVPWorkItem@@@Z
-; public: void __cdecl CEventItem::AddArg(unsigned long) __ptr64
-?AddArg@CEventItem@@QEAAXK@Z
-; public: void __cdecl CEventItem::AddArg(unsigned short const * __ptr64) __ptr64
-?AddArg@CEventItem@@QEAAXPEBG@Z
-; public: void __cdecl CFwEventItem::AddArg(unsigned long) __ptr64
-?AddArg@CFwEventItem@@QEAAXK@Z
-; public: void __cdecl CFwEventItem::AddArg(unsigned short const * __ptr64) __ptr64
-?AddArg@CFwEventItem@@QEAAXPEBG@Z
-; public: void __cdecl CCatalogAdmin::AddCachedProperty(class CFullPropSpec const & __ptr64,unsigned long,unsigned long,unsigned long,int) __ptr64
-?AddCachedProperty@CCatalogAdmin@@QEAAXAEBVCFullPropSpec@@KKKH@Z
-; public: void __cdecl CCatState::AddCatalog(class XPtrST<unsigned short> & __ptr64) __ptr64
-?AddCatalog@CCatState@@QEAAXAEAV?$XPtrST@G@@@Z
-; public: void __cdecl CMachineAdmin::AddCatalog(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
-?AddCatalog@CMachineAdmin@@QEAAXPEBG0@Z
-; public: void __cdecl CNodeRestriction::AddChild(class CRestriction * __ptr64,unsigned int & __ptr64) __ptr64
-?AddChild@CNodeRestriction@@QEAAXPEAVCRestriction@@AEAI@Z
-; public: void __cdecl CCatState::AddDir(class XPtrST<unsigned short> & __ptr64) __ptr64
-?AddDir@CCatState@@QEAAXAEAV?$XPtrST@G@@@Z
-; public: virtual void __cdecl CPropertyList::AddEntry(class CPropEntry * __ptr64,int) __ptr64
-?AddEntry@CPropertyList@@UEAAXPEAVCPropEntry@@H@Z
-; public: void __cdecl CEventItem::AddError(unsigned long) __ptr64
-?AddError@CEventItem@@QEAAXK@Z
-; public: void __cdecl CSynRestriction::AddKey(class CKeyBuf const & __ptr64) __ptr64
-?AddKey@CSynRestriction@@QEAAXAEBVCKeyBuf@@@Z
-; public: void __cdecl CCatState::AddMachine(class XPtrST<unsigned short> & __ptr64) __ptr64
-?AddMachine@CCatState@@QEAAXAEAV?$XPtrST@G@@@Z
-; public: virtual unsigned long __cdecl CDbProperties::AddRef(void) __ptr64
-?AddRef@CDbProperties@@UEAAKXZ
-; public: virtual unsigned long __cdecl CEmptyPropertyList::AddRef(void) __ptr64
-?AddRef@CEmptyPropertyList@@UEAAKXZ
-; public: virtual unsigned long __cdecl CEnumString::AddRef(void) __ptr64
-?AddRef@CEnumString@@UEAAKXZ
-; public: virtual unsigned long __cdecl CEnumWorkid::AddRef(void) __ptr64
-?AddRef@CEnumWorkid@@UEAAKXZ
-; public: virtual unsigned long __cdecl CFwPropertyMapper::AddRef(void) __ptr64
-?AddRef@CFwPropertyMapper@@UEAAKXZ
-; public: virtual unsigned long __cdecl CQueryUnknown::AddRef(void) __ptr64
-?AddRef@CQueryUnknown@@UEAAKXZ
-; public: void __cdecl CWorkQueue::AddRefWorkThreads(void) __ptr64
-?AddRefWorkThreads@CWorkQueue@@QEAAXXZ
-; public: void __cdecl CCatalogAdmin::AddScope(unsigned short const * __ptr64,unsigned short const * __ptr64,int,unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
-?AddScope@CCatalogAdmin@@QEAAXPEBG0H00@Z
-; public: int __cdecl CDbSortNode::AddSortColumn(struct tagDBID const & __ptr64,int,unsigned long) __ptr64
-?AddSortColumn@CDbSortNode@@QEAAHAEBUtagDBID@@HK@Z
-; public: int __cdecl CDbNestingNode::AddTable(class CDbCmdTreeNode * __ptr64) __ptr64
-?AddTable@CDbNestingNode@@QEAAHPEAVCDbCmdTreeNode@@@Z
-; public: void __cdecl CWorkManager::AddToWorkList(class CFwAsyncWorkItem * __ptr64) __ptr64
-?AddToWorkList@CWorkManager@@QEAAXPEAVCFwAsyncWorkItem@@@Z
-; public: void __cdecl CFwAsyncWorkItem::AddToWorkQueue(void) __ptr64
-?AddToWorkQueue@CFwAsyncWorkItem@@QEAAXXZ
-; public: static unsigned short * __ptr64 __cdecl CDbCmdTreeNode::AllocAndCopyWString(unsigned short const * __ptr64)
-?AllocAndCopyWString@CDbCmdTreeNode@@SAPEAGPEBG@Z
-; unsigned short * __ptr64 __cdecl AllocHeapAndCopy(unsigned short const * __ptr64,unsigned long & __ptr64)
-?AllocHeapAndCopy@@YAPEAGPEBGAEAK@Z
-; unsigned short * __ptr64 __cdecl AllocHeapAndGetWString(class PDeSerStream & __ptr64)
-?AllocHeapAndGetWString@@YAPEAGAEAVPDeSerStream@@@Z
-; public: void __cdecl CEnumString::Append(unsigned short const * __ptr64) __ptr64
-?Append@CEnumString@@QEAAXPEBG@Z
-; public: void __cdecl CEnumWorkid::Append(unsigned long) __ptr64
-?Append@CEnumWorkid@@QEAAXK@Z
-; protected: void __cdecl CDbCmdTreeNode::AppendChild(class CDbCmdTreeNode * __ptr64) __ptr64
-?AppendChild@CDbCmdTreeNode@@IEAAXPEAV1@@Z
-; protected: int __cdecl CDbListAnchor::AppendListElement(unsigned short,struct tagDBID const & __ptr64) __ptr64
-?AppendListElement@CDbListAnchor@@IEAAHGAEBUtagDBID@@@Z
-; protected: int __cdecl CDbListAnchor::AppendListElement(class CDbCmdTreeNode * __ptr64) __ptr64
-?AppendListElement@CDbListAnchor@@IEAAHPEAVCDbCmdTreeNode@@@Z
-; public: int __cdecl CDbProjectListAnchor::AppendListElement(struct tagDBID const & __ptr64,unsigned short * __ptr64) __ptr64
-?AppendListElement@CDbProjectListAnchor@@QEAAHAEBUtagDBID@@PEAG@Z
-; public: unsigned __int64 __cdecl CPropStoreManager::BeginTransaction(void) __ptr64
-?BeginTransaction@CPropStoreManager@@QEAA_KXZ
-; public: static long __cdecl CCiOle::BindIFilter(unsigned short const * __ptr64,struct IUnknown * __ptr64,struct _GUID const & __ptr64,struct IFilter * __ptr64 * __ptr64,int)
-?BindIFilter@CCiOle@@SAJPEBGPEAUIUnknown@@AEBU_GUID@@PEAPEAUIFilter@@H@Z
-; public: static long __cdecl CCiOle::BindIFilter(unsigned short const * __ptr64,struct IUnknown * __ptr64,struct IFilter * __ptr64 * __ptr64,int)
-?BindIFilter@CCiOle@@SAJPEBGPEAUIUnknown@@PEAPEAUIFilter@@H@Z
-; public: unsigned long * __ptr64 __cdecl CPhysStorage::BorrowBuffer(unsigned long,int,int) __ptr64
-?BorrowBuffer@CPhysStorage@@QEAAPEAKKHH@Z
-; public: unsigned long * __ptr64 __cdecl CPhysStorage::BorrowNewBuffer(unsigned long) __ptr64
-?BorrowNewBuffer@CPhysStorage@@QEAAPEAKK@Z
-; void __cdecl BuildRegistryPropertiesKey(class XArray<unsigned short> & __ptr64,unsigned short const * __ptr64)
-?BuildRegistryPropertiesKey@@YAXAEAV?$XArray@G@@PEBG@Z
-; void __cdecl BuildRegistryScopesKey(class XArray<unsigned short> & __ptr64,unsigned short const * __ptr64)
-?BuildRegistryScopesKey@@YAXAEAV?$XArray@G@@PEBG@Z
-; void __cdecl CIShutdown(void)
-?CIShutdown@@YAXXZ
-; public: void __cdecl CCatState::ChangeCurrentCatalog(unsigned short const * __ptr64) __ptr64
-?ChangeCurrentCatalog@CCatState@@QEAAXPEBG@Z
-; public: void __cdecl CCatState::ChangeCurrentDepth(int) __ptr64
-?ChangeCurrentDepth@CCatState@@QEAAXH@Z
-; public: void __cdecl CCatState::ChangeCurrentMachine(unsigned short const * __ptr64) __ptr64
-?ChangeCurrentMachine@CCatState@@QEAAXPEBG@Z
-; public: void __cdecl CCatState::ChangeCurrentScope(unsigned short const * __ptr64) __ptr64
-?ChangeCurrentScope@CCatState@@QEAAXPEBG@Z
-; private: void __cdecl CPropStoreInfo::ChangeDirty(int) __ptr64
-?ChangeDirty@CPropStoreInfo@@AEAAXH@Z
-; public: long __cdecl CLocalGlobalPropertyList::CheckError(unsigned long & __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
-?CheckError@CLocalGlobalPropertyList@@QEAAJAEAKPEAPEAG@Z
-; public: long __cdecl CPropListFile::CheckError(unsigned long & __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
-?CheckError@CPropListFile@@QEAAJAEAKPEAPEAG@Z
-; public: static int __cdecl CiStorage::CheckHasIndexTable(unsigned short const * __ptr64)
-?CheckHasIndexTable@CiStorage@@SAHPEBG@Z
-CiCreateSecurityDescriptor
-; int __cdecl CiGetPassword(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short * __ptr64)
-?CiGetPassword@@YAHPEBG0PEAG@Z
-; void * __ptr64 __cdecl CiNtOpen(unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long)
-?CiNtOpen@@YAPEAXPEBGKKK@Z
-; long __cdecl CiNtOpenNoThrow(void * __ptr64 & __ptr64,unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long)
-?CiNtOpenNoThrow@@YAJAEAPEAXPEBGKKK@Z
-; public: void __cdecl CDbColId::Cleanup(void) __ptr64
-?Cleanup@CDbColId@@QEAAXXZ
-; protected: void __cdecl CDbCmdTreeNode::CleanupDataValue(void) __ptr64
-?CleanupDataValue@CDbCmdTreeNode@@IEAAXXZ
-; public: void __cdecl CCombinedPropertyList::ClearList(void) __ptr64
-?ClearList@CCombinedPropertyList@@QEAAXXZ
-; public: void __cdecl CPropertyList::ClearList(void) __ptr64
-?ClearList@CPropertyList@@QEAAXXZ
-; public: class CDbCmdTreeNode * __ptr64 __cdecl CDbCmdTreeNode::Clone(int)const __ptr64
-?Clone@CDbCmdTreeNode@@QEBAPEAV1@H@Z
-; public: virtual long __cdecl CEnumString::Clone(struct IEnumString * __ptr64 * __ptr64) __ptr64
-?Clone@CEnumString@@UEAAJPEAPEAUIEnumString@@@Z
-; public: class CNodeRestriction * __ptr64 __cdecl CNodeRestriction::Clone(void)const __ptr64
-?Clone@CNodeRestriction@@QEBAPEAV1@XZ
-; public: class COccRestriction * __ptr64 __cdecl COccRestriction::Clone(void)const __ptr64
-?Clone@COccRestriction@@QEBAPEAV1@XZ
-; public: class CRestriction * __ptr64 __cdecl CRestriction::Clone(void)const __ptr64
-?Clone@CRestriction@@QEBAPEAV1@XZ
-; public: void __cdecl CPhysStorage::Close(void) __ptr64
-?Close@CPhysStorage@@QEAAXXZ
-; protected: void __cdecl CPipeClient::Close(void) __ptr64
-?Close@CPipeClient@@IEAAXXZ
-; public: void __cdecl COLEPropManager::CPropSetMap::Close(void) __ptr64
-?Close@CPropSetMap@COLEPropManager@@QEAAXXZ
-; public: void __cdecl CPropStoreManager::CloseRecord(class CCompositePropRecord * __ptr64) __ptr64
-?CloseRecord@CPropStoreManager@@QEAAXPEAVCCompositePropRecord@@@Z
-; public: void __cdecl CPropStoreManager::CloseRecord(class CCompositePropRecordForWrites * __ptr64) __ptr64
-?CloseRecord@CPropStoreManager@@QEAAXPEAVCCompositePropRecordForWrites@@@Z
-; public: void __cdecl CRcovStrmAppendTrans::Commit(void) __ptr64
-?Commit@CRcovStrmAppendTrans@@QEAAXXZ
-; public: void __cdecl CRcovStrmMDTrans::Commit(void) __ptr64
-?Commit@CRcovStrmMDTrans@@QEAAXXZ
-; public: void __cdecl CRcovStrmWriteTrans::Commit(void) __ptr64
-?Commit@CRcovStrmWriteTrans@@QEAAXXZ
-; public: static int __cdecl CDriveInfo::ContainsDrive(unsigned short const * __ptr64)
-?ContainsDrive@CDriveInfo@@SAHPEBG@Z
-; public: void __cdecl CMachineAdmin::CreateSubdirs(unsigned short const * __ptr64) __ptr64
-?CreateSubdirs@CMachineAdmin@@QEAAXPEBG@Z
-; public: void __cdecl CRequestClient::DataWriteRead(void * __ptr64,unsigned long,void * __ptr64,unsigned long,unsigned long & __ptr64) __ptr64
-?DataWriteRead@CRequestClient@@QEAAXPEAXK0KAEAK@Z
-; void __cdecl DecodeEscapes(unsigned short * __ptr64,unsigned long & __ptr64,unsigned short * __ptr64)
-?DecodeEscapes@@YAXPEAGAEAK0@Z
-; void __cdecl DecodeHtmlNumeric(unsigned short * __ptr64)
-?DecodeHtmlNumeric@@YAXPEAG@Z
-; void __cdecl DecodeURLEscapes(unsigned char * __ptr64,unsigned long & __ptr64,unsigned short * __ptr64,unsigned long)
-?DecodeURLEscapes@@YAXPEAEAEAKPEAGK@Z
-; public: void __cdecl CPropStoreManager::DeleteRecord(unsigned long) __ptr64
-?DeleteRecord@CPropStoreManager@@QEAAXK@Z
-; public: void __cdecl CCatalogAdmin::DeleteRegistryParamNoThrow(unsigned short const * __ptr64) __ptr64
-?DeleteRegistryParamNoThrow@CCatalogAdmin@@QEAAXPEBG@Z
-; public: static unsigned int __cdecl CiStorage::DetermineDriveType(unsigned short const * __ptr64)
-?DetermineDriveType@CiStorage@@SAIPEBG@Z
-; public: int __cdecl CMachineAdmin::DisableCI(void) __ptr64
-?DisableCI@CMachineAdmin@@QEAAHXZ
-; public: void __cdecl CRegNotify::DisableNotification(void) __ptr64
-?DisableNotification@CRegNotify@@QEAAXXZ
-; public: void __cdecl CMetaDataMgr::DisableVPathNotify(void) __ptr64
-?DisableVPathNotify@CMetaDataMgr@@QEAAXXZ
-; public: void __cdecl CRequestClient::Disconnect(void) __ptr64
-?Disconnect@CRequestClient@@QEAAXXZ
-; public: long __cdecl CCopyRcovObject::DoIt(void) __ptr64
-?DoIt@CCopyRcovObject@@QEAAJXZ
-; public: long __cdecl CFilterDaemon::DoUpdates(void) __ptr64
-?DoUpdates@CFilterDaemon@@QEAAJXZ
-; public: void __cdecl CFwAsyncWorkItem::Done(void) __ptr64
-?Done@CFwAsyncWorkItem@@QEAAXXZ
-; long __cdecl DumpWorkId(unsigned short const * __ptr64,unsigned long,unsigned char * __ptr64,unsigned long & __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long)
-?DumpWorkId@@YAJPEBGKPEAEAEAK00K@Z
-; public: void __cdecl CPidLookupTable::Empty(void) __ptr64
-?Empty@CPidLookupTable@@QEAAXXZ
-; public: void __cdecl CPropStoreManager::Empty(void) __ptr64
-?Empty@CPropStoreManager@@QEAAXXZ
-; public: void __cdecl CRcovStrmWriteTrans::Empty(void) __ptr64
-?Empty@CRcovStrmWriteTrans@@QEAAXXZ
-; public: void __cdecl CSdidLookupTable::Empty(void) __ptr64
-?Empty@CSdidLookupTable@@QEAAXXZ
-; public: int __cdecl CMachineAdmin::EnableCI(void) __ptr64
-?EnableCI@CMachineAdmin@@QEAAHXZ
-; public: void __cdecl CMetaDataMgr::EnableVPathNotify(class CMetaDataVPathChangeCallBack * __ptr64) __ptr64
-?EnableVPathNotify@CMetaDataMgr@@QEAAXPEAVCMetaDataVPathChangeCallBack@@@Z
-; public: void __cdecl CPropStoreManager::EndTransaction(unsigned __int64,int,unsigned long,unsigned long) __ptr64
-?EndTransaction@CPropStoreManager@@QEAAX_KHKK@Z
-; public: int __cdecl CWin32RegAccess::Enum(unsigned short * __ptr64,unsigned long) __ptr64
-?Enum@CWin32RegAccess@@QEAAHPEAGK@Z
-; public: virtual long __cdecl CEmptyPropertyList::EnumPropInfo(unsigned long,unsigned short const * __ptr64 * __ptr64,struct tagDBID * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
-?EnumPropInfo@CEmptyPropertyList@@UEAAJKPEAPEBGPEAPEAUtagDBID@@PEAGPEAI@Z
-; public: void __cdecl CMetaDataMgr::EnumVPaths(class CMetaDataCallBack & __ptr64) __ptr64
-?EnumVPaths@CMetaDataMgr@@QEAAXAEAVCMetaDataCallBack@@@Z
-; public: void __cdecl CMetaDataMgr::EnumVServers(class CMetaDataVirtualServerCallBack & __ptr64) __ptr64
-?EnumVServers@CMetaDataMgr@@QEAAXAEAVCMetaDataVirtualServerCallBack@@@Z
-; public: static void __cdecl CiStorage::EnumerateFilesInDir(unsigned short const * __ptr64,class CEnumString & __ptr64)
-?EnumerateFilesInDir@CiStorage@@SAXPEBGAEAVCEnumString@@@Z
-; public: int __cdecl CPidLookupTable::EnumerateProperty(class CFullPropSpec & __ptr64,unsigned int & __ptr64) __ptr64
-?EnumerateProperty@CPidLookupTable@@QEAAHAEAVCFullPropSpec@@AEAI@Z
-; public: void __cdecl CRegAccess::EnumerateValues(unsigned short * __ptr64,class CRegCallBack & __ptr64) __ptr64
-?EnumerateValues@CRegAccess@@QEAAXPEAGAEAVCRegCallBack@@@Z
-; public: int __cdecl CMmStreamConsecBuf::Eof(void) __ptr64
-?Eof@CMmStreamConsecBuf@@QEAAHXZ
-; public: int __cdecl CMetaDataMgr::ExtensionHasScriptMap(unsigned short const * __ptr64) __ptr64
-?ExtensionHasScriptMap@CMetaDataMgr@@QEAAHPEBG@Z
-; public: virtual long __cdecl CPidConverter::FPSToPROPID(class CFullPropSpec const & __ptr64,unsigned long & __ptr64) __ptr64
-?FPSToPROPID@CPidConverter@@UEAAJAEBVCFullPropSpec@@AEAK@Z
-; public: void __cdecl CPropStoreManager::FastInit(class CiStorage * __ptr64) __ptr64
-?FastInit@CPropStoreManager@@QEAAXPEAVCiStorage@@@Z
-; public: void __cdecl COLEPropManager::FetchProperty(struct _GUID const & __ptr64,struct tagPROPSPEC const & __ptr64,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
-?FetchProperty@COLEPropManager@@QEAAXAEBU_GUID@@AEBUtagPROPSPEC@@PEAUtagPROPVARIANT@@PEAI@Z
-; public: int __cdecl CKeyArray::FillMax(int) __ptr64
-?FillMax@CKeyArray@@QEAAHH@Z
-; public: class CPropEntry const * __ptr64 __cdecl CEmptyPropertyList::Find(class CDbColId const & __ptr64) __ptr64
-?Find@CEmptyPropertyList@@QEAAPEBVCPropEntry@@AEBVCDbColId@@@Z
-; public: virtual class CPropEntry const * __ptr64 __cdecl CPropertyList::Find(class CDbColId const & __ptr64) __ptr64
-?Find@CPropertyList@@UEAAPEBVCPropEntry@@AEBVCDbColId@@@Z
-; public: virtual class CPropEntry const * __ptr64 __cdecl CPropertyList::Find(unsigned short const * __ptr64) __ptr64
-?Find@CPropertyList@@UEAAPEBVCPropEntry@@PEBG@Z
-; public: int __cdecl CPidLookupTable::FindPropid(class CFullPropSpec const & __ptr64,unsigned long & __ptr64,int) __ptr64
-?FindPropid@CPidLookupTable@@QEAAHAEBVCFullPropSpec@@AEAKH@Z
-; public: void __cdecl CDynStream::Flush(void) __ptr64
-?Flush@CDynStream@@QEAAXXZ
-; public: void __cdecl CPhysStorage::Flush(int) __ptr64
-?Flush@CPhysStorage@@QEAAXH@Z
-; public: void __cdecl CPropStoreManager::Flush(void) __ptr64
-?Flush@CPropStoreManager@@QEAAXXZ
-; public: static void __cdecl CCiOle::FlushIdle(void)
-?FlushIdle@CCiOle@@SAXXZ
-; public: struct tagDBCOMMANDTREE * __ptr64 __cdecl CTextToTree::FormFullTree(void) __ptr64
-?FormFullTree@CTextToTree@@QEAAPEAUtagDBCOMMANDTREE@@XZ
-; class CDbCmdTreeNode * __ptr64 __cdecl FormQueryTree(class CDbCmdTreeNode & __ptr64,class CCatState & __ptr64,struct IColumnMapper * __ptr64,int,int)
-?FormQueryTree@@YAPEAVCDbCmdTreeNode@@AEAV1@AEAVCCatState@@PEAUIColumnMapper@@HH@Z
-FsCiShutdown
-; public: unsigned long __cdecl CRegAccess::Get(unsigned short const * __ptr64) __ptr64
-?Get@CRegAccess@@QEAAKPEBG@Z
-; public: void __cdecl CRegAccess::Get(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned int) __ptr64
-?Get@CRegAccess@@QEAAXPEBGPEAGI@Z
-; public: int __cdecl CWin32RegAccess::Get(unsigned short const * __ptr64,unsigned long & __ptr64) __ptr64
-?Get@CWin32RegAccess@@QEAAHPEBGAEAK@Z
-; public: int __cdecl CWin32RegAccess::Get(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned int,int) __ptr64
-?Get@CWin32RegAccess@@QEAAHPEBGPEAGIH@Z
-; public: virtual long __cdecl CPropertyList::GetAllEntries(class CPropEntry * __ptr64 * __ptr64,unsigned long) __ptr64
-?GetAllEntries@CPropertyList@@UEAAJPEAPEAVCPropEntry@@K@Z
-; public: short __cdecl CAllocStorageVariant::GetBOOL(unsigned int)const __ptr64
-?GetBOOL@CAllocStorageVariant@@QEBAFI@Z
-; public: unsigned long __cdecl CPropStoreManager::GetBackupSize(unsigned long) __ptr64
-?GetBackupSize@CPropStoreManager@@QEAAKK@Z
-; public: virtual void __cdecl CMemDeSerStream::GetBlob(unsigned char * __ptr64,unsigned long) __ptr64
-?GetBlob@CMemDeSerStream@@UEAAXPEAEK@Z
-; unsigned long __cdecl GetBrowserCodepage(class CWebServer & __ptr64,unsigned long)
-?GetBrowserCodepage@@YAKAEAVCWebServer@@K@Z
-; public: virtual unsigned char __cdecl CMemDeSerStream::GetByte(void) __ptr64
-?GetByte@CMemDeSerStream@@UEAAEXZ
-; public: unsigned short const * __ptr64 __cdecl CCatState::GetCD(void) __ptr64
-?GetCD@CCatState@@QEAAPEBGXZ
-; public: int __cdecl CWebServer::GetCGIVariable(char const * __ptr64,class XArray<unsigned short> & __ptr64,unsigned long & __ptr64) __ptr64
-?GetCGIVariable@CWebServer@@QEAAHPEBDAEAV?$XArray@G@@AEAK@Z
-; public: int __cdecl CWebServer::GetCGIVariableW(unsigned short const * __ptr64,class XArray<unsigned short> & __ptr64,unsigned long & __ptr64) __ptr64
-?GetCGIVariableW@CWebServer@@QEAAHPEBGAEAV?$XArray@G@@AEAK@Z
-; public: struct _GUID __cdecl CAllocStorageVariant::GetCLSID(unsigned int)const __ptr64
-?GetCLSID@CAllocStorageVariant@@QEBA?AU_GUID@@I@Z
-; public: union tagCY __cdecl CAllocStorageVariant::GetCY(unsigned int)const __ptr64
-?GetCY@CAllocStorageVariant@@QEBA?ATtagCY@@I@Z
-; public: unsigned short const * __ptr64 __cdecl CCatState::GetCategory(unsigned int)const __ptr64
-?GetCategory@CCatState@@QEBAPEBGI@Z
-; public: virtual void __cdecl CMemDeSerStream::GetChar(char * __ptr64,unsigned long) __ptr64
-?GetChar@CMemDeSerStream@@UEAAXPEADK@Z
-; public: unsigned short const * __ptr64 __cdecl CCatState::GetColumn(unsigned int)const __ptr64
-?GetColumn@CCatState@@QEBAPEBGI@Z
-; public: unsigned short __cdecl CQueryScanner::GetCommandChar(void) __ptr64
-?GetCommandChar@CQueryScanner@@QEAAGXZ
-; public: double __cdecl CAllocStorageVariant::GetDATE(unsigned int)const __ptr64
-?GetDATE@CAllocStorageVariant@@QEBANI@Z
-; public: int __cdecl CCatalogAdmin::GetDWORDParam(unsigned short const * __ptr64,unsigned long & __ptr64) __ptr64
-?GetDWORDParam@CCatalogAdmin@@QEAAHPEBGAEAK@Z
-; public: int __cdecl CMachineAdmin::GetDWORDParam(unsigned short const * __ptr64,unsigned long & __ptr64) __ptr64
-?GetDWORDParam@CMachineAdmin@@QEAAHPEBGAEAK@Z
-; public: void __cdecl CDriveInfo::GetDiskSpace(__int64 & __ptr64,__int64 & __ptr64) __ptr64
-?GetDiskSpace@CDriveInfo@@QEAAXAEA_J0@Z
-; public: virtual double __cdecl CMemDeSerStream::GetDouble(void) __ptr64
-?GetDouble@CMemDeSerStream@@UEAANXZ
-; public: static void __cdecl CDriveInfo::GetDrive(unsigned short const * __ptr64,unsigned short * __ptr64)
-?GetDrive@CDriveInfo@@SAXPEBGPEAG@Z
-; public: unsigned char * __ptr64 __cdecl CGenericCiProxy::GetEntryBuffer(unsigned long & __ptr64) __ptr64
-?GetEntryBuffer@CGenericCiProxy@@QEAAPEAEAEAK@Z
-; public: struct _FILETIME __cdecl CAllocStorageVariant::GetFILETIME(unsigned int)const __ptr64
-?GetFILETIME@CAllocStorageVariant@@QEBA?AU_FILETIME@@I@Z
-; public: int __cdecl CPathParser::GetFileName(unsigned short * __ptr64,unsigned long & __ptr64)const __ptr64
-?GetFileName@CPathParser@@QEBAHPEAGAEAK@Z
-; public: enum CDriveInfo::eFileSystem __cdecl CDriveInfo::GetFileSystem(int) __ptr64
-?GetFileSystem@CDriveInfo@@QEAA?AW4eFileSystem@1@H@Z
-; public: virtual float __cdecl CMemDeSerStream::GetFloat(void) __ptr64
-?GetFloat@CMemDeSerStream@@UEAAMXZ
-; public: virtual void __cdecl CMemDeSerStream::GetGUID(struct _GUID & __ptr64) __ptr64
-?GetGUID@CMemDeSerStream@@UEAAXAEAU_GUID@@@Z
-; class CPropListFile * __ptr64 __cdecl GetGlobalPropListFile(void)
-?GetGlobalPropListFile@@YAPEAVCPropListFile@@XZ
-; class CStaticPropertyList * __ptr64 __cdecl GetGlobalStaticPropertyList(void)
-?GetGlobalStaticPropertyList@@YAPEAVCStaticPropertyList@@XZ
-; public: short __cdecl CAllocStorageVariant::GetI2(unsigned int)const __ptr64
-?GetI2@CAllocStorageVariant@@QEBAFI@Z
-; public: long __cdecl CAllocStorageVariant::GetI4(unsigned int)const __ptr64
-?GetI4@CAllocStorageVariant@@QEBAJI@Z
-; public: union _LARGE_INTEGER __cdecl CAllocStorageVariant::GetI8(unsigned int)const __ptr64
-?GetI8@CAllocStorageVariant@@QEBA?AT_LARGE_INTEGER@@I@Z
-; unsigned long __cdecl GetLCIDFromString(unsigned short * __ptr64)
-?GetLCIDFromString@@YAKPEAG@Z
-; public: char * __ptr64 __cdecl CAllocStorageVariant::GetLPSTR(unsigned int)const __ptr64
-?GetLPSTR@CAllocStorageVariant@@QEBAPEADI@Z
-; public: unsigned short * __ptr64 __cdecl CAllocStorageVariant::GetLPWSTR(unsigned int)const __ptr64
-?GetLPWSTR@CAllocStorageVariant@@QEBAPEAGI@Z
-; public: unsigned short const * __ptr64 __cdecl CCatalogAdmin::GetLocation(void) __ptr64
-?GetLocation@CCatalogAdmin@@QEAAPEBGXZ
-; public: virtual long __cdecl CMemDeSerStream::GetLong(void) __ptr64
-?GetLong@CMemDeSerStream@@UEAAJXZ
-; public: int __cdecl CQueryScanner::GetNumber(unsigned long & __ptr64,int & __ptr64) __ptr64
-?GetNumber@CQueryScanner@@QEAAHAEAKAEAH@Z
-; public: int __cdecl CQueryScanner::GetNumber(double & __ptr64) __ptr64
-?GetNumber@CQueryScanner@@QEAAHAEAN@Z
-; public: int __cdecl CQueryScanner::GetNumber(__int64 & __ptr64,int & __ptr64) __ptr64
-?GetNumber@CQueryScanner@@QEAAHAEA_JAEAH@Z
-; public: int __cdecl CQueryScanner::GetNumber(unsigned __int64 & __ptr64,int & __ptr64) __ptr64
-?GetNumber@CQueryScanner@@QEAAHAEA_KAEAH@Z
-; public: void __cdecl CKeyDeComp::GetOffset(struct BitOffset & __ptr64) __ptr64
-?GetOffset@CKeyDeComp@@QEAAXAEAUBitOffset@@@Z
-; long __cdecl GetOleDBErrorInfo(struct IUnknown * __ptr64,struct _GUID const & __ptr64,unsigned long,unsigned int,struct tagERRORINFO * __ptr64,struct IErrorInfo * __ptr64 * __ptr64)
-?GetOleDBErrorInfo@@YAJPEAUIUnknown@@AEBU_GUID@@KIPEAUtagERRORINFO@@PEAPEAUIErrorInfo@@@Z
-; long __cdecl GetOleError(class CException & __ptr64)
-?GetOleError@@YAJAEAVCException@@@Z
-; public: unsigned long __cdecl CWebServer::GetPhysicalPath(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned long,unsigned long) __ptr64
-?GetPhysicalPath@CWebServer@@QEAAKPEBGPEAGKK@Z
-; public: int __cdecl CEmptyPropertyList::GetPropInfo(class CDbColId const & __ptr64,unsigned short const * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
-?GetPropInfo@CEmptyPropertyList@@QEAAHAEBVCDbColId@@PEAPEBGPEAGPEAI@Z
-; public: int __cdecl CEmptyPropertyList::GetPropInfo(unsigned short const * __ptr64,class CDbColId * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
-?GetPropInfo@CEmptyPropertyList@@QEAAHPEBGPEAPEAVCDbColId@@PEAGPEAI@Z
-; public: virtual long __cdecl CEmptyPropertyList::GetPropInfoFromId(struct tagDBID const * __ptr64,unsigned short * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
-?GetPropInfoFromId@CEmptyPropertyList@@UEAAJPEBUtagDBID@@PEAPEAGPEAGPEAI@Z
-; public: virtual long __cdecl CEmptyPropertyList::GetPropInfoFromName(unsigned short const * __ptr64,struct tagDBID * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
-?GetPropInfoFromName@CEmptyPropertyList@@UEAAJPEBGPEAPEAUtagDBID@@PEAGPEAI@Z
-; public: static unsigned short __cdecl CEmptyPropertyList::GetPropType(unsigned int)
-?GetPropType@CEmptyPropertyList@@SAGI@Z
-; public: static unsigned int __cdecl CEmptyPropertyList::GetPropTypeCount(void)
-?GetPropTypeCount@CEmptyPropertyList@@SAIXZ
-; public: static unsigned short const * __ptr64 __cdecl CEmptyPropertyList::GetPropTypeName(unsigned int)
-?GetPropTypeName@CEmptyPropertyList@@SAPEBGI@Z
-; public: virtual long __cdecl CDbProperties::GetProperties(unsigned long,struct tagDBPROPIDSET const * __ptr64 const,unsigned long * __ptr64,struct tagDBPROPSET * __ptr64 * __ptr64) __ptr64
-?GetProperties@CDbProperties@@UEAAJKQEBUtagDBPROPIDSET@@PEAKPEAPEAUtagDBPROPSET@@@Z
-; public: void __cdecl CGetDbProps::GetProperties(struct IDBProperties * __ptr64,unsigned long) __ptr64
-?GetProperties@CGetDbProps@@QEAAXPEAUIDBProperties@@K@Z
-; public: virtual long __cdecl CDbProperties::GetPropertyInfo(unsigned long,struct tagDBPROPIDSET const * __ptr64 const,unsigned long * __ptr64,struct tagDBPROPINFOSET * __ptr64 * __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
-?GetPropertyInfo@CDbProperties@@UEAAJKQEBUtagDBPROPIDSET@@PEAKPEAPEAUtagDBPROPINFOSET@@PEAPEAG@Z
-; public: float __cdecl CAllocStorageVariant::GetR4(unsigned int)const __ptr64
-?GetR4@CAllocStorageVariant@@QEBAMI@Z
-; public: double __cdecl CAllocStorageVariant::GetR8(unsigned int)const __ptr64
-?GetR8@CAllocStorageVariant@@QEBANI@Z
-; public: int __cdecl CMachineAdmin::GetSZParam(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned long) __ptr64
-?GetSZParam@CMachineAdmin@@QEAAHPEBGPEAGK@Z
-; long __cdecl GetScodeError(class CException & __ptr64)
-?GetScodeError@@YAJAEAVCException@@@Z
-; int __cdecl GetSecret(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short * __ptr64 * __ptr64,unsigned long * __ptr64)
-?GetSecret@@YAHPEBG0PEAPEAGPEAK@Z
-; public: unsigned long __cdecl CDriveInfo::GetSectorSize(void) __ptr64
-?GetSectorSize@CDriveInfo@@QEAAKXZ
-; public: void __cdecl CCatState::GetSortProp(unsigned int,unsigned short const * __ptr64 * __ptr64,enum SORTDIR * __ptr64)const __ptr64
-?GetSortProp@CCatState@@QEBAXIPEAPEBGPEAW4SORTDIR@@@Z
-; void __cdecl GetStackTrace(char * __ptr64,unsigned long)
-?GetStackTrace@@YAXPEADK@Z
-; public: unsigned char const * __ptr64 __cdecl CGenericCiProxy::GetStartupData(struct _GUID & __ptr64,unsigned long & __ptr64) __ptr64
-?GetStartupData@CGenericCiProxy@@QEAAPEBEAEAU_GUID@@AEAK@Z
-; public: class PStorage & __ptr64 __cdecl CPropStoreManager::GetStorage(unsigned long) __ptr64
-?GetStorage@CPropStoreManager@@QEAAAEAVPStorage@@K@Z
-; public: unsigned short * __ptr64 __cdecl CKey::GetStr(void)const __ptr64
-?GetStr@CKey@@QEBAPEAGXZ
-; public: unsigned short * __ptr64 __cdecl CKeyBuf::GetStr(void)const __ptr64
-?GetStr@CKeyBuf@@QEBAPEAGXZ
-; public: virtual char * __ptr64 __cdecl CMemDeSerStream::GetString(void) __ptr64
-?GetString@CMemDeSerStream@@UEAAPEADXZ
-; class CDbRestriction * __ptr64 __cdecl GetStringDbRestriction(unsigned short const * __ptr64,unsigned long,struct IColumnMapper * __ptr64,unsigned long)
-?GetStringDbRestriction@@YAPEAVCDbRestriction@@PEBGKPEAUIColumnMapper@@K@Z
-; void __cdecl GetStringFromLCID(unsigned long,unsigned short * __ptr64)
-?GetStringFromLCID@@YAXKPEAG@Z
-; public: unsigned long __cdecl CPropStoreManager::GetTotalSizeInKB(void) __ptr64
-?GetTotalSizeInKB@CPropStoreManager@@QEAAKXZ
-; public: unsigned long __cdecl CPropertyStore::GetTotalSizeInKB(void) __ptr64
-?GetTotalSizeInKB@CPropertyStore@@QEAAKXZ
-; public: virtual unsigned long __cdecl CMemDeSerStream::GetULong(void) __ptr64
-?GetULong@CMemDeSerStream@@UEAAKXZ
-; public: virtual unsigned short __cdecl CMemDeSerStream::GetUShort(void) __ptr64
-?GetUShort@CMemDeSerStream@@UEAAGXZ
-; public: void __cdecl CIndexTable::GetUserHdrInfo(unsigned int & __ptr64,int & __ptr64) __ptr64
-?GetUserHdrInfo@CIndexTable@@QEAAXAEAIAEAH@Z
-; public: unsigned long __cdecl CMetaDataMgr::GetVPathAccess(unsigned short const * __ptr64) __ptr64
-?GetVPathAccess@CMetaDataMgr@@QEAAKPEBG@Z
-; public: unsigned long __cdecl CMetaDataMgr::GetVPathAuthorization(unsigned short const * __ptr64) __ptr64
-?GetVPathAuthorization@CMetaDataMgr@@QEAAKPEBG@Z
-; public: unsigned long __cdecl CMetaDataMgr::GetVPathSSLAccess(unsigned short const * __ptr64) __ptr64
-?GetVPathSSLAccess@CMetaDataMgr@@QEAAKPEBG@Z
-; public: unsigned short const * __ptr64 __cdecl CDriveInfo::GetVolumeName(int) __ptr64
-?GetVolumeName@CDriveInfo@@QEAAPEBGH@Z
-; public: virtual void __cdecl CMemDeSerStream::GetWChar(unsigned short * __ptr64,unsigned long) __ptr64
-?GetWChar@CMemDeSerStream@@UEAAXPEAGK@Z
-; public: virtual unsigned short * __ptr64 __cdecl CMemDeSerStream::GetWString(void) __ptr64
-?GetWString@CMemDeSerStream@@UEAAPEAGXZ
-; public: long __cdecl CDbCmdTreeNode::GetWeight(void)const __ptr64
-?GetWeight@CDbCmdTreeNode@@QEBAJXZ
-; public: void __cdecl CDynStream::Grow(class PStorage & __ptr64,unsigned long) __ptr64
-?Grow@CDynStream@@QEAAXAEAVPStorage@@K@Z
-; private: void __cdecl CVirtualString::GrowBuffer(unsigned long) __ptr64
-?GrowBuffer@CVirtualString@@AEAAXK@Z
-; void __cdecl HTMLEscapeW(unsigned short const * __ptr64,class CVirtualString & __ptr64,unsigned long)
-?HTMLEscapeW@@YAXPEBGAEAVCVirtualString@@K@Z
-; private: void __cdecl CImpersonateClient::Impersonate(void) __ptr64
-?Impersonate@CImpersonateClient@@AEAAXXZ
-; public: void __cdecl CFileMapView::Init(void) __ptr64
-?Init@CFileMapView@@QEAAXXZ
-; public: void __cdecl CMmStreamConsecBuf::Init(class PMmStream * __ptr64) __ptr64
-?Init@CMmStreamConsecBuf@@QEAAXPEAVPMmStream@@@Z
-; public: int __cdecl CPidLookupTable::Init(class PRcovStorageObj * __ptr64) __ptr64
-?Init@CPidLookupTable@@QEAAHPEAVPRcovStorageObj@@@Z
-; public: void __cdecl CRcovStorageHdr::Init(unsigned long) __ptr64
-?Init@CRcovStorageHdr@@QEAAXK@Z
-; public: void __cdecl CRegChangeEvent::Init(void) __ptr64
-?Init@CRegChangeEvent@@QEAAXXZ
-; public: int __cdecl CSdidLookupTable::Init(class CiStorage * __ptr64) __ptr64
-?Init@CSdidLookupTable@@QEAAHPEAVCiStorage@@@Z
-; public: virtual void __cdecl CPropertyList::InitIterator(void) __ptr64
-?InitIterator@CPropertyList@@UEAAXXZ
-; public: void __cdecl CImpersonationTokenCache::Initialize(unsigned short const * __ptr64,int,int,int,unsigned long,unsigned long,unsigned long) __ptr64
-?Initialize@CImpersonationTokenCache@@QEAAXPEBGHHHKKK@Z
-; public: void __cdecl CDynStream::InitializeForRead(void) __ptr64
-?InitializeForRead@CDynStream@@QEAAXXZ
-; public: void __cdecl CDynStream::InitializeForWrite(unsigned long) __ptr64
-?InitializeForWrite@CDynStream@@QEAAXK@Z
-; protected: void __cdecl CDbCmdTreeNode::InsertChild(class CDbCmdTreeNode * __ptr64) __ptr64
-?InsertChild@CDbCmdTreeNode@@IEAAXPEAV1@@Z
-; public: int __cdecl CMachineAdmin::IsCIEnabled(void) __ptr64
-?IsCIEnabled@CMachineAdmin@@QEAAHXZ
-; public: int __cdecl CMachineAdmin::IsCIPaused(void) __ptr64
-?IsCIPaused@CMachineAdmin@@QEAAHXZ
-; public: int __cdecl CMachineAdmin::IsCIStarted(void) __ptr64
-?IsCIStarted@CMachineAdmin@@QEAAHXZ
-; public: int __cdecl CMachineAdmin::IsCIStopped(void) __ptr64
-?IsCIStopped@CMachineAdmin@@QEAAHXZ
-; public: int __cdecl CCatalogAdmin::IsCatalogInactive(void) __ptr64
-?IsCatalogInactive@CCatalogAdmin@@QEAAHXZ
-; int __cdecl IsDirectoryWritable(unsigned short const * __ptr64)
-?IsDirectoryWritable@@YAHPEBG@Z
-; public: static int __cdecl CMetaDataMgr::IsIISAdminUp(int & __ptr64)
-?IsIISAdminUp@CMetaDataMgr@@SAHAEAH@Z
-; public: static int __cdecl CImpersonateSystem::IsImpersonated(void)
-?IsImpersonated@CImpersonateSystem@@SAHXZ
-; public: int __cdecl CRestriction::IsLeaf(void)const __ptr64
-?IsLeaf@CRestriction@@QEBAHXZ
-; int __cdecl IsNullPointerVariant(struct tagPROPVARIANT * __ptr64)
-?IsNullPointerVariant@@YAHPEAUtagPROPVARIANT@@@Z
-; public: int __cdecl CCatalogAdmin::IsPaused(void) __ptr64
-?IsPaused@CCatalogAdmin@@QEAAHXZ
-; public: static int __cdecl CImpersonateSystem::IsRunningAsSystem(void)
-?IsRunningAsSystem@CImpersonateSystem@@SAHXZ
-; public: int __cdecl CDriveInfo::IsSameDrive(unsigned short const * __ptr64) __ptr64
-?IsSameDrive@CDriveInfo@@QEAAHPEBG@Z
-; long __cdecl IsScopeValid(unsigned short const * __ptr64,unsigned int,int)
-?IsScopeValid@@YAJPEBGIH@Z
-; public: int __cdecl CCatalogAdmin::IsStarted(void) __ptr64
-?IsStarted@CCatalogAdmin@@QEAAHXZ
-; public: int __cdecl CCatalogAdmin::IsStopped(void) __ptr64
-?IsStopped@CCatalogAdmin@@QEAAHXZ
-; public: int __cdecl CAllocStorageVariant::IsValid(void)const __ptr64
-?IsValid@CAllocStorageVariant@@QEBAHXZ
-; public: int __cdecl CNodeRestriction::IsValid(void)const __ptr64
-?IsValid@CNodeRestriction@@QEBAHXZ
-; public: int __cdecl COccRestriction::IsValid(void)const __ptr64
-?IsValid@COccRestriction@@QEBAHXZ
-; public: int __cdecl CRestriction::IsValid(void)const __ptr64
-?IsValid@CRestriction@@QEBAHXZ
-; public: int __cdecl CFilterDaemon::IsWaitingForDocument(void) __ptr64
-?IsWaitingForDocument@CFilterDaemon@@QEAAHXZ
-; public: int __cdecl CDriveInfo::IsWriteProtected(void) __ptr64
-?IsWriteProtected@CDriveInfo@@QEAAHXZ
-; public: void __cdecl CLocalGlobalPropertyList::Load(unsigned short const * __ptr64 const) __ptr64
-?Load@CLocalGlobalPropertyList@@QEAAXQEBG@Z
-; unsigned long __cdecl LocaleToCodepage(unsigned long)
-?LocaleToCodepage@@YAKK@Z
-; private: unsigned long __cdecl CPropertyStore::LokNewWorkId(unsigned long,int,int) __ptr64
-?LokNewWorkId@CPropertyStore@@AEAAKKHH@Z
-; public: int __cdecl CCatStateInfo::LokUpdate(void) __ptr64
-?LokUpdate@CCatStateInfo@@QEAAHXZ
-; public: void __cdecl CPropStoreManager::LongInit(int & __ptr64,unsigned long & __ptr64,void (__cdecl*)(unsigned long,int,void const * __ptr64),void const * __ptr64) __ptr64
-?LongInit@CPropStoreManager@@QEAAXAEAHAEAKP6AXKHPEBX@Z2@Z
-; private: unsigned int __cdecl CPropStoreInfo::Lookup(unsigned long) __ptr64
-?Lookup@CPropStoreInfo@@AEAAIK@Z
-; public: unsigned long __cdecl CSdidLookupTable::LookupSDID(void * __ptr64,unsigned long) __ptr64
-?LookupSDID@CSdidLookupTable@@QEAAKPEAXK@Z
-; public: void __cdecl CPhysStorage::MakeBackupCopy(class CPhysStorage & __ptr64,class PSaveProgressTracker & __ptr64) __ptr64
-?MakeBackupCopy@CPhysStorage@@QEAAXAEAV1@AEAVPSaveProgressTracker@@@Z
-; public: void __cdecl CPidLookupTable::MakeBackupCopy(class PRcovStorageObj & __ptr64,class PSaveProgressTracker & __ptr64) __ptr64
-?MakeBackupCopy@CPidLookupTable@@QEAAXAEAVPRcovStorageObj@@AEAVPSaveProgressTracker@@@Z
-; public: void __cdecl CPropStoreManager::MakeBackupCopy(struct IProgressNotify * __ptr64,int & __ptr64,class CiStorage & __ptr64,struct ICiEnumWorkids * __ptr64,struct IEnumString * __ptr64 * __ptr64) __ptr64
-?MakeBackupCopy@CPropStoreManager@@QEAAXPEAUIProgressNotify@@AEAHAEAVCiStorage@@PEAUICiEnumWorkids@@PEAPEAUIEnumString@@@Z
-; long __cdecl MakeICommand(struct IUnknown * __ptr64 * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,struct IUnknown * __ptr64)
-?MakeICommand@@YAJPEAPEAUIUnknown@@PEBG1PEAU1@@Z
-; long __cdecl MakeISearch(struct ISearchQueryHits * __ptr64 * __ptr64,class CDbRestriction * __ptr64,unsigned short const * __ptr64)
-?MakeISearch@@YAJPEAPEAUISearchQueryHits@@PEAVCDbRestriction@@PEBG@Z
-; long __cdecl MakeLocalICommand(struct IUnknown * __ptr64 * __ptr64,struct ICiCDocStore * __ptr64,struct IUnknown * __ptr64)
-?MakeLocalICommand@@YAJPEAPEAUIUnknown@@PEAUICiCDocStore@@PEAU1@@Z
-; long __cdecl MakeMetadataICommand(struct IUnknown * __ptr64 * __ptr64,enum CiMetaData,unsigned short const * __ptr64,unsigned short const * __ptr64,struct IUnknown * __ptr64)
-?MakeMetadataICommand@@YAJPEAPEAUIUnknown@@W4CiMetaData@@PEBG2PEAU1@@Z
-; public: void __cdecl CFullPath::MakePath(unsigned short const * __ptr64) __ptr64
-?MakePath@CFullPath@@QEAAXPEBG@Z
-; public: void __cdecl CFullPath::MakePath(unsigned short const * __ptr64,unsigned int) __ptr64
-?MakePath@CFullPath@@QEAAXPEBGI@Z
-; private: void __cdecl CImpersonateSystem::MakePrivileged(void) __ptr64
-?MakePrivileged@CImpersonateSystem@@AEAAXXZ
-; public: void __cdecl CMmStreamConsecBuf::Map(unsigned long) __ptr64
-?Map@CMmStreamConsecBuf@@QEAAXK@Z
-; public: int __cdecl CDynStream::MarkDirty(void) __ptr64
-?MarkDirty@CDynStream@@QEAAHXZ
-; public: void __cdecl CBaseStorageVariant::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CBaseStorageVariant@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CContentRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CContentRestriction@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CDbCmdTreeNode::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CDbCmdTreeNode@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CFullPropSpec::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CFullPropSpec@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CNatLanguageRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CNatLanguageRestriction@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CNodeRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CNodeRestriction@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CNotRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CNotRestriction@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CPropNameArray::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CPropNameArray@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CPropertyRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CPropertyRestriction@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CRestriction@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CVectorRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CVectorRestriction@@QEBAXAEAVPSerStream@@@Z
-; public: int __cdecl CBufferCache::MinPageInUse(unsigned long & __ptr64) __ptr64
-?MinPageInUse@CBufferCache@@QEAAHAEAK@Z
-; public: int __cdecl CPhysStorage::MinPageInUse(unsigned long & __ptr64) __ptr64
-?MinPageInUse@CPhysStorage@@QEAAHAEAK@Z
-; unsigned long __cdecl MultiByteToXArrayWideChar(unsigned char const * __ptr64,unsigned long,unsigned int,class XArray<unsigned short> & __ptr64)
-?MultiByteToXArrayWideChar@@YAKPEBEKIAEAV?$XArray@G@@@Z
-; unsigned __int64 __cdecl My_wcstoui64(unsigned short const * __ptr64,unsigned short * __ptr64 * __ptr64,int)
-?My_wcstoui64@@YA_KPEBGPEAPEAGH@Z
-; public: unsigned long __cdecl CPidRemapper::NameToReal(class CFullPropSpec const * __ptr64) __ptr64
-?NameToReal@CPidRemapper@@QEAAKPEBVCFullPropSpec@@@Z
-; public: static struct IStemmer * __ptr64 __cdecl CCiOle::NewStemmer(struct _GUID const & __ptr64)
-?NewStemmer@CCiOle@@SAPEAUIStemmer@@AEBU_GUID@@@Z
-; public: static struct IWordBreaker * __ptr64 __cdecl CCiOle::NewWordBreaker(struct _GUID const & __ptr64)
-?NewWordBreaker@CCiOle@@SAPEAUIWordBreaker@@AEBU_GUID@@@Z
-; public: int __cdecl CCatalogEnum::Next(void) __ptr64
-?Next@CCatalogEnum@@QEAAHXZ
-; public: virtual long __cdecl CEnumString::Next(unsigned long,unsigned short * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
-?Next@CEnumString@@UEAAJKPEAPEAGPEAK@Z
-; public: virtual long __cdecl CEnumWorkid::Next(unsigned long,unsigned long * __ptr64,unsigned long * __ptr64) __ptr64
-?Next@CEnumWorkid@@UEAAJKPEAK0@Z
-; public: virtual class CPropEntry const * __ptr64 __cdecl CPropertyList::Next(void) __ptr64
-?Next@CPropertyList@@UEAAPEBVCPropEntry@@XZ
-; public: int __cdecl CScopeEnum::Next(void) __ptr64
-?Next@CScopeEnum@@QEAAHXZ
-; public: unsigned long __cdecl CPropertyStoreWids::NextWorkId(void) __ptr64
-?NextWorkId@CPropertyStoreWids@@QEAAKXZ
-; public: unsigned int __cdecl CCatState::NumberOfColumns(void)const __ptr64
-?NumberOfColumns@CCatState@@QEBAIXZ
-; public: unsigned int __cdecl CCatState::NumberOfSortProps(void)const __ptr64
-?NumberOfSortProps@CCatState@@QEBAIXZ
-; public: void __cdecl CMmStream::Open(unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long,unsigned long,int) __ptr64
-?Open@CMmStream@@QEAAXPEBGKKKKH@Z
-; public: int __cdecl COLEPropManager::Open(class CFunnyPath const & __ptr64) __ptr64
-?Open@COLEPropManager@@QEAAHAEBVCFunnyPath@@@Z
-; public: void __cdecl CMmStream::OpenExclusive(unsigned short * __ptr64,int) __ptr64
-?OpenExclusive@CMmStream@@QEAAXPEAGH@Z
-; struct _iobuf * __ptr64 __cdecl OpenFileFromPath(unsigned short const * __ptr64)
-?OpenFileFromPath@@YAPEAU_iobuf@@PEBG@Z
-; public: class CCompositePropRecord * __ptr64 __cdecl CPropStoreManager::OpenRecord(unsigned long,unsigned char * __ptr64) __ptr64
-?OpenRecord@CPropStoreManager@@QEAAPEAVCCompositePropRecord@@KPEAE@Z
-; public: class CCompositePropRecordForWrites * __ptr64 __cdecl CPropStoreManager::OpenRecordForWrites(unsigned long,unsigned char * __ptr64) __ptr64
-?OpenRecordForWrites@CPropStoreManager@@QEAAPEAVCCompositePropRecordForWrites@@KPEAE@Z
-; long __cdecl ParseCatalogURL(unsigned short const * __ptr64,class XPtrST<unsigned short> & __ptr64,class XPtrST<unsigned short> & __ptr64)
-?ParseCatalogURL@@YAJPEBGAEAV?$XPtrST@G@@1@Z
-; public: class CRestriction * __ptr64 __cdecl CParseCommandTree::ParseExpression(class CDbCmdTreeNode * __ptr64) __ptr64
-?ParseExpression@CParseCommandTree@@QEAAPEAVCRestriction@@PEAVCDbCmdTreeNode@@@Z
-; public: static void __cdecl CPropertyList::ParseOneLine(class CQueryScanner & __ptr64,int,class XPtr<class CPropEntry> & __ptr64)
-?ParseOneLine@CPropertyList@@SAXAEAVCQueryScanner@@HAEAV?$XPtr@VCPropEntry@@@@@Z
-; public: class CDbRestriction * __ptr64 __cdecl CQueryParser::ParseQueryPhrase(void) __ptr64
-?ParseQueryPhrase@CQueryParser@@QEAAPEAVCDbRestriction@@XZ
-; class CDbColumns * __ptr64 __cdecl ParseStringColumns(unsigned short const * __ptr64,struct IColumnMapper * __ptr64,unsigned long,class PVariableSet * __ptr64,class CDynArray<unsigned short> * __ptr64)
-?ParseStringColumns@@YAPEAVCDbColumns@@PEBGPEAUIColumnMapper@@KPEAVPVariableSet@@PEAV?$CDynArray@G@@@Z
-; public: int __cdecl CCatalogAdmin::Pause(void) __ptr64
-?Pause@CCatalogAdmin@@QEAAHXZ
-; public: int __cdecl CMachineAdmin::PauseCI(void) __ptr64
-?PauseCI@CMachineAdmin@@QEAAHXZ
-; public: virtual unsigned long __cdecl CMemDeSerStream::PeekULong(void) __ptr64
-?PeekULong@CMemDeSerStream@@UEAAKXZ
-; public: unsigned long __cdecl CPidMapper::PidToRealPid(unsigned long) __ptr64
-?PidToRealPid@CPidMapper@@QEAAKK@Z
-; public: unsigned long __cdecl CStandardPropMapper::PropertyToPropId(class CFullPropSpec const & __ptr64,int) __ptr64
-?PropertyToPropId@CStandardPropMapper@@QEAAKAEBVCFullPropSpec@@H@Z
-; public: virtual long __cdecl CFwPropertyMapper::PropertyToPropid(struct tagFULLPROPSPEC const * __ptr64,int,unsigned long * __ptr64) __ptr64
-?PropertyToPropid@CFwPropertyMapper@@UEAAJPEBUtagFULLPROPSPEC@@HPEAK@Z
-; public: void __cdecl CValueNormalizer::PutMaxValue(unsigned long,unsigned long & __ptr64,enum VARENUM) __ptr64
-?PutMaxValue@CValueNormalizer@@QEAAXKAEAKW4VARENUM@@@Z
-; public: void __cdecl CValueNormalizer::PutMinValue(unsigned long,unsigned long & __ptr64,enum VARENUM) __ptr64
-?PutMinValue@CValueNormalizer@@QEAAXKAEAKW4VARENUM@@@Z
-; public: void __cdecl CValueNormalizer::PutValue(unsigned long,unsigned long & __ptr64,class CStorageVariant const & __ptr64) __ptr64
-?PutValue@CValueNormalizer@@QEAAXKAEAKAEBVCStorageVariant@@@Z
-; void __cdecl PutWString(class PSerStream & __ptr64,unsigned short const * __ptr64)
-?PutWString@@YAXAEAVPSerStream@@PEBG@Z
-; private: class CDbRestriction * __ptr64 __cdecl CQueryParser::Query(class CDbNodeRestriction * __ptr64) __ptr64
-?Query@CQueryParser@@AEAAPEAVCDbRestriction@@PEAVCDbNodeRestriction@@@Z
-; public: class CCatalogAdmin * __ptr64 __cdecl CCatalogEnum::QueryCatalogAdmin(void) __ptr64
-?QueryCatalogAdmin@CCatalogEnum@@QEAAPEAVCCatalogAdmin@@XZ
-; public: class CCatalogAdmin * __ptr64 __cdecl CMachineAdmin::QueryCatalogAdmin(unsigned short const * __ptr64) __ptr64
-?QueryCatalogAdmin@CMachineAdmin@@QEAAPEAVCCatalogAdmin@@PEBG@Z
-; public: class CCatalogEnum * __ptr64 __cdecl CMachineAdmin::QueryCatalogEnum(void) __ptr64
-?QueryCatalogEnum@CMachineAdmin@@QEAAPEAVCCatalogEnum@@XZ
-; public: virtual long __cdecl CDbProperties::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
-?QueryInterface@CDbProperties@@UEAAJAEBU_GUID@@PEAPEAX@Z
-; public: virtual long __cdecl CEmptyPropertyList::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
-?QueryInterface@CEmptyPropertyList@@UEAAJAEBU_GUID@@PEAPEAX@Z
-; public: virtual long __cdecl CEnumString::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
-?QueryInterface@CEnumString@@UEAAJAEBU_GUID@@PEAPEAX@Z
-; public: virtual long __cdecl CEnumWorkid::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
-?QueryInterface@CEnumWorkid@@UEAAJAEBU_GUID@@PEAPEAX@Z
-; public: virtual long __cdecl CFwPropertyMapper::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
-?QueryInterface@CFwPropertyMapper@@UEAAJAEBU_GUID@@PEAPEAX@Z
-; public: virtual long __cdecl CQueryUnknown::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
-?QueryInterface@CQueryUnknown@@UEAAJAEBU_GUID@@PEAPEAX@Z
-; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QueryPidLookupTable(unsigned long) __ptr64
-?QueryPidLookupTable@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
-; public: class CScopeAdmin * __ptr64 __cdecl CCatalogAdmin::QueryScopeAdmin(unsigned short const * __ptr64) __ptr64
-?QueryScopeAdmin@CCatalogAdmin@@QEAAPEAVCScopeAdmin@@PEBG@Z
-; public: class CScopeAdmin * __ptr64 __cdecl CScopeEnum::QueryScopeAdmin(void) __ptr64
-?QueryScopeAdmin@CScopeEnum@@QEAAPEAVCScopeAdmin@@XZ
-; public: class CScopeEnum * __ptr64 __cdecl CCatalogAdmin::QueryScopeEnum(void) __ptr64
-?QueryScopeEnum@CCatalogAdmin@@QEAAPEAVCScopeEnum@@XZ
-; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QueryScopeList(unsigned long) __ptr64
-?QueryScopeList@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
-; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QuerySdidLookupTable(unsigned long) __ptr64
-?QuerySdidLookupTable@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
-; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QueryVirtualScopeList(unsigned long) __ptr64
-?QueryVirtualScopeList@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
-; public: void __cdecl CPidRemapper::ReBuild(class CPidMapper const & __ptr64) __ptr64
-?ReBuild@CPidRemapper@@QEAAXAEBVCPidMapper@@@Z
-; public: void __cdecl CQueryUnknown::ReInit(unsigned long,class CRowset * __ptr64 * __ptr64) __ptr64
-?ReInit@CQueryUnknown@@QEAAXKPEAPEAVCRowset@@@Z
-; public: void __cdecl CImpersonationTokenCache::ReInitializeIISScopes(void) __ptr64
-?ReInitializeIISScopes@CImpersonationTokenCache@@QEAAXXZ
-; private: virtual void __cdecl CPhysIndex::ReOpenStream(void) __ptr64
-?ReOpenStream@CPhysIndex@@EEAAXXZ
-; public: unsigned long __cdecl CDynStream::Read(void * __ptr64,unsigned long) __ptr64
-?Read@CDynStream@@QEAAKPEAXK@Z
-; public: unsigned long __cdecl CRcovStrmTrans::Read(void * __ptr64,unsigned long) __ptr64
-?Read@CRcovStrmTrans@@QEAAKPEAXK@Z
-; public: unsigned long __cdecl CRegAccess::Read(unsigned short const * __ptr64,unsigned long) __ptr64
-?Read@CRegAccess@@QEAAKPEBGK@Z
-; public: unsigned short * __ptr64 __cdecl CRegAccess::Read(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
-?Read@CRegAccess@@QEAAPEAGPEBG0@Z
-; public: int __cdecl CPropStoreManager::ReadPrimaryProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
-?ReadPrimaryProperty@CPropStoreManager@@QEAAHKKAEAUtagPROPVARIANT@@@Z
-; public: int __cdecl COLEPropManager::ReadProperty(class CFullPropSpec const & __ptr64,struct tagPROPVARIANT & __ptr64) __ptr64
-?ReadProperty@COLEPropManager@@QEAAHAEBVCFullPropSpec@@AEAUtagPROPVARIANT@@@Z
-; public: int __cdecl CPropStoreManager::ReadProperty(class CCompositePropRecord & __ptr64,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
-?ReadProperty@CPropStoreManager@@QEAAHAEAVCCompositePropRecord@@KAEAUtagPROPVARIANT@@@Z
-; public: int __cdecl CPropStoreManager::ReadProperty(class CCompositePropRecord & __ptr64,unsigned long,struct tagPROPVARIANT & __ptr64,unsigned char * __ptr64,unsigned int * __ptr64) __ptr64
-?ReadProperty@CPropStoreManager@@QEAAHAEAVCCompositePropRecord@@KAEAUtagPROPVARIANT@@PEAEPEAI@Z
-; public: int __cdecl CPropStoreManager::ReadProperty(class CCompositePropRecord & __ptr64,unsigned long,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
-?ReadProperty@CPropStoreManager@@QEAAHAEAVCCompositePropRecord@@KPEAUtagPROPVARIANT@@PEAI@Z
-; public: int __cdecl CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
-?ReadProperty@CPropStoreManager@@QEAAHKKAEAUtagPROPVARIANT@@@Z
-; public: int __cdecl CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64,unsigned char * __ptr64,unsigned int * __ptr64) __ptr64
-?ReadProperty@CPropStoreManager@@QEAAHKKAEAUtagPROPVARIANT@@PEAEPEAI@Z
-; public: int __cdecl CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
-?ReadProperty@CPropStoreManager@@QEAAHKKPEAUtagPROPVARIANT@@PEAI@Z
-; public: int __cdecl CPropertyStore::ReadProperty(class CPropRecordNoLock & __ptr64,unsigned long,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
-?ReadProperty@CPropertyStore@@QEAAHAEAVCPropRecordNoLock@@KPEAUtagPROPVARIANT@@PEAI@Z
-; public: int __cdecl CPropertyStore::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
-?ReadProperty@CPropertyStore@@QEAAHKKAEAUtagPROPVARIANT@@@Z
-; public: unsigned char __cdecl CDFA::Recognize(unsigned short const * __ptr64) __ptr64
-?Recognize@CDFA@@QEAAEPEBG@Z
-; public: void __cdecl CCiRegParams::Refresh(struct ICiAdminParams * __ptr64,int) __ptr64
-?Refresh@CCiRegParams@@QEAAXPEAUICiAdminParams@@H@Z
-; public: void __cdecl CDefColumnRegEntry::Refresh(int) __ptr64
-?Refresh@CDefColumnRegEntry@@QEAAXH@Z
-; public: void __cdecl CWorkQueue::RefreshParams(unsigned long,unsigned long) __ptr64
-?RefreshParams@CWorkQueue@@QEAAXKK@Z
-; public: virtual unsigned long __cdecl CDbProperties::Release(void) __ptr64
-?Release@CDbProperties@@UEAAKXZ
-; public: virtual unsigned long __cdecl CEmptyPropertyList::Release(void) __ptr64
-?Release@CEmptyPropertyList@@UEAAKXZ
-; public: virtual unsigned long __cdecl CEnumString::Release(void) __ptr64
-?Release@CEnumString@@UEAAKXZ
-; public: virtual unsigned long __cdecl CEnumWorkid::Release(void) __ptr64
-?Release@CEnumWorkid@@UEAAKXZ
-; public: virtual unsigned long __cdecl CFwPropertyMapper::Release(void) __ptr64
-?Release@CFwPropertyMapper@@UEAAKXZ
-; public: void __cdecl CImpersonateRemoteAccess::Release(void) __ptr64
-?Release@CImpersonateRemoteAccess@@QEAAXXZ
-; public: virtual unsigned long __cdecl CQueryUnknown::Release(void) __ptr64
-?Release@CQueryUnknown@@UEAAKXZ
-; public: void __cdecl CWorkQueue::Release(class CWorkThread * __ptr64) __ptr64
-?Release@CWorkQueue@@QEAAXPEAVCWorkThread@@@Z
-; private: void __cdecl CPropertyStore::ReleaseRead(class CReadWriteLockRecord & __ptr64) __ptr64
-?ReleaseRead@CPropertyStore@@AEAAXAEAVCReadWriteLockRecord@@@Z
-; public: void __cdecl CWorkQueue::ReleaseWorkThreads(void) __ptr64
-?ReleaseWorkThreads@CWorkQueue@@QEAAXXZ
-; public: void __cdecl CColumns::Remove(unsigned int) __ptr64
-?Remove@CColumns@@QEAAXI@Z
-; public: void __cdecl CDbSortSet::Remove(unsigned int) __ptr64
-?Remove@CDbSortSet@@QEAAXI@Z
-; public: void __cdecl CSort::Remove(unsigned int) __ptr64
-?Remove@CSort@@QEAAXI@Z
-; private: void __cdecl CWorkQueue::Remove(class CWorkThread & __ptr64) __ptr64
-?Remove@CWorkQueue@@AEAAXAEAVCWorkThread@@@Z
-; public: void __cdecl CWorkQueue::Remove(class PWorkItem * __ptr64) __ptr64
-?Remove@CWorkQueue@@QEAAXPEAVPWorkItem@@@Z
-; public: void __cdecl CMachineAdmin::RemoveCatalog(unsigned short const * __ptr64,int) __ptr64
-?RemoveCatalog@CMachineAdmin@@QEAAXPEBGH@Z
-; public: void __cdecl CMachineAdmin::RemoveCatalogFiles(unsigned short const * __ptr64) __ptr64
-?RemoveCatalogFiles@CMachineAdmin@@QEAAXPEBG@Z
-; public: class CRestriction * __ptr64 __cdecl CNodeRestriction::RemoveChild(unsigned int) __ptr64
-?RemoveChild@CNodeRestriction@@QEAAPEAVCRestriction@@I@Z
-; protected: class CDbCmdTreeNode * __ptr64 __cdecl CDbCmdTreeNode::RemoveFirstChild(void) __ptr64
-?RemoveFirstChild@CDbCmdTreeNode@@IEAAPEAV1@XZ
-; public: void __cdecl CCatalogAdmin::RemoveScope(unsigned short const * __ptr64) __ptr64
-?RemoveScope@CCatalogAdmin@@QEAAXPEBG@Z
-; public: void __cdecl CPhysStorage::Reopen(int) __ptr64
-?Reopen@CPhysStorage@@QEAAXH@Z
-; public: void __cdecl CEventLog::ReportEventW(class CEventItem & __ptr64) __ptr64
-?ReportEventW@CEventLog@@QEAAXAEAVCEventItem@@@Z
-; public: void __cdecl CFwEventItem::ReportEventW(struct ICiCAdviseStatus & __ptr64) __ptr64
-?ReportEventW@CFwEventItem@@QEAAXAEAUICiCAdviseStatus@@@Z
-; public: int __cdecl CPhysStorage::RequiresFlush(unsigned long) __ptr64
-?RequiresFlush@CPhysStorage@@QEAAHK@Z
-; public: void __cdecl CRegChangeEvent::Reset(void) __ptr64
-?Reset@CRegChangeEvent@@QEAAXXZ
-; public: void __cdecl CQueryScanner::ResetBuffer(unsigned short const * __ptr64) __ptr64
-?ResetBuffer@CQueryScanner@@QEAAXPEBG@Z
-; protected: void __cdecl CAllocStorageVariant::ResetType(class PMemoryAllocator & __ptr64) __ptr64
-?ResetType@CAllocStorageVariant@@IEAAXAEAVPMemoryAllocator@@@Z
-; public: void __cdecl CProcess::Resume(void) __ptr64
-?Resume@CProcess@@QEAAXXZ
-; public: void __cdecl CPhysStorage::ReturnBuffer(unsigned long,int,int) __ptr64
-?ReturnBuffer@CPhysStorage@@QEAAXKHH@Z
-; public: void __cdecl CMmStreamConsecBuf::Rewind(void) __ptr64
-?Rewind@CMmStreamConsecBuf@@QEAAXXZ
-; unsigned long __cdecl SaComputeSize(unsigned short,struct tagSAFEARRAY & __ptr64)
-?SaComputeSize@@YAKGAEAUtagSAFEARRAY@@@Z
-; int __cdecl SaCreateAndCopy(class PMemoryAllocator & __ptr64,struct tagSAFEARRAY * __ptr64,struct tagSAFEARRAY * __ptr64 * __ptr64)
-?SaCreateAndCopy@@YAHAEAVPMemoryAllocator@@PEAUtagSAFEARRAY@@PEAPEAU2@@Z
-; int __cdecl SaCreateData(class PVarAllocator & __ptr64,unsigned short,struct tagSAFEARRAY & __ptr64,struct tagSAFEARRAY & __ptr64,int)
-?SaCreateData@@YAHAEAVPVarAllocator@@GAEAUtagSAFEARRAY@@1H@Z
-; public: int __cdecl CRcovStrmTrans::Seek(unsigned long) __ptr64
-?Seek@CRcovStrmTrans@@QEAAHK@Z
-; public: void __cdecl CDbQueryResults::Serialize(class PSerStream & __ptr64)const __ptr64
-?Serialize@CDbQueryResults@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CPidRemapper::Set(class XArray<unsigned long> & __ptr64) __ptr64
-?Set@CPidRemapper@@QEAAXAEAV?$XArray@K@@@Z
-; public: void __cdecl CScopeAdmin::SetAlias(unsigned short const * __ptr64) __ptr64
-?SetAlias@CScopeAdmin@@QEAAXPEBG@Z
-; public: void __cdecl CStorageVariant::SetBOOL(short,unsigned int) __ptr64
-?SetBOOL@CStorageVariant@@QEAAXFI@Z
-; public: void __cdecl CAllocStorageVariant::SetBSTR(unsigned short * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
-?SetBSTR@CAllocStorageVariant@@QEAAXPEAGAEAVPMemoryAllocator@@@Z
-; public: void __cdecl CStorageVariant::SetBSTR(unsigned short * __ptr64,unsigned int) __ptr64
-?SetBSTR@CStorageVariant@@QEAAXPEAGI@Z
-; public: void __cdecl CPropStoreManager::SetBackupSize(unsigned long,unsigned long) __ptr64
-?SetBackupSize@CPropStoreManager@@QEAAXKK@Z
-; public: void __cdecl CCatState::SetCD(unsigned short const * __ptr64) __ptr64
-?SetCD@CCatState@@QEAAXPEBG@Z
-; public: void __cdecl CStorageVariant::SetCLSID(struct _GUID const * __ptr64) __ptr64
-?SetCLSID@CStorageVariant@@QEAAXPEBU_GUID@@@Z
-; public: void __cdecl CStorageVariant::SetCLSID(struct _GUID,unsigned int) __ptr64
-?SetCLSID@CStorageVariant@@QEAAXU_GUID@@I@Z
-; public: void __cdecl CStorageVariant::SetCY(union tagCY,unsigned int) __ptr64
-?SetCY@CStorageVariant@@QEAAXTtagCY@@I@Z
-; public: void __cdecl CCatState::SetCatalog(unsigned short const * __ptr64) __ptr64
-?SetCatalog@CCatState@@QEAAXPEBG@Z
-; public: void __cdecl CCatState::SetColumn(unsigned short const * __ptr64,unsigned int) __ptr64
-?SetColumn@CCatState@@QEAAXPEBGI@Z
-; private: void __cdecl CQueryParser::SetCurrentProperty(unsigned short const * __ptr64,enum PropertyType) __ptr64
-?SetCurrentProperty@CQueryParser@@AEAAXPEBGW4PropertyType@@@Z
-; public: void __cdecl CStorageVariant::SetDATE(double,unsigned int) __ptr64
-?SetDATE@CStorageVariant@@QEAAXNI@Z
-; public: void __cdecl CCatalogAdmin::SetDWORDParam(unsigned short const * __ptr64,unsigned long) __ptr64
-?SetDWORDParam@CCatalogAdmin@@QEAAXPEBGK@Z
-; public: void __cdecl CMachineAdmin::SetDWORDParam(unsigned short const * __ptr64,unsigned long) __ptr64
-?SetDWORDParam@CMachineAdmin@@QEAAXPEBGK@Z
-; public: void __cdecl CCatState::SetDefaultProperty(unsigned short const * __ptr64) __ptr64
-?SetDefaultProperty@CCatState@@QEAAXPEBG@Z
-; public: void __cdecl CScopeAdmin::SetExclude(int) __ptr64
-?SetExclude@CScopeAdmin@@QEAAXH@Z
-; public: void __cdecl CStorageVariant::SetFILETIME(struct _FILETIME,unsigned int) __ptr64
-?SetFILETIME@CStorageVariant@@QEAAXU_FILETIME@@I@Z
-; public: void __cdecl CStorageVariant::SetI2(short,unsigned int) __ptr64
-?SetI2@CStorageVariant@@QEAAXFI@Z
-; public: void __cdecl CStorageVariant::SetI4(long,unsigned int) __ptr64
-?SetI4@CStorageVariant@@QEAAXJI@Z
-; public: void __cdecl CStorageVariant::SetI8(union _LARGE_INTEGER,unsigned int) __ptr64
-?SetI8@CStorageVariant@@QEAAXT_LARGE_INTEGER@@I@Z
-; public: void __cdecl CStorageVariant::SetLPSTR(char const * __ptr64,unsigned int) __ptr64
-?SetLPSTR@CStorageVariant@@QEAAXPEBDI@Z
-; public: void __cdecl CStorageVariant::SetLPWSTR(unsigned short const * __ptr64,unsigned int) __ptr64
-?SetLPWSTR@CStorageVariant@@QEAAXPEBGI@Z
-; public: void __cdecl CCatState::SetLocale(unsigned short const * __ptr64) __ptr64
-?SetLocale@CCatState@@QEAAXPEBG@Z
-; public: void __cdecl CScopeAdmin::SetLogonInfo(unsigned short const * __ptr64,unsigned short const * __ptr64,class CCatalogAdmin & __ptr64) __ptr64
-?SetLogonInfo@CScopeAdmin@@QEAAXPEBG0AEAVCCatalogAdmin@@@Z
-; public: void __cdecl CPropStoreManager::SetMappedCacheSize(unsigned long,unsigned long) __ptr64
-?SetMappedCacheSize@CPropStoreManager@@QEAAXKK@Z
-; public: void __cdecl CCatState::SetNumberOfColumns(unsigned int) __ptr64
-?SetNumberOfColumns@CCatState@@QEAAXI@Z
-; public: void __cdecl CCatState::SetNumberOfSortProps(unsigned int) __ptr64
-?SetNumberOfSortProps@CCatState@@QEAAXI@Z
-; public: void __cdecl CScopeAdmin::SetPath(unsigned short const * __ptr64) __ptr64
-?SetPath@CScopeAdmin@@QEAAXPEBG@Z
-; public: void __cdecl CContentRestriction::SetPhrase(unsigned short const * __ptr64) __ptr64
-?SetPhrase@CContentRestriction@@QEAAXPEBG@Z
-; public: void __cdecl CNatLanguageRestriction::SetPhrase(unsigned short const * __ptr64) __ptr64
-?SetPhrase@CNatLanguageRestriction@@QEAAXPEBG@Z
-; public: void __cdecl CGenericCiProxy::SetPriority(unsigned long,unsigned long) __ptr64
-?SetPriority@CGenericCiProxy@@QEAAXKK@Z
-; public: virtual long __cdecl CDbProperties::SetProperties(unsigned long,struct tagDBPROPSET * __ptr64 const) __ptr64
-?SetProperties@CDbProperties@@UEAAJKQEAUtagDBPROPSET@@@Z
-; public: int __cdecl CDbColId::SetProperty(unsigned short const * __ptr64) __ptr64
-?SetProperty@CDbColId@@QEAAHPEBG@Z
-; public: int __cdecl CDbPropBaseRestriction::SetProperty(struct tagDBID const & __ptr64) __ptr64
-?SetProperty@CDbPropBaseRestriction@@QEAAHAEBUtagDBID@@@Z
-; public: int __cdecl CDbPropBaseRestriction::SetProperty(class CDbColumnNode const & __ptr64) __ptr64
-?SetProperty@CDbPropBaseRestriction@@QEAAHAEBVCDbColumnNode@@@Z
-; public: int __cdecl CFullPropSpec::SetProperty(unsigned short const * __ptr64) __ptr64
-?SetProperty@CFullPropSpec@@QEAAHPEBG@Z
-; public: void __cdecl CFullPropSpec::SetProperty(unsigned long) __ptr64
-?SetProperty@CFullPropSpec@@QEAAXK@Z
-; public: void __cdecl CStorageVariant::SetR4(float,unsigned int) __ptr64
-?SetR4@CStorageVariant@@QEAAXMI@Z
-; public: void __cdecl CStorageVariant::SetR8(double,unsigned int) __ptr64
-?SetR8@CStorageVariant@@QEAAXNI@Z
-; public: int __cdecl CDbSelectNode::SetRestriction(class CDbCmdTreeNode * __ptr64) __ptr64
-?SetRestriction@CDbSelectNode@@QEAAHPEAVCDbCmdTreeNode@@@Z
-; public: static void __cdecl CImpersonateSystem::SetRunningAsSystem(void)
-?SetRunningAsSystem@CImpersonateSystem@@SAXXZ
-; public: void __cdecl CMachineAdmin::SetSZParam(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long) __ptr64
-?SetSZParam@CMachineAdmin@@QEAAXPEBG0K@Z
-; void __cdecl SetScopeProperties(struct ICommand * __ptr64,unsigned int,unsigned short const * __ptr64 const * __ptr64,unsigned long const * __ptr64,unsigned short const * __ptr64 const * __ptr64,unsigned short const * __ptr64 const * __ptr64)
-?SetScopeProperties@@YAXPEAUICommand@@IPEBQEBGPEBK11@Z
-; long __cdecl SetScopePropertiesNoThrow(struct ICommand * __ptr64,unsigned int,unsigned short const * __ptr64 const * __ptr64,unsigned long const * __ptr64,unsigned short const * __ptr64 const * __ptr64,unsigned short const * __ptr64 const * __ptr64)
-?SetScopePropertiesNoThrow@@YAJPEAUICommand@@IPEBQEBGPEBK11@Z
-; void __cdecl SetSecret(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long)
-?SetSecret@@YAXPEBG00K@Z
-; public: void __cdecl CCatState::SetSortProp(unsigned short const * __ptr64,enum SORTDIR,unsigned int) __ptr64
-?SetSortProp@CCatState@@QEAAXPEBGW4SORTDIR@@I@Z
-; public: void __cdecl CStorageVariant::SetUI1(unsigned char,unsigned int) __ptr64
-?SetUI1@CStorageVariant@@QEAAXEI@Z
-; public: void __cdecl CStorageVariant::SetUI2(unsigned short,unsigned int) __ptr64
-?SetUI2@CStorageVariant@@QEAAXGI@Z
-; public: void __cdecl CStorageVariant::SetUI4(unsigned long,unsigned int) __ptr64
-?SetUI4@CStorageVariant@@QEAAXKI@Z
-; public: void __cdecl CStorageVariant::SetUI8(union _ULARGE_INTEGER,unsigned int) __ptr64
-?SetUI8@CStorageVariant@@QEAAXT_ULARGE_INTEGER@@I@Z
-; public: void __cdecl CPropertyRestriction::SetValue(struct tagBLOB & __ptr64) __ptr64
-?SetValue@CPropertyRestriction@@QEAAXAEAUtagBLOB@@@Z
-; public: void __cdecl CPropertyRestriction::SetValue(unsigned short * __ptr64) __ptr64
-?SetValue@CPropertyRestriction@@QEAAXPEAG@Z
-; public: void __cdecl CPropertyRestriction::SetValue(struct _GUID * __ptr64) __ptr64
-?SetValue@CPropertyRestriction@@QEAAXPEAU_GUID@@@Z
-; public: void __cdecl CDbCmdTreeNode::SetWeight(long) __ptr64
-?SetWeight@CDbCmdTreeNode@@QEAAXJ@Z
-; public: void __cdecl CPropStoreManager::Setup(unsigned long,unsigned long,unsigned long,unsigned __int64,int,unsigned long) __ptr64
-?Setup@CPropStoreManager@@QEAAXKKK_KHK@Z
-; public: void __cdecl CDynStream::Shrink(class PStorage & __ptr64,unsigned long) __ptr64
-?Shrink@CDynStream@@QEAAXAEAVPStorage@@K@Z
-; public: unsigned long __cdecl CPhysStorage::ShrinkFromFront(unsigned long,unsigned long) __ptr64
-?ShrinkFromFront@CPhysStorage@@QEAAKKK@Z
-; public: void __cdecl CPhysStorage::ShrinkToFit(void) __ptr64
-?ShrinkToFit@CPhysStorage@@QEAAXXZ
-; public: static void __cdecl CCiOle::Shutdown(void)
-?Shutdown@CCiOle@@SAXXZ
-; public: void __cdecl CPropStoreManager::Shutdown(void) __ptr64
-?Shutdown@CPropStoreManager@@QEAAXXZ
-; public: void __cdecl CWorkQueue::Shutdown(void) __ptr64
-?Shutdown@CWorkQueue@@QEAAXXZ
-; public: unsigned long __cdecl CDbQueryResults::Size(void) __ptr64
-?Size@CDbQueryResults@@QEAAKXZ
-; public: virtual long __cdecl CEnumString::Skip(unsigned long) __ptr64
-?Skip@CEnumString@@UEAAJK@Z
-; public: virtual long __cdecl CEnumWorkid::Skip(unsigned long) __ptr64
-?Skip@CEnumWorkid@@UEAAJK@Z
-; public: virtual void __cdecl CMemDeSerStream::SkipBlob(unsigned long) __ptr64
-?SkipBlob@CMemDeSerStream@@UEAAXK@Z
-; public: virtual void __cdecl CMemDeSerStream::SkipByte(void) __ptr64
-?SkipByte@CMemDeSerStream@@UEAAXXZ
-; public: virtual void __cdecl CMemDeSerStream::SkipChar(unsigned long) __ptr64
-?SkipChar@CMemDeSerStream@@UEAAXK@Z
-; public: virtual void __cdecl CMemDeSerStream::SkipDouble(void) __ptr64
-?SkipDouble@CMemDeSerStream@@UEAAXXZ
-; public: virtual void __cdecl CMemDeSerStream::SkipFloat(void) __ptr64
-?SkipFloat@CMemDeSerStream@@UEAAXXZ
-; public: virtual void __cdecl CMemDeSerStream::SkipGUID(void) __ptr64
-?SkipGUID@CMemDeSerStream@@UEAAXXZ
-; public: virtual void __cdecl CMemDeSerStream::SkipLong(void) __ptr64
-?SkipLong@CMemDeSerStream@@UEAAXXZ
-; public: virtual void __cdecl CMemDeSerStream::SkipULong(void) __ptr64
-?SkipULong@CMemDeSerStream@@UEAAXXZ
-; public: virtual void __cdecl CMemDeSerStream::SkipUShort(void) __ptr64
-?SkipUShort@CMemDeSerStream@@UEAAXXZ
-; public: virtual void __cdecl CMemDeSerStream::SkipWChar(unsigned long) __ptr64
-?SkipWChar@CMemDeSerStream@@UEAAXK@Z
-; public: int __cdecl CCatalogAdmin::Start(void) __ptr64
-?Start@CCatalogAdmin@@QEAAHXZ
-; public: int __cdecl CMachineAdmin::StartCI(void) __ptr64
-?StartCI@CMachineAdmin@@QEAAHXZ
-; public: int __cdecl CCatalogAdmin::Stop(void) __ptr64
-?Stop@CCatalogAdmin@@QEAAHXZ
-; public: int __cdecl CMachineAdmin::StopCI(void) __ptr64
-?StopCI@CMachineAdmin@@QEAAHXZ
-; public: void __cdecl CFilterDaemon::StopFiltering(void) __ptr64
-?StopFiltering@CFilterDaemon@@QEAAXXZ
-; public: unsigned int __cdecl CKey::StrLen(void)const __ptr64
-?StrLen@CKey@@QEBAIXZ
-; public: unsigned int __cdecl CKeyBuf::StrLen(void)const __ptr64
-?StrLen@CKeyBuf@@QEBAIXZ
-; void __cdecl SystemExceptionTranslator(unsigned int,struct _EXCEPTION_POINTERS * __ptr64)
-?SystemExceptionTranslator@@YAXIPEAU_EXCEPTION_POINTERS@@@Z
-; public: unsigned long __cdecl CRestriction::TreeCount(void)const __ptr64
-?TreeCount@CRestriction@@QEBAKXZ
-; public: void __cdecl CMachineAdmin::TunePerformance(int,unsigned short,unsigned short) __ptr64
-?TunePerformance@CMachineAdmin@@QEAAXHGG@Z
-; void __cdecl URLEscapeW(unsigned short const * __ptr64,class CVirtualString & __ptr64,unsigned long,int)
-?URLEscapeW@@YAXPEBGAEAVCVirtualString@@KH@Z
-; public: int __cdecl CDbProperties::UnMarshall(class PDeSerStream & __ptr64) __ptr64
-?UnMarshall@CDbProperties@@QEAAHAEAVPDeSerStream@@@Z
-; public: static class CRestriction * __ptr64 __cdecl CRestriction::UnMarshall(class PDeSerStream & __ptr64)
-?UnMarshall@CRestriction@@SAPEAV1@AEAVPDeSerStream@@@Z
-; public: static class CDbCmdTreeNode * __ptr64 __cdecl CDbCmdTreeNode::UnMarshallTree(class PDeSerStream & __ptr64)
-?UnMarshallTree@CDbCmdTreeNode@@SAPEAV1@AEAVPDeSerStream@@@Z
-; void __cdecl UnPickle(int,class XPtr<class CColumnSet> & __ptr64,class XPtr<class CRestriction> & __ptr64,class XPtr<class CSortSet> & __ptr64,class XPtr<class CCategorizationSet> & __ptr64,class CRowsetProperties & __ptr64,class XPtr<class CPidMapper> & __ptr64,unsigned char * __ptr64,unsigned long)
-?UnPickle@@YAXHAEAV?$XPtr@VCColumnSet@@@@AEAV?$XPtr@VCRestriction@@@@AEAV?$XPtr@VCSortSet@@@@AEAV?$XPtr@VCCategorizationSet@@@@AEAVCRowsetProperties@@AEAV?$XPtr@VCPidMapper@@@@PEAEK@Z
-; protected: void __cdecl CRcovStrmTrans::Unmap(enum CRcovStorageHdr::DataCopyNum) __ptr64
-?Unmap@CRcovStrmTrans@@IEAAXW4DataCopyNum@CRcovStorageHdr@@@Z
-; unsigned long __cdecl UpdateContentIndex(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,int)
-?UpdateContentIndex@@YAKPEBG00H@Z
-; public: void __cdecl CDiskFreeStatus::UpdateDiskLowInfo(void) __ptr64
-?UpdateDiskLowInfo@CDiskFreeStatus@@QEAAXXZ
-; int __cdecl VT_VARIANT_EQ(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
-?VT_VARIANT_EQ@@YAHAEBUtagPROPVARIANT@@0@Z
-; int __cdecl VT_VARIANT_GE(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
-?VT_VARIANT_GE@@YAHAEBUtagPROPVARIANT@@0@Z
-; int __cdecl VT_VARIANT_GT(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
-?VT_VARIANT_GT@@YAHAEBUtagPROPVARIANT@@0@Z
-; int __cdecl VT_VARIANT_LE(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
-?VT_VARIANT_LE@@YAHAEBUtagPROPVARIANT@@0@Z
-; int __cdecl VT_VARIANT_LT(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
-?VT_VARIANT_LT@@YAHAEBUtagPROPVARIANT@@0@Z
-; int __cdecl VT_VARIANT_NE(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
-?VT_VARIANT_NE@@YAHAEBUtagPROPVARIANT@@0@Z
-; int __cdecl ValidateScopeRestriction(class CRestriction * __ptr64)
-?ValidateScopeRestriction@@YAHPEAVCRestriction@@@Z
-; public: void __cdecl PRcovStorageObj::VerifyConsistency(void) __ptr64
-?VerifyConsistency@PRcovStorageObj@@QEAAXXZ
-; void __cdecl VerifyThreadHasAdminPrivilege(void)
-?VerifyThreadHasAdminPrivilege@@YAXXZ
-; unsigned long __cdecl WideCharToXArrayMultiByte(unsigned short const * __ptr64,unsigned long,unsigned int,class XArray<unsigned char> & __ptr64)
-?WideCharToXArrayMultiByte@@YAKPEBGKIAEAV?$XArray@E@@@Z
-; public: void __cdecl CDynStream::Write(void * __ptr64,unsigned long) __ptr64
-?Write@CDynStream@@QEAAXPEAXK@Z
-; protected: void __cdecl CRcovStrmTrans::Write(void const * __ptr64,unsigned long) __ptr64
-?Write@CRcovStrmTrans@@IEAAXPEBXK@Z
-; public: long __cdecl CPropStoreManager::WritePrimaryProperty(class CCompositePropRecordForWrites & __ptr64,unsigned long,class CStorageVariant const & __ptr64) __ptr64
-?WritePrimaryProperty@CPropStoreManager@@QEAAJAEAVCCompositePropRecordForWrites@@KAEBVCStorageVariant@@@Z
-; public: long __cdecl CPropStoreManager::WritePrimaryProperty(unsigned long,unsigned long,class CStorageVariant const & __ptr64) __ptr64
-?WritePrimaryProperty@CPropStoreManager@@QEAAJKKAEBVCStorageVariant@@@Z
-; public: long __cdecl CPropStoreManager::WriteProperty(class CCompositePropRecordForWrites & __ptr64,unsigned long,class CStorageVariant const & __ptr64) __ptr64
-?WriteProperty@CPropStoreManager@@QEAAJAEAVCCompositePropRecordForWrites@@KAEBVCStorageVariant@@@Z
-; public: long __cdecl CPropStoreManager::WriteProperty(unsigned long,unsigned long,class CStorageVariant const & __ptr64) __ptr64
-?WriteProperty@CPropStoreManager@@QEAAJKKAEBVCStorageVariant@@@Z
-; public: unsigned long __cdecl CPropStoreManager::WritePropertyInNewRecord(unsigned long,class CStorageVariant const & __ptr64) __ptr64
-?WritePropertyInNewRecord@CPropStoreManager@@QEAAKKAEBVCStorageVariant@@@Z
-; private: class CDbProjectListAnchor * __ptr64 __cdecl CDbNestingNode::_FindGroupListAnchor(void) __ptr64
-?_FindGroupListAnchor@CDbNestingNode@@AEAAPEAVCDbProjectListAnchor@@XZ
-; private: class CDbProjectListAnchor * __ptr64 __cdecl CDbProjectNode::_FindOrAddAnchor(void) __ptr64
-?_FindOrAddAnchor@CDbProjectNode@@AEAAPEAVCDbProjectListAnchor@@XZ
-; private: class CDbSortListAnchor * __ptr64 __cdecl CDbSortNode::_FindOrAddAnchor(void) __ptr64
-?_FindOrAddAnchor@CDbSortNode@@AEAAPEAVCDbSortListAnchor@@XZ
-; private: class CDbScalarValue * __ptr64 __cdecl CDbPropertyRestriction::_FindOrAddValueNode(void) __ptr64
-?_FindOrAddValueNode@CDbPropertyRestriction@@AEAAPEAVCDbScalarValue@@XZ
-; private: int __cdecl CImpersonateRemoteAccess::_ImpersonateIf(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long) __ptr64
-?_ImpersonateIf@CImpersonateRemoteAccess@@AEAAHPEBG0K@Z
-; unsigned __int64 __cdecl _wcstoui64(unsigned short const * __ptr64,unsigned short * __ptr64 * __ptr64,int)
-?_wcstoui64@@YA_KPEBGPEAPEAGH@Z
-; void __cdecl ciDelete(void * __ptr64)
-?ciDelete@@YAXPEAX@Z
-; int __cdecl ciIsValidPointer(void const * __ptr64)
-?ciIsValidPointer@@YAHPEBX@Z
-; void * __ptr64 __cdecl ciNew(unsigned __int64)
-?ciNew@@YAPEAX_K@Z
-; public: unsigned long __cdecl CFileBuffer::fgetsw(class XGrowable<unsigned short,260> & __ptr64) __ptr64
-?fgetsw@CFileBuffer@@QEAAKAEAV?$XGrowable@G$0BAE@@@@Z
-; unsigned short * __ptr64 __cdecl wcsipattern(unsigned short * __ptr64,unsigned short const * __ptr64)
-?wcsipattern@@YAPEAGPEAGPEBG@Z
-AbortMerges
-BeginCacheTransaction
-BindIFilterFromStorage
-BindIFilterFromStream
-CIBuildQueryNode
-CIBuildQueryTree
-CICreateCommand
-CIGetGlobalPropertyList
-CIMakeICommand
-CIRestrictionToFullTree
-CIState
-CITextToFullTree
-CITextToFullTreeEx
-CITextToSelectTree
-CITextToSelectTreeEx
-CiSvcMain
-CollectCIISAPIPerformanceData
-CollectCIPerformanceData
-CollectFILTERPerformanceData
-DllCanUnloadNow
-DllGetClassObject
-DllRegisterServer
-DllUnregisterServer
-DoneCIISAPIPerformanceData
-DoneCIPerformanceData
-DoneFILTERPerformanceData
-EndCacheTransaction
-ForceMasterMerge
-InitializeCIISAPIPerformanceData
-InitializeCIPerformanceData
-InitializeFILTERPerformanceData
-LoadBHIFilter
-LoadBinaryFilter
-LoadIFilter
-LoadIFilterEx
-LoadTextFilter
-LocateCatalogs
-LocateCatalogsA
-LocateCatalogsW
-SetCatalogState
-SetupCache
-SetupCacheEx
-StartFWCiSvcWork
-StopFWCiSvcWork
-SvcEntry_CiSvc
lib/libc/mingw/libarm32/query.def
@@ -1,51 +0,0 @@
-;
-; Definition file of query.dll
-; Automatic generated by gendef
-; written by Kai Tietz 2008-2014
-;
-LIBRARY "query.dll"
-EXPORTS
-BeginCacheTransaction
-CIBuildQueryNode
-CIBuildQueryTree
-CICreateCommand
-CIGetGlobalPropertyList
-CIMakeICommand
-CIRestrictionToFullTree
-CIState
-CITextToFullTree
-CITextToFullTreeEx
-CITextToSelectTree
-CITextToSelectTreeEx
-CiCreateSecurityDescriptor
-CiSvcMain
-CollectCIISAPIPerformanceData
-CollectCIPerformanceData
-CollectFILTERPerformanceData
-DoneCIISAPIPerformanceData
-DoneCIPerformanceData
-DoneFILTERPerformanceData
-EndCacheTransaction
-FsCiShutdown
-InitializeCIISAPIPerformanceData
-InitializeCIPerformanceData
-InitializeFILTERPerformanceData
-LoadBinaryFilter
-LoadTextFilter
-SetCatalogState
-SetupCache
-SetupCacheEx
-SvcEntry_CiSvc
-BindIFilterFromStorage
-BindIFilterFromStream
-CIRevertToSelf
-CIShutdown
-InternalBindIFilterFromDocCLSID
-InternalBindIFilterFromFileName
-InternalBindIFilterFromStorage
-InternalBindIFilterFromStream
-LoadIFilter
-LoadIFilterEx
-LocateCatalogs
-LocateCatalogsA
-LocateCatalogsW
lib/libc/mingw/math/x86/asinh.c
@@ -5,6 +5,7 @@
*/
#include <math.h>
#include <errno.h>
+#include <float.h>
#include "fastmath.h"
/* asinh(x) = copysign(log(fabs(x) + sqrt(x * x + 1.0)), x) */
@@ -21,13 +22,53 @@ double asinh(double x)
return x;
#endif
- /* Use log1p to avoid cancellation with small x. Put
- x * x in denom, so overflow is harmless.
- asinh(x) = log1p (x + sqrt (x * x + 1.0) - 1.0)
- = log1p (x + x * x / (sqrt (x * x + 1.0) + 1.0)) */
+ /* NB the previous formula
+ z = __fast_log1p (z + z * z / (__fast_sqrt (z * z + 1.0) + 1.0));
+ was defective in two ways:
+ 1: It ommitted required brackets:
+ z = __fast_log1p (z + z * (z / (__fast_sqrt (z * z + 1.0) + 1.0)));
+ ^ ^
+ so would still overflow for large z.
+ 2: Even with the brackets, it still degraded quickly for large z
+ (where z*z+1 == z*z).
+ e.g. asinh (sinh 356.0)) gave 355.30685281944005
+ */
- z = __fast_log1p (z + z * z / (__fast_sqrt (z * z + 1.0) + 1.0));
+ const double asinhCutover = pow(2,DBL_MAX_EXP/2); // 1.3407807929943e+154
- return ( x > 0.0 ? z : -z);
+ if (z < asinhCutover)
+ /* After excluding large values, the rearranged formula gives better results
+ the original formula log(z + sqrt(z * z + 1.0)) for very small z.
+ e.g. rearranged asinh(sinh 2e-301)) = 2e-301
+ original asinh(sinh 2e-301)) = 0.
+ asinh(z) = log (z + sqrt (z * z + 1.0))
+ = log1p (z + sqrt (z * z + 1.0) - 1.0)
+ = log1p (z + (sqrt (z * z + 1.0) - 1.0)
+ * (sqrt (z * z + 1.0) + 1.0)
+ / (sqrt (z * z + 1.0) + 1.0))
+ = log1p (z + ((z * z + 1.0) - 1.0)
+ / (sqrt (z * z + 1.0) + 1.0))
+ = log1p (z + z * z / (sqrt (z * z + 1.0) + 1.0))
+ */
+ z = __fast_log1p (z + z * (z / (__fast_sqrt (z * z + 1.0) + 1.0)));
+ else
+ /* above this, z*z+1 == z*z, so we can simplify
+ (and avoid z*z being infinity).
+ asinh(z) = log (z + sqrt (z * z + 1.0))
+ = log (z + sqrt (z * z ))
+ = log (2 * z)
+ = log 2 + log z
+ Choosing asinhCutover is a little tricky.
+ We'd like something that's based on the nature of
+ the numeric type (DBL_MAX_EXP, etc).
+ If c = asinhCutover, then we need:
+ (1) c*c == c*c + 1
+ (2) log (2*c) = log 2 + log c.
+ For float:
+ 9.490626562425156e7 is the smallest value that
+ achieves (1), but it fails (2). (It only just fails,
+ but enough to make the function erroneously non-monotonic).
+ */
+ z = __fast_log(2) + __fast_log(z);
+ return copysign(z, x); //ensure 0.0 -> 0.0 and -0.0 -> -0.0.
}
-
lib/libc/mingw/math/x86/asinhf.c
@@ -5,6 +5,7 @@
*/
#include <math.h>
#include <errno.h>
+#include <float.h>
#include "fastmath.h"
/* asinh(x) = copysign(log(fabs(x) + sqrt(x * x + 1.0)), x) */
@@ -21,13 +22,13 @@ float asinhf(float x)
return x;
#endif
+ /* See commentary in asinh */
+ const float asinhCutover = pow(2,FLT_MAX_EXP/2);
- /* Use log1p to avoid cancellation with small x. Put
- x * x in denom, so overflow is harmless.
- asinh(x) = log1p (x + sqrt (x * x + 1.0) - 1.0)
- = log1p (x + x * x / (sqrt (x * x + 1.0) + 1.0)) */
-
- z = __fast_log1p (z + z * z / (__fast_sqrt (z * z + 1.0) + 1.0));
-
- return ( x > 0.0 ? z : -z);
+ if (z < asinhCutover)
+ z = __fast_log1p (z + z * (z / (__fast_sqrt (z * z + 1.0) + 1.0)));
+ //z = __fast_log(z + __fast_sqrt(z * z + 1.0));
+ else
+ z = __fast_log(2) + __fast_log(z);
+ return copysignf(z, x); //ensure 0.0 -> 0.0 and -0.0 -> -0.0.
}
lib/libc/mingw/math/x86/asinhl.c
@@ -5,6 +5,7 @@
*/
#include <math.h>
#include <errno.h>
+#include <float.h>
#include "fastmath.h"
/* asinh(x) = copysign(log(fabs(x) + sqrt(x * x + 1.0)), x) */
@@ -22,12 +23,12 @@ long double asinhl(long double x)
return x;
#endif
- /* Use log1p to avoid cancellation with small x. Put
- x * x in denom, so overflow is harmless.
- asinh(x) = log1p (x + sqrt (x * x + 1.0) - 1.0)
- = log1p (x + x * x / (sqrt (x * x + 1.0) + 1.0)) */
+ /* See commentary in asinh */
+ const long double asinhCutover = powl(2,LDBL_MAX_EXP/2);
- z = __fast_log1pl (z + z * z / (__fast_sqrtl (z * z + 1.0L) + 1.0L));
-
- return ( x > 0.0 ? z : -z);
+ if (z < asinhCutover)
+ z = __fast_log1pl (z + z * (z / (__fast_sqrtl (z * z + 1.0) + 1.0)));
+ else
+ z = __fast_logl(2) + __fast_logl(z);
+ return copysignl(z, x); //ensure 0.0 -> 0.0 and -0.0 -> -0.0.
}
lib/libc/mingw/math/x86/atanh.c
@@ -32,5 +32,5 @@ double atanh(double x)
= 0.5 * log1p ((1.0 + x - 1.0 + x) /(1.0 - x))
= 0.5 * log1p ((2.0 * x ) / (1.0 - x)) */
z = 0.5 * __fast_log1p ((z + z) / (1.0 - z));
- return x >= 0 ? z : -z;
+ return copysign(z, x); //ensure 0.0 -> 0.0 and -0.0 -> -0.0.
}
lib/libc/mingw/math/x86/atanhf.c
@@ -31,5 +31,5 @@ float atanhf (float x)
= 0.5 * log1p ((1.0 + x - 1.0 + x) /(1.0 - x))
= 0.5 * log1p ((2.0 * x ) / (1.0 - x)) */
z = 0.5 * __fast_log1p ((z + z) / (1.0 - z));
- return x >= 0 ? z : -z;
+ return copysignf(z, x); //ensure 0.0 -> 0.0 and -0.0 -> -0.0.
}
lib/libc/mingw/math/x86/atanhl.c
@@ -30,5 +30,5 @@ long double atanhl (long double x)
= 0.5 * log1p ((1.0 + x - 1.0 + x) /(1.0 - x))
= 0.5 * log1p ((2.0 * x ) / (1.0 - x)) */
z = 0.5L * __fast_log1pl ((z + z) / (1.0L - z));
- return x >= 0 ? z : -z;
+ return copysignl(z, x); //ensure 0.0 -> 0.0 and -0.0 -> -0.0.
}
lib/libc/mingw/math/cephes_emath.c
@@ -1,1283 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#include "cephes_emath.h"
-
-/*
- * The constants are for 64 bit precision.
- */
-
-
-/* Move in external format number,
- * converting it to internal format.
- */
-void __emovi(const short unsigned int * __restrict__ a,
- short unsigned int * __restrict__ b)
-{
- register const unsigned short *p;
- register unsigned short *q;
- int i;
-
- q = b;
- p = a + (NE-1); /* point to last word of external number */
- /* get the sign bit */
- if (*p & 0x8000)
- *q++ = 0xffff;
- else
- *q++ = 0;
- /* get the exponent */
- *q = *p--;
- *q++ &= 0x7fff; /* delete the sign bit */
-#ifdef INFINITY
- if ((*(q - 1) & 0x7fff) == 0x7fff)
- {
-#ifdef NANS
- if (__eisnan(a))
- {
- *q++ = 0;
- for (i = 3; i < NI; i++ )
- *q++ = *p--;
- return;
- }
-#endif
- for (i = 2; i < NI; i++)
- *q++ = 0;
- return;
- }
-#endif
- /* clear high guard word */
- *q++ = 0;
- /* move in the significand */
- for (i = 0; i < NE - 1; i++ )
- *q++ = *p--;
- /* clear low guard word */
- *q = 0;
-}
-
-
-/*
-; Add significands
-; x + y replaces y
-*/
-
-void __eaddm(const short unsigned int * __restrict__ x,
- short unsigned int * __restrict__ y)
-{
- register unsigned long a;
- int i;
- unsigned int carry;
-
- x += NI - 1;
- y += NI - 1;
- carry = 0;
- for (i = M; i < NI; i++)
- {
- a = (unsigned long)(*x) + (unsigned long)(*y) + carry;
- if (a & 0x10000)
- carry = 1;
- else
- carry = 0;
- *y = (unsigned short)a;
- --x;
- --y;
- }
-}
-
-/*
-; Subtract significands
-; y - x replaces y
-*/
-
-void __esubm(const short unsigned int * __restrict__ x,
- short unsigned int * __restrict__ y)
-{
- unsigned long a;
- int i;
- unsigned int carry;
-
- x += NI - 1;
- y += NI - 1;
- carry = 0;
- for (i = M; i < NI; i++)
- {
- a = (unsigned long)(*y) - (unsigned long)(*x) - carry;
- if (a & 0x10000)
- carry = 1;
- else
- carry = 0;
- *y = (unsigned short)a;
- --x;
- --y;
- }
-}
-
-
-/* Multiply significand of e-type number b
-by 16-bit quantity a, e-type result to c. */
-
-static void __m16m(short unsigned int a,
- short unsigned int * __restrict__ b,
- short unsigned int * __restrict__ c)
-{
- register unsigned short *pp;
- register unsigned long carry;
- unsigned short *ps;
- unsigned short p[NI];
- unsigned long aa, m;
- int i;
-
- aa = a;
- pp = &p[NI - 2];
- *pp++ = 0;
- *pp = 0;
- ps = &b[NI - 1];
-
- for(i = M + 1; i < NI; i++)
- {
- if (*ps == 0)
- {
- --ps;
- --pp;
- *(pp - 1) = 0;
- }
- else
- {
- m = (unsigned long) aa * *ps--;
- carry = (m & 0xffff) + *pp;
- *pp-- = (unsigned short)carry;
- carry = (carry >> 16) + (m >> 16) + *pp;
- *pp = (unsigned short)carry;
- *(pp - 1) = carry >> 16;
- }
- }
- for (i = M; i < NI; i++)
- c[i] = p[i];
-}
-
-
-/* Divide significands. Neither the numerator nor the denominator
-is permitted to have its high guard word nonzero. */
-
-int __edivm(short unsigned int * __restrict__ den,
- short unsigned int * __restrict__ num)
-{
- int i;
- register unsigned short *p;
- unsigned long tnum;
- unsigned short j, tdenm, tquot;
- unsigned short tprod[NI + 1];
- unsigned short equot[NI];
-
- p = &equot[0];
- *p++ = num[0];
- *p++ = num[1];
-
- for (i = M; i < NI; i++)
- {
- *p++ = 0;
- }
- __eshdn1(num);
- tdenm = den[M + 1];
- for (i = M; i < NI; i++)
- {
- /* Find trial quotient digit (the radix is 65536). */
- tnum = (((unsigned long) num[M]) << 16) + num[M + 1];
-
- /* Do not execute the divide instruction if it will overflow. */
- if ((tdenm * 0xffffUL) < tnum)
- tquot = 0xffff;
- else
- tquot = tnum / tdenm;
-
- /* Prove that the divide worked. */
- /*
- tcheck = (unsigned long)tquot * tdenm;
- if (tnum - tcheck > tdenm)
- tquot = 0xffff;
- */
- /* Multiply denominator by trial quotient digit. */
- __m16m(tquot, den, tprod);
- /* The quotient digit may have been overestimated. */
- if (__ecmpm(tprod, num) > 0)
- {
- tquot -= 1;
- __esubm(den, tprod);
- if(__ecmpm(tprod, num) > 0)
- {
- tquot -= 1;
- __esubm(den, tprod);
- }
- }
- __esubm(tprod, num);
- equot[i] = tquot;
- __eshup6(num);
- }
- /* test for nonzero remainder after roundoff bit */
- p = &num[M];
- j = 0;
- for (i = M; i < NI; i++)
- {
- j |= *p++;
- }
- if (j)
- j = 1;
-
- for (i = 0; i < NI; i++)
- num[i] = equot[i];
-
- return ( (int)j );
-}
-
-
-/* Multiply significands */
-int __emulm(const short unsigned int * __restrict__ a,
- short unsigned int * __restrict__ b)
-{
- const unsigned short *p;
- unsigned short *q;
- unsigned short pprod[NI];
- unsigned short equot[NI];
- unsigned short j;
- int i;
-
- equot[0] = b[0];
- equot[1] = b[1];
- for (i = M; i < NI; i++)
- equot[i] = 0;
-
- j = 0;
- p = &a[NI - 1];
- q = &equot[NI - 1];
- for (i = M + 1; i < NI; i++)
- {
- if (*p == 0)
- {
- --p;
- }
- else
- {
- __m16m(*p--, b, pprod);
- __eaddm(pprod, equot);
- }
- j |= *q;
- __eshdn6(equot);
- }
-
- for (i = 0; i < NI; i++)
- b[i] = equot[i];
-
- /* return flag for lost nonzero bits */
- return ( (int)j );
-}
-
-
-/*
- * Normalize and round off.
- *
- * The internal format number to be rounded is "s".
- * Input "lost" indicates whether the number is exact.
- * This is the so-called sticky bit.
- *
- * Input "subflg" indicates whether the number was obtained
- * by a subtraction operation. In that case if lost is nonzero
- * then the number is slightly smaller than indicated.
- *
- * Input "expo" is the biased exponent, which may be negative.
- * the exponent field of "s" is ignored but is replaced by
- * "expo" as adjusted by normalization and rounding.
- *
- * Input "rcntrl" is the rounding control.
- *
- * Input "rnprc" is precison control (64 or NBITS).
- */
-
-void __emdnorm(short unsigned int *s, int lost, int subflg, int expo, int rcntrl, int rndprc)
-{
- int i, j;
- unsigned short r;
- int rw = NI-1; /* low guard word */
- int re = NI-2;
- const unsigned short rmsk = 0xffff;
- const unsigned short rmbit = 0x8000;
-#if NE == 6
- unsigned short rbit[NI] = {0,0,0,0,0,0,0,1,0};
-#else
- unsigned short rbit[NI] = {0,0,0,0,0,0,0,0,0,0,0,1,0};
-#endif
-
- /* Normalize */
- j = __enormlz(s);
-
- /* a blank significand could mean either zero or infinity. */
-#ifndef INFINITY
- if (j > NBITS)
- {
- __ecleazs(s);
- return;
- }
-#endif
- expo -= j;
-#ifndef INFINITY
- if (expo >= 32767L)
- goto overf;
-#else
- if ((j > NBITS) && (expo < 32767L))
- {
- __ecleazs(s);
- return;
- }
-#endif
- if (expo < 0L)
- {
- if (expo > (long)(-NBITS - 1))
- {
- j = (int)expo;
- i = __eshift(s, j);
- if (i)
- lost = 1;
- }
- else
- {
- __ecleazs(s);
- return;
- }
- }
- /* Round off, unless told not to by rcntrl. */
- if (rcntrl == 0)
- goto mdfin;
- if (rndprc == 64)
- {
- rw = 7;
- re = 6;
- rbit[NI - 2] = 0;
- rbit[6] = 1;
- }
-
- /* Shift down 1 temporarily if the data structure has an implied
- * most significant bit and the number is denormal.
- * For rndprc = 64 or NBITS, there is no implied bit.
- * But Intel long double denormals lose one bit of significance even so.
- */
-#if IBMPC
- if ((expo <= 0) && (rndprc != NBITS))
-#else
- if ((expo <= 0) && (rndprc != 64) && (rndprc != NBITS))
-#endif
- {
- lost |= s[NI - 1] & 1;
- __eshdn1(s);
- }
- /* Clear out all bits below the rounding bit,
- * remembering in r if any were nonzero.
- */
- r = s[rw] & rmsk;
- if (rndprc < NBITS)
- {
- i = rw + 1;
- while (i < NI)
- {
- if( s[i] )
- r |= 1;
- s[i] = 0;
- ++i;
- }
- }
- s[rw] &= (rmsk ^ 0xffff);
- if ((r & rmbit) != 0)
- {
- if (r == rmbit)
- {
- if (lost == 0)
- { /* round to even */
- if ((s[re] & 1) == 0)
- goto mddone;
- }
- else
- {
- if (subflg != 0)
- goto mddone;
- }
- }
- __eaddm(rbit, s);
- }
-mddone:
-#if IBMPC
- if ((expo <= 0) && (rndprc != NBITS))
-#else
- if ((expo <= 0) && (rndprc != 64) && (rndprc != NBITS))
-#endif
- {
- __eshup1(s);
- }
- if (s[2] != 0)
- { /* overflow on roundoff */
- __eshdn1(s);
- expo += 1;
- }
-mdfin:
- s[NI - 1] = 0;
- if (expo >= 32767L)
- {
-#ifndef INFINITY
-overf:
-#endif
-#ifdef INFINITY
- s[1] = 32767;
- for (i = 2; i < NI - 1; i++ )
- s[i] = 0;
-#else
- s[1] = 32766;
- s[2] = 0;
- for (i = M + 1; i < NI - 1; i++)
- s[i] = 0xffff;
- s[NI - 1] = 0;
- if ((rndprc < 64) || (rndprc == 113))
- s[rw] &= (rmsk ^ 0xffff);
-#endif
- return;
- }
- if (expo < 0)
- s[1] = 0;
- else
- s[1] = (unsigned short)expo;
-}
-
-
-/*
-; Multiply.
-;
-; unsigned short a[NE], b[NE], c[NE];
-; emul( a, b, c ); c = b * a
-*/
-void __emul(const short unsigned int *a,
- const short unsigned int *b,
- short unsigned int *c)
-{
- unsigned short ai[NI], bi[NI];
- int i, j;
- long lt, lta, ltb;
-
-#ifdef NANS
- /* NaN times anything is the same NaN. */
- if (__eisnan(a))
- {
- __emov(a, c);
- return;
- }
- if (__eisnan(b))
- {
- __emov(b, c);
- return;
- }
- /* Zero times infinity is a NaN. */
- if ((__eisinf(a) && __eiiszero(b))
- || (__eisinf(b) && __eiiszero(a)))
- {
- mtherr( "emul", DOMAIN);
- __enan_NBITS(c);
- return;
- }
-#endif
-/* Infinity times anything else is infinity. */
-#ifdef INFINITY
- if (__eisinf(a) || __eisinf(b))
- {
- if (__eisneg(a) ^ __eisneg(b))
- *(c + (NE-1)) = 0x8000;
- else
- *(c + (NE-1)) = 0;
- __einfin(c);
- return;
- }
-#endif
- __emovi(a, ai);
- __emovi(b, bi);
- lta = ai[E];
- ltb = bi[E];
- if (ai[E] == 0)
- {
- for (i = 1; i < NI - 1; i++)
- {
- if (ai[i] != 0)
- {
- lta -= __enormlz( ai );
- goto mnzer1;
- }
- }
- __eclear(c);
- return;
- }
-mnzer1:
-
- if (bi[E] == 0)
- {
- for (i = 1; i < NI - 1; i++)
- {
- if (bi[i] != 0)
- {
- ltb -= __enormlz(bi);
- goto mnzer2;
- }
- }
- __eclear(c);
- return;
- }
-mnzer2:
-
- /* Multiply significands */
- j = __emulm(ai, bi);
- /* calculate exponent */
- lt = lta + ltb - (EXONE - 1);
- __emdnorm(bi, j, 0, lt, 64, NBITS);
- /* calculate sign of product */
- if (ai[0] == bi[0])
- bi[0] = 0;
- else
- bi[0] = 0xffff;
- __emovo(bi, c);
-}
-
-
-/* move out internal format to ieee long double */
-void __toe64(short unsigned int *a, short unsigned int *b)
-{
- register unsigned short *p, *q;
- unsigned short i;
-
-#ifdef NANS
- if (__eiisnan(a))
- {
- __enan_64(b);
- return;
- }
-#endif
-#ifdef IBMPC
- /* Shift Intel denormal significand down 1. */
- if (a[E] == 0)
- __eshdn1(a);
-#endif
- p = a;
-#ifdef MIEEE
- q = b;
-#else
- q = b + 4; /* point to output exponent */
-#if 1
- /* NOTE: if data type is 96 bits wide, clear the last word here. */
- *(q + 1)= 0;
-#endif
-#endif
-
- /* combine sign and exponent */
- i = *p++;
-#ifdef MIEEE
- if (i)
- *q++ = *p++ | 0x8000;
- else
- *q++ = *p++;
- *q++ = 0;
-#else
- if (i)
- *q-- = *p++ | 0x8000;
- else
- *q-- = *p++;
-#endif
- /* skip over guard word */
- ++p;
- /* move the significand */
-#ifdef MIEEE
- for (i = 0; i < 4; i++)
- *q++ = *p++;
-#else
-#ifdef INFINITY
- if (__eiisinf(a))
- {
- /* Intel long double infinity. */
- *q-- = 0x8000;
- *q-- = 0;
- *q-- = 0;
- *q = 0;
- return;
- }
-#endif
- for (i = 0; i < 4; i++)
- *q-- = *p++;
-#endif
-}
-
-
-/* Compare two e type numbers.
- *
- * unsigned short a[NE], b[NE];
- * ecmp( a, b );
- *
- * returns +1 if a > b
- * 0 if a == b
- * -1 if a < b
- * -2 if either a or b is a NaN.
- */
-int __ecmp(const short unsigned int * __restrict__ a,
- const short unsigned int * __restrict__ b)
-{
- unsigned short ai[NI], bi[NI];
- register unsigned short *p, *q;
- register int i;
- int msign;
-
-#ifdef NANS
- if (__eisnan (a) || __eisnan (b))
- return (-2);
-#endif
- __emovi(a, ai);
- p = ai;
- __emovi(b, bi);
- q = bi;
-
- if (*p != *q)
- { /* the signs are different */
- /* -0 equals + 0 */
- for (i = 1; i < NI - 1; i++)
- {
- if (ai[i] != 0)
- goto nzro;
- if (bi[i] != 0)
- goto nzro;
- }
- return (0);
-nzro:
- if (*p == 0)
- return (1);
- else
- return (-1);
- }
- /* both are the same sign */
- if (*p == 0)
- msign = 1;
- else
- msign = -1;
- i = NI - 1;
- do
- {
- if (*p++ != *q++)
- {
- goto diff;
- }
- }
- while (--i > 0);
-
- return (0); /* equality */
-
-diff:
- if ( *(--p) > *(--q) )
- return (msign); /* p is bigger */
- else
- return (-msign); /* p is littler */
-}
-
-/*
-; Shift significand
-;
-; Shifts significand area up or down by the number of bits
-; given by the variable sc.
-*/
-int __eshift(short unsigned int *x, int sc)
-{
- unsigned short lost;
- unsigned short *p;
-
- if (sc == 0)
- return (0);
-
- lost = 0;
- p = x + NI - 1;
-
- if (sc < 0)
- {
- sc = -sc;
- while (sc >= 16)
- {
- lost |= *p; /* remember lost bits */
- __eshdn6(x);
- sc -= 16;
- }
-
- while (sc >= 8)
- {
- lost |= *p & 0xff;
- __eshdn8(x);
- sc -= 8;
- }
-
- while (sc > 0)
- {
- lost |= *p & 1;
- __eshdn1(x);
- sc -= 1;
- }
- }
- else
- {
- while (sc >= 16)
- {
- __eshup6(x);
- sc -= 16;
- }
-
- while (sc >= 8)
- {
- __eshup8(x);
- sc -= 8;
- }
-
- while (sc > 0)
- {
- __eshup1(x);
- sc -= 1;
- }
- }
- if (lost)
- lost = 1;
- return ( (int)lost );
-}
-
-
-/*
-; normalize
-;
-; Shift normalizes the significand area pointed to by argument
-; shift count (up = positive) is returned.
-*/
-int __enormlz(short unsigned int *x)
-{
- register unsigned short *p;
- int sc;
-
- sc = 0;
- p = &x[M];
- if (*p != 0)
- goto normdn;
- ++p;
- if (*p & 0x8000)
- return (0); /* already normalized */
- while (*p == 0)
- {
- __eshup6(x);
- sc += 16;
- /* With guard word, there are NBITS+16 bits available.
- * return true if all are zero.
- */
- if (sc > NBITS)
- return (sc);
- }
- /* see if high byte is zero */
- while ((*p & 0xff00) == 0)
- {
- __eshup8(x);
- sc += 8;
- }
- /* now shift 1 bit at a time */
- while ((*p & 0x8000) == 0)
- {
- __eshup1(x);
- sc += 1;
- if (sc > (NBITS + 16))
- {
- mtherr( "enormlz", UNDERFLOW);
- return (sc);
- }
- }
- return (sc);
-
- /* Normalize by shifting down out of the high guard word
- of the significand */
-normdn:
- if (*p & 0xff00)
- {
- __eshdn8(x);
- sc -= 8;
- }
- while (*p != 0)
- {
- __eshdn1(x);
- sc -= 1;
-
- if (sc < -NBITS)
- {
- mtherr("enormlz", OVERFLOW);
- return (sc);
- }
- }
- return (sc);
-}
-
-
-/* Move internal format number out,
- * converting it to external format.
- */
-void __emovo(const short unsigned int * __restrict__ a,
- short unsigned int * __restrict__ b)
-{
- register const unsigned short *p;
- register unsigned short *q;
- unsigned short i;
-
- p = a;
- q = b + (NE - 1); /* point to output exponent */
- /* combine sign and exponent */
- i = *p++;
- if (i)
- *q-- = *p++ | 0x8000;
- else
- *q-- = *p++;
-#ifdef INFINITY
- if (*(p - 1) == 0x7fff)
- {
-#ifdef NANS
- if (__eiisnan(a))
- {
- __enan_NBITS(b);
- return;
- }
-#endif
- __einfin(b);
- return;
- }
-#endif
- /* skip over guard word */
- ++p;
- /* move the significand */
- for (i = 0; i < NE - 1; i++)
- *q-- = *p++;
-}
-
-
-#if USE_LDTOA
-
-void __eiremain(short unsigned int *den, short unsigned int *num,
- short unsigned int *equot )
-{
- long ld, ln;
- unsigned short j;
-
- ld = den[E];
- ld -= __enormlz(den);
- ln = num[E];
- ln -= __enormlz(num);
- __ecleaz(equot);
- while (ln >= ld)
- {
- if(__ecmpm(den,num) <= 0)
- {
- __esubm(den, num);
- j = 1;
- }
- else
- {
- j = 0;
- }
- __eshup1(equot);
- equot[NI - 1] |= j;
- __eshup1(num);
- ln -= 1;
- }
- __emdnorm( num, 0, 0, ln, 0, NBITS );
-}
-
-
-void __eadd1(const short unsigned int * __restrict__ a,
- const short unsigned int * __restrict__ b,
- short unsigned int * __restrict__ c,
- int subflg)
-{
- unsigned short ai[NI], bi[NI], ci[NI];
- int i, lost, j, k;
- long lt, lta, ltb;
-
-#ifdef INFINITY
- if (__eisinf(a))
- {
- __emov(a, c);
- if( subflg )
- __eneg(c);
- return;
- }
- if (__eisinf(b))
- {
- __emov(b, c);
- return;
- }
-#endif
- __emovi(a, ai);
- __emovi(b, bi);
- if (sub)
- ai[0] = ~ai[0];
-
- /* compare exponents */
- lta = ai[E];
- ltb = bi[E];
- lt = lta - ltb;
- if (lt > 0L)
- { /* put the larger number in bi */
- __emovz(bi, ci);
- __emovz(ai, bi);
- __emovz(ci, ai);
- ltb = bi[E];
- lt = -lt;
- }
- lost = 0;
- if (lt != 0L)
- {
- if (lt < (long)(-NBITS - 1))
- goto done; /* answer same as larger addend */
- k = (int)lt;
- lost = __eshift(ai, k); /* shift the smaller number down */
- }
- else
- {
- /* exponents were the same, so must compare significands */
- i = __ecmpm(ai, bi);
- if (i == 0)
- { /* the numbers are identical in magnitude */
- /* if different signs, result is zero */
- if (ai[0] != bi[0])
- {
- __eclear(c);
- return;
- }
- /* if same sign, result is double */
- /* double denomalized tiny number */
- if ((bi[E] == 0) && ((bi[3] & 0x8000) == 0))
- {
- __eshup1( bi );
- goto done;
- }
- /* add 1 to exponent unless both are zero! */
- for (j = 1; j < NI - 1; j++)
- {
- if (bi[j] != 0)
- {
- /* This could overflow, but let emovo take care of that. */
- ltb += 1;
- break;
- }
- }
- bi[E] = (unsigned short )ltb;
- goto done;
- }
- if (i > 0)
- { /* put the larger number in bi */
- __emovz(bi, ci);
- __emovz(ai, bi);
- __emovz(ci, ai);
- }
- }
- if (ai[0] == bi[0])
- {
- __eaddm(ai, bi);
- subflg = 0;
- }
- else
- {
- __esubm(ai, bi);
- subflg = 1;
- }
- __emdnorm(bi, lost, subflg, ltb, 64, NBITS);
-
-done:
- __emovo(bi, c);
-}
-
-
-/* y = largest integer not greater than x
- * (truncated toward minus infinity)
- *
- * unsigned short x[NE], y[NE]
- *
- * efloor( x, y );
- */
-
-
-void __efloor(short unsigned int *x, short unsigned int *y)
-{
- register unsigned short *p;
- int e, expon, i;
- unsigned short f[NE];
- const unsigned short bmask[] = {
- 0xffff,
- 0xfffe,
- 0xfffc,
- 0xfff8,
- 0xfff0,
- 0xffe0,
- 0xffc0,
- 0xff80,
- 0xff00,
- 0xfe00,
- 0xfc00,
- 0xf800,
- 0xf000,
- 0xe000,
- 0xc000,
- 0x8000,
- 0x0000,
- };
-
- __emov(x, f); /* leave in external format */
- expon = (int) f[NE - 1];
- e = (expon & 0x7fff) - (EXONE - 1);
- if (e <= 0)
- {
- __eclear(y);
- goto isitneg;
- }
- /* number of bits to clear out */
- e = NBITS - e;
- __emov(f, y);
- if (e <= 0)
- return;
-
- p = &y[0];
- while (e >= 16)
- {
- *p++ = 0;
- e -= 16;
- }
- /* clear the remaining bits */
- *p &= bmask[e];
- /* truncate negatives toward minus infinity */
-isitneg:
-
- if ((unsigned short)expon & (unsigned short)0x8000)
- {
- for (i = 0; i < NE - 1; i++)
- {
- if (f[i] != y[i])
- {
- __esub( __eone, y, y );
- break;
- }
- }
- }
-}
-
-/*
-; Subtract external format numbers.
-;
-; unsigned short a[NE], b[NE], c[NE];
-; esub( a, b, c ); c = b - a
-*/
-
-void __esub(const short unsigned int * a,
- const short unsigned int * b,
- short unsigned int * c)
-{
-#ifdef NANS
- if (__eisnan(a))
- {
- __emov (a, c);
- return;
- }
- if ( __eisnan(b))
- {
- __emov(b, c);
- return;
- }
- /* Infinity minus infinity is a NaN.
- * Test for subtracting infinities of the same sign.
- */
- if (__eisinf(a) && __eisinf(b) && ((__eisneg (a) ^ __eisneg (b)) == 0))
- {
- mtherr("esub", DOMAIN);
- __enan_NBITS( c );
- return;
- }
-#endif
- __eadd1(a, b, c, 1);
-}
-
-
-/*
-; Divide.
-;
-; unsigned short a[NI], b[NI], c[NI];
-; ediv( a, b, c ); c = b / a
-*/
-
-void __ediv(const short unsigned int *a,
- const short unsigned int *b,
- short unsigned int *c)
-{
- unsigned short ai[NI], bi[NI];
- int i;
- long lt, lta, ltb;
-
-#ifdef NANS
- /* Return any NaN input. */
- if (__eisnan(a))
- {
- __emov(a, c);
- return;
- }
- if (__eisnan(b))
- {
- __emov(b, c);
- return;
- }
- /* Zero over zero, or infinity over infinity, is a NaN. */
- if ((__eiszero(a) && __eiszero(b))
- || (__eisinf (a) && __eisinf (b)))
- {
- mtherr("ediv", DOMAIN);
- __enan_NBITS( c );
- return;
- }
-#endif
-/* Infinity over anything else is infinity. */
-#ifdef INFINITY
- if (__eisinf(b))
- {
- if (__eisneg(a) ^ __eisneg(b))
- *(c + (NE - 1)) = 0x8000;
- else
- *(c + (NE - 1)) = 0;
- __einfin(c);
- return;
- }
- if (__eisinf(a))
- {
- __eclear(c);
- return;
- }
-#endif
- __emovi(a, ai);
- __emovi(b, bi);
- lta = ai[E];
- ltb = bi[E];
- if (bi[E] == 0)
- { /* See if numerator is zero. */
- for (i = 1; i < NI - 1; i++)
- {
- if (bi[i] != 0)
- {
- ltb -= __enormlz(bi);
- goto dnzro1;
- }
- }
- __eclear(c);
- return;
- }
-dnzro1:
-
- if (ai[E] == 0)
- { /* possible divide by zero */
- for (i = 1; i < NI - 1; i++)
- {
- if (ai[i] != 0)
- {
- lta -= __enormlz(ai);
- goto dnzro2;
- }
- }
- if (ai[0] == bi[0])
- *(c + (NE - 1)) = 0;
- else
- *(c + (NE - 1)) = 0x8000;
- __einfin(c);
- mtherr("ediv", SING);
- return;
- }
-dnzro2:
-
- i = __edivm(ai, bi);
- /* calculate exponent */
- lt = ltb - lta + EXONE;
- __emdnorm(bi, i, 0, lt, 64, NBITS);
- /* set the sign */
- if (ai[0] == bi[0])
- bi[0] = 0;
- else
- bi[0] = 0Xffff;
- __emovo(bi, c);
-}
-
-void __e64toe(short unsigned int *pe, short unsigned int *y)
-{
- unsigned short yy[NI];
- unsigned short *p, *q, *e;
- int i;
-
- e = pe;
- p = yy;
- for (i = 0; i < NE - 5; i++)
- *p++ = 0;
-#ifdef IBMPC
- for (i = 0; i < 5; i++)
- *p++ = *e++;
-#endif
-#ifdef DEC
- for (i = 0; i < 5; i++)
- *p++ = *e++;
-#endif
-#ifdef MIEEE
- p = &yy[0] + (NE - 1);
- *p-- = *e++;
- ++e;
- for (i = 0; i < 4; i++)
- *p-- = *e++;
-#endif
-
-#ifdef IBMPC
- /* For Intel long double, shift denormal significand up 1
- -- but only if the top significand bit is zero. */
- if ((yy[NE - 1] & 0x7fff) == 0 && (yy[NE - 2] & 0x8000) == 0)
- {
- unsigned short temp[NI + 1];
- __emovi(yy, temp);
- __eshup1(temp);
- __emovo(temp,y);
- return;
- }
-#endif
-#ifdef INFINITY
- /* Point to the exponent field. */
- p = &yy[NE - 1];
- if (*p == 0x7fff)
- {
-#ifdef NANS
-#ifdef IBMPC
- for (i = 0; i < 4; i++)
- {
- if ((i != 3 && pe[i] != 0)
- /* Check for Intel long double infinity pattern. */
- || (i == 3 && pe[i] != 0x8000))
- {
- __enan_NBITS(y);
- return;
- }
- }
-#else
- for (i = 1; i <= 4; i++)
- {
- if (pe[i] != 0)
- {
- __enan_NBITS(y);
- return;
- }
- }
-#endif
-#endif /* NANS */
- __eclear(y);
- __einfin(y);
- if (*p & 0x8000)
- __eneg(y);
- return;
- }
-#endif
- p = yy;
- q = y;
- for (i = 0; i < NE; i++)
- *q++ = *p++;
-}
-
-#endif /* USE_LDTOA */
lib/libc/mingw/math/cephes_emath.h
@@ -1,719 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef _CEPHES_EMATH_H
-#define _CEPHES_EMATH_H
-
-/**
- * This is a workaround for a gcc bug
- */
-#define __restrict__
-
-/* This file is extracted from S L Moshier's ioldoubl.c,
- * modified for use in MinGW
- *
- * Extended precision arithmetic functions for long double I/O.
- * This program has been placed in the public domain.
- */
-
-
-/*
- * Revision history:
- *
- * 5 Jan 84 PDP-11 assembly language version
- * 6 Dec 86 C language version
- * 30 Aug 88 100 digit version, improved rounding
- * 15 May 92 80-bit long double support
- *
- * Author: S. L. Moshier.
- *
- * 6 Oct 02 Modified for MinGW by inlining utility routines,
- * removing global variables, and splitting out strtold
- * from _IO_ldtoa and _IO_ldtostr.
- *
- * Danny Smith <dannysmith@users.sourceforge.net>
- *
- */
-
-
-/* ieee.c
- *
- * Extended precision IEEE binary floating point arithmetic routines
- *
- * Numbers are stored in C language as arrays of 16-bit unsigned
- * short integers. The arguments of the routines are pointers to
- * the arrays.
- *
- *
- * External e type data structure, simulates Intel 8087 chip
- * temporary real format but possibly with a larger significand:
- *
- * NE-1 significand words (least significant word first,
- * most significant bit is normally set)
- * exponent (value = EXONE for 1.0,
- * top bit is the sign)
- *
- *
- * Internal data structure of a number (a "word" is 16 bits):
- *
- * ei[0] sign word (0 for positive, 0xffff for negative)
- * ei[1] biased __exponent (value = EXONE for the number 1.0)
- * ei[2] high guard word (always zero after normalization)
- * ei[3]
- * to ei[NI-2] significand (NI-4 significand words,
- * most significant word first,
- * most significant bit is set)
- * ei[NI-1] low guard word (0x8000 bit is rounding place)
- *
- *
- *
- * Routines for external format numbers
- *
- * __asctoe64( string, &d ) ASCII string to long double
- * __asctoeg( string, e, prec ) ASCII string to specified precision
- * __e64toe( &d, e ) IEEE long double precision to e type
- * __eadd( a, b, c ) c = b + a
- * __eclear(e) e = 0
- * __ecmp (a, b) Returns 1 if a > b, 0 if a == b,
- * -1 if a < b, -2 if either a or b is a NaN.
- * __ediv( a, b, c ) c = b / a
- * __efloor( a, b ) truncate to integer, toward -infinity
- * __efrexp( a, exp, s ) extract exponent and significand
- * __eifrac( e, &l, frac ) e to long integer and e type fraction
- * __euifrac( e, &l, frac ) e to unsigned long integer and e type fraction
- * __einfin( e ) set e to infinity, leaving its sign alone
- * __eldexp( a, n, b ) multiply by 2**n
- * __emov( a, b ) b = a
- * __emul( a, b, c ) c = b * a
- * __eneg(e) e = -e
- * __eround( a, b ) b = nearest integer value to a
- * __esub( a, b, c ) c = b - a
- * __e24toasc( &f, str, n ) single to ASCII string, n digits after decimal
- * __e53toasc( &d, str, n ) double to ASCII string, n digits after decimal
- * __e64toasc( &d, str, n ) long double to ASCII string
- * __etoasc( e, str, n ) e to ASCII string, n digits after decimal
- * __etoe24( e, &f ) convert e type to IEEE single precision
- * __etoe53( e, &d ) convert e type to IEEE double precision
- * __etoe64( e, &d ) convert e type to IEEE long double precision
- * __eisneg( e ) 1 if sign bit of e != 0, else 0
- * __eisinf( e ) 1 if e has maximum exponent (non-IEEE)
- * or is infinite (IEEE)
- * __eisnan( e ) 1 if e is a NaN
- * __esqrt( a, b ) b = square root of a
- *
- *
- * Routines for internal format numbers
- *
- * __eaddm( ai, bi ) add significands, bi = bi + ai
- * __ecleaz(ei) ei = 0
- * __ecleazs(ei) set ei = 0 but leave its sign alone
- * __ecmpm( ai, bi ) compare significands, return 1, 0, or -1
- * __edivm( ai, bi ) divide significands, bi = bi / ai
- * __emdnorm(ai,l,s,exp) normalize and round off
- * __emovi( a, ai ) convert external a to internal ai
- * __emovo( ai, a ) convert internal ai to external a
- * __emovz( ai, bi ) bi = ai, low guard word of bi = 0
- * __emulm( ai, bi ) multiply significands, bi = bi * ai
- * __enormlz(ei) left-justify the significand
- * __eshdn1( ai ) shift significand and guards down 1 bit
- * __eshdn8( ai ) shift down 8 bits
- * __eshdn6( ai ) shift down 16 bits
- * __eshift( ai, n ) shift ai n bits up (or down if n < 0)
- * __eshup1( ai ) shift significand and guards up 1 bit
- * __eshup8( ai ) shift up 8 bits
- * __eshup6( ai ) shift up 16 bits
- * __esubm( ai, bi ) subtract significands, bi = bi - ai
- *
- *
- * The result is always normalized and rounded to NI-4 word precision
- * after each arithmetic operation.
- *
- * Exception flags are NOT fully supported.
- *
- * Define INFINITY in mconf.h for support of infinity; otherwise a
- * saturation arithmetic is implemented.
- *
- * Define NANS for support of Not-a-Number items; otherwise the
- * arithmetic will never produce a NaN output, and might be confused
- * by a NaN input.
- * If NaN's are supported, the output of ecmp(a,b) is -2 if
- * either a or b is a NaN. This means asking if(ecmp(a,b) < 0)
- * may not be legitimate. Use if(ecmp(a,b) == -1) for less-than
- * if in doubt.
- * Signaling NaN's are NOT supported; they are treated the same
- * as quiet NaN's.
- *
- * Denormals are always supported here where appropriate (e.g., not
- * for conversion to DEC numbers).
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <math.h>
-#include <locale.h>
-#include <ctype.h>
-
-#undef alloca
-#define alloca __builtin_alloca
-
-/* Don't build non-ANSI _IO_ldtoa. It is not thread safe. */
-#ifndef USE_LDTOA
-#define USE_LDTOA 0
-#endif
-
-
- /* Number of 16 bit words in external x type format */
-#define NE 6
-
- /* Number of 16 bit words in internal format */
-#define NI (NE+3)
-
- /* Array offset to exponent */
-#define E 1
-
- /* Array offset to high guard word */
-#define M 2
-
- /* Number of bits of precision */
-#define NBITS ((NI-4)*16)
-
- /* Maximum number of decimal digits in ASCII conversion
- * = NBITS*log10(2)
- */
-#define NDEC (NBITS*8/27)
-
- /* The exponent of 1.0 */
-#define EXONE (0x3fff)
-
-
-#define mtherr(fname, code)
-
-
-extern long double strtold (const char * __restrict__ s, char ** __restrict__ se);
-extern int __asctoe64(const char * __restrict__ ss,
- short unsigned int * __restrict__ y);
-extern void __emul(const short unsigned int * a,
- const short unsigned int * b,
- short unsigned int * c);
-extern int __ecmp(const short unsigned int * __restrict__ a,
- const short unsigned int * __restrict__ b);
-extern int __enormlz(short unsigned int *x);
-extern int __eshift(short unsigned int *x, int sc);
-extern void __eaddm(const short unsigned int * __restrict__ x,
- short unsigned int * __restrict__ y);
-extern void __esubm(const short unsigned int * __restrict__ x,
- short unsigned int * __restrict__ y);
-extern void __emdnorm(short unsigned int *s, int lost, int subflg,
- int exp, int rcntrl, const int rndprc);
-extern void __toe64(short unsigned int * __restrict__ a,
- short unsigned int * __restrict__ b);
-extern int __edivm(short unsigned int * __restrict__ den,
- short unsigned int * __restrict__ num);
-extern int __emulm(const short unsigned int * __restrict__ a,
- short unsigned int * __restrict__ b);
-extern void __emovi(const short unsigned int * __restrict__ a,
- short unsigned int * __restrict__ b);
-extern void __emovo(const short unsigned int * __restrict__ a,
- short unsigned int * __restrict__ b);
-
-#if USE_LDTOA
-
-extern char * _IO_ldtoa(long double, int, int, int *, int *, char **);
-extern void _IO_ldtostr(long double *x, char *string, int ndigs,
- int flags, char fmt);
-
-extern void __eiremain(short unsigned int * __restrict__ den,
- short unsigned int *__restrict__ num,
- short unsigned int *__restrict__ equot);
-extern void __efloor(short unsigned int *x, short unsigned int *y);
-extern void __eadd1(const short unsigned int * __restrict__ a,
- const short unsigned int * __restrict__ b,
- short unsigned int * __restrict__ c,
- int subflg);
-extern void __esub(const short unsigned int *a, const short unsigned int *b,
- short unsigned int *c);
-extern void __ediv(const short unsigned int *a, const short unsigned int *b,
- short unsigned int *c);
-extern void __e64toe(short unsigned int *pe, short unsigned int *y);
-
-
-#endif
-
-static __inline__ int __eisneg(const short unsigned int *x);
-static __inline__ int __eisinf(const short unsigned int *x);
-static __inline__ int __eisnan(const short unsigned int *x);
-static __inline__ int __eiszero(const short unsigned int *a);
-static __inline__ void __emovz(register const short unsigned int * __restrict__ a,
- register short unsigned int * __restrict__ b);
-static __inline__ void __eclear(register short unsigned int *x);
-static __inline__ void __ecleaz(register short unsigned int *xi);
-static __inline__ void __ecleazs(register short unsigned int *xi);
-static __inline__ int __eiisinf(const short unsigned int *x);
-static __inline__ int __eiisnan(const short unsigned int *x);
-static __inline__ int __eiiszero(const short unsigned int *x);
-static __inline__ void __enan_64(short unsigned int *nanptr);
-static __inline__ void __enan_NBITS (short unsigned int *nanptr);
-static __inline__ void __enan_NI16 (short unsigned int *nanptr);
-static __inline__ void __einfin(register short unsigned int *x);
-static __inline__ void __eneg(short unsigned int *x);
-static __inline__ void __eshup1(register short unsigned int *x);
-static __inline__ void __eshup8(register short unsigned int *x);
-static __inline__ void __eshup6(register short unsigned int *x);
-static __inline__ void __eshdn1(register short unsigned int *x);
-static __inline__ void __eshdn8(register short unsigned int *x);
-static __inline__ void __eshdn6(register short unsigned int *x);
-
-
-
-/* Intel IEEE, low order words come first:
- */
-#define IBMPC 1
-
-/* Define 1 for ANSI C atan2() function
- * See atan.c and clog.c.
- */
-#define ANSIC 1
-
-/*define VOLATILE volatile*/
-#define VOLATILE
-
-/* For 12-byte long doubles on an i386, pad a 16-bit short 0
- * to the end of real constants initialized by integer arrays.
- *
- * #define XPD 0,
- *
- * Otherwise, the type is 10 bytes long and XPD should be
- * defined blank.
- *
- * #define XPD
- */
-#define XPD 0,
-/* #define XPD */
-#define NANS 1
-
-/* NaN's require infinity support. */
-#ifdef NANS
-#ifndef INFINITY
-#define INFINITY
-#endif
-#endif
-
-/* This handles 64-bit long ints. */
-#define LONGBITS (8 * sizeof(long))
-
-
-#define NTEN 12
-#define MAXP 4096
-
-/*
-; Clear out entire external format number.
-;
-; unsigned short x[];
-; eclear( x );
-*/
-
-static __inline__ void __eclear(register short unsigned int *x)
-{
- memset(x, 0, NE * sizeof(unsigned short));
-}
-
-
-/* Move external format number from a to b.
- *
- * emov( a, b );
- */
-
-static __inline__ void __emov(register const short unsigned int * __restrict__ a,
- register short unsigned int * __restrict__ b)
-{
- memcpy(b, a, NE * sizeof(unsigned short));
-}
-
-
-/*
-; Negate external format number
-;
-; unsigned short x[NE];
-; eneg( x );
-*/
-
-static __inline__ void __eneg(short unsigned int *x)
-{
-#ifdef NANS
- if (__eisnan(x))
- return;
-#endif
- x[NE-1] ^= 0x8000; /* Toggle the sign bit */
-}
-
-
-/* Return 1 if external format number is negative,
- * else return zero.
- */
-static __inline__ int __eisneg(const short unsigned int *x)
-{
-#ifdef NANS
- if (__eisnan(x))
- return (0);
-#endif
- if (x[NE-1] & 0x8000)
- return (1);
- else
- return (0);
-}
-
-
-/* Return 1 if external format number has maximum possible exponent,
- * else return zero.
- */
-static __inline__ int __eisinf(const short unsigned int *x)
-{
- if ((x[NE - 1] & 0x7fff) == 0x7fff)
- {
-#ifdef NANS
- if (__eisnan(x))
- return (0);
-#endif
- return (1);
- }
- else
- return (0);
-}
-
-/* Check if e-type number is not a number.
- */
-static __inline__ int __eisnan(const short unsigned int *x)
-{
-#ifdef NANS
- int i;
- /* NaN has maximum __exponent */
- if ((x[NE - 1] & 0x7fff) == 0x7fff)
- /* ... and non-zero significand field. */
- for (i = 0; i < NE - 1; i++)
- {
- if (*x++ != 0)
- return (1);
- }
-#endif
- return (0);
-}
-
-/*
-; Fill __entire number, including __exponent and significand, with
-; largest possible number. These programs implement a saturation
-; value that is an ordinary, legal number. A special value
-; "infinity" may also be implemented; this would require tests
-; for that value and implementation of special rules for arithmetic
-; operations involving inifinity.
-*/
-
-static __inline__ void __einfin(register short unsigned int *x)
-{
- register int i;
-#ifdef INFINITY
- for (i = 0; i < NE - 1; i++)
- *x++ = 0;
- *x |= 32767;
-#else
- for (i = 0; i < NE - 1; i++)
- *x++ = 0xffff;
- *x |= 32766;
- *(x - 5) = 0;
-#endif
-}
-
-/* Clear out internal format number.
- */
-
-static __inline__ void __ecleaz(register short unsigned int *xi)
-{
- memset(xi, 0, NI * sizeof(unsigned short));
-}
-
-/* same, but don't touch the sign. */
-
-static __inline__ void __ecleazs(register short unsigned int *xi)
-{
- ++xi;
- memset(xi, 0, (NI-1) * sizeof(unsigned short));
-}
-
-/* Move internal format number from a to b.
- */
-static __inline__ void __emovz(register const short unsigned int * __restrict__ a,
- register short unsigned int * __restrict__ b)
-{
- memcpy(b, a, (NI-1) * sizeof(unsigned short));
- b[NI - 1] = 0;
-}
-
-/* Return nonzero if internal format number is a NaN.
- */
-
-static __inline__ int __eiisnan (const short unsigned int *x)
-{
- int i;
-
- if ((x[E] & 0x7fff) == 0x7fff)
- {
- for (i = M + 1; i < NI; i++ )
- {
- if (x[i] != 0)
- return (1);
- }
- }
- return (0);
-}
-
-/* Return nonzero if external format number is zero. */
-
-static __inline__ int
-__eiszero(const short unsigned int * a)
-{
- union {
- long double ld;
- unsigned short sh[8];
- } av;
- av.ld = 0.0;
- memcpy (av.sh, a, 12);
- if (av.ld == 0.0)
- return (1);
- return (0);
-}
-
-/* Return nonzero if internal format number is zero. */
-
-static __inline__ int
-__eiiszero(const short unsigned int * ai)
-{
- int i;
- /* skip the sign word */
- for (i = 1; i < NI - 1; i++ )
- {
- if (ai[i] != 0)
- return (0);
- }
- return (1);
-}
-
-
-/* Return nonzero if internal format number is infinite. */
-
-static __inline__ int
-__eiisinf (const unsigned short *x)
-{
-#ifdef NANS
- if (__eiisnan (x))
- return (0);
-#endif
- if ((x[E] & 0x7fff) == 0x7fff)
- return (1);
- return (0);
-}
-
-/*
-; Compare significands of numbers in internal format.
-; Guard words are included in the comparison.
-;
-; unsigned short a[NI], b[NI];
-; cmpm( a, b );
-;
-; for the significands:
-; returns +1 if a > b
-; 0 if a == b
-; -1 if a < b
-*/
-static __inline__ int __ecmpm(register const short unsigned int * __restrict__ a,
- register const short unsigned int * __restrict__ b)
-{
- int i;
-
- a += M; /* skip up to significand area */
- b += M;
- for (i = M; i < NI; i++)
- {
- if( *a++ != *b++ )
- goto difrnt;
- }
- return(0);
-
- difrnt:
- if ( *(--a) > *(--b) )
- return (1);
- else
- return (-1);
-}
-
-
-/*
-; Shift significand down by 1 bit
-*/
-
-static __inline__ void __eshdn1(register short unsigned int *x)
-{
- register unsigned short bits;
- int i;
-
- x += M; /* point to significand area */
-
- bits = 0;
- for (i = M; i < NI; i++ )
- {
- if (*x & 1)
- bits |= 1;
- *x >>= 1;
- if (bits & 2)
- *x |= 0x8000;
- bits <<= 1;
- ++x;
- }
-}
-
-/*
-; Shift significand up by 1 bit
-*/
-
-static __inline__ void __eshup1(register short unsigned int *x)
-{
- register unsigned short bits;
- int i;
-
- x += NI-1;
- bits = 0;
-
- for (i = M; i < NI; i++)
- {
- if (*x & 0x8000)
- bits |= 1;
- *x <<= 1;
- if (bits & 2)
- *x |= 1;
- bits <<= 1;
- --x;
- }
-}
-
-
-/*
-; Shift significand down by 8 bits
-*/
-
-static __inline__ void __eshdn8(register short unsigned int *x)
-{
- register unsigned short newbyt, oldbyt;
- int i;
-
- x += M;
- oldbyt = 0;
- for (i = M; i < NI; i++)
- {
- newbyt = *x << 8;
- *x >>= 8;
- *x |= oldbyt;
- oldbyt = newbyt;
- ++x;
- }
-}
-
-/*
-; Shift significand up by 8 bits
-*/
-
-static __inline__ void __eshup8(register short unsigned int *x)
-{
- int i;
- register unsigned short newbyt, oldbyt;
-
- x += NI - 1;
- oldbyt = 0;
-
- for (i = M; i < NI; i++)
- {
- newbyt = *x >> 8;
- *x <<= 8;
- *x |= oldbyt;
- oldbyt = newbyt;
- --x;
- }
-}
-
-/*
-; Shift significand up by 16 bits
-*/
-
-static __inline__ void __eshup6(register short unsigned int *x)
-{
- int i;
- register unsigned short *p;
-
- p = x + M;
- x += M + 1;
-
- for (i = M; i < NI - 1; i++)
- *p++ = *x++;
-
- *p = 0;
-}
-
-/*
-; Shift significand down by 16 bits
-*/
-
-static __inline__ void __eshdn6(register short unsigned int *x)
-{
- int i;
- register unsigned short *p;
-
- x += NI - 1;
- p = x + 1;
-
- for (i = M; i < NI - 1; i++)
- *(--p) = *(--x);
-
- *(--p) = 0;
-}
-
-/*
-; Add significands
-; x + y replaces y
-*/
-
-static __inline__ void __enan_64(unsigned short* nanptr)
-{
- int i;
- for (i = 0; i < 3; i++)
- *nanptr++ = 0;
- *nanptr++ = 0xc000;
- *nanptr++ = 0x7fff;
- *nanptr = 0;
- return;
-}
-
-static __inline__ void __enan_NBITS(unsigned short* nanptr)
-{
- int i;
- for (i = 0; i < NE - 2; i++)
- *nanptr++ = 0;
- *nanptr++ = 0xc000;
- *nanptr = 0x7fff;
- return;
-}
-
-static __inline__ void __enan_NI16(unsigned short* nanptr)
-{
- int i;
- *nanptr++ = 0;
- *nanptr++ = 0x7fff;
- *nanptr++ = 0;
- *nanptr++ = 0xc000;
- for (i = 4; i < NI; i++)
- *nanptr++ = 0;
- return;
-}
-
-#endif /* _CEPHES_EMATH_H */
-
lib/libc/mingw/misc/btowc.c
@@ -19,8 +19,10 @@ wint_t btowc (int c)
{
unsigned char ch = c;
wchar_t wc = WEOF;
- MultiByteToWideChar (___lc_codepage_func(), MB_ERR_INVALID_CHARS,
- (char*)&ch, 1, &wc, 1);
+ if (!MultiByteToWideChar (___lc_codepage_func(), MB_ERR_INVALID_CHARS,
+ (char*)&ch, 1, &wc, 1))
+ return WEOF;
+
return wc;
}
}
lib/libc/mingw/misc/lc_locale_func.c
@@ -2,18 +2,11 @@
#define ___lc_codepage_func __dummy____lc_codepage_func
#include <windows.h>
#include <locale.h>
-#include <msvcrt.h>
#undef __lc_codepage
#undef ___lc_codepage_func
#include "mb_wc_common.h"
-static unsigned int *msvcrt__lc_codepage;
-static unsigned int __cdecl msvcrt___lc_codepage_func(void)
-{
- return *msvcrt__lc_codepage;
-}
-
static unsigned int __cdecl setlocale_codepage_hack(void)
{
/* locale :: "lang[_country[.code_page]]" | ".code_page" */
@@ -21,14 +14,23 @@ static unsigned int __cdecl setlocale_codepage_hack(void)
return cp_str ? atoi(cp_str + 1) : 0;
}
-static unsigned int __cdecl init_codepage_func(void);
-unsigned int (__cdecl *__MINGW_IMP_SYMBOL(___lc_codepage_func))(void) = init_codepage_func;
+#ifndef __LIBMSVCRT_OS__
-unsigned int __cdecl ___lc_codepage_func (void)
+unsigned int (__cdecl *__MINGW_IMP_SYMBOL(___lc_codepage_func))(void) = setlocale_codepage_hack;
+
+#else
+
+#include <msvcrt.h>
+
+static unsigned int *msvcrt__lc_codepage;
+static unsigned int __cdecl msvcrt___lc_codepage_func(void)
{
- return __MINGW_IMP_SYMBOL(___lc_codepage_func) ();
+ return *msvcrt__lc_codepage;
}
+static unsigned int __cdecl init_codepage_func(void);
+unsigned int (__cdecl *__MINGW_IMP_SYMBOL(___lc_codepage_func))(void) = init_codepage_func;
+
static unsigned int __cdecl init_codepage_func(void)
{
HMODULE msvcrt = __mingw_get_msvcrt_handle();
@@ -48,3 +50,10 @@ static unsigned int __cdecl init_codepage_func(void)
return (__MINGW_IMP_SYMBOL(___lc_codepage_func) = func)();
}
+
+#endif
+
+unsigned int __cdecl ___lc_codepage_func(void)
+{
+ return __MINGW_IMP_SYMBOL(___lc_codepage_func)();
+}
lib/libc/mingw/misc/mingw_wcstod.c
@@ -1,4 +1,7 @@
#include <stdio.h>
+#include <float.h>
+#include <errno.h>
+#include <math.h>
extern long double __cdecl
__mingw_wcstold (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr);
@@ -9,7 +12,20 @@ __mingw_wcstod (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndP
double __cdecl
__mingw_wcstod (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr)
{
- return (double) __mingw_wcstold (_Str, _EndPtr);
+ long double ret = __mingw_wcstold (_Str, _EndPtr);
+ if (isfinite(ret)) {
+ /* Check for cases that aren't out of range for long doubles, but that are
+ * for doubles. */
+ if (ret > DBL_MAX)
+ errno = ERANGE;
+ else if (ret < -DBL_MAX)
+ errno = ERANGE;
+ else if (ret > 0 && ret < DBL_MIN)
+ errno = ERANGE;
+ else if (ret < 0 && ret > -DBL_MIN)
+ errno = ERANGE;
+ }
+ return ret;
}
lib/libc/mingw/misc/mingw_wcstold.c
@@ -1,32 +1,74 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+/* Wide char wrapper for strtold
+ * Revision history:
+ * 6 Nov 2002 Initial version.
+ * 25 Aug 2006 Don't use strtold internal functions.
+ *
+ * Contributor: Danny Smith <dannysmith@users.sourceforege.net>
+ */
+
+ /* This routine has been placed in the public domain.*/
+
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
#include <windows.h>
-#include <stdio.h>
+#include <locale.h>
+#include <wchar.h>
+#include <stdlib.h>
+#include <string.h>
+#include <mbstring.h>
-long double __cdecl
-__mingw_wcstold (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr);
+#include "mb_wc_common.h"
-long double __cdecl
-__mingw_wcstold (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr)
+long double __mingw_wcstold (const wchar_t * __restrict__ wcs, wchar_t ** __restrict__ wcse)
{
- long double r;
- char *n, *ep = NULL;
- size_t l, l2;
-
- l = WideCharToMultiByte(CP_UTF8, 0, _Str, -1, NULL, 0, NULL, NULL);
- n = alloca (l + 1);
- if (l != 0) WideCharToMultiByte (CP_UTF8, 0, _Str, -1, n, l, NULL, NULL);
- n[l] = 0;
- r = __mingw_strtold (n, &ep);
- if (ep != NULL)
- {
- *ep = 0;
- l2 = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, n, -1, NULL, 0);
- if (l2 > 0)
- l2 -= 1; /* Remove zero terminator from length. */
- if (_EndPtr)
- *_EndPtr = (wchar_t *) &_Str[l2];
- }
- else if (_EndPtr)
- *_EndPtr = NULL;
- return r;
-}
+ char * cs;
+ char * cse;
+ unsigned int i;
+ long double ret;
+ const unsigned int cp = ___lc_codepage_func();
+
+ /* Allocate enough room for (possibly) mb chars */
+ cs = (char *) malloc ((wcslen(wcs)+1) * MB_CUR_MAX);
+ if (cp == 0) /* C locale */
+ {
+ for (i = 0; (wcs[i] != 0) && wcs[i] <= 255; i++)
+ cs[i] = (char) wcs[i];
+ cs[i] = '\0';
+ }
+ else
+ {
+ int nbytes = -1;
+ int mb_len = 0;
+ /* loop through till we hit null or invalid character */
+ for (i = 0; (wcs[i] != 0) && (nbytes != 0); i++)
+ {
+ nbytes = WideCharToMultiByte(cp, WC_COMPOSITECHECK | WC_SEPCHARS,
+ wcs + i, 1, cs + mb_len, MB_CUR_MAX,
+ NULL, NULL);
+ mb_len += nbytes;
+ }
+ cs[mb_len] = '\0';
+ }
+
+ ret = strtold (cs, &cse);
+
+ if (wcse)
+ {
+ /* Make sure temp mbstring has 0 at cse. */
+ *cse = '\0';
+ i = MultiByteToWideChar (cp, MB_ERR_INVALID_CHARS, cs, -1, NULL, 0);
+ if (i > 0)
+ i -= 1; /* Remove zero terminator from length. */
+ *wcse = (wchar_t *) wcs + i;
+ }
+ free (cs);
+
+ return ret;
+}
lib/libc/mingw/misc/seterrno.c
@@ -8,11 +8,17 @@
errno_t __cdecl _set_errno (int _Value)
{
errno = _Value;
- return errno;
+ return 0;
}
errno_t __cdecl _get_errno (int *_Value)
{
- if(_Value) *_Value=errno;
- return errno;
+ if(!_Value)
+ {
+ errno = EINVAL;
+ return EINVAL;
+ }
+
+ *_Value = errno;
+ return 0;
}
lib/libc/mingw/misc/setjmp.S
@@ -50,6 +50,8 @@ __MINGW_USYMBOL(__intrinsic_setjmpex):
movq %r15,0x48(%rcx) /* jmp_buf->R15 */
movq (%rsp),%rax
movq %rax,0x50(%rcx) /* jmp_buf->Rip */
+ stmxcsr 0x58(%rcx) /* jmp_buf->MxCsr */
+ fnstcw 0x5c(%rcx) /* jmp_buf->FpCsr */
movdqa %xmm6,0x60(%rcx) /* jmp_buf->Xmm6 */
movdqa %xmm7,0x70(%rcx) /* jmp_buf->Xmm7 */
movdqa %xmm8,0x80(%rcx) /* jmp_buf->Xmm8 */
lib/libc/mingw/misc/strtold.c
@@ -1,398 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-
-#include "math/cephes_emath.h"
-
-#if NE == 10
-/* 1.0E0 */
-static const unsigned short __eone[NE] = {
- 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x3fff,
-};
-#else
-static const unsigned short __eone[NE] = {
- 0, 0000000,0000000,0000000,0100000,0x3fff,
-};
-#endif
-
-#if NE == 10
-static const unsigned short __etens[NTEN + 1][NE] =
-{
- {0x6576, 0x4a92, 0x804a, 0x153f,
- 0xc94c, 0x979a, 0x8a20, 0x5202, 0xc460, 0x7525,}, /* 10**4096 */
- {0x6a32, 0xce52, 0x329a, 0x28ce,
- 0xa74d, 0x5de4, 0xc53d, 0x3b5d, 0x9e8b, 0x5a92,}, /* 10**2048 */
- {0x526c, 0x50ce, 0xf18b, 0x3d28,
- 0x650d, 0x0c17, 0x8175, 0x7586, 0xc976, 0x4d48,},
- {0x9c66, 0x58f8, 0xbc50, 0x5c54,
- 0xcc65, 0x91c6, 0xa60e, 0xa0ae, 0xe319, 0x46a3,},
- {0x851e, 0xeab7, 0x98fe, 0x901b,
- 0xddbb, 0xde8d, 0x9df9, 0xebfb, 0xaa7e, 0x4351,},
- {0x0235, 0x0137, 0x36b1, 0x336c,
- 0xc66f, 0x8cdf, 0x80e9, 0x47c9, 0x93ba, 0x41a8,},
- {0x50f8, 0x25fb, 0xc76b, 0x6b71,
- 0x3cbf, 0xa6d5, 0xffcf, 0x1f49, 0xc278, 0x40d3,},
- {0x0000, 0x0000, 0x0000, 0x0000,
- 0xf020, 0xb59d, 0x2b70, 0xada8, 0x9dc5, 0x4069,},
- {0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0400, 0xc9bf, 0x8e1b, 0x4034,},
- {0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x2000, 0xbebc, 0x4019,},
- {0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x9c40, 0x400c,},
- {0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0xc800, 0x4005,},
- {0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0x4002,}, /* 10**1 */
-};
-#else
-static const unsigned short __etens[NTEN+1][NE] = {
- {0xc94c,0x979a,0x8a20,0x5202,0xc460,0x7525,},/* 10**4096 */
- {0xa74d,0x5de4,0xc53d,0x3b5d,0x9e8b,0x5a92,},/* 10**2048 */
- {0x650d,0x0c17,0x8175,0x7586,0xc976,0x4d48,},
- {0xcc65,0x91c6,0xa60e,0xa0ae,0xe319,0x46a3,},
- {0xddbc,0xde8d,0x9df9,0xebfb,0xaa7e,0x4351,},
- {0xc66f,0x8cdf,0x80e9,0x47c9,0x93ba,0x41a8,},
- {0x3cbf,0xa6d5,0xffcf,0x1f49,0xc278,0x40d3,},
- {0xf020,0xb59d,0x2b70,0xada8,0x9dc5,0x4069,},
- {0x0000,0x0000,0x0400,0xc9bf,0x8e1b,0x4034,},
- {0x0000,0x0000,0x0000,0x2000,0xbebc,0x4019,},
- {0x0000,0x0000,0x0000,0x0000,0x9c40,0x400c,},
- {0x0000,0x0000,0x0000,0x0000,0xc800,0x4005,},
- {0x0000,0x0000,0x0000,0x0000,0xa000,0x4002,}, /* 10**1 */
-};
-#endif
-
-int __asctoe64(const char * __restrict__ ss, short unsigned int * __restrict__ y)
-{
- unsigned short yy[NI], xt[NI], tt[NI];
- int esign, decflg, nexp, expo, lost;
- int k, c;
- int valid_lead_string = 0;
- int have_non_zero_mant = 0;
- int prec = 0;
- /* int trail = 0; */
- int lexp;
- unsigned short nsign = 0;
- const unsigned short *p;
- char *sp, *lstr;
- char *s;
-
- const char dec_sym = *(localeconv ()->decimal_point);
-
- int lenldstr = 0;
-
- /* Copy the input string. */
- c = strlen (ss) + 2;
- lstr = (char *) alloca (c);
- s = (char *) ss;
- while( isspace ((int)(unsigned char)*s)) /* skip leading spaces */
- {
- ++s;
- ++lenldstr;
- }
- sp = lstr;
- for (k = 0; k < c; k++)
- {
- if ((*sp++ = *s++) == '\0')
- break;
- }
- *sp = '\0';
- s = lstr;
-
- if (*s == '-')
- {
- nsign = 0xffff;
- ++s;
- }
- else if (*s == '+')
- {
- ++s;
- }
-
- if (_strnicmp("INF", s , 3) == 0)
- {
- valid_lead_string = 1;
- s += 3;
- if ( _strnicmp ("INITY", s, 5) == 0)
- s += 5;
- __ecleaz(yy);
- yy[E] = 0x7fff; /* infinity */
- goto aexit;
- }
- else if(_strnicmp ("NAN", s, 3) == 0)
- {
- valid_lead_string = 1;
- s += 3;
- __enan_NI16( yy );
- goto aexit;
- }
-
- /* FIXME: Handle case of strtold ("NAN(n_char_seq)",endptr) */
-
- /* Now get some digits. */
- lost = 0;
- decflg = 0;
- nexp = 0;
- expo = 0;
- __ecleaz( yy );
-
- /* Ignore leading zeros */
- while (*s == '0')
- {
- valid_lead_string = 1;
- s++;
- }
-
-nxtcom:
-
- k = *s - '0';
- if ((k >= 0) && (k <= 9))
- {
-#if 0
-/* The use of a special char as a flag for trailing zeroes causes problems when input
- actually contains the char */
-/* Identify and strip trailing zeros after the decimal point. */
- if ((trail == 0) && (decflg != 0))
- {
- sp = s;
- while ((*sp >= '0') && (*sp <= '9'))
- ++sp;
- --sp;
- while (*sp == '0')
- {
- *sp-- = (char)-1;
- trail++;
- }
- if( *s == (char)-1 )
- goto donchr;
- }
-#endif
-
-/* If enough digits were given to more than fill up the yy register,
- * continuing until overflow into the high guard word yy[2]
- * guarantees that there will be a roundoff bit at the top
- * of the low guard word after normalization.
- */
- if (yy[2] == 0)
- {
- if( decflg )
- nexp += 1; /* count digits after decimal point */
- __eshup1( yy ); /* multiply current number by 10 */
- __emovz( yy, xt );
- __eshup1( xt );
- __eshup1( xt );
- __eaddm( xt, yy );
- __ecleaz( xt );
- xt[NI-2] = (unsigned short )k;
- __eaddm( xt, yy );
- }
- else
- {
- /* Mark any lost non-zero digit. */
- lost |= k;
- /* Count lost digits before the decimal point. */
- if (decflg == 0)
- nexp -= 1;
- }
- have_non_zero_mant |= k;
- prec ++;
- /* goto donchr; */
- }
- else if (*s == dec_sym)
- {
- if( decflg )
- goto daldone;
- ++decflg;
- }
- else if ((*s == 'E') || (*s == 'e') )
- {
- if (prec || valid_lead_string)
- goto expnt;
- else
- goto daldone;
- }
-#if 0
- else if (*s == (char)-1)
- goto donchr;
-#endif
- else /* an invalid char */
- goto daldone;
-
- /* donchr: */
- ++s;
- goto nxtcom;
-
-/* Exponent interpretation */
-expnt:
-
- esign = 1;
- expo = 0;
- /* Save position in case we need to fall back. */
- sp = s;
- ++s;
- /* check for + or - */
- if (*s == '-')
- {
- esign = -1;
- ++s;
- }
- if (*s == '+')
- ++s;
-
- /* Check for valid exponent. */
- if (!(*s >= '0' && *s <= '9'))
- {
- s = sp;
- goto daldone;
- }
-
- while ((*s >= '0') && (*s <= '9'))
- {
- /* Stop modifying exp if we are going to overflow anyway,
- but keep parsing the string. */
- if (expo < 4978)
- {
- expo *= 10;
- expo += *s - '0';
- }
- s++;
- }
-
- if (esign < 0)
- expo = -expo;
-
- if (expo > 4977) /* maybe overflow */
- {
- __ecleaz(yy);
- if (have_non_zero_mant)
- yy[E] = 0x7fff;
- goto aexit;
- }
- else if (expo < -4977) /* underflow */
- {
- __ecleaz(yy);
- goto aexit;
- }
-
-daldone:
-
- nexp = expo - nexp;
-
- /* Pad trailing zeros to minimize power of 10, per IEEE spec. */
- while ((nexp > 0) && (yy[2] == 0))
- {
- __emovz( yy, xt );
- __eshup1( xt );
- __eshup1( xt );
- __eaddm( yy, xt );
- __eshup1( xt );
- if (xt[2] != 0)
- break;
- nexp -= 1;
- __emovz( xt, yy );
- }
- if ((k = __enormlz(yy)) > NBITS)
- {
- __ecleaz(yy);
- goto aexit;
- }
- lexp = (EXONE - 1 + NBITS) - k;
- __emdnorm( yy, lost, 0, lexp, 64, NBITS );
- /* convert to external format */
-
- /* Multiply by 10**nexp. If precision is 64 bits,
- * the maximum relative error incurred in forming 10**n
- * for 0 <= n <= 324 is 8.2e-20, at 10**180.
- * For 0 <= n <= 999, the peak relative error is 1.4e-19 at 10**947.
- * For 0 >= n >= -999, it is -1.55e-19 at 10**-435.
- */
- lexp = yy[E];
- if (nexp == 0)
- {
- k = 0;
- goto expdon;
- }
- esign = 1;
- if (nexp < 0)
- {
- nexp = -nexp;
- esign = -1;
- if (nexp > 4096)
- { /* Punt. Can't handle this without 2 divides. */
- __emovi( __etens[0], tt );
- lexp -= tt[E];
- k = __edivm( tt, yy );
- lexp += EXONE;
- nexp -= 4096;
- }
- }
- p = &__etens[NTEN][0];
- __emov( __eone, xt );
- expo = 1;
- do
- {
- if (expo & nexp)
- __emul( p, xt, xt );
- p -= NE;
- expo = expo + expo;
- }
- while (expo <= MAXP);
-
- __emovi( xt, tt );
- if (esign < 0)
- {
- lexp -= tt[E];
- k = __edivm( tt, yy );
- lexp += EXONE;
- }
- else
- {
- lexp += tt[E];
- k = __emulm( tt, yy );
- lexp -= EXONE - 1;
- }
-
-expdon:
-
- /* Round and convert directly to the destination type */
-
- __emdnorm( yy, k, 0, lexp, 64, 64 );
-
-aexit:
-
- yy[0] = nsign;
-
- __toe64( yy, y );
-
- /* Check for overflow, undeflow */
- if (have_non_zero_mant &&
- (*((long double*) y) == 0.0L || isinf (*((long double*) y))))
- errno = ERANGE;
-
- if (prec || valid_lead_string)
- return (lenldstr + (s - lstr));
-
- return 0;
-}
-
-
-long double strtold (const char * __restrict__ s, char ** __restrict__ se)
-{
- int lenldstr;
- union
- {
- unsigned short int us[6];
- long double ld;
- } xx = {{0}};
-
- lenldstr = __asctoe64( s, xx.us);
- if (se)
- *se = (char*)s + lenldstr;
-
- return xx.ld;
-}
-
lib/libc/mingw/misc/wcstold.c
@@ -3,72 +3,10 @@
* This file is part of the mingw-w64 runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
-/* Wide char wrapper for strtold
- * Revision history:
- * 6 Nov 2002 Initial version.
- * 25 Aug 2006 Don't use strtold internal functions.
- *
- * Contributor: Danny Smith <dannysmith@users.sourceforege.net>
- */
-
- /* This routine has been placed in the public domain.*/
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#include <locale.h>
-#include <wchar.h>
#include <stdlib.h>
-#include <string.h>
-#include <mbstring.h>
-
-#include "mb_wc_common.h"
long double wcstold (const wchar_t * __restrict__ wcs, wchar_t ** __restrict__ wcse)
{
- char * cs;
- char * cse;
- unsigned int i;
- long double ret;
- const unsigned int cp = ___lc_codepage_func();
-
- /* Allocate enough room for (possibly) mb chars */
- cs = (char *) malloc ((wcslen(wcs)+1) * MB_CUR_MAX);
-
- if (cp == 0) /* C locale */
- {
- for (i = 0; (wcs[i] != 0) && wcs[i] <= 255; i++)
- cs[i] = (char) wcs[i];
- cs[i] = '\0';
- }
- else
- {
- int nbytes = -1;
- int mb_len = 0;
- /* loop through till we hit null or invalid character */
- for (i = 0; (wcs[i] != 0) && (nbytes != 0); i++)
- {
- nbytes = WideCharToMultiByte(cp, WC_COMPOSITECHECK | WC_SEPCHARS,
- wcs + i, 1, cs + mb_len, MB_CUR_MAX,
- NULL, NULL);
- mb_len += nbytes;
- }
- cs[mb_len] = '\0';
- }
-
- ret = strtold (cs, &cse);
-
- if (wcse)
- {
- /* Make sure temp mbstring has 0 at cse. */
- *cse = '\0';
- i = MultiByteToWideChar (cp, MB_ERR_INVALID_CHARS, cs, -1, NULL, 0);
- if (i > 0)
- i -= 1; /* Remove zero terminator from length. */
- *wcse = (wchar_t *) wcs + i;
- }
- free (cs);
-
- return ret;
+ return __mingw_wcstold(wcs, wcse);
}
lib/libc/mingw/secapi/vsprintf_s.c
@@ -33,13 +33,8 @@ vsprintf_s (char *_DstBuf, size_t _Size, const char *_Format, va_list _ArgList)
return _stub (_DstBuf, _Size, _Format, _ArgList);
}
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wimplicit-function-declaration"
-
static int __cdecl
_int_vsprintf_s (char *_DstBuf, size_t _Size, const char *_Format, va_list _ArgList)
{
return __ms_vsnprintf (_DstBuf, _Size, _Format, _ArgList);
}
-
-#pragma clang diagnostic pop
lib/libc/mingw/stdio/mingw_pformat.c
@@ -212,7 +212,7 @@ typedef enum
PFORMAT_SET_PRECISION,
PFORMAT_END
} __pformat_state_t;
-
+
typedef enum
{
/* Argument length classification indices...
@@ -289,8 +289,8 @@ typedef struct
int precision;
int rplen;
wchar_t rpchr;
- int thousands_chr_len;
- wchar_t thousands_chr;
+ int thousands_chr_len;
+ wchar_t thousands_chr;
int count;
int quota;
int expmin;
@@ -787,7 +787,7 @@ while( value.__pformat_ullong_t )
{
/* decomposing it into its constituent decimal digits,
* in order from least significant to most significant, using
- * the local buffer as a LIFO queue in which to store them.
+ * the local buffer as a LIFO queue in which to store them.
*/
if (p != buf && (stream->flags & PFORMAT_GROUPED) != 0 && stream->thousands_chr != 0
&& ((p - buf) % 4) == 3)
@@ -833,7 +833,7 @@ while( value.__pformat_ullong_t )
* to the left of the displayed value, with zeros.
*/
while( stream->width-- > 0 )
- *p++ = '0';
+ *p++ = '0';
else if( (stream->flags & PFORMAT_LJUSTIFY) == 0 )
/*
@@ -842,7 +842,7 @@ while( value.__pformat_ullong_t )
* the value appears right justified within the output field.
*/
while( stream->width-- > 0 )
- __pformat_putc( '\x20', stream );
+ __pformat_putc( '\x20', stream );
}
if( stream->flags & PFORMAT_NEGATIVE )
@@ -943,7 +943,7 @@ void __pformat_xint( int fmt, __pformat_intarg_t value, __pformat_t *stream )
*/
while( width-- > 0 )
*p++ = '0';
-
+
else if( (fmt == 'o') && (stream->flags & PFORMAT_HASHED) )
/*
* The field width specified for minimum `precision' has already
@@ -1048,38 +1048,57 @@ typedef union
*/
#include "../gdtoa/gdtoa.h"
-static
-char *__pformat_cvt( int mode, __pformat_fpreg_t x, int nd, int *dp, int *sign )
+static __pformat_fpreg_t init_fpreg_ldouble( long double val )
{
- /* Helper function, derived from David M. Gay's `g_xfmt()', calling
- * his `__gdtoa()' function in a manner to provide extended precision
- * replacements for `ecvt()' and `fcvt()'.
- */
- int k; unsigned int e = 0; char *ep;
- static FPI fpi = { 64, 1-16383-64+1, 32766-16383-64+1, FPI_Round_near, 0, 14 /* Int_max */ };
-
+ __pformat_fpreg_t x;
+ x.__pformat_fpreg_ldouble_t = val;
+
if( sizeof( double ) == sizeof( long double ) )
{
- /* The caller has written into x.__pformat_fpreg_ldouble_t, which
- * actually isn't laid out in the way the rest of the union expects it.
+ /* Here, __pformat_fpreg_t expects to be initialized with a 80 bit long
+ * double, but this platform doesn't have long doubles that differ from
+ * regular 64 bit doubles. Therefore manually convert the 64 bit float
+ * value to an 80 bit float value.
*/
int exp = (x.__pformat_fpreg_mantissa >> 52) & 0x7ff;
unsigned long long mant = x.__pformat_fpreg_mantissa & 0x000fffffffffffffULL;
- int integer = exp ? 1 : 0;
+ int topbit = exp ? 1 : 0;
int signbit = x.__pformat_fpreg_mantissa >> 63;
- k = __fpclassify( x.__pformat_fpreg_double_t );
-
if (exp == 0x7ff)
exp = 0x7fff;
else if (exp != 0)
exp = exp - 1023 + 16383;
- x.__pformat_fpreg_mantissa = (mant << 11) | ((unsigned long long)integer << 63);
+ else if (mant != 0) {
+ /* Denormal when stored as a 64 bit double, but becomes a normal when
+ * converted to 80 bit long double form. */
+ exp = 1 - 1023 + 16383;
+ while (!(mant & 0x0010000000000000ULL)) {
+ /* Normalize the mantissa. */
+ mant <<= 1;
+ exp--;
+ }
+ topbit = 1; /* The top bit, which is implicit in the 64 bit form. */
+ }
+ x.__pformat_fpreg_mantissa = (mant << 11) | ((unsigned long long)topbit << 63);
x.__pformat_fpreg_exponent = exp | (signbit << 15);
}
- else
- k = __fpclassifyl( x.__pformat_fpreg_ldouble_t );
+ return x;
+}
+
+static
+char *__pformat_cvt( int mode, long double val, int nd, int *dp, int *sign )
+{
+ /* Helper function, derived from David M. Gay's `g_xfmt()', calling
+ * his `__gdtoa()' function in a manner to provide extended precision
+ * replacements for `ecvt()' and `fcvt()'.
+ */
+ int k; unsigned int e = 0; char *ep;
+ static FPI fpi = { 64, 1-16383-64+1, 32766-16383-64+1, FPI_Round_near, 0, 14 /* Int_max */ };
+ __pformat_fpreg_t x = init_fpreg_ldouble( val );
+
+ k = __fpclassifyl( val );
/* Classify the argument into an appropriate `__gdtoa()' category...
*/
@@ -1130,8 +1149,7 @@ char *__pformat_ecvt( long double x, int precision, int *dp, int *sign )
/* A convenience wrapper for the above...
* it emulates `ecvt()', but takes a `long double' argument.
*/
- __pformat_fpreg_t z; z.__pformat_fpreg_ldouble_t = x;
- return __pformat_cvt( 2, z, precision, dp, sign );
+ return __pformat_cvt( 2, x, precision, dp, sign );
}
static
@@ -1140,8 +1158,7 @@ char *__pformat_fcvt( long double x, int precision, int *dp, int *sign )
/* A convenience wrapper for the above...
* it emulates `fcvt()', but takes a `long double' argument.
*/
- __pformat_fpreg_t z; z.__pformat_fpreg_ldouble_t = x;
- return __pformat_cvt( 3, z, precision, dp, sign );
+ return __pformat_cvt( 3, x, precision, dp, sign );
}
/* The following are required, to clean up the `__gdtoa()' memory pool,
@@ -1218,7 +1235,7 @@ void __pformat_emit_radix_point( __pformat_t *stream )
* establish a multibyte to `wchar_t' converter...
*/
int len; wchar_t rpchr; mbstate_t state;
-
+
/* Initialise the conversion state...
*/
memset( &state, 0, sizeof( state ) );
@@ -1259,7 +1276,7 @@ void __pformat_emit_radix_point( __pformat_t *stream )
*/
char *p = buf;
while( len-- > 0 )
- __pformat_putc( *p++, stream );
+ __pformat_putc( *p++, stream );
}
else
@@ -1290,7 +1307,7 @@ void __pformat_emit_numeric_value( int c, __pformat_t *stream )
{
wchar_t wcs;
if ((wcs = stream->thousands_chr) != 0)
- __pformat_wputchars (&wcs, 1, stream);
+ __pformat_wputchars (&wcs, 1, stream);
}
else
/* and passing all other characters through, unmodified.
@@ -1468,8 +1485,8 @@ void __pformat_emit_float( int sign, char *value, int len, __pformat_t *stream )
__pformat_putc( *value ? *value++ : '0', stream);
--len;
if (len != 0 && (stream->flags & PFORMAT_GROUPED) != 0 && stream->thousands_chr != 0
- && (len % 3) == 0)
- __pformat_wputchars (&stream->thousands_chr, 1, stream);
+ && (len % 3) == 0)
+ __pformat_wputchars (&stream->thousands_chr, 1, stream);
}
while (len > 0);
}
@@ -1539,7 +1556,7 @@ void __pformat_emit_efloat( int sign, char *value, int e, __pformat_t *stream )
*/
if( stream->width > (exp_width += 2) )
stream->width -= exp_width;
-
+
else
/* ignoring the field width specification, if insufficient.
*/
@@ -1587,7 +1604,7 @@ void __pformat_float( long double x, __pformat_t *stream )
* output in fixed point format.
*/
int sign, intlen; char *value;
-
+
/* Establish the precision for the displayed value, defaulting to six
* digits following the decimal point, if not explicitly specified.
*/
@@ -1847,7 +1864,7 @@ void __pformat_efloat( long double x, __pformat_t *stream )
* output in floating point format.
*/
int sign, intlen; char *value;
-
+
/* Establish the precision for the displayed value, defaulting to six
* digits following the decimal point, if not explicitly specified.
*/
@@ -1885,7 +1902,7 @@ void __pformat_gfloat( long double x, __pformat_t *stream )
* fixed or floating point format.
*/
int sign, intlen; char *value;
-
+
/* Establish the precision for the displayed value, defaulting to
* six significant digits, if not explicitly specified...
*/
@@ -1923,7 +1940,7 @@ void __pformat_gfloat( long double x, __pformat_t *stream )
* the balance following it...
*/
stream->precision -= intlen;
-
+
else
/* The `#' flag is not in effect...
* Here we adjust the precision to accommodate all digits which
@@ -1932,12 +1949,12 @@ void __pformat_gfloat( long double x, __pformat_t *stream )
*/
if( ((stream->precision = strlen( value ) - intlen) < 0)
/*
- * This may require a compensating adjustment to the field
- * width, to accommodate significant trailing zeros, which
- * precede the radix point...
- */
+ * This may require a compensating adjustment to the field
+ * width, to accommodate significant trailing zeros, which
+ * precede the radix point...
+ */
&& (stream->width > 0) )
- stream->width += stream->precision;
+ stream->width += stream->precision;
/* Now, we format the result as any other fixed point value.
*/
@@ -1996,6 +2013,17 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream )
char buf[18 + 6], *p = buf;
__pformat_intarg_t exponent; short exp_width = 2;
+ if (value.__pformat_fpreg_mantissa != 0 ||
+ value.__pformat_fpreg_exponent != 0)
+ {
+ /* Reduce the exponent since the leading digit emited will start at
+ * the 4th bit from the highest order bit instead, the later being
+ * the leading digit of the floating point. Don't do this adjustment
+ * if the value is an actual zero.
+ */
+ value.__pformat_fpreg_exponent -= 3;
+ }
+
/* The mantissa field of the argument value representation can
* accommodate at most 16 hexadecimal digits, of which one will
* be placed before the radix point, leaving at most 15 digits
@@ -2010,15 +2038,7 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream )
* for exactly one digit discarded, shifting 4 bits per
* digit, with up to 14 additional digits, to consume the
* full availability of 15 precision digits).
- *
- * However, before we perform the rounding operation, we
- * normalise the mantissa, shifting it to the left by as many
- * bit positions may be necessary, until its highest order bit
- * is set, thus preserving the maximum number of bits in the
- * rounded result as possible.
- */
- while( value.__pformat_fpreg_mantissa < (LLONG_MAX + 1ULL) )
- value.__pformat_fpreg_mantissa <<= 1;
+ */
/* We then shift the mantissa one bit position back to the
* right, to guard against possible overflow when the rounding
@@ -2041,11 +2061,15 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream )
value.__pformat_fpreg_mantissa <<= 1;
else
+ {
/* Otherwise the rounding adjustment would have overflowed,
* so the carry has already filled the vacated bit; the effect
- * of this is equivalent to an increment of the exponent.
+ * of this is equivalent to an increment of the exponent. We will
+ * discard a whole digit to match glibc's behavior.
*/
- value.__pformat_fpreg_exponent++;
+ value.__pformat_fpreg_exponent += 4;
+ value.__pformat_fpreg_mantissa >>= 3;
+ }
/* We now complete the rounding to the required precision, by
* shifting the unwanted digits out, from the right hand end of
@@ -2054,71 +2078,63 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream )
value.__pformat_fpreg_mantissa >>= 4 * (15 - stream->precision);
}
- /* Encode the significant digits of the mantissa in hexadecimal
- * ASCII notation, ready for transfer to the output stream...
+ /* Don't print anything if mantissa is zero unless we have to satisfy
+ * desired precision.
*/
- while( value.__pformat_fpreg_mantissa )
+ if( value.__pformat_fpreg_mantissa || stream->precision > 0 )
{
- /* taking the rightmost digit in each pass...
+ /* Encode the significant digits of the mantissa in hexadecimal
+ * ASCII notation, ready for transfer to the output stream...
*/
- unsigned c = value.__pformat_fpreg_mantissa & 0xF;
- if( c == value.__pformat_fpreg_mantissa)
+ for( int i=stream->precision >= 15 || stream->precision < 0 ? 16 : stream->precision + 1; i>0; --i )
{
- /* inserting the radix point, when we reach the last,
- * (i.e. the most significant digit), unless we found no
- * less significant digits, with no mandatory radix point
- * inclusion, and no additional required precision...
+ /* taking the rightmost digit in each pass...
*/
- if( (p > buf)
- || (stream->flags & PFORMAT_HASHED) || (stream->precision > 0) )
+ unsigned c = value.__pformat_fpreg_mantissa & 0xF;
+ if( i == 1 )
{
- /*
- * Internally, we represent the radix point as an ASCII '.';
- * we will replace it with any locale specific alternative,
- * at the time of transfer to the ultimate destination.
- */
- *p++ = '.';
+ /* inserting the radix point, when we reach the last,
+ * (i.e. the most significant digit), unless we found no
+ * less significant digits, with no mandatory radix point
+ * inclusion, and no additional required precision...
+ */
+ if( (p > buf)
+ || (stream->flags & PFORMAT_HASHED) || (stream->precision > 0) )
+ {
+ /*
+ * Internally, we represent the radix point as an ASCII '.';
+ * we will replace it with any locale specific alternative,
+ * at the time of transfer to the ultimate destination.
+ */
+ *p++ = '.';
+ }
}
- /* If the most significant hexadecimal digit of the encoded
- * output value is greater than one, then the indicated value
- * will appear too large, by an additional binary exponent
- * corresponding to the number of higher order bit positions
- * which it occupies...
- */
- while( value.__pformat_fpreg_mantissa > 1 )
+ else if( stream->precision > 0 )
+ /*
+ * we have not yet fulfilled the desired precision,
+ * and we have not yet found the most significant digit,
+ * so account for the current digit, within the field
+ * width required to meet the specified precision.
+ */
+ stream->precision--;
+
+ if( (c > 0) || (p > buf) || (stream->precision >= 0) )
{
- /* so reduce the exponent value to compensate...
- */
- value.__pformat_fpreg_exponent--;
- value.__pformat_fpreg_mantissa >>= 1;
+ /*
+ * Ignoring insignificant trailing zeros, (unless required to
+ * satisfy specified precision), store the current encoded digit
+ * into the pending output buffer, in LIFO order, and using the
+ * appropriate case for digits in the `A'..`F' range.
+ */
+ *p++ = c > 9 ? (c - 10 + 'A') | (stream->flags & PFORMAT_XCASE) : c + '0';
}
- }
-
- else if( stream->precision > 0 )
- /*
- * we have not yet fulfilled the desired precision,
- * and we have not yet found the most significant digit,
- * so account for the current digit, within the field
- * width required to meet the specified precision.
- */
- stream->precision--;
-
- if( (c > 0) || (p > buf) || (stream->precision >= 0) )
- {
- /*
- * Ignoring insignificant trailing zeros, (unless required to
- * satisfy specified precision), store the current encoded digit
- * into the pending output buffer, in LIFO order, and using the
- * appropriate case for digits in the `A'..`F' range.
+ /* Shift out the current digit, (4-bit logical shift right),
+ * to align the next more significant digit to be extracted,
+ * and encoded in the next pass.
*/
- *p++ = c > 9 ? (c - 10 + 'A') | (stream->flags & PFORMAT_XCASE) : c + '0';
+ value.__pformat_fpreg_mantissa >>= 4;
}
- /* Shift out the current digit, (4-bit logical shift right),
- * to align the next more significant digit to be extracted,
- * and encoded in the next pass.
- */
- value.__pformat_fpreg_mantissa >>= 4;
}
if( p == buf )
@@ -2169,7 +2185,7 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream )
min_width++;
exp_width++;
}
-
+
if( stream->width > min_width )
{
/* When specified field width exceeds the minimum required,
@@ -2180,8 +2196,8 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream )
/* and then emit any required left side padding spaces.
*/
if( (stream->flags & PFORMAT_JUSTIFY) == 0 )
- while( stream->width-- > 0 )
- __pformat_putc( '\x20', stream );
+ while( stream->width-- > 0 )
+ __pformat_putc( '\x20', stream );
}
else
@@ -2215,7 +2231,7 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream )
*/
__pformat_putc( '0', stream );
__pformat_putc( 'X' | (stream->flags & PFORMAT_XCASE), stream );
-
+
/* If the `0' flag is in effect...
* Zero padding, to fill out the field, goes here...
*/
@@ -2259,7 +2275,69 @@ void __pformat_xldouble( long double x, __pformat_t *stream )
* value specified as `long double' type).
*/
unsigned sign_bit = 0;
- __pformat_fpreg_t z; z.__pformat_fpreg_ldouble_t = x;
+ __pformat_fpreg_t z = init_fpreg_ldouble( x );
+
+ /* First check for NaN; it is emitted unsigned...
+ */
+ if( isnan( x ) )
+ __pformat_emit_inf_or_nan( sign_bit, "NaN", stream );
+
+ else
+ { /* Capture the sign bit up-front, so we can show it correctly
+ * even when the argument value is zero or infinite.
+ */
+ if( (sign_bit = (z.__pformat_fpreg_exponent & 0x8000)) != 0 )
+ stream->flags |= PFORMAT_NEGATIVE;
+
+ /* Check for infinity, (positive or negative)...
+ */
+ if( isinf( x ) )
+ /*
+ * displaying the appropriately signed indicator,
+ * when appropriate.
+ */
+ __pformat_emit_inf_or_nan( sign_bit, "Inf", stream );
+
+ else
+ { /* The argument value is a representable number...
+ * extract the effective value of the biased exponent...
+ */
+ z.__pformat_fpreg_exponent &= 0x7FFF;
+ if( z.__pformat_fpreg_exponent == 0 )
+ {
+ /* A biased exponent value of zero means either a
+ * true zero value, if the mantissa field also has
+ * a zero value, otherwise...
+ */
+ if( z.__pformat_fpreg_mantissa != 0 )
+ {
+ /* ...this mantissa represents a subnormal value.
+ */
+ z.__pformat_fpreg_exponent = 1 - 0x3FFF;
+ }
+ }
+ else
+ /* This argument represents a non-zero normal number;
+ * eliminate the bias from the exponent...
+ */
+ z.__pformat_fpreg_exponent -= 0x3FFF;
+
+ /* Finally, hand the adjusted representation off to the
+ * generalised hexadecimal floating point format handler...
+ */
+ __pformat_emit_xfloat( z, stream );
+ }
+ }
+}
+
+static
+void __pformat_xdouble( double x, __pformat_t *stream )
+{
+ /* Handler for `%la' and `%lA' format specifiers, (with argument
+ * value specified as `double' type).
+ */
+ unsigned sign_bit = 0;
+ __pformat_fpreg_t z = init_fpreg_ldouble( (long double)x );
/* First check for NaN; it is emitted unsigned...
*/
@@ -2287,31 +2365,40 @@ void __pformat_xldouble( long double x, __pformat_t *stream )
* extract the effective value of the biased exponent...
*/
z.__pformat_fpreg_exponent &= 0x7FFF;
+
+ /* If the double value was a denormalized number, it might have been renormalized by
+ * the conversion to long double. We will redenormalize it.
+ */
+ if( z.__pformat_fpreg_exponent != 0 && z.__pformat_fpreg_exponent <= (0x3FFF - 0x3FF) )
+ {
+ int shifted = (0x3FFF - 0x3FF) - z.__pformat_fpreg_exponent + 1;
+ z.__pformat_fpreg_mantissa >>= shifted;
+ z.__pformat_fpreg_exponent += shifted;
+ }
+
if( z.__pformat_fpreg_exponent == 0 )
{
- /* A biased exponent value of zero means either a
- * true zero value, if the mantissa field also has
- * a zero value, otherwise...
- */
- if( z.__pformat_fpreg_mantissa != 0 )
- {
- /* ...this mantissa represents a subnormal value;
- * adjust the exponent, while shifting the mantissa
- * to the left, until its leading bit is 1.
- */
- z.__pformat_fpreg_exponent = 1-0x3FFF;
- while( (z.__pformat_fpreg_mantissa & (LLONG_MAX + 1ULL)) == 0 )
- {
- z.__pformat_fpreg_mantissa <<= 1;
- --z.__pformat_fpreg_exponent;
- }
- }
+ /* A biased exponent value of zero means either a
+ * true zero value, if the mantissa field also has
+ * a zero value, otherwise...
+ */
+ if( z.__pformat_fpreg_mantissa != 0 )
+ {
+ /* ...this mantissa represents a subnormal value.
+ */
+ z.__pformat_fpreg_exponent = 1 - 0x3FF + 3;
+ }
}
else
- /* This argument represents a non-zero normal number;
- * eliminate the bias from the exponent...
- */
- z.__pformat_fpreg_exponent -= 0x3FFF;
+ /* This argument represents a non-zero normal number;
+ * eliminate the bias from the exponent...
+ */
+ z.__pformat_fpreg_exponent -= 0x3FFF - 3;
+
+ /* Shift the mantissa so the leading 4 bits digit is 0 or 1.
+ * The exponent was also adjusted by 3 previously.
+ */
+ z.__pformat_fpreg_mantissa >>= 3;
/* Finally, hand the adjusted representation off to the
* generalised hexadecimal floating point format handler...
@@ -2332,17 +2419,17 @@ __pformat (int flags, void *dest, int max, const APICHAR *fmt, va_list argv)
/* Create and initialise a format control block
* for this output request.
*/
- dest, /* output goes to here */
- flags &= PFORMAT_TO_FILE | PFORMAT_NOLIMIT, /* only these valid initially */
- PFORMAT_IGNORE, /* no field width yet */
- PFORMAT_IGNORE, /* nor any precision spec */
- PFORMAT_RPINIT, /* radix point uninitialised */
- (wchar_t)(0), /* leave it unspecified */
+ dest, /* output goes to here */
+ flags &= PFORMAT_TO_FILE | PFORMAT_NOLIMIT, /* only these valid initially */
+ PFORMAT_IGNORE, /* no field width yet */
+ PFORMAT_IGNORE, /* nor any precision spec */
+ PFORMAT_RPINIT, /* radix point uninitialised */
+ (wchar_t)(0), /* leave it unspecified */
0,
- (wchar_t)(0), /* leave it unspecified */
- 0, /* zero output char count */
- max, /* establish output limit */
- -1 /* exponent chars preferred;
+ (wchar_t)(0), /* leave it unspecified */
+ 0, /* zero output char count */
+ max, /* establish output limit */
+ -1 /* exponent chars preferred;
-1 means to be determined. */
};
@@ -2390,793 +2477,794 @@ __pformat (int flags, void *dest, int max, const APICHAR *fmt, va_list argv)
while( *fmt )
{
- switch( c = *fmt++ )
- {
- /* Data type specifiers...
- * All are terminal, so exit the conversion spec parsing loop
- * with a `goto format_scan', thus resuming at the outer level
- * in the regular format string parser.
- */
- case '%':
- /*
- * Not strictly a data type specifier...
- * it simply converts as a literal `%' character.
- *
- * FIXME: should we require this to IMMEDIATELY follow the
- * initial `%' of the "conversion spec"? (glibc `printf()'
- * on GNU/Linux does NOT appear to require this, but POSIX
- * and SUSv3 do seem to demand it).
- */
+ switch( c = *fmt++ )
+ {
+ /* Data type specifiers...
+ * All are terminal, so exit the conversion spec parsing loop
+ * with a `goto format_scan', thus resuming at the outer level
+ * in the regular format string parser.
+ */
+ case '%':
+ /*
+ * Not strictly a data type specifier...
+ * it simply converts as a literal `%' character.
+ *
+ * FIXME: should we require this to IMMEDIATELY follow the
+ * initial `%' of the "conversion spec"? (glibc `printf()'
+ * on GNU/Linux does NOT appear to require this, but POSIX
+ * and SUSv3 do seem to demand it).
+ */
#ifndef __BUILD_WIDEAPI
- __pformat_putc( c, &stream );
+ __pformat_putc( c, &stream );
#else
stream.width = stream.precision = PFORMAT_IGNORE;
__pformat_wputchars( L"%", 1, &stream );
#endif
- goto format_scan;
-
- case 'C':
- /*
- * Equivalent to `%lc'; set `length' accordingly,
- * and simply fall through.
- */
- length = PFORMAT_LENGTH_LONG;
-
- case 'c':
- /*
- * Single, (or single multibyte), character output...
- *
- * We handle these by copying the argument into our local
- * `argval' buffer, and then we pass the address of that to
- * either `__pformat_putchars()' or `__pformat_wputchars()',
- * as appropriate, effectively formatting it as a string of
- * the appropriate type, with a length of one.
- *
- * A side effect of this method of handling character data
- * is that, if the user sets a precision of zero, then no
- * character is actually emitted; we don't want that, so we
- * forcibly override any user specified precision.
- */
- stream.precision = PFORMAT_IGNORE;
-
- /* Now we invoke the appropriate format handler...
- */
- if( (length == PFORMAT_LENGTH_LONG)
- || (length == PFORMAT_LENGTH_LLONG) )
- {
- /* considering any `long' type modifier as a reference to
- * `wchar_t' data, (which is promoted to an `int' argument)...
- */
- wchar_t iargval = (wchar_t)(va_arg( argv, int ));
- __pformat_wputchars( &iargval, 1, &stream );
- }
- else
- { /* while anything else is simply taken as `char', (which
- * is also promoted to an `int' argument)...
- */
- argval.__pformat_uchar_t = (unsigned char)(va_arg( argv, int ));
- __pformat_putchars( (char *)(&argval), 1, &stream );
- }
- goto format_scan;
-
- case 'S':
- /*
- * Equivalent to `%ls'; set `length' accordingly,
- * and simply fall through.
- */
- length = PFORMAT_LENGTH_LONG;
-
- case 's':
- if( (length == PFORMAT_LENGTH_LONG)
- || (length == PFORMAT_LENGTH_LLONG))
- {
- /* considering any `long' type modifier as a reference to
- * a `wchar_t' string...
- */
- __pformat_wcputs( va_arg( argv, wchar_t * ), &stream );
- }
- else
- /* This is normal string output;
- * we simply invoke the appropriate handler...
- */
- __pformat_puts( va_arg( argv, char * ), &stream );
- goto format_scan;
- case 'm': /* strerror (errno) */
- __pformat_puts (strerror (saved_errno), &stream);
- goto format_scan;
-
- case 'o':
- case 'u':
- case 'x':
- case 'X':
- /*
- * Unsigned integer values; octal, decimal or hexadecimal format...
- */
+ goto format_scan;
+
+ case 'C':
+ /*
+ * Equivalent to `%lc'; set `length' accordingly,
+ * and simply fall through.
+ */
+ length = PFORMAT_LENGTH_LONG;
+
+ case 'c':
+ /*
+ * Single, (or single multibyte), character output...
+ *
+ * We handle these by copying the argument into our local
+ * `argval' buffer, and then we pass the address of that to
+ * either `__pformat_putchars()' or `__pformat_wputchars()',
+ * as appropriate, effectively formatting it as a string of
+ * the appropriate type, with a length of one.
+ *
+ * A side effect of this method of handling character data
+ * is that, if the user sets a precision of zero, then no
+ * character is actually emitted; we don't want that, so we
+ * forcibly override any user specified precision.
+ */
+ stream.precision = PFORMAT_IGNORE;
+
+ /* Now we invoke the appropriate format handler...
+ */
+ if( (length == PFORMAT_LENGTH_LONG)
+ || (length == PFORMAT_LENGTH_LLONG) )
+ {
+ /* considering any `long' type modifier as a reference to
+ * `wchar_t' data, (which is promoted to an `int' argument)...
+ */
+ wchar_t iargval = (wchar_t)(va_arg( argv, int ));
+ __pformat_wputchars( &iargval, 1, &stream );
+ }
+ else
+ { /* while anything else is simply taken as `char', (which
+ * is also promoted to an `int' argument)...
+ */
+ argval.__pformat_uchar_t = (unsigned char)(va_arg( argv, int ));
+ __pformat_putchars( (char *)(&argval), 1, &stream );
+ }
+ goto format_scan;
+
+ case 'S':
+ /*
+ * Equivalent to `%ls'; set `length' accordingly,
+ * and simply fall through.
+ */
+ length = PFORMAT_LENGTH_LONG;
+
+ case 's':
+ if( (length == PFORMAT_LENGTH_LONG)
+ || (length == PFORMAT_LENGTH_LLONG))
+ {
+ /* considering any `long' type modifier as a reference to
+ * a `wchar_t' string...
+ */
+ __pformat_wcputs( va_arg( argv, wchar_t * ), &stream );
+ }
+ else
+ /* This is normal string output;
+ * we simply invoke the appropriate handler...
+ */
+ __pformat_puts( va_arg( argv, char * ), &stream );
+ goto format_scan;
+ case 'm': /* strerror (errno) */
+ __pformat_puts (strerror (saved_errno), &stream);
+ goto format_scan;
+
+ case 'o':
+ case 'u':
+ case 'x':
+ case 'X':
+ /*
+ * Unsigned integer values; octal, decimal or hexadecimal format...
+ */
+ stream.flags &= ~PFORMAT_POSITIVE;
#if __ENABLE_PRINTF128
argval.__pformat_u128_t.t128.digits[1] = 0LL; /* no sign extend needed */
- if( length == PFORMAT_LENGTH_LLONG128 )
- argval.__pformat_u128_t.t128 = va_arg( argv, __tI128 );
- else
+ if( length == PFORMAT_LENGTH_LLONG128 )
+ argval.__pformat_u128_t.t128 = va_arg( argv, __tI128 );
+ else
#endif
if( length == PFORMAT_LENGTH_LLONG ) {
- /*
- * with an `unsigned long long' argument, which we
- * process `as is'...
- */
- argval.__pformat_ullong_t = va_arg( argv, unsigned long long );
-
- } else if( length == PFORMAT_LENGTH_LONG ) {
- /*
- * or with an `unsigned long', which we promote to
- * `unsigned long long'...
- */
- argval.__pformat_ullong_t = va_arg( argv, unsigned long );
-
- } else
- { /* or for any other size, which will have been promoted
- * to `unsigned int', we select only the appropriately sized
- * least significant segment, and again promote to the same
- * size as `unsigned long long'...
- */
- argval.__pformat_ullong_t = va_arg( argv, unsigned int );
- if( length == PFORMAT_LENGTH_SHORT )
- /*
- * from `unsigned short'...
- */
- argval.__pformat_ullong_t = argval.__pformat_ushort_t;
-
- else if( length == PFORMAT_LENGTH_CHAR )
- /*
- * or even from `unsigned char'...
- */
- argval.__pformat_ullong_t = argval.__pformat_uchar_t;
- }
-
- /* so we can pass any size of argument to either of two
- * common format handlers...
- */
- if( c == 'u' )
- /*
- * depending on whether output is to be encoded in
- * decimal format...
- */
- __pformat_int( argval, &stream );
-
- else
- /* or in octal or hexadecimal format...
- */
- __pformat_xint( c, argval, &stream );
-
- goto format_scan;
-
- case 'd':
- case 'i':
- /*
- * Signed integer values; decimal format...
- * This is similar to `u', but must process `argval' as signed,
- * and be prepared to handle negative numbers.
- */
- stream.flags |= PFORMAT_NEGATIVE;
+ /*
+ * with an `unsigned long long' argument, which we
+ * process `as is'...
+ */
+ argval.__pformat_ullong_t = va_arg( argv, unsigned long long );
+
+ } else if( length == PFORMAT_LENGTH_LONG ) {
+ /*
+ * or with an `unsigned long', which we promote to
+ * `unsigned long long'...
+ */
+ argval.__pformat_ullong_t = va_arg( argv, unsigned long );
+
+ } else
+ { /* or for any other size, which will have been promoted
+ * to `unsigned int', we select only the appropriately sized
+ * least significant segment, and again promote to the same
+ * size as `unsigned long long'...
+ */
+ argval.__pformat_ullong_t = va_arg( argv, unsigned int );
+ if( length == PFORMAT_LENGTH_SHORT )
+ /*
+ * from `unsigned short'...
+ */
+ argval.__pformat_ullong_t = argval.__pformat_ushort_t;
+
+ else if( length == PFORMAT_LENGTH_CHAR )
+ /*
+ * or even from `unsigned char'...
+ */
+ argval.__pformat_ullong_t = argval.__pformat_uchar_t;
+ }
+
+ /* so we can pass any size of argument to either of two
+ * common format handlers...
+ */
+ if( c == 'u' )
+ /*
+ * depending on whether output is to be encoded in
+ * decimal format...
+ */
+ __pformat_int( argval, &stream );
+
+ else
+ /* or in octal or hexadecimal format...
+ */
+ __pformat_xint( c, argval, &stream );
+
+ goto format_scan;
+
+ case 'd':
+ case 'i':
+ /*
+ * Signed integer values; decimal format...
+ * This is similar to `u', but must process `argval' as signed,
+ * and be prepared to handle negative numbers.
+ */
+ stream.flags |= PFORMAT_NEGATIVE;
#if __ENABLE_PRINTF128
- if( length == PFORMAT_LENGTH_LLONG128 ) {
- argval.__pformat_u128_t.t128 = va_arg( argv, __tI128 );
+ if( length == PFORMAT_LENGTH_LLONG128 ) {
+ argval.__pformat_u128_t.t128 = va_arg( argv, __tI128 );
goto skip_sign; /* skip sign extend */
- } else
+ } else
#endif
- if( length == PFORMAT_LENGTH_LLONG ){
- /*
- * The argument is a `long long' type...
- */
- argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, long long );
- } else if( length == PFORMAT_LENGTH_LONG ) {
- /*
- * or here, a `long' type...
- */
- argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, long );
- } else
- { /* otherwise, it's an `int' type...
- */
- argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, int );
- if( length == PFORMAT_LENGTH_SHORT )
- /*
- * but it was promoted from a `short' type...
- */
- argval.__pformat_u128_t.t128.digits[0] = argval.__pformat_short_t;
- else if( length == PFORMAT_LENGTH_CHAR )
- /*
- * or even from a `char' type...
- */
- argval.__pformat_u128_t.t128.digits[0] = argval.__pformat_char_t;
- }
-
- /* In any case, all share a common handler...
- */
+ if( length == PFORMAT_LENGTH_LLONG ){
+ /*
+ * The argument is a `long long' type...
+ */
+ argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, long long );
+ } else if( length == PFORMAT_LENGTH_LONG ) {
+ /*
+ * or here, a `long' type...
+ */
+ argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, long );
+ } else
+ { /* otherwise, it's an `int' type...
+ */
+ argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, int );
+ if( length == PFORMAT_LENGTH_SHORT )
+ /*
+ * but it was promoted from a `short' type...
+ */
+ argval.__pformat_u128_t.t128.digits[0] = argval.__pformat_short_t;
+ else if( length == PFORMAT_LENGTH_CHAR )
+ /*
+ * or even from a `char' type...
+ */
+ argval.__pformat_u128_t.t128.digits[0] = argval.__pformat_char_t;
+ }
+
+ /* In any case, all share a common handler...
+ */
argval.__pformat_u128_t.t128.digits[1] = (argval.__pformat_llong_t < 0) ? -1LL : 0LL;
#if __ENABLE_PRINTF128
skip_sign:
#endif
- __pformat_int( argval, &stream );
- goto format_scan;
-
- case 'p':
- /*
- * Pointer argument; format as hexadecimal, subject to...
- */
- if( (state == PFORMAT_INIT) && (stream.flags == flags) )
- {
- /* Here, the user didn't specify any particular
- * formatting attributes. We must choose a default
- * which will be compatible with Microsoft's (broken)
- * scanf() implementation, (i.e. matching the default
- * used by MSVCRT's printf(), which appears to resemble
- * "%0.8X" for 32-bit pointers); in particular, we MUST
- * NOT adopt a GNU-like format resembling "%#x", because
- * Microsoft's scanf() will choke on the "0x" prefix.
- */
- stream.flags |= PFORMAT_ZEROFILL;
- stream.precision = 2 * sizeof( uintptr_t );
- }
- argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, uintptr_t );
- argval.__pformat_u128_t.t128.digits[1] = 0;
- __pformat_xint( 'x', argval, &stream );
- goto format_scan;
-
- case 'e':
- /*
- * Floating point format, with lower case exponent indicator
- * and lower case `inf' or `nan' representation when required;
- * select lower case mode, and simply fall through...
- */
- stream.flags |= PFORMAT_XCASE;
-
- case 'E':
- /*
- * Floating point format, with upper case exponent indicator
- * and upper case `INF' or `NAN' representation when required,
- * (or lower case for all of these, on fall through from above);
- * select lower case mode, and simply fall through...
- */
+ __pformat_int( argval, &stream );
+ goto format_scan;
+
+ case 'p':
+ /*
+ * Pointer argument; format as hexadecimal, subject to...
+ */
+ if( (state == PFORMAT_INIT) && (stream.flags == flags) )
+ {
+ /* Here, the user didn't specify any particular
+ * formatting attributes. We must choose a default
+ * which will be compatible with Microsoft's (broken)
+ * scanf() implementation, (i.e. matching the default
+ * used by MSVCRT's printf(), which appears to resemble
+ * "%0.8X" for 32-bit pointers); in particular, we MUST
+ * NOT adopt a GNU-like format resembling "%#x", because
+ * Microsoft's scanf() will choke on the "0x" prefix.
+ */
+ stream.flags |= PFORMAT_ZEROFILL;
+ stream.precision = 2 * sizeof( uintptr_t );
+ }
+ argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, uintptr_t );
+ argval.__pformat_u128_t.t128.digits[1] = 0;
+ __pformat_xint( 'x', argval, &stream );
+ goto format_scan;
+
+ case 'e':
+ /*
+ * Floating point format, with lower case exponent indicator
+ * and lower case `inf' or `nan' representation when required;
+ * select lower case mode, and simply fall through...
+ */
+ stream.flags |= PFORMAT_XCASE;
+
+ case 'E':
+ /*
+ * Floating point format, with upper case exponent indicator
+ * and upper case `INF' or `NAN' representation when required,
+ * (or lower case for all of these, on fall through from above);
+ * select lower case mode, and simply fall through...
+ */
#ifdef __ENABLE_DFP
- if( stream.flags & PFORMAT_DECIM32 )
- /* Is a 32bit decimal float */
- __pformat_efloat_decimal((_Decimal128)va_arg( argv, _Decimal32 ), &stream );
- else if( stream.flags & PFORMAT_DECIM64 )
- /*
- * Is a 64bit decimal float
- */
- __pformat_efloat_decimal((_Decimal128)va_arg( argv, _Decimal64 ), &stream );
- else if( stream.flags & PFORMAT_DECIM128 )
- /*
- * Is a 128bit decimal float
- */
- __pformat_efloat_decimal(va_arg( argv, _Decimal128 ), &stream );
- else
+ if( stream.flags & PFORMAT_DECIM32 )
+ /* Is a 32bit decimal float */
+ __pformat_efloat_decimal((_Decimal128)va_arg( argv, _Decimal32 ), &stream );
+ else if( stream.flags & PFORMAT_DECIM64 )
+ /*
+ * Is a 64bit decimal float
+ */
+ __pformat_efloat_decimal((_Decimal128)va_arg( argv, _Decimal64 ), &stream );
+ else if( stream.flags & PFORMAT_DECIM128 )
+ /*
+ * Is a 128bit decimal float
+ */
+ __pformat_efloat_decimal(va_arg( argv, _Decimal128 ), &stream );
+ else
#endif /* __ENABLE_DFP */
- if( stream.flags & PFORMAT_LDOUBLE )
- /*
- * for a `long double' argument...
- */
- __pformat_efloat( va_arg( argv, long double ), &stream );
-
- else
- /* or just a `double', which we promote to `long double',
- * so the two may share a common format handler.
- */
- __pformat_efloat( (long double)(va_arg( argv, double )), &stream );
-
- goto format_scan;
-
- case 'f':
- /*
- * Fixed point format, using lower case for `inf' and
- * `nan', when appropriate; select lower case mode, and
- * simply fall through...
- */
- stream.flags |= PFORMAT_XCASE;
-
- case 'F':
- /*
- * Fixed case format using upper case, or lower case on
- * fall through from above, for `INF' and `NAN'...
- */
+ if( stream.flags & PFORMAT_LDOUBLE )
+ /*
+ * for a `long double' argument...
+ */
+ __pformat_efloat( va_arg( argv, long double ), &stream );
+
+ else
+ /* or just a `double', which we promote to `long double',
+ * so the two may share a common format handler.
+ */
+ __pformat_efloat( (long double)(va_arg( argv, double )), &stream );
+
+ goto format_scan;
+
+ case 'f':
+ /*
+ * Fixed point format, using lower case for `inf' and
+ * `nan', when appropriate; select lower case mode, and
+ * simply fall through...
+ */
+ stream.flags |= PFORMAT_XCASE;
+
+ case 'F':
+ /*
+ * Fixed case format using upper case, or lower case on
+ * fall through from above, for `INF' and `NAN'...
+ */
#ifdef __ENABLE_DFP
- if( stream.flags & PFORMAT_DECIM32 )
- /* Is a 32bit decimal float */
- __pformat_float_decimal((_Decimal128)va_arg( argv, _Decimal32 ), &stream );
- else if( stream.flags & PFORMAT_DECIM64 )
- /*
- * Is a 64bit decimal float
- */
- __pformat_float_decimal((_Decimal128)va_arg( argv, _Decimal64 ), &stream );
- else if( stream.flags & PFORMAT_DECIM128 )
- /*
- * Is a 128bit decimal float
- */
- __pformat_float_decimal(va_arg( argv, _Decimal128 ), &stream );
- else
+ if( stream.flags & PFORMAT_DECIM32 )
+ /* Is a 32bit decimal float */
+ __pformat_float_decimal((_Decimal128)va_arg( argv, _Decimal32 ), &stream );
+ else if( stream.flags & PFORMAT_DECIM64 )
+ /*
+ * Is a 64bit decimal float
+ */
+ __pformat_float_decimal((_Decimal128)va_arg( argv, _Decimal64 ), &stream );
+ else if( stream.flags & PFORMAT_DECIM128 )
+ /*
+ * Is a 128bit decimal float
+ */
+ __pformat_float_decimal(va_arg( argv, _Decimal128 ), &stream );
+ else
#endif /* __ENABLE_DFP */
- if( stream.flags & PFORMAT_LDOUBLE )
- /*
- * for a `long double' argument...
- */
- __pformat_float( va_arg( argv, long double ), &stream );
-
- else
- /* or just a `double', which we promote to `long double',
- * so the two may share a common format handler.
- */
- __pformat_float( (long double)(va_arg( argv, double )), &stream );
-
- goto format_scan;
-
- case 'g':
- /*
- * Generalised floating point format, with lower case
- * exponent indicator when required; select lower case
- * mode, and simply fall through...
- */
- stream.flags |= PFORMAT_XCASE;
-
- case 'G':
- /*
- * Generalised floating point format, with upper case,
- * or on fall through from above, with lower case exponent
- * indicator when required...
- */
+ if( stream.flags & PFORMAT_LDOUBLE )
+ /*
+ * for a `long double' argument...
+ */
+ __pformat_float( va_arg( argv, long double ), &stream );
+
+ else
+ /* or just a `double', which we promote to `long double',
+ * so the two may share a common format handler.
+ */
+ __pformat_float( (long double)(va_arg( argv, double )), &stream );
+
+ goto format_scan;
+
+ case 'g':
+ /*
+ * Generalised floating point format, with lower case
+ * exponent indicator when required; select lower case
+ * mode, and simply fall through...
+ */
+ stream.flags |= PFORMAT_XCASE;
+
+ case 'G':
+ /*
+ * Generalised floating point format, with upper case,
+ * or on fall through from above, with lower case exponent
+ * indicator when required...
+ */
#ifdef __ENABLE_DFP
- if( stream.flags & PFORMAT_DECIM32 )
- /* Is a 32bit decimal float */
- __pformat_gfloat_decimal((_Decimal128)va_arg( argv, _Decimal32 ), &stream );
- else if( stream.flags & PFORMAT_DECIM64 )
- /*
- * Is a 64bit decimal float
- */
- __pformat_gfloat_decimal((_Decimal128)va_arg( argv, _Decimal64 ), &stream );
- else if( stream.flags & PFORMAT_DECIM128 )
- /*
- * Is a 128bit decimal float
- */
- __pformat_gfloat_decimal(va_arg( argv, _Decimal128 ), &stream );
- else
+ if( stream.flags & PFORMAT_DECIM32 )
+ /* Is a 32bit decimal float */
+ __pformat_gfloat_decimal((_Decimal128)va_arg( argv, _Decimal32 ), &stream );
+ else if( stream.flags & PFORMAT_DECIM64 )
+ /*
+ * Is a 64bit decimal float
+ */
+ __pformat_gfloat_decimal((_Decimal128)va_arg( argv, _Decimal64 ), &stream );
+ else if( stream.flags & PFORMAT_DECIM128 )
+ /*
+ * Is a 128bit decimal float
+ */
+ __pformat_gfloat_decimal(va_arg( argv, _Decimal128 ), &stream );
+ else
#endif /* __ENABLE_DFP */
- if( stream.flags & PFORMAT_LDOUBLE )
- /*
- * for a `long double' argument...
- */
- __pformat_gfloat( va_arg( argv, long double ), &stream );
-
- else
- /* or just a `double', which we promote to `long double',
- * so the two may share a common format handler.
- */
- __pformat_gfloat( (long double)(va_arg( argv, double )), &stream );
-
- goto format_scan;
-
- case 'a':
- /*
- * Hexadecimal floating point format, with lower case radix
- * and exponent indicators; select the lower case mode, and
- * fall through...
- */
- stream.flags |= PFORMAT_XCASE;
-
- case 'A':
- /*
- * Hexadecimal floating point format; handles radix and
- * exponent indicators in either upper or lower case...
- */
- if( stream.flags & PFORMAT_LDOUBLE )
- /*
- * with a `long double' argument...
- */
- __pformat_xldouble( va_arg( argv, long double ), &stream );
-
- else
- /* or just a `double'.
- */
- __pformat_xldouble( (long double)(va_arg( argv, double )), &stream );
-
- goto format_scan;
-
- case 'n':
- /*
- * Save current output character count...
- */
- if( length == PFORMAT_LENGTH_CHAR )
- /*
- * to a signed `char' destination...
- */
- *va_arg( argv, char * ) = stream.count;
-
- else if( length == PFORMAT_LENGTH_SHORT )
- /*
- * or to a signed `short'...
- */
- *va_arg( argv, short * ) = stream.count;
-
- else if( length == PFORMAT_LENGTH_LONG )
- /*
- * or to a signed `long'...
- */
- *va_arg( argv, long * ) = stream.count;
-
- else if( length == PFORMAT_LENGTH_LLONG )
- /*
- * or to a signed `long long'...
- */
- *va_arg( argv, long long * ) = stream.count;
-
- else
- /*
- * or, by default, to a signed `int'.
- */
- *va_arg( argv, int * ) = stream.count;
-
- goto format_scan;
-
- /* Argument length modifiers...
- * These are non-terminal; each sets the format parser
- * into the PFORMAT_END state, and ends with a `break'.
- */
- case 'h':
- /*
- * Interpret the argument as explicitly of a `short'
- * or `char' data type, truncated from the standard
- * length defined for integer promotion.
- */
- if( *fmt == 'h' )
- {
- /* Modifier is `hh'; data type is `char' sized...
- * Skip the second `h', and set length accordingly.
- */
- ++fmt;
- length = PFORMAT_LENGTH_CHAR;
- }
-
- else
- /* Modifier is `h'; data type is `short' sized...
- */
- length = PFORMAT_LENGTH_SHORT;
-
- state = PFORMAT_END;
- break;
-
- case 'j':
- /*
- * Interpret the argument as being of the same size as
- * a `intmax_t' entity...
- */
- length = __pformat_arg_length( intmax_t );
- state = PFORMAT_END;
- break;
-
-# ifdef _WIN32
-
- case 'I':
- /*
- * The MSVCRT implementation of the printf() family of
- * functions explicitly uses...
- */
+ if( stream.flags & PFORMAT_LDOUBLE )
+ /*
+ * for a `long double' argument...
+ */
+ __pformat_gfloat( va_arg( argv, long double ), &stream );
+
+ else
+ /* or just a `double', which we promote to `long double',
+ * so the two may share a common format handler.
+ */
+ __pformat_gfloat( (long double)(va_arg( argv, double )), &stream );
+
+ goto format_scan;
+
+ case 'a':
+ /*
+ * Hexadecimal floating point format, with lower case radix
+ * and exponent indicators; select the lower case mode, and
+ * fall through...
+ */
+ stream.flags |= PFORMAT_XCASE;
+
+ case 'A':
+ /*
+ * Hexadecimal floating point format; handles radix and
+ * exponent indicators in either upper or lower case...
+ */
+ if( sizeof( double ) != sizeof( long double ) && stream.flags & PFORMAT_LDOUBLE )
+ /*
+ * with a `long double' argument...
+ */
+ __pformat_xldouble( va_arg( argv, long double ), &stream );
+
+ else
+ /* or just a `double'.
+ */
+ __pformat_xdouble( va_arg( argv, double ), &stream );
+
+ goto format_scan;
+
+ case 'n':
+ /*
+ * Save current output character count...
+ */
+ if( length == PFORMAT_LENGTH_CHAR )
+ /*
+ * to a signed `char' destination...
+ */
+ *va_arg( argv, char * ) = stream.count;
+
+ else if( length == PFORMAT_LENGTH_SHORT )
+ /*
+ * or to a signed `short'...
+ */
+ *va_arg( argv, short * ) = stream.count;
+
+ else if( length == PFORMAT_LENGTH_LONG )
+ /*
+ * or to a signed `long'...
+ */
+ *va_arg( argv, long * ) = stream.count;
+
+ else if( length == PFORMAT_LENGTH_LLONG )
+ /*
+ * or to a signed `long long'...
+ */
+ *va_arg( argv, long long * ) = stream.count;
+
+ else
+ /*
+ * or, by default, to a signed `int'.
+ */
+ *va_arg( argv, int * ) = stream.count;
+
+ goto format_scan;
+
+ /* Argument length modifiers...
+ * These are non-terminal; each sets the format parser
+ * into the PFORMAT_END state, and ends with a `break'.
+ */
+ case 'h':
+ /*
+ * Interpret the argument as explicitly of a `short'
+ * or `char' data type, truncated from the standard
+ * length defined for integer promotion.
+ */
+ if( *fmt == 'h' )
+ {
+ /* Modifier is `hh'; data type is `char' sized...
+ * Skip the second `h', and set length accordingly.
+ */
+ ++fmt;
+ length = PFORMAT_LENGTH_CHAR;
+ }
+
+ else
+ /* Modifier is `h'; data type is `short' sized...
+ */
+ length = PFORMAT_LENGTH_SHORT;
+
+ state = PFORMAT_END;
+ break;
+
+ case 'j':
+ /*
+ * Interpret the argument as being of the same size as
+ * a `intmax_t' entity...
+ */
+ length = __pformat_arg_length( intmax_t );
+ state = PFORMAT_END;
+ break;
+
+# ifdef _WIN32
+
+ case 'I':
+ /*
+ * The MSVCRT implementation of the printf() family of
+ * functions explicitly uses...
+ */
#ifdef __ENABLE_PRINTF128
- if( (fmt[0] == '1') && (fmt[1] == '2') && (fmt[2] == '8')){
- length = PFORMAT_LENGTH_LLONG128;
- fmt += 3;
- } else
+ if( (fmt[0] == '1') && (fmt[1] == '2') && (fmt[2] == '8')){
+ length = PFORMAT_LENGTH_LLONG128;
+ fmt += 3;
+ } else
#endif
- if( (fmt[0] == '6') && (fmt[1] == '4') )
- {
- /* I64' instead of `ll',
- * when referring to `long long' integer types...
- */
- length = PFORMAT_LENGTH_LLONG;
- fmt += 2;
- } else
- if( (fmt[0] == '3') && (fmt[1] == '2') )
- {
- /* and `I32' instead of `l',
- * when referring to `long' integer types...
- */
- length = PFORMAT_LENGTH_LONG;
- fmt += 2;
- }
-
- else
- /* or unqualified `I' instead of `t' or `z',
- * when referring to `ptrdiff_t' or `size_t' entities;
- * (we will choose to map it to `ptrdiff_t').
- */
- length = __pformat_arg_length( ptrdiff_t );
-
- state = PFORMAT_END;
- break;
-
-# endif
-
+ if( (fmt[0] == '6') && (fmt[1] == '4') )
+ {
+ /* I64' instead of `ll',
+ * when referring to `long long' integer types...
+ */
+ length = PFORMAT_LENGTH_LLONG;
+ fmt += 2;
+ } else
+ if( (fmt[0] == '3') && (fmt[1] == '2') )
+ {
+ /* and `I32' instead of `l',
+ * when referring to `long' integer types...
+ */
+ length = PFORMAT_LENGTH_LONG;
+ fmt += 2;
+ }
+
+ else
+ /* or unqualified `I' instead of `t' or `z',
+ * when referring to `ptrdiff_t' or `size_t' entities;
+ * (we will choose to map it to `ptrdiff_t').
+ */
+ length = __pformat_arg_length( ptrdiff_t );
+
+ state = PFORMAT_END;
+ break;
+
+# endif
+
#ifdef __ENABLE_DFP
- case 'H':
- stream.flags |= PFORMAT_DECIM32;
- state = PFORMAT_END;
- break;
-
- case 'D':
- /*
- * Interpret the argument as explicitly of a
- * `_Decimal64' or `_Decimal128' data type.
- */
- if( *fmt == 'D' )
- {
- /* Modifier is `DD'; data type is `_Decimal128' sized...
- * Skip the second `D', and set length accordingly.
- */
- ++fmt;
- stream.flags |= PFORMAT_DECIM128;
- }
-
- else
- /* Modifier is `D'; data type is `_Decimal64' sized...
- */
- stream.flags |= PFORMAT_DECIM64;
-
- state = PFORMAT_END;
- break;
+ case 'H':
+ stream.flags |= PFORMAT_DECIM32;
+ state = PFORMAT_END;
+ break;
+
+ case 'D':
+ /*
+ * Interpret the argument as explicitly of a
+ * `_Decimal64' or `_Decimal128' data type.
+ */
+ if( *fmt == 'D' )
+ {
+ /* Modifier is `DD'; data type is `_Decimal128' sized...
+ * Skip the second `D', and set length accordingly.
+ */
+ ++fmt;
+ stream.flags |= PFORMAT_DECIM128;
+ }
+
+ else
+ /* Modifier is `D'; data type is `_Decimal64' sized...
+ */
+ stream.flags |= PFORMAT_DECIM64;
+
+ state = PFORMAT_END;
+ break;
#endif /* __ENABLE_DFP */
- case 'l':
- /*
- * Interpret the argument as explicitly of a
- * `long' or `long long' data type.
- */
- if( *fmt == 'l' )
- {
- /* Modifier is `ll'; data type is `long long' sized...
- * Skip the second `l', and set length accordingly.
- */
- ++fmt;
- length = PFORMAT_LENGTH_LLONG;
- }
-
- else
- /* Modifier is `l'; data type is `long' sized...
- */
- length = PFORMAT_LENGTH_LONG;
-
- state = PFORMAT_END;
- break;
-
- case 'L':
- /*
- * Identify the appropriate argument as a `long double',
- * when associated with `%a', `%A', `%e', `%E', `%f', `%F',
- * `%g' or `%G' format specifications.
- */
- stream.flags |= PFORMAT_LDOUBLE;
- state = PFORMAT_END;
- break;
-
- case 't':
- /*
- * Interpret the argument as being of the same size as
- * a `ptrdiff_t' entity...
- */
- length = __pformat_arg_length( ptrdiff_t );
- state = PFORMAT_END;
- break;
-
- case 'z':
- /*
- * Interpret the argument as being of the same size as
- * a `size_t' entity...
- */
- length = __pformat_arg_length( size_t );
- state = PFORMAT_END;
- break;
-
- /* Precision indicator...
- * May appear once only; it must precede any modifier
- * for argument length, or any data type specifier.
- */
- case '.':
- if( state < PFORMAT_GET_PRECISION )
- {
- /* We haven't seen a precision specification yet,
- * so initialise it to zero, (in case no digits follow),
- * and accept any following digits as the precision.
- */
- stream.precision = 0;
- width_spec = &stream.precision;
- state = PFORMAT_GET_PRECISION;
- }
-
- else
- /* We've already seen a precision specification,
- * so this is just junk; proceed to end game.
- */
- state = PFORMAT_END;
-
- /* Either way, we must not fall through here.
- */
- break;
-
- /* Variable field width, or precision specification,
- * derived from the argument list...
- */
- case '*':
- /*
- * When this appears...
- */
- if( width_spec
- && ((state == PFORMAT_INIT) || (state == PFORMAT_GET_PRECISION)) )
- {
- /* in proper context; assign to field width
- * or precision, as appropriate.
- */
- if( (*width_spec = va_arg( argv, int )) < 0 )
- {
- /* Assigned value was negative...
- */
- if( state == PFORMAT_INIT )
- {
- /* For field width, this is equivalent to
- * a positive value with the `-' flag...
- */
- stream.flags |= PFORMAT_LJUSTIFY;
- stream.width = -stream.width;
- }
-
- else
- /* while as a precision specification,
- * it should simply be ignored.
- */
- stream.precision = PFORMAT_IGNORE;
- }
- }
-
- else
- /* out of context; give up on width and precision
- * specifications for this conversion.
- */
- state = PFORMAT_END;
-
- /* Mark as processed...
- * we must not see `*' again, in this context.
- */
- width_spec = NULL;
- break;
-
- /* Formatting flags...
- * Must appear while in the PFORMAT_INIT state,
- * and are non-terminal, so again, end with `break'.
- */
- case '#':
- /*
- * Select alternate PFORMAT_HASHED output style.
- */
- if( state == PFORMAT_INIT )
- stream.flags |= PFORMAT_HASHED;
- break;
-
- case '+':
- /*
- * Print a leading sign with numeric output,
- * for both positive and negative values.
- */
- if( state == PFORMAT_INIT )
- stream.flags |= PFORMAT_POSITIVE;
- break;
-
- case '-':
- /*
- * Select left justification of displayed output
- * data, within the output field width, instead of
- * the default flush right justification.
- */
- if( state == PFORMAT_INIT )
- stream.flags |= PFORMAT_LJUSTIFY;
- break;
-
- case '\'':
- /*
- * This is an XSI extension to the POSIX standard,
- * which we do not support, at present.
- */
- if (state == PFORMAT_INIT)
- {
- stream.flags |= PFORMAT_GROUPED; /* $$$$ */
- int len; wchar_t rpchr; mbstate_t cstate;
- memset (&cstate, 0, sizeof(state));
- if ((len = mbrtowc( &rpchr, localeconv()->thousands_sep, 16, &cstate)) > 0)
- stream.thousands_chr = rpchr;
- stream.thousands_chr_len = len;
- }
- break;
-
- case '\x20':
- /*
- * Reserve a single space, within the output field,
- * for display of the sign of signed data; this will
- * be occupied by the minus sign, if the data value
- * is negative, or by a plus sign if the data value
- * is positive AND the `+' flag is also present, or
- * by a space otherwise. (Technically, this flag
- * is redundant, if the `+' flag is present).
- */
- if( state == PFORMAT_INIT )
- stream.flags |= PFORMAT_ADDSPACE;
- break;
-
- case '0':
- /*
- * May represent a flag, to activate the `pad with zeros'
- * option, or it may simply be a digit in a width or in a
- * precision specification...
- */
- if( state == PFORMAT_INIT )
- {
- /* This is the flag usage...
- */
- stream.flags |= PFORMAT_ZEROFILL;
- break;
- }
-
- default:
- /*
- * If we didn't match anything above, then we will check
- * for digits, which we may accumulate to generate field
- * width or precision specifications...
- */
- if( (state < PFORMAT_END) && ('9' >= c) && (c >= '0') )
- {
- if( state == PFORMAT_INIT )
- /*
- * Initial digits explicitly relate to field width...
- */
- state = PFORMAT_SET_WIDTH;
-
- else if( state == PFORMAT_GET_PRECISION )
- /*
- * while those following a precision indicator
- * explicitly relate to precision.
- */
- state = PFORMAT_SET_PRECISION;
-
- if( width_spec )
- {
- /* We are accepting a width or precision specification...
- */
- if( *width_spec < 0 )
- /*
- * and accumulation hasn't started yet; we simply
- * initialise the accumulator with the current digit
- * value, converting from ASCII to decimal.
- */
- *width_spec = c - '0';
-
- else
- /* Accumulation has already started; we perform a
- * `leftwise decimal digit shift' on the accumulator,
- * (i.e. multiply it by ten), then add the decimal
- * equivalent value of the current digit.
- */
- *width_spec = *width_spec * 10 + c - '0';
- }
- }
-
- else
- {
- /* We found a digit out of context, or some other character
- * with no designated meaning; reject this format specification,
- * backtrack, and emit it as literal text...
- */
- fmt = backtrack;
+ case 'l':
+ /*
+ * Interpret the argument as explicitly of a
+ * `long' or `long long' data type.
+ */
+ if( *fmt == 'l' )
+ {
+ /* Modifier is `ll'; data type is `long long' sized...
+ * Skip the second `l', and set length accordingly.
+ */
+ ++fmt;
+ length = PFORMAT_LENGTH_LLONG;
+ }
+
+ else
+ /* Modifier is `l'; data type is `long' sized...
+ */
+ length = PFORMAT_LENGTH_LONG;
+
+ state = PFORMAT_END;
+ break;
+
+ case 'L':
+ /*
+ * Identify the appropriate argument as a `long double',
+ * when associated with `%a', `%A', `%e', `%E', `%f', `%F',
+ * `%g' or `%G' format specifications.
+ */
+ stream.flags |= PFORMAT_LDOUBLE;
+ state = PFORMAT_END;
+ break;
+
+ case 't':
+ /*
+ * Interpret the argument as being of the same size as
+ * a `ptrdiff_t' entity...
+ */
+ length = __pformat_arg_length( ptrdiff_t );
+ state = PFORMAT_END;
+ break;
+
+ case 'z':
+ /*
+ * Interpret the argument as being of the same size as
+ * a `size_t' entity...
+ */
+ length = __pformat_arg_length( size_t );
+ state = PFORMAT_END;
+ break;
+
+ /* Precision indicator...
+ * May appear once only; it must precede any modifier
+ * for argument length, or any data type specifier.
+ */
+ case '.':
+ if( state < PFORMAT_GET_PRECISION )
+ {
+ /* We haven't seen a precision specification yet,
+ * so initialise it to zero, (in case no digits follow),
+ * and accept any following digits as the precision.
+ */
+ stream.precision = 0;
+ width_spec = &stream.precision;
+ state = PFORMAT_GET_PRECISION;
+ }
+
+ else
+ /* We've already seen a precision specification,
+ * so this is just junk; proceed to end game.
+ */
+ state = PFORMAT_END;
+
+ /* Either way, we must not fall through here.
+ */
+ break;
+
+ /* Variable field width, or precision specification,
+ * derived from the argument list...
+ */
+ case '*':
+ /*
+ * When this appears...
+ */
+ if( width_spec
+ && ((state == PFORMAT_INIT) || (state == PFORMAT_GET_PRECISION)) )
+ {
+ /* in proper context; assign to field width
+ * or precision, as appropriate.
+ */
+ if( (*width_spec = va_arg( argv, int )) < 0 )
+ {
+ /* Assigned value was negative...
+ */
+ if( state == PFORMAT_INIT )
+ {
+ /* For field width, this is equivalent to
+ * a positive value with the `-' flag...
+ */
+ stream.flags |= PFORMAT_LJUSTIFY;
+ stream.width = -stream.width;
+ }
+
+ else
+ /* while as a precision specification,
+ * it should simply be ignored.
+ */
+ stream.precision = PFORMAT_IGNORE;
+ }
+ }
+
+ else
+ /* out of context; give up on width and precision
+ * specifications for this conversion.
+ */
+ state = PFORMAT_END;
+
+ /* Mark as processed...
+ * we must not see `*' again, in this context.
+ */
+ width_spec = NULL;
+ break;
+
+ /* Formatting flags...
+ * Must appear while in the PFORMAT_INIT state,
+ * and are non-terminal, so again, end with `break'.
+ */
+ case '#':
+ /*
+ * Select alternate PFORMAT_HASHED output style.
+ */
+ if( state == PFORMAT_INIT )
+ stream.flags |= PFORMAT_HASHED;
+ break;
+
+ case '+':
+ /*
+ * Print a leading sign with numeric output,
+ * for both positive and negative values.
+ */
+ if( state == PFORMAT_INIT )
+ stream.flags |= PFORMAT_POSITIVE;
+ break;
+
+ case '-':
+ /*
+ * Select left justification of displayed output
+ * data, within the output field width, instead of
+ * the default flush right justification.
+ */
+ if( state == PFORMAT_INIT )
+ stream.flags |= PFORMAT_LJUSTIFY;
+ break;
+
+ case '\'':
+ /*
+ * This is an XSI extension to the POSIX standard,
+ * which we do not support, at present.
+ */
+ if (state == PFORMAT_INIT)
+ {
+ stream.flags |= PFORMAT_GROUPED; /* $$$$ */
+ int len; wchar_t rpchr; mbstate_t cstate;
+ memset (&cstate, 0, sizeof(state));
+ if ((len = mbrtowc( &rpchr, localeconv()->thousands_sep, 16, &cstate)) > 0)
+ stream.thousands_chr = rpchr;
+ stream.thousands_chr_len = len;
+ }
+ break;
+
+ case '\x20':
+ /*
+ * Reserve a single space, within the output field,
+ * for display of the sign of signed data; this will
+ * be occupied by the minus sign, if the data value
+ * is negative, or by a plus sign if the data value
+ * is positive AND the `+' flag is also present, or
+ * by a space otherwise. (Technically, this flag
+ * is redundant, if the `+' flag is present).
+ */
+ if( state == PFORMAT_INIT )
+ stream.flags |= PFORMAT_ADDSPACE;
+ break;
+
+ case '0':
+ /*
+ * May represent a flag, to activate the `pad with zeros'
+ * option, or it may simply be a digit in a width or in a
+ * precision specification...
+ */
+ if( state == PFORMAT_INIT )
+ {
+ /* This is the flag usage...
+ */
+ stream.flags |= PFORMAT_ZEROFILL;
+ break;
+ }
+
+ default:
+ /*
+ * If we didn't match anything above, then we will check
+ * for digits, which we may accumulate to generate field
+ * width or precision specifications...
+ */
+ if( (state < PFORMAT_END) && ('9' >= c) && (c >= '0') )
+ {
+ if( state == PFORMAT_INIT )
+ /*
+ * Initial digits explicitly relate to field width...
+ */
+ state = PFORMAT_SET_WIDTH;
+
+ else if( state == PFORMAT_GET_PRECISION )
+ /*
+ * while those following a precision indicator
+ * explicitly relate to precision.
+ */
+ state = PFORMAT_SET_PRECISION;
+
+ if( width_spec )
+ {
+ /* We are accepting a width or precision specification...
+ */
+ if( *width_spec < 0 )
+ /*
+ * and accumulation hasn't started yet; we simply
+ * initialise the accumulator with the current digit
+ * value, converting from ASCII to decimal.
+ */
+ *width_spec = c - '0';
+
+ else
+ /* Accumulation has already started; we perform a
+ * `leftwise decimal digit shift' on the accumulator,
+ * (i.e. multiply it by ten), then add the decimal
+ * equivalent value of the current digit.
+ */
+ *width_spec = *width_spec * 10 + c - '0';
+ }
+ }
+
+ else
+ {
+ /* We found a digit out of context, or some other character
+ * with no designated meaning; reject this format specification,
+ * backtrack, and emit it as literal text...
+ */
+ fmt = backtrack;
#ifndef __BUILD_WIDEAPI
- __pformat_putc( '%', &stream );
+ __pformat_putc( '%', &stream );
#else
stream.width = stream.precision = PFORMAT_IGNORE;
__pformat_wputchars( L"%", 1, &stream );
#endif
- goto format_scan;
- }
- }
+ goto format_scan;
+ }
+ }
}
}
lib/libc/mingw/stdio/scanf.S
@@ -9,17 +9,14 @@
The goal of this routine is to turn a call to v*scanf into a call to
s*scanf. This is needed because mingw-w64 uses msvcr100.dll, which doesn't
support the v*scanf functions instead of msvcr120.dll which does.
- Unfortunately, there is no defined way to know exactly how big a va_list
- is, so we use a hard-coded buffer.
-
- I suppose a sufficiently-motivated person could try to parse the format
- to figure out how many tokens there are... */
+*/
/* The function prototype here is (essentially):
- int __ms_vsscanf_internal (void *s,
+ int __ms_v*scanf_internal (void *s,
void *format,
void *arg,
+ size_t count,
void *func);
I say 'essentially' because passing a function pointer as void in ISO
@@ -37,19 +34,6 @@
*/
.def __argtos; .scl 2; .type 32; .endef
- /* The max number of pointers we support. Must be an even number
- to keep the 64bit stack 16byte aligned. Must not be less than 4. */
- .equ entries, 30
-
- /* 64bit pointers are 8 bytes. */
- .equ sizeof, 8
-
- /* Size of our buffer. */
- .equ iBytes, entries * sizeof
-
- /* Stack space for first 2 args to s*scanf. */
- .equ iOffset, (2 * sizeof)
-
.seh_proc __argtos
__argtos:
@@ -58,48 +42,58 @@ __argtos:
- format must be in rdx. That's where it is on entry.
- The first pointer in arg must be in r8. arg is in r8 on entry.
- The second pointer in arg must be in r9. arg is in r8 on entry.
- - The ($entries - 2) other pointers in arg must be on the stack,
+ - The (count - 2) other pointers in arg must be on the stack,
starting 32bytes into rsp. */
- /* We need enough room to shadow (s + format)
- + (enough room for all the other args). */
- subq $(iOffset + iBytes), %rsp
- .seh_stackalloc iOffset + iBytes
+ pushq %rbp
+ .seh_pushreg %rbp
+ movq %rsp, %rbp
+ .seh_setframe %rbp, 0
+ /* We need to always reserve space to shadow 4 parameters. */
+ subq $32, %rsp
+ .seh_stackalloc 32
.seh_endprologue
- /* We are going to copy $entries pointers from arg to our
- local stack. Except the first 2, since they will be
- loaded in registers. */
- movq $entries - 2, %r10 /* # of ptrs to copy. */
-
- /* The first 32 bytes are in registers, but by spec, space
- must still be reserved for them on the stack. Put the
+ movq 48(%rbp), %r10 /* func. */
+
+ /* We need enough room to shadow all the other args.
+ Except the first 2, since they will be loaded in registers. */
+ cmpq $2, %r9 /* count. */
+ jbe .SKIP
+ subq $2, %r9 /* # of ptrs to copy. */
+ /* Calculate stack size (arg is 8byte) and keep the stack 16byte aligned. */
+ leaq 8(, %r9, 8), %rax /* %rax = (%r9 + 1) * 8 */
+ andq $-16, %rax
+ subq %rax, %rsp
+
+ /* We are going to copy parameters from arg to our local stack.
+ The first 32 bytes are in registers, but by spec, space
+ must still be reserved for them on the stack. Put the
rest of the pointers in the stack after that. */
lea 32(%rsp), %r11 /* dst. */
.LOOP:
- subq $1, %r10
+ subq $1, %r9
/* Use 16 to skip over the first 2 pointers. */
- movq 16(%r8, %r10, 8), %rax
- movq %rax, (%r11, %r10, 8)
+ movq 16(%r8, %r9, 8), %rax
+ movq %rax, (%r11, %r9, 8)
jnz .LOOP
- /* r9 contains the routine we are going to call. Since we are about to
- overwrite it, move it somewhere safe. */
- movq %r9, %r10
-
+.SKIP:
/* The stack is now correctly populated, and so are rcx and rdx.
But we need to load the last 2 regs before making the call. */
movq 0x8(%r8), %r9 /* 2nd dest location (may be garbage if only 1 arg). */
- movq (%r8), %r8 /* 1st dest location. */
+ movq (%r8), %r8 /* 1st dest location (may be garbage if no arg). */
/* Make the call. */
callq *%r10
- addq $(iOffset + iBytes), %rsp
+ /* Restore stack. */
+ movq %rbp, %rsp
+ popq %rbp
retq
.seh_endproc
@@ -113,31 +107,23 @@ __argtos:
*/
.def __argtos; .scl 2; .type 32; .endef
- /* The max number of pointers we support. Must not be less than 1. */
- .equ entries, 30
-
- /* 64bit pointers are 8 bytes. */
- .equ sizeof, 4
-
- /* Size of our buffer. */
- .set iBytes, entries * sizeof
-
- /* Stack space for first 2 args to s*scanf. */
- .equ iOffset, (2 * sizeof)
-
__argtos:
pushl %ebp
movl %esp, %ebp
pushl %edi
+ pushl %ebx
/* Reserve enough stack space for everything.
Stack usage will look like:
4 bytes - s
4 bytes - format
- (iBytes) bytes - variable # of parameters for sscanf (all ptrs). */
+ 4*count bytes - variable # of parameters for sscanf (all ptrs). */
- subl $(iOffset + iBytes), %esp
+ movl 20(%ebp), %ebx /* count. */
+ addl $2, %ebx /* s + format. */
+ sall $2, %ebx /* (count + 2) * 4. */
+ subl %ebx, %esp
/* Write out s and format where they need to be for the sscanf call. */
movl 8(%ebp), %eax
@@ -145,10 +131,12 @@ __argtos:
movl 12(%ebp), %edx
movl %edx, 0x4(%esp) /* format. */
- /* We are going to copy $entries pointers from arg to our
+ /* We are going to copy _count_ pointers from arg to our
local stack. */
- movl $entries, %ecx /* # of ptrs to copy. */
- lea iOffset(%esp), %edi /* dst. */
+ movl 20(%ebp), %ecx /* # of ptrs to copy. */
+ testl %ecx, %ecx
+ jz .SKIP
+ lea 8(%esp), %edi /* dst. */
movl 16(%ebp), %edx /* src. */
.LOOP:
@@ -158,13 +146,16 @@ __argtos:
movl %eax, (%edi, %ecx, 4)
jnz .LOOP
+.SKIP:
/* The stack is now correctly populated. */
/* Make the call. */
- call *20(%ebp)
+ call *24(%ebp)
/* Restore stack. */
- addl $(iOffset + iBytes), %esp
+ addl %ebx, %esp
+
+ popl %ebx
popl %edi
leave
@@ -178,25 +169,35 @@ __argtos:
.globl __argtos
__argtos:
- push {r4-r7, lr}
- sub sp, sp, #128
- mov r12, r3
- mov r4, sp
+ push {r4-r8, lr}
+ ldr r12, [sp, #24]
ldr r5, [r2], #4
ldr r6, [r2], #4
- mov r3, #116
+ subs r3, r3, #2
+ mov r8, #0
+ ble 2f
+
+ /* Round the number of entries to an even number, to maintain
+ * 8 byte stack alignment. */
+ mov r8, r3
+ add r8, r8, #1
+ bic r8, r8, #1
+ sub sp, sp, r8, lsl #2
+ mov r4, sp
1: ldr r7, [r2], #4
+ subs r3, r3, #1
str r7, [r4], #4
- subs r3, r3, #4
bne 1b
+2:
mov r2, r5
mov r3, r6
blx r12
- add sp, sp, #128
- pop {r4-r7, pc}
+
+ add sp, sp, r8, lsl #2
+ pop {r4-r8, pc}
#elif defined (__aarch64__)
@@ -207,10 +208,9 @@ __argtos:
__argtos:
stp x29, x30, [sp, #-16]!
mov x29, sp
- sub sp, sp, #256
- mov x9, sp
mov x10, x2
mov x11, x3
+ mov x12, x4
ldr x2, [x10], #8
ldr x3, [x10], #8
@@ -219,13 +219,23 @@ __argtos:
ldr x6, [x10], #8
ldr x7, [x10], #8
- mov x12, #240
+ subs x11, x11, #6
+ b.le 2f
+
+ /* Round the number of entries to an even number, to maintain
+ * 16 byte stack alignment. */
+ mov x13, x11
+ add x13, x13, #1
+ bic x13, x13, #1
+ sub sp, sp, x13, lsl #3
+ mov x9, sp
1: ldr x13, [x10], #8
+ subs x11, x11, #1
str x13, [x9], #8
- subs x12, x12, #8
b.ne 1b
- blr x11
+2:
+ blr x12
mov sp, x29
ldp x29, x30, [sp], #16
ret
lib/libc/mingw/stdio/snprintf.c
@@ -12,27 +12,7 @@ int __cdecl __ms_snprintf(char* buffer, size_t n, const char *format, ...)
va_list argptr;
va_start(argptr, format);
-
- /* _vsnprintf() does not work with zero length buffer
- * so count number of character by _vscprintf() call */
- if (n == 0 || !buffer)
- {
- retval = _vscprintf(format, argptr);
- va_end(argptr);
- return retval;
- }
-
- retval = _vsnprintf (buffer, n, format, argptr);
-
- /* _vsnprintf() returns negative number if buffer is too small
- * so count number of character by _vscprintf() call */
- if (retval < 0)
- retval = _vscprintf(format, argptr);
-
- /* _vsnprintf() does not fill trailing null byte if there is not place for it */
- if ((size_t)retval >= n)
- buffer[n-1] = '\0';
-
+ retval = __ms_vsnprintf(buffer, n, format, argptr);
va_end(argptr);
return retval;
}
lib/libc/mingw/stdio/strtof.c
@@ -4,8 +4,24 @@
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#include <stdlib.h>
+#include <float.h>
+#include <errno.h>
+#include <math.h>
float strtof( const char *nptr, char **endptr)
{
- return (strtod(nptr, endptr));
+ double ret = strtod(nptr, endptr);
+ if (isfinite(ret)) {
+ /* Check for cases that aren't out of range for doubles, but that are
+ * for floats. */
+ if (ret > FLT_MAX)
+ errno = ERANGE;
+ else if (ret < -FLT_MAX)
+ errno = ERANGE;
+ else if (ret > 0 && ret < FLT_MIN)
+ errno = ERANGE;
+ else if (ret < 0 && ret > -FLT_MIN)
+ errno = ERANGE;
+ }
+ return ret;
}
lib/libc/mingw/stdio/vfscanf.c
@@ -11,18 +11,22 @@ extern int __ms_vfscanf_internal (
FILE * s,
const char * format,
va_list arg,
+ size_t count,
int (*func)(FILE * __restrict__, const char * __restrict__, ...))
asm("__argtos");
+extern size_t __ms_scanf_max_arg_count_internal (const char * format);
+
int __ms_vfscanf (FILE * __restrict__ stream, const char * __restrict__ format, va_list arg)
{
+ size_t count = __ms_scanf_max_arg_count_internal (format);
int ret;
#if defined(_AMD64_) || defined(__x86_64__) || \
defined(_X86_) || defined(__i386__) || \
defined(_ARM_) || defined(__arm__) || \
defined(_ARM64_) || defined(__aarch64__)
- ret = __ms_vfscanf_internal (stream, format, arg, fscanf);
+ ret = __ms_vfscanf_internal (stream, format, arg, count, fscanf);
#else
#error "unknown platform"
#endif
lib/libc/mingw/stdio/vfwscanf.c
@@ -11,19 +11,23 @@ extern int __ms_vfwscanf_internal (
FILE * s,
const wchar_t * format,
va_list arg,
+ size_t count,
int (*func)(FILE * __restrict__, const wchar_t * __restrict__, ...))
asm("__argtos");
+extern size_t __ms_wscanf_max_arg_count_internal (const wchar_t * format);
+
int __ms_vfwscanf (FILE * __restrict__ stream,
const wchar_t * __restrict__ format, va_list arg)
{
+ size_t count = __ms_wscanf_max_arg_count_internal (format);
int ret;
#if defined(_AMD64_) || defined(__x86_64__) || \
defined(_X86_) || defined(__i386__) || \
defined(_ARM_) || defined(__arm__) || \
defined (_ARM64_) || defined (__aarch64__)
- ret = __ms_vfwscanf_internal (stream, format, arg, fwscanf);
+ ret = __ms_vfwscanf_internal (stream, format, arg, count, fwscanf);
#else
#error "unknown platform"
#endif
lib/libc/mingw/stdio/vsnprintf.c
@@ -13,19 +13,19 @@ int __cdecl __ms_vsnprintf (char *s,size_t n,const char *format,va_list arg)
/* _vsnprintf() does not work with zero length buffer
* so count number of character by _vscprintf() call */
- if (n == 0 || !s)
+ if (n == 0)
return _vscprintf(format, arg);
retval = _vsnprintf(s, n, format, arg);
+ /* _vsnprintf() does not fill trailing null byte if there is not place for it */
+ if (retval < 0 || (size_t)retval == n)
+ s[n-1] = '\0';
+
/* _vsnprintf() returns negative number if buffer is too small
* so count number of character by _vscprintf() call */
if (retval < 0)
retval = _vscprintf(format, arg);
- /* _vsnprintf() does not fill trailing null byte if there is not place for it */
- if ((size_t)retval >= n)
- s[n-1] = '\0';
-
return retval;
}
lib/libc/mingw/stdio/vsscanf.c
@@ -11,19 +11,23 @@ extern int __ms_vsscanf_internal (
const char * s,
const char * format,
va_list arg,
+ size_t count,
int (*func)(const char * __restrict__, const char * __restrict__, ...))
asm("__argtos");
+extern size_t __ms_scanf_max_arg_count_internal (const char * format);
+
int __ms_vsscanf (const char * __restrict__ s,
const char * __restrict__ format, va_list arg)
{
+ size_t count = __ms_scanf_max_arg_count_internal (format);
int ret;
#if defined(_AMD64_) || defined(__x86_64__) || \
defined(_X86_) || defined(__i386__) || \
defined(_ARM_) || defined(__arm__) || \
defined(_ARM64_) || defined(__aarch64__)
- ret = __ms_vsscanf_internal (s, format, arg, sscanf);
+ ret = __ms_vsscanf_internal (s, format, arg, count, sscanf);
#else
#error "unknown platform"
#endif
lib/libc/mingw/stdio/vswscanf.c
@@ -11,19 +11,23 @@ extern int __ms_vswscanf_internal (
const wchar_t * s,
const wchar_t * format,
va_list arg,
+ size_t count,
int (*func)(const wchar_t * __restrict__, const wchar_t * __restrict__, ...))
asm("__argtos");
+extern size_t __ms_wscanf_max_arg_count_internal (const wchar_t * format);
+
int __ms_vswscanf(const wchar_t * __restrict__ s, const wchar_t * __restrict__ format,
va_list arg)
{
+ size_t count = __ms_wscanf_max_arg_count_internal (format);
int ret;
#if defined(_AMD64_) || defined(__x86_64__) || \
defined(_X86_) || defined(__i386__) || \
defined(_ARM_) || defined(__arm__) || \
defined(_ARM64_) || defined(__aarch64__)
- ret = __ms_vswscanf_internal (s, format, arg, swscanf);
+ ret = __ms_vswscanf_internal (s, format, arg, count, swscanf);
#else
#error "unknown platform"
#endif
lib/libc/mingw/stdio/vwscanf.c
@@ -10,12 +10,7 @@
#include <wchar.h>
#include <stdio.h>
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wimplicit-function-declaration"
-
int __ms_vwscanf (const wchar_t * __restrict__ format, va_list arg)
{
return __ms_vfwscanf(stdin, format, arg);
}
-
-#pragma clang diagnostic pop
src/mingw.zig
@@ -677,7 +677,6 @@ const mingwex_generic_src = [_][]const u8{
"math" ++ path.sep_str ++ "cbrt.c",
"math" ++ path.sep_str ++ "cbrtf.c",
"math" ++ path.sep_str ++ "cbrtl.c",
- "math" ++ path.sep_str ++ "cephes_emath.c",
"math" ++ path.sep_str ++ "copysign.c",
"math" ++ path.sep_str ++ "copysignf.c",
"math" ++ path.sep_str ++ "coshf.c",
@@ -810,7 +809,6 @@ const mingwex_generic_src = [_][]const u8{
"misc" ++ path.sep_str ++ "strnlen.c",
"misc" ++ path.sep_str ++ "strsafe.c",
"misc" ++ path.sep_str ++ "strtoimax.c",
- "misc" ++ path.sep_str ++ "strtold.c",
"misc" ++ path.sep_str ++ "strtoumax.c",
"misc" ++ path.sep_str ++ "tdelete.c",
"misc" ++ path.sep_str ++ "tfind.c",