This is the mail archive of the
mailing list for the GCC project.
Contribute to GCC - the MCF thread model for MinGW targets
- From: "lh mouse"<lh_mouse at 126 dot com>
- To: "gcc"<gcc at gcc dot gnu dot org>, "mingw-w64-public"<mingw-w64-public at lists dot sourceforge dot net>
- Cc: "Kai Tietz"<ktietz70 at googlemail dot com>
- Date: Sun, 12 Jun 2016 14:47:18 +0800
- Subject: Contribute to GCC - the MCF thread model for MinGW targets
- Authentication-results: sourceware.org; auth=none
Hello GCC developers,
I have implemented a gthread library for both the i686 and x86_64 MinGW targets, which supports all c++0x thread features required by <gthr.h>.
This library is experimental and stil lrequires testing. However Kai suggested I donate it to the FSF so it could be merged into the GCC upstream.
I am looking at this https://gcc.gnu.org/contribute.html , but here I have a few questions:
0) Legal Prerequisites
In order to add a new thread model, a new library has to be introduced since on Windows TLS destructors can't be implemented without either hacking the CRT or using a shared library.
The source code of the mcfgthread library can be found here: https://github.com/lhmouse/mcfgthread .
It is essential to link against this library dynamically. All headers of this library are put into the public domain and the rest are licensed under the GNU LGPL. See MCFLicense.txt for details.
Adding a new thread model requires modifying GCC source.
The patch can be found here: https://github.com/lhmouse/MINGW-packages/blob/mcfgthread/mingw-w64-gcc-git/9000-gcc-6-branch-Added-mcf-thread-model-support-from-mcfgthread.patch
Because it applies to GCC source, I would grant you GCC developers the right to do whatever you want with this patch, including re-licensing.
Is this sufficient?
1) About 'Coding Standards':
Most code is done in the mcfgthread library and I try to keep modification of GCC source as little as possible.
Thus, do I still have to have regard for the GNU coding standard in the standalone library? I have my own coding style indeed.
I will accept any of your suggestions for the patch to the GCC source, of course.
2) About 'Testing Patches':
mcfgthread fails the following test: gcc/libstdc++-v3/testsuite/30_threads/recursive_mutex/unlock/1.cc
This test tries to unlock an unlocked recursive_mutex. According to ISO C++ this is undefined behavior and it causes an assertion failure (thus abnormal termination) in mcfgthread.
The source code of __gthread_recursive_mutex_unlock() function can be found here: https://github.com/lhmouse/mcfgthread/blob/master/src/env/gthread.h#L171
I suggest we drop this test. Any further discussion is welcome.