DLLエントリポイントいろいろ解決

  1. 動的コード生成でDLLエントリポイントを呼ぶようになった
  2. Yumeさんが対応してくれて、MONALIBC.DLLがStream初期化コードを呼ぶようになった
  3. ところが Mona のPE動的リンカのバグでリンクエラーに。
  4. バグ修正
  5. リンクは通るがNULLアクセスで落ちる
  6. DLLエントリポイントが call された時点ではメモリ初期化処理を呼ばれていないので operator new 呼出しで死んでいた
  7. MONAPI.DLLのdllmainでメモリ初期化処理を呼ぶようにした(Makefileで -e _dllmainするの忘れててさらにハマる)
  8. 全部直った!(気がする)

というわけで

  • monalibcの dllmainが正しく呼ばれるようになりました
  • crt/crt.cpp において
	monapi_initialize_memory(64*1024*1024);

と呼んでいますが、dll経由の場合はMONAPI.DLLのdllmainからその関数は既に call されますので、 extern "C" int memoryInitialized変数を参照するようにした方が良いかもです.


お手数ですが確認をおねがいします。
id:shotaro_tsuji

おまけ

_printfというのを用意しました。syscall_print につながっているので信頼できます(何

ん?

まだ print hello が動かないね.
なんだろ。