diff options
Diffstat (limited to 'gdbsupport/agent.h')
-rw-r--r-- | gdbsupport/agent.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/gdbsupport/agent.h b/gdbsupport/agent.h new file mode 100644 index 0000000..cc52fb6 --- /dev/null +++ b/gdbsupport/agent.h @@ -0,0 +1,68 @@ +/* Shared utility routines for GDB to interact with agent. + + Copyright (C) 2009-2020 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_AGENT_H +#define COMMON_AGENT_H + +#include "gdbsupport/preprocessor.h" + +int agent_run_command (int pid, const char *cmd, int len); + +int agent_look_up_symbols (void *); + +#define IPA_SYM_EXPORTED_NAME(SYM) gdb_agent_ ## SYM + +/* Define an entry in an IPA symbol list array. If IPA_SYM is used, the macro + IPA_SYM_STRUCT_NAME must be defined to the structure name holding the IPA + symbol addresses in that particular file, before including + gdbsupport/agent.h. */ +#define IPA_SYM(SYM) \ + { \ + STRINGIFY (IPA_SYM_EXPORTED_NAME (SYM)), \ + offsetof (IPA_SYM_STRUCT_NAME, addr_ ## SYM) \ + } + +/* The size in bytes of the buffer used to talk to the IPA helper + thread. */ +#define IPA_CMD_BUF_SIZE 1024 + +bool agent_loaded_p (void); + +extern bool debug_agent; + +extern bool use_agent; + +/* Capability of agent. Different agents may have different capabilities, + such as installing fast tracepoint or evaluating breakpoint conditions. + Capabilities are represented by bit-maps, and each capability occupies one + bit. */ + +enum agent_capa +{ + /* Capability to install fast tracepoint. */ + AGENT_CAPA_FAST_TRACE = 0x1, + /* Capability to install static tracepoint. */ + AGENT_CAPA_STATIC_TRACE = (0x1 << 1), +}; + +bool agent_capability_check (enum agent_capa); + +void agent_capability_invalidate (void); + +#endif /* COMMON_AGENT_H */ |