mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 14:49:38 +08:00
gdb/
* Makefile.in (SFILES): Remove common/target-common.c and add target/waitstatus.c. (HFILES_NO_SRCDIR): Remove common/target-common.h and add target/resume.h, target/wait.h and target/waitstatus.h. (COMMON_OBS): Remove target-common.o and add waitstatus.o. (target-common.o): Remove. (waitstatus.o): New target object file. * common/target-common.c: Move contents to target/waitstatus.c and remove. * common/target-common.h: Move contents to other files and remove. (enum resume_kind: Move to target/resume.h. (TARGET_WNOHANG): Move to target/wait.h. (enum target_waitkind): Move to target/waitstatus.h. (struct target_waitstatus): Likewise. * target.h: Do not include target-common.h and include target/resume.h, target/wait.h and target/waitstatus.h. * target/resume.h: New file. * target/wait.h: New file. * target/waitstatus.h: New file. * target/waitstatus.c: New file. gdb/gdbserver/ * Makefile.in (INCLUDE_CFLAGS): Include -I$(srcdir)/../. (SFILES): Remove $(srcdir)/common/target-common.c and add $(srcdir)/target/waitstatus.c. (OBS): Remove target-common.o and add waitstatus.o. (server_h): Remove $(srcdir)/../common/target-common.h and add $(srcdir)/../target/resume.h, $(srcdir)/../target/wait.h and $(srcdir)/../target/waitstatus.h. (target-common.o): Remove. (waitstatus.o): New target object file. * target.h: Do not include target-common.h and include target/resume.h, target/wait.h and target/waitstatus.h.
This commit is contained in:
@ -1,78 +0,0 @@
|
||||
/* Common target operations for GDB and gdbserver.
|
||||
|
||||
Copyright (C) 1990-2013 Free Software Foundation, Inc.
|
||||
|
||||
Contributed by Cygnus Support.
|
||||
Contributed by MontaVista Software.
|
||||
|
||||
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
|
||||
|
||||
/* Return a pretty printed form of target_waitstatus.
|
||||
Space for the result is malloc'd, caller must free. */
|
||||
|
||||
#include "target-common.h"
|
||||
|
||||
/* Return a pretty printed form of target_waitstatus.
|
||||
Space for the result is malloc'd, caller must free. */
|
||||
|
||||
char *
|
||||
target_waitstatus_to_string (const struct target_waitstatus *ws)
|
||||
{
|
||||
const char *kind_str = "status->kind = ";
|
||||
|
||||
switch (ws->kind)
|
||||
{
|
||||
case TARGET_WAITKIND_EXITED:
|
||||
return xstrprintf ("%sexited, status = %d",
|
||||
kind_str, ws->value.integer);
|
||||
case TARGET_WAITKIND_STOPPED:
|
||||
return xstrprintf ("%sstopped, signal = %s",
|
||||
kind_str, gdb_signal_to_name (ws->value.sig));
|
||||
case TARGET_WAITKIND_SIGNALLED:
|
||||
return xstrprintf ("%ssignalled, signal = %s",
|
||||
kind_str, gdb_signal_to_name (ws->value.sig));
|
||||
case TARGET_WAITKIND_LOADED:
|
||||
return xstrprintf ("%sloaded", kind_str);
|
||||
case TARGET_WAITKIND_FORKED:
|
||||
return xstrprintf ("%sforked", kind_str);
|
||||
case TARGET_WAITKIND_VFORKED:
|
||||
return xstrprintf ("%svforked", kind_str);
|
||||
case TARGET_WAITKIND_EXECD:
|
||||
return xstrprintf ("%sexecd", kind_str);
|
||||
case TARGET_WAITKIND_VFORK_DONE:
|
||||
return xstrprintf ("%svfork-done", kind_str);
|
||||
case TARGET_WAITKIND_SYSCALL_ENTRY:
|
||||
return xstrprintf ("%sentered syscall", kind_str);
|
||||
case TARGET_WAITKIND_SYSCALL_RETURN:
|
||||
return xstrprintf ("%sexited syscall", kind_str);
|
||||
case TARGET_WAITKIND_SPURIOUS:
|
||||
return xstrprintf ("%sspurious", kind_str);
|
||||
case TARGET_WAITKIND_IGNORE:
|
||||
return xstrprintf ("%signore", kind_str);
|
||||
case TARGET_WAITKIND_NO_HISTORY:
|
||||
return xstrprintf ("%sno-history", kind_str);
|
||||
case TARGET_WAITKIND_NO_RESUMED:
|
||||
return xstrprintf ("%sno-resumed", kind_str);
|
||||
default:
|
||||
return xstrprintf ("%sunknown???", kind_str);
|
||||
}
|
||||
}
|
@ -1,149 +0,0 @@
|
||||
/* Interface between the debugger and target environments, including files
|
||||
and processes, shared between GDB and gdbserver.
|
||||
|
||||
Copyright (C) 1990-2013 Free Software Foundation, Inc.
|
||||
|
||||
Contributed by Cygnus Support. Written by John Gilmore.
|
||||
|
||||
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 TARGET_COMMON_H
|
||||
#define TARGET_COMMON_H
|
||||
|
||||
#include "common-utils.h"
|
||||
#include "ptid.h"
|
||||
#include "gdb_signals.h"
|
||||
|
||||
/* Ways to "resume" a thread. */
|
||||
|
||||
enum resume_kind
|
||||
{
|
||||
/* Thread should continue. */
|
||||
resume_continue,
|
||||
|
||||
/* Thread should single-step. */
|
||||
resume_step,
|
||||
|
||||
/* Thread should be stopped. */
|
||||
resume_stop
|
||||
};
|
||||
|
||||
/* Stuff for target_wait. */
|
||||
|
||||
/* Generally, what has the program done? */
|
||||
enum target_waitkind
|
||||
{
|
||||
/* The program has exited. The exit status is in value.integer. */
|
||||
TARGET_WAITKIND_EXITED,
|
||||
|
||||
/* The program has stopped with a signal. Which signal is in
|
||||
value.sig. */
|
||||
TARGET_WAITKIND_STOPPED,
|
||||
|
||||
/* The program has terminated with a signal. Which signal is in
|
||||
value.sig. */
|
||||
TARGET_WAITKIND_SIGNALLED,
|
||||
|
||||
/* The program is letting us know that it dynamically loaded something
|
||||
(e.g. it called load(2) on AIX). */
|
||||
TARGET_WAITKIND_LOADED,
|
||||
|
||||
/* The program has forked. A "related" process' PTID is in
|
||||
value.related_pid. I.e., if the child forks, value.related_pid
|
||||
is the parent's ID. */
|
||||
TARGET_WAITKIND_FORKED,
|
||||
|
||||
/* The program has vforked. A "related" process's PTID is in
|
||||
value.related_pid. */
|
||||
TARGET_WAITKIND_VFORKED,
|
||||
|
||||
/* The program has exec'ed a new executable file. The new file's
|
||||
pathname is pointed to by value.execd_pathname. */
|
||||
TARGET_WAITKIND_EXECD,
|
||||
|
||||
/* The program had previously vforked, and now the child is done
|
||||
with the shared memory region, because it exec'ed or exited.
|
||||
Note that the event is reported to the vfork parent. This is
|
||||
only used if GDB did not stay attached to the vfork child,
|
||||
otherwise, a TARGET_WAITKIND_EXECD or
|
||||
TARGET_WAITKIND_EXIT|SIGNALLED event associated with the child
|
||||
has the same effect. */
|
||||
TARGET_WAITKIND_VFORK_DONE,
|
||||
|
||||
/* The program has entered or returned from a system call. On
|
||||
HP-UX, this is used in the hardware watchpoint implementation.
|
||||
The syscall's unique integer ID number is in value.syscall_id. */
|
||||
TARGET_WAITKIND_SYSCALL_ENTRY,
|
||||
TARGET_WAITKIND_SYSCALL_RETURN,
|
||||
|
||||
/* Nothing happened, but we stopped anyway. This perhaps should be handled
|
||||
within target_wait, but I'm not sure target_wait should be resuming the
|
||||
inferior. */
|
||||
TARGET_WAITKIND_SPURIOUS,
|
||||
|
||||
/* An event has occured, but we should wait again.
|
||||
Remote_async_wait() returns this when there is an event
|
||||
on the inferior, but the rest of the world is not interested in
|
||||
it. The inferior has not stopped, but has just sent some output
|
||||
to the console, for instance. In this case, we want to go back
|
||||
to the event loop and wait there for another event from the
|
||||
inferior, rather than being stuck in the remote_async_wait()
|
||||
function. sThis way the event loop is responsive to other events,
|
||||
like for instance the user typing. */
|
||||
TARGET_WAITKIND_IGNORE,
|
||||
|
||||
/* The target has run out of history information,
|
||||
and cannot run backward any further. */
|
||||
TARGET_WAITKIND_NO_HISTORY,
|
||||
|
||||
/* There are no resumed children left in the program. */
|
||||
TARGET_WAITKIND_NO_RESUMED
|
||||
};
|
||||
|
||||
struct target_waitstatus
|
||||
{
|
||||
enum target_waitkind kind;
|
||||
|
||||
/* Additional information about the event. */
|
||||
union
|
||||
{
|
||||
/* Exit status */
|
||||
int integer;
|
||||
/* Signal number */
|
||||
enum gdb_signal sig;
|
||||
/* Forked child pid */
|
||||
ptid_t related_pid;
|
||||
/* execd pathname */
|
||||
char *execd_pathname;
|
||||
/* Syscall number */
|
||||
int syscall_number;
|
||||
} value;
|
||||
};
|
||||
|
||||
/* Options that can be passed to target_wait. */
|
||||
|
||||
/* Return immediately if there's no event already queued. If this
|
||||
options is not requested, target_wait blocks waiting for an
|
||||
event. */
|
||||
#define TARGET_WNOHANG 1
|
||||
|
||||
/* Prototypes */
|
||||
|
||||
/* Return a pretty printed form of target_waitstatus.
|
||||
Space for the result is malloc'd, caller must free. */
|
||||
extern char *target_waitstatus_to_string (const struct target_waitstatus *);
|
||||
|
||||
#endif /* TARGET_COMMON_H */
|
Reference in New Issue
Block a user