dbghelp: Fix some compilation warnings in 64-bit mode
Dmitry Timoshkov
dmitry at codeweavers.com
Thu May 31 09:00:39 CDT 2007
Hello,
Changelog:
dbghelp: Fix some compilation warnings in 64-bit mode.
---
dlls/dbghelp/dbghelp.c | 20 +++++++++---------
dlls/dbghelp/dbghelp_private.h | 6 ++--
dlls/dbghelp/dwarf.c | 10 ++++----
dlls/dbghelp/elf_module.c | 41 ++++++++++++++++++++++++++++++++++++---
dlls/dbghelp/minidump.c | 8 +++---
dlls/dbghelp/msc.c | 2 +-
dlls/dbghelp/pe_module.c | 6 ++--
dlls/dbghelp/stack.c | 8 +++---
dlls/dbghelp/symbol.c | 5 ++-
dlls/dbghelp/type.c | 20 ++++++++++++++++--
10 files changed, 87 insertions(+), 39 deletions(-)
diff --git a/dlls/dbghelp/dbghelp.c b/dlls/dbghelp/dbghelp.c
index d79e281..244191e 100644
--- a/dlls/dbghelp/dbghelp.c
+++ b/dlls/dbghelp/dbghelp.c
@@ -211,7 +211,7 @@ BOOL WINAPI SymGetSearchPath(HANDLE hProcess, LPSTR szSearchPath,
* SymInitialize helper: loads in dbghelp all known (and loaded modules)
* this assumes that hProcess is a handle on a valid process
*/
-static BOOL WINAPI process_invade_cb(char* name, DWORD base, DWORD size, void* user)
+static BOOL WINAPI process_invade_cb(char* name, DWORD64 base, ULONG size, void* user)
{
char tmp[MAX_PATH];
HANDLE hProcess = (HANDLE)user;
@@ -220,7 +220,7 @@ static BOOL WINAPI process_invade_cb(char* name, DWORD base, DWORD size, void* u
tmp, sizeof(tmp)))
lstrcpynA(tmp, name, sizeof(tmp));
- SymLoadModule(hProcess, 0, tmp, name, base, size);
+ SymLoadModule64(hProcess, 0, tmp, name, base, size);
return TRUE;
}
@@ -320,7 +320,7 @@ BOOL WINAPI SymInitializeW(HANDLE hProcess, PCWSTR UserSearchPath, BOOL fInvadeP
if (check_live_target(pcs))
{
if (fInvadeProcess)
- EnumerateLoadedModules(hProcess, process_invade_cb, (void*)hProcess);
+ EnumerateLoadedModules64(hProcess, process_invade_cb, (void*)hProcess);
elf_synchronize_module_list(pcs);
}
else if (fInvadeProcess)
@@ -452,8 +452,8 @@ BOOL WINAPI SymSetContext(HANDLE hProcess, PIMAGEHLP_STACK_FRAME StackFrame,
*/
static BOOL CALLBACK reg_cb64to32(HANDLE hProcess, ULONG action, ULONG64 data, ULONG64 user)
{
- PSYMBOL_REGISTERED_CALLBACK cb32 = (PSYMBOL_REGISTERED_CALLBACK)(DWORD)(user >> 32);
- DWORD user32 = (DWORD)user;
+ PSYMBOL_REGISTERED_CALLBACK cb32 = (PSYMBOL_REGISTERED_CALLBACK)(DWORD_PTR)(user >> 32);
+ DWORD user32 = (DWORD_PTR)user;
void* data32;
IMAGEHLP_DEFERRED_SYMBOL_LOAD64* idsl64;
IMAGEHLP_DEFERRED_SYMBOL_LOAD idsl;
@@ -464,13 +464,13 @@ static BOOL CALLBACK reg_cb64to32(HANDLE hProcess, ULONG action, ULONG64 data, U
case CBA_DEFERRED_SYMBOL_LOAD_CANCEL:
case CBA_SET_OPTIONS:
case CBA_SYMBOLS_UNLOADED:
- data32 = (void*)(DWORD)data;
+ data32 = (void*)(DWORD_PTR)data;
break;
case CBA_DEFERRED_SYMBOL_LOAD_COMPLETE:
case CBA_DEFERRED_SYMBOL_LOAD_FAILURE:
case CBA_DEFERRED_SYMBOL_LOAD_PARTIAL:
case CBA_DEFERRED_SYMBOL_LOAD_START:
- idsl64 = (IMAGEHLP_DEFERRED_SYMBOL_LOAD64*)(DWORD)data;
+ idsl64 = (IMAGEHLP_DEFERRED_SYMBOL_LOAD64*)(DWORD_PTR)data;
if (!validate_addr64(idsl64->BaseOfImage))
return FALSE;
idsl.SizeOfStruct = sizeof(idsl);
@@ -488,7 +488,7 @@ static BOOL CALLBACK reg_cb64to32(HANDLE hProcess, ULONG action, ULONG64 data, U
FIXME("No mapping for action %u\n", action);
return FALSE;
}
- return cb32(hProcess, action, (PVOID)data32, (PVOID)user32);
+ return cb32(hProcess, action, data32, ULongToPtr(user32));
}
/******************************************************************
@@ -515,7 +515,7 @@ BOOL pcs_callback(const struct process* pcs, ULONG action, void* data)
case CBA_DEFERRED_SYMBOL_LOAD_FAILURE:
case CBA_DEFERRED_SYMBOL_LOAD_PARTIAL:
case CBA_DEFERRED_SYMBOL_LOAD_START:
- idslW = (IMAGEHLP_DEFERRED_SYMBOL_LOADW64*)(DWORD)data;
+ idslW = (IMAGEHLP_DEFERRED_SYMBOL_LOADW64*)(DWORD_PTR)data;
idsl.SizeOfStruct = sizeof(idsl);
idsl.BaseOfImage = idslW->BaseOfImage;
idsl.CheckSum = idslW->CheckSum;
@@ -562,7 +562,7 @@ BOOL WINAPI SymRegisterCallback(HANDLE hProcess,
PSYMBOL_REGISTERED_CALLBACK CallbackFunction,
PVOID UserContext)
{
- DWORD64 tmp = ((ULONGLONG)(DWORD)CallbackFunction << 32) | (DWORD)UserContext;
+ DWORD64 tmp = ((ULONGLONG)PtrToUlong(CallbackFunction) << 32) | PtrToUlong(UserContext);
TRACE("(%p, %p, %p)\n",
hProcess, CallbackFunction, UserContext);
return sym_register_cb(hProcess, reg_cb64to32, tmp, FALSE);
diff --git a/dlls/dbghelp/dbghelp_private.h b/dlls/dbghelp/dbghelp_private.h
index 99b8b54..f45292c 100644
--- a/dlls/dbghelp/dbghelp_private.h
+++ b/dlls/dbghelp/dbghelp_private.h
@@ -473,13 +473,13 @@ extern BOOL pe_load_debug_directory(const struct process* pcs,
extern BOOL pdb_fetch_file_info(struct pdb_lookup* pdb_lookup);
/* pe_module.c */
-extern BOOL pe_load_nt_header(HANDLE hProc, DWORD base, IMAGE_NT_HEADERS* nth);
+extern BOOL pe_load_nt_header(HANDLE hProc, DWORD_PTR base, IMAGE_NT_HEADERS* nth);
extern struct module*
pe_load_native_module(struct process* pcs, const WCHAR* name,
- HANDLE hFile, DWORD base, DWORD size);
+ HANDLE hFile, DWORD_PTR base, DWORD size);
extern struct module*
pe_load_builtin_module(struct process* pcs, const WCHAR* name,
- DWORD base, DWORD size);
+ DWORD_PTR base, DWORD size);
extern BOOL pe_load_debug_info(const struct process* pcs,
struct module* module);
/* source.c */
diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index 2c1ab0c..0bd9a41 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -755,12 +755,12 @@ compute_location(dwarf2_traverse_context_t* ctx, struct location* loc,
}
if (hproc)
{
- DWORD addr = stack[stk--];
- DWORD deref;
+ DWORD_PTR addr = stack[stk--];
+ DWORD_PTR deref;
if (!ReadProcessMemory(hproc, (void*)addr, &deref, sizeof(deref), NULL))
{
- WARN("Couldn't read memory at %x\n", addr);
+ WARN("Couldn't read memory at %lx\n", addr);
return loc_err_cant_read;
}
stack[++stk] = deref;
@@ -1946,8 +1946,8 @@ static BOOL dwarf2_parse_compilation_unit(const dwarf2_section_t* sections,
dwarf2_debug_info_t* di;
BOOL ret = FALSE;
- TRACE("Compilation Unit Header found at 0x%x:\n",
- comp_unit_cursor - sections[section_debug].address);
+ TRACE("Compilation Unit Header found at 0x%lx:\n",
+ (ULONG_PTR)(comp_unit_cursor - sections[section_debug].address));
TRACE("- length: %lu\n", comp_unit->length);
TRACE("- version: %u\n", comp_unit->version);
TRACE("- abbrev_offset: %lu\n", comp_unit->abbrev_offset);
diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c
index 30b7a3c..8dd8887 100644
--- a/dlls/dbghelp/elf_module.c
+++ b/dlls/dbghelp/elf_module.c
@@ -103,12 +103,20 @@ struct elf_info
*/
struct elf_file_map
{
+#ifdef _WIN64
+ Elf64_Ehdr elfhdr;
+#else
Elf32_Ehdr elfhdr;
+#endif
size_t elf_size;
size_t elf_start;
struct
{
+#ifdef _WIN64
+ Elf64_Shdr shdr;
+#else
Elf32_Shdr shdr;
+#endif
const char* mapped;
}* sect;
int fd;
@@ -125,7 +133,11 @@ struct elf_section_map
struct symtab_elt
{
struct hash_table_elt ht_elt;
+#ifdef _WIN64
+ const Elf64_Sym* symp;
+#else
const Elf32_Sym* symp;
+#endif
struct symt_compiland* compiland;
unsigned used;
};
@@ -143,7 +155,7 @@ struct elf_thunk_area
*
* Maps a single section into memory from an ELF file
*/
-static const char* elf_map_section(struct elf_section_map* esm)
+static const void* elf_map_section(struct elf_section_map* esm)
{
unsigned pgsz = getpagesize();
unsigned ofst, size;
@@ -254,7 +266,11 @@ static BOOL elf_map_file(const WCHAR* filenameW, struct elf_file_map* fmap)
static const BYTE elf_signature[4] = { ELFMAG0, ELFMAG1, ELFMAG2, ELFMAG3 };
struct stat statbuf;
int i;
+#ifdef _WIN64
+ Elf64_Phdr phdr;
+#else
Elf32_Phdr phdr;
+#endif
unsigned tmp, page_mask = getpagesize() - 1;
char* filename;
unsigned len;
@@ -372,13 +388,17 @@ static void elf_hash_symtab(struct module* module, struct pool* pool,
const char* symname;
struct symt_compiland* compiland = NULL;
const char* ptr;
+#ifdef _WIN64
+ const Elf64_Sym* symp;
+#else
const Elf32_Sym* symp;
+#endif
struct symtab_elt* ste;
struct elf_section_map esm, esm_str;
if (!elf_find_section(fmap, ".symtab", SHT_SYMTAB, &esm) &&
!elf_find_section(fmap, ".dynsym", SHT_DYNSYM, &esm)) return;
- if ((symp = (const Elf32_Sym*)elf_map_section(&esm)) == ELF_NO_MAP) return;
+ if ((symp = elf_map_section(&esm)) == ELF_NO_MAP) return;
esm_str.fmap = fmap;
esm_str.sidx = fmap->sect[esm.sidx].shdr.sh_link;
if ((strp = elf_map_section(&esm_str)) == ELF_NO_MAP) return;
@@ -471,7 +491,12 @@ static void elf_hash_symtab(struct module* module, struct pool* pool,
*
* lookup a symbol by name in our internal hash table for the symtab
*/
-static const Elf32_Sym* elf_lookup_symtab(const struct module* module,
+#ifdef _WIN64
+static const Elf64_Sym*
+#else
+static const Elf32_Sym*
+#endif
+ elf_lookup_symtab(const struct module* module,
const struct hash_table* ht_symtab,
const char* name, struct symt* compiland)
{
@@ -547,7 +572,11 @@ static void elf_finish_stabs_info(struct module* module, struct hash_table* symt
struct hash_table_iter hti;
void* ptr;
struct symt_ht* sym;
+#ifdef _WIN64
+ const Elf64_Sym* symp;
+#else
const Elf32_Sym* symp;
+#endif
hash_table_iter_init(&module->ht_symbols, &hti, NULL);
while ((ptr = hash_table_iter_up(&hti)))
@@ -1015,7 +1044,7 @@ static BOOL elf_load_debug_info_from_map(struct module* module,
{
const BYTE* dbg_link;
- dbg_link = (const BYTE*)elf_map_section(&debuglink_sect);
+ dbg_link = elf_map_section(&debuglink_sect);
if (dbg_link != ELF_NO_MAP)
{
lret = elf_debuglink_parse(fmap, module, dbg_link);
@@ -1206,7 +1235,11 @@ static BOOL elf_load_file(struct process* pcs, const WCHAR* filename,
if (elf_find_section(&fmap, ".dynamic", SHT_DYNAMIC, &esm))
{
+#ifdef _WIN64
+ Elf64_Dyn dyn;
+#else
Elf32_Dyn dyn;
+#endif
char* ptr = (char*)fmap.sect[esm.sidx].shdr.sh_addr;
unsigned long len;
diff --git a/dlls/dbghelp/minidump.c b/dlls/dbghelp/minidump.c
index 9a317b9..20b03e9 100644
--- a/dlls/dbghelp/minidump.c
+++ b/dlls/dbghelp/minidump.c
@@ -34,7 +34,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(dbghelp);
struct dump_memory
{
- ULONG base;
+ ULONG_PTR base;
ULONG size;
ULONG rva;
};
@@ -42,7 +42,7 @@ struct dump_memory
struct dump_module
{
unsigned is_elf;
- ULONG base;
+ ULONG_PTR base;
ULONG size;
DWORD timestamp;
DWORD checksum;
@@ -218,7 +218,7 @@ static BOOL fetch_thread_info(struct dump_context* dc, int thd_idx,
* Add a module to a dump context
*/
static BOOL add_module(struct dump_context* dc, const WCHAR* name,
- DWORD base, DWORD size, DWORD timestamp, DWORD checksum,
+ DWORD64 base, DWORD size, DWORD timestamp, DWORD checksum,
BOOL is_elf)
{
if (!dc->module)
@@ -650,7 +650,7 @@ static void dump_memory_info(struct dump_context* dc)
{
len = min(dc->mem[i].size - pos, sizeof(tmp));
if (ReadProcessMemory(dc->hProcess,
- (void*)(ULONG)(dc->mem[i].base + pos),
+ (void*)(dc->mem[i].base + pos),
tmp, len, NULL))
WriteFile(dc->hFile, tmp, len, &written, NULL);
}
diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c
index 0bd353e..b635e27 100644
--- a/dlls/dbghelp/msc.c
+++ b/dlls/dbghelp/msc.c
@@ -2234,7 +2234,7 @@ static BOOL pdb_process_internal(const struct process* pcs,
}
file_name = (const char*)file + size;
file_name += strlen(file_name) + 1;
- file = (BYTE*)((DWORD)(file_name + strlen(file_name) + 1 + 3) & ~3);
+ file = (BYTE*)((DWORD_PTR)(file_name + strlen(file_name) + 1 + 3) & ~3);
}
}
else
diff --git a/dlls/dbghelp/pe_module.c b/dlls/dbghelp/pe_module.c
index a42ade1..dc3ddd9 100644
--- a/dlls/dbghelp/pe_module.c
+++ b/dlls/dbghelp/pe_module.c
@@ -322,7 +322,7 @@ BOOL pe_load_debug_info(const struct process* pcs, struct module* module)
*
*/
struct module* pe_load_native_module(struct process* pcs, const WCHAR* name,
- HANDLE hFile, DWORD base, DWORD size)
+ HANDLE hFile, DWORD_PTR base, DWORD size)
{
struct module* module = NULL;
BOOL opened = FALSE;
@@ -380,7 +380,7 @@ struct module* pe_load_native_module(struct process* pcs, const WCHAR* name,
* pe_load_nt_header
*
*/
-BOOL pe_load_nt_header(HANDLE hProc, DWORD base, IMAGE_NT_HEADERS* nth)
+BOOL pe_load_nt_header(HANDLE hProc, DWORD_PTR base, IMAGE_NT_HEADERS* nth)
{
IMAGE_DOS_HEADER dos;
@@ -396,7 +396,7 @@ BOOL pe_load_nt_header(HANDLE hProc, DWORD base, IMAGE_NT_HEADERS* nth)
*
*/
struct module* pe_load_builtin_module(struct process* pcs, const WCHAR* name,
- DWORD base, DWORD size)
+ DWORD_PTR base, DWORD size)
{
struct module* module = NULL;
diff --git a/dlls/dbghelp/stack.c b/dlls/dbghelp/stack.c
index 3cb71e6..ce20dde 100644
--- a/dlls/dbghelp/stack.c
+++ b/dlls/dbghelp/stack.c
@@ -60,7 +60,7 @@ static BOOL CALLBACK read_mem(HANDLE hProcess, DWORD addr, void* buffer,
DWORD size, LPDWORD nread)
{
SIZE_T r;
- if (!ReadProcessMemory(hProcess, (void*)addr, buffer, size, &r)) return FALSE;
+ if (!ReadProcessMemory(hProcess, ULongToPtr(addr), buffer, size, &r)) return FALSE;
if (nread) *nread = r;
return TRUE;
}
@@ -121,7 +121,7 @@ static inline void addr_64to32(const ADDRESS64* addr64, ADDRESS* addr32)
addr32->Mode = addr64->Mode;
}
-static inline BOOL sw_read_mem(struct stack_walk_callback* cb, DWORD addr, void* ptr, DWORD sz)
+static inline BOOL sw_read_mem(struct stack_walk_callback* cb, DWORD_PTR addr, void* ptr, DWORD sz)
{
if (cb->is32)
return cb->u.s32.f_read_mem(cb->hProcess, addr, ptr, sz, NULL);
@@ -232,7 +232,7 @@ static BOOL stack_walk(struct stack_walk_callback* cb, LPSTACKFRAME frame)
WARN("Bad stack frame 0x%08x\n", p);
goto done_err;
}
- curr_switch = (DWORD)frame16.frame32;
+ curr_switch = (DWORD_PTR)frame16.frame32;
if (!sw_read_mem(cb, curr_switch, &ch, sizeof(ch)))
curr_switch = 0xFFFFFFFF;
@@ -298,7 +298,7 @@ static BOOL stack_walk(struct stack_walk_callback* cb, LPSTACKFRAME frame)
WARN("Bad stack frame 0x%08x\n", p);
goto done_err;
}
- curr_switch = (DWORD)frame16.frame32;
+ curr_switch = (DWORD_PTR)frame16.frame32;
curr_mode = stm_32bit;
if (!sw_read_mem(cb, curr_switch, &ch, sizeof(ch)))
curr_switch = 0;
diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c
index a5bb6f0..4f720f5 100644
--- a/dlls/dbghelp/symbol.c
+++ b/dlls/dbghelp/symbol.c
@@ -488,10 +488,11 @@ static void symt_fill_sym_info(const struct module_pair* pair,
if (!symt_get_info(sym, TI_GET_TYPE, &sym_info->TypeIndex))
sym_info->TypeIndex = 0;
- sym_info->info = (DWORD)sym;
+ sym_info->info = (DWORD_PTR)sym;
sym_info->Reserved[0] = sym_info->Reserved[1] = 0;
if (!symt_get_info(sym, TI_GET_LENGTH, &size) &&
(!sym_info->TypeIndex ||
+ /* FIXME: How 32-bit sym_info->TypeIndex becomes an address? */
!symt_get_info((struct symt*)sym_info->TypeIndex, TI_GET_LENGTH, &size)))
size = 0;
sym_info->Size = (DWORD)size;
@@ -554,7 +555,7 @@ static void symt_fill_sym_info(const struct module_pair* pair,
case VT_UI4: sym_info->Value = (ULONG)data->u.value.n1.n2.n3.ulVal; break;
case VT_UI2: sym_info->Value = (ULONG)data->u.value.n1.n2.n3.uiVal; break;
case VT_UI1: sym_info->Value = (ULONG)data->u.value.n1.n2.n3.bVal; break;
- case VT_I1 | VT_BYREF: sym_info->Value = (ULONG)data->u.value.n1.n2.n3.byref; break;
+ case VT_I1 | VT_BYREF: sym_info->Value = (ULONG64)data->u.value.n1.n2.n3.byref; break;
default:
FIXME("Unsupported variant type (%u)\n", data->u.value.n1.n2.vt);
sym_info->Value = 0;
diff --git a/dlls/dbghelp/type.c b/dlls/dbghelp/type.c
index e741602..ed27f0e 100644
--- a/dlls/dbghelp/type.c
+++ b/dlls/dbghelp/type.c
@@ -396,7 +396,7 @@ BOOL WINAPI SymEnumTypes(HANDLE hProcess, ULONG64 BaseOfDll,
for (i=0; i<vector_length(&pair.effective->vtypes); i++)
{
type = *(struct symt**)vector_at(&pair.effective->vtypes, i);
- sym_info->TypeIndex = (DWORD)type;
+ sym_info->TypeIndex = (DWORD)type; /* FIXME: pointer truncation */
sym_info->info = 0; /* FIXME */
symt_get_info(type, TI_GET_LENGTH, &size);
sym_info->Size = size;
@@ -491,7 +491,7 @@ BOOL symt_get_info(const struct symt* type, IMAGEHLP_SYMBOL_TYPE_INFO req,
for (i = 0; i < tifp->Count; i++)
{
if (!(pt = vector_at(v, tifp->Start + i))) return FALSE;
- tifp->ChildId[i] = (DWORD)*pt;
+ tifp->ChildId[i] = (DWORD)*pt; /* FIXME: pointer truncation */
}
}
break;
@@ -661,18 +661,23 @@ BOOL symt_get_info(const struct symt* type, IMAGEHLP_SYMBOL_TYPE_INFO req,
switch (type->tag)
{
case SymTagBlock:
+ /* FIXME: pointer truncation */
X(DWORD) = (DWORD)((const struct symt_block*)type)->container;
break;
case SymTagData:
+ /* FIXME: pointer truncation */
X(DWORD) = (DWORD)((const struct symt_data*)type)->container;
break;
case SymTagFunction:
+ /* FIXME: pointer truncation */
X(DWORD) = (DWORD)((const struct symt_function*)type)->container;
break;
case SymTagThunk:
+ /* FIXME: pointer truncation */
X(DWORD) = (DWORD)((const struct symt_thunk*)type)->container;
break;
case SymTagFunctionArgType:
+ /* FIXME: pointer truncation */
X(DWORD) = (DWORD)((const struct symt_function_arg_type*)type)->container;
break;
default:
@@ -741,26 +746,33 @@ BOOL symt_get_info(const struct symt* type, IMAGEHLP_SYMBOL_TYPE_INFO req,
{
/* hierarchical => hierarchical */
case SymTagArrayType:
+ /* FIXME: pointer truncation */
X(DWORD) = (DWORD)((const struct symt_array*)type)->base_type;
break;
case SymTagPointerType:
+ /* FIXME: pointer truncation */
X(DWORD) = (DWORD)((const struct symt_pointer*)type)->pointsto;
break;
case SymTagFunctionType:
+ /* FIXME: pointer truncation */
X(DWORD) = (DWORD)((const struct symt_function_signature*)type)->rettype;
break;
case SymTagTypedef:
+ /* FIXME: pointer truncation */
X(DWORD) = (DWORD)((const struct symt_typedef*)type)->type;
break;
/* lexical => hierarchical */
case SymTagData:
+ /* FIXME: pointer truncation */
X(DWORD) = (DWORD)((const struct symt_data*)type)->type;
break;
case SymTagFunction:
+ /* FIXME: pointer truncation */
X(DWORD) = (DWORD)((const struct symt_function*)type)->type;
break;
/* FIXME: should also work for enums */
case SymTagFunctionArgType:
+ /* FIXME: pointer truncation */
X(DWORD) = (DWORD)((const struct symt_function_arg_type*)type)->arg_type;
break;
default:
@@ -794,6 +806,7 @@ BOOL symt_get_info(const struct symt* type, IMAGEHLP_SYMBOL_TYPE_INFO req,
break;
case TI_GET_ARRAYINDEXTYPEID:
if (type->tag != SymTagArrayType) return FALSE;
+ /* FIXME: pointer truncation */
X(DWORD) = (DWORD)((const struct symt_array*)type)->index_type;
break;
@@ -837,6 +850,7 @@ BOOL WINAPI SymGetTypeInfo(HANDLE hProcess, DWORD64 ModBase,
return FALSE;
}
+ /* FIXME: pointer conversion */
return symt_get_info((struct symt*)TypeId, GetType, pInfo);
}
@@ -856,7 +870,7 @@ BOOL WINAPI SymGetTypeFromName(HANDLE hProcess, ULONG64 BaseOfDll,
if (!module) return FALSE;
type = symt_find_type_by_name(module, SymTagNull, Name);
if (!type) return FALSE;
- Symbol->TypeIndex = (DWORD)type;
+ Symbol->TypeIndex = (DWORD)type; /* FIXME: pointer truncation */
return TRUE;
}
--
1.5.1.6
More information about the wine-patches
mailing list