From 187365caaad2d020b335485c50b0fcd00c5e5b48 Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Fri, 28 Jan 2022 11:14:37 -0800 Subject: [PATCH] Remove vestigal FreeBSD/i386 3.x support. This was orphaned when a.out support was removed as the FreeBSD/i386 ELF support always used the register layouts from 4.0+. --- gdb/i386-bsd-nat.c | 4 +- gdb/i386-fbsd-tdep.c | 117 ++++++++++++------------------------------- gdb/i386-tdep.h | 1 - 3 files changed, 32 insertions(+), 90 deletions(-) diff --git a/gdb/i386-bsd-nat.c b/gdb/i386-bsd-nat.c index 515e0a8d9ad..a04478ac5a7 100644 --- a/gdb/i386-bsd-nat.c +++ b/gdb/i386-bsd-nat.c @@ -350,9 +350,7 @@ _initialize_i386bsd_nat () system header files and sysctl(3) to get at the relevant information. */ -#if defined (__FreeBSD_version) && __FreeBSD_version >= 400011 -#define SC_REG_OFFSET i386fbsd4_sc_reg_offset -#elif defined (__FreeBSD_version) && __FreeBSD_version >= 300005 +#if defined (__FreeBSD_version) #define SC_REG_OFFSET i386fbsd_sc_reg_offset #elif defined (OpenBSD) #define SC_REG_OFFSET i386obsd_sc_reg_offset diff --git a/gdb/i386-fbsd-tdep.c b/gdb/i386-fbsd-tdep.c index 1363f62cbf0..f09a4947e98 100644 --- a/gdb/i386-fbsd-tdep.c +++ b/gdb/i386-fbsd-tdep.c @@ -186,17 +186,15 @@ i386fbsd_sigtramp_p (struct frame_info *this_frame) return 1; } -/* FreeBSD 3.0-RELEASE or later. */ - /* From . */ static int i386fbsd_r_reg_offset[] = { - 9 * 4, 8 * 4, 7 * 4, 6 * 4, /* %eax, %ecx, %edx, %ebx */ - 15 * 4, 4 * 4, /* %esp, %ebp */ - 3 * 4, 2 * 4, /* %esi, %edi */ - 12 * 4, 14 * 4, /* %eip, %eflags */ - 13 * 4, 16 * 4, /* %cs, %ss */ - 1 * 4, 0 * 4, -1, -1 /* %ds, %es, %fs, %gs */ + 10 * 4, 9 * 4, 8 * 4, 7 * 4, /* %eax, %ecx, %edx, %ebx */ + 16 * 4, 5 * 4, /* %esp, %ebp */ + 4 * 4, 3 * 4, /* %esi, %edi */ + 13 * 4, 15 * 4, /* %eip, %eflags */ + 14 * 4, 17 * 4, /* %cs, %ss */ + 2 * 4, 1 * 4, 0 * 4, 18 * 4 /* %ds, %es, %fs, %gs */ }; /* Sigtramp routine location. */ @@ -206,22 +204,22 @@ CORE_ADDR i386fbsd_sigtramp_end_addr; /* From . */ int i386fbsd_sc_reg_offset[] = { - 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 */ + 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 */ }; /* Get XSAVE extended state xcr0 from core dump. */ @@ -351,6 +349,9 @@ i386fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { i386_gdbarch_tdep *tdep = (i386_gdbarch_tdep *) gdbarch_tdep (gdbarch); + /* Generic FreeBSD support. */ + fbsd_init_abi (info, gdbarch); + /* Obviously FreeBSD is BSD-based. */ i386bsd_init_abi (info, gdbarch); @@ -358,7 +359,7 @@ i386fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) its FPU emulator in `struct fpreg'. */ tdep->gregset_reg_offset = i386fbsd_r_reg_offset; tdep->gregset_num_regs = ARRAY_SIZE (i386fbsd_r_reg_offset); - tdep->sizeof_gregset = 18 * 4; + tdep->sizeof_gregset = 19 * 4; tdep->sizeof_fpregset = 176; /* FreeBSD uses -freg-struct-return by default. */ @@ -376,66 +377,6 @@ i386fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) i386_elf_init_abi (info, gdbarch); - /* FreeBSD uses SVR4-style shared libraries. */ - set_solib_svr4_fetch_link_map_offsets - (gdbarch, svr4_ilp32_fetch_link_map_offsets); -} - -/* FreeBSD 4.0-RELEASE or later. */ - -/* From . */ -static int i386fbsd4_r_reg_offset[] = -{ - 10 * 4, 9 * 4, 8 * 4, 7 * 4, /* %eax, %ecx, %edx, %ebx */ - 16 * 4, 5 * 4, /* %esp, %ebp */ - 4 * 4, 3 * 4, /* %esi, %edi */ - 13 * 4, 15 * 4, /* %eip, %eflags */ - 14 * 4, 17 * 4, /* %cs, %ss */ - 2 * 4, 1 * 4, 0 * 4, 18 * 4 /* %ds, %es, %fs, %gs */ -}; - -/* From . */ -int i386fbsd4_sc_reg_offset[] = -{ - 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) -{ - i386_gdbarch_tdep *tdep = (i386_gdbarch_tdep *) gdbarch_tdep (gdbarch); - - /* Generic FreeBSD support. */ - fbsd_init_abi (info, 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 reg'. */ - tdep->gregset_reg_offset = i386fbsd4_r_reg_offset; - tdep->gregset_num_regs = ARRAY_SIZE (i386fbsd4_r_reg_offset); - tdep->sizeof_gregset = 19 * 4; - - /* FreeBSD 4.0 introduced a new `struct sigcontext'. */ - tdep->sc_reg_offset = i386fbsd4_sc_reg_offset; - tdep->sc_num_regs = ARRAY_SIZE (i386fbsd4_sc_reg_offset); - tdep->xsave_xcr0_offset = I386_FBSD_XSAVE_XCR0_OFFSET; /* Iterate over core file register note sections. */ @@ -445,6 +386,10 @@ i386fbsd4_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_core_read_description (gdbarch, i386fbsd_core_read_description); + /* FreeBSD uses SVR4-style shared libraries. */ + set_solib_svr4_fetch_link_map_offsets + (gdbarch, svr4_ilp32_fetch_link_map_offsets); + set_gdbarch_fetch_tls_load_module_address (gdbarch, svr4_fetch_objfile_link_map); set_gdbarch_get_thread_local_address (gdbarch, @@ -456,5 +401,5 @@ void _initialize_i386fbsd_tdep () { gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_FREEBSD, - i386fbsd4_init_abi); + i386fbsd_init_abi); } diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h index 6fd134d3fce..58899337458 100644 --- a/gdb/i386-tdep.h +++ b/gdb/i386-tdep.h @@ -476,7 +476,6 @@ extern CORE_ADDR i386fbsd_sigtramp_start_addr; extern CORE_ADDR i386fbsd_sigtramp_end_addr; extern CORE_ADDR i386obsd_sigtramp_start_addr; extern CORE_ADDR i386obsd_sigtramp_end_addr; -extern int i386fbsd4_sc_reg_offset[]; extern int i386fbsd_sc_reg_offset[]; extern int i386obsd_sc_reg_offset[]; extern int i386bsd_sc_reg_offset[]; -- 2.30.2