)]}'
{
  "commit": "1139a5c8e7f555cec8bef6475eef7c5209d8d166",
  "tree": "d28f91de53132b596b1deb46567de7333fc1c618",
  "parents": [
    "1cccba5330495625de0268d4c4c87de284c85483"
  ],
  "author": {
    "name": "Pedro Alves",
    "email": "pedro@palves.net",
    "time": "Mon May 22 17:33:16 2023 +0100"
  },
  "committer": {
    "name": "Pedro Alves",
    "email": "pedro@palves.net",
    "time": "Fri Apr 24 21:28:44 2026 +0100"
  },
  "message": "Windows gdb+gdbserver: Make siginfo_er per-thread state\n\nWith non-stop mode support, each thread has its own \"last event\", and\nso printing $_siginfo should print the siginfo of the selected thread.\nLikewise, with all-stop and scheduler-locking.\n\nThis patch reworks the siginfo functions in gdb/windows-nat.c and\ngdbserver/win32-low.cc to reuse the exception record already saved\nwithin each thread\u0027s \u0027last_event\u0027 field.\n\nHere\u0027s an example of what you\u0027ll see after the whole non-stop series:\n\n  (gdb) thread apply all p -pretty -- $_siginfo\n\n  Thread 3 (Thread 2612.0x1470):\n  $1 \u003d {\n    ExceptionCode \u003d DBG_CONTROL_C,\n    ExceptionFlags \u003d 0,\n    ExceptionRecord \u003d 0x0,\n    ExceptionAddress \u003d 0x7ffd0583e929 \u003cKERNELBASE!EncodeRemotePointer+8249\u003e,\n    NumberParameters \u003d 0,\n    {\n      ExceptionInformation \u003d {0 \u003crepeats 15 times\u003e},\n      AccessViolationInformation \u003d {\n\tType \u003d READ_ACCESS_VIOLATION,\n\tAddress \u003d 0x0\n      }\n    }\n  }\n\n  Thread 2 (Thread 2612.0x1704):\n  $2 \u003d {\n    ExceptionCode \u003d SINGLE_STEP,\n    ExceptionFlags \u003d 0,\n    ExceptionRecord \u003d 0x0,\n    ExceptionAddress \u003d 0x7ffd080ad6e4 \u003cntdll!ZwDelayExecution+20\u003e,\n    NumberParameters \u003d 0,\n    {\n      ExceptionInformation \u003d {0 \u003crepeats 15 times\u003e},\n      AccessViolationInformation \u003d {\n\tType \u003d READ_ACCESS_VIOLATION,\n\tAddress \u003d 0x0\n      }\n    }\n  }\n\n  Thread 1 (Thread 2612.0x434):\n  $3 \u003d {\n    ExceptionCode \u003d BREAKPOINT,\n    ExceptionFlags \u003d 0,\n    ExceptionRecord \u003d 0x0,\n    ExceptionAddress \u003d 0x7ff6f691174c \u003cmain+185\u003e,\n    NumberParameters \u003d 1,\n    {\n      ExceptionInformation \u003d {0 \u003crepeats 15 times\u003e},\n      AccessViolationInformation \u003d {\n\tType \u003d READ_ACCESS_VIOLATION,\n\tAddress \u003d 0x0\n      }\n    }\n  }\n  (gdb)\n\nThis was in non-stop mode, and the program originally had two threads.\nThread 1 stopped for a breakpoint, then thread 2 was manually\ninterrupted/paused and then single-stepped.  And then I typed Ctrl-C\nin the inferior\u0027s terminal, which made Windows inject thread 3 in the\ninferior, and report a DBG_CONTROL_C exception for it.\n\nApproved-By: Tom Tromey \u003ctom@tromey.com\u003e\nChange-Id: I5d4f1b62f59e8aef3606642c6524df2362b0fb7d\ncommit-id:e0f75dea\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7eff99170fc1d698680168e0afccd3653728903c",
      "old_mode": 33188,
      "old_path": "gdb/nat/windows-nat.c",
      "new_id": "1f8967dcd8d5ed1649170cc2fc998b4304269bc1",
      "new_mode": 33188,
      "new_path": "gdb/nat/windows-nat.c"
    },
    {
      "type": "modify",
      "old_id": "8555085c9f7593e629a90e444dafab865eb7028c",
      "old_mode": 33188,
      "old_path": "gdb/nat/windows-nat.h",
      "new_id": "152410580f00f011f41ab0d6efad13ac15cdc66c",
      "new_mode": 33188,
      "new_path": "gdb/nat/windows-nat.h"
    },
    {
      "type": "modify",
      "old_id": "b5e80139c26185b7e399cda0fcc7b9130dbec4b9",
      "old_mode": 33188,
      "old_path": "gdb/windows-nat.c",
      "new_id": "1593524f90069daab4ff121f84ec9ff4a731ea3b",
      "new_mode": 33188,
      "new_path": "gdb/windows-nat.c"
    },
    {
      "type": "modify",
      "old_id": "5e09779082c92a7fc446d0f15b21c248c0478cab",
      "old_mode": 33188,
      "old_path": "gdbserver/win32-low.cc",
      "new_id": "cc4a63319efffd51db8480196962cde855141457",
      "new_mode": 33188,
      "new_path": "gdbserver/win32-low.cc"
    }
  ]
}
