This is the mail archive of the insight@sourceware.org mailing list for the Insight project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: syms_from_objfile() warnings and win32-nat.c IO redirection (Was: suppress annoying warnings about cygwin1.dbg)


Brian Dessent wrote:
Daniel Jacobowitz wrote:

Unfortunately, current HEAD is nearly unusable right now on Cygwin.

I shook a bit when I read "unusable" :) That's a pretty strong word.


If you do this in insight it's much worse as every one of those warnings
gets its own popup message box, which means twelve annoying things to
dismiss before you can even start to debug.  And on top of that, some of
these messages somehow end up spuriously appearing in with the program
display pane in insight (see attached PNG).  I guess there's some kind
of filter in the insight code that needs updating, but preferrably these
warnings shouldn't even be generated.


I've had this fixed here for a while. It goes on the direction of removing the warnings, and removing the warning suppressing on win32-nat.c. Could you test it with cygwin1.dbg and with insight?

Cheers,
Pedro Alves

2007-10-09  Pedro Alves  <pedro_alves@portugalmail.pt>

	* symfile.c (syms_from_objfile): Don't warn if loadable
	sections are not found.

---
 gdb/symfile.c   |   29 +++++++++--------------
 gdb/win32-nat.c |   70 --------------------------------------------------------
 2 files changed, 13 insertions(+), 86 deletions(-)

Index: src/gdb/symfile.c
===================================================================
--- src.orig/gdb/symfile.c	2007-10-08 23:45:50.000000000 +0100
+++ src/gdb/symfile.c	2007-10-13 01:51:40.000000000 +0100
@@ -822,18 +822,18 @@ syms_from_objfile (struct objfile *objfi
 	bfd_map_over_sections (objfile->obfd, find_lowest_section,
 			       &lower_sect);
       if (lower_sect == NULL)
-	warning (_("no loadable sections found in added symbol-file %s"),
-		 objfile->name);
-      else
-	if ((bfd_get_section_flags (objfile->obfd, lower_sect) & SEC_CODE) == 0)
-	  warning (_("Lowest section in %s is %s at %s"),
-		   objfile->name,
-		   bfd_section_name (objfile->obfd, lower_sect),
-		   paddr (bfd_section_vma (objfile->obfd, lower_sect)));
-      if (lower_sect != NULL)
- 	lower_offset = bfd_section_vma (objfile->obfd, lower_sect);
-      else
  	lower_offset = 0;
+      else
+	{
+	  int flags = bfd_get_section_flags (objfile->obfd, lower_sect);
+	  if (flags == 0)
+	    warning (_("Lowest section in %s is %s at %s"),
+		     objfile->name,
+		     bfd_section_name (objfile->obfd, lower_sect),
+		     paddr (bfd_section_vma (objfile->obfd, lower_sect)));
+
+	  lower_offset = bfd_section_vma (objfile->obfd, lower_sect);
+	}
 
       /* Calculate offsets for the loadable sections.
  	 FIXME! Sections must be in order of increasing loadable section
@@ -860,12 +860,7 @@ syms_from_objfile (struct objfile *objfi
                     addrs->other[i].sectindex = sect->index ;
                   }
                 else
-                  {
-                    warning (_("section %s not found in %s"),
-                             addrs->other[i].name,
-                             objfile->name);
-                    addrs->other[i].addr = 0;
-                  }
+		  addrs->other[i].addr = 0;
               }
             else
               addrs->other[i].addr = lower_offset;
Index: src/gdb/win32-nat.c
===================================================================
--- src.orig/gdb/win32-nat.c	2007-10-13 01:51:10.000000000 +0100
+++ src/gdb/win32-nat.c	2007-10-13 01:51:40.000000000 +0100
@@ -525,19 +525,6 @@ failed:
   return 0;
 }
 
-/* Encapsulate the information required in a call to
-   symbol_file_add_args */
-struct safe_symbol_file_add_args
-{
-  char *name;
-  int from_tty;
-  struct section_addr_info *addrs;
-  int mainline;
-  int flags;
-  struct ui_file *err, *out;
-  struct objfile *ret;
-};
-
 /* Maintain a linked list of "so" information. */
 struct lm_info
 {
@@ -546,61 +533,6 @@ struct lm_info
 
 static struct so_list solib_start, *solib_end;
 
-/* Call symbol_file_add with stderr redirected.  We don't care if there
-   are errors. */
-static int
-safe_symbol_file_add_stub (void *argv)
-{
-#define p ((struct safe_symbol_file_add_args *) argv)
-  struct so_list *so = &solib_start;
-
-  p->ret = symbol_file_add (p->name, p->from_tty, p->addrs, p->mainline, p->flags);
-  return !!p->ret;
-#undef p
-}
-
-/* Restore gdb's stderr after calling symbol_file_add */
-static void
-safe_symbol_file_add_cleanup (void *p)
-{
-#define sp ((struct safe_symbol_file_add_args *)p)
-  gdb_flush (gdb_stderr);
-  gdb_flush (gdb_stdout);
-  ui_file_delete (gdb_stderr);
-  ui_file_delete (gdb_stdout);
-  gdb_stderr = sp->err;
-  gdb_stdout = sp->out;
-#undef sp
-}
-
-/* symbol_file_add wrapper that prevents errors from being displayed. */
-static struct objfile *
-safe_symbol_file_add (char *name, int from_tty,
-		      struct section_addr_info *addrs,
-		      int mainline, int flags)
-{
-  struct safe_symbol_file_add_args p;
-  struct cleanup *cleanup;
-
-  cleanup = make_cleanup (safe_symbol_file_add_cleanup, &p);
-
-  p.err = gdb_stderr;
-  p.out = gdb_stdout;
-  gdb_flush (gdb_stderr);
-  gdb_flush (gdb_stdout);
-  gdb_stderr = ui_file_new ();
-  gdb_stdout = ui_file_new ();
-  p.name = name;
-  p.from_tty = from_tty;
-  p.addrs = addrs;
-  p.mainline = mainline;
-  p.flags = flags;
-  catch_errors (safe_symbol_file_add_stub, &p, "", RETURN_MASK_ERROR);
-
-  do_cleanups (cleanup);
-  return p.ret;
-}
-
 static struct so_list *
 win32_make_so (const char *name, DWORD load_addr)
 {
@@ -801,7 +733,7 @@ dll_symbol_command (char *args, int from
       args = newargs;
     }
 
-  safe_symbol_file_add (args, from_tty, NULL, 0, OBJF_SHARED | OBJF_USERLOADED);
+  symbol_file_add (args, from_tty, NULL, 0, OBJF_SHARED | OBJF_USERLOADED);
 }
 
 /* Handle DEBUG_STRING output from child process.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]