1 /* Native-dependent definitions for FreeBSD/i386.
2 
3    Copyright 1986, 1987, 1989, 1992, 1994, 1996, 1997, 2000, 2001, 2004
4    Free Software Foundation, Inc.
5 
6    This file is part of GDB.
7 
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 2 of the License, or
11    (at your option) any later version.
12 
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17 
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 59 Temple Place - Suite 330,
21    Boston, MA 02111-1307, USA.  */
22 
23 #ifndef NM_FBSD_H
24 #define NM_FBSD_H
25 
26 #ifdef HAVE_PT_GETDBREGS
27 #define I386_USE_GENERIC_WATCHPOINTS
28 #endif
29 
30 #include "i386/nm-i386.h"
31 
32 #ifdef HAVE_SYS_PARAM_H
33 #include <sys/param.h>
34 #endif
35 
36 /* Provide access to the i386 hardware debugging registers.  */
37 
38 #define I386_DR_LOW_SET_CONTROL(control) \
39   i386bsd_dr_set_control (control)
40 extern void i386bsd_dr_set_control (unsigned long control);
41 
42 #define I386_DR_LOW_SET_ADDR(regnum, addr) \
43   i386bsd_dr_set_addr (regnum, addr)
44 extern void i386bsd_dr_set_addr (int regnum, CORE_ADDR addr);
45 
46 #define I386_DR_LOW_RESET_ADDR(regnum) \
47   i386bsd_dr_reset_addr (regnum)
48 extern void i386bsd_dr_reset_addr (int regnum);
49 
50 #define I386_DR_LOW_GET_STATUS() \
51   i386bsd_dr_get_status ()
52 extern unsigned long i386bsd_dr_get_status (void);
53 
54 
55 /* Get generic BSD native definitions.  */
56 #include "config/nm-bsd.h"
57 
58 /* Override child_resume in `infptrace.c' to work around a kernel bug.  */
59 #define CHILD_RESUME
60 
61 /* Override child_pid_to_exec_file in 'inftarg.c'.  */
62 #define CHILD_PID_TO_EXEC_FILE
63 
64 
65 /* Support for the user struct.  */
66 
67 /* Return the size of the user struct.  */
68 
69 #define KERNEL_U_SIZE kernel_u_size ()
70 extern int kernel_u_size (void);
71 
72 /* This is the amount to subtract from u.u_ar0
73    to get the offset in the core file of the register values.  */
74 
75 #include <machine/vmparam.h>
76 #define KERNEL_U_ADDR USRSTACK
77 
78 #define REGISTER_U_ADDR(addr, blockend, regno) \
79   (addr) = register_u_addr ((blockend), (regno))
80 extern CORE_ADDR register_u_addr (CORE_ADDR blockend, int regno);
81 
82 
83 /* Shared library support.  */
84 
85 #include "solib.h"
86 
87 /* Make structure definitions match up with those expected in
88    `solib-sunos.c'.  */
89 
90 #define link_object	sod
91 #define lo_name		sod_name
92 #define lo_library	sod_library
93 #define lo_unused	sod_reserved
94 #define lo_major	sod_major
95 #define lo_minor	sod_minor
96 #define lo_next		sod_next
97 
98 #define link_map	so_map
99 #define lm_addr		som_addr
100 #define lm_name		som_path
101 #define lm_next		som_next
102 #define lm_lop		som_sod
103 #define lm_lob		som_sodbase
104 #define lm_rwt		som_write
105 #define lm_ld		som_dynamic
106 #define lm_lpd		som_spd
107 
108 #define link_dynamic_2	section_dispatch_table
109 #define ld_loaded	sdt_loaded
110 #define ld_need		sdt_sods
111 #define ld_rules	sdt_filler1
112 #define ld_got		sdt_got
113 #define ld_plt		sdt_plt
114 #define ld_rel		sdt_rel
115 #define ld_hash		sdt_hash
116 #define ld_stab		sdt_nzlist
117 #define ld_stab_hash	sdt_filler2
118 #define ld_buckets	sdt_buckets
119 #define ld_symbols	sdt_strings
120 #define ld_symb_size	sdt_str_sz
121 #define ld_text		sdt_text_sz
122 #define ld_plt_sz	sdt_plt_sz
123 
124 #define rtc_symb	rt_symbol
125 #define rtc_sp		rt_sp
126 #define rtc_next	rt_next
127 
128 #define ld_debug	so_debug
129 #define ldd_version	dd_version
130 #define ldd_in_debugger	dd_in_debugger
131 #define ldd_sym_loaded	dd_sym_loaded
132 #define ldd_bp_addr	dd_bpt_addr
133 #define ldd_bp_inst	dd_bpt_shadow
134 #define ldd_cp		dd_cc
135 
136 #define link_dynamic	_dynamic
137 #define ld_version	d_version
138 #define ldd		d_debug
139 #define ld_un		d_un
140 #define ld_2		d_sdt
141 
142 #endif /* nm-fbsd.h */
143