)]}'
{
  "commit": "b7f5cd3bbb51e03dd1f8a90dcc9f7c632b5e1054",
  "tree": "6d0145a6f11084689e4f98a007084d5bc4f2b587",
  "parents": [
    "a394c23a5182a804476a2b8ec0f8264ecae6dc4f"
  ],
  "author": {
    "name": "Pali Rohár",
    "email": "pali.rohar@gmail.com",
    "time": "Sat Sep 05 21:05:02 2026 +0200"
  },
  "committer": {
    "name": "LIU Hao",
    "email": "lh_mouse@126.com",
    "time": "Mon Sep 28 14:27:30 2026 +0800"
  },
  "message": "crt: tls: Move _register_thread_local_exe_atexit_callback into own source unit and do not call it for DLL builds\n\nAdd a new internal function __mingw_register_thread_local_exe_atexit_callback\nwhich will call the CRT _register_thread_local_exe_atexit_callback() function\nwith the mingw-w64 supplied callback function. Supplied callback function\nfor now just calls the __mingw_cxa_atexit_callback_ptr (which is pointer to\nthe tls_atexit_callback) previously directly passed as argument to\n_register_thread_local_exe_atexit_callback().\n\nStores pointer of the __mingw_register_thread_local_exe_atexit_callback\ninto the tentative __mingw_register_thread_local_exe_atexit_callback_ptr\nvariable and call it from crtexe.c on demand when is linked into final\nexectuable. And reference the __mingw_register_thread_local_exe_atexit_callback\nsymbol from tls_atexit.c where is the __mingw_cxa_atexit_callback_ptr\ndefined and expected to be __mingw_register_thread_local_exe_atexit_callback\ncalled from CRT EXE startup code.\n\nWith these tenative definitions, the _register_thread_local_exe_atexit_callback()\nwould be included in final binary image only if the callback is really\nrequired and only for EXE builds.\n\nBefore this change the _register_thread_local_exe_atexit_callback() with\ntls_atexit_callback argument was called from PE TLS DLL_PROCESS_ATTACH\ncallback. After this change, _register_thread_local_exe_atexit_callback()\n(with new mingw-w64 callback which calls tls_atexit_callback via\n__mingw_cxa_atexit_callback_ptr) is called from new function\n__mingw_register_thread_local_exe_atexit_callback() which is called from\nCRT EXE startup code (crtexe.c).\n\nAlso extend documentation for tls_atexit_callback and tls_callback.\n\nSigned-off-by: LIU Hao \u003clh_mouse@126.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "07c050d63de300ba0e0a52a1912aada0b7a5dd73",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/Makefile.am",
      "new_id": "b1963724edd3433318996e70ec8c6f17b346b466",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/Makefile.am"
    },
    {
      "type": "modify",
      "old_id": "af7a477722978f64df6cf1100dac8e5a839f6815",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/crt/crtdll.c",
      "new_id": "15ee52a7c3348bdd64b7c4ecb0cbe626e6f8d092",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/crt/crtdll.c"
    },
    {
      "type": "modify",
      "old_id": "e7dbcff82131eceb2b86254161628d91ce04b147",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/crt/crtexe.c",
      "new_id": "ca9b0069160c14aca643a860386c9d5180fcbd0c",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/crt/crtexe.c"
    },
    {
      "type": "modify",
      "old_id": "44dd5c83e65547c605d01e0e9b72e59dc4b995fb",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/crt/tls_atexit.c",
      "new_id": "bb0390fa0c6a4a94d30aec5d802e14eaa4bbf9e1",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/crt/tls_atexit.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fa9d2707374693cd7b04ce1b9467cd31de982680",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/crt/tls_exe_atexit_callback.c"
    }
  ]
}
