Alexandre Julliard a écrit :
Module: wine
Branch: master
Commit: 51dfd9adb11885daec878737f18f89fb05c1516c
URL:    
http://source.winehq.org/git/wine.git/?a=commit;h=51dfd9adb11885daec878737f18f89fb05c1516c

Author: Francois Gouget <fgou...@free.fr>
Date:   Sat Mar 27 16:55:27 2010 +0100

winedbg: Fix compilation with gcc 2.95 and non-GNU compilers.
François,
what was the exact issue here ? I guess that the ; at the end of the attribute definition for GNUCC compiler was missing for the non gnu C compilers ? your fix is wrong as dbg_printf doesn't take a va_list as argument (you'd want dbg_vprintf which doesn't exist)
does the attached patch work in your configuration ?

A+

--
Eric Pouech
"The problem with designing something completely foolproof is to underestimate the 
ingenuity of a complete idiot." (Douglas Adams)

diff --git a/programs/winedbg/db_disasm64.c b/programs/winedbg/db_disasm64.c
index 98f7ef2..88fa0dd 100644
--- a/programs/winedbg/db_disasm64.c
+++ b/programs/winedbg/db_disasm64.c
@@ -32,24 +32,13 @@
 #include <stdio.h>
 #include "debugger.h"
 
-#ifndef __GNUC__
-#define __attribute__(X)
+#ifdef __GNUC__
+static int             (*db_printf)(const char* format, ...) 
__attribute__((format (printf,1,2)));
+#else
+static int             (*db_printf)(const char* format, ...);
 #endif
 
-static int db_debug = 0;
-static int db_printf(const char* format, ...) __attribute__((format 
(printf,1,2)));
-int db_printf(const char* format, ...)
-{
-    va_list valist;
-    int len = 0;
-    if (db_debug)
-    {
-        va_start(valist, format);
-        len = dbg_printf(format, valist);
-        va_end(valist);
-    }
-    return len;
-}
+static int             no_printf(const char* format, ...) {return 0;}
 
 typedef DWORD_PTR db_addr_t;
 typedef BOOL boolean_t;
@@ -93,7 +82,7 @@ static ULONG64  db_get_value(db_addr_t addr, int size, int 
is_signed)
 
 static void db_printsym(db_addr_t addr, unsigned unused)
 {
-    if (db_debug)
+    if (db_printf != no_printf)
     {
         ADDRESS64   a;
 
@@ -1656,6 +1645,6 @@ db_disasm(db_addr_t loc, boolean_t altfmt)
 
 void be_x86_64_disasm_one_insn(ADDRESS64 *addr, int display)
 {
-    db_debug = display;
+    db_printf = display ? dbg_printf : no_printf;
     addr->Offset = db_disasm(addr->Offset, TRUE);
 }


Reply via email to