2002-06-11 Daniel Jacobowitz <drow@mvista.com>
authorDaniel Jacobowitz <drow@false.org>
Tue, 11 Jun 2002 17:51:56 +0000 (17:51 +0000)
committerDaniel Jacobowitz <drow@false.org>
Tue, 11 Jun 2002 17:51:56 +0000 (17:51 +0000)
        * mips-tdep.c (MIPS_FPU_TYPE, FP_REGISTER_DOUBLE, MIPS_EABI)
        (MIPS_LAST_FP_ARG_REGNUM, MIPS_LAST_ARG_REGNUM)
        (MIPS_DEFAULT_SAVED_REGSIZE, MIPS_REGS_HAVE_HOME_P)
        (MIPS_DEFAULT_STACK_ARGSIZE, GDB_TARGET_IS_MIPS64)
        (MIPS_DEFAULT_MASK_ADDRESS_P): Remove obsolete definitions.  Define
        unconditionally.
        (set_mipsfpu_single_command, set_mipsfpu_double_command)
        (set_mipsfpu_none_command): Remove if (GDB_MULTI_ARCH).
        (_initialize_mips_tdep): Remove dead code.
        * config/mips/tm-irix5.h (MIPS_LAST_ARG_REGNUM)
        (MIPS_DEFAULT_STACK_ARGSIZE, MIPS_REGS_HAVE_HOME_P): Remove.
        * config/mips/tm-irix6.h (MIPS_LAST_ARG_REGNUM)
        (MIPS_DEFAULT_STACK_ARGSIZE, MIPS_REGS_HAVE_HOME_P): Remove.
        * config/mips/tm-mips.h (MIPS_EABI, MIPS_LAST_ARG_REGNUM,
        MIPS_LAST_FP_ARG_REGNUM): Remove.

gdb/ChangeLog
gdb/config/mips/tm-irix5.h
gdb/config/mips/tm-irix6.h
gdb/config/mips/tm-mips.h
gdb/mips-tdep.c

index a8618f5f448b23a6e37a0fa823a83019c584479b..9ebf2dc51f24a19135558ccdeaa74449d3f75c60 100644 (file)
@@ -1,3 +1,173 @@
+2002-06-11  Daniel Jacobowitz  <drow@mvista.com>
+
+       * mips-tdep.c (MIPS_FPU_TYPE, FP_REGISTER_DOUBLE, MIPS_EABI)
+       (MIPS_LAST_FP_ARG_REGNUM, MIPS_LAST_ARG_REGNUM)
+       (MIPS_DEFAULT_SAVED_REGSIZE, MIPS_REGS_HAVE_HOME_P)
+       (MIPS_DEFAULT_STACK_ARGSIZE, GDB_TARGET_IS_MIPS64)
+       (MIPS_DEFAULT_MASK_ADDRESS_P): Remove obsolete definitions.  Define
+       unconditionally.
+       (set_mipsfpu_single_command, set_mipsfpu_double_command)
+       (set_mipsfpu_none_command): Remove if (GDB_MULTI_ARCH).
+       (_initialize_mips_tdep): Remove dead code.
+       * config/mips/tm-irix5.h (MIPS_LAST_ARG_REGNUM)
+       (MIPS_DEFAULT_STACK_ARGSIZE, MIPS_REGS_HAVE_HOME_P): Remove.
+       * config/mips/tm-irix6.h (MIPS_LAST_ARG_REGNUM)
+       (MIPS_DEFAULT_STACK_ARGSIZE, MIPS_REGS_HAVE_HOME_P): Remove.
+       * config/mips/tm-mips.h (MIPS_EABI, MIPS_LAST_ARG_REGNUM,
+       MIPS_LAST_FP_ARG_REGNUM): Remove.
+
+2002-06-11  Daniel Jacobowitz  <drow@mvista.com>
+
+       * gdbserver/thread-db.c: New file.
+       * gdbserver/proc-service.c: New file.
+       * gdbserver/acinclude.m4: New file.
+       * gdbserver/Makefile.in: Add GDBSERVER_LIBS, gdb_proc_service_h,
+       proc-service.o, and thread-db.o.
+       (linux-low.o): Add USE_THREAD_DB.
+       * gdbserver/acconfig.h: Add HAVE_PRGREGSET_T, HAVE_PRFPREGSET_T,
+       HAVE_LWPID_T, HAVE_PSADDR_T, and PRFPREGSET_T_BROKEN.
+       * gdbserver/aclocal.m4: Regenerated.
+       * gdbserver/config.in: Regenerated.
+       * gdbserver/configure: Regenerated.
+       * gdbserver/configure.in: Check for proc_service.h, sys/procfs.h,
+       thread_db.h, and linux/elf.h headrs.
+       Check for lwpid_t, psaddr_t, prgregset_t, prfpregset_t, and
+       PRFPREGSET_T_BROKEN.  Introduce srv_thread_depfiles and USE_THREAD_DB.
+       Check for -lthread_db and thread support.
+       * gdbserver/configure.srv: Enable thread_db support for ARM, i386, MIPS,
+       PowerPC, and SuperH.
+       * gdbserver/i387-fp.c: Constify arguments.
+       * gdbserver/i387-fp.h: Likewise.
+       * gdbserver/inferiors.c: (struct thread_info): Renamed from
+       `struct inferior_info'.  Remove PID member.  Use generic inferior
+       list header.  All uses updated.
+       (inferiors, signal_pid): Removed.
+       (all_threads): New variable.
+       (get_thread): Define.
+       (add_inferior_to_list): New function.
+       (for_each_inferior): New function.
+       (change_inferior_id): New function.
+       (add_inferior): Removed.
+       (remove_inferior): New function.
+       (add_thread): New function.
+       (free_one_thread): New function.
+       (remove_thread): New function.
+       (clear_inferiors): Use for_each_inferior and free_one_thread.
+       (find_inferior): New function.
+       (find_inferior_id): New function.
+       (inferior_target_data): Update argument type.
+       (set_inferior_target_data): Likewise.
+       (inferior_regcache_data): Likewise.
+       (set_inferior_regcache_data): Likewise.
+       * gdbserver/linux-low.c (linux_bp_reinsert): Remove.
+       (all_processes, stopping_threads, using_thrads)
+       (struct pending_signals, debug_threads, pid_of): New.
+       (inferior_pid): Replace with macro.
+       (struct inferior_linux_data): Remove.
+       (get_stop_pc, add_process): New functions.
+       (linux_create_inferior): Restore SIGRTMIN+1 before calling exec.
+       Use add_process and add_thread.
+       (linux_attach_lwp): New function, based on old linux_attach.  Use
+       add_process and add_thread.  Set stop_expected for new threads.
+       (linux_attach): New function.
+       (linux_kill_one_process): New function.
+       (linux_kill): Kill all LWPs.
+       (linux_thread_alive): Use find_inferior_id.
+       (check_removed_breakpoints, status_pending_p): New functions.
+       (linux_wait_for_process): Renamed from linux_wait_for_one_inferior.
+       Update.  Use WNOHANG.  Wait for cloned processes also.  Update process
+       struct for the found process.
+       (linux_wait_for_event): New function.
+       (linux_wait): Use it.  Support LWPs.
+       (send_sigstop, wait_for_sigstop, stop_all_processes)
+       (linux_resume_one_process, linux_continue_one_process): New functions.
+       (linux_resume): Support LWPs.
+       (REGISTER_RAW_SIZE): Remove.
+       (fetch_register): Use register_size instead.  Call supply_register.
+       (usr_store_inferior_registers): Likewise.  Call collect_register.
+       Fix recursive case.
+       (regsets_fetch_inferior_registers): Improve error message.
+       (regsets_store_inferior_registers): Add debugging.
+       (linux_look_up_symbols): Call thread_db_init if USE_THREAD_DB.
+       (unstopped_p, linux_signal_pid): New functions.
+       (linux_target_ops): Add linux_signal_pid.
+       (linux_init_signals): New function.
+       (initialize_low): Call it.  Initialize using_threads.
+       * gdbserver/regcache.c (inferior_regcache_data): Add valid
+       flag.
+       (get_regcache): Fetch registers lazily.  Add fetch argument
+       and update all callers.
+       (regcache_invalidate_one, regcache_invalidate): New
+       functions.
+       (new_register_cache): Renamed from create_register_cache.
+       Return the new regcache.
+       (free_register_cache): Change argument to a void *.
+       (registers_to_string, registers_from_string): Call get_regcache
+       with fetch flag set.
+       (register_data): Make static.  Pass fetch flag to get_regcache.
+       (supply_register): Call get_regcache with fetch flag clear.
+       (collect_register): Call get_regcache with fetch flag set.
+       (collect_register_as_string): New function.
+       * gdbserver/regcache.h: Update.
+       * gdbserver/remote-utils.c (putpkt): Flush after debug output and use
+       stderr.
+       Handle input interrupts while waiting for an ACK.
+       (input_interrupt): Use signal_pid method.
+       (getpkt): Flush after debug output and use stderr.
+       (outreg): Use collect_register_as_string.
+       (new_thread_notify, dead_thread_notify): New functions.
+       (prepare_resume_reply): Check using_threads.  Set thread_from_wait
+       and general_thread.
+       (look_up_one_symbol): Flush after debug output.
+       * gdbserver/server.c (step_thread, server_waiting): New variables.
+       (start_inferior): Don't use signal_pid.  Update call to mywait.
+       (attach_inferior): Update call to mywait.
+       (handle_query): Handle qfThreadInfo and qsThreadInfo.
+       (main): Don't fetch/store registers explicitly.  Use
+       set_desired_inferior.  Support proposed ``Hs'' packet.  Update
+       calls to mywait.
+       * gdbserver/server.h: Update.
+       (struct inferior_list, struct_inferior_list_entry): New.
+       * gdbserver/target.c (set_desired_inferior): New.
+       (write_inferior_memory): Constify.
+       (mywait): New function.
+       * gdbserver/target.h: Update.
+       (struct target_ops): New signal_pid method.
+       (mywait): Removed macro, added prototype.
+
+       * gdbserver/linux-low.h (regset_func): Removed.
+       (regset_fill_func, regset_store_func): New.
+       (enum regset_type): New.
+       (struct regset_info): Add type field.  Use new operation types.
+       (struct linux_target_ops): stop_pc renamed to get_pc.
+       Add decr_pc_after_break and breakpoint_at.
+       (get_process, get_thread_proess, get_process_thread)
+       (strut process_info, all_processes, linux_attach_lwp)
+       (thread_db_init): New.
+
+       * gdbserver/linux-arm-low.c (arm_get_pc, arm_set_pc,
+       arm_breakpoint, arm_breakpoint_len, arm_breakpoint_at): New.
+       (the_low_target): Add new members.
+       * gdbserver/linux-i386-low.c (i386_store_gregset, i386_store_fpregset)
+       (i386_store_fpxregset): Constify.
+       (target_regsets): Add new kind identifier.
+       (i386_get_pc): Renamed from i386_stop_pc.  Simplify.
+       (i386_set_pc): Add debugging.
+       (i386_breakpoint_at): New function.
+       (the_low_target): Add new members.
+       * gdbserver/linux-mips-low.c (mips_get_pc, mips_set_pc)
+       (mips_breakpoint, mips_breakpoint_len, mips_reinsert_addr)
+       (mips_breakpoint_at): New.
+       (the_low_target): Add new members.
+       * gdbserver/linux-ppc-low.c (ppc_get_pc, ppc_set_pc)
+       (ppc_breakpoint, ppc_breakpoint_len, ppc_breakpoint_at): New.
+       (the_low_target): Add new members.
+       * gdbserver/linux-sh-low.c (sh_get_pc, sh_set_pc)
+       (sh_breakpoint, sh_breakpoint_len, sh_breakpoint_at): New.
+       (the_low_target): Add new members.
+       * gdbserver/linux-x86-64-low.c (target_regsets): Add new kind
+       identifier.
+
 2002-06-11  Michal Ludvig  <mludvig@suse.cz>
 
        * dwarf2cfi.c (unwind_tmp_obstack_init): New.
index 49b842fb7f1abb049e78b317dab004c516d24844..1a88de04b8d26a90818b20e2f61af6886ddf4be4 100644 (file)
         : ((N) >= 70 && (N) <= 89) ? builtin_type_uint32 \
         : builtin_type_int)
 
-#undef  MIPS_LAST_ARG_REGNUM
-#define MIPS_LAST_ARG_REGNUM 11        /* N32 uses R4 through R11 for args */
-
-/* MIPS_STACK_ARGSIZE -- how many bytes does a pushed function arg take
-   up on the stack? For the n32 ABI, eight bytes are reserved for each
-   register. Like MIPS_SAVED_REGSIZE but different. */
-#define MIPS_DEFAULT_STACK_ARGSIZE 8
-
-/* N32 does not reserve home space for registers used to carry
-   parameters. */
-#define MIPS_REGS_HAVE_HOME_P 0
-
 /* Force N32 ABI as the default. */
 #define MIPS_DEFAULT_ABI MIPS_ABI_N32
 
index 2d90b2ef99836603200bd94f6b73772f24173dbf..70b5f6fb7fc916bd578dbcb8e192855cd16bb045 100644 (file)
         : ((N) >= 70 && (N) <= 89) ? builtin_type_uint32 \
         : builtin_type_int)
 
-#undef  MIPS_LAST_ARG_REGNUM
-#define MIPS_LAST_ARG_REGNUM 11        /* N32 uses R4 through R11 for args */
-
-/* MIPS_STACK_ARGSIZE -- how many bytes does a pushed function arg take
-   up on the stack? For the n32 ABI, eight bytes are reserved for each
-   register. Like MIPS_SAVED_REGSIZE but different. */
-#define MIPS_DEFAULT_STACK_ARGSIZE 8
-
-/* N32 does not reserve home space for registers used to carry
-   parameters. */
-#define MIPS_REGS_HAVE_HOME_P 0
-
 /* Force N32 ABI as the default. */
 #define MIPS_DEFAULT_ABI MIPS_ABI_N32
 
index 8403ef87153e07fa418884a1bb44056905f8e00c..3dada3b7074c47f7e5258b427b1de4da3ef272a3 100644 (file)
@@ -38,10 +38,6 @@ struct value;
 #include "coff/sym.h"          /* Needed for PDR below.  */
 #include "coff/symconst.h"
 
-#if !defined (MIPS_EABI)
-#define MIPS_EABI 0
-#endif
-
 /* PC should be masked to remove possible MIPS16 flag */
 #if !defined (GDB_TARGET_MASK_DISAS_PC)
 #define GDB_TARGET_MASK_DISAS_PC(addr) UNMAKE_MIPS16_ADDR(addr)
@@ -130,11 +126,6 @@ extern char *mips_register_name (int regnr);
 #define ZERO_REGNUM 0          /* read-only register, always 0 */
 #define V0_REGNUM 2            /* Function integer return value */
 #define A0_REGNUM 4            /* Loc of first arg during a subr call */
-#if MIPS_EABI
-#define MIPS_LAST_ARG_REGNUM 11        /* EABI uses R4 through R11 for args */
-#else
-#define MIPS_LAST_ARG_REGNUM 7 /* old ABI uses R4 through R7 for args */
-#endif
 #define T9_REGNUM 25           /* Contains address of callee in PIC */
 #define SP_REGNUM 29           /* Contains address of top of stack */
 #define RA_REGNUM 31           /* Contains return address value */
@@ -146,11 +137,6 @@ extern char *mips_register_name (int regnr);
 #define PC_REGNUM 37           /* Contains program counter */
 #define FP0_REGNUM 38          /* Floating point register 0 (single float) */
 #define FPA0_REGNUM (FP0_REGNUM+12)    /* First float argument register */
-#if MIPS_EABI                  /* EABI uses F12 through F19 for args */
-#define MIPS_LAST_FP_ARG_REGNUM (FP0_REGNUM+19)
-#else /* old ABI uses F12 through F15 for args */
-#define MIPS_LAST_FP_ARG_REGNUM (FP0_REGNUM+15)
-#endif
 #define FCRCS_REGNUM 70                /* FP control/status */
 #define FCRIR_REGNUM 71                /* FP implementation/revision */
 #define FP_REGNUM 72           /* Pseudo register that contains true address of executing stack frame */
index c62886ce48f6433765b8862de11e48bf81f64517..0c42caf618ceab6b50a806c1de8831427229cc18 100644 (file)
@@ -106,12 +106,6 @@ enum mips_fpu_type
 #endif
 static int mips_fpu_type_auto = 1;
 static enum mips_fpu_type mips_fpu_type = MIPS_DEFAULT_FPU_TYPE;
-#define MIPS_FPU_TYPE mips_fpu_type
-
-/* Do not use "TARGET_IS_MIPS64" to test the size of floating point registers */
-#ifndef FP_REGISTER_DOUBLE
-#define FP_REGISTER_DOUBLE (REGISTER_VIRTUAL_SIZE(FP0_REGNUM) == 8)
-#endif
 
 static int mips_debug = 0;
 
@@ -137,35 +131,18 @@ struct gdbarch_tdep
     enum gdb_osabi osabi;
   };
 
-#if GDB_MULTI_ARCH
-#undef MIPS_EABI
 #define MIPS_EABI (gdbarch_tdep (current_gdbarch)->mips_abi == MIPS_ABI_EABI32 \
                   || gdbarch_tdep (current_gdbarch)->mips_abi == MIPS_ABI_EABI64)
-#endif
 
-#if GDB_MULTI_ARCH
-#undef MIPS_LAST_FP_ARG_REGNUM
 #define MIPS_LAST_FP_ARG_REGNUM (gdbarch_tdep (current_gdbarch)->mips_last_fp_arg_regnum)
-#endif
 
-#if GDB_MULTI_ARCH
-#undef MIPS_LAST_ARG_REGNUM
 #define MIPS_LAST_ARG_REGNUM (gdbarch_tdep (current_gdbarch)->mips_last_arg_regnum)
-#endif
 
-#if GDB_MULTI_ARCH
-#undef MIPS_FPU_TYPE
 #define MIPS_FPU_TYPE (gdbarch_tdep (current_gdbarch)->mips_fpu_type)
-#endif
 
 /* Return the currently configured (or set) saved register size. */
 
-#if GDB_MULTI_ARCH
-#undef MIPS_DEFAULT_SAVED_REGSIZE
 #define MIPS_DEFAULT_SAVED_REGSIZE (gdbarch_tdep (current_gdbarch)->mips_default_saved_regsize)
-#elif !defined (MIPS_DEFAULT_SAVED_REGSIZE)
-#define MIPS_DEFAULT_SAVED_REGSIZE MIPS_REGSIZE
-#endif
 
 static const char *mips_saved_regsize_string = size_auto;
 
@@ -212,31 +189,18 @@ mips2_fp_compat (void)
    form double-precision values).  Do not use "TARGET_IS_MIPS64" to
    determine if the ABI is using double-precision registers.  See also
    MIPS_FPU_TYPE. */
-#if GDB_MULTI_ARCH
-#undef FP_REGISTER_DOUBLE
 #define FP_REGISTER_DOUBLE (gdbarch_tdep (current_gdbarch)->mips_fp_register_double)
-#endif
 
 /* Does the caller allocate a ``home'' for each register used in the
    function call?  The N32 ABI and MIPS_EABI do not, the others do. */
 
-#if GDB_MULTI_ARCH
-#undef MIPS_REGS_HAVE_HOME_P
 #define MIPS_REGS_HAVE_HOME_P (gdbarch_tdep (current_gdbarch)->mips_regs_have_home_p)
-#elif !defined (MIPS_REGS_HAVE_HOME_P)
-#define MIPS_REGS_HAVE_HOME_P (!MIPS_EABI)
-#endif
 
 /* The amount of space reserved on the stack for registers. This is
    different to MIPS_SAVED_REGSIZE as it determines the alignment of
    data allocated after the registers have run out. */
 
-#if GDB_MULTI_ARCH
-#undef MIPS_DEFAULT_STACK_ARGSIZE
 #define MIPS_DEFAULT_STACK_ARGSIZE (gdbarch_tdep (current_gdbarch)->mips_default_stack_argsize)
-#elif !defined (MIPS_DEFAULT_STACK_ARGSIZE)
-#define MIPS_DEFAULT_STACK_ARGSIZE (MIPS_DEFAULT_SAVED_REGSIZE)
-#endif
 
 #define MIPS_STACK_ARGSIZE (mips_stack_argsize ())
 
@@ -253,17 +217,9 @@ mips_stack_argsize (void)
     return 4;
 }
 
-#if GDB_MULTI_ARCH
-#undef GDB_TARGET_IS_MIPS64
 #define GDB_TARGET_IS_MIPS64 (gdbarch_tdep (current_gdbarch)->gdb_target_is_mips64 + 0)
-#endif
 
-#if GDB_MULTI_ARCH
-#undef MIPS_DEFAULT_MASK_ADDRESS_P
 #define MIPS_DEFAULT_MASK_ADDRESS_P (gdbarch_tdep (current_gdbarch)->default_mask_address_p)
-#elif !defined (MIPS_DEFAULT_MASK_ADDRESS_P)
-#define MIPS_DEFAULT_MASK_ADDRESS_P (0)
-#endif
 
 #define VM_MIN_ADDRESS (CORE_ADDR)0x400000
 
@@ -3567,10 +3523,7 @@ set_mipsfpu_single_command (char *args, int from_tty)
 {
   mips_fpu_type = MIPS_FPU_SINGLE;
   mips_fpu_type_auto = 0;
-  if (GDB_MULTI_ARCH)
-    {
-      gdbarch_tdep (current_gdbarch)->mips_fpu_type = MIPS_FPU_SINGLE;
-    }
+  gdbarch_tdep (current_gdbarch)->mips_fpu_type = MIPS_FPU_SINGLE;
 }
 
 static void
@@ -3578,10 +3531,7 @@ set_mipsfpu_double_command (char *args, int from_tty)
 {
   mips_fpu_type = MIPS_FPU_DOUBLE;
   mips_fpu_type_auto = 0;
-  if (GDB_MULTI_ARCH)
-    {
-      gdbarch_tdep (current_gdbarch)->mips_fpu_type = MIPS_FPU_DOUBLE;
-    }
+  gdbarch_tdep (current_gdbarch)->mips_fpu_type = MIPS_FPU_DOUBLE;
 }
 
 static void
@@ -3589,10 +3539,7 @@ set_mipsfpu_none_command (char *args, int from_tty)
 {
   mips_fpu_type = MIPS_FPU_NONE;
   mips_fpu_type_auto = 0;
-  if (GDB_MULTI_ARCH)
-    {
-      gdbarch_tdep (current_gdbarch)->mips_fpu_type = MIPS_FPU_NONE;
-    }
+  gdbarch_tdep (current_gdbarch)->mips_fpu_type = MIPS_FPU_NONE;
 }
 
 static void
@@ -4970,21 +4917,6 @@ This option can be set to one of:\n\
           "Show current use of MIPS floating-point coprocessor target.",
           &showlist);
 
-#if !GDB_MULTI_ARCH
-  c = add_set_cmd ("processor", class_support, var_string_noescape,
-                  (char *) &tmp_mips_processor_type,
-                  "Set the type of MIPS processor in use.\n\
-Set this to be able to access processor-type-specific registers.\n\
-",
-                  &setlist);
-  set_cmd_cfunc (c, mips_set_processor_type_command);
-  c = add_show_from_set (c, &showlist);
-  set_cmd_cfunc (c, mips_show_processor_type_command);
-
-  tmp_mips_processor_type = xstrdup (DEFAULT_MIPS_TYPE);
-  mips_set_processor_type_command (xstrdup (DEFAULT_MIPS_TYPE), 0);
-#endif
-
   /* We really would like to have both "0" and "unlimited" work, but
      command.c doesn't deal with that.  So make it a var_zinteger
      because the user can always use "999999" or some such for unlimited.  */