)]}'
{
  "commit": "da729c5ccde6eeccae539cbe51a285bc84769b3d",
  "tree": "e26b17b3329d87fb5335f666faa64e610cbb0564",
  "parents": [
    "0a30596cfad9cd221a81eea984b6fe3fabb20b95"
  ],
  "author": {
    "name": "Tom Tromey",
    "email": "tromey@adacore.com",
    "time": "Mon Mar 07 14:06:09 2022 -0700"
  },
  "committer": {
    "name": "Tom Tromey",
    "email": "tromey@adacore.com",
    "time": "Fri Mar 18 11:01:43 2022 -0600"
  },
  "message": "Implement gdbarch_stack_frame_destroyed_p for aarch64\n\nThe internal AdaCore testsuite has a test that checks that an\nout-of-scope watchpoint is deleted.  This fails on some aarch64\nconfigurations, reporting an extra stop:\n\n    (gdb) continue\n    Continuing.\n\n    Thread 3 hit Watchpoint 2: result\n\n    Old value \u003d 64\n    New value \u003d 0\n    0x0000000040021648 in pck.get_val (seed\u003d0, off_by_one\u003dfalse) at [...]/pck.adb:13\n    13\t   end Get_Val;\n\nI believe what is happening here is that the variable is stored at:\n\n    \u003cefa\u003e   DW_AT_location    : 2 byte block: 91 7c \t(DW_OP_fbreg: -4)\n\nand the extra stop is reported just before a return, when the ldp\ninstruction is executed:\n\n   0x0000000040021644 \u003c+204\u003e:\tldp\tx29, x30, [sp], #48\n   0x0000000040021648 \u003c+208\u003e:\tret\n\nThis instruction modifies the frame base calculation, and so the test\npicks up whatever memory is pointed to in the callee frame.\n\nImplementing the gdbarch hook gdbarch_stack_frame_destroyed_p fixes\nthis problem.\n\nAs usual with this sort of patch, it has passed internal testing, but\nI don\u0027t have a good way to try it with dejagnu.  So, I don\u0027t know\nwhether some existing test covers this.  I suspect there must be one,\nbut it\u0027s also worth noting that this test passes for aarch64 in some\nconfigurations -- I don\u0027t know what causes one to fail and another to\nsucceed.\n\n\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3f3a65240c013bead956f0a5b12253dae0a863a5",
      "old_mode": 33188,
      "old_path": "gdb/aarch64-tdep.c",
      "new_id": "b714f6194b653e349ada1cbfb6aafaa19a3dff0e",
      "new_mode": 33188,
      "new_path": "gdb/aarch64-tdep.c"
    }
  ]
}
