)]}'
{
  "commit": "702991711a91bd47b209289562843a11e7009396",
  "tree": "b7b71ddfc72ce5ebddc1118cba7f97f3fb2700d8",
  "parents": [
    "e0700ba44c5695d07f4cc9841315adc91ca18bf5"
  ],
  "author": {
    "name": "Lancelot SIX",
    "email": "lsix@lancelotsix.com",
    "time": "Tue Sep 14 23:36:53 2021 +0100"
  },
  "committer": {
    "name": "Lancelot SIX",
    "email": "lsix@lancelotsix.com",
    "time": "Sun Oct 03 17:53:16 2021 +0100"
  },
  "message": "gdb: Have setter and getter callbacks for settings\n\nThe main motivation behind this improvement is to help the\nimplementation of a patch Simon Marchi is preparing to fix a bug when\nMI or Python try to access parameters that are inferior dependent (see\nPR/28085).\n\nThis commit extends the previous ones, which introduces the setting\nobject to represent a static variable whose value can be set or shown\nwith the appropriate commands.  This patch proposes that a setting can\neither contain a pointer to a static variable holding a setting, or\npointers to a pair of setter and getter callback functions.\n\nThe callbacks functions can be used to retrieve or change the value with\ncustom logic.  This is useful when the source of truth for a given\nsetting is not contained in the variable pointed to by the setting\ninstance.\n\nGiven that the callback function call is hidden within the setting\nabstraction introduced earlier, none of the sites accessing the setting\nneeds to be updated.  The registered getter or setter is used whatever\nthe way to access it is (through MI, Python, Guile, the \"with\" command\nand the $_gdb_setting / $_gdb_setting_str convenience functions).\n\nAll the add_setshow_*_cmd are given a new overload that will accept the\npair of function pointers (set / get functions) instead of the pointer\nto a global variable.\n\nTested on GNU/Linux x86_64 with no regression observed.\n\nChange-Id: Ieb81fef57550632ff66e6aa85f637372a226be8c\nCo-authored-by: Simon Marchi \u003csimon.marchi@polymtl.ca\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b3bf62761574d177b06737e1df9c79b641df33e1",
      "old_mode": 33188,
      "old_path": "gdb/cli/cli-decode.c",
      "new_id": "3b0830e4c17f9c005b339de2a8dea12a5b5d9955",
      "new_mode": 33188,
      "new_path": "gdb/cli/cli-decode.c"
    },
    {
      "type": "modify",
      "old_id": "e6e6ec8a5d86991bfa85d561ac2a56c32759b7f9",
      "old_mode": 33188,
      "old_path": "gdb/command.h",
      "new_id": "2abfbc497b9885093dd10d634b49b8ae121242ed",
      "new_mode": 33188,
      "new_path": "gdb/command.h"
    }
  ]
}
