* gdb.c++/pr-1210.cc: New file.
[deliverable/binutils-gdb.git] / gdb / tui / tuiRegs.c
index 30dd906da9c782ef101fe0ce637042c76a02ca33..61b933444dad9f5ad305df794a38d3408b4fcedd 100644 (file)
@@ -1,10 +1,43 @@
+/* TUI display registers in window.
 
-/*
-   ** tuiRegs.c
-   **         This module contains functions to support display of registers
-   **         in the data window.
- */
+   Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation,
+   Inc.
+
+   Contributed by Hewlett-Packard Company.
+
+   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.  */
 
+/* FIXME: cagney/2002-02-28: The GDB coding standard indicates that
+   "defs.h" should be included first.  Unfortunatly some systems
+   (currently Debian GNU/Linux) include the <stdbool.h> via <curses.h>
+   and they clash with "bfd.h"'s definiton of true/false.  The correct
+   fix is to remove true/false from "bfd.h", however, until that
+   happens, hack around it by including "config.h" and <curses.h>
+   first.  */
+
+#include "config.h"
+#ifdef HAVE_NCURSES_H       
+#include <ncurses.h>
+#else
+#ifdef HAVE_CURSES_H
+#include <curses.h>
+#endif
+#endif
 
 #include "defs.h"
 #include "tui.h"
 #include "gdbtypes.h"
 #include "gdbcmd.h"
 #include "frame.h"
+#include "regcache.h"
 #include "inferior.h"
 #include "target.h"
 #include "tuiLayout.h"
 #include "tuiWin.h"
-
+#include "tuiDataWin.h"
+#include "tuiGeneralWin.h"
+#include "tui-file.h"
 
 /*****************************************
 ** LOCAL DEFINITIONS                    **
@@ -30,9 +66,9 @@
 #define SINGLE_FLOAT_LABEL_FMT      "%6.6s: "
 #define SINGLE_FLOAT_VALUE_WIDTH    25 /* min of 8 but may be in sci notation */
 
-#define SINGLE_LABEL_WIDTH    10
+#define SINGLE_LABEL_WIDTH    16
 #define SINGLE_LABEL_FMT      "%10.10s: "
-#define SINGLE_VALUE_WIDTH    14       /* minimum of 8 but may be in sci notation */
+#define SINGLE_VALUE_WIDTH    20 /* minimum of 8 but may be in sci notation */
 
 /* In the code HP gave Cygnus, this was actually a function call to a
    PA-specific function, which was supposed to determine whether the
 ** STATIC LOCAL FUNCTIONS FORWARD DECLS    **
 ******************************************/
 static TuiStatus _tuiSetRegsContent
-  PARAMS ((int, int, struct frame_info *,
-          TuiRegisterDisplayType, int));
-static char *_tuiRegisterName PARAMS ((int));
-static TuiStatus _tuiGetRegisterRawValue
-  PARAMS ((int, char *, struct frame_info *));
+  (int, int, struct frame_info *, TuiRegisterDisplayType, int);
+static const char *_tuiRegisterName (int);
+static TuiStatus _tuiGetRegisterRawValue (int, char *, struct frame_info *);
 static void _tuiSetRegisterElement
-  PARAMS ((int, struct frame_info *,
-          TuiDataElementPtr, int));
-static void _tuiDisplayRegister
-  PARAMS ((int, TuiGenWinInfoPtr, enum precision_type));
+  (int, struct frame_info *, TuiDataElementPtr, int);
+static void _tuiDisplayRegister (int, TuiGenWinInfoPtr, enum precision_type);
 static void _tuiRegisterFormat
-  PARAMS ((char *, int, int, TuiDataElementPtr,
-          enum precision_type));
-static TuiStatus _tuiSetGeneralRegsContent PARAMS ((int));
-static TuiStatus _tuiSetSpecialRegsContent PARAMS ((int));
-static TuiStatus _tuiSetGeneralAndSpecialRegsContent PARAMS ((int));
-static TuiStatus _tuiSetFloatRegsContent PARAMS ((TuiRegisterDisplayType, int));
+  (char *, int, int, TuiDataElementPtr, enum precision_type);
+static TuiStatus _tuiSetGeneralRegsContent (int);
+static TuiStatus _tuiSetSpecialRegsContent (int);
+static TuiStatus _tuiSetGeneralAndSpecialRegsContent (int);
+static TuiStatus _tuiSetFloatRegsContent (TuiRegisterDisplayType, int);
 static int _tuiRegValueHasChanged
-  PARAMS ((TuiDataElementPtr, struct frame_info *,
-          char *));
-static void _tuiShowFloat_command PARAMS ((char *, int));
-static void _tuiShowGeneral_command PARAMS ((char *, int));
-static void _tuiShowSpecial_command PARAMS ((char *, int));
-static void _tui_vShowRegisters_commandSupport PARAMS ((va_list));
-static void _tuiToggleFloatRegs_command PARAMS ((char *, int));
-static void _tuiScrollRegsForward_command PARAMS ((char *, int));
-static void _tuiScrollRegsBackward_command PARAMS ((char *, int));
-static void _tui_vShowRegisters_commandSupport PARAMS ((va_list));
+  (TuiDataElementPtr, struct frame_info *, char *);
+static void _tuiShowFloat_command (char *, int);
+static void _tuiShowGeneral_command (char *, int);
+static void _tuiShowSpecial_command (char *, int);
+static void _tui_vShowRegisters_commandSupport (TuiRegisterDisplayType);
+static void _tuiToggleFloatRegs_command (char *, int);
+static void _tuiScrollRegsForward_command (char *, int);
+static void _tuiScrollRegsBackward_command (char *, int);
 
 
 
@@ -91,11 +120,7 @@ static void _tui_vShowRegisters_commandSupport PARAMS ((va_list));
    **        If there are no registers (-1) is returned.
  */
 int
-#ifdef __STDC__
 tuiLastRegsLineNo (void)
-#else
-tuiLastRegsLineNo ()
-#endif
 {
   register int numLines = (-1);
 
@@ -118,13 +143,7 @@ tuiLastRegsLineNo ()
    **        there are, -1 is returned.
  */
 int
-#ifdef __STDC__
-tuiLineFromRegElementNo (
-                         int elementNo)
-#else
-tuiLineFromRegElementNo (elementNo)
-     int elementNo;
-#endif
+tuiLineFromRegElementNo (int elementNo)
 {
   if (elementNo < dataWin->detail.dataDisplayInfo.regsContentCount)
     {
@@ -153,13 +172,7 @@ tuiLineFromRegElementNo (elementNo)
    **        past the register area (-1) is returned.
  */
 int
-#ifdef __STDC__
-tuiFirstRegElementNoInLine (
-                            int lineNo)
-#else
-tuiFirstRegElementNoInLine (lineNo)
-     int lineNo;
-#endif
+tuiFirstRegElementNoInLine (int lineNo)
 {
   if ((lineNo * dataWin->detail.dataDisplayInfo.regsColumnCount)
       <= dataWin->detail.dataDisplayInfo.regsContentCount)
@@ -177,13 +190,7 @@ tuiFirstRegElementNoInLine (lineNo)
    **        the register area (-1) is returned.
  */
 int
-#ifdef __STDC__
-tuiLastRegElementNoInLine (
-                           int lineNo)
-#else
-tuiLastRegElementNoInLine (lineNo)
-     int lineNo;
-#endif
+tuiLastRegElementNoInLine (int lineNo)
 {
   if ((lineNo * dataWin->detail.dataDisplayInfo.regsColumnCount) <=
       dataWin->detail.dataDisplayInfo.regsContentCount)
@@ -200,13 +207,7 @@ tuiLastRegElementNoInLine (lineNo)
    **        the registers.
  */
 int
-#ifdef __STDC__
-tuiCalculateRegsColumnCount (
-                             TuiRegisterDisplayType dpyType)
-#else
-tuiCalculateRegsColumnCount (dpyType)
-     TuiRegisterDisplayType dpyType;
-#endif
+tuiCalculateRegsColumnCount (TuiRegisterDisplayType dpyType)
 {
   int colCount, colWidth;
 
@@ -232,13 +233,7 @@ tuiCalculateRegsColumnCount (dpyType)
    **        cleared.  What registers are displayed is dependent upon dpyType.
  */
 void
-#ifdef __STDC__
-tuiShowRegisters (
-                  TuiRegisterDisplayType dpyType)
-#else
-tuiShowRegisters (dpyType)
-     TuiRegisterDisplayType dpyType;
-#endif
+tuiShowRegisters (TuiRegisterDisplayType dpyType)
 {
   TuiStatus ret = TUI_FAILURE;
   int refreshValuesOnly = FALSE;
@@ -311,19 +306,13 @@ tuiShowRegisters (dpyType)
    **        the end of the registers is done here.
  */
 void
-#ifdef __STDC__
-tuiDisplayRegistersFrom (
-                         int startElementNo)
-#else
-tuiDisplayRegistersFrom (startElementNo)
-     int startElementNo;
-#endif
+tuiDisplayRegistersFrom (int startElementNo)
 {
   if (dataWin->detail.dataDisplayInfo.regsContent != (TuiWinContent) NULL &&
       dataWin->detail.dataDisplayInfo.regsContentCount > 0)
     {
       register int i = startElementNo;
-      int j, valueCharsWide, charsWide, itemWinWidth, curY, labelWidth;
+      int j, valueCharsWide, itemWinWidth, curY, labelWidth;
       enum precision_type precision;
 
       precision = (dataWin->detail.dataDisplayInfo.regsDisplayType
@@ -377,7 +366,10 @@ tuiDisplayRegistersFrom (startElementNo)
                  dataItemWin->origin.x = (itemWinWidth * j) + 1;
                  dataItemWin->origin.y = curY;
                  makeWindow (dataItemWin, DONT_BOX_WINDOW);
+                  scrollok (dataItemWin->handle, FALSE);
                }
+              touchwin (dataItemWin->handle);
+
              /*
                 ** Get the printable representation of the register
                 ** and display it
@@ -403,15 +395,7 @@ tuiDisplayRegistersFrom (startElementNo)
    **        of the register display.
  */
 void
-#ifdef __STDC__
-tuiDisplayRegElementAtLine (
-                            int startElementNo,
-                            int startLineNo)
-#else
-tuiDisplayRegElementAtLine (startElementNo, startLineNo)
-     int startElementNo;
-     int startLineNo;
-#endif
+tuiDisplayRegElementAtLine (int startElementNo, int startLineNo)
 {
   if (dataWin->detail.dataDisplayInfo.regsContent != (TuiWinContent) NULL &&
       dataWin->detail.dataDisplayInfo.regsContentCount > 0)
@@ -450,18 +434,8 @@ tuiDisplayRegElementAtLine (startElementNo, startLineNo)
    **        actually started from.  If nothing is displayed (-1) is returned.
  */
 int
-#ifdef __STDC__
-tuiDisplayRegistersFromLine (
-                             int lineNo,
-                             int forceDisplay)
-#else
-tuiDisplayRegistersFromLine (lineNo, forceDisplay)
-     int lineNo;
-     int forceDisplay;
-#endif
+tuiDisplayRegistersFromLine (int lineNo, int forceDisplay)
 {
-  int elementNo;
-
   if (dataWin->detail.dataDisplayInfo.regsContentCount > 0)
     {
       int line, elementNo;
@@ -505,13 +479,7 @@ tuiDisplayRegistersFromLine (lineNo, forceDisplay)
    **        they are updated with the new value and highlighted.
  */
 void
-#ifdef __STDC__
-tuiCheckRegisterValues (
-                        struct frame_info *frame)
-#else
-tuiCheckRegisterValues (frame)
-     struct frame_info *frame;
-#endif
+tuiCheckRegisterValues (struct frame_info *frame)
 {
   if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible)
     {
@@ -521,7 +489,7 @@ tuiCheckRegisterValues (frame)
       else
        {
          int i, j;
-         char rawBuf[MAX_REGISTER_RAW_SIZE];
+         char rawBuf[MAX_REGISTER_SIZE];
 
          for (i = 0;
               (i < dataWin->detail.dataDisplayInfo.regsContentCount); i++)
@@ -539,7 +507,10 @@ tuiCheckRegisterValues (frame)
                _tuiRegValueHasChanged (dataElementPtr, frame, &rawBuf[0]);
              if (dataElementPtr->highlight)
                {
-                 for (j = 0; j < MAX_REGISTER_RAW_SIZE; j++)
+                  int size;
+
+                  size = REGISTER_RAW_SIZE (dataElementPtr->itemNo);
+                 for (j = 0; j < size; j++)
                    ((char *) dataElementPtr->value)[j] = rawBuf[j];
                  _tuiDisplayRegister (
                                        dataElementPtr->itemNo,
@@ -569,11 +540,7 @@ tuiCheckRegisterValues (frame)
    ** tuiToggleFloatRegs().
  */
 void
-#ifdef __STDC__
 tuiToggleFloatRegs (void)
-#else
-tuiToggleFloatRegs ()
-#endif
 {
   TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
 
@@ -592,9 +559,9 @@ tuiToggleFloatRegs ()
 
 
 void
-_initialize_tuiRegs ()
+_initialize_tuiRegs (void)
 {
-  if (tui_version && xdb_commands)
+  if (xdb_commands)
     {
       add_com ("fr", class_tui, _tuiShowFloat_command,
               "Display only floating point registers\n");
@@ -615,9 +582,7 @@ _initialize_tuiRegs ()
 registers.\n",
               &togglelist);
     }
-
-  return;
-}                              /* _initialize_tuiRegs */
+}
 
 
 /*****************************************
@@ -629,21 +594,20 @@ registers.\n",
    ** _tuiRegisterName().
    **        Return the register name.
  */
-static char *
-#ifdef __STDC__
-_tuiRegisterName (
-                  int regNum)
-#else
-_tuiRegisterName (regNum)
-     int regNum;
-#endif
+static const char *
+_tuiRegisterName (int regNum)
 {
-  if (reg_names[regNum] != (char *) NULL && *(reg_names[regNum]) != (char) 0)
-    return reg_names[regNum];
-  else
-    return ((char *) NULL);
-}                              /* tuiGetRegisterName */
+  return REGISTER_NAME (regNum);
+}
+extern int pagination_enabled;
 
+static void
+tui_restore_gdbout (void *ui)
+{
+  ui_file_delete (gdb_stdout);
+  gdb_stdout = (struct ui_file*) ui;
+  pagination_enabled = 1;
+}
 
 /*
    ** _tuiRegisterFormat
@@ -651,33 +615,58 @@ _tuiRegisterName (regNum)
    **        suitable for printing or display
  */
 static void
-#ifdef __STDC__
-_tuiRegisterFormat (
-                    char *buf,
-                    int bufLen,
-                    int regNum,
-                    TuiDataElementPtr dataElement,
-                    enum precision_type precision)
-#else
-_tuiRegisterFormat (buf, bufLen, regNum, dataElement, precision)
-     char *buf;
-     int bufLen;
-     int regNum;
-     TuiDataElementPtr dataElement;
-     enum precision_type precision;
-#endif
+_tuiRegisterFormat (char *buf, int bufLen, int regNum,
+                    TuiDataElementPtr dataElement,
+                    enum precision_type precision)
 {
-  char tmpBuf[15];
-  char *fmt;
   struct ui_file *stream;
-
+  struct ui_file *old_stdout;
+  const char *name;
+  struct cleanup *cleanups;
+  char *p;
+  int pos;
+
+  name = REGISTER_NAME (regNum);
+  if (name == 0)
+    {
+      strcpy (buf, "");
+      return;
+    }
+  
+  pagination_enabled = 0;
+  old_stdout = gdb_stdout;
   stream = tui_sfileopen (bufLen);
-  pa_do_strcat_registers_info (regNum, 0, stream, precision);
-  strcpy (buf, tui_file_get_strbuf (stream));
-  ui_file_delete (stream);
+  gdb_stdout = stream;
+  cleanups = make_cleanup (tui_restore_gdbout, (void*) old_stdout);
+  gdbarch_print_registers_info (current_gdbarch, stream, deprecated_selected_frame,
+                                regNum, 1);
+
+  /* Save formatted output in the buffer.  */
+  p = tui_file_get_strbuf (stream);
+  pos = 0;
+  while (*p && *p == *name++ && bufLen)
+    {
+      *buf++ = *p++;
+      bufLen--;
+      pos++;
+    }
+  while (*p == ' ')
+    p++;
+  while (pos < 8 && bufLen)
+    {
+      *buf++ = ' ';
+      bufLen--;
+      pos++;
+    }
+  strncpy (buf, p, bufLen);
 
-  return;
-}                              /* _tuiRegisterFormat */
+  /* Remove the possible \n.  */
+  p = strchr (buf, '\n');
+  if (p)
+    *p = 0;
+
+  do_cleanups (cleanups);
+}
 
 
 #define NUM_GENERAL_REGS    32
@@ -686,50 +675,37 @@ _tuiRegisterFormat (buf, bufLen, regNum, dataElement, precision)
    **      Set the content of the data window to consist of the general registers.
  */
 static TuiStatus
-#ifdef __STDC__
-_tuiSetGeneralRegsContent (
-                           int refreshValuesOnly)
-#else
-_tuiSetGeneralRegsContent (refreshValuesOnly)
-     int refreshValuesOnly;
-#endif
+_tuiSetGeneralRegsContent (int refreshValuesOnly)
 {
   return (_tuiSetRegsContent (0,
                              NUM_GENERAL_REGS - 1,
-                             selected_frame,
+                             deprecated_selected_frame,
                              TUI_GENERAL_REGS,
                              refreshValuesOnly));
 
 }                              /* _tuiSetGeneralRegsContent */
 
 
+#ifndef PCOQ_HEAD_REGNUM
+#define START_SPECIAL_REGS  0
+#else
 #define START_SPECIAL_REGS    PCOQ_HEAD_REGNUM
+#endif
+
 /*
    ** _tuiSetSpecialRegsContent().
    **      Set the content of the data window to consist of the special registers.
  */
 static TuiStatus
-#ifdef __STDC__
-_tuiSetSpecialRegsContent (
-                           int refreshValuesOnly)
-#else
-_tuiSetSpecialRegsContent (refreshValuesOnly)
-     int refreshValuesOnly;
-#endif
+_tuiSetSpecialRegsContent (int refreshValuesOnly)
 {
   TuiStatus ret = TUI_FAILURE;
-  int i, endRegNum;
+  int endRegNum;
 
   endRegNum = FP0_REGNUM - 1;
-#if 0
-  endRegNum = (-1);
-  for (i = START_SPECIAL_REGS; (i < ARCH_NUM_REGS && endRegNum < 0); i++)
-    if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT)
-      endRegNum = i - 1;
-#endif
   ret = _tuiSetRegsContent (START_SPECIAL_REGS,
                            endRegNum,
-                           selected_frame,
+                           deprecated_selected_frame,
                            TUI_SPECIAL_REGS,
                            refreshValuesOnly);
 
@@ -742,26 +718,14 @@ _tuiSetSpecialRegsContent (refreshValuesOnly)
    **      Set the content of the data window to consist of the special registers.
  */
 static TuiStatus
-#ifdef __STDC__
-_tuiSetGeneralAndSpecialRegsContent (
-                                     int refreshValuesOnly)
-#else
-_tuiSetGeneralAndSpecialRegsContent (refreshValuesOnly)
-     int refreshValuesOnly;
-#endif
+_tuiSetGeneralAndSpecialRegsContent (int refreshValuesOnly)
 {
   TuiStatus ret = TUI_FAILURE;
-  int i, endRegNum = (-1);
+  int endRegNum = (-1);
 
   endRegNum = FP0_REGNUM - 1;
-#if 0
-  endRegNum = (-1);
-  for (i = 0; (i < ARCH_NUM_REGS && endRegNum < 0); i++)
-    if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT)
-      endRegNum = i - 1;
-#endif
   ret = _tuiSetRegsContent (
-        0, endRegNum, selected_frame, TUI_SPECIAL_REGS, refreshValuesOnly);
+        0, endRegNum, deprecated_selected_frame, TUI_SPECIAL_REGS, refreshValuesOnly);
 
   return ret;
 }                              /* _tuiSetGeneralAndSpecialRegsContent */
@@ -771,29 +735,15 @@ _tuiSetGeneralAndSpecialRegsContent (refreshValuesOnly)
    **        Set the content of the data window to consist of the float registers.
  */
 static TuiStatus
-#ifdef __STDC__
-_tuiSetFloatRegsContent (
-                         TuiRegisterDisplayType dpyType,
-                         int refreshValuesOnly)
-#else
-_tuiSetFloatRegsContent (dpyType, refreshValuesOnly)
-     TuiRegisterDisplayType dpyType;
-     int refreshValuesOnly;
-#endif
+_tuiSetFloatRegsContent (TuiRegisterDisplayType dpyType, int refreshValuesOnly)
 {
   TuiStatus ret = TUI_FAILURE;
-  int i, startRegNum;
+  int startRegNum;
 
   startRegNum = FP0_REGNUM;
-#if 0
-  startRegNum = (-1);
-  for (i = ARCH_NUM_REGS - 1; (i >= 0 && startRegNum < 0); i--)
-    if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) != TYPE_CODE_FLT)
-      startRegNum = i + 1;
-#endif
   ret = _tuiSetRegsContent (startRegNum,
-                           ARCH_NUM_REGS - 1,
-                           selected_frame,
+                           NUM_REGS - 1,
+                           deprecated_selected_frame,
                            dpyType,
                            refreshValuesOnly);
 
@@ -807,34 +757,28 @@ _tuiSetFloatRegsContent (dpyType, refreshValuesOnly)
    **        If TRUE, newValue is filled in with the new value.
  */
 static int
-#ifdef __STDC__
-_tuiRegValueHasChanged (
-                        TuiDataElementPtr dataElement,
-                        struct frame_info *frame,
-                        char *newValue)
-#else
-_tuiRegValueHasChanged (dataElement, frame, newValue)
-     TuiDataElementPtr dataElement;
-     struct frame_info *frame;
-     char *newValue;
-#endif
+_tuiRegValueHasChanged (TuiDataElementPtr dataElement,
+                        struct frame_info *frame,
+                        char *newValue)
 {
   int hasChanged = FALSE;
 
   if (dataElement->itemNo != UNDEFINED_ITEM &&
       _tuiRegisterName (dataElement->itemNo) != (char *) NULL)
     {
-      char rawBuf[MAX_REGISTER_RAW_SIZE];
+      char rawBuf[MAX_REGISTER_SIZE];
       int i;
 
       if (_tuiGetRegisterRawValue (
                         dataElement->itemNo, rawBuf, frame) == TUI_SUCCESS)
        {
-         for (i = 0; (i < MAX_REGISTER_RAW_SIZE && !hasChanged); i++)
+          int size = REGISTER_RAW_SIZE (dataElement->itemNo);
+          
+         for (i = 0; (i < size && !hasChanged); i++)
            hasChanged = (((char *) dataElement->value)[i] != rawBuf[i]);
          if (hasChanged && newValue != (char *) NULL)
            {
-             for (i = 0; (i < MAX_REGISTER_RAW_SIZE); i++)
+             for (i = 0; i < size; i++)
                newValue[i] = rawBuf[i];
            }
        }
@@ -849,26 +793,19 @@ _tuiRegValueHasChanged (dataElement, frame, newValue)
    **        Get the register raw value.  The raw value is returned in regValue.
  */
 static TuiStatus
-#ifdef __STDC__
-_tuiGetRegisterRawValue (
-                         int regNum,
-                         char *regValue,
-                         struct frame_info *frame)
-#else
-_tuiGetRegisterRawValue (regNum, regValue, frame)
-     int regNum;
-     char *regValue;
-     struct frame_info *frame;
-#endif
+_tuiGetRegisterRawValue (int regNum, char *regValue, struct frame_info *frame)
 {
   TuiStatus ret = TUI_FAILURE;
 
   if (target_has_registers)
     {
-      read_relative_register_raw_bytes_for_frame (regNum, regValue, frame);
-      ret = TUI_SUCCESS;
+      frame_read_register (frame, regNum, regValue);
+      /* NOTE: cagney/2003-03-13: This is bogus.  It is refering to
+         the register cache and not the frame which could have pulled
+         the register value off the stack.  */
+      if (register_cached (regNum) >= 0)
+       ret = TUI_SUCCESS;
     }
-
   return ret;
 }                              /* _tuiGetRegisterRawValue */
 
@@ -880,19 +817,9 @@ _tuiGetRegisterRawValue (regNum, regValue, frame)
    **       the register value.
  */
 static void
-#ifdef __STDC__
-_tuiSetRegisterElement (
-                        int regNum,
-                        struct frame_info *frame,
-                        TuiDataElementPtr dataElement,
-                        int refreshValueOnly)
-#else
-_tuiSetRegisterElement (regNum, frame, dataElement, refreshValueOnly)
-     int regNum;
-     struct frame_info *frame;
-     TuiDataElementPtr dataElement;
-     int refreshValueOnly;
-#endif
+_tuiSetRegisterElement (int regNum, struct frame_info *frame,
+                        TuiDataElementPtr dataElement,
+                        int refreshValueOnly)
 {
   if (dataElement != (TuiDataElementPtr) NULL)
     {
@@ -903,7 +830,7 @@ _tuiSetRegisterElement (regNum, frame, dataElement, refreshValueOnly)
          dataElement->highlight = FALSE;
        }
       if (dataElement->value == (Opaque) NULL)
-       dataElement->value = (Opaque) xmalloc (MAX_REGISTER_RAW_SIZE);
+       dataElement->value = (Opaque) xmalloc (MAX_REGISTER_SIZE);
       if (dataElement->value != (Opaque) NULL)
        _tuiGetRegisterRawValue (regNum, dataElement->value, frame);
     }
@@ -919,21 +846,10 @@ _tuiSetRegisterElement (regNum, frame, dataElement, refreshValueOnly)
    **        refreshValuesOnly is TRUE, startRegNum and endRegNum are ignored.
  */
 static TuiStatus
-#ifdef __STDC__
-_tuiSetRegsContent (
-                    int startRegNum,
-                    int endRegNum,
-                    struct frame_info *frame,
-                    TuiRegisterDisplayType dpyType,
-                    int refreshValuesOnly)
-#else
-_tuiSetRegsContent (startRegNum, endRegNum, frame, dpyType, refreshValuesOnly)
-     int startRegNum;
-     int endRegNum;
-     struct frame_info *frame;
-     TuiRegisterDisplayType dpyType;
-     int refreshValuesOnly;
-#endif
+_tuiSetRegsContent (int startRegNum, int endRegNum,
+                    struct frame_info *frame,
+                    TuiRegisterDisplayType dpyType,
+                    int refreshValuesOnly)
 {
   TuiStatus ret = TUI_FAILURE;
   int numRegs = endRegNum - startRegNum + 1;
@@ -1007,21 +923,14 @@ _tuiSetRegsContent (startRegNum, endRegNum, frame, dpyType, refreshValuesOnly)
    **        than the value will be displayed in reverse video
  */
 static void
-#ifdef __STDC__
-_tuiDisplayRegister (
-                     int regNum,
-                     TuiGenWinInfoPtr winInfo,         /* the data item window */
-                     enum precision_type precision)
-#else
-_tuiDisplayRegister (regNum, winInfo, precision)
-     int regNum;
-     TuiGenWinInfoPtr winInfo; /* the data item window */
-     enum precision_type precision;
-#endif
+_tuiDisplayRegister (int regNum,
+                     TuiGenWinInfoPtr winInfo,         /* the data item window */
+                     enum precision_type precision)
 {
   if (winInfo->handle != (WINDOW *) NULL)
     {
-      char buf[100];
+      int i;
+      char buf[40];
       int valueCharsWide, labelWidth;
       TuiDataElementPtr dataElementPtr = &((TuiWinContent)
                                    winInfo->content)[0]->whichElement.data;
@@ -1053,10 +962,13 @@ _tuiDisplayRegister (regNum, winInfo, precision)
                          regNum,
                          dataElementPtr,
                          precision);
+
       if (dataElementPtr->highlight)
        wstandout (winInfo->handle);
 
-      werase (winInfo->handle);
+      wmove (winInfo->handle, 0, 0);
+      for (i = 1; i < winInfo->width; i++)
+        waddch (winInfo->handle, ' ');
       wmove (winInfo->handle, 0, 0);
       waddstr (winInfo->handle, buf);
 
@@ -1069,15 +981,8 @@ _tuiDisplayRegister (regNum, winInfo, precision)
 
 
 static void
-#ifdef __STDC__
-_tui_vShowRegisters_commandSupport (
-                                    va_list args)
-#else
-_tui_vShowRegisters_commandSupport (args)
-     va_list args;
-#endif
+_tui_vShowRegisters_commandSupport (TuiRegisterDisplayType dpyType)
 {
-  TuiRegisterDisplayType dpyType = va_arg (args, TuiRegisterDisplayType);
 
   if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible)
     {                          /* Data window already displayed, show the registers */
@@ -1092,75 +997,36 @@ _tui_vShowRegisters_commandSupport (args)
 
 
 static void
-#ifdef __STDC__
-_tuiShowFloat_command (
-                       char *arg,
-                       int fromTTY)
-#else
-_tuiShowFloat_command (arg, fromTTY)
-     char *arg;
-     int fromTTY;
-#endif
+_tuiShowFloat_command (char *arg, int fromTTY)
 {
   if (m_winPtrIsNull (dataWin) || !dataWin->generic.isVisible ||
       (dataWin->detail.dataDisplayInfo.regsDisplayType != TUI_SFLOAT_REGS &&
        dataWin->detail.dataDisplayInfo.regsDisplayType != TUI_DFLOAT_REGS))
-    tuiDo ((TuiOpaqueFuncPtr) _tui_vShowRegisters_commandSupport,
-          (tuiLayoutDef ())->floatRegsDisplayType);
+    _tui_vShowRegisters_commandSupport ((tuiLayoutDef ())->floatRegsDisplayType);
 
   return;
 }                              /* _tuiShowFloat_command */
 
 
 static void
-#ifdef __STDC__
-_tuiShowGeneral_command (
-                         char *arg,
-                         int fromTTY)
-#else
-_tuiShowGeneral_command (arg, fromTTY)
-     char *arg;
-     int fromTTY;
-#endif
+_tuiShowGeneral_command (char *arg, int fromTTY)
 {
-  tuiDo ((TuiOpaqueFuncPtr) _tui_vShowRegisters_commandSupport,
-        TUI_GENERAL_REGS);
-
-  return;
-}                              /* _tuiShowGeneral_command */
+  _tui_vShowRegisters_commandSupport (TUI_GENERAL_REGS);
+}
 
 
 static void
-#ifdef __STDC__
-_tuiShowSpecial_command (
-                         char *arg,
-                         int fromTTY)
-#else
-_tuiShowSpecial_command (arg, fromTTY)
-     char *arg;
-     int fromTTY;
-#endif
+_tuiShowSpecial_command (char *arg, int fromTTY)
 {
-  tuiDo ((TuiOpaqueFuncPtr) _tui_vShowRegisters_commandSupport,
-        TUI_SPECIAL_REGS);
-
-  return;
-}                              /* _tuiShowSpecial_command */
+  _tui_vShowRegisters_commandSupport (TUI_SPECIAL_REGS);
+}
 
 
 static void
-#ifdef __STDC__
-_tuiToggleFloatRegs_command (
-                             char *arg,
-                             int fromTTY)
-#else
-_tuiToggleFloatRegs_command (arg, fromTTY)
-     char *arg;
-     int fromTTY;
-#endif
+_tuiToggleFloatRegs_command (char *arg, int fromTTY)
 {
   if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible)
-    tuiDo ((TuiOpaqueFuncPtr) tuiToggleFloatRegs);
+    tuiToggleFloatRegs ();
   else
     {
       TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
@@ -1177,34 +1043,14 @@ _tuiToggleFloatRegs_command (arg, fromTTY)
 
 
 static void
-#ifdef __STDC__
-_tuiScrollRegsForward_command (
-                               char *arg,
-                               int fromTTY)
-#else
-_tuiScrollRegsForward_command (arg, fromTTY)
-     char *arg;
-     int fromTTY;
-#endif
+_tuiScrollRegsForward_command (char *arg, int fromTTY)
 {
-  tuiDo ((TuiOpaqueFuncPtr) tui_vScroll, FORWARD_SCROLL, dataWin, 1);
-
-  return;
-}                              /* _tuiScrollRegsForward_command */
+  tui_scroll (FORWARD_SCROLL, dataWin, 1);
+}
 
 
 static void
-#ifdef __STDC__
-_tuiScrollRegsBackward_command (
-                                char *arg,
-                                int fromTTY)
-#else
-_tuiScrollRegsBackward_command (arg, fromTTY)
-     char *arg;
-     int fromTTY;
-#endif
+_tuiScrollRegsBackward_command (char *arg, int fromTTY)
 {
-  tuiDo ((TuiOpaqueFuncPtr) tui_vScroll, BACKWARD_SCROLL, dataWin, 1);
-
-  return;
-}                              /* _tuiScrollRegsBackward_command */
+  tui_scroll (BACKWARD_SCROLL, dataWin, 1);
+}
This page took 0.032846 seconds and 4 git commands to generate.