diff --git a/src/windows/TODO b/src/windows/TODO deleted file mode 100644 index 708ec23..0000000 --- a/src/windows/TODO +++ /dev/null @@ -1,86 +0,0 @@ -* Get heap-profile-table.cc using DeleteMatchingFiles -* Get heap-profile-table.cc using FillProcSelfMaps, DumpProcSelfMaps -* Play around with ExperimentalGetStackTrace -* Support the windows-level memory-allocation functions? See - /home/build/googleclient/earth/client/tools/memorytracking/client/memorytrace/src/memorytrace.cpp - /home/build/googleclient/total_recall/common/sitestep/* - http://www.internals.com/articles/apispy/apispy.htm - http://www.wheaty.net/APISPY32.zip -* Verify /proc/xxx/maps: - http://www.geocities.com/wah_java_dotnet/procmap/index.html -* Figure out how to edit the executable IAT so tcmalloc.dll is loaded first -* Use QueryPerformanceCounter instead of GetTickCount() (also for sparsehash) - ----- -More info on windows-level memory-allocation functions: - C runtime malloc - LocalAlloc - GlobalAlloc - HeapAlloc - VirtualAlloc - mmap stuff - -malloc, LocalAlloc and GlobalAlloc call HeapAlloc, which calls -VirtualAlloc when needed, which calls VirtualAllocEx (the __sbrk equiv?) - -siggi sez: If you want to do a generic job, you probably need to -preserve the semantics of all of these Win32 calls: - Heap32First - Heap32ListFirst - Heap32ListNext - Heap32Next - HeapAlloc - HeapCompact - HeapCreate - HeapCreateTagsW - HeapDestroy - HeapExtend - HeapFree - HeapLock - HeapQueryInformation - HeapQueryTagW - HeapReAlloc - HeapSetInformation - HeapSize - HeapSummary - HeapUnlock - HeapUsage - HeapValidate - HeapWalk - -kernel32.dll export functions and nt.dll export functions: - http://www.shorthike.com/svn/trunk/tools_win32/dm/lib/kernel32.def - http://undocumented.ntinternals.net/ - -You can edit the executable IAT to have the patching DLL be the -first one loaded. - -Most complete way to intercept system calls is patch the functions -(not the IAT). - -Microsoft has somee built-in routines for heap-checking: - http://support.microsoft.com/kb/268343 - ----- -Itimer replacement: - http://msdn2.microsoft.com/en-us/library/ms712713.aspx - ----- -Changes I've had to make to the project file: - -0) When creating the project file, click on "no autogenerated files" - ---- For each project: -1) Alt-F7 -> General -> [pulldown "all configurations" ] -> Output Directory -> $(SolutionDir)$(ConfigurationName) -2) Alt-F7 -> General -> [pulldown "all configurations" ] -> Intermediate Directory -> $(ConfigurationName) - ---- For each .cc file: -1) Alt-F7 -> C/C++ -> General -> [pulldown "all configurations"] -> Additional Include Directives --> src/windows + src/ -2) Alt-F7 -> C/C++ -> Code Generation -> Runtime Library -> Multi-threaded, debug/release, DLL or not - ---- For DLL: -3) Alt-F7 -> Linker -> Input -> [pulldown "all configurations" ] -> Module Definition File -> src\windows\vc7and8.def ---- For binaries depending on a DLL: -3) Right-click on project -> Project Dependencies -> [add dll] ---- For static binaries (not depending on a DLL) -3) Alt-F7 -> C/C++ -> Command Line -> [pulldown "all configurations"] -> /D PERFTOOLS_DLL_DECL=