)]}'
{
  "commit": "7ee28b5aee4eaadffadf1df9a555a7737e5e744c",
  "tree": "3e456d19e45501dffe5a5c3d939a2d882a144b5e",
  "parents": [
    "4bc27f4de26cbd254dec1acde15d983f6bea189c"
  ],
  "author": {
    "name": "Hannes Domani",
    "email": "ssbssa@yahoo.de",
    "time": "Sun Aug 23 18:51:23 2026 +0200"
  },
  "committer": {
    "name": "Hannes Domani",
    "email": "ssbssa@yahoo.de",
    "time": "Sun Aug 23 18:51:23 2026 +0200"
  },
  "message": "Prevent downgrading of hardware watchpoints if possible\n\nThe lazy flag of a value can tell us if the value contents are available.\nBut this could be either because it was simply never actually accessed,\nor it tried to be accessed, and failed.\nThe latter are interesting for watchpoints, the former are not.\n\nCurrently it only uses lazy values if they are at the head of the value\nchain, but this is fragile logic, and degrades some watchpoints to\nsoftware watchpoints where it\u0027s actually not necessary.\n\nSo this adds a new value flag \u0027m_fetch_lazy_failed\u0027 which tells if the\nwatchpoint expression actually tried to access the value and failed.\nAnd this is used instead of the value chain location to tell if a lazy\nvalue should be used as a watchpoint location.\n\nBug: https://sourceware.org/bugzilla/show_bug.cgi?id\u003d27423\nTested-By: Guinevere Larsen \u003cguinevere@redhat.com\u003e\nReviewed-by: Thiago Jung Bauermann \u003cthiago.bauermann@linaro.org\u003e\nApproved-By: Tom Tromey \u003ctom@tromey.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6ca196133fd9c048ab6ca03320cf4fb190ddba4d",
      "old_mode": 33188,
      "old_path": "gdb/breakpoint.c",
      "new_id": "ca65d7e135dd9dc0bfb8fdf214a83581293dc00f",
      "new_mode": 33188,
      "new_path": "gdb/breakpoint.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cfff2a44f9035e8d86f1dea688583b77415dd4e2",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.base/watchpoint-hw-no-degradation.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9c545e22e2d5e49299d34e7b1ecce5e6bcde0159",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.base/watchpoint-hw-no-degradation.exp"
    },
    {
      "type": "modify",
      "old_id": "1f6d7949d4d91a79f832d47523b48f7a913725c5",
      "old_mode": 33188,
      "old_path": "gdb/value.c",
      "new_id": "e4e3e407ddcf22d64d1ab2a0f55b6e2efbf8cd37",
      "new_mode": 33188,
      "new_path": "gdb/value.c"
    },
    {
      "type": "modify",
      "old_id": "4cc0d7d0902baef52bfa2b12fb0f5012d00a1e28",
      "old_mode": 33188,
      "old_path": "gdb/value.h",
      "new_id": "01a4c00d722490c497b91d50b6024d2070e64dad",
      "new_mode": 33188,
      "new_path": "gdb/value.h"
    }
  ]
}
