binutils-gdb/gdb/testsuite/gdb.mi
Joel Brobecker a9e408182d wrong line number in breakpoint location
Consider the following situation, where we have one file containing...

    $ cat -n body.inc
         1  i = i + 1;

... we include that file from some code, like so:

    $ cat -n cat -n small.c
        [...]
        17  int
        18  next (int i)
        19  {
        20  #include "body.inc"
        21    return i;
        22  }

When trying to insert a breakpoint on line 18, for instance:

    (gdb) b small.c:18
    Breakpoint 1 at 0x40049f: file body.inc, line 18.
                                                  ^^
                                                  ||

Here, the issue is that GDB reports the breakpoint to be in file
body.inc, which is true, but with the line number that corresponding
to the user-requested location, which is not correct.

Although the simple reproducer may look slightly artificial,
the above is simply one way to reproduce the same issue observed
when trying to insert a breakpoint on a function provided in
a .h files and then subsequently inlined in a C file.

What happens is the following:

  1. We resolve the small.c:18 linespec into a symtab_and_line which
     has "small.c" and 18 as the symtab and line number.

  2. Next, we call skip_prologue_sal, which calculates the PC
     past the prologue, and updates the symtab_and_line: PC,
     but also symtab (now body.inc) and the new line (now 1).

  3. However, right after that, we do:

            /* Make sure the line matches the request, not what was
               found.  */
            intermediate_results.sals[i].line = val.line;

We should either restore both symtab and line, or leave the actual
line to match the actual symtab.  This patch chose the latter.
This introduces a few changes in a few tests, which required some
updates, but looking at those change, I believe them to be expected.

gdb/ChangeLog:

        * linespec.c (create_sals_line_offset): Remove code that preserved
        the symtab_and_line's line number.

gdb/testsuite/ChangeLog:

        * gdb.base/break-include.c, gdb.base/break-include.inc,
        gdb.base/break-include.exp: New files.
        * gdb.base/ending-run.exp: Minor adaptations due to the breakpoint's
        line number now being the actual line number where the breakpoint
        was inserted.
        * gdb.mi/mi-break.exp: Likewise.
        * gdb.mi/mi-reverse.exp: Likewise.
        * gdb.mi/mi-simplerun.exp: Ditto.

Tested on x86_64-linux.
2018-01-21 23:14:50 -05:00
..
array.f Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
basics.c gdb: PR mi/20395: Fix -var-update for registers in frames 1 and up 2018-01-21 15:46:51 +00:00
ChangeLog-1999-2003
dw2-ref-missing-frame-func.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
dw2-ref-missing-frame-main.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
dw2-ref-missing-frame.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
dw2-ref-missing-frame.S Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
gdb669.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
gdb680.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
gdb701.c
gdb701.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
gdb792.cc
gdb792.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
gdb2549.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
list-thread-groups-available.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
list-thread-groups-available.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi2-amd64-entry-value.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi2-amd64-entry-value.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi2-amd64-entry-value.s Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi2-prompt.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi2-var-child.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-async-run.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-async-run.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-async.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-basics.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-break.exp wrong line number in breakpoint location 2018-01-21 23:14:50 -05:00
mi-breakpoint-changed.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-catch-load-so.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-catch-load.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-catch-load.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-cli.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-cmd-error.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-cmd-param-changed.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-condbreak-call-thr-state-mt.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-condbreak-call-thr-state-st.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-condbreak-call-thr-state.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-condbreak-call-thr-state.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-console.c
mi-console.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-detach.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-disassemble.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-dprintf-pending.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-dprintf-pending.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-dprintf-pendshr.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-dprintf.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-dprintf.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-editing.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-eval.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-exec-run.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-exit-code.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-exit-code.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-file-transfer.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-file.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-fill-memory.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-frame-regs.exp gdb: PR mi/20395: Fix -var-update for registers in frames 1 and up 2018-01-21 15:46:51 +00:00
mi-fullname-deleted.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-hack-cli.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-i-cmd.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-info-os.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-inheritance-syntax-error.cc
mi-inheritance-syntax-error.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-language.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-linespec-err-cp.cc Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-linespec-err-cp.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-logging.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-memory-changed.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-nonstop-exit.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-nonstop.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-ns-stale-regcache.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-nsintrall.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-nsmoribund.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-nsthrexec.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-pending.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-pending.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-pendshr2.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-pendshr.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-pthreads.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-read-memory.c
mi-read-memory.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-record-changed.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-reg-undefined.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-reg-undefined.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-reg-undefined.S Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-regs.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-return.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-reverse.exp wrong line number in breakpoint location 2018-01-21 23:14:50 -05:00
mi-simplerun.exp wrong line number in breakpoint location 2018-01-21 23:14:50 -05:00
mi-solib.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-stack.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-stack.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-start.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-start.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-stepi.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-stepn.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-stepn.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-syn-frame.c
mi-syn-frame.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-threads-interrupt.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-threads-interrupt.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-undefined-cmd.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-until.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-block.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-child-f.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-child.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-child.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-cmd.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-cp.cc Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-cp.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-create-rtti.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-create-rtti.exp gdb: Don't store a thread-id for floating varobj 2018-01-21 15:47:28 +00:00
mi-var-display.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-invalidate.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-list-children-invalid-grandchild.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-list-children-invalid-grandchild.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-rtti.cc Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-rtti.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-vla-c99.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-vla-fortran.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-watch-nonstop.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-watch.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
new-ui-mi-sync.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
new-ui-mi-sync.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
non-stop-exit.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
non-stop.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
ns-stale-regcache.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
nsintrall.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
nsmoribund.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
nsthrexec.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
pending.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
pendshr1.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
pendshr2.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
pr11022.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
pr11022.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
pthreads.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
solib-lib.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
solib-main.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
testcmds
until.c
user-selected-context-sync.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
user-selected-context-sync.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
var-cmd.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
vla.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
vla.f90 Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
watch-nonstop.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00