wine/ dlls/dbghelp/dbghelp.spec dlls/dbghelp/s ...
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Nov 29 05:09:03 CST 2005
ChangeSet ID: 21546
CVSROOT: /opt/cvs-commit
Module name: wine
Changes by: julliard at winehq.org 2005/11/29 05:09:03
Modified files:
dlls/dbghelp : dbghelp.spec symbol.c
include : dbghelp.h
Log message:
Eric Pouech <eric.pouech at wanadoo.fr>
Implemented SymGet{Next|Prev}Line64.
Patch: http://cvs.winehq.org/patch.py?id=21546
Old revision New revision Changes Path
1.16 1.17 +3 -3 wine/dlls/dbghelp/dbghelp.spec
1.20 1.21 +74 -0 wine/dlls/dbghelp/symbol.c
1.21 1.22 +13 -0 wine/include/dbghelp.h
Index: wine/dlls/dbghelp/dbghelp.spec
diff -u -p wine/dlls/dbghelp/dbghelp.spec:1.16 wine/dlls/dbghelp/dbghelp.spec:1.17
--- wine/dlls/dbghelp/dbghelp.spec:1.16 29 Nov 2005 11: 9: 3 -0000
+++ wine/dlls/dbghelp/dbghelp.spec 29 Nov 2005 11: 9: 3 -0000
@@ -43,13 +43,13 @@
@ stub SymFunctionTableAccess64
@ stdcall SymFunctionTableAccess(long long)
@ stub SymGetFileLineOffsets64
-@ stub SymGetLineFromAddr64
+@ stdcall SymGetLineFromAddr64(long double ptr ptr)
@ stdcall SymGetLineFromAddr(long long ptr ptr)
@ stub SymGetLineFromName64
@ stub SymGetLineFromName
-@ stub SymGetLineNext64
+@ stdcall SymGetLineNext64(long ptr)
@ stdcall SymGetLineNext(long ptr)
-@ stub SymGetLinePrev64
+@ stdcall SymGetLinePrev64(long ptr)
@ stdcall SymGetLinePrev(long ptr)
@ stub SymGetModuleBase64
@ stdcall SymGetModuleBase(long long)
Index: wine/dlls/dbghelp/symbol.c
diff -u -p wine/dlls/dbghelp/symbol.c:1.20 wine/dlls/dbghelp/symbol.c:1.21
--- wine/dlls/dbghelp/symbol.c:1.20 29 Nov 2005 11: 9: 3 -0000
+++ wine/dlls/dbghelp/symbol.c 29 Nov 2005 11: 9: 3 -0000
@@ -1073,6 +1073,50 @@ BOOL WINAPI SymGetLineFromAddr(HANDLE hP
}
/******************************************************************
+ * copy_line_64_from_32 (internal)
+ *
+ */
+static void copy_line_64_from_32(IMAGEHLP_LINE64* l64, const IMAGEHLP_LINE* l32)
+
+{
+ l64->Key = l32->Key;
+ l64->LineNumber = l32->LineNumber;
+ l64->FileName = l32->FileName;
+ l64->Address = l32->Address;
+}
+
+/******************************************************************
+ * copy_line_32_from_64 (internal)
+ *
+ */
+static void copy_line_32_from_64(IMAGEHLP_LINE* l32, const IMAGEHLP_LINE64* l64)
+
+{
+ l32->Key = l64->Key;
+ l32->LineNumber = l64->LineNumber;
+ l32->FileName = l64->FileName;
+ l32->Address = l64->Address;
+}
+
+/******************************************************************
+ * SymGetLineFromAddr64 (DBGHELP.@)
+ *
+ */
+BOOL WINAPI SymGetLineFromAddr64(HANDLE hProcess, DWORD64 dwAddr,
+ PDWORD pdwDisplacement, PIMAGEHLP_LINE64 Line)
+{
+ IMAGEHLP_LINE line32;
+
+ if (Line->SizeOfStruct < sizeof(*Line)) return FALSE;
+ if (!validate_addr64(dwAddr)) return FALSE;
+ line32.SizeOfStruct = sizeof(line32);
+ if (!SymGetLineFromAddr(hProcess, (DWORD)dwAddr, pdwDisplacement, &line32))
+ return FALSE;
+ copy_line_64_from_32(Line, &line32);
+ return TRUE;
+}
+
+/******************************************************************
* SymGetLinePrev (DBGHELP.@)
*
*/
@@ -1122,6 +1166,21 @@ BOOL WINAPI SymGetLinePrev(HANDLE hProce
return FALSE;
}
+/******************************************************************
+ * SymGetLinePrev64 (DBGHELP.@)
+ *
+ */
+BOOL WINAPI SymGetLinePrev64(HANDLE hProcess, PIMAGEHLP_LINE64 Line)
+{
+ IMAGEHLP_LINE line32;
+
+ line32.SizeOfStruct = sizeof(line32);
+ copy_line_32_from_64(&line32, Line);
+ if (!SymGetLinePrev(hProcess, &line32)) return FALSE;
+ copy_line_64_from_32(Line, &line32);
+ return TRUE;
+}
+
BOOL symt_get_func_line_next(struct module* module, PIMAGEHLP_LINE line)
{
struct line_info* li;
@@ -1164,6 +1223,21 @@ BOOL WINAPI SymGetLineNext(HANDLE hProce
return FALSE;
}
+/******************************************************************
+ * SymGetLineNext64 (DBGHELP.@)
+ *
+ */
+BOOL WINAPI SymGetLineNext64(HANDLE hProcess, PIMAGEHLP_LINE64 Line)
+{
+ IMAGEHLP_LINE line32;
+
+ line32.SizeOfStruct = sizeof(line32);
+ copy_line_32_from_64(&line32, Line);
+ if (!SymGetLineNext(hProcess, &line32)) return FALSE;
+ copy_line_64_from_32(Line, &line32);
+ return TRUE;
+}
+
/***********************************************************************
* SymFunctionTableAccess (DBGHELP.@)
*/
Index: wine/include/dbghelp.h
diff -u -p wine/include/dbghelp.h:1.21 wine/include/dbghelp.h:1.22
--- wine/include/dbghelp.h:1.21 29 Nov 2005 11: 9: 3 -0000
+++ wine/include/dbghelp.h 29 Nov 2005 11: 9: 3 -0000
@@ -163,6 +163,15 @@ typedef struct _IMAGEHLP_LINE
DWORD Address;
} IMAGEHLP_LINE, *PIMAGEHLP_LINE;
+typedef struct _IMAGEHLP_LINE64
+{
+ DWORD SizeOfStruct;
+ PVOID Key;
+ DWORD LineNumber;
+ PCHAR FileName;
+ DWORD64 Address;
+} IMAGEHLP_LINE64, *PIMAGEHLP_LINE64;
+
typedef struct _SOURCEFILE
{
DWORD64 ModBase;
@@ -779,8 +788,12 @@ typedef BOOL (CALLBACK *PSYM_ENUMSOURCEF
BOOL WINAPI SymEnumSourceFiles(HANDLE, ULONG64, LPSTR, PSYM_ENUMSOURCEFILES_CALLBACK,
PVOID);
BOOL WINAPI SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE);
+BOOL WINAPI SymGetLineFromAddr64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINE64);
BOOL WINAPI SymGetLinePrev(HANDLE, PIMAGEHLP_LINE);
+BOOL WINAPI SymGetLinePrev64(HANDLE, PIMAGEHLP_LINE64);
BOOL WINAPI SymGetLineNext(HANDLE, PIMAGEHLP_LINE);
+BOOL WINAPI SymGetLineNext64(HANDLE, PIMAGEHLP_LINE64);
+
typedef struct _SRCCODEINFO
{
DWORD SizeOfStruct;
More information about the wine-cvs
mailing list