Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Asm warrior <asmwarrior@gmail.com>
To: MinGW Users List <mingw-users@lists.sourceforge.net>,
	 gdb@sourceware.org
Cc: "John E. / TDM" <tdragon@tdragon.net>,
	Eli Zaretskii <eliz@gnu.org>,
	 jan.kratochvil@redhat.com, keiths@redhat.com
Subject: Re: setting a breakpoint on a dll, relative path or absolute path issue
Date: Mon, 13 Jun 2011 06:33:00 -0000	[thread overview]
Message-ID: <4DF5AE48.9050202@gmail.com> (raw)
In-Reply-To: <4DF4513A.3090902__7466.60719528354$1307866544$gmane$org@gmail.com>

I just go a little further, and found that there is a function to look 
up a file name in symbol tables.

struct symtab * lookup_symtab (const char *name)

the parameter name is the user supplied file name string to set a 
breakpoint.

This function will loop all the symbols and do a string match.

symtab_to_fullname() is used to read symbol's filename, it was defined 
in the gdb/source.c line 1110


char *
symtab_to_fullname (struct symtab *s)
{
   int r;

   if (!s)
     return NULL;

   /* Don't check s->fullname here, the file could have been
      deleted/moved/..., look for it again.  */
   r = find_and_open_source (s->filename, s->dirname, &s->fullname);

   if (r >= 0)
     {
       close (r);
       return s->fullname;
     }

   return NULL;
}

When loop on the symbols. I found that at one loop, I get

s->filename = "../../src/common/string.cpp"
s->dirname  = "D:\code\wxWidgets-2.8.12\build\msw"

But too badly, the result
s->fullname = 
"D:\code\wxWidgets-2.8.12\build\msw/../../src/common/string.cpp"

This is the reason about the issue, if the result is:
"D:\code\wxWidgets-2.8.12/src/common/string.cpp"
Then, this problem can be fixed.

I'm not sure why gdb does not give a cannical filename, but still leaves 
the "../../" in the result.



By the way, gdb's matching algorithm care both "/" and "\" as equivalent 
char under Windows.

Look at here: gdb\libiberty\filename_cmp.c

int
filename_cmp (const char *s1, const char *s2)
{
#ifndef HAVE_DOS_BASED_FILE_SYSTEM
  return strcmp(s1, s2);
#else
  for (;;)
     {
      int c1 = TOLOWER (*s1);
      int c2 = TOLOWER (*s2);

      /* On DOS-based file systems, the '/' and the '\' are equivalent.  */
      if (c1 == '/')
        c1 = '\\';
      if (c2 == '/')
        c2 = '\\';

      if (c1 != c2)
        return (c1 - c2);

      if (c1 == '\0')
        return 0;

      s1++;
      s2++;
     }
#endif
}


Asmwarrior
ollydbg from codeblocks' forum






  parent reply	other threads:[~2011-06-13  6:33 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-11  7:49 asmwarrior
2011-06-11 17:56 ` Keith Seitz
2011-06-12  3:56   ` asmwarrior
2011-06-12  7:45     ` asmwarrior
2011-06-12  7:56       ` Jan Kratochvil
2011-06-12  8:06         ` asmwarrior
2011-06-12 16:22           ` [Mingw-users] " Earnie
2011-06-12 16:51         ` Eli Zaretskii
2011-06-12 16:54           ` Jan Kratochvil
     [not found] ` <4DF37ADA.3070905@users.sourceforge.net>
2011-06-12  8:15   ` asmwarrior
     [not found]   ` <4DF4513A.3090902__7466.60719528354$1307866544$gmane$org@gmail.com>
2011-06-13  6:33     ` Asm warrior [this message]
2011-06-13 17:02       ` Eli Zaretskii
2011-06-14  3:14         ` Asm warrior
2011-06-14  3:49           ` Asm warrior
2011-06-14  4:22             ` Jeffrey Walton
2011-06-14  5:27         ` setting a breakpoint on a dll, relative path or absolute path issue[solved with a patch] asmwarrior

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=4DF5AE48.9050202@gmail.com \
    --to=asmwarrior@gmail.com \
    --cc=eliz@gnu.org \
    --cc=gdb@sourceware.org \
    --cc=jan.kratochvil@redhat.com \
    --cc=keiths@redhat.com \
    --cc=mingw-users@lists.sourceforge.net \
    --cc=tdragon@tdragon.net \
    /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