winedbg: Fix compilation with gcc 2.95 and non-GNU compilers.
authorFrancois Gouget <fgouget@free.fr>
Sat, 27 Mar 2010 15:55:27 +0000 (16:55 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Mon, 29 Mar 2010 09:45:27 +0000 (11:45 +0200)
programs/winedbg/db_disasm64.c

index d7f7c032a1517a3f1c97388759c9be0c4250140e..98f7ef2f3f35742861035b1b038e296dcc51b20d 100644 (file)
 #include <stdio.h>
 #include "debugger.h"
 
-static int             (*db_printf)(const char* format, ...)
-#ifdef __GNUC__
-                                                              __attribute__((format (printf,1,2)));
+#ifndef __GNUC__
+#define __attribute__(X)
 #endif
-static int             no_printf(const char* format, ...) {return 0;}
+
+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;
+}
+
 typedef DWORD_PTR db_addr_t;
 typedef BOOL boolean_t;
 
@@ -79,7 +93,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_printf != no_printf)
+    if (db_debug)
     {
         ADDRESS64   a;
 
@@ -1642,6 +1656,6 @@ db_disasm(db_addr_t loc, boolean_t altfmt)
 
 void be_x86_64_disasm_one_insn(ADDRESS64 *addr, int display)
 {
-    db_printf = display ? dbg_printf : no_printf;
+    db_debug = display;
     addr->Offset = db_disasm(addr->Offset, TRUE);
 }