[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 3088] from OSASK BOARD



このメールは、OSASK伝言板に書き込まれた内容です。
この書き込みに返事を書く場合は、下のURLから書き込みを行なって下さい。


http://www.imasy.or.jp/~mone/osask/index.cgi?REFER=3c57fe0d_179a1

From: 川合秀実
Message-ID: 3c57fe0d_179a1
Date: 2002/01/30 23:07
Subject: Re: nlink.c

[OSASK 3084]へのレスです。

>というのも、mingwの吐き出すobjファイルが
>mingw(cygwin?)独自のスタートアップルーチン(___main)を
>要求してきていまして、
>それがリンクできないので起動時に落ちてしまうようです。

 なるほど。まあ、よくある話です。こんなことくらいでめげてはいけません。
lcc-win32でもこういうことがあって、それでlccwin32.libなどというものを用
意したりしているんですから。

 一応念を押したいのですが、helloc4.cのコンパイルに際して、mingwにリリー
スモードを指示したんですよね?もしデバッグモードになっていたら、いろいろ
と余計なルーチンを要求してきますので。

 それで、そのスタートアップルーチンは誰から呼び出されているんでしょうか
?やっぱりmain()かな?・・・じゃあ、仮に、main()をソースに含まないように
したら(たとえば代わりにmain2()などとして)、そのスタートアップルーチン
は要求されないで済むんでしょうか?・・・これで回避できるなら、guigui00.r
ulのlabel:セクションを_main2;に変えれば済むことです。

 もしどうやっても___mainを要求してくるようなら、ダミーの___mainを作って
しまえばいいのですが、本来、このスタートアップルーチンは何をしているんで
しょうか?それがOSASKの場合でも必要なことなら、ダミールーチンを作る際に
配慮しなければいけません。・・・これをはっきりさせるには、mingwのライブ
ラリーの中から___mainを含んでいる.oファイルを探し出して、逆アセンブルす
るしかないでしょう。

 ダウンロードしたnlink.exeを試してみましたが、

0x00000048 : (gcc2_compiled.)
0x00000048 : (___gnu_compiled_c)

や、.textなどという怪しいラベルをリンクしようとしているようです。これは
平気なんでしょうか?ちょっと心配なんですが・・・。

 もうあと一歩というところまで来ているみたいですから、どうか目的を達成し
てほしいです。応援しています。