Index: trunk/src/imagehlp/access.cpp
===================================================================
--- trunk/src/imagehlp/access.cpp	(revision 3634)
+++ trunk/src/imagehlp/access.cpp	(revision 3634)
@@ -0,0 +1,304 @@
+/*
+ *	IMAGEHLP library
+ *
+ *	Copyright 1998	Patrik Stridvall
+ */
+
+#include <os2win.h>
+#include <odinwrap.h>
+#include <imagehlp.h>
+#include <heapstring.h>
+
+ODINDEBUGCHANNEL(imagehlp)
+
+/***********************************************************************
+ *           Data
+ */
+
+static PLOADED_IMAGE IMAGEHLP_pFirstLoadedImage=NULL;
+static PLOADED_IMAGE IMAGEHLP_pLastLoadedImage=NULL;
+
+static LOADED_IMAGE IMAGEHLP_EmptyLoadedImage = {
+  NULL,       /* ModuleName */
+  0xffffffff, /* hFile */
+  NULL,       /* MappedAddress */
+  NULL,       /* FileHeader */
+  NULL,       /* LastRvaSection */
+  0,          /* NumberOfSections */
+  NULL,       /* Sections */
+  1,          /* Characteristics */
+  FALSE,      /* fSystemImage */
+  FALSE,      /* fDOSImage */
+  { &IMAGEHLP_EmptyLoadedImage.Links, &IMAGEHLP_EmptyLoadedImage.Links }, /* Links */
+  148,        /* SizeOfImage; */
+};
+
+/***********************************************************************
+ *		EnumerateLoadedModules (IMAGEHLP.@)
+ */
+BOOL WINAPI EnumerateLoadedModules(
+  HANDLE hProcess,
+  PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,
+  PVOID UserContext)
+{
+  dprintf(("(0x%08x, %p, %p): stub\n",
+    hProcess, EnumLoadedModulesCallback, UserContext
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		GetTimestampForLoadedLibrary (IMAGEHLP.@)
+ */
+DWORD WINAPI GetTimestampForLoadedLibrary(HMODULE Module)
+{
+  dprintf(("(0x%08x): stub\n", Module));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0;
+}
+
+/***********************************************************************
+ *		GetImageConfigInformation (IMAGEHLP.@)
+ */
+BOOL WINAPI GetImageConfigInformation(
+  PLOADED_IMAGE LoadedImage,
+  PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation)
+{
+  dprintf(("(%p, %p): stub\n",
+    LoadedImage, ImageConfigInformation
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		GetImageUnusedHeaderBytes (IMAGEHLP.@)
+ */
+DWORD WINAPI GetImageUnusedHeaderBytes(
+  PLOADED_IMAGE LoadedImage,
+  LPDWORD SizeUnusedHeaderBytes)
+{
+  dprintf(("(%p, %p): stub\n",
+    LoadedImage, SizeUnusedHeaderBytes
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0;
+}
+
+/***********************************************************************
+ *		ImageDirectoryEntryToData (IMAGEHLP.@)
+ */
+PVOID WINAPI ImageDirectoryEntryToData(
+  PVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size)
+{
+  dprintf(("(%p, %d, %hd, %p): stub\n",
+    Base, MappedAsImage, DirectoryEntry, Size
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return NULL;
+}
+
+/***********************************************************************
+ *		ImageLoad (IMAGEHLP.@)
+ */
+PLOADED_IMAGE WINAPI ImageLoad(LPSTR DllName, LPSTR DllPath)
+{
+  PLOADED_IMAGE pLoadedImage = 
+    (_LOADED_IMAGE*)HeapAlloc(IMAGEHLP_hHeap, 0, sizeof(LOADED_IMAGE));
+  return pLoadedImage;
+}
+
+/***********************************************************************
+ *		ImageNtHeader (IMAGEHLP.@)
+ */
+PIMAGE_NT_HEADERS WINAPI ImageNtHeader(PVOID Base)
+{
+  return (PIMAGE_NT_HEADERS)
+    ((LPBYTE) Base + ((PIMAGE_DOS_HEADER) Base)->e_lfanew);
+}
+
+/***********************************************************************
+ *		ImageRvaToSection (IMAGEHLP.@)
+ */
+PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(
+  PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva)
+{
+  dprintf(("(%p, %p, %ld): stub\n", NtHeaders, Base, Rva));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return NULL;
+}
+
+/***********************************************************************
+ *		ImageRvaToVa (IMAGEHLP.@)
+ */
+PVOID WINAPI ImageRvaToVa(
+  PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva,
+  PIMAGE_SECTION_HEADER *LastRvaSection)
+{
+  dprintf(("(%p, %p, %ld, %p): stub\n",
+    NtHeaders, Base, Rva, LastRvaSection
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return NULL;
+}
+
+/***********************************************************************
+ *		ImageUnload (IMAGEHLP.@)
+ */
+BOOL WINAPI ImageUnload(PLOADED_IMAGE pLoadedImage)
+{
+  LIST_ENTRY *pCurrent, *pFind;
+  if(!IMAGEHLP_pFirstLoadedImage || !pLoadedImage)
+    {
+      /* No image loaded or null pointer */
+      SetLastError(ERROR_INVALID_PARAMETER);
+      return FALSE;
+    }
+
+  pFind=&pLoadedImage->Links;
+  pCurrent=&IMAGEHLP_pFirstLoadedImage->Links;
+  while((pCurrent != pFind) && 
+    (pCurrent != NULL)) 
+      pCurrent = pCurrent->Flink;
+  if(!pCurrent)
+    {
+      /* Not found */
+      SetLastError(ERROR_INVALID_PARAMETER);
+      return FALSE;
+    }
+
+  if(pCurrent->Blink)
+    pCurrent->Blink->Flink = pCurrent->Flink;
+  else
+    IMAGEHLP_pFirstLoadedImage = pCurrent->Flink?CONTAINING_RECORD(
+      pCurrent->Flink, LOADED_IMAGE, Links):NULL;
+
+  if(pCurrent->Flink)
+    pCurrent->Flink->Blink = pCurrent->Blink;
+  else
+    IMAGEHLP_pLastLoadedImage = pCurrent->Blink?CONTAINING_RECORD(
+      pCurrent->Blink, LOADED_IMAGE, Links):NULL;
+
+  return FALSE;
+}
+
+/***********************************************************************
+ *		MapAndLoad (IMAGEHLP.@)
+ */
+BOOL WINAPI MapAndLoad(
+  LPSTR pszImageName, LPSTR pszDllPath, PLOADED_IMAGE pLoadedImage,
+  BOOL bDotDll, BOOL bReadOnly)
+{
+  CHAR szFileName[MAX_PATH];
+  HANDLE hFile = (HANDLE) NULL;
+  HANDLE hFileMapping = (HANDLE) NULL;
+  HMODULE hModule = (HMODULE) NULL;
+  PIMAGE_NT_HEADERS pNtHeader = NULL;
+
+  /* PathCombine(&szFileName, pszDllPath, pszImageName); */
+  /* PathRenameExtension(&szFileName, bDotDll?:"dll":"exe"); */
+
+  /* FIXME: Check if the file already loaded (use IMAGEHLP_pFirstLoadedImage) */
+  if(!(hFile = CreateFileA(
+    szFileName, GENERIC_READ, 1, /* FIXME: FILE_SHARE_READ not defined */
+    NULL, OPEN_EXISTING, 0, (HANDLE) NULL)))
+    {
+      SetLastError(ERROR_FILE_NOT_FOUND);
+      goto Error;
+    }
+
+  if(!(hFileMapping = CreateFileMappingA(
+    hFile, NULL, PAGE_READONLY | SEC_COMMIT, 0, 0, NULL)))
+    {
+      DWORD dwLastError = GetLastError();
+      dprintf(("CreateFileMapping: Error = %ld\n", dwLastError));
+      SetLastError(dwLastError);
+      goto Error;
+    }
+  CloseHandle(hFile);
+  hFile = (HANDLE) NULL;
+
+  if(!(hModule = (HMODULE) MapViewOfFile(
+    hFileMapping, FILE_MAP_READ, 0, 0, 0)))
+    {
+      DWORD dwLastError = GetLastError();
+      dprintf(("MapViewOfFile: Error = %ld\n", dwLastError));
+      SetLastError(dwLastError);
+      goto Error;
+    }
+
+  CloseHandle(hFileMapping);
+  hFileMapping=(HANDLE) NULL;
+
+  pLoadedImage = (PLOADED_IMAGE) HeapAlloc(
+    IMAGEHLP_hHeap, 0, sizeof(LOADED_IMAGE)
+  );
+
+  pNtHeader = ImageNtHeader((PVOID) hModule);
+
+  pLoadedImage->ModuleName =
+    HEAP_strdupA(IMAGEHLP_hHeap, 0, pszDllPath); /* FIXME: Correct? */
+  pLoadedImage->hFile = hFile;
+  pLoadedImage->MappedAddress = (PUCHAR) hModule;
+  pLoadedImage->FileHeader = pNtHeader;
+  pLoadedImage->Sections = (PIMAGE_SECTION_HEADER)
+    ((LPBYTE) &pNtHeader->OptionalHeader +
+      pNtHeader->FileHeader.SizeOfOptionalHeader);
+  pLoadedImage->NumberOfSections =
+    pNtHeader->FileHeader.NumberOfSections;
+  pLoadedImage->SizeOfImage =
+    pNtHeader->OptionalHeader.SizeOfImage;
+  pLoadedImage->Characteristics =
+    pNtHeader->FileHeader.Characteristics;
+  pLoadedImage->LastRvaSection = pLoadedImage->Sections;
+
+  pLoadedImage->fSystemImage = FALSE; /* FIXME */
+  pLoadedImage->fDOSImage = FALSE;    /* FIXME */
+
+  /* FIXME: Make thread safe */
+  pLoadedImage->Links.Flink = NULL;
+  pLoadedImage->Links.Blink = &IMAGEHLP_pLastLoadedImage->Links;
+  if(IMAGEHLP_pLastLoadedImage)
+    IMAGEHLP_pLastLoadedImage->Links.Flink = &pLoadedImage->Links;
+  IMAGEHLP_pLastLoadedImage = pLoadedImage;
+  if(!IMAGEHLP_pFirstLoadedImage)
+    IMAGEHLP_pFirstLoadedImage = pLoadedImage;
+
+  return TRUE;
+
+Error:
+  if(hModule)
+    UnmapViewOfFile((PVOID) hModule);
+  if(hFileMapping)
+    CloseHandle(hFileMapping);
+  if(hFile)
+    CloseHandle(hFile);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SetImageConfigInformation (IMAGEHLP.@)
+ */
+BOOL WINAPI SetImageConfigInformation(
+  PLOADED_IMAGE LoadedImage,
+  PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation)
+{
+  dprintf(("(%p, %p): stub\n",
+    LoadedImage, ImageConfigInformation
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		UnMapAndLoad (IMAGEHLP.@)
+ */
+BOOL WINAPI UnMapAndLoad(PLOADED_IMAGE LoadedImage)
+{
+  dprintf(("(%p): stub\n", LoadedImage));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+
Index: trunk/src/imagehlp/debug.cpp
===================================================================
--- trunk/src/imagehlp/debug.cpp	(revision 3634)
+++ trunk/src/imagehlp/debug.cpp	(revision 3634)
@@ -0,0 +1,92 @@
+/*
+ *	IMAGEHLP library
+ *
+ *	Copyright 1998	Patrik Stridvall
+ */
+
+#include <os2win.h>
+#include <odinwrap.h>
+#include <imagehlp.h>
+#include <heapstring.h>
+
+ODINDEBUGCHANNEL(imagehlp)
+
+/***********************************************************************
+ *		FindDebugInfoFile (IMAGEHLP.@)
+ */
+HANDLE WINAPI FindDebugInfoFile(
+  LPSTR FileName, LPSTR SymbolPath, LPSTR DebugFilePath)
+{
+  dprintf(("FindDebugInfoFile: stub\n"));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return (HANDLE) NULL;
+}
+
+/***********************************************************************
+ *		FindExecutableImage (IMAGEHLP.@)
+ */
+HANDLE WINAPI FindExecutableImage(
+  LPSTR FileName, LPSTR SymbolPath, LPSTR ImageFilePath)
+{
+  dprintf(("FindExecutableImage: stub\n"));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return (HANDLE) NULL;
+}
+
+/***********************************************************************
+ *		MapDebugInformation (IMAGEHLP.@)
+ */
+PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(
+  HANDLE FileHandle, LPSTR FileName,
+  LPSTR SymbolPath, DWORD ImageBase)
+{
+  dprintf(("(0x%08x, %s, %s, 0x%08lx): stub\n",
+    FileHandle, FileName, SymbolPath, ImageBase
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return NULL;
+}
+
+/***********************************************************************
+ *		StackWalk (IMAGEHLP.@)
+ */
+BOOL WINAPI StackWalk(
+  DWORD MachineType, HANDLE hProcess, HANDLE hThread,
+  PSTACKFRAME StackFrame, PVOID ContextRecord,
+  PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
+  PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
+  PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
+  PTRANSLATE_ADDRESS_ROUTINE TranslateAddress)
+{
+  dprintf((
+    "(%ld, 0x%08x, 0x%08x, %p, %p, %p, %p, %p, %p): stub\n",
+      MachineType, hProcess, hThread, StackFrame, ContextRecord,
+      ReadMemoryRoutine, FunctionTableAccessRoutine,
+      GetModuleBaseRoutine, TranslateAddress
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		UnDecorateSymbolName (IMAGEHLP.@)
+ */
+DWORD WINAPI UnDecorateSymbolName(
+  LPCSTR DecoratedName, LPSTR UnDecoratedName,
+  DWORD UndecoratedLength, DWORD Flags)
+{
+  dprintf(("UnDecorateSymbolName: stub\n"));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0;
+}
+
+/***********************************************************************
+ *		UnmapDebugInformation (IMAGEHLP.@)
+ */
+BOOL WINAPI UnmapDebugInformation(
+  PIMAGE_DEBUG_INFORMATION DebugInfo)
+{
+  dprintf(("(%p): stub\n", DebugInfo));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
Index: trunk/src/imagehlp/imagehlp.cpp
===================================================================
--- trunk/src/imagehlp/imagehlp.cpp	(revision 3633)
+++ trunk/src/imagehlp/imagehlp.cpp	(revision 3634)
@@ -1,8 +1,6 @@
-/* $Id: imagehlp.cpp,v 1.3 1999-11-12 11:38:39 sandervl Exp $ */
 /*
  *	IMAGEHLP library
  *
  *	Copyright 1998	Patrik Stridvall
- *	Copyright 1999	Jens Wiessner
  */
 
@@ -13,27 +11,4 @@
 
 ODINDEBUGCHANNEL(imagehlp)
-
-/***********************************************************************
- *           Data
- */
-
-static PLOADED_IMAGE IMAGEHLP_pFirstLoadedImage=NULL;
-static PLOADED_IMAGE IMAGEHLP_pLastLoadedImage=NULL;
-
-static LOADED_IMAGE IMAGEHLP_EmptyLoadedImage = {
-  NULL,       /* ModuleName */
-  0xffffffff, /* hFile */
-  NULL,       /* MappedAddress */
-  NULL,       /* FileHeader */
-  NULL,       /* LastRvaSection */
-  0,          /* NumberOfSections */
-  NULL,       /* Sections */
-  1,          /* Characteristics */
-  FALSE,      /* fSystemImage */
-  FALSE,      /* fDOSImage */
-  { &IMAGEHLP_EmptyLoadedImage.Links, &IMAGEHLP_EmptyLoadedImage.Links }, /* Links */
-  148,        /* SizeOfImage; */
-};
-
 
 /**********************************************************************/
@@ -68,344 +43,17 @@
 }
 
-
 /***********************************************************************
- *           BindImage (IMAGEHLP.1)
- */
-BOOL WINAPI BindImage(
-  LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: BindImage\n"));
-#endif
-  return BindImageEx(0, ImageName, DllPath, SymbolPath, NULL);
-}
-
-
-/***********************************************************************
- *           BindImageEx (IMAGEHLP.2)
- */
-BOOL WINAPI BindImageEx(
-  DWORD Flags, LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath,
-  PIMAGEHLP_STATUS_ROUTINE StatusRoutine)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: BindImageEx not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           CheckSumMappedFile (IMAGEHLP.3)
- */
-PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile(
-  LPVOID BaseAddress, DWORD FileLength, 
-  LPDWORD HeaderSum, LPDWORD CheckSum)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: CheckSumMappedFile not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return NULL;
-}
-
-
-/***********************************************************************
- *           EnumerateLoadedModules (IMAGEHLP.4)
- */
-BOOL WINAPI EnumerateLoadedModules(
-  HANDLE hProcess,
-  PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,
-  PVOID UserContext)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: EnumerateLoadedModules not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-
-/***********************************************************************
- *           FindDebugInfoFile (IMAGEHLP.5)
- */
-HANDLE WINAPI FindDebugInfoFile(
-  LPSTR FileName, LPSTR SymbolPath, LPSTR DebugFilePath)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: FindDebugInfoFile not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return (HANDLE) NULL;
-}
-
-
-/***********************************************************************
- *           FindExecutableImage (IMAGEHLP.6)
- */
-HANDLE WINAPI FindExecutableImage(
-  LPSTR FileName, LPSTR SymbolPath, LPSTR ImageFilePath)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: FindExecutableImage not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return (HANDLE) NULL;
-}
-
-
-/***********************************************************************
- *           GetImageConfigInformation (IMAGEHLP.7)
- */
-BOOL WINAPI GetImageConfigInformation(
-  PLOADED_IMAGE LoadedImage,
-  PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: GetImageConfigInformation not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-
-/***********************************************************************
- *           GetImageUnusedHeaderBytes (IMAGEHLP.8)
- */
-DWORD WINAPI GetImageUnusedHeaderBytes(
-  PLOADED_IMAGE LoadedImage,
-  LPDWORD SizeUnusedHeaderBytes)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: GetImageUnusedHeaderBytes not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return 0;
-}
-
-
-/***********************************************************************
- *           GetTimestampForLoadedLibrary (IMAGEHLP.9)
- */
-DWORD WINAPI GetTimestampForLoadedLibrary(HMODULE Module)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: GetTimestampForLoadedLibrary not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return 0;
-}
-
-
-/***********************************************************************
- *           ImageAddCertificate (IMAGEHLP.10)
- */
-
-BOOL WINAPI ImageAddCertificate(
-  HANDLE FileHandle, PWIN_CERTIFICATE Certificate, PDWORD Index)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ImageAddCertificate not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           ImageDirectoryEntryToData (IMAGEHLP.11)
- */
-PVOID WINAPI ImageDirectoryEntryToData(
-  PVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ImageDirectoryEntryToData not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return NULL;
-}
-
-/***********************************************************************
- *           ImageEnumerateCertificates (IMAGEHLP.12)
- */
-BOOL WINAPI ImageEnumerateCertificates(
-  HANDLE FileHandle, WORD TypeFilter, PDWORD CertificateCount,
-  PDWORD Indices, DWORD IndexCount)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ImageEnumerateCertificates not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           ImageGetCertificateData (IMAGEHLP.13)
- */
-BOOL WINAPI ImageGetCertificateData(
-  HANDLE FileHandle, DWORD CertificateIndex,
-  PWIN_CERTIFICATE Certificate, PDWORD RequiredLength)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ImageGetCertificateData not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           ImageGetCertificateHeader (IMAGEHLP.14)
- */
-BOOL WINAPI ImageGetCertificateHeader(
-  HANDLE FileHandle, DWORD CertificateIndex,
-  PWIN_CERTIFICATE Certificateheader)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ImageGetCertificateHeader not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           ImageGetDigestStream (IMAGEHLP.15)
- */
-BOOL WINAPI ImageGetDigestStream(
-  HANDLE FileHandle, DWORD DigestLevel,
-  DIGEST_FUNCTION DigestFunction, DIGEST_HANDLE DigestHandle)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ImageGetDigestStream not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           ImageLoad (IMAGEHLP.16)
- */
-PLOADED_IMAGE WINAPI ImageLoad(LPSTR DllName, LPSTR DllPath)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ImageLoad not implemented\n"));
-#endif
-// FIXME-JW  PLOADED_IMAGE pLoadedImage = HeapAlloc (IMAGEHLP_hHeap, 0, sizeof(LOADED_IMAGE));
-// FIXME-JW  return pLoadedImage;
-  return NULL;
-}
-
-/***********************************************************************
- *           ImageNtHeader (IMAGEHLP.17)
- */
-PIMAGE_NT_HEADERS WINAPI ImageNtHeader(PVOID Base)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ImageNtHeader\n"));
-#endif
-  return (PIMAGE_NT_HEADERS)
-    ((LPBYTE) Base + ((PIMAGE_DOS_HEADER) Base)->e_lfanew);
-}
-
-/***********************************************************************
- *           ImageRemoveCertificate (IMAGEHLP.18)
- */
-BOOL WINAPI ImageRemoveCertificate(HANDLE FileHandle, DWORD Index)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ImageRemoveCertificate not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           ImageRvaToSection (IMAGEHLP.19)
- */
-PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(
-  PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ImageRvaToSection not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return NULL;
-}
-
-/***********************************************************************
- *           ImageRvaToVa (IMAGEHLP.20)
- */
-PVOID WINAPI ImageRvaToVa(
-  PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva,
-  PIMAGE_SECTION_HEADER *LastRvaSection)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ImageRvaToVa not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return NULL;
-}
-
-/***********************************************************************
- *           ImageUnload (IMAGEHLP.21)
- */
-BOOL WINAPI ImageUnload(PLOADED_IMAGE pLoadedImage)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ImageUnload\n"));
-#endif
-  LIST_ENTRY *pCurrent, *pFind;
-  if(!IMAGEHLP_pFirstLoadedImage || !pLoadedImage)
-    {
-      /* No image loaded or null pointer */
-      SetLastError(ERROR_INVALID_PARAMETER);
-      return FALSE;
-    }
-
-  pFind=&pLoadedImage->Links;
-  pCurrent=&IMAGEHLP_pFirstLoadedImage->Links;
-  while((pCurrent != pFind) && 
-    (pCurrent != NULL)) 
-      pCurrent = pCurrent->Flink;
-  if(!pCurrent)
-    {
-      /* Not found */
-      SetLastError(ERROR_INVALID_PARAMETER);
-      return FALSE;
-    }
-
-  if(pCurrent->Blink)
-    pCurrent->Blink->Flink = pCurrent->Flink;
-  else
-    IMAGEHLP_pFirstLoadedImage = pCurrent->Flink?CONTAINING_RECORD(
-      pCurrent->Flink, LOADED_IMAGE, Links):NULL;
-
-  if(pCurrent->Flink)
-    pCurrent->Flink->Blink = pCurrent->Blink;
-  else
-    IMAGEHLP_pLastLoadedImage = pCurrent->Blink?CONTAINING_RECORD(
-      pCurrent->Blink, LOADED_IMAGE, Links):NULL;
-
-  return FALSE;
-}
-
-
-/***********************************************************************
- *           ImagehlpApiVersion (IMAGEHLP.22)
+ *           ImagehlpApiVersion (IMAGEHLP.@)
  */
 PAPI_VERSION WINAPI ImagehlpApiVersion()
 {
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ImagehlpApiVersion\n"));
-#endif
   return &IMAGEHLP_ApiVersion;
 }
 
 /***********************************************************************
- *           ImagehlpApiVersionEx (IMAGEHLP.23)
+ *           ImagehlpApiVersionEx (IMAGEHLP.@)
  */
 PAPI_VERSION WINAPI ImagehlpApiVersionEx(PAPI_VERSION AppVersion)
 {
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ImagehlpApiVersionEx\n"));
-#endif
   if(!AppVersion)
     return NULL;
@@ -420,11 +68,9 @@
 
 /***********************************************************************
- *           MakeSureDirectoryPathExists (IMAGEHLP.24)
+ *           MakeSureDirectoryPathExists (IMAGEHLP.@)
  */
 BOOL WINAPI MakeSureDirectoryPathExists(LPCSTR DirPath)
 {
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: MakeSureDirectoryPathExists not implemented\n"));
-#endif
+  dprintf(("stub\n"));
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
@@ -432,146 +78,5 @@
 
 /***********************************************************************
- *           MapAndLoad (IMAGEHLP.25)
- */
-BOOL WINAPI MapAndLoad(
-  LPSTR pszImageName, LPSTR pszDllPath, PLOADED_IMAGE pLoadedImage,
-  BOOL bDotDll, BOOL bReadOnly)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: MapAndLoad\n"));
-#endif
-  CHAR szFileName[MAX_PATH];
-  HANDLE hFile = (HANDLE) NULL;
-  HANDLE hFileMapping = (HANDLE) NULL;
-  HMODULE hModule = (HMODULE) NULL;
-  PIMAGE_NT_HEADERS pNtHeader = NULL;
-
-  /* PathCombine(&szFileName, pszDllPath, pszImageName); */
-  /* PathRenameExtension(&szFileName, bDotDll?:"dll":"exe"); */
-
-  /* FIXME: Check if the file already loaded (use IMAGEHLP_pFirstLoadedImage32) */
-  if(!(hFile = CreateFileA(
-    szFileName, GENERIC_READ, 1, /* FIXME: FILE_SHARE_READ not defined */
-    NULL, OPEN_EXISTING, 0, (HANDLE) NULL)))
-    {
-      SetLastError(ERROR_FILE_NOT_FOUND);
-      goto Error;
-    }
-
-  if(!(hFileMapping = CreateFileMappingA(
-    hFile, NULL, PAGE_READONLY | SEC_COMMIT, 0, 0, NULL)))
-    {
-      DWORD dwLastError = GetLastError();
-#ifdef DEBUG
-      dprintf(("CreateFileMapping: Error = %ld\n", dwLastError));
-#endif
-      SetLastError(dwLastError);
-      goto Error;
-    }
-  CloseHandle(hFile);
-  hFile = (HANDLE) NULL;
-
-  if(!(hModule = (HMODULE) MapViewOfFile(
-    hFileMapping, FILE_MAP_READ, 0, 0, 0)))
-    {
-      DWORD dwLastError = GetLastError();
-#ifdef DEBUG
-      dprintf(("MapViewOfFile: Error = %ld\n", dwLastError));
-#endif
-      SetLastError(dwLastError);
-      goto Error;
-    }
-
-  CloseHandle(hFileMapping);
-  hFileMapping=(HANDLE) NULL;
-
-  pLoadedImage = (PLOADED_IMAGE) HeapAlloc(
-    IMAGEHLP_hHeap, 0, sizeof(LOADED_IMAGE)
-  );
-
-  pNtHeader = ImageNtHeader((PVOID) hModule);
-
-  pLoadedImage->ModuleName =
-    HEAP_strdupA(IMAGEHLP_hHeap, 0, pszDllPath); /* FIXME: Correct? */
-  pLoadedImage->hFile = hFile;
-  pLoadedImage->MappedAddress = (PUCHAR) hModule;
-  pLoadedImage->FileHeader = pNtHeader;
-  pLoadedImage->Sections = (PIMAGE_SECTION_HEADER)
-    ((LPBYTE) &pNtHeader->OptionalHeader +
-      pNtHeader->FileHeader.SizeOfOptionalHeader);
-  pLoadedImage->NumberOfSections =
-    pNtHeader->FileHeader.NumberOfSections;
-  pLoadedImage->SizeOfImage =
-    pNtHeader->OptionalHeader.SizeOfImage;
-  pLoadedImage->Characteristics =
-    pNtHeader->FileHeader.Characteristics;
-  pLoadedImage->LastRvaSection = pLoadedImage->Sections;
-
-  pLoadedImage->fSystemImage = FALSE; /* FIXME */
-  pLoadedImage->fDOSImage = FALSE;    /* FIXME */
-
-  /* FIXME: Make thread safe */
-  pLoadedImage->Links.Flink = NULL;
-  pLoadedImage->Links.Blink = &IMAGEHLP_pLastLoadedImage->Links;
-  if(IMAGEHLP_pLastLoadedImage)
-    IMAGEHLP_pLastLoadedImage->Links.Flink = &pLoadedImage->Links;
-  IMAGEHLP_pLastLoadedImage = pLoadedImage;
-  if(!IMAGEHLP_pFirstLoadedImage)
-    IMAGEHLP_pFirstLoadedImage = pLoadedImage;
-
-  return TRUE;
-
-Error:
-  if(hModule)
-    UnmapViewOfFile((PVOID) hModule);
-  if(hFileMapping)
-    CloseHandle(hFileMapping);
-  if(hFile)
-    CloseHandle(hFile);
-  return FALSE;
-}
-
-/***********************************************************************
- *           MapDebugInformation (IMAGEHLP.26)
- */
-PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(
-  HANDLE FileHandle, LPSTR FileName,
-  LPSTR SymbolPath, DWORD ImageBase)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: MapDebugInformation not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return NULL;
-}
-
-/***********************************************************************
- *           MapFileAndCheckSumA (IMAGEHLP.27)
- */
-DWORD WINAPI MapFileAndCheckSumA(
-  LPSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: MapFileAndCheckSumA not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return CHECKSUM_OPEN_FAILURE;
-}
-
-/***********************************************************************
- *           MapFileAndCheckSumW (IMAGEHLP.28)
- */
-DWORD WINAPI MapFileAndCheckSumW(
-  LPWSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: MapFileAndCheckSumW not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return CHECKSUM_OPEN_FAILURE;
-}
-
-/***********************************************************************
- *           MarkImageAsRunFromSwap (IMAGEHLP.29)
+ *           MarkImageAsRunFromSwap (IMAGEHLP.@)
  * FIXME
  *   No documentation available.
@@ -579,15 +84,10 @@
 
 /***********************************************************************
- *           ReBaseImage (IMAGEHLP.30)
+ *           SearchTreeForFile (IMAGEHLP.@)
  */
-BOOL WINAPI ReBaseImage(
-  LPSTR CurrentImageName, LPSTR SymbolPath, BOOL fReBase,
-  BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize,
-  ULONG *OldImageSize, ULONG *OldImageBase, ULONG *NewImageSize,
-  ULONG *NewImageBase, ULONG TimeStamp)
+BOOL WINAPI SearchTreeForFile(
+  LPSTR RootPath, LPSTR InputPathName, LPSTR OutputPathBuffer)
 {
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: ReBaseImage not implemented\n"));
-#endif
+  dprintf(("SearchTreeForFile: stub\n"));
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
@@ -595,418 +95,16 @@
 
 /***********************************************************************
- *           RemovePrivateCvSymbolic (IMAGEHLP.31)
+ *           TouchFileTimes (IMAGEHLP.@)
  */
-BOOL WINAPI RemovePrivateCvSymbolic(
-  PCHAR DebugData, PCHAR *NewDebugData, ULONG *NewDebugSize)
+BOOL WINAPI TouchFileTimes(
+  HANDLE FileHandle, LPSYSTEMTIME lpSystemTime)
 {
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: RemovePrivateCvSymbolic not implemented\n"));
-#endif
+  dprintf(("(0x%08x, %p): stub\n",
+    FileHandle, lpSystemTime
+  ));
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
 }
 
-/***********************************************************************
- *           RemoveRelocations (IMAGEHLP.32)
- */
-VOID WINAPI RemoveRelocations(PCHAR ImageName)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: RemoveRelocations not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
 
 
-/***********************************************************************
- *           SearchTreeForFile (IMAGEHLP.33)
- */
-BOOL WINAPI SearchTreeForFile(
-  LPSTR RootPath, LPSTR InputPathName, LPSTR OutputPathBuffer)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SearchTreeForFile not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SetImageConfigInformation (IMAGEHLP.34)
- */
-BOOL WINAPI SetImageConfigInformation(
-  PLOADED_IMAGE LoadedImage,
-  PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SetImageConfigInformation not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SplitSymbols (IMAGEHLP.35)
- */
-BOOL WINAPI SplitSymbols(
-  LPSTR ImageName, LPSTR SymbolsPath, 
-  LPSTR SymbolFilePath, DWORD Flags)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SplitSymbols not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           StackWalk (IMAGEHLP.36)
- */
-BOOL WINAPI StackWalk(
-  DWORD MachineType, HANDLE hProcess, HANDLE hThread,
-  PSTACKFRAME StackFrame, PVOID ContextRecord,
-  PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
-  PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
-  PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
-  PTRANSLATE_ADDRESS_ROUTINE TranslateAddress)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: StackWalk not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymCleanup (IMAGEHLP.37)
- */
-BOOL WINAPI SymCleanup(HANDLE hProcess)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymCleanup not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymEnumerateModules (IMAGEHLP.38)
- */
-
-BOOL WINAPI SymEnumerateModules(
-  HANDLE hProcess, PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
-  PVOID UserContext)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymEnumerateModules not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymEnumerateSymbols (IMAGEHLP.39)
- */
-BOOL WINAPI SymEnumerateSymbols(
-  HANDLE hProcess, DWORD BaseOfDll,
-  PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymEnumerateSymbols not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymFunctionTableAccess (IMAGEHLP.40)
- */
-PVOID WINAPI SymFunctionTableAccess(HANDLE hProcess, DWORD AddrBase)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymFunctionTableAccess not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymGetModuleBase (IMAGEHLP.41)
- */
-DWORD WINAPI SymGetModuleBase(HANDLE hProcess, DWORD dwAddr)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymGetModuleBase not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return 0;
-}
-
-/***********************************************************************
- *           SymGetModuleInfo (IMAGEHLP.42)
- */
-BOOL WINAPI SymGetModuleInfo(
-  HANDLE hProcess, DWORD dwAddr,
-  PIMAGEHLP_MODULE ModuleInfo)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymGetModuleInfo not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymGetOptions (IMAGEHLP.43)
- */
-DWORD WINAPI SymGetOptions()
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymGetOptions not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return 0;
-}
-
-/***********************************************************************
- *           SymGetSearchPath (IMAGEHLP.44)
- */
-BOOL WINAPI SymGetSearchPath(
-  HANDLE hProcess, LPSTR szSearchPath, DWORD SearchPathLength)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymGetSearchPath not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymGetSymFromAddr (IMAGEHLP.45)
- */
-BOOL WINAPI SymGetSymFromAddr(
-  HANDLE hProcess, DWORD dwAddr, 
-  PDWORD pdwDisplacement, PIMAGEHLP_SYMBOL Symbol)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymGetSymFromAddr not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymGetSymFromName (IMAGEHLP.46)
- */
-BOOL WINAPI SymGetSymFromName(
-  HANDLE hProcess, LPSTR Name, PIMAGEHLP_SYMBOL Symbol)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymGetSymFromName not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymGetSymNext (IMAGEHLP.47)
- */
-BOOL WINAPI SymGetSymNext(
-  HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymGetSymNext not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymGetSymPrev (IMAGEHLP.48)
- */
-
-BOOL WINAPI SymGetSymPrev(
-  HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymGetSymPrev not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymInitialize (IMAGEHLP.49)
- */
-BOOL WINAPI SymInitialize(
-  HANDLE hProcess, LPSTR UserSearchPath, BOOL fInvadeProcess)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymInitialize not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymLoadModule (IMAGEHLP.50)
- */
-
-BOOL WINAPI SymLoadModule(
-  HANDLE hProcess, HANDLE hFile, LPSTR ImageName, LPSTR ModuleName,
-  DWORD BaseOfDll, DWORD SizeOfDll)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymLoadModule not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymRegisterCallback (IMAGEHLP.51)
- */
-BOOL WINAPI SymRegisterCallback(
-  HANDLE hProcess, PSYMBOL_REGISTERED_CALLBACK CallbackFunction,
-  PVOID UserContext)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymRegisterCallback not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymSetOptions (IMAGEHLP.52)
- */
-DWORD WINAPI SymSetOptions(DWORD SymOptions)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymSetOptions not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return 0;
-}
-
-/***********************************************************************
- *           SymSetSearchPath (IMAGEHLP.53)
- */
-BOOL WINAPI SymSetSearchPath(HANDLE hProcess, LPSTR szSearchPath)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymSetSearchPath not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymUnDName (IMAGEHLP.54)
- */
-BOOL WINAPI SymUnDName(
-  PIMAGEHLP_SYMBOL sym, LPSTR UnDecName, DWORD UnDecNameLength)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymUnDName not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           SymUnloadModule (IMAGEHLP.55)
- */
-BOOL WINAPI SymUnloadModule(
-  HANDLE hProcess, DWORD BaseOfDll)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: SymUnloadModule not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           TouchFileTimes (IMAGEHLP.56)
- */
-BOOL WINAPI TouchFileTimes(
-  HANDLE FileHandle, LPSYSTEMTIME lpSystemTime)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: TouchFileTimes not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           UnDecorateSymbolName (IMAGEHLP.57)
- */
-DWORD WINAPI UnDecorateSymbolName(
-  LPCSTR DecoratedName, LPSTR UnDecoratedName,
-  DWORD UndecoratedLength, DWORD Flags)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: UnDecorateSymbolName not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return 0;
-}
-
-/***********************************************************************
- *           UnMapAndLoad (IMAGEHLP.58)
- */
-BOOL WINAPI UnMapAndLoad(PLOADED_IMAGE LoadedImage)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: UnMapAndLoad not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           UnmapDebugInformation (IMAGEHLP.59)
- */
-
-BOOL WINAPI UnmapDebugInformation(
-  PIMAGE_DEBUG_INFORMATION DebugInfo)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: UnmapDebugInformation not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           UpdateDebugInfoFile (IMAGEHLP.60)
- */
-BOOL WINAPI UpdateDebugInfoFile(
-  LPSTR ImageFileName, LPSTR SymbolPath,
-  LPSTR DebugFilePath, PIMAGE_NT_HEADERS NtHeaders)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: UpdateDebugInfoFile not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
-/***********************************************************************
- *           UpdateDebugInfoFileEx (IMAGEHLP.?)
- * FIXME
- *   Function has no ordinal.
- */
-BOOL WINAPI UpdateDebugInfoFileEx(
-  LPSTR ImageFileName, LPSTR SymbolPath, LPSTR DebugFilePath,
-  PIMAGE_NT_HEADERS NtHeaders, DWORD OldChecksum)
-{
-#ifdef DEBUG
-  dprintf(("IMAGEHLP: UpdateDebugInfoFileEx not implemented\n"));
-#endif
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
-}
-
Index: trunk/src/imagehlp/integrity.cpp
===================================================================
--- trunk/src/imagehlp/integrity.cpp	(revision 3634)
+++ trunk/src/imagehlp/integrity.cpp	(revision 3634)
@@ -0,0 +1,92 @@
+/*
+ *	IMAGEHLP library
+ *
+ *	Copyright 1998	Patrik Stridvall
+ */
+
+#include <os2win.h>
+#include <odinwrap.h>
+#include <imagehlp.h>
+#include <heapstring.h>
+
+ODINDEBUGCHANNEL(imagehlp)
+
+/***********************************************************************
+ *		ImageAddCertificate (IMAGEHLP.@)
+ */
+
+BOOL WINAPI ImageAddCertificate(
+  HANDLE FileHandle, PWIN_CERTIFICATE Certificate, PDWORD Index)
+{
+  dprintf(("(0x%08x, %p, %p): stub\n",
+    FileHandle, Certificate, Index
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		ImageEnumerateCertificates (IMAGEHLP.@)
+ */
+BOOL WINAPI ImageEnumerateCertificates(
+  HANDLE FileHandle, WORD TypeFilter, PDWORD CertificateCount,
+  PDWORD Indices, DWORD IndexCount)
+{
+  dprintf(("(0x%08x, %hd, %p, %p, %ld): stub\n",
+    FileHandle, TypeFilter, CertificateCount, Indices, IndexCount
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		ImageGetCertificateData (IMAGEHLP.@)
+ */
+BOOL WINAPI ImageGetCertificateData(
+  HANDLE FileHandle, DWORD CertificateIndex,
+  PWIN_CERTIFICATE Certificate, PDWORD RequiredLength)
+{
+  dprintf(("(0x%08x, %ld, %p, %p): stub\n",
+    FileHandle, CertificateIndex, Certificate, RequiredLength
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		ImageGetCertificateHeader (IMAGEHLP.@)
+ */
+BOOL WINAPI ImageGetCertificateHeader(
+  HANDLE FileHandle, DWORD CertificateIndex,
+  PWIN_CERTIFICATE Certificateheader)
+{
+  dprintf(("(0x%08x, %ld, %p): stub\n",
+    FileHandle, CertificateIndex, Certificateheader
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		ImageGetDigestStream (IMAGEHLP.@)
+ */
+BOOL WINAPI ImageGetDigestStream(
+  HANDLE FileHandle, DWORD DigestLevel,
+  DIGEST_FUNCTION DigestFunction, DIGEST_HANDLE DigestHandle)
+{
+  dprintf(("(0x%08x, %ld, %p, %p): stub\n",
+    FileHandle, DigestLevel, DigestFunction, DigestHandle
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		ImageRemoveCertificate (IMAGEHLP.@)
+ */
+BOOL WINAPI ImageRemoveCertificate(HANDLE FileHandle, DWORD Index)
+{
+  dprintf(("(0x%08x, %ld): stub\n", FileHandle, Index));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
Index: trunk/src/imagehlp/internal.cpp
===================================================================
--- trunk/src/imagehlp/internal.cpp	(revision 3633)
+++ trunk/src/imagehlp/internal.cpp	(revision 3634)
@@ -1,14 +1,15 @@
-/* $Id: internal.cpp,v 1.1 1999-08-29 14:54:54 sandervl Exp $ */
 /*
  *	IMAGEHLP library
  *
  *	Copyright 1998	Patrik Stridvall
- *	Copyright 1999	Jens Wiessner
  */
 
 #include <os2win.h>
+#include <odinwrap.h>
+#include <imagehlp.h>
+#include <heapstring.h>
 
 /***********************************************************************
- *           InitializeListHead32
+ *		InitializeListHead
  */
 VOID InitializeListHead(PLIST_ENTRY pListHead)
@@ -19,5 +20,5 @@
 
 /***********************************************************************
- *           InsertHeadList32
+ *		InsertHeadList
  */
 VOID InsertHeadList(PLIST_ENTRY pListHead, PLIST_ENTRY pEntry)
@@ -29,5 +30,5 @@
 
 /***********************************************************************
- *           InsertTailList32
+ *		InsertTailList
  */
 VOID InsertTailList(PLIST_ENTRY pListHead, PLIST_ENTRY pEntry)
@@ -39,5 +40,5 @@
 
 /***********************************************************************
- *           IsListEmpty32
+ *		IsListEmpty
  */
 BOOLEAN IsListEmpty(PLIST_ENTRY pListHead)
@@ -47,5 +48,5 @@
 
 /***********************************************************************
- *           PopEntryList32
+ *		PopEntryList
  */
 PSINGLE_LIST_ENTRY PopEntryList(PSINGLE_LIST_ENTRY pListHead)
@@ -56,5 +57,5 @@
 
 /***********************************************************************
- *           PushEntryList32
+ *		PushEntryList
  */
 VOID PushEntryList(
@@ -65,5 +66,5 @@
 
 /***********************************************************************
- *           RemoveEntryList32
+ *		RemoveEntryList
  */
 VOID RemoveEntryList(PLIST_ENTRY pEntry)
@@ -76,5 +77,5 @@
 
 /***********************************************************************
- *           RemoveHeadList32
+ *		RemoveHeadList
  */
 PLIST_ENTRY RemoveHeadList(PLIST_ENTRY pListHead)
@@ -96,5 +97,5 @@
 
 /***********************************************************************
- *           RemoveTailList32
+ *		RemoveTailList
  */
 PLIST_ENTRY RemoveTailList(PLIST_ENTRY pListHead)
@@ -106,6 +107,2 @@
     return NULL;
 }
-
-
-
-
Index: trunk/src/imagehlp/makefile
===================================================================
--- trunk/src/imagehlp/makefile	(revision 3633)
+++ trunk/src/imagehlp/makefile	(revision 3634)
@@ -1,3 +1,3 @@
-# $Id: makefile,v 1.9 2000-03-06 23:38:39 bird Exp $
+# $Id: makefile,v 1.10 2000-05-29 22:31:30 sandervl Exp $
 
 #
@@ -25,5 +25,10 @@
 OBJS = \
 $(OBJDIR)\imagehlp.obj \
+$(OBJDIR)\access.obj \
+$(OBJDIR)\debug.obj \
+$(OBJDIR)\integrity.obj \
 $(OBJDIR)\internal.obj \
+$(OBJDIR)\modify.obj \
+$(OBJDIR)\symbol.obj \
 $(OBJDIR)\initterm.obj \
 $(OBJDIR)\imagehlprsrc.obj
Index: trunk/src/imagehlp/modify.cpp
===================================================================
--- trunk/src/imagehlp/modify.cpp	(revision 3634)
+++ trunk/src/imagehlp/modify.cpp	(revision 3634)
@@ -0,0 +1,141 @@
+/*
+ *	IMAGEHLP library
+ *
+ *	Copyright 1998	Patrik Stridvall
+ */
+
+#include <os2win.h>
+#include <odinwrap.h>
+#include <imagehlp.h>
+#include <heapstring.h>
+
+ODINDEBUGCHANNEL(imagehlp)
+
+/***********************************************************************
+ *		BindImage (IMAGEHLP.@)
+ */
+BOOL WINAPI BindImage(
+  LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath)
+{
+  return BindImageEx(0, ImageName, DllPath, SymbolPath, NULL);
+}
+
+/***********************************************************************
+ *		BindImageEx (IMAGEHLP.@)
+ */
+BOOL WINAPI BindImageEx(
+  DWORD Flags, LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath,
+  PIMAGEHLP_STATUS_ROUTINE StatusRoutine)
+{
+  dprintf(("BindImageEx: stub\n")); 
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		CheckSumMappedFile (IMAGEHLP.@)
+ */
+PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile(
+  LPVOID BaseAddress, DWORD FileLength, 
+  LPDWORD HeaderSum, LPDWORD CheckSum)
+{
+  dprintf(("(%p, %ld, %p, %p): stub\n",
+    BaseAddress, FileLength, HeaderSum, CheckSum
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return NULL;
+}
+
+/***********************************************************************
+ *		MapFileAndCheckSumA (IMAGEHLP.@)
+ */
+DWORD WINAPI MapFileAndCheckSumA(
+  LPSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum)
+{
+  dprintf(("MapFileAndCheckSumA: stub\n"));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return CHECKSUM_OPEN_FAILURE;
+}
+
+/***********************************************************************
+ *		MapFileAndCheckSumW (IMAGEHLP.@)
+ */
+DWORD WINAPI MapFileAndCheckSumW(
+  LPWSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum)
+{
+  dprintf(("MapFileAndCheckSumW: stub\n"));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return CHECKSUM_OPEN_FAILURE;
+}
+
+/***********************************************************************
+ *		ReBaseImage (IMAGEHLP.@)
+ */
+BOOL WINAPI ReBaseImage(
+  LPSTR CurrentImageName, LPSTR SymbolPath, BOOL fReBase,
+  BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize,
+  ULONG *OldImageSize, ULONG *OldImageBase, ULONG *NewImageSize,
+  ULONG *NewImageBase, ULONG TimeStamp)
+{
+  dprintf(("ReBaseImage: stub\n"));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		RemovePrivateCvSymbolic (IMAGEHLP.@)
+ */
+BOOL WINAPI RemovePrivateCvSymbolic(
+  PCHAR DebugData, PCHAR *NewDebugData, ULONG *NewDebugSize)
+{
+  dprintf(("(%p, %p, %p): stub\n",
+    DebugData, NewDebugData, NewDebugSize
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		RemoveRelocations (IMAGEHLP.@)
+ */
+VOID WINAPI RemoveRelocations(PCHAR ImageName)
+{
+  dprintf(("(%p): stub\n", ImageName));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+}
+
+/***********************************************************************
+ *		SplitSymbols (IMAGEHLP.@)
+ */
+BOOL WINAPI SplitSymbols(
+  LPSTR ImageName, LPSTR SymbolsPath, 
+  LPSTR SymbolFilePath, DWORD Flags)
+{
+  dprintf(("SplitSymbols: stub\n"));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		UpdateDebugInfoFile (IMAGEHLP.@)
+ */
+BOOL WINAPI UpdateDebugInfoFile(
+  LPSTR ImageFileName, LPSTR SymbolPath,
+  LPSTR DebugFilePath, PIMAGE_NT_HEADERS NtHeaders)
+{
+  dprintf(("UpdateDebugInfoFile: stub\n"));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		UpdateDebugInfoFileEx (IMAGEHLP.@)
+ */
+BOOL WINAPI UpdateDebugInfoFileEx(
+  LPSTR ImageFileName, LPSTR SymbolPath, LPSTR DebugFilePath,
+  PIMAGE_NT_HEADERS NtHeaders, DWORD OldChecksum)
+{
+  dprintf(("UpdateDebugInfoFileEx: stub\n"));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
Index: trunk/src/imagehlp/symbol.cpp
===================================================================
--- trunk/src/imagehlp/symbol.cpp	(revision 3634)
+++ trunk/src/imagehlp/symbol.cpp	(revision 3634)
@@ -0,0 +1,236 @@
+/*
+ *	IMAGEHLP library
+ *
+ *	Copyright 1998	Patrik Stridvall
+ */
+
+#include <os2win.h>
+#include <odinwrap.h>
+#include <imagehlp.h>
+#include <heapstring.h>
+
+ODINDEBUGCHANNEL(imagehlp)
+
+/***********************************************************************
+ *		SymCleanup (IMAGEHLP.@)
+ */
+BOOL WINAPI SymCleanup(HANDLE hProcess)
+{
+  dprintf(("(0x%08x): stub\n", hProcess));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymEnumerateModules (IMAGEHLP.@)
+ */
+
+BOOL WINAPI SymEnumerateModules(
+  HANDLE hProcess, PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
+  PVOID UserContext)
+{
+  dprintf(("(0x%08x, %p, %p): stub\n",
+    hProcess, EnumModulesCallback, UserContext
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymEnumerateSymbols (IMAGEHLP.@)
+ */
+BOOL WINAPI SymEnumerateSymbols(
+  HANDLE hProcess, DWORD BaseOfDll,
+  PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext)
+{
+  dprintf(("(0x%08x, 0x%08lx, %p, %p): stub\n",
+    hProcess, BaseOfDll, EnumSymbolsCallback, UserContext
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymFunctionTableAccess (IMAGEHLP.@)
+ */
+PVOID WINAPI SymFunctionTableAccess(HANDLE hProcess, DWORD AddrBase)
+{
+  dprintf(("(0x%08x, 0x%08lx): stub\n", hProcess, AddrBase));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymGetModuleBase (IMAGEHLP.@)
+ */
+DWORD WINAPI SymGetModuleBase(HANDLE hProcess, DWORD dwAddr)
+{
+  dprintf(("(0x%08x, 0x%08lx): stub\n", hProcess, dwAddr));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0;
+}
+
+/***********************************************************************
+ *		SymGetModuleInfo (IMAGEHLP.@)
+ */
+BOOL WINAPI SymGetModuleInfo(
+  HANDLE hProcess, DWORD dwAddr,
+  PIMAGEHLP_MODULE ModuleInfo)
+{
+  dprintf(("(0x%08x, 0x%08lx, %p): stub\n",
+    hProcess, dwAddr, ModuleInfo
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymGetOptions (IMAGEHLP.@)
+ */
+DWORD WINAPI SymGetOptions()
+{
+  dprintf(("SymGetOptions: stub\n"));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0;
+}
+
+/***********************************************************************
+ *		SymGetSearchPath (IMAGEHLP.@)
+ */
+BOOL WINAPI SymGetSearchPath(
+  HANDLE hProcess, LPSTR szSearchPath, DWORD SearchPathLength)
+{
+  dprintf(("SymGetSearchPath: stub\n"));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymGetSymFromAddr (IMAGEHLP.@)
+ */
+BOOL WINAPI SymGetSymFromAddr(
+  HANDLE hProcess, DWORD dwAddr, 
+  PDWORD pdwDisplacement, PIMAGEHLP_SYMBOL Symbol)
+{
+  dprintf(("(0x%08x, 0x%08lx, %p, %p): stub\n",
+    hProcess, dwAddr, pdwDisplacement, Symbol
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymGetSymFromName (IMAGEHLP.@)
+ */
+BOOL WINAPI SymGetSymFromName(
+  HANDLE hProcess, LPSTR Name, PIMAGEHLP_SYMBOL Symbol)
+{
+  dprintf(("(0x%08x, %s, %p): stub\n", hProcess, Name, Symbol));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymGetSymNext (IMAGEHLP.@)
+ */
+BOOL WINAPI SymGetSymNext(
+  HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol)
+{
+  dprintf(("(0x%08x, %p): stub\n", hProcess, Symbol));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymGetSymPrev (IMAGEHLP.@)
+ */
+
+BOOL WINAPI SymGetSymPrev(
+  HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol)
+{
+  dprintf(("(0x%08x, %p): stub\n", hProcess, Symbol));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymInitialize (IMAGEHLP.@)
+ */
+BOOL WINAPI SymInitialize(
+  HANDLE hProcess, LPSTR UserSearchPath, BOOL fInvadeProcess)
+{
+  dprintf(("SymInitialize: stub\n"));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymLoadModule (IMAGEHLP.@)
+ */
+
+BOOL WINAPI SymLoadModule(
+  HANDLE hProcess, HANDLE hFile, LPSTR ImageName, LPSTR ModuleName,
+  DWORD BaseOfDll, DWORD SizeOfDll)
+{
+  dprintf(("SymLoadModule: stub\n"));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymRegisterCallback (IMAGEHLP.@)
+ */
+BOOL WINAPI SymRegisterCallback(
+  HANDLE hProcess, PSYMBOL_REGISTERED_CALLBACK CallbackFunction,
+  PVOID UserContext)
+{
+  dprintf(("(0x%08x, %p, %p): stub\n",
+    hProcess, CallbackFunction, UserContext
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymSetOptions (IMAGEHLP.@)
+ */
+DWORD WINAPI SymSetOptions(DWORD SymOptions)
+{
+  dprintf(("(0x%08lx): stub\n", SymOptions));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0;
+}
+
+/***********************************************************************
+ *		SymSetSearchPath (IMAGEHLP.@)
+ */
+BOOL WINAPI SymSetSearchPath(HANDLE hProcess, LPSTR szSearchPath)
+{
+  dprintf(("SymSetSearchPath: stub\n"));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymUnDName (IMAGEHLP.@)
+ */
+BOOL WINAPI SymUnDName(
+  PIMAGEHLP_SYMBOL sym, LPSTR UnDecName, DWORD UnDecNameLength)
+{
+  dprintf(("(%p, %s, %ld): stub\n",
+    sym, UnDecName, UnDecNameLength
+  ));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		SymUnloadModule (IMAGEHLP.@)
+ */
+BOOL WINAPI SymUnloadModule(
+  HANDLE hProcess, DWORD BaseOfDll)
+{
+  dprintf(("(0x%08x, 0x%08lx): stub\n", hProcess, BaseOfDll));
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
