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
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
March 2009
----- 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
834 discussions
Start a n
N
ew thread
Ken Thomases : dbghelp/stabs: Track line numbers pending for an upcoming function.
by Alexandre Julliard
12 Mar '09
12 Mar '09
Module: wine Branch: master Commit: 985f0ea18f4cf05d8b96829e5992b62e6af6b34d URL:
http://source.winehq.org/git/wine.git/?a=commit;h=985f0ea18f4cf05d8b96829e5…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Wed Mar 11 09:08:50 2009 -0500 dbghelp/stabs: Track line numbers pending for an upcoming function. On Darwin, line numbers usually precede the associated function. --- dlls/dbghelp/stabs.c | 20 +++++++++++++------- 1 files changed, 13 insertions(+), 7 deletions(-) diff --git a/dlls/dbghelp/stabs.c b/dlls/dbghelp/stabs.c index e12fcfa..fd88722 100644 --- a/dlls/dbghelp/stabs.c +++ b/dlls/dbghelp/stabs.c @@ -1265,7 +1265,8 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, unsigned incl[32]; int incl_stk = -1; int source_idx = -1; - struct pending_list pending; + struct pending_list pending_block; + struct pending_list pending_func; BOOL ret = TRUE; struct location loc; unsigned char type; @@ -1275,7 +1276,8 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, memset(srcpath, 0, sizeof(srcpath)); memset(stabs_basic, 0, sizeof(stabs_basic)); - memset(&pending, 0, sizeof(pending)); + memset(&pending_block, 0, sizeof(pending_block)); + memset(&pending_func, 0, sizeof(pending_func)); /* * Allocate a buffer into which we can build stab strings for cases @@ -1381,7 +1383,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, { block = symt_open_func_block(module, curr_func, block, stab_ptr->n_value, 0); - pending_flush(&pending, module, curr_func, block); + pending_flush(&pending_block, module, curr_func, block); } break; case N_RBRAC: @@ -1465,7 +1467,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, param_type); } else - pending_add_var(&pending, ptr, DataIsLocal, &loc); + pending_add_var(&pending_block, ptr, DataIsLocal, &loc); } break; case N_LSYM: @@ -1473,19 +1475,21 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, loc.kind = loc_regrel; loc.reg = 0; /* FIXME */ loc.offset = stab_ptr->n_value; - if (curr_func != NULL) pending_add_var(&pending, ptr, DataIsLocal, &loc); + if (curr_func != NULL) pending_add_var(&pending_block, ptr, DataIsLocal, &loc); break; case N_SLINE: /* * This is a line number. These are always relative to the start * of the function (N_FUN), and this makes the lookup easier. */ + assert(source_idx >= 0); if (curr_func != NULL) { - assert(source_idx >= 0); symt_add_func_line(module, curr_func, source_idx, stab_ptr->n_desc, stab_ptr->n_value); } + else pending_add_line(&pending_func, source_idx, stab_ptr->n_desc, + stab_ptr->n_value); break; case N_FUN: /* @@ -1520,6 +1524,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, curr_func = symt_new_function(module, compiland, symname, load_offset + stab_ptr->n_value, 0, &func_type->symt); + pending_flush(&pending_func, module, curr_func, NULL); } else { @@ -1649,7 +1654,8 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, done: HeapFree(GetProcessHeap(), 0, stabbuff); stabs_free_includes(); - HeapFree(GetProcessHeap(), 0, pending.objs); + HeapFree(GetProcessHeap(), 0, pending_block.objs); + HeapFree(GetProcessHeap(), 0, pending_func.objs); return ret; }
1
0
0
0
Ken Thomases : dbghelp/stabs: Allow pending list to include line numbers as well as variables.
by Alexandre Julliard
12 Mar '09
12 Mar '09
Module: wine Branch: master Commit: 65d929079cb85b222c72c595b4d0a9ee2fb868ed URL:
http://source.winehq.org/git/wine.git/?a=commit;h=65d929079cb85b222c72c595b…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Wed Mar 11 09:08:45 2009 -0500 dbghelp/stabs: Allow pending list to include line numbers as well as variables. On Darwin, line numbers usually precede the associated function. --- dlls/dbghelp/stabs.c | 90 +++++++++++++++++++++++++++++++++++++------------ 1 files changed, 68 insertions(+), 22 deletions(-) diff --git a/dlls/dbghelp/stabs.c b/dlls/dbghelp/stabs.c index 91b85fe..e12fcfa 100644 --- a/dlls/dbghelp/stabs.c +++ b/dlls/dbghelp/stabs.c @@ -1112,6 +1112,12 @@ static struct symt* stabs_parse_type(const char* stab) return *stabs_read_type_enum(&c); } +enum pending_obj_kind +{ + PENDING_VAR, + PENDING_LINE, +}; + struct pending_loc_var { char name[256]; @@ -1120,9 +1126,25 @@ struct pending_loc_var struct location loc; }; -struct pending_block +struct pending_line +{ + int source_idx; + int line_num; + unsigned long offset; +}; + +struct pending_object { - struct pending_loc_var* vars; + enum pending_obj_kind tag; + union { + struct pending_loc_var var; + struct pending_line line; + } u; +}; + +struct pending_list +{ + struct pending_object* objs; unsigned num; unsigned allocated; }; @@ -1132,37 +1154,61 @@ static inline void pending_make_room(struct pending_list* pending) if (pending->num == pending->allocated) { pending->allocated += 8; - if (!pending->vars) - pending->vars = HeapAlloc(GetProcessHeap(), 0, - pending->allocated * sizeof(pending->vars[0])); + if (!pending->objs) + pending->objs = HeapAlloc(GetProcessHeap(), 0, + pending->allocated * sizeof(pending->objs[0])); else - pending->vars = HeapReAlloc(GetProcessHeap(), 0, pending->vars, - pending->allocated * sizeof(pending->vars[0])); + pending->objs = HeapReAlloc(GetProcessHeap(), 0, pending->objs, + pending->allocated * sizeof(pending->objs[0])); } } -static inline void pending_add(struct pending_block* pending, const char* name, - enum DataKind dt, const struct location* loc) +static inline void pending_add_var(struct pending_list* pending, const char* name, + enum DataKind dt, const struct location* loc) +{ + pending_make_room(pending); + pending->objs[pending->num].tag = PENDING_VAR; + stab_strcpy(pending->objs[pending->num].u.var.name, + sizeof(pending->objs[pending->num].u.var.name), name); + pending->objs[pending->num].u.var.type = stabs_parse_type(name); + pending->objs[pending->num].u.var.kind = dt; + pending->objs[pending->num].u.var.loc = *loc; + pending->num++; +} + +static inline void pending_add_line(struct pending_list* pending, int source_idx, + int line_num, unsigned long offset) { pending_make_room(pending); - stab_strcpy(pending->vars[pending->num].name, - sizeof(pending->vars[pending->num].name), name); - pending->vars[pending->num].type = stabs_parse_type(name); - pending->vars[pending->num].kind = dt; - pending->vars[pending->num].loc = *loc; + pending->objs[pending->num].tag = PENDING_LINE; + pending->objs[pending->num].u.line.source_idx = source_idx; + pending->objs[pending->num].u.line.line_num = line_num; + pending->objs[pending->num].u.line.offset = offset; pending->num++; } -static void pending_flush(struct pending_block* pending, struct module* module, +static void pending_flush(struct pending_list* pending, struct module* module, struct symt_function* func, struct symt_block* block) { unsigned int i; for (i = 0; i < pending->num; i++) { - symt_add_func_local(module, func, - pending->vars[i].kind, &pending->vars[i].loc, - block, pending->vars[i].type, pending->vars[i].name); + switch (pending->objs[i].tag) + { + case PENDING_VAR: + symt_add_func_local(module, func, + pending->objs[i].u.var.kind, &pending->objs[i].u.var.loc, + block, pending->objs[i].u.var.type, pending->objs[i].u.var.name); + break; + case PENDING_LINE: + symt_add_func_line(module, func, pending->objs[i].u.line.source_idx, + pending->objs[i].u.line.line_num, pending->objs[i].u.line.offset); + break; + default: + ERR("Unknown pending object tag %u\n", (unsigned)pending->objs[i].tag); + break; + } } pending->num = 0; } @@ -1219,7 +1265,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, unsigned incl[32]; int incl_stk = -1; int source_idx = -1; - struct pending_block pending; + struct pending_list pending; BOOL ret = TRUE; struct location loc; unsigned char type; @@ -1419,7 +1465,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, param_type); } else - pending_add(&pending, ptr, DataIsLocal, &loc); + pending_add_var(&pending, ptr, DataIsLocal, &loc); } break; case N_LSYM: @@ -1427,7 +1473,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, loc.kind = loc_regrel; loc.reg = 0; /* FIXME */ loc.offset = stab_ptr->n_value; - if (curr_func != NULL) pending_add(&pending, ptr, DataIsLocal, &loc); + if (curr_func != NULL) pending_add_var(&pending, ptr, DataIsLocal, &loc); break; case N_SLINE: /* @@ -1603,7 +1649,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, done: HeapFree(GetProcessHeap(), 0, stabbuff); stabs_free_includes(); - HeapFree(GetProcessHeap(), 0, pending.vars); + HeapFree(GetProcessHeap(), 0, pending.objs); return ret; }
1
0
0
0
Ken Thomases : dbghelp/stabs: Extract growing of pending_block' s buffer to pending_make_room().
by Alexandre Julliard
12 Mar '09
12 Mar '09
Module: wine Branch: master Commit: a1ac32822aa52cc08fc7608e40fbb4fba19f6e85 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=a1ac32822aa52cc08fc7608e4…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Wed Mar 11 09:08:38 2009 -0500 dbghelp/stabs: Extract growing of pending_block's buffer to pending_make_room(). --- dlls/dbghelp/stabs.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/dlls/dbghelp/stabs.c b/dlls/dbghelp/stabs.c index 33590ab..91b85fe 100644 --- a/dlls/dbghelp/stabs.c +++ b/dlls/dbghelp/stabs.c @@ -1127,8 +1127,7 @@ struct pending_block unsigned allocated; }; -static inline void pending_add(struct pending_block* pending, const char* name, - enum DataKind dt, const struct location* loc) +static inline void pending_make_room(struct pending_list* pending) { if (pending->num == pending->allocated) { @@ -1140,6 +1139,12 @@ static inline void pending_add(struct pending_block* pending, const char* name, pending->vars = HeapReAlloc(GetProcessHeap(), 0, pending->vars, pending->allocated * sizeof(pending->vars[0])); } +} + +static inline void pending_add(struct pending_block* pending, const char* name, + enum DataKind dt, const struct location* loc) +{ + pending_make_room(pending); stab_strcpy(pending->vars[pending->num].name, sizeof(pending->vars[pending->num].name), name); pending->vars[pending->num].type = stabs_parse_type(name);
1
0
0
0
Ken Thomases : dbghelp: Teach stabs_parse about other kinds of Mach-O symbol definitions.
by Alexandre Julliard
12 Mar '09
12 Mar '09
Module: wine Branch: master Commit: 615fff293a29560f46570097455d90e8320c1ffd URL:
http://source.winehq.org/git/wine.git/?a=commit;h=615fff293a29560f465700974…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Wed Mar 11 09:08:33 2009 -0500 dbghelp: Teach stabs_parse about other kinds of Mach-O symbol definitions. --- dlls/dbghelp/stabs.c | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/dlls/dbghelp/stabs.c b/dlls/dbghelp/stabs.c index aeac9cb..33590ab 100644 --- a/dlls/dbghelp/stabs.c +++ b/dlls/dbghelp/stabs.c @@ -53,6 +53,10 @@ #include <assert.h> #include <stdarg.h> +#ifdef HAVE_MACH_O_NLIST_H +# include <mach-o/nlist.h> +#endif + #include "windef.h" #include "winbase.h" #include "winnls.h" @@ -1549,12 +1553,25 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, /* Always ignore these, they seem to be used only on Darwin. */ break; case N_ABS: +#ifdef N_SECT + case N_SECT: +#endif /* FIXME: Other definition types (N_TEXT, N_DATA, N_BSS, ...)? */ if (callback) { BOOL is_public = (stab_ptr->n_type & N_EXT); BOOL is_global = is_public; +#ifdef N_PEXT + /* "private extern"; shared among compilation units in a shared + * library, but not accessible from outside the library. */ + if (stab_ptr->n_type & N_PEXT) + { + is_public = FALSE; + is_global = TRUE; + } +#endif + if (*ptr == '_') ptr++; stab_strcpy(symname, sizeof(symname), ptr);
1
0
0
0
Ken Thomases : configure: Check for mach-o/dyld_images.h and mach-o/nlist. h headers.
by Alexandre Julliard
12 Mar '09
12 Mar '09
Module: wine Branch: master Commit: d35c0e87eb04e120f75da3942a1fe042e9760e27 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=d35c0e87eb04e120f75da3942…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Wed Mar 11 09:05:53 2009 -0500 configure: Check for mach-o/dyld_images.h and mach-o/nlist.h headers. --- configure | 4 ++++ configure.ac | 2 ++ include/config.h.in | 6 ++++++ 3 files changed, 12 insertions(+), 0 deletions(-) diff --git a/configure b/configure index 4ccd3bf..9e0094f 100755 --- a/configure +++ b/configure @@ -6092,6 +6092,8 @@ done + + for ac_header in \ AudioUnit/AudioUnit.h \ Carbon/Carbon.h \ @@ -6137,6 +6139,8 @@ for ac_header in \ linux/serial.h \ linux/types.h \ linux/ucdrom.h \ + mach-o/dyld_images.h \ + mach-o/nlist.h \ mach/mach.h \ mach/machine.h \ machine/cpu.h \ diff --git a/configure.ac b/configure.ac index 590ca4e..e114331 100644 --- a/configure.ac +++ b/configure.ac @@ -315,6 +315,8 @@ AC_CHECK_HEADERS(\ linux/serial.h \ linux/types.h \ linux/ucdrom.h \ + mach-o/dyld_images.h \ + mach-o/nlist.h \ mach/mach.h \ mach/machine.h \ machine/cpu.h \ diff --git a/include/config.h.in b/include/config.h.in index 9f3da47..047e90c 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -432,6 +432,12 @@ /* Define to 1 if you have the <mach/mach.h> header file. */ #undef HAVE_MACH_MACH_H +/* Define to 1 if you have the <mach-o/dyld_images.h> header file. */ +#undef HAVE_MACH_O_DYLD_IMAGES_H + +/* Define to 1 if you have the <mach-o/nlist.h> header file. */ +#undef HAVE_MACH_O_NLIST_H + /* Define to 1 if you have the `memmove' function. */ #undef HAVE_MEMMOVE
1
0
0
0
Ken Thomases : dbghelp: Let stabs_parse call back for real (non-debug) symbol definitions.
by Alexandre Julliard
12 Mar '09
12 Mar '09
Module: wine Branch: master Commit: 3db11b98b706564dd821f95e9c1b3a7af29f636f URL:
http://source.winehq.org/git/wine.git/?a=commit;h=3db11b98b706564dd821f95e9…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Wed Mar 11 09:05:49 2009 -0500 dbghelp: Let stabs_parse call back for real (non-debug) symbol definitions. --- dlls/dbghelp/dbghelp_private.h | 7 ++++++- dlls/dbghelp/elf_module.c | 3 ++- dlls/dbghelp/pe_module.c | 3 ++- dlls/dbghelp/stabs.c | 17 ++++++++++++++++- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/dlls/dbghelp/dbghelp_private.h b/dlls/dbghelp/dbghelp_private.h index 132a6b9..5d3f401 100644 --- a/dlls/dbghelp/dbghelp_private.h +++ b/dlls/dbghelp/dbghelp_private.h @@ -487,9 +487,14 @@ extern unsigned source_new(struct module* module, const char* basedir, const extern const char* source_get(const struct module* module, unsigned idx); /* stabs.c */ +typedef void (*stabs_def_cb)(struct module* module, unsigned long load_offset, + const char* name, unsigned long offset, + BOOL is_public, BOOL is_global, unsigned char other, + struct symt_compiland* compiland, void* user); extern BOOL stabs_parse(struct module* module, unsigned long load_offset, const void* stabs, int stablen, - const char* strs, int strtablen); + const char* strs, int strtablen, + stabs_def_cb callback, void* user); /* dwarf.c */ extern BOOL dwarf2_parse(struct module* module, unsigned long load_offset, diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c index 820c972..3b6c7cc 100644 --- a/dlls/dbghelp/elf_module.c +++ b/dlls/dbghelp/elf_module.c @@ -1039,7 +1039,8 @@ static BOOL elf_load_debug_info_from_map(struct module* module, /* OK, now just parse all of the stabs. */ lret = stabs_parse(module, module->elf_info->elf_addr, stab, elf_get_map_size(&stab_sect), - stabstr, elf_get_map_size(&stabstr_sect)); + stabstr, elf_get_map_size(&stabstr_sect), + NULL, NULL); if (lret) /* and fill in the missing information for stabs */ elf_finish_stabs_info(module, ht_symtab); diff --git a/dlls/dbghelp/pe_module.c b/dlls/dbghelp/pe_module.c index 4e77790..91c7d80 100644 --- a/dlls/dbghelp/pe_module.c +++ b/dlls/dbghelp/pe_module.c @@ -72,7 +72,8 @@ static BOOL pe_load_stabs(const struct process* pcs, struct module* module, RtlImageRvaToVa(nth, mapping, stabs, NULL), stabsize, RtlImageRvaToVa(nth, mapping, stabstr, NULL), - stabstrsize); + stabstrsize, + NULL, NULL); } TRACE("%s the STABS debug info\n", ret ? "successfully loaded" : "failed to load"); diff --git a/dlls/dbghelp/stabs.c b/dlls/dbghelp/stabs.c index 58c7783..aeac9cb 100644 --- a/dlls/dbghelp/stabs.c +++ b/dlls/dbghelp/stabs.c @@ -1191,7 +1191,8 @@ static void stabs_finalize_function(struct module* module, struct symt_function* BOOL stabs_parse(struct module* module, unsigned long load_offset, const void* pv_stab_ptr, int stablen, - const char* strs, int strtablen) + const char* strs, int strtablen, + stabs_def_cb callback, void* user) { struct symt_function* curr_func = NULL; struct symt_block* block = NULL; @@ -1547,6 +1548,20 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, case N_OSO: /* Always ignore these, they seem to be used only on Darwin. */ break; + case N_ABS: + /* FIXME: Other definition types (N_TEXT, N_DATA, N_BSS, ...)? */ + if (callback) + { + BOOL is_public = (stab_ptr->n_type & N_EXT); + BOOL is_global = is_public; + + if (*ptr == '_') ptr++; + stab_strcpy(symname, sizeof(symname), ptr); + + callback(module, load_offset, symname, stab_ptr->n_value, + is_public, is_global, stab_ptr->n_other, compiland, user); + } + break; default: ERR("Unknown stab type 0x%02x\n", type); break;
1
0
0
0
Ken Thomases : dbghelp/stabs: Decode the Stabs type more carefully.
by Alexandre Julliard
12 Mar '09
12 Mar '09
Module: wine Branch: master Commit: 82a3f8fcb22f3180f45aa86f7ecd24aa3a9516bb URL:
http://source.winehq.org/git/wine.git/?a=commit;h=82a3f8fcb22f3180f45aa86f7…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Wed Mar 11 09:05:42 2009 -0500 dbghelp/stabs: Decode the Stabs type more carefully. --- dlls/dbghelp/stabs.c | 27 ++++++++++++++++++++++++--- 1 files changed, 24 insertions(+), 3 deletions(-) diff --git a/dlls/dbghelp/stabs.c b/dlls/dbghelp/stabs.c index 6605c96..58c7783 100644 --- a/dlls/dbghelp/stabs.c +++ b/dlls/dbghelp/stabs.c @@ -63,9 +63,24 @@ WINE_DEFAULT_DEBUG_CHANNEL(dbghelp_stabs); +/* Masks for n_type field */ +#ifndef N_STAB +#define N_STAB 0xe0 +#endif +#ifndef N_TYPE +#define N_TYPE 0x1e +#endif +#ifndef N_EXT +#define N_EXT 0x01 +#endif + +/* Values for (n_type & N_TYPE) */ #ifndef N_UNDF #define N_UNDF 0x00 #endif +#ifndef N_ABS +#define N_ABS 0x02 +#endif #define N_GSYM 0x20 #define N_FUN 0x24 @@ -1197,6 +1212,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, struct pending_block pending; BOOL ret = TRUE; struct location loc; + unsigned char type; nstab = stablen / sizeof(struct stab_nlist); strs_end = strs + strtablen; @@ -1244,8 +1260,13 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, ptr = stabbuff; } + if (stab_ptr->n_type & N_STAB) + type = stab_ptr->n_type; + else + type = (stab_ptr->n_type & N_TYPE); + /* only symbol entries contain a typedef */ - switch (stab_ptr->n_type) + switch (type) { case N_GSYM: case N_LCSYM: @@ -1275,7 +1296,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, } } - switch (stab_ptr->n_type) + switch (type) { case N_GSYM: /* @@ -1527,7 +1548,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, /* Always ignore these, they seem to be used only on Darwin. */ break; default: - ERR("Unknown stab type 0x%02x\n", stab_ptr->n_type); + ERR("Unknown stab type 0x%02x\n", type); break; } stabbuff[0] = '\0';
1
0
0
0
Ken Thomases : dbghelp/stabs: Ignore the N_OSO type used on Darwin.
by Alexandre Julliard
12 Mar '09
12 Mar '09
Module: wine Branch: master Commit: 1ecd634c4b377c752ab45b8560de84ec9ea70750 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1ecd634c4b377c752ab45b856…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Wed Mar 11 09:05:32 2009 -0500 dbghelp/stabs: Ignore the N_OSO type used on Darwin. --- dlls/dbghelp/stabs.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/dlls/dbghelp/stabs.c b/dlls/dbghelp/stabs.c index cbc0e2f..6605c96 100644 --- a/dlls/dbghelp/stabs.c +++ b/dlls/dbghelp/stabs.c @@ -79,6 +79,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(dbghelp_stabs); #define N_SLINE 0x44 #define N_ENSYM 0x4e #define N_SO 0x64 +#define N_OSO 0x66 #define N_LSYM 0x80 #define N_BINCL 0x82 #define N_SOL 0x84 @@ -1522,6 +1523,7 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, break; case N_BNSYM: case N_ENSYM: + case N_OSO: /* Always ignore these, they seem to be used only on Darwin. */ break; default:
1
0
0
0
Ken Thomases : dbghelp/stabs: Translate additional register codes.
by Alexandre Julliard
12 Mar '09
12 Mar '09
Module: wine Branch: master Commit: 1f4ddbaed9b985d2167d322fb96acc8a4825b4c3 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1f4ddbaed9b985d2167d322fb…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Wed Mar 11 09:05:27 2009 -0500 dbghelp/stabs: Translate additional register codes. --- dlls/dbghelp/stabs.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-) diff --git a/dlls/dbghelp/stabs.c b/dlls/dbghelp/stabs.c index 3cba34f..cbc0e2f 100644 --- a/dlls/dbghelp/stabs.c +++ b/dlls/dbghelp/stabs.c @@ -1354,6 +1354,22 @@ BOOL stabs_parse(struct module* module, unsigned long load_offset, case 17: case 18: case 19: loc.reg = CV_REG_ST0 + stab_ptr->n_value - 12; break; + case 21: + case 22: + case 23: + case 24: + case 25: + case 26: + case 27: + case 28: loc.reg = CV_REG_XMM0 + stab_ptr->n_value - 21; break; + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: loc.reg = CV_REG_MM0 + stab_ptr->n_value - 29; break; default: FIXME("Unknown register value (%lu)\n", stab_ptr->n_value); loc.reg = CV_REG_NONE;
1
0
0
0
Henri Verbeet : wined3d: Remove the shader_color_fixup field from IWineD3DBaseTextureClass.
by Alexandre Julliard
12 Mar '09
12 Mar '09
Module: wine Branch: master Commit: e3bcc7544c40dc386868aba21b8506d0bd649db3 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=e3bcc7544c40dc386868aba21…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Thu Mar 12 09:53:15 2009 +0100 wined3d: Remove the shader_color_fixup field from IWineD3DBaseTextureClass. This is redundant now. --- dlls/wined3d/device.c | 3 --- dlls/wined3d/pixelshader.c | 2 +- dlls/wined3d/utils.c | 2 +- dlls/wined3d/wined3d_private.h | 1 - 4 files changed, 2 insertions(+), 6 deletions(-) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 683c9f4..52df212 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1067,7 +1067,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateTexture(IWineD3DDevice *iface, tmpW = max(1, tmpW >> 1); tmpH = max(1, tmpH >> 1); } - object->baseTexture.shader_color_fixup = object->resource.format_desc->color_fixup; object->baseTexture.internal_preload = texture_internal_preload; TRACE("(%p) : Created texture %p\n", This, object); @@ -1188,7 +1187,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateVolumeTexture(IWineD3DDevice *ifa tmpH = max(1, tmpH >> 1); tmpD = max(1, tmpD >> 1); } - object->baseTexture.shader_color_fixup = object->resource.format_desc->color_fixup; object->baseTexture.internal_preload = volumetexture_internal_preload; *ppVolumeTexture = (IWineD3DVolumeTexture *) object; @@ -1386,7 +1384,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateCubeTexture(IWineD3DDevice *iface } tmpW = max(1, tmpW >> 1); } - object->baseTexture.shader_color_fixup = object->resource.format_desc->color_fixup; object->baseTexture.internal_preload = cubetexture_internal_preload; TRACE("(%p) : Created Cube Texture %p\n", This, object); diff --git a/dlls/wined3d/pixelshader.c b/dlls/wined3d/pixelshader.c index 3d32635..68dd801 100644 --- a/dlls/wined3d/pixelshader.c +++ b/dlls/wined3d/pixelshader.c @@ -468,7 +468,7 @@ void find_ps_compile_args(IWineD3DPixelShaderImpl *shader, IWineD3DStateBlockImp args->color_fixup[i] = COLOR_FIXUP_IDENTITY; continue; } - args->color_fixup[i] = tex->baseTexture.shader_color_fixup; + args->color_fixup[i] = tex->resource.format_desc->color_fixup; } if (shader->baseShader.reg_maps.shader_version >= WINED3DPS_VERSION(3,0)) { diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 6d19010..e6a6de0 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -2105,7 +2105,7 @@ void gen_ffp_frag_op(IWineD3DStateBlockImpl *stateblock, struct ffp_frag_setting texture = (IWineD3DBaseTextureImpl *) stateblock->textures[i]; if(texture) { - settings->op[i].color_fixup = texture->baseTexture.shader_color_fixup; + settings->op[i].color_fixup = texture->resource.format_desc->color_fixup; if(ignore_textype) { settings->op[i].tex_type = tex_1d; } else { diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 8ed82fc..570ab7f 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1336,7 +1336,6 @@ typedef struct IWineD3DBaseTextureClass BOOL is_srgb; const struct min_lookup *minMipLookup; const GLenum *magLookup; - struct color_fixup_desc shader_color_fixup; void (*internal_preload)(IWineD3DBaseTexture *iface, enum WINED3DSRGB srgb); } IWineD3DBaseTextureClass;
1
0
0
0
← Newer
1
...
39
40
41
42
43
44
45
...
84
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
Results per page:
10
25
50
100
200