[Bug breakpoints/24687] FAIL: gdb.base/fullname.exp: set breakpoint by full path before/after loading symbols - built relative

cvs-commit at gcc dot gnu.org sourceware-bugzilla@sourceware.org
Wed Oct 23 07:34:00 GMT 2019


https://sourceware.org/bugzilla/show_bug.cgi?id=24687

--- Comment #4 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tom de Vries <vries@sourceware.org>:

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

commit 7e785608ce2afae4b3f611f0e4d46cb9633ef937
Author: Tom de Vries <tdevries@suse.de>
Date:   Wed Oct 23 09:33:46 2019 +0200

    [gdb/breakpoints] Fix fullname.exp when run from symlink dir

    I run into this error with gdb.base/fullname.exp:
    ...
    (gdb) file /data/gdb_versions/devel/build/gdb/testsuite/outputs/\
      gdb.base/fullname/fullname
    Reading symbols from /data/gdb_versions/devel/build/gdb/testsuite/outputs/\
      gdb.base/fullname/fullname...
    (gdb) break /data/gdb_versions/devel/build/gdb/testsuite/\
      outputs/gdb.base/fullname/tmp-fullname.c:21
    No source file named /data/gdb_versions/devel/build/gdb/testsuite/outputs/\
      gdb.base/fullname/tmp-fullname.c.
    Make breakpoint pending on future shared library load? (y or [n]) n
    (gdb) FAIL: gdb.base/fullname.exp: set breakpoint by full path before
loading symbols - built relative
    ...

    The FAIL is due to this comparison in iterate_over_some_symtabs failing:
    ...
    481                   if (FILENAME_CMP (real_path, fullname) == 0)
    (gdb) p real_path
    $2 = 0x1a201f0 "/data/gdb_versions/devel/build/gdb/testsuite/outputs/\
      gdb.base/fullname/tmp-fullname.c"
    (gdb) p fullname
    $3 = 0x1a1de80
"/home/vries/gdb_versions/devel/build/gdb/testsuite/outputs/\
      gdb.base/fullname/tmp-fullname.c"
    ...

    The difference in pathnames is due to having a symlink dir:
    ...
    $ ls -la /home/vries/gdb_versions
    lrwxrwxrwx 1 vries users 18 26 jun  2018 /home/vries/gdb_versions ->
/data/gdb_versions
    ...
    and the test passses when eliminating it:
    ...
    $ ( cd $(pwd -P); make check RUNTESTFLAGS=gdb.base/fullname.exp )
    ...

    The FAIL is a regression from commit a0c1ffedcf1 "Only compute realpath
when
    basenames_may_differ is set".  Before, find_and_open_source was returning a
    real-path, resulting in variable 'fullname' being the same as varible
    'real_path' in the comparison listed above.  But after, that's no longer
the
    case.

    Fix the FAIL by applying gdb_realpath on the fullname variable before the
    comparison.

    Tested on x86_64-linux.

    I wasn't able to write a test-case.  The FAIL starts at:
    ...
    $ cd build/gdb
    $ mv testsuite testsuite.bla
    $ ln -s testsuite.bla testsuite
    ...
    but already this doesn't trigger it anymore:
    ...
    $ cd build/gdb/outputs
    $ mv outputs outputs.bla
    $ ln -s outputs.bla outputs
    ...

    gdb/ChangeLog:

    2019-10-23  Tom de Vries  <tdevries@suse.de>

        PR breakpoints/24687
        * symtab.c (iterate_over_some_symtabs): Apply gdb_realpath on fullname.

    Change-Id: I1ace62a234458781e958980f3b425edf1490df27

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


More information about the Gdb-prs mailing list