Fork me on GitHub

2009/06/22

Recent entries from same category

  1. perldocのbash-completionが激しく便利でうれしょん出た。 Hatena
  2. Perl音痴な私がPerlを使っている理由 Hatena
  3. TatsumakiとDUI Streamを使って画像ストリーミングサーバ作ってみた。 Hatena
  4. のび太の物は俺の物。俺の物は俺の物。 Hatena
  5. Plackで高速サーバがWindowsでも動くようにした Hatena

はてな
VCだとビルド出来るらしいけど、strawberry perlとかだとコンパイル出来ない。
まずCoro側のpatch。
diff -ur Coro-5.132.orig/Coro/libcoro/coro.c Coro-5.132/Coro/libcoro/coro.c
--- Coro-5.132.orig/Coro/libcoro/coro.c 2008-11-19 11:50:13.000000000 +0900
+++ Coro-5.132/Coro/libcoro/coro.c  2009-06-19 15:01:16.140625000 +0900
@@ -228,6 +228,9 @@
   #if __CYGWIN__
     ctx->env[7] = (long)((char *)sptr + ssize) - sizeof (long);
     ctx->env[8] = (long)coro_init;
+  #elif defined(__MINGW32__)
+    ctx->env[4] = (int)((unsigned char *)sptr + ssize);
+    ctx->env[5] = (long)coro_init;
   #elif defined(_M_IX86)
     ((_JUMP_BUFFER *)&ctx->env)->Eip   = (long)coro_init;
     ((_JUMP_BUFFER *)&ctx->env)->Esp   = (long)STACK_ADJUST_PTR (sptr, ssize) - sizeof (long);
mingw32のjumpbufは4番目がEipで5番目がEspだったはず。
一応手元で動いてます。
あとこのままでも駄目で、ExtUtils::MakeMakerがgccの時に付けてしまう--image-baseオプションがまずい。
アドレスの作り方が Coro::Event であれば Event という文字列に対して上位4バイト、下位4バイトで分けてunpackとかやってござる。
    if ($GCC) {
        my $dllname = $self->{BASEEXT} . "." . $self->{DLEXT};
        $dllname =~ /(....)(.{0,4})/;
        my $baseaddr = unpack("n", $1 ^ $2);
        $otherldflags .= sprintf("-Wl,--image-base,0x%x0000 ", $baseaddr);
    }
なので、Coro::Event が使っている Event というモジュールと --image-base がバッティングして起動時にメモリロケーション不正参照のエラーが起きる。
こちらについては、ExtUtils::MakeMakerに含まれる MM_Win32.pm を修正する。最近の gcc は勝手に --image-base 作ってくれるので、そちらに任せる。
--- MM_Win32.pm.orig    2009-06-22 17:48:43.906250000 +0900
+++ MM_Win32.pm 2009-06-22 17:49:05.703125000 +0900
@@ -307,12 +307,12 @@
 # we try to overcome non-relocateable-DLL problems by generating
 #    a (hopefully unique) image-base from the dll's name
 # -- BKS, 10-19-1999
-    if ($GCC) {
-       my $dllname = $self->{BASEEXT} . "." . $self->{DLEXT};
-       $dllname =~ /(....)(.{0,4})/;
-       my $baseaddr = unpack("n", $1 ^ $2);
-       $otherldflags .= sprintf("-Wl,--image-base,0x%x0000 ", $baseaddr);
-    }
+#    if ($GCC) {
+#      my $dllname = $self->{BASEEXT} . "." . $self->{DLEXT};
+#      $dllname =~ /(....)(.{0,4})/;
+#      my $baseaddr = unpack("n", $1 ^ $2);
+#      $otherldflags .= sprintf("-Wl,--image-base,0x%x0000 ", $baseaddr);
+#    }
 
     push(@m,'
 # This section creates the dynamically loadable $(INST_DYNAMIC)
SYNOPSISの例でもちゃんと動きます。

あとはバグ報告から上手く修正されれば...

blog comments powered by Disqus
WriteBacks

自宅仕事

自宅で仕事歴12年の主婦が自宅でお仕事探しのお手伝いをします

Posted by 自宅仕事 at 2009/06/23 (Tue) 19:07:41

チームや我が子のバッティングが上達する練習法

子供たちが間違いなく上達していきます。 東京都 少年野球監督 Mさん 42歳 軟式の学童野球を指導しているMと申します。打撃の指導は感覚的な内容も多いので難しく、行き詰っていたところへ、ポイントを得た内容で本当に助かりました。 ビデオ(DVD)にはつま先→膝→腰→肩→頭と部分的に意識をもってアドバイスを与えたり、その子の特徴に応じた練習法を紹介してあり、「こんな練習法もあるのか」と、とても参考になりました。 今後も子ども達とともに、練習して、又、アメリカ遠征に子ども達を連れて参加したいと思います。 期間 チーム打率 A君の打率 B君の打率 以前の成績 .193 .185 .157 1ヶ月目 .259 .286 .250 2ヶ月目 .298 .308 .318 3ヶ月目 .355 .389 .400 3ヶ月平均 .304 .327 .323 → 詳しくはこちら

Posted by 元巨人軍コーチのレッスンプロの方法を動画で[佐野式少年野球最新バッティング指導法]佐野元国 at 2009/06/24 (Wed) 22:22:30

TrackBack ping me at
Post a comment

writeback message: Ready to post a comment.