)]}'
{
  "commit": "6ded96c2a5c1666bb6fbd7e793e1cc61acdcc6d7",
  "tree": "b6b0e7979e031206a271238a756fe44ae2d939dc",
  "parents": [
    "8ae96588712f3c7fba9dcc8199f4e37f658ff03a"
  ],
  "author": {
    "name": "Jeremy Drake",
    "email": "jeremyd2019@users.sourceforge.net",
    "time": "Tue Oct 27 13:55:20 2020 -0700"
  },
  "committer": {
    "name": "Martin Storsjö",
    "email": "martin@martin.st",
    "time": "Wed Nov 11 12:42:37 2020 +0200"
  },
  "message": "crt: Make tls_atexit.c to use explicit Tls function calls instead of using automatic thread local storage\n\nThe automatic thread local storage worked just fine when using\nnative TLS (as clang does by default), but fails when using emutls\n(which is the default in GCC).\n\nThe TLS callback function for DLL_THREAD_DETACH is called after emutls\nhas already cleaned up for the thread, so the tls_dtors were always NULL\nat that time. Work around this by using Windows native TlsAlloc and\nfriends.\n\nThis didn\u0027t seem like an issue originally, as GCC/libstdc++ seemed to\nkeep using its own function. However that was an incorrect conclusion;\nwhen building a cross compiler, libstdc++ always provides the\n__cxa_thread_atexit function, but if building GCC/libstdc++ natively,\nit tries to detect the presence of the __cxa_thread_atexit, and if found,\nit omits providing it in libstdc++, using the one from mingw-w64-crt\ninstead.\n\nFixes https://sourceforge.net/p/mingw-w64/bugs/859/\n\nSigned-off-by: Jeremy Drake \u003cjeremyd2019@users.sourceforge.net\u003e\nSigned-off-by: Martin Storsjö \u003cmartin@martin.st\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1241b56731743b9b88beac9dacedec6b76f2490c",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/crt/tls_atexit.c",
      "new_id": "f39731ad76f3a07be34432132d9139702e844cca",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/crt/tls_atexit.c"
    }
  ]
}
