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