|
|
@ -94,30 +94,13 @@ typedef long long CORE_ADDR; |
|
|
typedef long long LONGEST; |
|
|
typedef long long LONGEST; |
|
|
typedef unsigned long long ULONGEST; |
|
|
typedef unsigned long long ULONGEST; |
|
|
|
|
|
|
|
|
/* Generic information for tracking a list of ``inferiors'' - threads,
|
|
|
|
|
|
processes, etc. */ |
|
|
|
|
|
struct inferior_list |
|
|
|
|
|
{ |
|
|
|
|
|
struct inferior_list_entry *head; |
|
|
|
|
|
struct inferior_list_entry *tail; |
|
|
|
|
|
}; |
|
|
|
|
|
struct inferior_list_entry |
|
|
|
|
|
{ |
|
|
|
|
|
ptid_t id; |
|
|
|
|
|
struct inferior_list_entry *next; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
struct thread_info; |
|
|
|
|
|
struct process_info; |
|
|
|
|
|
struct regcache; |
|
|
|
|
|
struct target_desc; |
|
|
|
|
|
|
|
|
|
|
|
#include "regcache.h" |
|
|
#include "regcache.h" |
|
|
#include "gdb/signals.h" |
|
|
#include "gdb/signals.h" |
|
|
#include "gdb_signals.h" |
|
|
#include "gdb_signals.h" |
|
|
#include "target.h" |
|
|
#include "target.h" |
|
|
#include "mem-break.h" |
|
|
#include "mem-break.h" |
|
|
#include "gdbthread.h" |
|
|
#include "gdbthread.h" |
|
|
|
|
|
#include "inferiors.h" |
|
|
|
|
|
|
|
|
struct dll_info |
|
|
struct dll_info |
|
|
{ |
|
|
{ |
|
|
@ -126,92 +109,16 @@ struct dll_info |
|
|
CORE_ADDR base_addr; |
|
|
CORE_ADDR base_addr; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
struct sym_cache; |
|
|
|
|
|
struct breakpoint; |
|
|
|
|
|
struct raw_breakpoint; |
|
|
|
|
|
struct fast_tracepoint_jump; |
|
|
|
|
|
struct process_info_private; |
|
|
|
|
|
|
|
|
|
|
|
struct process_info |
|
|
|
|
|
{ |
|
|
|
|
|
struct inferior_list_entry head; |
|
|
|
|
|
|
|
|
|
|
|
/* Nonzero if this child process was attached rather than
|
|
|
|
|
|
spawned. */ |
|
|
|
|
|
int attached; |
|
|
|
|
|
|
|
|
|
|
|
/* True if GDB asked us to detach from this process, but we remained
|
|
|
|
|
|
attached anyway. */ |
|
|
|
|
|
int gdb_detached; |
|
|
|
|
|
|
|
|
|
|
|
/* The symbol cache. */ |
|
|
|
|
|
struct sym_cache *symbol_cache; |
|
|
|
|
|
|
|
|
|
|
|
/* The list of memory breakpoints. */ |
|
|
|
|
|
struct breakpoint *breakpoints; |
|
|
|
|
|
|
|
|
|
|
|
/* The list of raw memory breakpoints. */ |
|
|
|
|
|
struct raw_breakpoint *raw_breakpoints; |
|
|
|
|
|
|
|
|
|
|
|
/* The list of installed fast tracepoints. */ |
|
|
|
|
|
struct fast_tracepoint_jump *fast_tracepoint_jumps; |
|
|
|
|
|
|
|
|
|
|
|
const struct target_desc *tdesc; |
|
|
|
|
|
|
|
|
|
|
|
/* Private target data. */ |
|
|
|
|
|
struct process_info_private *private; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
/* Return a pointer to the process that corresponds to the current
|
|
|
|
|
|
thread (current_inferior). It is an error to call this if there is |
|
|
|
|
|
no current thread selected. */ |
|
|
|
|
|
|
|
|
|
|
|
struct process_info *current_process (void); |
|
|
|
|
|
struct process_info *get_thread_process (struct thread_info *); |
|
|
|
|
|
|
|
|
|
|
|
/* Target-specific functions */ |
|
|
/* Target-specific functions */ |
|
|
|
|
|
|
|
|
void initialize_low (); |
|
|
void initialize_low (); |
|
|
|
|
|
|
|
|
/* From inferiors.c. */ |
|
|
/* From dll.c. */ |
|
|
|
|
|
|
|
|
extern struct inferior_list all_processes; |
|
|
|
|
|
extern struct inferior_list all_dlls; |
|
|
extern struct inferior_list all_dlls; |
|
|
extern int dlls_changed; |
|
|
extern int dlls_changed; |
|
|
extern void clear_dlls (void); |
|
|
extern void clear_dlls (void); |
|
|
|
|
|
|
|
|
void add_inferior_to_list (struct inferior_list *list, |
|
|
|
|
|
struct inferior_list_entry *new_inferior); |
|
|
|
|
|
void for_each_inferior (struct inferior_list *list, |
|
|
|
|
|
void (*action) (struct inferior_list_entry *)); |
|
|
|
|
|
|
|
|
|
|
|
extern struct thread_info *current_inferior; |
|
|
|
|
|
void remove_inferior (struct inferior_list *list, |
|
|
|
|
|
struct inferior_list_entry *entry); |
|
|
|
|
|
|
|
|
|
|
|
struct process_info *add_process (int pid, int attached); |
|
|
|
|
|
void remove_process (struct process_info *process); |
|
|
|
|
|
struct process_info *find_process_pid (int pid); |
|
|
|
|
|
int have_started_inferiors_p (void); |
|
|
|
|
|
int have_attached_inferiors_p (void); |
|
|
|
|
|
|
|
|
|
|
|
ptid_t thread_id_to_gdb_id (ptid_t); |
|
|
|
|
|
ptid_t thread_to_gdb_id (struct thread_info *); |
|
|
|
|
|
ptid_t gdb_id_to_thread_id (ptid_t); |
|
|
|
|
|
|
|
|
|
|
|
void clear_inferiors (void); |
|
|
|
|
|
struct inferior_list_entry *find_inferior |
|
|
|
|
|
(struct inferior_list *, |
|
|
|
|
|
int (*func) (struct inferior_list_entry *, |
|
|
|
|
|
void *), |
|
|
|
|
|
void *arg); |
|
|
|
|
|
struct inferior_list_entry *find_inferior_id (struct inferior_list *list, |
|
|
|
|
|
ptid_t id); |
|
|
|
|
|
void *inferior_target_data (struct thread_info *); |
|
|
|
|
|
void set_inferior_target_data (struct thread_info *, void *); |
|
|
|
|
|
void *inferior_regcache_data (struct thread_info *); |
|
|
|
|
|
void set_inferior_regcache_data (struct thread_info *, void *); |
|
|
|
|
|
|
|
|
|
|
|
void loaded_dll (const char *name, CORE_ADDR base_addr); |
|
|
void loaded_dll (const char *name, CORE_ADDR base_addr); |
|
|
void unloaded_dll (const char *name, CORE_ADDR base_addr); |
|
|
void unloaded_dll (const char *name, CORE_ADDR base_addr); |
|
|
|
|
|
|
|
|
|