Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Corinna Vinschen <vinschen@redhat.com>
To: gdb-patches@sources.redhat.com
Subject: [RFA] maintenance_print_msymbols: Try harder to match files
Date: Mon, 24 Jan 2005 21:09:00 -0000	[thread overview]
Message-ID: <20050124210931.GE17455@cygbert.vinschen.de> (raw)

Hi,

while testing on Cygwin, I found that the maintenance_print_msymbols
doesn't evaluate the optional symbol filename from the command line
very user friendly.  Actually it evaluates nothing at all and tests
the objfile names from the loaded object files just against the
command line parameter using strcmp.  This has two disadvantages.

- If the user types a relative pathname, the maintenance_print_msymbols
  function prints nothing, because object file names are stored with
  absolute pathnames in the objfile structure.

- On Windows based systems, the user might like to enter the filename
  without the .exe suffix.  That would fail as well.

The below patch changes the maintenance_print_msymbols so that the
optional filename is evaluated to an absolute pathname, just to be sure.
If the file doesn't exist, maintenance_print_msymbols will generate an
appropriate error message.

Then it tests the inode number of this file against the inode number
of the object files stored in GDB.  This should be pretty reliable.


Corinna

	* symmisc.c: Include gdb_stat.h.
	(maintenance_print_msymbols): Use inode numbers to compare files.

Index: symmisc.c
===================================================================
RCS file: /cvs/src/src/gdb/symmisc.c,v
retrieving revision 1.34
diff -p -u -r1.34 symmisc.c
--- symmisc.c   12 Jan 2005 18:31:33 -0000      1.34
+++ symmisc.c   24 Jan 2005 20:56:09 -0000
@@ -35,6 +35,7 @@
 #include "bcache.h"
 #include "block.h"
 #include "gdb_regex.h"
+#include "gdb_stat.h"
 #include "dictionary.h"
 
 #include "gdb_string.h"
@@ -930,6 +931,8 @@ maintenance_print_msymbols (char *args, 
   char *symname = NULL;
   struct objfile *objfile;
 
+  struct stat sym_st, obj_st;
+
   dont_repeat ();
 
   if (args == NULL)
@@ -948,7 +951,10 @@ maintenance_print_msymbols (char *args, 
       /* If a second arg is supplied, it is a source file name to match on */
       if (argv[1] != NULL)
 	{
-	  symname = argv[1];
+	  symname = xfullpath (argv[1]);
+	  make_cleanup (xfree, symname);
+	  if (symname && stat (symname, &sym_st))
+	    perror_with_name (symname);
 	}
     }
 
@@ -962,8 +968,9 @@ maintenance_print_msymbols (char *args, 
 
   immediate_quit++;
   ALL_OBJFILES (objfile)
-    if (symname == NULL || strcmp (symname, objfile->name) == 0)
-    dump_msymbols (objfile, outfile);
+    if (symname == NULL
+	|| (!stat (objfile->name, &obj_st) && sym_st.st_ino == obj_st.st_ino))
+      dump_msymbols (objfile, outfile);
   immediate_quit--;
   fprintf_filtered (outfile, "\n\n");
   do_cleanups (cleanups);


-- 
Corinna Vinschen
Cygwin Project Co-Leader
Red Hat, Inc.


             reply	other threads:[~2005-01-24 21:09 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-24 21:09 Corinna Vinschen [this message]
2005-05-01 23:37 ` Daniel Jacobowitz
2005-05-02 19:20   ` Eli Zaretskii
2005-05-02 19:46     ` Eli Zaretskii
2005-05-02 20:05   ` Joel Brobecker
2005-05-02 20:07     ` Daniel Jacobowitz
2005-05-02 20:18       ` Joel Brobecker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050124210931.GE17455@cygbert.vinschen.de \
    --to=vinschen@redhat.com \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox