winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
June
May
April
March
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
November 2021
----- 2025 -----
June 2025
May 2025
April 2025
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
951 discussions
Start a n
N
ew thread
Eric Pouech : winedump: Properly indent multi lines symbol records.
by Alexandre Julliard
10 Nov '21
10 Nov '21
Module: wine Branch: master Commit: 2447b0131bd0eacb5d1be441a0e2f0fbd4cb9295 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=2447b0131bd0eacb5d1be441…
Author: Eric Pouech <eric.pouech(a)gmail.com> Date: Wed Nov 10 16:43:22 2021 +0100 winedump: Properly indent multi lines symbol records. Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- tools/winedump/msc.c | 84 +++++++++++++++++++++++++++------------------------- 1 file changed, 43 insertions(+), 41 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=2447b0131bd0eacb5d1b…
1
0
0
0
Eric Pouech : winedump: No longer print current function.
by Alexandre Julliard
10 Nov '21
10 Nov '21
Module: wine Branch: master Commit: cdcf5b6f08cd06d6bd7ae113c148a6cbc9fed2c7 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=cdcf5b6f08cd06d6bd7ae113…
Author: Eric Pouech <eric.pouech(a)gmail.com> Date: Wed Nov 10 16:43:08 2021 +0100 winedump: No longer print current function. It's not really relevant when inline sites are present. Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- tools/winedump/msc.c | 62 +++++++++++++++++++++------------------------------- 1 file changed, 25 insertions(+), 37 deletions(-) diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c index f058eaf0b36..2fefa36381a 100644 --- a/tools/winedump/msc.c +++ b/tools/winedump/msc.c @@ -1307,7 +1307,6 @@ BOOL codeview_dump_symbols(const void* root, unsigned long start, unsigned long { unsigned int i; int length; - char* curr_func = NULL; int nest_block = 0; /* * Loop over the different types of records and whenever we @@ -1385,7 +1384,6 @@ BOOL codeview_dump_symbols(const void* root, unsigned long start, unsigned long p_string(&sym->thunk_v1.p_name), sym->thunk_v1.segment, sym->thunk_v1.offset, sym->thunk_v1.thunk_len, sym->thunk_v1.thtype); - curr_func = xstrdup(p_string(&sym->thunk_v1.p_name)); break; case S_THUNK32: @@ -1393,7 +1391,6 @@ BOOL codeview_dump_symbols(const void* root, unsigned long start, unsigned long sym->thunk_v3.name, sym->thunk_v3.segment, sym->thunk_v3.offset, sym->thunk_v3.thunk_len, sym->thunk_v3.thtype); - curr_func = xstrdup(sym->thunk_v3.name); break; /* Global and static functions */ @@ -1409,10 +1406,9 @@ BOOL codeview_dump_symbols(const void* root, unsigned long start, unsigned long sym->proc_v1.debug_start, sym->proc_v1.debug_end); if (nest_block) { - printf(">>> prev func '%s' still has nest_block %u count\n", curr_func, nest_block); + printf(">>> prev func still has nest_block %u count\n", nest_block); nest_block = 0; } - curr_func = xstrdup(p_string(&sym->proc_v1.p_name)); /* EPP unsigned int pparent; */ /* EPP unsigned int pend; */ /* EPP unsigned int next; */ @@ -1430,10 +1426,9 @@ BOOL codeview_dump_symbols(const void* root, unsigned long start, unsigned long sym->proc_v2.debug_start, sym->proc_v2.debug_end); if (nest_block) { - printf(">>> prev func '%s' still has nest_block %u count\n", curr_func, nest_block); + printf(">>> prev func still has nest_block %u count\n", nest_block); nest_block = 0; } - curr_func = xstrdup(p_string(&sym->proc_v2.p_name)); /* EPP unsigned int pparent; */ /* EPP unsigned int pend; */ /* EPP unsigned int next; */ @@ -1451,10 +1446,9 @@ BOOL codeview_dump_symbols(const void* root, unsigned long start, unsigned long sym->proc_v3.debug_start, sym->proc_v3.debug_end); if (nest_block) { - printf(">>> prev func '%s' still has nest_block %u count\n", curr_func, nest_block); + printf(">>> prev func still has nest_block %u count\n", nest_block); nest_block = 0; } - curr_func = xstrdup(sym->proc_v3.name); /* EPP unsigned int pparent; */ /* EPP unsigned int pend; */ /* EPP unsigned int next; */ @@ -1462,59 +1456,57 @@ BOOL codeview_dump_symbols(const void* root, unsigned long start, unsigned long /* Function parameters and stack variables */ case S_BPREL32_16t: - printf("BP-relative V1: '%s' @%d type:%x (%s)\n", + printf("BP-relative V1: '%s' @%d type:%x\n", p_string(&sym->stack_v1.p_name), - sym->stack_v1.offset, sym->stack_v1.symtype, curr_func); + sym->stack_v1.offset, sym->stack_v1.symtype); break; case S_BPREL32_ST: - printf("BP-relative V2: '%s' @%d type:%x (%s)\n", + printf("BP-relative V2: '%s' @%d type:%x\n", p_string(&sym->stack_v2.p_name), - sym->stack_v2.offset, sym->stack_v2.symtype, curr_func); + sym->stack_v2.offset, sym->stack_v2.symtype); break; case S_BPREL32: - printf("BP-relative V3: '%s' @%d type:%x (in %s)\n", + printf("BP-relative V3: '%s' @%d type:%x\n", sym->stack_v3.name, sym->stack_v3.offset, - sym->stack_v3.symtype, curr_func); + sym->stack_v3.symtype); break; case S_REGREL32: - printf("Reg-relative V3: '%s' @%d type:%x reg:%x (in %s)\n", + printf("Reg-relative V3: '%s' @%d type:%x reg:%x\n", sym->regrel_v3.name, sym->regrel_v3.offset, - sym->regrel_v3.symtype, sym->regrel_v3.reg, curr_func); + sym->regrel_v3.symtype, sym->regrel_v3.reg); break; case S_REGISTER_16t: - printf("Register V1 '%s' in %s type:%x register:%x\n", + printf("Register V1 '%s' type:%x register:%x\n", p_string(&sym->register_v1.p_name), - curr_func, sym->register_v1.reg, sym->register_v1.type); + sym->register_v1.reg, sym->register_v1.type); break; case S_REGISTER_ST: - printf("Register V2 '%s' in %s type:%x register:%x\n", + printf("Register V2 '%s' type:%x register:%x\n", p_string(&sym->register_v2.p_name), - curr_func, sym->register_v2.reg, sym->register_v2.type); + sym->register_v2.reg, sym->register_v2.type); break; case S_REGISTER: - printf("Register V3 '%s' in %s type:%x register:%x\n", - sym->register_v3.name, - curr_func, sym->register_v3.reg, sym->register_v3.type); + printf("Register V3 '%s' type:%x register:%x\n", + sym->register_v3.name, sym->register_v3.reg, sym->register_v3.type); break; case S_BLOCK32_ST: - printf("Block V1 '%s' in '%s' (%04x:%08x#%08x)\n", + printf("Block V1 '%s' (%04x:%08x#%08x)\n", p_string(&sym->block_v1.p_name), - curr_func, sym->block_v1.segment, sym->block_v1.offset, sym->block_v1.length); nest_block++; break; case S_BLOCK32: - printf("Block V3 '%s' in '%s' (%04x:%08x#%08x) parent:%u end:%x\n", - sym->block_v3.name, curr_func, + printf("Block V3 '%s' (%04x:%08x#%08x) parent:%u end:%x\n", + sym->block_v3.name, sym->block_v3.segment, sym->block_v3.offset, sym->block_v3.length, sym->block_v3.parent, sym->block_v3.end); nest_block++; @@ -1544,11 +1536,7 @@ BOOL codeview_dump_symbols(const void* root, unsigned long start, unsigned long printf("End-Of block (%u)\n", nest_block); } else - { - printf("End-Of %s\n", curr_func); - free(curr_func); - curr_func = NULL; - } + printf("End-Of function\n"); break; case S_COMPILE: @@ -1642,14 +1630,14 @@ BOOL codeview_dump_symbols(const void* root, unsigned long start, unsigned long break; case S_LABEL32_ST: - printf("Label V1 '%s' in '%s' (%04x:%08x)\n", + printf("Label V1 '%s' (%04x:%08x)\n", p_string(&sym->label_v1.p_name), - curr_func, sym->label_v1.segment, sym->label_v1.offset); + sym->label_v1.segment, sym->label_v1.offset); break; case S_LABEL32: - printf("Label V3 '%s' in '%s' (%04x:%08x) flag:%x\n", - sym->label_v3.name, curr_func, sym->label_v3.segment, + printf("Label V3 '%s' (%04x:%08x) flag:%x\n", + sym->label_v3.name, sym->label_v3.segment, sym->label_v3.offset, sym->label_v3.flags); break;
1
0
0
0
Eric Pouech : winedump: Pass start offset when dumping symbols.
by Alexandre Julliard
10 Nov '21
10 Nov '21
Module: wine Branch: master Commit: c77db0064ab5b4b022a27f56c005b4c3765167f1 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=c77db0064ab5b4b022a27f56…
Author: Eric Pouech <eric.pouech(a)gmail.com> Date: Wed Nov 10 16:42:55 2021 +0100 winedump: Pass start offset when dumping symbols. Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- tools/winedump/debug.c | 4 ++-- tools/winedump/lib.c | 2 +- tools/winedump/msc.c | 6 +++--- tools/winedump/pdb.c | 4 ++-- tools/winedump/winedump.h | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tools/winedump/debug.c b/tools/winedump/debug.c index c2efeb24340..b49c6337494 100644 --- a/tools/winedump/debug.c +++ b/tools/winedump/debug.c @@ -135,7 +135,7 @@ static BOOL dump_cv_sst_global_pub(const OMFDirEntry* omfde) symbols = PRD(fileoffset + sizeof(OMFSymHash), header->cbSymbol); if (!symbols) {printf("Can't OMF-SymHash details, aborting\n"); return FALSE;} - codeview_dump_symbols(symbols, header->cbSymbol); + codeview_dump_symbols(symbols, 0, header->cbSymbol); return TRUE; } @@ -320,7 +320,7 @@ static BOOL dump_cv_sst_align_sym(const OMFDirEntry* omfde) if (!rawdata) {printf("Can't get srcAlignSym subsection details, aborting\n");return FALSE;} if (omfde->cb < sizeof(DWORD)) return TRUE; - codeview_dump_symbols(rawdata + sizeof(DWORD), omfde->cb - sizeof(DWORD)); + codeview_dump_symbols(rawdata, sizeof(DWORD), omfde->cb); return TRUE; } diff --git a/tools/winedump/lib.c b/tools/winedump/lib.c index 430ec2d4de7..4000e8679cf 100644 --- a/tools/winedump/lib.c +++ b/tools/winedump/lib.c @@ -97,7 +97,7 @@ static void dump_long_import(const void *base, const IMAGE_SECTION_HEADER *ish, { const char *imp_debugS = (const char *)base + ish[i].PointerToRawData; - codeview_dump_symbols(imp_debugS, ish[i].SizeOfRawData); + codeview_dump_symbols(imp_debugS, 0, ish[i].SizeOfRawData); printf("\n"); } } diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c index cd91ea63634..f058eaf0b36 100644 --- a/tools/winedump/msc.c +++ b/tools/winedump/msc.c @@ -1303,7 +1303,7 @@ static void dump_binannot(const unsigned char* ba, const char* last, const char* } } -BOOL codeview_dump_symbols(const void* root, unsigned long size) +BOOL codeview_dump_symbols(const void* root, unsigned long start, unsigned long size) { unsigned int i; int length; @@ -1313,12 +1313,12 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size) * Loop over the different types of records and whenever we * find something we are interested in, record it and move on. */ - for (i = 0; i < size; i += length) + for (i = start; i < size; i += length) { const union codeview_symbol* sym = (const union codeview_symbol*)((const char*)root + i); length = sym->generic.len + 2; if (!sym->generic.id || length < 4) break; - printf("\t%04x => ", i + 4); /* ref is made after id and len */ + printf("\t%04x => ", i); switch (sym->generic.id) { diff --git a/tools/winedump/pdb.c b/tools/winedump/pdb.c index 958a13f5e1c..7badc8a32e2 100644 --- a/tools/winedump/pdb.c +++ b/tools/winedump/pdb.c @@ -473,7 +473,7 @@ static void pdb_dump_symbols(struct pdb_reader* reader, PDB_STREAM_INDEXES* sidx if (modimage) { printf("\t------------globals-------------\n"); - codeview_dump_symbols(modimage, pdb_get_file_size(reader, symbols->gsym_file)); + codeview_dump_symbols(modimage, 0, pdb_get_file_size(reader, symbols->gsym_file)); free(modimage); } @@ -588,7 +588,7 @@ static void pdb_dump_symbols(struct pdb_reader* reader, PDB_STREAM_INDEXES* sidx int total_size = pdb_get_file_size(reader, file_nr); if (symbol_size) - codeview_dump_symbols((const char*)modimage + sizeof(DWORD), symbol_size); + codeview_dump_symbols((const char*)modimage, sizeof(DWORD), symbol_size); /* line number info */ if (lineno_size) diff --git a/tools/winedump/winedump.h b/tools/winedump/winedump.h index 236ce6dede3..6013d3caae6 100644 --- a/tools/winedump/winedump.h +++ b/tools/winedump/winedump.h @@ -259,7 +259,7 @@ void tlb_dump(void); enum FileSig get_kind_nls(void); void nls_dump(void); -BOOL codeview_dump_symbols(const void* root, unsigned long size); +BOOL codeview_dump_symbols(const void* root, unsigned long start, unsigned long size); BOOL codeview_dump_types_from_offsets(const void* table, const DWORD* offsets, unsigned num_types); BOOL codeview_dump_types_from_block(const void* table, unsigned long len); void codeview_dump_linetab(const char* linetab, BOOL pascal_str, const char* pfx);
1
0
0
0
Eric Pouech : winedump: Add some more codeview entries.
by Alexandre Julliard
10 Nov '21
10 Nov '21
Module: wine Branch: master Commit: f1e0753cdd0bf1ae18781d58f1b8db547040dc44 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=f1e0753cdd0bf1ae18781d58…
Author: Eric Pouech <eric.pouech(a)gmail.com> Date: Wed Nov 10 16:42:41 2021 +0100 winedump: Add some more codeview entries. Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/wine/mscvpdb.h | 37 +++++++++++++++++++++++++++++++++++++ tools/winedump/msc.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h index f7dcbcb6625..b0021ed3c25 100644 --- a/include/wine/mscvpdb.h +++ b/include/wine/mscvpdb.h @@ -482,6 +482,17 @@ union codeview_reftype unsigned num; cv_typ_t drvdcls[1]; } derived_v2; + + struct + { + unsigned short int len; + unsigned short int id; + cv_typ_t type; + cv_typ_t baseVftable; + unsigned offsetInObjectLayout; + unsigned cbstr; + char names[1]; /* array of len 0-terminated strings (size of cbstr in char:s) */ + } vftable_v3; }; union codeview_fieldtype @@ -1287,6 +1298,7 @@ union codeview_fieldtype #define LF_METHOD_V3 0x150f #define LF_NESTTYPE_V3 0x1510 #define LF_ONEMETHOD_V3 0x1511 +#define LF_VFTABLE_V3 0x151d /* leaves found in second type type (aka IPI) * for simplicity, stored in the same union as other TPI leaves @@ -1988,6 +2000,30 @@ union codeview_symbol unsigned short int id; char name[1]; } unamespace_v3; + + struct + { + unsigned short int len; + unsigned short int id; + unsigned int pParent; + unsigned int pEnd; + unsigned int length; + unsigned int scf; /* CV_SEPCODEFLAGS */ + unsigned int off; + unsigned int offParent; + unsigned short int sect; + unsigned short int sectParent; + } sepcode_v3; + + struct + { + unsigned short int len; + unsigned short int id; + unsigned int off; + unsigned short int seg; + unsigned short int csz; /* number of bytes in following array */ + char rgsz[1]; /* array of null terminated strings (bounded by csz) */ + } annotation_v3; }; enum BinaryAnnotationOpcode @@ -2061,6 +2097,7 @@ enum BinaryAnnotationOpcode #define S_GTHREAD32_ST 0x100f #define S_FRAMEPROC 0x1012 #define S_COMPILE2_ST 0x1013 +#define S_ANNOTATION 0x1019 #define S_UNAMESPACE_ST 0x1029 #define S_OBJNAME 0x1101 diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c index 40daf4d50d5..cd91ea63634 100644 --- a/tools/winedump/msc.c +++ b/tools/winedump/msc.c @@ -1102,6 +1102,20 @@ static void codeview_dump_one_type(unsigned curr_type, const union codeview_type printf("\n"); break; + case LF_VFTABLE_V3: + printf("\t%x => VFTable V3 base:%x baseVfTable:%x offset%u\n", + curr_type, reftype->vftable_v3.type, reftype->vftable_v3.baseVftable, reftype->vftable_v3.offsetInObjectLayout); + { + const char* str = reftype->vftable_v3.names; + const char* last = str + reftype->vftable_v3.cbstr; + while (str < last) + { + printf("\t\t%s\n", str); + str += strlen(str) + 1; + } + } + break; + /* types from IPI (aka #4) stream */ case LF_FUNC_ID: printf("\t%x => FuncId %s scopeId:%04x type:%04x\n", @@ -1867,6 +1881,24 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size) printf("UNameSpace V3 '%s'\n", sym->unamespace_v3.name); break; + case S_SEPCODE: + printf("SepCode V3 pParent:%x pEnd:%x separated:%04x:%08x (#%u) from %04x:%08x\n", + sym->sepcode_v3.pParent, sym->sepcode_v3.pEnd, + sym->sepcode_v3.sect, sym->sepcode_v3.off, sym->sepcode_v3.length, + sym->sepcode_v3.sectParent, sym->sepcode_v3.offParent); + break; + + case S_ANNOTATION: + printf("Annotation V3 %04x:%08x\n", + sym->annotation_v3.seg, sym->annotation_v3.off); + { + const char* ptr = sym->annotation_v3.rgsz; + const char* last = ptr + sym->annotation_v3.csz; + for (; ptr < last; ptr += strlen(ptr) + 1) + printf("\t%s\n", ptr); + } + break; + default: printf("\n\t\t>>> Unsupported symbol-id %x sz=%d\n", sym->generic.id, sym->generic.len + 2); dump_data((const void*)sym, sym->generic.len + 2, " ");
1
0
0
0
Eric Pouech : mscvpdb.h: Fix string types.
by Alexandre Julliard
10 Nov '21
10 Nov '21
Module: wine Branch: master Commit: a15e1e815034c67f62ca09e53fd04dd8859cf31a URL:
https://source.winehq.org/git/wine.git/?a=commit;h=a15e1e815034c67f62ca09e5…
Author: Eric Pouech <eric.pouech(a)gmail.com> Date: Wed Nov 10 16:42:28 2021 +0100 mscvpdb.h: Fix string types. Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/wine/mscvpdb.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h index 9a733333837..f7dcbcb6625 100644 --- a/include/wine/mscvpdb.h +++ b/include/wine/mscvpdb.h @@ -603,7 +603,7 @@ union codeview_fieldtype cv_typ_t type; unsigned short int offset; /* numeric leaf */ #if 0 - unsigned char name[1]; + char name[1]; #endif } member_v3; @@ -1986,7 +1986,7 @@ union codeview_symbol { unsigned short int len; unsigned short int id; - unsigned char name[1]; + char name[1]; } unamespace_v3; };
1
0
0
0
Eric Pouech : winedump: Better detect whether IPI stream is present.
by Alexandre Julliard
10 Nov '21
10 Nov '21
Module: wine Branch: master Commit: 97c3c41732ffa3ac876378e96a42f5e38342f377 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=97c3c41732ffa3ac876378e9…
Author: Eric Pouech <eric.pouech(a)gmail.com> Date: Wed Nov 10 16:42:14 2021 +0100 winedump: Better detect whether IPI stream is present. Old version of PDB files can have a stream #4 which is not an IPI stream Available documentation isn't 100% clear about when IPI has been introduced. So decide that IPI is present when header of stream looks like a type stream header. Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- tools/winedump/pdb.c | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/tools/winedump/pdb.c b/tools/winedump/pdb.c index ed4877cd10a..958a13f5e1c 100644 --- a/tools/winedump/pdb.c +++ b/tools/winedump/pdb.c @@ -54,6 +54,21 @@ struct pdb_reader DWORD file_used[1024]; }; +static inline BOOL has_file_been_read(struct pdb_reader* reader, unsigned file_nr) +{ + return reader->file_used[file_nr / 32] & (1 << (file_nr % 32)); +} + +static inline void mark_file_been_read(struct pdb_reader* reader, unsigned file_nr) +{ + reader->file_used[file_nr / 32] |= 1 << (file_nr % 32); +} + +static inline void clear_file_been_read(struct pdb_reader* reader, unsigned file_nr) +{ + reader->file_used[file_nr / 32] &= ~(1 << (file_nr % 32)); +} + static void* pdb_jg_read(const struct PDB_JG_HEADER* pdb, const WORD* block_list, int size) { int i, nBlocks; @@ -78,7 +93,7 @@ static void* pdb_jg_read_file(struct pdb_reader* reader, DWORD file_nr) if (!reader->u.jg.toc || file_nr >= reader->u.jg.toc->num_files) return NULL; - reader->file_used[file_nr / 32] |= 1 << (file_nr % 32); + mark_file_been_read(reader, file_nr); if (reader->u.jg.toc->file[file_nr].size == 0 || reader->u.jg.toc->file[file_nr].size == 0xFFFFFFFF) return NULL; @@ -125,7 +140,7 @@ static void pdb_exit(struct pdb_reader* reader) for (i = 0; i < pdb_get_num_files(reader); i++) { - if (reader->file_used[i / 32] & (1 << (i % 32))) continue; + if (has_file_been_read(reader, i)) continue; file = reader->read_file(reader, i); if (!file) continue; @@ -615,7 +630,14 @@ static void pdb_dump_types_hash(struct pdb_reader* reader, unsigned file, const static void pdb_dump_types(struct pdb_reader* reader, unsigned strmidx, const char* strmname) { PDB_TYPES* types = NULL; + BOOL used = has_file_been_read(reader, strmidx); + if (pdb_get_file_size(reader, strmidx) < sizeof(*types)) + { + if (strmidx == 2) + printf("-Too small type header\n"); + return; + } types = reader->read_file(reader, strmidx); if (!types) return; @@ -628,7 +650,12 @@ static void pdb_dump_types(struct pdb_reader* reader, unsigned strmidx, const ch case 20040203: /* VC 8.0 */ break; default: - printf("-Unknown type info version %d\n", types->version); + /* IPI stream is not always present in older PDB files */ + if (strmidx == 2) + printf("-Unknown type info version %d\n", types->version); + free(types); + if (used) clear_file_been_read(reader, strmidx); + return; } /* Read type table */ @@ -870,7 +897,7 @@ static void* pdb_ds_read_file(struct pdb_reader* reader, DWORD file_number) if (!reader->u.ds.toc || file_number >= reader->u.ds.toc->num_files) return NULL; - reader->file_used[file_number / 32] |= 1 << (file_number % 32); + mark_file_been_read(reader, file_number); if (reader->u.ds.toc->file_size[file_number] == 0 || reader->u.ds.toc->file_size[file_number] == 0xFFFFFFFF) return NULL; @@ -932,7 +959,7 @@ static void pdb_ds_dump(void) * - segments * - extended FPO data */ - reader.file_used[0] |= 1; /* mark stream #0 as read */ + mark_file_been_read(&reader, 0); /* mark stream #0 as read */ reader.u.ds.root = reader.read_file(&reader, 1); if (reader.u.ds.root) {
1
0
0
0
Eric Pouech : dbghelp/msc: Better detect whether IPI stream is present.
by Alexandre Julliard
10 Nov '21
10 Nov '21
Module: wine Branch: master Commit: 0c3274b526eea28f8686ba9c47ae89e3ad4431ac URL:
https://source.winehq.org/git/wine.git/?a=commit;h=0c3274b526eea28f8686ba9c…
Author: Eric Pouech <eric.pouech(a)gmail.com> Date: Wed Nov 10 16:42:14 2021 +0100 dbghelp/msc: Better detect whether IPI stream is present. Old version of PDB files can have a stream #4 which is not an IPI stream Available documentation isn't 100% clear about when IPI has been introduced. So decide that IPI is present when header of stream looks like a type stream header. Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dbghelp/msc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c index c481c762b1d..4e44655deb5 100644 --- a/dlls/dbghelp/msc.c +++ b/dlls/dbghelp/msc.c @@ -3047,6 +3047,7 @@ static BOOL pdb_init_type_parse(const struct msc_debug_info* msc_dbg, break; default: ERR("-Unknown type info version %d\n", types.version); + return FALSE; } ctp->module = msc_dbg->module; @@ -3324,6 +3325,7 @@ static BOOL pdb_process_internal(const struct process* pcs, BYTE* file; int header_size = 0; PDB_STREAM_INDEXES* psi; + BOOL ipi_ok; pdb_convert_symbols_header(&symbols, &header_size, symbols_image); switch (symbols.version) @@ -3363,7 +3365,7 @@ static BOOL pdb_process_internal(const struct process* pcs, pdb_process_types(msc_dbg, pdb_file); ipi_image = pdb_read_file(pdb_file, 4); - pdb_init_type_parse(msc_dbg, &ipi_ctp, ipi_image); + ipi_ok = pdb_init_type_parse(msc_dbg, &ipi_ctp, ipi_image); /* Read global symbol table */ globalimage = pdb_read_file(pdb_file, symbols.gsym_file); @@ -3387,7 +3389,7 @@ static BOOL pdb_process_internal(const struct process* pcs, modimage = pdb_read_file(pdb_file, sfile.file); if (modimage) { - struct cv_module_snarf cvmod = {&ipi_ctp, (const void*)(modimage + sfile.symbol_size), sfile.lineno2_size, + struct cv_module_snarf cvmod = {ipi_ok ? &ipi_ctp : NULL, (const void*)(modimage + sfile.symbol_size), sfile.lineno2_size, files_image + 12, files_size}; codeview_snarf(msc_dbg, modimage, sizeof(DWORD), sfile.symbol_size, &cvmod, TRUE);
1
0
0
0
Eric Pouech : dbghelp/pdb: Fix start adress of block.
by Alexandre Julliard
10 Nov '21
10 Nov '21
Module: wine Branch: master Commit: 92fabc64e50d3201f3ed270214f9121f9952957d URL:
https://source.winehq.org/git/wine.git/?a=commit;h=92fabc64e50d3201f3ed2702…
Author: Eric Pouech <eric.pouech(a)gmail.com> Date: Wed Nov 10 16:42:03 2021 +0100 dbghelp/pdb: Fix start adress of block. Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dbghelp/msc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c index c0d09b75c56..c481c762b1d 100644 --- a/dlls/dbghelp/msc.c +++ b/dlls/dbghelp/msc.c @@ -2246,12 +2246,12 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, case S_BLOCK32_ST: block = symt_open_func_block(msc_dbg->module, curr_func, block, - codeview_get_address(msc_dbg, sym->block_v1.segment, sym->block_v1.offset), + codeview_get_address(msc_dbg, sym->block_v1.segment, sym->block_v1.offset) - curr_func->address, sym->block_v1.length); break; case S_BLOCK32: block = symt_open_func_block(msc_dbg->module, curr_func, block, - codeview_get_address(msc_dbg, sym->block_v3.segment, sym->block_v3.offset), + codeview_get_address(msc_dbg, sym->block_v3.segment, sym->block_v3.offset) - curr_func->address, sym->block_v3.length); break;
1
0
0
0
Rémi Bernon : dinput: Fix DIEFF_CARTESIAN to DIEFF_SPHERICAL conversion.
by Alexandre Julliard
10 Nov '21
10 Nov '21
Module: wine Branch: master Commit: 0697d1caf1b33e3921015490002a4a94ff54b4dc URL:
https://source.winehq.org/git/wine.git/?a=commit;h=0697d1caf1b33e3921015490…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Wed Nov 10 10:52:28 2021 +0100 dinput: Fix DIEFF_CARTESIAN to DIEFF_SPHERICAL conversion. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dinput/joystick_hid.c | 10 ++++++++-- dlls/dinput8/tests/hid.c | 3 --- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/dlls/dinput/joystick_hid.c b/dlls/dinput/joystick_hid.c index a9716b20ab5..5a3c46e2d9a 100644 --- a/dlls/dinput/joystick_hid.c +++ b/dlls/dinput/joystick_hid.c @@ -2019,13 +2019,19 @@ static BOOL get_parameters_object_ofs( struct hid_joystick *impl, struct hid_val static void convert_directions_to_spherical( const DIEFFECT *in, DIEFFECT *out ) { - DWORD i, direction_flags = DIEFF_CARTESIAN | DIEFF_POLAR | DIEFF_SPHERICAL; + DWORD i, j, direction_flags = DIEFF_CARTESIAN | DIEFF_POLAR | DIEFF_SPHERICAL; + double tmp; switch (in->dwFlags & direction_flags) { case DIEFF_CARTESIAN: for (i = 1; i < in->cAxes; ++i) - out->rglDirection[i - 1] = atan2( in->rglDirection[i], in->rglDirection[0] ); + { + tmp = in->rglDirection[0]; + for (j = 1; j < i; ++j) tmp = sqrt( tmp * tmp + in->rglDirection[j] * in->rglDirection[j] ); + tmp = atan2( in->rglDirection[i], tmp ); + out->rglDirection[i - 1] = tmp * 18000 / M_PI; + } out->rglDirection[in->cAxes - 1] = 0; out->cAxes = in->cAxes; break; diff --git a/dlls/dinput8/tests/hid.c b/dlls/dinput8/tests/hid.c index 5f89f13146a..66e8c7c0b0d 100644 --- a/dlls/dinput8/tests/hid.c +++ b/dlls/dinput8/tests/hid.c @@ -6085,7 +6085,6 @@ static void test_periodic_effect( IDirectInputDevice8W *device, HANDLE file, DWO } else { - todo_wine ok( desc.rglDirection[0] == 6343, "got rglDirection[0] %d expected %d\n", desc.rglDirection[0], 6343 ); if (i == 2) @@ -6097,7 +6096,6 @@ static void test_periodic_effect( IDirectInputDevice8W *device, HANDLE file, DWO } else { - todo_wine ok( desc.rglDirection[1] == 5330, "got rglDirection[1] %d expected %d\n", desc.rglDirection[1], 5330 ); ok( desc.rglDirection[2] == 0, "got rglDirection[2] %d expected %d\n", @@ -6141,7 +6139,6 @@ static void test_periodic_effect( IDirectInputDevice8W *device, HANDLE file, DWO { ok( hr == DI_OK, "GetParameters returned %#x\n", hr ); ok( desc.cAxes == i, "got cAxes %u expected 2\n", desc.cAxes ); - todo_wine ok( desc.rglDirection[0] == 15343, "got rglDirection[0] %d expected %d\n", desc.rglDirection[0], 15343 ); ok( desc.rglDirection[1] == 0, "got rglDirection[1] %d expected %d\n", desc.rglDirection[1], 0 );
1
0
0
0
Rémi Bernon : dinput: Only convert DIEFFECT directions to spherical when needed.
by Alexandre Julliard
10 Nov '21
10 Nov '21
Module: wine Branch: master Commit: bd6d258e33e0eec79b9fd8f1be0ac5836a8a5606 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=bd6d258e33e0eec79b9fd8f1…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Wed Nov 10 10:52:27 2021 +0100 dinput: Only convert DIEFFECT directions to spherical when needed. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dinput/joystick_hid.c | 182 +++++++++++++++++++++++++++++++++------------ dlls/dinput8/tests/hid.c | 7 -- 2 files changed, 134 insertions(+), 55 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=bd6d258e33e0eec79b9f…
1
0
0
0
← Newer
1
...
56
57
58
59
60
61
62
...
96
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Results per page:
10
25
50
100
200