Home | History | Annotate | Line # | Download | only in gdbsupport
      1 /* Shared utility routines for GDB to interact with agent.
      2 
      3    Copyright (C) 2009-2024 Free Software Foundation, Inc.
      4 
      5    This file is part of GDB.
      6 
      7    This program is free software; you can redistribute it and/or modify
      8    it under the terms of the GNU General Public License as published by
      9    the Free Software Foundation; either version 3 of the License, or
     10    (at your option) any later version.
     11 
     12    This program is distributed in the hope that it will be useful,
     13    but WITHOUT ANY WARRANTY; without even the implied warranty of
     14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15    GNU General Public License for more details.
     16 
     17    You should have received a copy of the GNU General Public License
     18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     19 
     20 #ifndef COMMON_AGENT_H
     21 #define COMMON_AGENT_H
     22 
     23 #include "gdbsupport/preprocessor.h"
     24 
     25 int agent_run_command (int pid, char *cmd, int len);
     26 
     27 int agent_look_up_symbols (void *);
     28 
     29 #define IPA_SYM_EXPORTED_NAME(SYM) gdb_agent_ ## SYM
     30 
     31 /* Define an entry in an IPA symbol list array.  If IPA_SYM is used, the macro
     32    IPA_SYM_STRUCT_NAME must be defined to the structure name holding the IPA
     33    symbol addresses in that particular file, before including
     34    gdbsupport/agent.h.  */
     35 #define IPA_SYM(SYM)                                   \
     36   {                                                    \
     37     STRINGIFY (IPA_SYM_EXPORTED_NAME (SYM)),           \
     38     offsetof (IPA_SYM_STRUCT_NAME, addr_ ## SYM)       \
     39   }
     40 
     41 /* The size in bytes of the buffer used to talk to the IPA helper
     42    thread.  */
     43 #define IPA_CMD_BUF_SIZE 1024
     44 
     45 bool agent_loaded_p (void);
     46 
     47 extern bool debug_agent;
     48 
     49 extern bool use_agent;
     50 
     51 /* Capability of agent.  Different agents may have different capabilities,
     52    such as installing fast tracepoint or evaluating breakpoint conditions.
     53    Capabilities are represented by bit-maps, and each capability occupies one
     54    bit.  */
     55 
     56 enum agent_capa
     57 {
     58   /* Capability to install fast tracepoint.  */
     59   AGENT_CAPA_FAST_TRACE = 0x1,
     60   /* Capability to install static tracepoint.  */
     61   AGENT_CAPA_STATIC_TRACE = (0x1 << 1),
     62 };
     63 
     64 bool agent_capability_check (enum agent_capa);
     65 
     66 void agent_capability_invalidate (void);
     67 
     68 #endif /* COMMON_AGENT_H */
     69