Hi,
License: X11
ChangeLog:
Jon Griffiths <jon_p_griffiths@yahoo.com>
+tools/winedump/pe.c tools/winedump/msmangle.c
tools/winedump/symbol.c
Support float and function ptr args better, -W warning fixes.
+tools/winedump/README
Spelling.
=====
"Don't wait for the seas to part, or messiahs to come;
Don't you sit around and waste this chance..." - Live
jon_p_griffiths@yahoo.com
__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com
diff -u wine/tools/winedump/README wine-develop/tools/winedump/README
--- wine/tools/winedump/README Fri Jul 4 17:48:46 2003
+++ wine-develop/tools/winedump/README Thu Jul 17 23:10:40 2003
@@ -543,7 +543,7 @@
Now uncomment the line that winedump inserted into msvcrt.spec:
-#inport ms_msvcrt.dll
+#import ms_msvcrt.dll
And recompile Wine.
diff -u wine/tools/winedump/msmangle.c wine-develop/tools/winedump/msmangle.c
--- wine/tools/winedump/msmangle.c Sat Oct 19 17:16:29 2002
+++ wine-develop/tools/winedump/msmangle.c Thu Jul 17 23:10:40 2003
@@ -507,11 +507,12 @@
{
if (*iter == '6')
{
+ int sub_expressions = 0;
/* FIXME: there are a tons of memory leaks here */
/* FIXME: this is still broken in some cases and it has to be
* merged with the function prototype parsing above...
*/
- iter += 3; /* FIXME */
+ iter += iter[1] == 'A' ? 2 : 3; /* FIXME */
if (!demangle_datatype (&iter, &sub_ct, sym))
return NULL;
ct->expression = str_create(2, sub_ct.expression, " (*)(");
@@ -523,8 +524,12 @@
INIT_CT (sub_ct);
if (!demangle_datatype (&iter, &sub_ct, sym))
return NULL;
- ct->expression = str_create(3, ct->expression, ", ", sub_ct.expression);
+ if (sub_expressions)
+ ct->expression = str_create(3, ct->expression, ", ", sub_ct.expression);
+ else
+ ct->expression = str_create(2, ct->expression, sub_ct.expression);
while (*iter == '@') iter++;
+ sub_expressions++;
}
} else while (*iter == '@') iter++;
iter++;
@@ -739,7 +744,7 @@
case 'J': case 'K':
return ARG_LONG;
case 'M':
- return -1; /* FIXME */
+ return ARG_FLOAT;
case 'N': case 'O':
return ARG_DOUBLE;
case 'P': case 'Q':
diff -u wine/tools/winedump/pe.c wine-develop/tools/winedump/pe.c
--- wine/tools/winedump/pe.c Sat May 31 12:38:16 2003
+++ wine-develop/tools/winedump/pe.c Thu Jul 17 23:10:40 2003
@@ -673,7 +673,7 @@
"HTML"
};
- if (id < sizeof(types)/sizeof(types[0])) return types[id];
+ if ((size_t)id < sizeof(types)/sizeof(types[0])) return types[id];
return NULL;
}
@@ -948,7 +948,7 @@
#endif
{
if (!(PE_base = malloc( PE_total_len ))) fatal( "Out of memory" );
- if (read( fd, PE_base, PE_total_len ) != (int)PE_total_len) fatal( "Cannot read file" );
+ if ((unsigned long)read( fd, PE_base, PE_total_len ) != (int)PE_total_len) fatal( "Cannot read file" );
}
effective_sig = check_headers();
diff -u wine/tools/winedump/symbol.c wine-develop/tools/winedump/symbol.c
--- wine/tools/winedump/symbol.c Thu Sep 12 17:29:12 2002
+++ wine-develop/tools/winedump/symbol.c Thu Jul 17 23:10:40 2003
@@ -259,6 +259,9 @@
if (strstr (string, "double"))
return ARG_DOUBLE;
+ if (strstr (string, "float"))
+ return ARG_FLOAT;
+
if (strstr (string, "void") || strstr (string, "VOID"))
return ARG_VOID;