netbsd-4-rc1でのgcc4のobjcのマルチスレッド対応状況調査結果
えと、やはり、ダメでした。下記のような、すんごいアホなパッチを当てないと、libobjc.soがシングルスレッド状態になります。
Index: gthr.h =================================================================== RCS file: /cvsroot/src/gnu/dist/gcc4/gcc/gthr.h,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 gthr.h --- gthr.h 20 Apr 2006 08:51:14 -0000 1.1.1.1 +++ gthr.h 3 Sep 2007 17:03:57 -0000 @@ -115,7 +115,10 @@ /* Fallback to single thread definitions. */ #else -#include "gthr-single.h" +/*#error "single"*/ +/*#include "gthr-single.h"*/ +#include "gthr-default.h" + #endif #ifndef HIDE_EXPORTS dia: {15}
これは、明らかにアレでフォールバックを強引にgthr-default.hにかえているだけ。実際は、この上のifdefにHAVE_GTHR_DEFAULTの分岐があり、これをtrueにできればいいのだが。
/* Include GTHREAD_FILE if one is defined. */ #elif defined(HAVE_GTHR_DEFAULT) #if SUPPORTS_WEAK #ifndef GTHREAD_USE_WEAK #define GTHREAD_USE_WEAK 1 #endif #endif #include "gthr-default.h"
もちろん、このgthr-default.hなるものはconfigure&ビルドプロセス中に生成される。gthr-deafult.h自体は、gthr-posix.hをインクルードするだけという内容で生成されているのでちゃんと動いているようなのだが、なぜ、フォールバックになってしまうのかは、突き止めてない。
ともあれ、これでgworkspaceのブラウザからファイルをリサイクラにドロップして削除とかができるようになった。めでたしめでたし。