* tuiStack.c (tuiSetLocatorContent): Remove.
authorStephane Carrez <stcarrez@nerim.fr>
Sun, 25 Aug 2002 17:13:29 +0000 (17:13 +0000)
committerStephane Carrez <stcarrez@nerim.fr>
Sun, 25 Aug 2002 17:13:29 +0000 (17:13 +0000)
(tuiUpdateLocatorInfoFromFrame): Remove.
(tui_set_locator_info): Allocate the content buffer if necessary.
(tui_set_locator_filename): Call tui_set_locator_info directly.
(tuiShowFrameInfo): Likewise and use find_pc_line instead of
find_pc_symtab.

gdb/tui/ChangeLog
gdb/tui/tuiStack.c

index d7148ac..60ec1d0 100644 (file)
@@ -1,5 +1,14 @@
 2002-08-25  Stephane Carrez  <stcarrez@nerim.fr>
 
+       * tuiStack.c (tuiSetLocatorContent): Remove.
+       (tuiUpdateLocatorInfoFromFrame): Remove.
+       (tui_set_locator_info): Allocate the content buffer if necessary.
+       (tui_set_locator_filename): Call tui_set_locator_info directly.
+       (tuiShowFrameInfo): Likewise and use find_pc_line instead of
+       find_pc_symtab.
+
+2002-08-25  Stephane Carrez  <stcarrez@nerim.fr>
+
        * tuiSourceWin.c (tuiDisplayMainFunction): Update to use
        tuiUpdateLocatorFilename.
        * tuiStack.c (tuiSetLocatorInfo): Make it static.
index 24ccf15..d3f0404 100644 (file)
@@ -65,13 +65,10 @@ 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,
-                                  int lineno, CORE_ADDR addr,
-                                  TuiLocatorElementPtr element);
+                                  int lineno, CORE_ADDR addr);
 
 static void tui_update_command (char *, int);
-
-/* Function to set the content of the locator.  */
-static void tuiSetLocatorContent (struct frame_info *frameInfo);
+\f
 
 /* Get a printable name for the function at the address.
    The symbol name is demangled if demangling is turned on.
@@ -144,7 +141,10 @@ tui_set_locator_filename (const char *filename)
   TuiLocatorElementPtr element;
 
   if (locator->content[0] == (Opaque) NULL)
-    tuiSetLocatorContent ((struct frame_info *) NULL);
+    {
+      tui_set_locator_info (filename, NULL, 0, 0);
+      return;
+    }
 
   element = &((TuiWinElementPtr) locator->content[0])->whichElement.locator;
   element->fileName[0] = 0;
@@ -154,8 +154,19 @@ 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, int lineno,
-                      CORE_ADDR addr, TuiLocatorElementPtr element)
+                      CORE_ADDR addr)
 {
+  TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
+  TuiLocatorElementPtr element;
+
+  /* Allocate the locator content if necessary.  */
+  if (locator->contentSize <= 0)
+    {
+      locator->content = (OpaquePtr) allocContent (1, locator->type);
+      locator->contentSize = 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;
@@ -163,7 +174,6 @@ tui_set_locator_info (const char *filename, const char *procname, int lineno,
   tui_set_locator_filename (filename);
 }
 
-
 /* Update only the filename portion of the locator.  */
 void
 tuiUpdateLocatorFilename (const char *filename)
@@ -172,72 +182,7 @@ tuiUpdateLocatorFilename (const char *filename)
   tuiShowLocatorContent ();
 }
 
-/*
-   ** tuiUpdateLocatorInfoFromFrame().
-   **        Function to update the locator, with the information extracted from frameInfo
- */
-static void
-tuiUpdateLocatorInfoFromFrame (struct frame_info *frameInfo,
-                               TuiLocatorElementPtr element)
-{
-  struct symtab_and_line symtabAndLine;
-
-  /* now get the new info */
-  symtabAndLine = find_pc_line (frameInfo->pc,
-                          (frameInfo->next != (struct frame_info *) NULL &&
-                           !frameInfo->next->signal_handler_caller &&
-                           !frame_in_dummy (frameInfo->next)));
-  if (symtabAndLine.symtab && symtabAndLine.symtab->filename)
-    tui_set_locator_info (symtabAndLine.symtab->filename,
-                          tui_get_function_from_frame (frameInfo),
-                          symtabAndLine.line,
-                          frameInfo->pc,
-                          element);
-  else
-    tui_set_locator_info ((char *) NULL,
-                          tui_get_function_from_frame (frameInfo),
-                          0,
-                          frameInfo->pc,
-                          element);
-
-  return;
-}                              /* tuiUpdateLocatorInfoFromFrame */
-
-
-/* Function to set the content of the locator.  */
-static void
-tuiSetLocatorContent (struct frame_info *frameInfo)
-{
-  TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
-  TuiWinElementPtr element;
-  struct symtab_and_line symtabAndLine;
-
-  /* Allocate the element if necessary */
-  if (locator->contentSize <= 0)
-    {
-      TuiWinContent contentPtr;
-
-      if ((locator->content = (OpaquePtr) allocContent (1, locator->type)) == (OpaquePtr) NULL)
-       error ("Unable to Allocate Memory to Display Location.");
-      locator->contentSize = 1;
-    }
-
-  if (frameInfo != (struct frame_info *) NULL)
-    tuiUpdateLocatorInfoFromFrame (frameInfo,
-          &((TuiWinElementPtr) locator->content[0])->whichElement.locator);
-  else
-    tui_set_locator_info ((char *) NULL,
-                          (char *) NULL,
-                          0,
-                          (CORE_ADDR) 0,
-          &((TuiWinElementPtr) locator->content[0])->whichElement.locator);
-  return;
-}                              /* tuiSetLocatorContent */
-
-/*
-   ** tuiShowFrameInfo().
-   **        Function to print the frame inforrmation for the TUI.
- */
+/* Function to print the frame information for the TUI.  */
 void
 tuiShowFrameInfo (struct frame_info *fi)
 {
@@ -247,20 +192,24 @@ tuiShowFrameInfo (struct frame_info *fi)
   if (fi)
     {
       register int startLine, i;
-      register struct symtab *s;
       CORE_ADDR low;
       TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
       int sourceAlreadyDisplayed;
-
-
-      s = find_pc_symtab (fi->pc);
-      if (s == 0)
-        return;
-
-      startLine = 0;
-      sourceAlreadyDisplayed = tuiSourceIsDisplayed (s->filename);
-      tuiSetLocatorContent (fi);
+      struct symtab_and_line sal;
+
+      sal = find_pc_line (fi->pc,
+                          (fi->next != (struct frame_info *) NULL &&
+                           !fi->next->signal_handler_caller &&
+                           !frame_in_dummy (fi->next)));
+
+      sourceAlreadyDisplayed = sal.symtab != 0
+        && tuiSourceIsDisplayed (sal.symtab->filename);
+      tui_set_locator_info (sal.symtab == 0 ? "??" : sal.symtab->filename,
+                            tui_get_function_from_frame (fi),
+                            sal.line,
+                            fi->pc);
       tuiShowLocatorContent ();
+      startLine = 0;
       for (i = 0; i < (sourceWindows ())->count; i++)
        {
          TuiWhichElement *item;
@@ -288,7 +237,7 @@ tuiShowFrameInfo (struct frame_info *fi)
              l.lineNo = startLine;
              if (!(sourceAlreadyDisplayed
                    && tuiLineIsDisplayed (item->locator.lineNo, winInfo, TRUE)))
-               tuiUpdateSourceWindow (winInfo, s, l, TRUE);
+               tuiUpdateSourceWindow (winInfo, sal.symtab, l, TRUE);
              else
                {
                  l.lineNo = item->locator.lineNo;
@@ -302,7 +251,7 @@ tuiShowFrameInfo (struct frame_info *fi)
                  TuiLineOrAddress a;
                  a.addr = low;
                  if (!tuiAddrIsDisplayed (item->locator.addr, winInfo, TRUE))
-                   tuiUpdateSourceWindow (winInfo, s, a, TRUE);
+                   tuiUpdateSourceWindow (winInfo, sal.symtab, a, TRUE);
                  else
                    {
                      a.addr = item->locator.addr;
@@ -315,7 +264,7 @@ tuiShowFrameInfo (struct frame_info *fi)
     }
   else
     {
-      tuiSetLocatorContent (fi);
+      tui_set_locator_info (NULL, NULL, 0, (CORE_ADDR) 0);
       tuiShowLocatorContent ();
       for (i = 0; i < (sourceWindows ())->count; i++)
        {
@@ -324,9 +273,7 @@ tuiShowFrameInfo (struct frame_info *fi)
          tuiUpdateExecInfo (winInfo);
        }
     }
-
-  return;
-}                              /* tuiShowFrameInfo */
+}
 
 /* Function to initialize gdb commands, for tui window stack manipulation.  */
 void