Alexandre Julliard : dbghelp: Add a few more 64-bit symbol functions.

Alexandre Julliard julliard at winehq.org
Thu Apr 23 11:27:22 CDT 2009


Module: wine
Branch: master
Commit: 329c22f32392ccee09a35d688adbee5485d1bd58
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=329c22f32392ccee09a35d688adbee5485d1bd58

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Apr 23 12:41:29 2009 +0200

dbghelp: Add a few more 64-bit symbol functions.

---

 dlls/dbghelp/dbghelp.spec |    8 +++---
 dlls/dbghelp/symbol.c     |   57 +++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 57 insertions(+), 8 deletions(-)

diff --git a/dlls/dbghelp/dbghelp.spec b/dlls/dbghelp/dbghelp.spec
index d7c7faa..63a107c 100644
--- a/dlls/dbghelp/dbghelp.spec
+++ b/dlls/dbghelp/dbghelp.spec
@@ -118,11 +118,11 @@
 @ stdcall SymGetSymFromAddr(long long ptr ptr)
 @ stdcall SymGetSymFromAddr64(long double ptr ptr)
 @ stdcall SymGetSymFromName(long str ptr)
-@ stub SymGetSymFromName64
+@ stdcall SymGetSymFromName64(long str ptr)
 @ stdcall SymGetSymNext(long ptr)
-@ stub SymGetSymNext64
+@ stdcall SymGetSymNext64(long ptr)
 @ stdcall SymGetSymPrev(long ptr)
-@ stub SymGetSymPrev64
+@ stdcall SymGetSymPrev64(long ptr)
 @ stub SymGetSymbolFile
 @ stub SymGetSymbolFileW
 @ stdcall SymGetTypeFromName(ptr double str ptr)
@@ -180,7 +180,7 @@
 # @ stub SymSetSymWithAddr64 no longer present ??
 @ stub SymSetSymWithAddr64
 @ stdcall SymUnDName(ptr str long)
-@ stub SymUnDName64
+@ stdcall SymUnDName64(ptr str long)
 @ stdcall SymUnloadModule(long long)
 @ stdcall SymUnloadModule64(long double)
 @ stdcall UnDecorateSymbolName(str str long long)
diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c
index ce3b842..3e70e85 100644
--- a/dlls/dbghelp/symbol.c
+++ b/dlls/dbghelp/symbol.c
@@ -1350,6 +1350,28 @@ BOOL WINAPI SymFromName(HANDLE hProcess, PCSTR Name, PSYMBOL_INFO Symbol)
 }
 
 /***********************************************************************
+ *		SymGetSymFromName64 (DBGHELP.@)
+ */
+BOOL WINAPI SymGetSymFromName64(HANDLE hProcess, PCSTR Name, PIMAGEHLP_SYMBOL64 Symbol)
+{
+    char        buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME];
+    SYMBOL_INFO*si = (SYMBOL_INFO*)buffer;
+    size_t      len;
+
+    if (Symbol->SizeOfStruct < sizeof(*Symbol)) return FALSE;
+    si->SizeOfStruct = sizeof(*si);
+    si->MaxNameLen = MAX_SYM_NAME;
+    if (!SymFromName(hProcess, Name, si)) return FALSE;
+
+    Symbol->Address = si->Address;
+    Symbol->Size    = si->Size;
+    Symbol->Flags   = si->Flags;
+    len = min(Symbol->MaxNameLength, si->MaxNameLen);
+    lstrcpynA(Symbol->Name, si->Name, len);
+    return TRUE;
+}
+
+/***********************************************************************
  *		SymGetSymFromName (DBGHELP.@)
  */
 BOOL WINAPI SymGetSymFromName(HANDLE hProcess, PCSTR Name, PIMAGEHLP_SYMBOL Symbol)
@@ -1407,9 +1429,9 @@ BOOL symt_fill_func_line_info(const struct module* module, const struct symt_fun
 }
 
 /***********************************************************************
- *		SymGetSymNext (DBGHELP.@)
+ *		SymGetSymNext64 (DBGHELP.@)
  */
-BOOL WINAPI SymGetSymNext(HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol)
+BOOL WINAPI SymGetSymNext64(HANDLE hProcess, PIMAGEHLP_SYMBOL64 Symbol)
 {
     /* algo:
      * get module from Symbol.Address
@@ -1423,9 +1445,28 @@ BOOL WINAPI SymGetSymNext(HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol)
 }
 
 /***********************************************************************
- *		SymGetSymPrev (DBGHELP.@)
+ *		SymGetSymNext (DBGHELP.@)
  */
+BOOL WINAPI SymGetSymNext(HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol)
+{
+    FIXME("(%p, %p): stub\n", hProcess, Symbol);
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return FALSE;
+}
+
+/***********************************************************************
+ *		SymGetSymPrev64 (DBGHELP.@)
+ */
+BOOL WINAPI SymGetSymPrev64(HANDLE hProcess, PIMAGEHLP_SYMBOL64 Symbol)
+{
+    FIXME("(%p, %p): stub\n", hProcess, Symbol);
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return FALSE;
+}
 
+/***********************************************************************
+ *		SymGetSymPrev (DBGHELP.@)
+ */
 BOOL WINAPI SymGetSymPrev(HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol)
 {
     FIXME("(%p, %p): stub\n", hProcess, Symbol);
@@ -1685,7 +1726,15 @@ PVOID WINAPI SymFunctionTableAccess64(HANDLE hProcess, DWORD64 AddrBase)
  */
 BOOL WINAPI SymUnDName(PIMAGEHLP_SYMBOL sym, PSTR UnDecName, DWORD UnDecNameLength)
 {
-    TRACE("(%p %s %u)\n", sym, UnDecName, UnDecNameLength);
+    return UnDecorateSymbolName(sym->Name, UnDecName, UnDecNameLength,
+                                UNDNAME_COMPLETE) != 0;
+}
+
+/***********************************************************************
+ *		SymUnDName64 (DBGHELP.@)
+ */
+BOOL WINAPI SymUnDName64(PIMAGEHLP_SYMBOL64 sym, PSTR UnDecName, DWORD UnDecNameLength)
+{
     return UnDecorateSymbolName(sym->Name, UnDecName, UnDecNameLength,
                                 UNDNAME_COMPLETE) != 0;
 }




More information about the wine-cvs mailing list