X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ftui%2Ftui-stack.c;h=241a2739b09f5e88bc8bd4791aaa70dcd9d33cde;hb=9b254dd1ce46c19dde1dde5b8d1e22e862dfacce;hp=7fac0471ec2dcdc36dc7cab9d666a98c57874e8c;hpb=f80bda8efddc42d85ad3c5830324afd3e6abd3a8;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c index 7fac0471ec..241a2739b0 100644 --- a/gdb/tui/tui-stack.c +++ b/gdb/tui/tui-stack.c @@ -1,7 +1,7 @@ /* TUI display locator. - Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software - Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008 + Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. @@ -9,7 +9,7 @@ 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 + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -18,9 +18,7 @@ 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. */ + along with this program. If not, see . */ #include "defs.h" #include "symtab.h" @@ -30,7 +28,7 @@ #include "inferior.h" #include "target.h" #include "top.h" - +#include "gdb_string.h" #include "tui/tui.h" #include "tui/tui-data.h" #include "tui/tui-stack.h" @@ -39,42 +37,37 @@ #include "tui/tui-winsource.h" #include "tui/tui-file.h" -#ifdef HAVE_NCURSES_H -#include -#else -#ifdef HAVE_CURSES_H -#include -#endif -#endif +#include "gdb_curses.h" /* Get a printable name for the function at the address. The symbol name is demangled if demangling is turned on. Returns a pointer to a static area holding the result. */ -static char* tui_get_function_from_frame (struct frame_info *fi); +static char *tui_get_function_from_frame (struct frame_info *fi); /* Set the filename portion of the locator. */ static void tui_set_locator_filename (const char *filename); /* Update the locator, with the provided arguments. */ -static void tui_set_locator_info (const char *filename, const char *procname, +static void tui_set_locator_info (const char *filename, + const char *procname, int lineno, CORE_ADDR addr); static void tui_update_command (char *, int); -/* Create the status line to display as much information as we - can on this single line: target name, process number, current - function, current line, current PC, SingleKey mode. */ +/* Create the status line to display as much information as we can on + this single line: target name, process number, current function, + current line, current PC, SingleKey mode. */ static char* -tui_make_status_line (TuiLocatorElement* loc) +tui_make_status_line (struct tui_locator_element *loc) { - char* string; + char *string; char line_buf[50], *pname; - char* buf; + char *buf; int status_size; int i, proc_width; - const char* pid_name; - const char* pc_buf; + const char *pid_name; + const char *pc_buf; int target_width; int pid_width; int line_width; @@ -94,13 +87,13 @@ tui_make_status_line (TuiLocatorElement* loc) if (pid_width > MAX_PID_WIDTH) pid_width = MAX_PID_WIDTH; - status_size = termWidth (); + status_size = tui_term_width (); string = (char *) xmalloc (status_size + 1); buf = (char*) alloca (status_size + 1); /* Translate line number and obtain its size. */ - if (loc->lineNo > 0) - sprintf (line_buf, "%d", loc->lineNo); + if (loc->line_no > 0) + sprintf (line_buf, "%d", loc->line_no); else strcpy (line_buf, "??"); line_width = strlen (line_buf); @@ -109,7 +102,7 @@ tui_make_status_line (TuiLocatorElement* loc) /* Translate PC address. */ pc_out = tui_sfileopen (128); - print_address_numeric (loc->addr, 1, pc_out); + deprecated_print_address_numeric (loc->addr, 1, pc_out); pc_buf = tui_file_get_strbuf (pc_out); pc_width = strlen (pc_buf); @@ -122,7 +115,7 @@ tui_make_status_line (TuiLocatorElement* loc) - (sizeof (PROC_PREFIX) - 1 + 1) - (sizeof (LINE_PREFIX) - 1 + line_width + 1) - (sizeof (PC_PREFIX) - 1 + pc_width + 1) - - (tui_current_key_mode == tui_single_key_mode + - (tui_current_key_mode == TUI_SINGLE_KEY_MODE ? (sizeof (SINGLE_KEY) - 1 + 1) : 0)); @@ -151,13 +144,13 @@ tui_make_status_line (TuiLocatorElement* loc) } } - /* Now convert elements to string form */ - pname = loc->procName; + /* Now convert elements to string form. */ + pname = loc->proc_name; - /* Now create the locator line from the string version - of the elements. We could use sprintf() here but - that wouldn't ensure that we don't overrun the size - of the allocated buffer. strcat_to_buf() will. */ + /* Now create the locator line from the string version of the + elements. We could use sprintf() here but that wouldn't ensure + that we don't overrun the size of the allocated buffer. + strcat_to_buf() will. */ *string = (char) 0; if (target_width > 0) @@ -174,13 +167,13 @@ tui_make_status_line (TuiLocatorElement* loc) } /* Show whether we are in SingleKey mode. */ - if (tui_current_key_mode == tui_single_key_mode) + if (tui_current_key_mode == TUI_SINGLE_KEY_MODE) { strcat_to_buf (string, status_size, SINGLE_KEY); strcat_to_buf (string, status_size, " "); } - /* procedure/class name */ + /* Procedure/class name. */ if (proc_width > 0) { if (strlen (pname) > proc_width) @@ -213,9 +206,9 @@ tui_make_status_line (TuiLocatorElement* loc) return string; } -/* Get a printable name for the function at the address. - The symbol name is demangled if demangling is turned on. - Returns a pointer to a static area holding the result. */ +/* Get a printable name for the function at the address. The symbol + name is demangled if demangling is turned on. Returns a pointer to + a static area holding the result. */ static char* tui_get_function_from_frame (struct frame_info *fi) { @@ -226,9 +219,9 @@ tui_get_function_from_frame (struct frame_info *fi) print_address_symbolic (get_frame_pc (fi), stream, demangle, ""); p = tui_file_get_strbuf (stream); - /* Use simple heuristics to isolate the function name. The symbol can - be demangled and we can have function parameters. Remove them because - the status line is too short to display them. */ + /* Use simple heuristics to isolate the function name. The symbol + can be demangled and we can have function parameters. Remove + them because the status line is too short to display them. */ if (*p == '<') p++; strncpy (name, p, sizeof (name)); @@ -244,31 +237,30 @@ tui_get_function_from_frame (struct frame_info *fi) return name; } -/* tuiShowLocatorContent(). */ void tui_show_locator_content (void) { char *string; - TuiGenWinInfoPtr locator; + struct tui_gen_win_info *locator; - locator = locatorWinInfoPtr (); + locator = tui_locator_win_info_ptr (); - if (m_genWinPtrNotNull (locator) && locator->handle != (WINDOW *) NULL) + if (locator != NULL && locator->handle != (WINDOW *) NULL) { - TuiWinElementPtr element; + struct tui_win_element *element; - element = (TuiWinElementPtr) locator->content[0]; + element = (struct tui_win_element *) locator->content[0]; - string = tui_make_status_line (&element->whichElement.locator); + string = tui_make_status_line (&element->which_element.locator); wmove (locator->handle, 0, 0); wstandout (locator->handle); waddstr (locator->handle, string); wclrtoeol (locator->handle); wstandend (locator->handle); - tuiRefreshWin (locator); + tui_refresh_win (locator); wmove (locator->handle, 0, 0); xfree (string); - locator->contentInUse = TRUE; + locator->content_in_use = TRUE; } } @@ -277,39 +269,41 @@ tui_show_locator_content (void) static void tui_set_locator_filename (const char *filename) { - TuiGenWinInfoPtr locator = locatorWinInfoPtr (); - TuiLocatorElementPtr element; + struct tui_gen_win_info *locator = tui_locator_win_info_ptr (); + struct tui_locator_element *element; - if (locator->content[0] == (Opaque) NULL) + if (locator->content[0] == NULL) { tui_set_locator_info (filename, NULL, 0, 0); return; } - element = &((TuiWinElementPtr) locator->content[0])->whichElement.locator; - element->fileName[0] = 0; - strcat_to_buf (element->fileName, MAX_LOCATOR_ELEMENT_LEN, filename); + element = &((struct tui_win_element *) locator->content[0])->which_element.locator; + element->file_name[0] = 0; + strcat_to_buf (element->file_name, MAX_LOCATOR_ELEMENT_LEN, filename); } /* Update the locator, with the provided arguments. */ static void -tui_set_locator_info (const char *filename, const char *procname, int lineno, +tui_set_locator_info (const char *filename, + const char *procname, + int lineno, CORE_ADDR addr) { - TuiGenWinInfoPtr locator = locatorWinInfoPtr (); - TuiLocatorElementPtr element; + struct tui_gen_win_info *locator = tui_locator_win_info_ptr (); + struct tui_locator_element *element; /* Allocate the locator content if necessary. */ - if (locator->contentSize <= 0) + if (locator->content_size <= 0) { - locator->content = (OpaquePtr) allocContent (1, locator->type); - locator->contentSize = 1; + locator->content = (void **) tui_alloc_content (1, locator->type); + locator->content_size = 1; } - element = &((TuiWinElementPtr) locator->content[0])->whichElement.locator; - element->procName[0] = (char) 0; - strcat_to_buf (element->procName, MAX_LOCATOR_ELEMENT_LEN, procname); - element->lineNo = lineno; + element = &((struct tui_win_element *) locator->content[0])->which_element.locator; + element->proc_name[0] = (char) 0; + strcat_to_buf (element->proc_name, MAX_LOCATOR_ELEMENT_LEN, procname); + element->line_no = lineno; element->addr = addr; tui_set_locator_filename (filename); } @@ -326,100 +320,102 @@ tui_update_locator_filename (const char *filename) void tui_show_frame_info (struct frame_info *fi) { - TuiWinInfoPtr winInfo; - register int i; + struct tui_win_info *win_info; + int i; if (fi) { - register int startLine, i; + int start_line, i; CORE_ADDR low; - TuiGenWinInfoPtr locator = locatorWinInfoPtr (); - int sourceAlreadyDisplayed; + struct tui_gen_win_info *locator = tui_locator_win_info_ptr (); + int source_already_displayed; struct symtab_and_line sal; find_frame_sal (fi, &sal); - sourceAlreadyDisplayed = sal.symtab != 0 - && tuiSourceIsDisplayed (sal.symtab->filename); + source_already_displayed = sal.symtab != 0 + && tui_source_is_displayed (sal.symtab->filename); tui_set_locator_info (sal.symtab == 0 ? "??" : sal.symtab->filename, tui_get_function_from_frame (fi), sal.line, get_frame_pc (fi)); tui_show_locator_content (); - startLine = 0; - for (i = 0; i < (sourceWindows ())->count; i++) + start_line = 0; + for (i = 0; i < (tui_source_windows ())->count; i++) { - TuiWhichElement *item; - winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[i]; + union tui_which_element *item; + win_info = (tui_source_windows ())->list[i]; - item = &((TuiWinElementPtr) locator->content[0])->whichElement; - if (winInfo == srcWin) + item = &((struct tui_win_element *) locator->content[0])->which_element; + if (win_info == TUI_SRC_WIN) { - startLine = (item->locator.lineNo - - (winInfo->generic.viewportHeight / 2)) + 1; - if (startLine <= 0) - startLine = 1; + start_line = (item->locator.line_no - + (win_info->generic.viewport_height / 2)) + 1; + if (start_line <= 0) + start_line = 1; } else { if (find_pc_partial_function (get_frame_pc (fi), (char **) NULL, - &low, (CORE_ADDR) NULL) == 0) - error ("No function contains program counter for selected frame.\n"); + &low, (CORE_ADDR) 0) == 0) + error (_("No function contains program counter for selected frame.")); else - low = tuiGetLowDisassemblyAddress (low, get_frame_pc (fi)); + low = tui_get_low_disassembly_address (low, get_frame_pc (fi)); } - if (winInfo == srcWin) + if (win_info == TUI_SRC_WIN) { - TuiLineOrAddress l; - l.lineNo = startLine; - if (!(sourceAlreadyDisplayed - && tui_line_is_displayed (item->locator.lineNo, winInfo, TRUE))) - tui_update_source_window (winInfo, sal.symtab, l, TRUE); + struct tui_line_or_address l; + l.loa = LOA_LINE; + l.u.line_no = start_line; + if (!(source_already_displayed + && tui_line_is_displayed (item->locator.line_no, win_info, TRUE))) + tui_update_source_window (win_info, sal.symtab, l, TRUE); else { - l.lineNo = item->locator.lineNo; - tui_set_is_exec_point_at (l, winInfo); + l.u.line_no = item->locator.line_no; + tui_set_is_exec_point_at (l, win_info); } } else { - if (winInfo == disassemWin) + if (win_info == TUI_DISASM_WIN) { - TuiLineOrAddress a; - a.addr = low; - if (!tui_addr_is_displayed (item->locator.addr, winInfo, TRUE)) - tui_update_source_window (winInfo, sal.symtab, a, TRUE); + struct tui_line_or_address a; + a.loa = LOA_ADDRESS; + a.u.addr = low; + if (!tui_addr_is_displayed (item->locator.addr, win_info, TRUE)) + tui_update_source_window (win_info, sal.symtab, a, TRUE); else { - a.addr = item->locator.addr; - tui_set_is_exec_point_at (a, winInfo); + a.u.addr = item->locator.addr; + tui_set_is_exec_point_at (a, win_info); } } } - tui_update_exec_info (winInfo); + tui_update_exec_info (win_info); } } else { tui_set_locator_info (NULL, NULL, 0, (CORE_ADDR) 0); tui_show_locator_content (); - for (i = 0; i < (sourceWindows ())->count; i++) + for (i = 0; i < (tui_source_windows ())->count; i++) { - winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[i]; - tui_clear_source_content (winInfo, EMPTY_SOURCE_PROMPT); - tui_update_exec_info (winInfo); + win_info = (tui_source_windows ())->list[i]; + tui_clear_source_content (win_info, EMPTY_SOURCE_PROMPT); + tui_update_exec_info (win_info); } } } -/* Function to initialize gdb commands, for tui window stack manipulation. */ +/* Function to initialize gdb commands, for tui window stack + manipulation. */ void -_initialize_tuiStack (void) +_initialize_tui_stack (void) { - add_com ("update", class_tui, tui_update_command, - "Update the source window and locator to display the current " - "execution point.\n"); + add_com ("update", class_tui, tui_update_command, _("\ +Update the source window and locator to display the current execution point.\n")); } /* Command to update the display with the current execution point. */