)]}'
{
  "commit": "25bb95ea6ddc3cef73da3823efe4acfce4e56d2c",
  "tree": "d321d63f1aec73457b22a8053a1a4b8fdec0cc85",
  "parents": [
    "e875d98ee5162d23165e243939092401f10dab9b"
  ],
  "author": {
    "name": "Guinevere Larsen",
    "email": "blarsen@redhat.com",
    "time": "Wed Nov 01 17:29:22 2023 +0100"
  },
  "committer": {
    "name": "Guinevere Larsen",
    "email": "blarsen@redhat.com",
    "time": "Tue Dec 19 13:57:16 2023 +0100"
  },
  "message": "gdb: register frame_destroyed function for amd64 gdbarch\n\ngdbarches usually register functions to check when a frame is destroyed\nwhich is used with software watchpoints, since the expression of the\nwatchpoint is no longer vlaid at this point.  On amd64, this wasn\u0027t done\nanymore because GCC started using CFA for variable locations instead.\n\nHowever, clang doesn\u0027t use the CFA and instead relies on specifying when\nan epilogue has started, meaning software watchpoints get a spurious hit\nwhen a frame is destroyed. This patch re-adds the code to register the\nfunction that detects when a frame is destroyed, but only uses this when\nthe producer is LLVM, so gcc code isn\u0027t affected. The logic that\nidentifies the epilogue has been factored out into the new function\namd64_stack_frame_destroyed_p_1, so the frame sniffer can call it\ndirectly, and its behavior isn\u0027t changed.\n\nThis can also remove the XFAIL added to gdb.python/pq-watchpoint tests\nthat handled this exact flaw in clang.\n\nCo-Authored-By: Andrew Burgess \u003caburgess@redhat.com\u003e\nApproved-By: Andrew Burgess \u003caburgess@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4b9dbbab66e87562c26c4573107536b546521d1e",
      "old_mode": 33188,
      "old_path": "gdb/amd64-tdep.c",
      "new_id": "0d2e02a496b84bb49c2a4dc43944f851801473e6",
      "new_mode": 33188,
      "new_path": "gdb/amd64-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "5ff61285979e5eeb3d230d0e5bf5ed735ceeed2a",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/gdb.python/py-watchpoint.exp",
      "new_id": "9a6ef4475722ad44a3e438c1f41ca6e59f83eb13",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.python/py-watchpoint.exp"
    }
  ]
}
