GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Functions | Variables
amd-dbgapi-target.c File Reference
#include "defs.h"
#include "amd-dbgapi-target.h"
#include "amdgpu-tdep.h"
#include "async-event.h"
#include "cli/cli-cmds.h"
#include "cli/cli-decode.h"
#include "cli/cli-style.h"
#include "inf-loop.h"
#include "inferior.h"
#include "objfiles.h"
#include "observable.h"
#include "registry.h"
#include "solib.h"
#include "target.h"

Go to the source code of this file.

Classes

struct  amd_dbgapi_inferior_info
 
struct  amd_dbgapi_target
 
struct  amd_dbgapi_target_breakpoint
 
struct  scoped_amd_dbgapi_event_processed
 

Macros

#define amd_dbgapi_debug_printf(fmt, ...)
 
#define AMD_DBGAPI_SCOPED_DEBUG_START_END(fmt, ...)
 
#define AMDGPU_MAX_REGISTER_SIZE   256
 

Functions

static std::string make_green (const char *s)
 
static const char * amd_dbgapi_debug_module ()
 
static const char * amd_dbgapi_lib_debug_module ()
 
const gdb::observers::tokenget_amd_dbgapi_target_inferior_created_observer_token ()
 
static amd_dbgapi_event_id_t process_event_queue (amd_dbgapi_process_id_t process_id, amd_dbgapi_event_kind_t until_event_kind=AMD_DBGAPI_EVENT_KIND_NONE)
 
static amd_dbgapi_log_level_t get_debug_amd_dbgapi_lib_log_level ()
 
static std::string wave_target_id_string (amd_dbgapi_wave_id_t wave_id)
 
static void async_event_handler_clear ()
 
static void async_event_handler_mark ()
 
static struct amd_dbgapi_inferior_infoget_amd_dbgapi_inferior_info (struct inferior *inferior)
 
static void require_forward_progress (ptid_t ptid, process_stratum_target *proc_target, bool require)
 
amd_dbgapi_process_id_t get_amd_dbgapi_process_id (inferior *inf)
 
static void handle_target_event (gdb_client_data client_data)
 
static void dbgapi_notifier_handler (int err, gdb_client_data client_data)
 
static ptid_t make_gpu_ptid (ptid_t::pid_type pid, amd_dbgapi_wave_id_t wave_id)
 
static void process_one_event (amd_dbgapi_event_id_t event_id, amd_dbgapi_event_kind_t event_kind)
 
static const char * event_kind_str (amd_dbgapi_event_kind_t kind)
 
static std::pair< ptid_t, target_waitstatusconsume_one_event (int pid)
 
static void set_process_memory_precision (amd_dbgapi_inferior_info &info)
 
static void attach_amd_dbgapi (inferior *inf)
 
static void maybe_reset_amd_dbgapi ()
 
static void detach_amd_dbgapi (inferior *inf)
 
static void amd_dbgapi_target_inferior_created (inferior *inf)
 
static void amd_dbgapi_target_inferior_cloned (inferior *original_inferior, inferior *new_inferior)
 
static void amd_dbgapi_inferior_execd (inferior *exec_inf, inferior *follow_inf)
 
static void amd_dbgapi_inferior_forked (inferior *parent_inf, inferior *child_inf, target_waitkind fork_kind)
 
static void amd_dbgapi_inferior_exited (inferior *inf)
 
static void amd_dbgapi_inferior_pre_detach (inferior *inf)
 
static amd_dbgapi_status_t amd_dbgapi_get_os_pid_callback (amd_dbgapi_client_process_id_t client_process_id, pid_t *pid)
 
static amd_dbgapi_status_t amd_dbgapi_insert_breakpoint_callback (amd_dbgapi_client_process_id_t client_process_id, amd_dbgapi_global_address_t address, amd_dbgapi_breakpoint_id_t breakpoint_id)
 
static amd_dbgapi_status_t amd_dbgapi_remove_breakpoint_callback (amd_dbgapi_client_process_id_t client_process_id, amd_dbgapi_breakpoint_id_t breakpoint_id)
 
static void amd_dbgapi_target_signal_received (gdb_signal sig)
 
static cli_style_option fatal_error_style ("amd_dbgapi_fatal_error", ui_file_style::RED)
 
static cli_style_option warning_style ("amd_dbgapi_warning", ui_file_style::YELLOW)
 
static cli_style_option trace_style ("amd_dbgapi_trace", ui_file_style::BLACK, ui_file_style::BOLD)
 
static void amd_dbgapi_log_message_callback (amd_dbgapi_log_level_t level, const char *message)
 
static void show_precise_memory_mode (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
static void set_precise_memory_mode (bool value)
 
static bool get_precise_memory_mode ()
 
static void set_debug_amd_dbgapi_lib_log_level (const char *args, int from_tty, struct cmd_list_element *c)
 
static void show_debug_amd_dbgapi_lib_log_level (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 

Variables

static bool debug_amd_dbgapi = false
 
static const char * amd_dbgapi_debug_module_unstyled = "amd-dbgapi"
 
static const char * amd_dbgapi_lib_debug_module_unstyled = "amd-dbgapi-lib"
 
static const std::string amd_dbgapi_debug_module_styled = make_green (amd_dbgapi_debug_module_unstyled)
 
static const std::string amd_dbgapi_lib_debug_module_styled = make_green (amd_dbgapi_lib_debug_module_unstyled)
 
static gdb::observers::token amd_dbgapi_target_inferior_created_observer_token
 
static const target_info amd_dbgapi_target_info
 
static struct amd_dbgapi_target the_amd_dbgapi_target
 
static const registry< inferior >::key< amd_dbgapi_inferior_infoamd_dbgapi_inferior_data
 
static async_event_handleramd_dbgapi_async_event_handler = nullptr
 
static amd_dbgapi_callbacks_t dbgapi_callbacks
 
struct cmd_list_elementset_amdgpu_list
 
struct cmd_list_elementshow_amdgpu_list
 
struct cmd_list_elementset_debug_amd_dbgapi_lib_list
 
struct cmd_list_elementshow_debug_amd_dbgapi_lib_list
 
static constexpr const char * debug_amd_dbgapi_lib_log_level_enums []
 
static const char * debug_amd_dbgapi_lib_log_level = debug_amd_dbgapi_lib_log_level_enums[AMD_DBGAPI_LOG_LEVEL_WARNING]
 
initialize_file_ftype _initialize_amd_dbgapi_target
 

Macro Definition Documentation

◆ amd_dbgapi_debug_printf

#define amd_dbgapi_debug_printf ( fmt,
... )
Value:
debug_prefixed_printf_cond (debug_amd_dbgapi, \
fmt, ##__VA_ARGS__)
static const char * amd_dbgapi_debug_module()
static bool debug_amd_dbgapi

Definition at line 91 of file amd-dbgapi-target.c.

Referenced by attach_amd_dbgapi(), amd_dbgapi_target::commit_resumed(), dbgapi_notifier_handler(), process_event_queue(), amd_dbgapi_target::resume(), amd_dbgapi_target::stop(), and amd_dbgapi_target::wait().

◆ AMD_DBGAPI_SCOPED_DEBUG_START_END

#define AMD_DBGAPI_SCOPED_DEBUG_START_END ( fmt,
... )
Value:
scoped_debug_start_end (debug_infrun, amd_dbgapi_debug_module (), \
fmt, ##__VA_ARGS__)
bool debug_infrun
Definition infrun.c:187

Definition at line 98 of file amd-dbgapi-target.c.

Referenced by attach_amd_dbgapi(), and detach_amd_dbgapi().

◆ AMDGPU_MAX_REGISTER_SIZE

#define AMDGPU_MAX_REGISTER_SIZE   256

Function Documentation

◆ amd_dbgapi_debug_module()

static const char * amd_dbgapi_debug_module ( )
static

◆ amd_dbgapi_get_os_pid_callback()

static amd_dbgapi_status_t amd_dbgapi_get_os_pid_callback ( amd_dbgapi_client_process_id_t client_process_id,
pid_t * pid )
static

Definition at line 1799 of file amd-dbgapi-target.c.

References inf::pid, and pid.

◆ amd_dbgapi_inferior_execd()

static void amd_dbgapi_inferior_execd ( inferior * exec_inf,
inferior * follow_inf )
static

◆ amd_dbgapi_inferior_exited()

static void amd_dbgapi_inferior_exited ( inferior * inf)
static

Definition at line 1779 of file amd-dbgapi-target.c.

References detach_amd_dbgapi().

◆ amd_dbgapi_inferior_forked()

static void amd_dbgapi_inferior_forked ( inferior * parent_inf,
inferior * child_inf,
target_waitkind fork_kind )
static

◆ amd_dbgapi_inferior_pre_detach()

static void amd_dbgapi_inferior_pre_detach ( inferior * inf)
static

Definition at line 1787 of file amd-dbgapi-target.c.

References detach_amd_dbgapi(), and the_amd_dbgapi_target.

◆ amd_dbgapi_insert_breakpoint_callback()

static amd_dbgapi_status_t amd_dbgapi_insert_breakpoint_callback ( amd_dbgapi_client_process_id_t client_process_id,
amd_dbgapi_global_address_t address,
amd_dbgapi_breakpoint_id_t breakpoint_id )
static

◆ amd_dbgapi_lib_debug_module()

static const char * amd_dbgapi_lib_debug_module ( )
static

◆ amd_dbgapi_log_message_callback()

static void amd_dbgapi_log_message_callback ( amd_dbgapi_log_level_t level,
const char * message )
static

◆ amd_dbgapi_remove_breakpoint_callback()

static amd_dbgapi_status_t amd_dbgapi_remove_breakpoint_callback ( amd_dbgapi_client_process_id_t client_process_id,
amd_dbgapi_breakpoint_id_t breakpoint_id )
static

Definition at line 1847 of file amd-dbgapi-target.c.

References delete_breakpoint(), and get_amd_dbgapi_inferior_info().

◆ amd_dbgapi_target_inferior_cloned()

static void amd_dbgapi_target_inferior_cloned ( inferior * original_inferior,
inferior * new_inferior )
static

Definition at line 1716 of file amd-dbgapi-target.c.

References get_amd_dbgapi_inferior_info().

◆ amd_dbgapi_target_inferior_created()

static void amd_dbgapi_target_inferior_created ( inferior * inf)
static

Definition at line 1703 of file amd-dbgapi-target.c.

References attach_amd_dbgapi(), and get_native_target().

◆ amd_dbgapi_target_signal_received()

static void amd_dbgapi_target_signal_received ( gdb_signal sig)
static

◆ async_event_handler_clear()

static void async_event_handler_clear ( )
static

◆ async_event_handler_mark()

static void async_event_handler_mark ( )
static

◆ attach_amd_dbgapi()

static void attach_amd_dbgapi ( inferior * inf)
static

◆ consume_one_event()

static std::pair< ptid_t, target_waitstatus > consume_one_event ( int pid)
static

◆ dbgapi_notifier_handler()

static void dbgapi_notifier_handler ( int err,
gdb_client_data client_data )
static

◆ detach_amd_dbgapi()

static void detach_amd_dbgapi ( inferior * inf)
static

◆ event_kind_str()

static const char * event_kind_str ( amd_dbgapi_event_kind_t kind)
static

Definition at line 1105 of file amd-dbgapi-target.c.

Referenced by process_event_queue().

◆ fatal_error_style()

static cli_style_option fatal_error_style ( "amd_dbgapi_fatal_error" ,
ui_file_style::RED  )
static

◆ get_amd_dbgapi_inferior_info()

static struct amd_dbgapi_inferior_info * get_amd_dbgapi_inferior_info ( struct inferior * inferior)
static

◆ get_amd_dbgapi_process_id()

amd_dbgapi_process_id_t get_amd_dbgapi_process_id ( inferior * inf)

◆ get_amd_dbgapi_target_inferior_created_observer_token()

const gdb::observers::token & get_amd_dbgapi_target_inferior_created_observer_token ( )

◆ get_debug_amd_dbgapi_lib_log_level()

static amd_dbgapi_log_level_t get_debug_amd_dbgapi_lib_log_level ( )
static

◆ get_precise_memory_mode()

static bool get_precise_memory_mode ( )
static

Definition at line 1988 of file amd-dbgapi-target.c.

References current_inferior(), and get_amd_dbgapi_inferior_info().

◆ handle_target_event()

static void handle_target_event ( gdb_client_data client_data)
static

◆ make_gpu_ptid()

static ptid_t make_gpu_ptid ( ptid_t::pid_type pid,
amd_dbgapi_wave_id_t wave_id )
static

Definition at line 927 of file amd-dbgapi-target.c.

References pid.

Referenced by process_one_event(), and amd_dbgapi_target::update_thread_list().

◆ make_green()

static std::string make_green ( const char * s)
static

◆ maybe_reset_amd_dbgapi()

static void maybe_reset_amd_dbgapi ( )
static

◆ process_event_queue()

static amd_dbgapi_event_id_t process_event_queue ( amd_dbgapi_process_id_t process_id,
amd_dbgapi_event_kind_t until_event_kind = AMD_DBGAPI_EVENT_KIND_NONE )
static

◆ process_one_event()

static void process_one_event ( amd_dbgapi_event_id_t event_id,
amd_dbgapi_event_kind_t event_kind )
static

◆ require_forward_progress()

static void require_forward_progress ( ptid_t ptid,
process_stratum_target * proc_target,
bool require )
static

◆ set_debug_amd_dbgapi_lib_log_level()

static void set_debug_amd_dbgapi_lib_log_level ( const char * args,
int from_tty,
struct cmd_list_element * c )
static

Definition at line 2041 of file amd-dbgapi-target.c.

References get_debug_amd_dbgapi_lib_log_level().

◆ set_precise_memory_mode()

static void set_precise_memory_mode ( bool value)
static

◆ set_process_memory_precision()

static void set_process_memory_precision ( amd_dbgapi_inferior_info & info)
static

Definition at line 1352 of file amd-dbgapi-target.c.

References get_status_string(), and status.

Referenced by attach_amd_dbgapi(), and set_precise_memory_mode().

◆ show_debug_amd_dbgapi_lib_log_level()

static void show_debug_amd_dbgapi_lib_log_level ( struct ui_file * file,
int from_tty,
struct cmd_list_element * c,
const char * value )
static

Definition at line 2050 of file amd-dbgapi-target.c.

References gdb_printf().

◆ show_precise_memory_mode()

static void show_precise_memory_mode ( struct ui_file * file,
int from_tty,
struct cmd_list_element * c,
const char * value )
static

◆ trace_style()

static cli_style_option trace_style ( "amd_dbgapi_trace" ,
ui_file_style::BLACK ,
ui_file_style::BOLD  )
static

◆ warning_style()

static cli_style_option warning_style ( "amd_dbgapi_warning" ,
ui_file_style::YELLOW  )
static

◆ wave_target_id_string()

static std::string wave_target_id_string ( amd_dbgapi_wave_id_t wave_id)
static

Definition at line 262 of file amd-dbgapi-target.c.

References status.

Referenced by amd_dbgapi_target::pid_to_str().

Variable Documentation

◆ _initialize_amd_dbgapi_target

void _initialize_amd_dbgapi_target
extern

Definition at line 2086 of file amd-dbgapi-target.c.

◆ amd_dbgapi_async_event_handler

async_event_handler* amd_dbgapi_async_event_handler = nullptr
static

◆ amd_dbgapi_debug_module_styled

const std::string amd_dbgapi_debug_module_styled = make_green (amd_dbgapi_debug_module_unstyled)
static

Definition at line 61 of file amd-dbgapi-target.c.

Referenced by amd_dbgapi_debug_module().

◆ amd_dbgapi_debug_module_unstyled

const char* amd_dbgapi_debug_module_unstyled = "amd-dbgapi"
static

Definition at line 55 of file amd-dbgapi-target.c.

Referenced by amd_dbgapi_debug_module().

◆ amd_dbgapi_inferior_data

const registry<inferior>::key<amd_dbgapi_inferior_info> amd_dbgapi_inferior_data
static

Definition at line 244 of file amd-dbgapi-target.c.

Referenced by get_amd_dbgapi_inferior_info().

◆ amd_dbgapi_lib_debug_module_styled

const std::string amd_dbgapi_lib_debug_module_styled = make_green (amd_dbgapi_lib_debug_module_unstyled)
static

Definition at line 63 of file amd-dbgapi-target.c.

Referenced by amd_dbgapi_lib_debug_module().

◆ amd_dbgapi_lib_debug_module_unstyled

const char* amd_dbgapi_lib_debug_module_unstyled = "amd-dbgapi-lib"
static

Definition at line 56 of file amd-dbgapi-target.c.

Referenced by amd_dbgapi_lib_debug_module().

◆ amd_dbgapi_target_inferior_created_observer_token

gdb::observers::token amd_dbgapi_target_inferior_created_observer_token
static

◆ amd_dbgapi_target_info

const target_info amd_dbgapi_target_info
static
Initial value:
= {
"amd-dbgapi",
N_("AMD Debugger API"),
}

Definition at line 169 of file amd-dbgapi-target.c.

Referenced by amd_dbgapi_target::info().

◆ dbgapi_callbacks

amd_dbgapi_callbacks_t dbgapi_callbacks
static
Initial value:
= {
.allocate_memory = malloc,
.deallocate_memory = free,
}
static amd_dbgapi_status_t amd_dbgapi_insert_breakpoint_callback(amd_dbgapi_client_process_id_t client_process_id, amd_dbgapi_global_address_t address, amd_dbgapi_breakpoint_id_t breakpoint_id)
static void amd_dbgapi_log_message_callback(amd_dbgapi_log_level_t level, const char *message)
static amd_dbgapi_status_t amd_dbgapi_remove_breakpoint_callback(amd_dbgapi_client_process_id_t client_process_id, amd_dbgapi_breakpoint_id_t breakpoint_id)
static amd_dbgapi_status_t amd_dbgapi_get_os_pid_callback(amd_dbgapi_client_process_id_t client_process_id, pid_t *pid)

Definition at line 1939 of file amd-dbgapi-target.c.

Referenced by maybe_reset_amd_dbgapi().

◆ debug_amd_dbgapi

bool debug_amd_dbgapi = false
static

Definition at line 38 of file amd-dbgapi-target.c.

◆ debug_amd_dbgapi_lib_log_level

const char* debug_amd_dbgapi_lib_log_level = debug_amd_dbgapi_lib_log_level_enums[AMD_DBGAPI_LOG_LEVEL_WARNING]
static

Definition at line 2019 of file amd-dbgapi-target.c.

Referenced by get_debug_amd_dbgapi_lib_log_level().

◆ debug_amd_dbgapi_lib_log_level_enums

constexpr const char* debug_amd_dbgapi_lib_log_level_enums[]
staticconstexpr
Initial value:
=
{
"off",
"error",
"warning",
"info",
"trace",
"verbose",
nullptr
}

Definition at line 2006 of file amd-dbgapi-target.c.

Referenced by get_debug_amd_dbgapi_lib_log_level().

◆ set_amdgpu_list

struct cmd_list_element* set_amdgpu_list

Definition at line 1997 of file amd-dbgapi-target.c.

◆ set_debug_amd_dbgapi_lib_list

struct cmd_list_element* set_debug_amd_dbgapi_lib_list

Definition at line 2001 of file amd-dbgapi-target.c.

◆ show_amdgpu_list

struct cmd_list_element* show_amdgpu_list

Definition at line 1998 of file amd-dbgapi-target.c.

◆ show_debug_amd_dbgapi_lib_list

struct cmd_list_element* show_debug_amd_dbgapi_lib_list

Definition at line 2002 of file amd-dbgapi-target.c.

◆ the_amd_dbgapi_target

struct amd_dbgapi_target the_amd_dbgapi_target
static