22 *
23 */
24
25 #ifndef _LIBPROC_IMPL_H_
26 #define _LIBPROC_IMPL_H_
27
28 #include <unistd.h>
29 #include <limits.h>
30 #include "libproc.h"
31 #include "symtab.h"
32
33 // data structures in this file mimic those of Solaris 8.0 - libproc's Pcontrol.h
34
35 #define BUF_SIZE (PATH_MAX + NAME_MAX + 1)
36
37 // .eh_frame data
38 typedef struct eh_frame_info {
39 uintptr_t library_base_addr;
40 uintptr_t v_addr;
41 unsigned char* data;
42 } eh_frame_info;
43
44 // list of shared objects
45 typedef struct lib_info {
46 char name[BUF_SIZE];
47 uintptr_t base;
48 uintptr_t exec_start;
49 uintptr_t exec_end;
50 eh_frame_info eh_frame;
51 struct symtab* symtab;
52 int fd; // file descriptor for lib
53 struct lib_info* next;
54 } lib_info;
55
56 // list of threads
57 typedef struct thread_info {
58 lwpid_t lwp_id;
59 struct user_regs_struct regs; // not for process, core uses for caching regset
60 struct thread_info* next;
61 } thread_info;
|
22 *
23 */
24
25 #ifndef _LIBPROC_IMPL_H_
26 #define _LIBPROC_IMPL_H_
27
28 #include <unistd.h>
29 #include <limits.h>
30 #include "libproc.h"
31 #include "symtab.h"
32
33 // data structures in this file mimic those of Solaris 8.0 - libproc's Pcontrol.h
34
35 #define BUF_SIZE (PATH_MAX + NAME_MAX + 1)
36
37 // .eh_frame data
38 typedef struct eh_frame_info {
39 uintptr_t library_base_addr;
40 uintptr_t v_addr;
41 unsigned char* data;
42 int size;
43 } eh_frame_info;
44
45 // list of shared objects
46 typedef struct lib_info {
47 char name[BUF_SIZE];
48 uintptr_t base;
49 uintptr_t exec_start;
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;
|