)]}'
{
  "commit": "093da43d2adb4497dfec8afbb4eeaf2425668fdd",
  "tree": "17a7c274bf741c4888997021519c2ccf0e17da02",
  "parents": [
    "12f567bcb640285b0afab74e2ac8d471a175722d"
  ],
  "author": {
    "name": "Mohamed Bouhaouel",
    "email": "mohamed.bouhaouel@intel.com",
    "time": "Fri Jun 30 10:10:15 2023 +0200"
  },
  "committer": {
    "name": "Tom Tromey",
    "email": "tromey@adacore.com",
    "time": "Tue Sep 19 06:56:53 2023 -0600"
  },
  "message": "gdb, breakpoint: add a destructor to the watchpoint struct\n\nMake sure to unlink the related breakpoint when the watchpoint instance\nis deleted.  This prevents having a wp-related breakpoint that is\nlinked to a NULL watchpoint (e.g.  the watchpoint instance is being\ndeleted when the \u0027watch\u0027 command fails).  With the below scenario,\nhaving such a left out breakpoint will lead to a GDB hang, and this\nis due to an infinite loop when deleting all inferior breakpoints.\n\nScenario:\n\t(gdb) set can-use-hw-watchpoints 0\n\t(gdb) awatch \u003cSCOPE VAR\u003e\n\tCan\u0027t set read/access watchpoint when hardware watchpoints are disabled.\n\t(gdb) rwatch \u003cSCOPE VAR\u003e\n\tCan\u0027t set read/access watchpoint when hardware watchpoints are disabled.\n\t(gdb) \u003ccontinue the program until the end\u003e\n\t\u003e\u003e HANG \u003c\u003c\n\nSigned-off-by: Mohamed Bouhaouel \u003cmohamed.bouhaouel@intel.com\u003e\nReviewed-by: Bruno Larsen \u003cblarsen@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c429af455fffe5232ffb454207ae5ae6bd8a97d4",
      "old_mode": 33188,
      "old_path": "gdb/breakpoint.c",
      "new_id": "4b3999a92ee96e4bd209cb8741c6d33c7909b24b",
      "new_mode": 33188,
      "new_path": "gdb/breakpoint.c"
    },
    {
      "type": "modify",
      "old_id": "1a73d08a88723093706b816fd8a1058d4d9e6258",
      "old_mode": 33188,
      "old_path": "gdb/breakpoint.h",
      "new_id": "e75efc90495b2a821a28e4d4ce92763441ba6d8b",
      "new_mode": 33188,
      "new_path": "gdb/breakpoint.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "30956fe1b84966c5b73d3cb1120becb032c3adf2",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.base/scope-hw-watch-disable.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "54ebb4e4226eee43f6432db6ef72575b18525058",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.base/scope-hw-watch-disable.exp"
    }
  ]
}
