Bug 1639077

Summary: gdb fails to set breakpoint on binary compiler from souce which is a symbolic link to a file with different name
Product: Red Hat Enterprise Linux 7 Reporter: Divya <dbasant>
Component: gdbAssignee: Keith Seitz <keiths>
Status: CLOSED ERRATA QA Contact: Michal Kolar <mkolar>
Severity: medium Docs Contact: Vladimír Slávik <vslavik>
Priority: medium    
Version: 7.5CC: bgollahe, dsmith, gdb-bugs, jan.kratochvil, keiths, mcermak, mkolar, ohudlick, sergiodj, vslavik
Target Milestone: rcKeywords: Regression
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: gdb-7.6.1-115.el7 Doc Type: Bug Fix
Doc Text:
.GDB breakpoint default source file works for symbolic links Previously, the GDB debugger could not locate the symbol table information for the default source file, if the file was a symbolic link. As a consequence, users could not set breakpoints by omitting the source file name and using the default, such as `break 63`. This bug has been fixed and users can now use default source files with breakpoints for files behind symbolic links.
Story Points: ---
Clone Of:
: 1750470 (view as bug list) Environment:
Last Closed: 2019-08-06 13:06:10 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1643040, 1750470, 1771136, 1771138, 1771140, 1771142    
Attachments:
Description Flags
Sample code bitmapSort.c to reproduce the issue with none

Description Divya 2018-10-15 02:35:48 UTC
Created attachment 1493891 [details]
Sample code bitmapSort.c to reproduce the issue with

Description of problem:
Setting break on a binary loaded in gdb, which has been compiled from a file which is a symbolic link to a file with different name throws below error:

(gdb) b 15
No line 15 in the current file.
Make breakpoint pending on future shared library load? (y or [n])

Pressing "y" at this point, before punching run command, has no effect and process exits through it normally. Instead specifying breakpoint in the format <file name>:<linenum> works as expected: 

(gdb) b bitmapS.c:15
Breakpoint 2 at 0x40088c: file bitmapS.c, line 15.


Version-Release number of selected component (if applicable):
gdb-7.6.1-110.el7

How reproducible:
Always

Steps to Reproduce:
1. move the attached reproducer program bitmapSort.c to /tmp
   # mv bitmapSort.c /tmp
2. Create a symbolic link to /tmp/bitmapSort.c with a different name
   # cd
   # ln -s /tmp/bitmapSort.c bitmapS.c
3. Compile bitmapS.c to produce a binary and load in gdb and try to set breakpoint specifying just line number: 
   # gcc -o bitmapS -lm -g bitmapS.c
   # gdb ./bitmapS
   (gdb) b 15

Actual results:
Breakpoint is not set just with <linenum> format, whereas setting breakpoing in <filename>:<linume> does work as expected.

Expected results:
Breakpoint with just <linenum> format should work.

Additional info:
Same was working fine in RHEL-6.

Comment 4 David Smith 2018-12-04 16:07:43 UTC
We have a patch in hand for this one.

Comment 7 Keith Seitz 2019-03-01 20:07:39 UTC
QE: Patch includes test:
$ make check RUNTESTFLAGS="gdb.base/symlink-sourcefile.exp"
[...]
		=== gdb Summary ===

# of expected passes		2

Comment 9 Michal Kolar 2019-03-19 09:33:33 UTC
Reproduced against gdb-7.6.1-114.el7 and verified against gdb-7.6.1-115.el7 with gcc-4.8.5-36.el7.

Comment 14 errata-xmlrpc 2019-08-06 13:06:10 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2019:2213