[Bug symtab/23853] New: Symlinked sourcefiles not found

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[Bug symtab/23853] New: Symlinked sourcefiles not found

mark at klomp dot org
https://sourceware.org/bugzilla/show_bug.cgi?id=23853

            Bug ID: 23853
           Summary: Symlinked sourcefiles not found
           Product: gdb
           Version: HEAD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: symtab
          Assignee: unassigned at sourceware dot org
          Reporter: keiths at redhat dot com
  Target Milestone: ---

GDB cannot find default symtabs when they are symlinks:

$ ln -s example.c example-link.c
$ gcc -g example-link.c -o example
$ gdb -nx -q example -ex "b 10"
Reading symbols from example...
(gdb) list
11         GNU General Public License for more details.
12      
13         You should have received a copy of the GNU General Public License
14         along with this program.  If not, see
<http://www.gnu.org/licenses/>.  */
15      
16      static int
17      foo (void)
18      {
19        return 0; /* break here  */
20      }
(gdb)
21      
22      int
23      main (void)
24      {
25        return foo ();
26      }
(gdb) b 19
No line 19 in the current file.
Make breakpoint pending on future shared library load? (y or [n])

--
You are receiving this mail because:
You are on the CC list for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug symtab/23853] Symlinked sourcefiles not found

mark at klomp dot org
https://sourceware.org/bugzilla/show_bug.cgi?id=23853

--- Comment #1 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Keith Seitz <[hidden email]>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=bb995d00b3eef2f48d0be895c3509a7ddd8280a1

commit bb995d00b3eef2f48d0be895c3509a7ddd8280a1
Author: Keith Seitz <[hidden email]>
Date:   Fri Feb 22 09:39:35 2019 -0800

    Fix symtab/23853: symlinked default symtab

    This patch attempts to fix a bug dealing with setting breakpoints
    in default symtabs that are symlinks.  For example:

    (gdb) list
    11     GNU General Public License for more details.
    12
    13     You should have received a copy of the GNU General Public License
    14     along with this program.  If not, see
<http://www.gnu.org/licenses/>.  */
    15
    16  static int
    17  foo (void)
    18  {
    19    return 0; /* break here  */
    20  }
    (gdb)
    21
    22  int
    23  main (void)
    24  {
    25    return foo ();
    26  }
    (gdb) b 19
    No line 19 in the current file.
    Make breakpoint pending on future shared library load? (y or [n])

    The problem here is that when create_sals_line_offset sets the default
    symtab, it immediately calls symtab_to_fullname, passing that fullname
    to collect_symtabs_from_filename to find all matching symtabs.  This
    fails because we end up looking for a symtab with the name of the
    actual file on disk (which is different in this case because of the
    symlink) instead of the one stored in the debug info.

    Since we already have the lookup name of the default symtab, use it
    instead of the fullname. [This fullname thing was originally added
    in 2007 in a series dealing with *displaying* absolute file names.
    Clearly, this instance has nothing to do with the display of file names.]

    gdb/ChangeLog

        PR symtab/23853
        * linespec.c (create_sals_line_offset): Search for the default
        symtab's filename instead of its fullname.

    gdb/testsuite/ChangeLog

        PR symtab/23853
        * gdb.base/symlink-sourcefile.c: New file.
        * gdb.base/symlink-sourcefile.exp: New file.

--
You are receiving this mail because:
You are on the CC list for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug symtab/23853] Symlinked sourcefiles not found

mark at klomp dot org
In reply to this post by mark at klomp dot org
https://sourceware.org/bugzilla/show_bug.cgi?id=23853

Keith Seitz <keiths at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #2 from Keith Seitz <keiths at redhat dot com> ---
Patch committed.

--
You are receiving this mail because:
You are on the CC list for the bug.