dbghelp: Fix STABS support for 64-bit on OS X.

OS X uses a struct nlist_64 for 64-bit images, where the n_value field is a
64-bit unsigned integer.
This commit is contained in:
Ken Thomases 2015-06-24 16:31:14 -05:00 committed by Alexandre Julliard
parent c4be28ed26
commit 604ce29cb3

View File

@ -111,7 +111,11 @@ struct stab_nlist
unsigned char n_type;
char n_other;
short n_desc;
#if defined(__APPLE__) && defined(_WIN64)
unsigned long n_value;
#else
unsigned n_value;
#endif
};
static void stab_strcpy(char* dest, int sz, const char* source)
@ -1465,7 +1469,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset,
case 35:
case 36: loc.reg = CV_REG_MM0 + stab_ptr->n_value - 29; break;
default:
FIXME("Unknown register value (%u)\n", stab_ptr->n_value);
FIXME("Unknown register value (%lu)\n", (unsigned long)stab_ptr->n_value);
loc.reg = CV_REG_NONE;
break;
}
@ -1615,7 +1619,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset,
case N_EXCL:
if (stabs_add_include(stabs_find_include(ptr, stab_ptr->n_value)) < 0)
{
ERR("Excluded header not found (%s,%d)\n", ptr, stab_ptr->n_value);
ERR("Excluded header not found (%s,%ld)\n", ptr, (unsigned long)stab_ptr->n_value);
module_reset_debug_info(module);
ret = FALSE;
goto done;
@ -1661,8 +1665,8 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset,
break;
}
stabbuff[0] = '\0';
TRACE("0x%02x %x %s\n",
stab_ptr->n_type, stab_ptr->n_value, debugstr_a(strs + stab_ptr->n_strx));
TRACE("0x%02x %lx %s\n",
stab_ptr->n_type, (unsigned long)stab_ptr->n_value, debugstr_a(strs + stab_ptr->n_strx));
}
module->module.SymType = SymDia;
module->module.CVSig = 'S' | ('T' << 8) | ('A' << 16) | ('B' << 24);