mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-23 20:19:49 +00:00
Introduce common-debug.h
This introduces common-debug.h. This holds the functions debug_printf and debug_vprintf, two functions that the common code can use to print debugging messages. Clients of the common code are expected to implement debug_vprintf; a debug_vprintf function is written from scratch for GDB, and gdbserver's existing debug_printf is repurposed as debug_vprintf. common/agent.c is changed to use debug_vprintf rather than defining the macro DEBUG_AGENT depending on GDBSERVER. nat/i386-dregs.c is changed to use the externally-implemented debug_printf, rather than defining it itself. gdb/ChangeLog: * common/common-debug.h: New file. * common/common-debug.c: Likewise. * debug.c: Likewise. * Makefile.in (SFILES): Add common/common-debug.c. (HFILES_NO_SRCDIR): Add common/common-debug.h. (COMMON_OBS): Add common-debug.o and debug.o. (common-debug.o): New rule. * common/common-defs.h: Include common-debug.h. * common/agent.c (debug_agent_printf): New function. (DEBUG_AGENT): Redefine. * nat/i386-dregs.c (debug_printf): Undefine. gdb/gdbserver/ChangeLog: * Makefile.in (SFILES): Add common/common-debug.c. (OBS): Add common-debug.o. (common-debug.o): New rule. * debug.h (debug_printf): Don't declare. * debug.c (debug_printf): Renamed and rewritten as... (debug_vprintf): New function.
This commit is contained in:
parent
f6e94d78b2
commit
34abf635b3
@ -1,3 +1,18 @@
|
||||
2014-08-19 Tom Tromey <tromey@redhat.com>
|
||||
Gary Benson <gbenson@redhat.com>
|
||||
|
||||
* common/common-debug.h: New file.
|
||||
* common/common-debug.c: Likewise.
|
||||
* debug.c: Likewise.
|
||||
* Makefile.in (SFILES): Add common/common-debug.c.
|
||||
(HFILES_NO_SRCDIR): Add common/common-debug.h.
|
||||
(COMMON_OBS): Add common-debug.o and debug.o.
|
||||
(common-debug.o): New rule.
|
||||
* common/common-defs.h: Include common-debug.h.
|
||||
* common/agent.c (debug_agent_printf): New function.
|
||||
(DEBUG_AGENT): Redefine.
|
||||
* nat/i386-dregs.c (debug_printf): Undefine.
|
||||
|
||||
2014-08-19 Gary Benson <gbenson@redhat.com>
|
||||
|
||||
* common/common-defs.h: Include print-utils.h.
|
||||
|
@ -851,7 +851,7 @@ SFILES = ada-exp.y ada-lang.c ada-typeprint.c ada-valprint.c ada-tasks.c \
|
||||
common/ptid.c common/buffer.c gdb-dlfcn.c common/agent.c \
|
||||
common/format.c common/filestuff.c btrace.c record-btrace.c ctf.c \
|
||||
target/waitstatus.c common/print-utils.c common/rsp-low.c \
|
||||
common/errors.c
|
||||
common/errors.c common/common-debug.c
|
||||
|
||||
LINTFILES = $(SFILES) $(YYFILES) $(CONFIG_SRCS) init.c
|
||||
|
||||
@ -936,7 +936,8 @@ gdb_bfd.h sparc-ravenscar-thread.h ppc-ravenscar-thread.h nat/linux-btrace.h \
|
||||
ctf.h nat/i386-cpuid.h nat/i386-gcc-cpuid.h target/resume.h \
|
||||
target/wait.h target/waitstatus.h nat/linux-nat.h nat/linux-waitpid.h \
|
||||
common/print-utils.h common/rsp-low.h nat/i386-dregs.h x86-linux-nat.h \
|
||||
i386-linux-nat.h common/common-defs.h common/errors.h common/common-types.h
|
||||
i386-linux-nat.h common/common-defs.h common/errors.h common/common-types.h \
|
||||
common/common-debug.h
|
||||
|
||||
# Header files that already have srcdir in them, or which are in objdir.
|
||||
|
||||
@ -1035,7 +1036,7 @@ COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $(YYOBJ) \
|
||||
gdb_vecs.o jit.o progspace.o skip.o probe.o \
|
||||
common-utils.o buffer.o ptid.o gdb-dlfcn.o common-agent.o \
|
||||
format.o registry.o btrace.o record-btrace.o waitstatus.o \
|
||||
print-utils.o rsp-low.o errors.o
|
||||
print-utils.o rsp-low.o errors.o common-debug.o debug.o
|
||||
|
||||
TSOBS = inflow.o
|
||||
|
||||
@ -2149,6 +2150,10 @@ errors.o: ${srcdir}/common/errors.c
|
||||
$(COMPILE) $(srcdir)/common/errors.c
|
||||
$(POSTCOMPILE)
|
||||
|
||||
common-debug.o: ${srcdir}/common/common-debug.c
|
||||
$(COMPILE) $(srcdir)/common/common-debug.c
|
||||
$(POSTCOMPILE)
|
||||
|
||||
#
|
||||
# gdb/target/ dependencies
|
||||
#
|
||||
|
@ -31,15 +31,21 @@
|
||||
|
||||
int debug_agent = 0;
|
||||
|
||||
#ifdef GDBSERVER
|
||||
#define DEBUG_AGENT(fmt, args...) \
|
||||
if (debug_agent) \
|
||||
fprintf (stderr, fmt, ##args);
|
||||
#else
|
||||
#define DEBUG_AGENT(fmt, args...) \
|
||||
if (debug_agent) \
|
||||
fprintf_unfiltered (gdb_stdlog, fmt, ##args);
|
||||
#endif
|
||||
/* A stdarg wrapper for debug_vprintf. */
|
||||
|
||||
static void ATTRIBUTE_PRINTF (1, 2)
|
||||
debug_agent_printf (const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
if (!debug_agent)
|
||||
return;
|
||||
va_start (ap, fmt);
|
||||
debug_vprintf (fmt, ap);
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
#define DEBUG_AGENT debug_agent_printf
|
||||
|
||||
/* Global flag to determine using agent or not. */
|
||||
int use_agent = 0;
|
||||
|
37
gdb/common/common-debug.c
Normal file
37
gdb/common/common-debug.c
Normal file
@ -0,0 +1,37 @@
|
||||
/* Debug printing functions.
|
||||
|
||||
Copyright (C) 2014 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef GDBSERVER
|
||||
#include "server.h"
|
||||
#else
|
||||
#include "defs.h"
|
||||
#endif
|
||||
#include "common-debug.h"
|
||||
|
||||
/* See common/common-debug.h. */
|
||||
|
||||
void
|
||||
debug_printf (const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, fmt);
|
||||
debug_vprintf (fmt, ap);
|
||||
va_end (ap);
|
||||
}
|
36
gdb/common/common-debug.h
Normal file
36
gdb/common/common-debug.h
Normal file
@ -0,0 +1,36 @@
|
||||
/* Declarations for debug printing functions.
|
||||
|
||||
Copyright (C) 2014 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef COMMON_DEBUG_H
|
||||
#define COMMON_DEBUG_H
|
||||
|
||||
/* Print a formatted message to the appropriate channel for
|
||||
debugging output for the client. */
|
||||
|
||||
extern void debug_printf (const char *format, ...)
|
||||
ATTRIBUTE_PRINTF (1, 2);
|
||||
|
||||
/* Print a formatted message to the appropriate channel for
|
||||
debugging output for the client. This function must be
|
||||
provided by the client. */
|
||||
|
||||
extern void debug_vprintf (const char *format, va_list ap)
|
||||
ATTRIBUTE_PRINTF (1, 0);
|
||||
|
||||
#endif /* COMMON_DEBUG_H */
|
@ -44,5 +44,6 @@
|
||||
#include "errors.h"
|
||||
#include "common-types.h"
|
||||
#include "print-utils.h"
|
||||
#include "common-debug.h"
|
||||
|
||||
#endif /* COMMON_DEFS_H */
|
||||
|
28
gdb/debug.c
Normal file
28
gdb/debug.c
Normal file
@ -0,0 +1,28 @@
|
||||
/* Debug printing functions.
|
||||
|
||||
Copyright (C) 2014 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "defs.h"
|
||||
|
||||
/* See common/common-debug.h. */
|
||||
|
||||
void
|
||||
debug_vprintf (const char *fmt, va_list ap)
|
||||
{
|
||||
vfprintf_unfiltered (gdb_stdlog, fmt, ap);
|
||||
}
|
@ -1,3 +1,13 @@
|
||||
2014-08-19 Tom Tromey <tromey@redhat.com>
|
||||
Gary Benson <gbenson@redhat.com>
|
||||
|
||||
* Makefile.in (SFILES): Add common/common-debug.c.
|
||||
(OBS): Add common-debug.o.
|
||||
(common-debug.o): New rule.
|
||||
* debug.h (debug_printf): Don't declare.
|
||||
* debug.c (debug_printf): Renamed and rewritten as...
|
||||
(debug_vprintf): New function.
|
||||
|
||||
2014-08-19 Gary Benson <gbenson@redhat.com>
|
||||
|
||||
* utils.h: Do not include print-utils.h.
|
||||
|
@ -169,7 +169,8 @@ SFILES= $(srcdir)/gdbreplay.c $(srcdir)/inferiors.c $(srcdir)/dll.c \
|
||||
$(srcdir)/common/buffer.c $(srcdir)/nat/linux-btrace.c \
|
||||
$(srcdir)/common/filestuff.c $(srcdir)/target/waitstatus.c \
|
||||
$(srcdir)/nat/mips-linux-watch.c $(srcdir)/common/print-utils.c \
|
||||
$(srcdir)/common/rsp-low.c $(srcdir)/common/errors.c
|
||||
$(srcdir)/common/rsp-low.c $(srcdir)/common/errors.c \
|
||||
$(srcdir)/common/common-debug.c
|
||||
|
||||
DEPFILES = @GDBSERVER_DEPFILES@
|
||||
|
||||
@ -182,8 +183,8 @@ OBS = agent.o ax.o inferiors.o regcache.o remote-utils.o server.o signals.o \
|
||||
target.o waitstatus.o utils.o debug.o version.o vec.o gdb_vecs.o \
|
||||
mem-break.o hostio.o event-loop.o tracepoint.o xml-utils.o \
|
||||
common-utils.o ptid.o buffer.o format.o filestuff.o dll.o notif.o \
|
||||
tdesc.o print-utils.o rsp-low.o errors.o $(XML_BUILTIN) $(DEPFILES) \
|
||||
$(LIBOBJS)
|
||||
tdesc.o print-utils.o rsp-low.o errors.o common-debug.o \
|
||||
$(XML_BUILTIN) $(DEPFILES) $(LIBOBJS)
|
||||
GDBREPLAY_OBS = gdbreplay.o version.o
|
||||
GDBSERVER_LIBS = @GDBSERVER_LIBS@
|
||||
XM_CLIBS = @LIBS@
|
||||
@ -540,6 +541,9 @@ agent.o: ../common/agent.c
|
||||
errors.o: ../common/errors.c
|
||||
$(COMPILE) $<
|
||||
$(POSTCOMPILE)
|
||||
common-debug.o: ../common/common-debug.c
|
||||
$(COMPILE) $<
|
||||
$(POSTCOMPILE)
|
||||
waitstatus.o: ../target/waitstatus.c
|
||||
$(COMPILE) $<
|
||||
$(POSTCOMPILE)
|
||||
|
@ -33,9 +33,8 @@ int debug_timestamp;
|
||||
previous call ended with "\n". */
|
||||
|
||||
void
|
||||
debug_printf (const char *msg, ...)
|
||||
debug_vprintf (const char *format, va_list ap)
|
||||
{
|
||||
va_list args;
|
||||
#if !defined (IN_PROCESS_AGENT)
|
||||
/* N.B. Not thread safe, and can't be used, as is, with IPA. */
|
||||
static int new_line = 1;
|
||||
@ -53,13 +52,11 @@ debug_printf (const char *msg, ...)
|
||||
}
|
||||
#endif
|
||||
|
||||
va_start (args, msg);
|
||||
vfprintf (stderr, msg, args);
|
||||
va_end (args);
|
||||
vfprintf (stderr, format, ap);
|
||||
|
||||
#if !defined (IN_PROCESS_AGENT)
|
||||
if (*msg)
|
||||
new_line = msg[strlen (msg) - 1] == '\n';
|
||||
if (*format)
|
||||
new_line = format[strlen (format) - 1] == '\n';
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,6 @@
|
||||
extern int debug_threads;
|
||||
extern int debug_timestamp;
|
||||
|
||||
void debug_printf (const char *msg, ...) ATTRIBUTE_PRINTF (1, 2);
|
||||
void debug_flush (void);
|
||||
void do_debug_enter (const char *function_name);
|
||||
void do_debug_exit (const char *function_name);
|
||||
|
@ -178,10 +178,6 @@ typedef enum { WP_INSERT, WP_REMOVE, WP_COUNT } i386_wp_op_t;
|
||||
#ifndef GDBSERVER
|
||||
/* Whether or not to print the mirrored debug registers. */
|
||||
extern int debug_hw_points;
|
||||
|
||||
/* Print debugging messages. */
|
||||
#define debug_printf(fmt, args...) \
|
||||
fprintf_unfiltered (gdb_stdlog, fmt, ##args);
|
||||
#endif
|
||||
|
||||
/* Print the values of the mirrored debug registers. */
|
||||
|
Loading…
Reference in New Issue
Block a user