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