/* TUI display registers in window.
- Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+
+ Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
+ Inc.
+
Contributed by Hewlett-Packard Company.
This file is part of GDB.
#include "gdbtypes.h"
#include "gdbcmd.h"
#include "frame.h"
+#include "regcache.h"
#include "inferior.h"
#include "target.h"
#include "tuiLayout.h"
#include "tuiGeneralWin.h"
#include "tui-file.h"
+#ifdef HAVE_NCURSES_H
+#include <ncurses.h>
+#else
+#ifdef HAVE_CURSES_H
+#include <curses.h>
+#endif
+#endif
+
/*****************************************
** LOCAL DEFINITIONS **
******************************************/
******************************************/
static TuiStatus _tuiSetRegsContent
(int, int, struct frame_info *, TuiRegisterDisplayType, int);
-static char *_tuiRegisterName (int);
+static const char *_tuiRegisterName (int);
static TuiStatus _tuiGetRegisterRawValue (int, char *, struct frame_info *);
static void _tuiSetRegisterElement
(int, struct frame_info *, TuiDataElementPtr, int);
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
makeWindow (dataItemWin, DONT_BOX_WINDOW);
scrollok (dataItemWin->handle, FALSE);
}
+ touchwin (dataItemWin->handle);
+
/*
** Get the printable representation of the register
** and display it
int
tuiDisplayRegistersFromLine (int lineNo, int forceDisplay)
{
- int elementNo;
-
if (dataWin->detail.dataDisplayInfo.regsContentCount > 0)
{
int line, elementNo;
else
{
int i, j;
- char rawBuf[MAX_REGISTER_RAW_SIZE];
+ char rawBuf[MAX_REGISTER_SIZE];
for (i = 0;
(i < dataWin->detail.dataDisplayInfo.regsContentCount); i++)
** _tuiRegisterName().
** Return the register name.
*/
-static char *
+static const char *
_tuiRegisterName (int regNum)
{
return REGISTER_NAME (regNum);
{
struct ui_file *stream;
struct ui_file *old_stdout;
- char *name;
+ const char *name;
struct cleanup *cleanups;
char *p;
+ int pos;
name = REGISTER_NAME (regNum);
if (name == 0)
stream = tui_sfileopen (bufLen);
gdb_stdout = stream;
cleanups = make_cleanup (tui_restore_gdbout, (void*) old_stdout);
- do_registers_info (regNum, 0);
+ gdbarch_print_registers_info (current_gdbarch, stream, deprecated_selected_frame,
+ regNum, 1);
/* Save formatted output in the buffer. */
- strncpy (buf, tui_file_get_strbuf (stream), bufLen);
+ 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);
/* Remove the possible \n. */
p = strchr (buf, '\n');
{
return (_tuiSetRegsContent (0,
NUM_GENERAL_REGS - 1,
- selected_frame,
+ deprecated_selected_frame,
TUI_GENERAL_REGS,
refreshValuesOnly));
_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 < 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);
_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 < 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 (TuiRegisterDisplayType dpyType, int refreshValuesOnly)
{
TuiStatus ret = TUI_FAILURE;
- int i, startRegNum;
+ int startRegNum;
startRegNum = FP0_REGNUM;
-#if 0
- startRegNum = (-1);
- for (i = 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,
NUM_REGS - 1,
- selected_frame,
+ deprecated_selected_frame,
dpyType,
refreshValuesOnly);
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 (
if (target_has_registers)
{
- int opt;
-
- get_saved_register (regValue, &opt, (CORE_ADDR*) NULL, frame,
- regNum, (enum lval_type*) NULL);
+ 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;
}
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);
}