)]}'
{
  "commit": "886ebc2b1f226d1ca06a3f0192cd1663c46428b0",
  "tree": "0585acc88adca47e983c52a81c4f9e980d53e384",
  "parents": [
    "19b5accc3f85734e381d381d38f028c3379fa3a3"
  ],
  "author": {
    "name": "Hui Li",
    "email": "lihui@loongson.cn",
    "time": "Mon Nov 25 15:40:03 2024 +0800"
  },
  "committer": {
    "name": "Tiezhu Yang",
    "email": "yangtiezhu@loongson.cn",
    "time": "Mon Nov 25 19:15:02 2024 +0800"
  },
  "message": "gdb: LoongArch: Add basic process record/replay support\n\nGDB provides a special process record and replay target that can\nrecord a log of the process execution, and replay it later with\nboth forward and reverse execution commands. This patch adds the\nbasic support of process record and replay on LoongArch, it allows\nusers to debug basic LoongArch instructions and provides reverse\ndebugging support.\n\nHere is a simple example on LoongArch:\n\n$ cat test.c\nint a \u003d 0;\nint main()\n  {\n    a \u003d 1;\n    a \u003d 2;\n    return 0;\n  }\n$ gdb test\n...\n(gdb) start\n...\nTemporary breakpoint 1, main () at test.c:4\n4\t    a \u003d 1;\n(gdb) record\n(gdb) p a\n$1 \u003d 0\n(gdb) n\n5\t    a \u003d 2;\n(gdb) n\n6\t    return 0;\n(gdb) p a\n$2 \u003d 2\n(gdb) rn\n5\t    a \u003d 2;\n(gdb) rn\n\nReached end of recorded history; stopping.\nBackward execution from here not possible.\nmain () at test.c:4\n4\t    a \u003d 1;\n(gdb) p a\n$3 \u003d 0\n(gdb) record stop\nProcess record is stopped and all execution logs are deleted.\n(gdb) c\nContinuing.\n[Inferior 1 (process 129178) exited normally]\n\nSigned-off-by: Hui Li \u003clihui@loongson.cn\u003e\nApproved-By: Guinevere Larsen \u003cguinevere@redhat.com\u003e (record-full)\nApproved-By: Tom Tromey \u003ctom@tromey.com\u003e\nSigned-off-by: Tiezhu Yang \u003cyangtiezhu@loongson.cn\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "62df71b13fa142b9f775c4970ee71a31573cb19b",
      "old_mode": 33188,
      "old_path": "gdb/configure.tgt",
      "new_id": "2d78c1182faba669dcf2766574bc9c116493798a",
      "new_mode": 33188,
      "new_path": "gdb/configure.tgt"
    },
    {
      "type": "modify",
      "old_id": "715780603034c310f52071760741fc3245ad94ef",
      "old_mode": 33188,
      "old_path": "gdb/loongarch-linux-tdep.c",
      "new_id": "86e7ed8a0bc4645c8e73c5e9da8dde61cdf894a3",
      "new_mode": 33188,
      "new_path": "gdb/loongarch-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "c50dd7f4b78338bee18812dcc7b105b201c32f77",
      "old_mode": 33188,
      "old_path": "gdb/loongarch-tdep.c",
      "new_id": "c1b3a1f239c64f843a87f9d081ab92cc17e11c88",
      "new_mode": 33188,
      "new_path": "gdb/loongarch-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "5c8108182ad6b44c520f5c14229c0348b2a49ad9",
      "old_mode": 33188,
      "old_path": "gdb/loongarch-tdep.h",
      "new_id": "a148363c795f0dab33ce8b08dd2668b3dba090fc",
      "new_mode": 33188,
      "new_path": "gdb/loongarch-tdep.h"
    },
    {
      "type": "modify",
      "old_id": "2b27d7fc9e786d5d337714c2d9ebe4c182f5525e",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/lib/gdb.exp",
      "new_id": "127ab27210076dfa1cc286e6e7e032ef8de7bbd1",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/lib/gdb.exp"
    }
  ]
}
