From 1f82754b119f92e76335667e98be68ed79586a8e Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Fri, 10 Feb 2006 20:56:15 +0000 Subject: [PATCH] * defs.h (gdb_osabi): New enum value GDB_OSABI_AIX. * osabi.c (gdb_osabi_name): Add name of new value GDB_OSABI_AIX. * rs6000-tdep.h: New file. * rs6000-tdep.c: Include "rs6000-tdep.h". (rs6000_gdbarch_init): Remove enabling of software single step. Will be done in the AIX-specific initialization routine. * rs6000-aix-tdep.c: New file. * config/powerpc/aix.mt (TDEPFILES): Add rs6000-aix-tdep.o. * Makefile.in (rs6000_tdep_h): New variable. (rs6000-tdep.o): Update dependencies. (rs6000-aix-tdep.o): New rule. --- gdb/ChangeLog | 14 ++++++++++ gdb/Makefile.in | 4 ++- gdb/config/powerpc/aix.mt | 3 ++- gdb/defs.h | 1 + gdb/osabi.c | 1 + gdb/rs6000-aix-tdep.c | 55 +++++++++++++++++++++++++++++++++++++++ gdb/rs6000-tdep.c | 11 +------- gdb/rs6000-tdep.h | 26 ++++++++++++++++++ 8 files changed, 103 insertions(+), 12 deletions(-) create mode 100644 gdb/rs6000-aix-tdep.c create mode 100644 gdb/rs6000-tdep.h diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 8afb0115748..6750cb1c344 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,17 @@ +2006-02-10 Joel Brobecker + + * defs.h (gdb_osabi): New enum value GDB_OSABI_AIX. + * osabi.c (gdb_osabi_name): Add name of new value GDB_OSABI_AIX. + * rs6000-tdep.h: New file. + * rs6000-tdep.c: Include "rs6000-tdep.h". + (rs6000_gdbarch_init): Remove enabling of software single step. + Will be done in the AIX-specific initialization routine. + * rs6000-aix-tdep.c: New file. + * config/powerpc/aix.mt (TDEPFILES): Add rs6000-aix-tdep.o. + * Makefile.in (rs6000_tdep_h): New variable. + (rs6000-tdep.o): Update dependencies. + (rs6000-aix-tdep.o): New rule. + 2006-02-10 Joel Brobecker * aix-thread.c (_initialize_aix_thread): Use add_setshow_boolean_cmd diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 14188bd9879..16e7bf75de6 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -760,6 +760,7 @@ regset_h = regset.h remote_fileio_h = remote-fileio.h remote_h = remote.h remote_utils_h = remote-utils.h $(target_h) +rs6000_tdep_h = rs6000-tdep.h $(defs_h) s390_tdep_h = s390-tdep.h scm_lang_h = scm-lang.h $(scm_tags_h) scm_tags_h = scm-tags.h @@ -2488,7 +2489,8 @@ rs6000-tdep.o: rs6000-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(symtab_h) \ $(reggroups_h) $(libbfd_h) $(coff_internal_h) $(libcoff_h) \ $(coff_xcoff_h) $(libxcoff_h) $(elf_bfd_h) $(solib_svr4_h) \ $(ppc_tdep_h) $(gdb_assert_h) $(dis_asm_h) $(trad_frame_h) \ - $(frame_unwind_h) $(frame_base_h) $(reggroups_h) + $(frame_unwind_h) $(frame_base_h) $(reggroups_h) $(rs6000_tdep_h) +rs6000-aix-tdep.o: rs6000-aix-tdep.c $(defs_h) $(osabi_h) $(rs6000_tdep_h) s390-nat.o: s390-nat.c $(defs_h) $(tm_h) $(regcache_h) $(inferior_h) \ $(s390_tdep_h) $(target_h) $(linux_nat_h) s390-tdep.o: s390-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) $(inferior_h) \ diff --git a/gdb/config/powerpc/aix.mt b/gdb/config/powerpc/aix.mt index b736d5a4257..c18e4ba4f17 100644 --- a/gdb/config/powerpc/aix.mt +++ b/gdb/config/powerpc/aix.mt @@ -1,3 +1,4 @@ # Target: PowerPC running AIX -TDEPFILES= rs6000-tdep.o xcoffread.o ppc-sysv-tdep.o solib.o solib-svr4.o +TDEPFILES= rs6000-tdep.o rs6000-aix-tdep.o \ + xcoffread.o ppc-sysv-tdep.o solib.o solib-svr4.o DEPRECATED_TM_FILE= config/rs6000/tm-rs6000.h diff --git a/gdb/defs.h b/gdb/defs.h index 6d4e922b95e..f5f8e354849 100644 --- a/gdb/defs.h +++ b/gdb/defs.h @@ -963,6 +963,7 @@ enum gdb_osabi GDB_OSABI_QNXNTO, GDB_OSABI_CYGWIN, + GDB_OSABI_AIX, GDB_OSABI_INVALID /* keep this last */ }; diff --git a/gdb/osabi.c b/gdb/osabi.c index 53d2fb2be14..e8c5ed844f3 100644 --- a/gdb/osabi.c +++ b/gdb/osabi.c @@ -74,6 +74,7 @@ static const char * const gdb_osabi_names[] = "QNX Neutrino", "Cygwin", + "AIX", "" }; diff --git a/gdb/rs6000-aix-tdep.c b/gdb/rs6000-aix-tdep.c new file mode 100644 index 00000000000..a488637c377 --- /dev/null +++ b/gdb/rs6000-aix-tdep.c @@ -0,0 +1,55 @@ +/* Native support code for PPC AIX, for GDB the GNU debugger. + + Copyright (C) 2006 Free Software Foundation, Inc. + + Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "osabi.h" +#include "rs6000-tdep.h" + +static enum gdb_osabi +rs6000_aix_osabi_sniffer (bfd *abfd) +{ + + if (bfd_get_flavour (abfd) == bfd_target_xcoff_flavour); + return GDB_OSABI_AIX; + + return GDB_OSABI_UNKNOWN; +} + +static void +rs6000_aix_init_osabi (struct gdbarch_info info, struct gdbarch *gdbarch) +{ + /* RS6000/AIX does not support PT_STEP. Has to be simulated. */ + set_gdbarch_software_single_step (gdbarch, rs6000_software_single_step); +} + +void +_initialize_rs6000_aix_tdep (void) +{ + gdbarch_register_osabi_sniffer (bfd_arch_rs6000, + bfd_target_xcoff_flavour, + rs6000_aix_osabi_sniffer); + + gdbarch_register_osabi (bfd_arch_rs6000, 0, GDB_OSABI_AIX, + rs6000_aix_init_osabi); +} + diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index 19a4bc9d0d0..f78280009a1 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -60,6 +60,7 @@ #include "frame-base.h" #include "reggroups.h" +#include "rs6000-tdep.h" /* If the kernel has to deliver a signal, it pushes a sigcontext structure on the stack and then calls the signal handler, passing @@ -3518,16 +3519,6 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) frame_base_append_sniffer (gdbarch, rs6000_frame_base_sniffer); } - if (from_xcoff_exec) - { - /* NOTE: jimix/2003-06-09: This test should really check for - GDB_OSABI_AIX when that is defined and becomes - available. (Actually, once things are properly split apart, - the test goes away.) */ - /* RS6000/AIX does not support PT_STEP. Has to be simulated. */ - set_gdbarch_software_single_step (gdbarch, rs6000_software_single_step); - } - init_sim_regno_table (gdbarch); return gdbarch; diff --git a/gdb/rs6000-tdep.h b/gdb/rs6000-tdep.h new file mode 100644 index 00000000000..95c96a79965 --- /dev/null +++ b/gdb/rs6000-tdep.h @@ -0,0 +1,26 @@ +/* Copyright (C) 2006 Free Software Foundation, Inc. + + Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" + +extern void rs6000_software_single_step (enum target_signal signal, + int insert_breakpoints_p); + -- 2.30.2