Changeset 13 in kStuff
- Timestamp:
- Apr 20, 2008 10:13:43 AM (17 years ago)
- Location:
- trunk/kProfiler2
- Files:
-
- 1 added
- 9 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/kProfiler2/Makefile.kmk
r12 r13 106 106 kPrf2_SOURCES.win = \ 107 107 dllmain-win.cpp \ 108 kPrf2WinApiWrapperHlp.c \ 108 109 prf$(BUILD_TARGET_ARCH)msc.asm \ 109 110 kPrf2-win-$(BUILD_TARGET_ARCH).def … … 135 136 136 137 DLLS.win += kPrf2WinApiWrappers 137 kPrf2WinApiWrappers_TEMPLATE = k StuffEXE138 kPrf2WinApiWrappers_TEMPLATE = kPrf2 138 139 kPrf2WinApiWrappers_CFLAGS = -GH -Gh 140 kPrf2WinApiWrappers_LDFLAGS.win.x86 = -Entry:DllMain@12 141 kPrf2WinApiWrappers_LDFLAGS.win.amd64 = -Entry:DllMain 139 142 kPrf2WinApiWrappers_SOURCES = \ 140 143 kPrf2WinApiWrappers.c \ … … 161 164 $(APPEND) [email protected] 'PVOID RtlMoveMemory( PVOID pvDst, PVOID pvSrc, SIZE_T cb );' 162 165 $(APPEND) [email protected] 'VOID NTAPI RtlUnwind( PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue );' 163 # $(APPEND) [email protected] 'VOID NTAPI RtlUnwindEx( FRAME_POINTERS TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable );' 166 $(APPEND) [email protected] 'VOID NTAPI RtlUnwindEx( FRAME_POINTERS TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable );' 167 $(APPEND) [email protected] 'ULONGLONG WINAPI RtlVirtualUnwind( ULONG HandlerType, ULONGLONG ImageBase, ULONGLONG ControlPC, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PBOOLEAN InFunction, PFRAME_POINTERS EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers );' 168 $(APPEND) [email protected] 'PVOID WINAPI RtlPcToFileHeader( PVOID PcValue, PVOID * BaseOfImage );' 169 $(APPEND) [email protected] 'PVOID WINAPI RtlLookupFunctionEntry( ULONGLONG ControlPC, PULONGLONG ImageBase, PULONGLONG TargetGp );' 170 $(APPEND) [email protected] 'void WINAPI RtlRaiseException(PEXCEPTION_RECORD pXcpRec);' 164 171 $(APPEND) [email protected] 'int WINAPI uaw_lstrcmpW( LPCUWSTR lpString1, LPCUWSTR lpString2 );' 165 172 $(APPEND) [email protected] 'int WINAPI uaw_lstrcmpiW( LPCUWSTR lpString1, LPCUWSTR lpString2 );' -
trunk/kProfiler2/kPrf2-win-amd64.def
r2 r13 30 30 _pexit 31 31 KPrfInit 32 kPrf2WrapResolve 32 33 33 -
trunk/kProfiler2/kPrf2-win-x86.def
r2 r13 30 30 _pexit 31 31 KPrfInit 32 32 kPrf2WrapResolve -
trunk/kProfiler2/kPrf2WinApi-dumpbin.sed
r11 r13 56 56 s/[[:space:]][[:space:]]*/ /g 57 57 /^$/b drop_line 58 59 # Filter out APIs that hasn't been implemented. 60 /AddLocalAlternateComputerNameA/b drop_line 61 /AddLocalAlternateComputerNameW/b drop_line 62 /EnumerateLocalComputerNamesA/b drop_line 63 /EnumerateLocalComputerNamesW/b drop_line 64 /RemoveLocalAlternateComputerNameA/b drop_line 65 /RemoveLocalAlternateComputerNameW/b drop_line 66 /SetLocalPrimaryComputerNameA/b drop_line 67 /SetLocalPrimaryComputerNameW/b drop_line 68 /__C_specific_handler/b drop_line 69 /__misaligned_access/b drop_line 70 /_local_unwind/b drop_line 71 58 72 b end 59 73 -
trunk/kProfiler2/kPrf2WinApi-pre.sed
r11 r13 1 # $Id :$1 # $Id$ 2 2 ## @file 3 3 # This SED script will try normalize a windows header -
trunk/kProfiler2/kPrf2WinApiWrapperHlp.c
r12 r13 1 1 /* $Id$ */ 2 2 /** @file 3 * Wrappers for a number of common Windows APIs.3 * Helpers for the Windows API wrapper DLL. 4 4 */ 5 5 … … 26 26 * Header Files * 27 27 *******************************************************************************/ 28 #define _ADVAPI32_29 #define _KERNEL32_30 #define _WIN32_WINNT 0x060031 #define UNICODE32 28 #include <Windows.h> 33 #include <TLHelp32.h> 34 #include <k/kDefs.h> 35 36 #if K_ARCH == K_ARCH_X86_32 37 typedef PVOID PRUNTIME_FUNCTION; 38 typedef FARPROC PGET_RUNTIME_FUNCTION_CALLBACK; 39 #endif 40 41 /******************************************************************************* 42 * Structures and Typedefs * 43 *******************************************************************************/ 44 typedef struct KPRF2WRAPDLL 45 { 46 HMODULE hmod; 47 char szName[32]; 48 } KPRF2WRAPDLL; 49 typedef KPRF2WRAPDLL *PKPRF2WRAPDLL; 50 typedef KPRF2WRAPDLL const *PCKPRF2WRAPDLL; 51 52 53 /* TODO (amd64): 54 55 AddLocalAlternateComputerNameA 56 AddLocalAlternateComputerNameW 57 EnumerateLocalComputerNamesA 58 EnumerateLocalComputerNamesW 59 RemoveLocalAlternateComputerNameA 60 RemoveLocalAlternateComputerNameW 61 62 RtlLookupFunctionEntry 63 RtlPcToFileHeader 64 RtlRaiseException 65 RtlVirtualUnwind 66 67 SetConsoleCursor 68 SetLocalPrimaryComputerNameA 69 SetLocalPrimaryComputerNameW 70 __C_specific_handler 71 __misaligned_access 72 _local_unwind 73 */ 74 75 /******************************************************************************* 76 * Global Variables * 77 *******************************************************************************/ 78 KPRF2WRAPDLL g_Kernel32 = 79 { 80 INVALID_HANDLE_VALUE, "KERNEL32" 81 }; 82 83 84 /******************************************************************************* 85 * Internal Functions * 86 *******************************************************************************/ 87 FARPROC kPrf2WrapResolve(void **ppfn, const char *pszName, PKPRF2WRAPDLL pDll); 29 #include "kPRf2WinApiWRapperHlp.h" 88 30 89 31 … … 104 46 105 47 106 #include "kPrf2WinApiWrappers-kernel32.h" -
trunk/kProfiler2/kPrf2WinApiWrappers-kernel32.h
r11 r13 9188 9188 } 9189 9189 9190 typedef VOID NTAPI FN_RtlUnwindEx( FRAME_POINTERS TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable ); 9191 __declspec(dllexport) VOID NTAPI kPrf2Wrap_RtlUnwindEx( FRAME_POINTERS TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable ) 9192 { 9193 static FN_RtlUnwindEx *pfn = 0; 9194 if (!pfn) 9195 kPrf2WrapResolve((void **)&pfn, "RtlUnwindEx", &g_Kernel32); 9196 pfn( TargetFrame, TargetIp, ExceptionRecord, ReturnValue, ContextRecord, HistoryTable ); 9197 } 9198 9199 typedef ULONGLONG WINAPI FN_RtlVirtualUnwind( ULONG HandlerType, ULONGLONG ImageBase, ULONGLONG ControlPC, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PBOOLEAN InFunction, PFRAME_POINTERS EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers ); 9200 __declspec(dllexport) ULONGLONG WINAPI kPrf2Wrap_RtlVirtualUnwind( ULONG HandlerType, ULONGLONG ImageBase, ULONGLONG ControlPC, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PBOOLEAN InFunction, PFRAME_POINTERS EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers ) 9201 { 9202 static FN_RtlVirtualUnwind *pfn = 0; 9203 if (!pfn) 9204 kPrf2WrapResolve((void **)&pfn, "RtlVirtualUnwind", &g_Kernel32); 9205 return pfn( HandlerType, ImageBase, ControlPC, FunctionEntry, ContextRecord, InFunction, EstablisherFrame, ContextPointers ); 9206 } 9207 9208 typedef PVOID WINAPI FN_RtlPcToFileHeader( PVOID PcValue, PVOID * BaseOfImage ); 9209 __declspec(dllexport) PVOID WINAPI kPrf2Wrap_RtlPcToFileHeader( PVOID PcValue, PVOID * BaseOfImage ) 9210 { 9211 static FN_RtlPcToFileHeader *pfn = 0; 9212 if (!pfn) 9213 kPrf2WrapResolve((void **)&pfn, "RtlPcToFileHeader", &g_Kernel32); 9214 return pfn( PcValue, BaseOfImage ); 9215 } 9216 9217 typedef PVOID WINAPI FN_RtlLookupFunctionEntry( ULONGLONG ControlPC, PULONGLONG ImageBase, PULONGLONG TargetGp ); 9218 __declspec(dllexport) PVOID WINAPI kPrf2Wrap_RtlLookupFunctionEntry( ULONGLONG ControlPC, PULONGLONG ImageBase, PULONGLONG TargetGp ) 9219 { 9220 static FN_RtlLookupFunctionEntry *pfn = 0; 9221 if (!pfn) 9222 kPrf2WrapResolve((void **)&pfn, "RtlLookupFunctionEntry", &g_Kernel32); 9223 return pfn( ControlPC, ImageBase, TargetGp ); 9224 } 9225 9226 typedef void WINAPI FN_RtlRaiseException(PEXCEPTION_RECORD pXcpRec); 9227 __declspec(dllexport) void WINAPI kPrf2Wrap_RtlRaiseException(PEXCEPTION_RECORD pXcpRec) 9228 { 9229 static FN_RtlRaiseException *pfn = 0; 9230 if (!pfn) 9231 kPrf2WrapResolve((void **)&pfn, "RtlRaiseException", &g_Kernel32); 9232 pfn( pXcpRec); 9233 } 9234 9190 9235 typedef int WINAPI FN_uaw_lstrcmpW( LPCUWSTR lpString1, LPCUWSTR lpString2 ); 9191 9236 __declspec(dllexport) int WINAPI kPrf2Wrap_uaw_lstrcmpW( LPCUWSTR lpString1, LPCUWSTR lpString2 ) -
trunk/kProfiler2/kPrf2WinApiWrappers.c
r12 r13 33 33 #include <TLHelp32.h> 34 34 #include <k/kDefs.h> 35 #include "kPrf2WinApiWrapperHlp.h" 35 36 36 37 #if K_ARCH == K_ARCH_X86_32 … … 39 40 #endif 40 41 42 /* RtlUnwindEx is used by msvcrt on amd64, but winnt.h only defines it for IA64... */ 43 typedef struct _FRAME_POINTERS { 44 ULONGLONG MemoryStackFp; 45 ULONGLONG BackingStoreFp; 46 } FRAME_POINTERS, *PFRAME_POINTERS; 47 typedef PVOID PUNWIND_HISTORY_TABLE; 48 typedef PVOID PKNONVOLATILE_CONTEXT_POINTERS; 49 50 41 51 /******************************************************************************* 42 * Structures and Typedefs*52 * Global Variables * 43 53 *******************************************************************************/ 44 typedef struct KPRF2WRAPDLL 54 KPRF2WRAPDLL g_Kernel32 = 45 55 { 46 HMODULE hmod; 47 char szName[32]; 48 } KPRF2WRAPDLL; 49 typedef KPRF2WRAPDLL *PKPRF2WRAPDLL; 50 typedef KPRF2WRAPDLL const *PCKPRF2WRAPDLL; 56 INVALID_HANDLE_VALUE, "KERNEL32" 57 }; 51 58 59 60 /* 61 * Include the generated code. 62 */ 63 #include "kPrf2WinApiWrappers-kernel32.h" 52 64 53 65 /* TODO (amd64): … … 71 83 __misaligned_access 72 84 _local_unwind 85 73 86 */ 74 87 75 /******************************************************************************* 76 * Global Variables * 77 *******************************************************************************/ 78 KPRF2WRAPDLL g_Kernel32 = 88 89 /** 90 * The DLL Main for the Windows API wrapper DLL. 91 * 92 * @returns Success indicator. 93 * @param hInstDll The instance handle of the DLL. (i.e. the module handle) 94 * @param fdwReason The reason why we're here. This is a 'flag' for reasons of 95 * tradition, it's really a kind of enum. 96 * @param pReserved Reserved / undocumented something. 97 */ 98 BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, PVOID pReserved) 79 99 { 80 INVALID_HANDLE_VALUE, "KERNEL32" 81 }; 100 switch (fdwReason) 101 { 102 case DLL_PROCESS_ATTACH: 103 break; 82 104 105 case DLL_PROCESS_DETACH: 106 break; 83 107 84 /******************************************************************************* 85 * Internal Functions * 86 *******************************************************************************/ 87 FARPROC kPrf2WrapResolve(void **ppfn, const char *pszName, PKPRF2WRAPDLL pDll); 108 case DLL_THREAD_ATTACH: 109 break; 88 110 89 90 FARPROC kPrf2WrapResolve(void **ppfn, const char *pszName, PKPRF2WRAPDLL pDll) 91 { 92 FARPROC pfn; 93 HMODULE hmod = pDll->hmod; 94 if (hmod == INVALID_HANDLE_VALUE) 95 { 96 hmod = LoadLibraryA(pDll->szName); 97 pDll->hmod = hmod; 111 case DLL_THREAD_DETACH: 112 break; 98 113 } 99 114 100 pfn = GetProcAddress(hmod, pszName); 101 *ppfn = (void *)pfn; 102 return pfn; 115 return TRUE; 103 116 } 104 117 105 106 #include "kPrf2WinApiWrappers-kernel32.h" -
trunk/kProfiler2/kPrf2WinApiWrappersImp-amd64.def
r11 r13 6 6 AddConsoleAliasA=kPrf2Wrap_AddConsoleAliasA 7 7 AddConsoleAliasW=kPrf2Wrap_AddConsoleAliasW 8 AddLocalAlternateComputerNameA=kPrf2Wrap_AddLocalAlternateComputerNameA9 AddLocalAlternateComputerNameW=kPrf2Wrap_AddLocalAlternateComputerNameW10 8 AddRefActCtx=kPrf2Wrap_AddRefActCtx 11 9 AddVectoredContinueHandler=kPrf2Wrap_AddVectoredContinueHandler … … 156 154 EnumUILanguagesA=kPrf2Wrap_EnumUILanguagesA 157 155 EnumUILanguagesW=kPrf2Wrap_EnumUILanguagesW 158 EnumerateLocalComputerNamesA=kPrf2Wrap_EnumerateLocalComputerNamesA159 EnumerateLocalComputerNamesW=kPrf2Wrap_EnumerateLocalComputerNamesW160 156 EraseTape=kPrf2Wrap_EraseTape 161 157 EscapeCommFunction=kPrf2Wrap_EscapeCommFunction … … 616 612 RemoveDirectoryA=kPrf2Wrap_RemoveDirectoryA 617 613 RemoveDirectoryW=kPrf2Wrap_RemoveDirectoryW 618 RemoveLocalAlternateComputerNameA=kPrf2Wrap_RemoveLocalAlternateComputerNameA619 RemoveLocalAlternateComputerNameW=kPrf2Wrap_RemoveLocalAlternateComputerNameW620 614 RemoveVectoredContinueHandler=kPrf2Wrap_RemoveVectoredContinueHandler 621 615 RemoveVectoredExceptionHandler=kPrf2Wrap_RemoveVectoredExceptionHandler … … 703 697 SetInformationJobObject=kPrf2Wrap_SetInformationJobObject 704 698 SetLastError=kPrf2Wrap_SetLastError 705 SetLocalPrimaryComputerNameA=kPrf2Wrap_SetLocalPrimaryComputerNameA706 SetLocalPrimaryComputerNameW=kPrf2Wrap_SetLocalPrimaryComputerNameW707 699 SetLocalTime=kPrf2Wrap_SetLocalTime 708 700 SetLocaleInfoA=kPrf2Wrap_SetLocaleInfoA … … 827 819 WriteTapemark=kPrf2Wrap_WriteTapemark 828 820 ZombifyActCtx=kPrf2Wrap_ZombifyActCtx 829 __C_specific_handler=kPrf2Wrap___C_specific_handler830 __misaligned_access=kPrf2Wrap___misaligned_access831 821 _hread=kPrf2Wrap__hread 832 822 _hwrite=kPrf2Wrap__hwrite … … 834 824 _lcreat=kPrf2Wrap__lcreat 835 825 _llseek=kPrf2Wrap__llseek 836 _local_unwind=kPrf2Wrap__local_unwind837 826 _lopen=kPrf2Wrap__lopen 838 827 _lread=kPrf2Wrap__lread -
trunk/kProfiler2/kPrf2WinApiWrappersImp-x86.def
r12 r13 11 11 _AddConsoleAliasW@12 12 12 _AddConsoleAliasW@12 13 _AddLocalAlternateComputerNameA@814 _AddLocalAlternateComputerNameA@815 _AddLocalAlternateComputerNameW@816 _AddLocalAlternateComputerNameW@817 13 _AddRefActCtx@4 18 14 _AddRefActCtx@4 … … 311 307 _EnumUILanguagesW@12 312 308 _EnumUILanguagesW@12 313 _EnumerateLocalComputerNamesA@16314 _EnumerateLocalComputerNamesA@16315 _EnumerateLocalComputerNamesW@16316 _EnumerateLocalComputerNamesW@16317 309 _EraseTape@12 318 310 _EraseTape@12 … … 1243 1235 _RemoveDirectoryW@4 1244 1236 _RemoveDirectoryW@4 1245 _RemoveLocalAlternateComputerNameA@81246 _RemoveLocalAlternateComputerNameA@81247 _RemoveLocalAlternateComputerNameW@81248 _RemoveLocalAlternateComputerNameW@81249 1237 _RemoveVectoredContinueHandler@4 1250 1238 _RemoveVectoredContinueHandler@4 … … 1397 1385 _SetLastError@4 1398 1386 _SetLastError@4 1399 _SetLocalPrimaryComputerNameA@81400 _SetLocalPrimaryComputerNameA@81401 _SetLocalPrimaryComputerNameW@81402 _SetLocalPrimaryComputerNameW@81403 1387 _SetLocalTime@4 1404 1388 _SetLocalTime@4
Note:
See TracChangeset
for help on using the changeset viewer.