* gdb.c++/pr-1210.cc: New file.
[deliverable/binutils-gdb.git] / gdb / tui / tuiRegs.c
index b78b9bc873cd62914cbedf8834f25a1516279299..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);
 
 
 
@@ -86,16 +115,12 @@ static void _tui_vShowRegisters_commandSupport PARAMS ((va_list));
 ******************************************/
 
 /*
-** tuiLastRegsLineNo()
-**        Answer the number of the last line in the regs display.
-**        If there are no registers (-1) is returned.
-*/
+   ** tuiLastRegsLineNo()
+   **        Answer the number of the last line in the regs display.
+   **        If there are no registers (-1) is returned.
+ */
 int
-#ifdef __STDC__
 tuiLastRegsLineNo (void)
-#else
-tuiLastRegsLineNo ()
-#endif
 {
   register int numLines = (-1);
 
@@ -112,19 +137,13 @@ tuiLastRegsLineNo ()
 
 
 /*
-** tuiLineFromRegElementNo()
-**        Answer the line number that the register element at elementNo is
-**        on.  If elementNo is greater than the number of register elements
-**        there are, -1 is returned.
-*/
+   ** tuiLineFromRegElementNo()
+   **        Answer the line number that the register element at elementNo is
+   **        on.  If elementNo is greater than the number of register elements
+   **        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)
     {
@@ -148,18 +167,12 @@ tuiLineFromRegElementNo (elementNo)
 
 
 /*
-** tuiFirstRegElementNoInLine()
-**        Answer the index of the first element in lineNo.  If lineNo is
-**        past the register area (-1) is returned.
-*/
+   ** tuiFirstRegElementNoInLine()
+   **        Answer the index of the first element in lineNo.  If lineNo is
+   **        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)
@@ -172,18 +185,12 @@ tuiFirstRegElementNoInLine (lineNo)
 
 
 /*
-** tuiLastRegElementNoInLine()
-**        Answer the index of the last element in lineNo.  If lineNo is past
-**        the register area (-1) is returned.
-*/
+   ** tuiLastRegElementNoInLine()
+   **        Answer the index of the last element in lineNo.  If lineNo is past
+   **        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)
@@ -195,18 +202,12 @@ tuiLastRegElementNoInLine (lineNo)
 
 
 /*
-** tuiCalculateRegsColumnCount
-**        Calculate the number of columns that should be used to display
-**        the registers.
-*/
+   ** tuiCalculateRegsColumnCount
+   **        Calculate the number of columns that should be used to display
+   **        the registers.
+ */
 int
-#ifdef __STDC__
-tuiCalculateRegsColumnCount (
-                             TuiRegisterDisplayType dpyType)
-#else
-tuiCalculateRegsColumnCount (dpyType)
-     TuiRegisterDisplayType dpyType;
-#endif
+tuiCalculateRegsColumnCount (TuiRegisterDisplayType dpyType)
 {
   int colCount, colWidth;
 
@@ -226,19 +227,13 @@ tuiCalculateRegsColumnCount (dpyType)
 
 
 /*
-** tuiShowRegisters().
-**        Show the registers int the data window as indicated by dpyType.
-**        If there is any other registers being displayed, then they are
-**        cleared.  What registers are displayed is dependent upon dpyType.
-*/
+   ** tuiShowRegisters().
+   **        Show the registers int the data window as indicated by dpyType.
+   **        If there is any other registers being displayed, then they are
+   **        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;
@@ -304,26 +299,20 @@ tuiShowRegisters (dpyType)
 
 
 /*
-** tuiDisplayRegistersFrom().
-**        Function to display the registers in the content from
-**        'startElementNo' until the end of the register content or the
-**        end of the display height.  No checking for displaying past
-**        the end of the registers is done here.
-*/
+   ** tuiDisplayRegistersFrom().
+   **        Function to display the registers in the content from
+   **        'startElementNo' until the end of the register content or the
+   **        end of the display height.  No checking for displaying past
+   **        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
@@ -351,8 +340,8 @@ tuiDisplayRegistersFrom (startElementNo)
        }
       itemWinWidth = valueCharsWide + labelWidth;
       /*
-        ** Now create each data "sub" window, and write the display into it.
-        */
+         ** Now create each data "sub" window, and write the display into it.
+       */
       curY = 1;
       while (i < dataWin->detail.dataDisplayInfo.regsContentCount &&
             curY <= dataWin->generic.viewportHeight)
@@ -364,7 +353,7 @@ tuiDisplayRegistersFrom (startElementNo)
              TuiGenWinInfoPtr dataItemWin;
              TuiDataElementPtr dataElementPtr;
 
-             /* create the window if necessary*/
+             /* create the window if necessary */
              dataItemWin = &dataWin->detail.dataDisplayInfo.
                regsContent[i]->whichElement.dataWindow;
              dataElementPtr = &((TuiWinElementPtr)
@@ -377,11 +366,14 @@ 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
-                */
+                ** Get the printable representation of the register
+                ** and display it
+              */
              _tuiDisplayRegister (
                            dataElementPtr->itemNo, dataItemWin, precision);
              i++;              /* next register */
@@ -395,23 +387,15 @@ tuiDisplayRegistersFrom (startElementNo)
 
 
 /*
-** tuiDisplayRegElementAtLine().
-**        Function to display the registers in the content from
-**        'startElementNo' on 'startLineNo' until the end of the
-**        register content or the end of the display height.
-**        This function checks that we won't display off the end
-**        of the register display.
-*/
+   ** tuiDisplayRegElementAtLine().
+   **        Function to display the registers in the content from
+   **        'startElementNo' on 'startLineNo' until the end of the
+   **        register content or the end of the display height.
+   **        This function checks that we won't display off the end
+   **        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)
@@ -427,10 +411,10 @@ tuiDisplayRegElementAtLine (startElementNo, startLineNo)
          if (firstLineOnLastPage < 0)
            firstLineOnLastPage = 0;
          /*
-            ** If there is no other data displayed except registers,
-            ** and the elementNo causes us to scroll past the end of the
-            ** registers, adjust what element to really start the display at.
-            */
+            ** If there is no other data displayed except registers,
+            ** and the elementNo causes us to scroll past the end of the
+            ** registers, adjust what element to really start the display at.
+          */
          if (dataWin->detail.dataDisplayInfo.dataContentCount <= 0 &&
              startLineNo > firstLineOnLastPage)
            elementNo = tuiFirstRegElementNoInLine (firstLineOnLastPage);
@@ -444,24 +428,14 @@ tuiDisplayRegElementAtLine (startElementNo, startLineNo)
 
 
 /*
-** tuiDisplayRegistersFromLine().
-**        Function to display the registers starting at line lineNo in
-**        the data window.  Answers the line number that the display
-**        actually started from.  If nothing is displayed (-1) is returned.
-*/
+   ** tuiDisplayRegistersFromLine().
+   **        Function to display the registers starting at line lineNo in
+   **        the data window.  Answers the line number that the display
+   **        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;
@@ -470,9 +444,9 @@ tuiDisplayRegistersFromLine (lineNo, forceDisplay)
        line = 0;
       else if (forceDisplay)
        {                       /*
-            ** If we must display regs (forceDisplay is true), then make
-            ** sure that we don't display off the end of the registers.
-            */
+                                  ** If we must display regs (forceDisplay is true), then make
+                                  ** sure that we don't display off the end of the registers.
+                                */
          if (lineNo >= tuiLastRegsLineNo ())
            {
              if ((line = tuiLineFromRegElementNo (
@@ -499,19 +473,13 @@ tuiDisplayRegistersFromLine (lineNo, forceDisplay)
 
 
 /*
-** tuiCheckRegisterValues()
-**        This function check all displayed registers for changes in
-**        values, given a particular frame.  If the values have changed,
-**        they are updated with the new value and highlighted.
-*/
+   ** tuiCheckRegisterValues()
+   **        This function check all displayed registers for changes in
+   **        values, given a particular frame.  If the values have changed,
+   **        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,
@@ -566,14 +537,10 @@ tuiCheckRegisterValues (frame)
 
 
 /*
-** tuiToggleFloatRegs().
-*/
+   ** 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 */
+}
 
 
 /*****************************************
@@ -626,110 +591,121 @@ registers.\n",
 
 
 /*
-** _tuiRegisterName().
-**        Return the register name.
-*/
-static char *
-#ifdef __STDC__
-_tuiRegisterName (
-                  int regNum)
-#else
-_tuiRegisterName (regNum)
-     int regNum;
-#endif
+   ** _tuiRegisterName().
+   **        Return the register name.
+ */
+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
-**        Function to format the register name and value into a buffer,
-**        suitable for printing or display
-*/
+   ** _tuiRegisterFormat
+   **        Function to format the register name and value into a buffer,
+   **        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;
-  GDB_FILE *stream;
+  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);
+  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);
 
-  stream = gdb_file_init_astring(bufLen);
-  pa_do_strcat_registers_info (regNum, 0, stream, precision);
-  strcpy (buf, gdb_file_get_strbuf(stream));
-  gdb_file_deallocate(&stream);
+  /* Remove the possible \n.  */
+  p = strchr (buf, '\n');
+  if (p)
+    *p = 0;
 
-  return;
-}                              /* _tuiRegisterFormat */
+  do_cleanups (cleanups);
+}
 
 
 #define NUM_GENERAL_REGS    32
 /*
-** _tuiSetGeneralRegsContent().
-**      Set the content of the data window to consist of the general registers.
-*/
+   ** _tuiSetGeneralRegsContent().
+   **      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.
-*/
+   ** _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);
 
@@ -738,62 +714,36 @@ _tuiSetSpecialRegsContent (refreshValuesOnly)
 
 
 /*
-** _tuiSetGeneralAndSpecialRegsContent().
-**      Set the content of the data window to consist of the special registers.
-*/
+   ** _tuiSetGeneralAndSpecialRegsContent().
+   **      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 */
 
 /*
-** _tuiSetFloatRegsContent().
-**        Set the content of the data window to consist of the float registers.
-*/
+   ** _tuiSetFloatRegsContent().
+   **        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);
 
@@ -802,39 +752,33 @@ _tuiSetFloatRegsContent (dpyType, refreshValuesOnly)
 
 
 /*
-** _tuiRegValueHasChanged().
-**        Answer TRUE if the register's value has changed, FALSE otherwise.
-**        If TRUE, newValue is filled in with the new value.
-*/
+   ** _tuiRegValueHasChanged().
+   **        Answer TRUE if the register's value has changed, FALSE otherwise.
+   **        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];
            }
        }
@@ -845,54 +789,37 @@ _tuiRegValueHasChanged (dataElement, frame, newValue)
 
 
 /*
-** _tuiGetRegisterRawValue().
-**        Get the register raw value.  The raw value is returned in regValue.
-*/
+   ** _tuiGetRegisterRawValue().
+   **        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 */
 
 
 
 /*
-** _tuiSetRegisterElement().
-**       Function to initialize a data element with the input and
-**       the register value.
-*/
+   ** _tuiSetRegisterElement().
+   **       Function to initialize a data element with the input and
+   **       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);
     }
@@ -913,27 +840,16 @@ _tuiSetRegisterElement (regNum, frame, dataElement, refreshValueOnly)
 
 
 /*
-** _tuiSetRegsContent().
-**        Set the content of the data window to consist of the registers
-**        numbered from startRegNum to endRegNum.  Note that if
-**        refreshValuesOnly is TRUE, startRegNum and endRegNum are ignored.
-*/
+   ** _tuiSetRegsContent().
+   **        Set the content of the data window to consist of the registers
+   **        numbered from startRegNum to endRegNum.  Note that if
+   **        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;
@@ -967,8 +883,8 @@ _tuiSetRegsContent (startRegNum, endRegNum, frame, dpyType, refreshValuesOnly)
          dataWin->detail.dataDisplayInfo.regsContentCount = numRegs;
        }
       /*
-        ** Now set the register names and values
-        */
+         ** Now set the register names and values
+       */
       for (i = startRegNum; (i <= endRegNum); i++)
        {
          TuiGenWinInfoPtr dataItemWin;
@@ -1002,26 +918,19 @@ _tuiSetRegsContent (startRegNum, endRegNum, frame, dpyType, refreshValuesOnly)
 
 
 /*
-** _tuiDisplayRegister().
-**        Function to display a register in a window.  If hilite is TRUE,
-**        than the value will be displayed in reverse video
-*/
+   ** _tuiDisplayRegister().
+   **        Function to display a register in a window.  If hilite is TRUE,
+   **        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.037937 seconds and 4 git commands to generate.