diff options
author | Mark Kettenis <kettenis@gnu.org> | 2003-10-11 15:22:39 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@gnu.org> | 2003-10-11 15:22:39 +0000 |
commit | 8a96bc77ca647909a8382ae295997bdb7efc63da (patch) | |
tree | d6274c3ef81529fb703b4967fbf0db3f831f43e0 /gdb/i386bsd-tdep.c | |
parent | 477f40d1aef74d9b120920517f90663e4c173cf2 (diff) | |
download | gdb-8a96bc77ca647909a8382ae295997bdb7efc63da.zip gdb-8a96bc77ca647909a8382ae295997bdb7efc63da.tar.gz gdb-8a96bc77ca647909a8382ae295997bdb7efc63da.tar.bz2 |
* i386fbsd-tdep.c: New file.
(i386fbsd_sigtramp_start, i386fbsd_sigtramp_end,
i386fbsd_sc_reg_offset, i386fbsdaout_init_abi, i386fbsd_init_abi,
i386fbsd4_sc_reg_offset, i386fbsd4_init_abi): Move here from
i386bsd-tdep.c.
(_initialize_i386fbsd_tdep): New function.
(i386fbsd_r_reg_offset, i386fbsd4_r_reg_offset): New varibles.
(i386fbsdaout_init_abi): Initialize TDEP->gregset_reg_offset,
TDEP->gregset_num_regs, TDEP->sizeof_gregset and
TDEP->sizeof_fpregset. Use ARRAY_SIZE to initialize
TDEP->sc_num_regs.
(i386fbsd4_init_abi): Initialize TDEP->gregset_reg_offset,
TDEP->gregset_num_regs and TDEP->sizeof_gregset. Use ARRAY_SIZE
to initialize TDEP->sc_num_regs.
* i386bsd-tdep.c (i386fbsd_sigtramp_start, i386fbsd_sigtramp_end,
i386fbsd_sc_reg_offset, i386fbsdaout_init_abi, i386fbsd_init_abi,
i386fbsd4_sc_reg_offset, i386fbsd4_init_abi): Remove.
(_initialize_i386bsd_tdep): Don't register FreeBSD a.out and
FreeBSD ELF OS/ABI's here.
* Makefile.in (ALLDEPFILES): Add i386fbsd-tdep.c.
(i386fbsd-tdep.o): New target.
* config/i386/fbsd.mt (TDEPFILES): Add i386fbsd-tdep.o.
* config/i386/fbsd64.mt (TDEPFILES): Add i386fbsd-tdep.o.
Diffstat (limited to 'gdb/i386bsd-tdep.c')
-rw-r--r-- | gdb/i386bsd-tdep.c | 103 |
1 files changed, 1 insertions, 102 deletions
diff --git a/gdb/i386bsd-tdep.c b/gdb/i386bsd-tdep.c index 94d6860..aa3a7e4 100644 --- a/gdb/i386bsd-tdep.c +++ b/gdb/i386bsd-tdep.c @@ -1,4 +1,5 @@ /* Target-dependent code for i386 BSD's. + Copyright 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of GDB. @@ -130,103 +131,6 @@ i386bsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) tdep->sc_num_regs = I386_NUM_GREGS; } -/* FreeBSD 3.0-RELEASE or later. */ - -CORE_ADDR i386fbsd_sigtramp_start = 0xbfbfdf20; -CORE_ADDR i386fbsd_sigtramp_end = 0xbfbfdff0; - -/* From <machine/signal.h>. */ -int i386fbsd_sc_reg_offset[I386_NUM_GREGS] = -{ - 8 + 14 * 4, /* %eax */ - 8 + 13 * 4, /* %ecx */ - 8 + 12 * 4, /* %edx */ - 8 + 11 * 4, /* %ebx */ - 8 + 0 * 4, /* %esp */ - 8 + 1 * 4, /* %ebp */ - 8 + 10 * 4, /* %esi */ - 8 + 9 * 4, /* %edi */ - 8 + 3 * 4, /* %eip */ - 8 + 4 * 4, /* %eflags */ - 8 + 7 * 4, /* %cs */ - 8 + 8 * 4, /* %ss */ - 8 + 6 * 4, /* %ds */ - 8 + 5 * 4, /* %es */ - 8 + 15 * 4, /* %fs */ - 8 + 16 * 4 /* %gs */ -}; - -static void -i386fbsdaout_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) -{ - struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - - /* Obviously FreeBSD is BSD-based. */ - i386bsd_init_abi (info, gdbarch); - - /* FreeBSD uses -freg-struct-return by default. */ - tdep->struct_return = reg_struct_return; - - /* FreeBSD uses a different memory layout. */ - tdep->sigtramp_start = i386fbsd_sigtramp_start; - tdep->sigtramp_end = i386fbsd_sigtramp_end; - - /* FreeBSD has a more complete `struct sigcontext'. */ - tdep->sc_reg_offset = i386fbsd_sc_reg_offset; - tdep->sc_num_regs = I386_NUM_GREGS; -} - -static void -i386fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) -{ - /* It's almost identical to FreeBSD a.out. */ - i386fbsdaout_init_abi (info, gdbarch); - - /* Except that it uses ELF. */ - i386_elf_init_abi (info, gdbarch); - - /* FreeBSD ELF uses SVR4-style shared libraries. */ - set_gdbarch_in_solib_call_trampoline (gdbarch, - generic_in_solib_call_trampoline); -} - -/* FreeBSD 4.0-RELEASE or later. */ - -/* From <machine/signal.h>. */ -int i386fbsd4_sc_reg_offset[I386_NUM_GREGS] = -{ - 20 + 11 * 4, /* %eax */ - 20 + 10 * 4, /* %ecx */ - 20 + 9 * 4, /* %edx */ - 20 + 8 * 4, /* %ebx */ - 20 + 17 * 4, /* %esp */ - 20 + 6 * 4, /* %ebp */ - 20 + 5 * 4, /* %esi */ - 20 + 4 * 4, /* %edi */ - 20 + 14 * 4, /* %eip */ - 20 + 16 * 4, /* %eflags */ - 20 + 15 * 4, /* %cs */ - 20 + 18 * 4, /* %ss */ - 20 + 3 * 4, /* %ds */ - 20 + 2 * 4, /* %es */ - 20 + 1 * 4, /* %fs */ - 20 + 0 * 4 /* %gs */ -}; - -static void -i386fbsd4_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) -{ - struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - - /* Inherit stuff from older releases. We assume that FreeBSD - 4.0-RELEASE always uses ELF. */ - i386fbsd_init_abi (info, gdbarch); - - /* FreeBSD 4.0 introduced a new `struct sigcontext'. */ - tdep->sc_reg_offset = i386fbsd4_sc_reg_offset; - tdep->sc_num_regs = I386_NUM_GREGS; -} - static enum gdb_osabi i386bsd_aout_osabi_sniffer (bfd *abfd) @@ -249,9 +153,4 @@ _initialize_i386bsd_tdep (void) { gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_aout_flavour, i386bsd_aout_osabi_sniffer); - - gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_FREEBSD_AOUT, - i386fbsdaout_init_abi); - gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_FREEBSD_ELF, - i386fbsd4_init_abi); } |