Commit 604ce29c authored by Ken Thomases's avatar Ken Thomases Committed by Alexandre Julliard

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.
parent c4be28ed
...@@ -111,7 +111,11 @@ struct stab_nlist ...@@ -111,7 +111,11 @@ struct stab_nlist
unsigned char n_type; unsigned char n_type;
char n_other; char n_other;
short n_desc; short n_desc;
#if defined(__APPLE__) && defined(_WIN64)
unsigned long n_value;
#else
unsigned n_value; unsigned n_value;
#endif
}; };
static void stab_strcpy(char* dest, int sz, const char* source) 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, ...@@ -1465,7 +1469,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset,
case 35: case 35:
case 36: loc.reg = CV_REG_MM0 + stab_ptr->n_value - 29; break; case 36: loc.reg = CV_REG_MM0 + stab_ptr->n_value - 29; break;
default: 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; loc.reg = CV_REG_NONE;
break; break;
} }
...@@ -1615,7 +1619,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, ...@@ -1615,7 +1619,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset,
case N_EXCL: case N_EXCL:
if (stabs_add_include(stabs_find_include(ptr, stab_ptr->n_value)) < 0) 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); module_reset_debug_info(module);
ret = FALSE; ret = FALSE;
goto done; goto done;
...@@ -1661,8 +1665,8 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, ...@@ -1661,8 +1665,8 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset,
break; break;
} }
stabbuff[0] = '\0'; stabbuff[0] = '\0';
TRACE("0x%02x %x %s\n", TRACE("0x%02x %lx %s\n",
stab_ptr->n_type, stab_ptr->n_value, debugstr_a(strs + stab_ptr->n_strx)); stab_ptr->n_type, (unsigned long)stab_ptr->n_value, debugstr_a(strs + stab_ptr->n_strx));
} }
module->module.SymType = SymDia; module->module.SymType = SymDia;
module->module.CVSig = 'S' | ('T' << 8) | ('A' << 16) | ('B' << 24); module->module.CVSig = 'S' | ('T' << 8) | ('A' << 16) | ('B' << 24);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment