)]}'
{
  "commit": "a0ba64d0ce512a2801a3152cdbabb9b355c4e029",
  "tree": "09b459ade444cd44104797582e2d8afb89d2fc1e",
  "parents": [
    "b7f5cd3bbb51e03dd1f8a90dcc9f7c632b5e1054"
  ],
  "author": {
    "name": "Pali Rohár",
    "email": "pali.rohar@gmail.com",
    "time": "Sat Sep 05 20:45:32 2026 +0200"
  },
  "committer": {
    "name": "LIU Hao",
    "email": "lh_mouse@126.com",
    "time": "Mon Sep 28 14:27:30 2026 +0800"
  },
  "message": "crt: tls: Call __dyn_tls_dtor also from the thread_local_exe_atexit_callback\n\nmsvc/UCRT calls the __dyn_tls_dtor function two times, once during the\nexit() call via thread_local_exe_atexit_callback and second time from the\nPE TLS callback.\n\nSo do the same thing in mingw-w64. Stores the __dyn_tls_dtor pointer into\nthe tentative __dyn_tls_dtor_callback variable, so it can be referenced and\ncalled on demand. msvc also provides the __dyn_tls_dtor_callback symbol.\n\nNote that __dyn_tls_dtor has already guard which prevents duplicate\nexecution of individual callbacks.\n\nThis change fixes execution order of atexit and __dyn_tls_dtor callbacks by\nexecuting all __dyn_tls_dtor callbacks before atexit callbacks. This\nmatches the msvc behavior.\n\nSigned-off-by: LIU Hao \u003clh_mouse@126.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fa9d2707374693cd7b04ce1b9467cd31de982680",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/crt/tls_exe_atexit_callback.c",
      "new_id": "9db49ac539f7937b4b03800a92c04f694d6de17b",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/crt/tls_exe_atexit_callback.c"
    },
    {
      "type": "modify",
      "old_id": "22880ce153e9ca66ed352c35c75fac841ddb2e45",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/crt/tlsdtor.c",
      "new_id": "2441590e9d18de2e62779ae0a3072cb71f1e716a",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/crt/tlsdtor.c"
    }
  ]
}
