50 uintptr_t exec_end;
51 eh_frame_info eh_frame;
52 struct symtab* symtab;
53 int fd; // file descriptor for lib
54 struct lib_info* next;
55 } lib_info;
56
57 // list of threads
58 typedef struct thread_info {
59 lwpid_t lwp_id;
60 struct user_regs_struct regs; // not for process, core uses for caching regset
61 struct thread_info* next;
62 } thread_info;
63
64 // list of virtual memory maps
65 typedef struct map_info {
66 int fd; // file descriptor
67 off_t offset; // file offset of this mapping
68 uintptr_t vaddr; // starting virtual address
69 size_t memsz; // size of the mapping
70 struct map_info* next;
71 } map_info;
72
73 // vtable for ps_prochandle
74 typedef struct ps_prochandle_ops {
75 // "derived class" clean-up
76 void (*release)(struct ps_prochandle* ph);
77 // read from debuggee
78 bool (*p_pread)(struct ps_prochandle *ph,
79 uintptr_t addr, char *buf, size_t size);
80 // write into debuggee
81 bool (*p_pwrite)(struct ps_prochandle *ph,
82 uintptr_t addr, const char *buf , size_t size);
83 // get integer regset of a thread
84 bool (*get_lwp_regs)(struct ps_prochandle* ph, lwpid_t lwp_id, struct user_regs_struct* regs);
85 } ps_prochandle_ops;
86
87 // the ps_prochandle
88
89 struct core_data {
|
50 uintptr_t exec_end;
51 eh_frame_info eh_frame;
52 struct symtab* symtab;
53 int fd; // file descriptor for lib
54 struct lib_info* next;
55 } lib_info;
56
57 // list of threads
58 typedef struct thread_info {
59 lwpid_t lwp_id;
60 struct user_regs_struct regs; // not for process, core uses for caching regset
61 struct thread_info* next;
62 } thread_info;
63
64 // list of virtual memory maps
65 typedef struct map_info {
66 int fd; // file descriptor
67 off_t offset; // file offset of this mapping
68 uintptr_t vaddr; // starting virtual address
69 size_t memsz; // size of the mapping
70 uint32_t flags; // acces flags
71 struct map_info* next;
72 } map_info;
73
74 // vtable for ps_prochandle
75 typedef struct ps_prochandle_ops {
76 // "derived class" clean-up
77 void (*release)(struct ps_prochandle* ph);
78 // read from debuggee
79 bool (*p_pread)(struct ps_prochandle *ph,
80 uintptr_t addr, char *buf, size_t size);
81 // write into debuggee
82 bool (*p_pwrite)(struct ps_prochandle *ph,
83 uintptr_t addr, const char *buf , size_t size);
84 // get integer regset of a thread
85 bool (*get_lwp_regs)(struct ps_prochandle* ph, lwpid_t lwp_id, struct user_regs_struct* regs);
86 } ps_prochandle_ops;
87
88 // the ps_prochandle
89
90 struct core_data {
|