diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c index baab45d1bfd..90e832cfe64 100644 --- a/dlls/dbghelp/msc.c +++ b/dlls/dbghelp/msc.c @@ -1669,16 +1669,16 @@ static int codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* root codeview_get_type(sym->stack_v3.symtype, FALSE), sym->stack_v3.name); break; - case S_BPREL_XXXX_V3: + case S_REGREL_V3: loc.kind = loc_regrel; - loc.reg = 0; /* FIXME */ - loc.offset = sym->stack_xxxx_v3.offset; - WARN("Supposed stack variable %s (%d)\n", sym->stack_xxxx_v3.name, sym->stack_xxxx_v3.unknown); + loc.reg = sym->regrel_v3.reg; + loc.offset = sym->regrel_v3.offset; symt_add_func_local(msc_dbg->module, curr_func, - sym->stack_xxxx_v3.offset > 0 ? DataIsParam : DataIsLocal, + /* FIXME this is wrong !!! */ + sym->regrel_v3.offset > 0 ? DataIsParam : DataIsLocal, &loc, block, - codeview_get_type(sym->stack_xxxx_v3.symtype, FALSE), - sym->stack_xxxx_v3.name); + codeview_get_type(sym->regrel_v3.symtype, FALSE), + sym->regrel_v3.name); break; case S_REGISTER_V1: diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h index c9bdb4f212d..2d5b9c9157a 100644 --- a/include/wine/mscvpdb.h +++ b/include/wine/mscvpdb.h @@ -1380,9 +1380,9 @@ union codeview_symbol short int id; /* Always S_BPREL_V3 */ int offset; /* Stack offset relative to BP */ unsigned int symtype; - unsigned short unknown; + unsigned short reg; char name[1]; - } stack_xxxx_v3; + } regrel_v3; struct { @@ -1646,7 +1646,7 @@ union codeview_symbol #define S_PUB_V3 0x110E #define S_LPROC_V3 0x110F #define S_GPROC_V3 0x1110 -#define S_BPREL_XXXX_V3 0x1111 /* not really understood, but looks like bprel... */ +#define S_REGREL_V3 0x1111 #define S_MSTOOL_V3 0x1116 /* compiler command line options and build information */ #define S_PUB_FUNC1_V3 0x1125 /* didn't get the difference between the two */ #define S_PUB_FUNC2_V3 0x1127 diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c index ccd4664e741..c9173091ac0 100644 --- a/tools/winedump/msc.c +++ b/tools/winedump/msc.c @@ -1059,10 +1059,10 @@ int codeview_dump_symbols(const void* root, unsigned long size) sym->stack_v3.symtype, curr_func); break; - case S_BPREL_XXXX_V3: - printf("\tS-BP-relative XXXX V3: '%s' @%d type:%x unkn:%x (in %s)\n", - sym->stack_xxxx_v3.name, sym->stack_xxxx_v3.offset, - sym->stack_xxxx_v3.symtype, sym->stack_xxxx_v3.unknown, curr_func); + case S_REGREL_V3: + printf("\tS-Reg-relative V3: '%s' @%d type:%x reg:%x (in %s)\n", + sym->regrel_v3.name, sym->regrel_v3.offset, + sym->regrel_v3.symtype, sym->regrel_v3.reg, curr_func); break; case S_REGISTER_V1: