When getting the locno of a bpstat, handle the case of bp with null locations.
authorPhilippe Waroquiers <philippe.waroquiers@skynet.be>
Sun, 20 Nov 2022 16:42:12 +0000 (17:42 +0100)
committerPhilippe Waroquiers <philippe.waroquiers@skynet.be>
Mon, 21 Nov 2022 20:16:12 +0000 (21:16 +0100)
commit28a072f4af84ad295d37f8aa70c5fec9d36a274c
tree159a8d5b50669a4801c7eb3e09abbcf2afa38193
parent83f350830ee561ddc799d1445c6024a84df9f161
When getting the locno of a bpstat, handle the case of bp with null locations.

The test py-objfile.exp unloads the current file while debugging the process.
This results in bpstat bs->b->loc to become nullptr.
Handle this case in breakpoint.c:bpstat_locno.

Note: GDB crashes on this problem with an internal error,
but the end of gdb summary shows:
  ...
                  === gdb Summary ===

  # of expected passes 36

The output also does not contain a 'FAIL:'.
After the fix, the nr of expected passes increased.

In the gdb.log output, one can see:
  ...
  Fatal signal: Segmentation fault
  ----- Backtrace -----
  0x55698905c5b9 gdb_internal_backtrace_1
          ../../binutils-gdb/gdb/bt-utils.c:122
  0x55698905c5b9 _Z22gdb_internal_backtracev
  ...

  ERROR: Couldn't send python print(objfile.filename) to GDB.
  ERROR: : spawn id exp9 not open
      while executing
  "expect {
  -i exp9 -timeout 10
          -re ".*A problem internal to GDB has been detected" {
              fail "$message (GDB internal error)"
              gdb_internal_error..."
      ("uplevel" body line 1)
      invoked from within
  ....

Wondering if it might be possible to improve gdb_test to have
  gdb_test "python print(objfile.filename)" "None" \
      "objfile.filename after objfile is unloaded"
reporting a failed result instead of just producing the internal error.
gdb/breakpoint.c