新千葉 ガーベージ・コレクション

FPGA マガジンやインターフェースで書けなかったこと等をちょぼちょぼ書いてます。@ryos36

busybox は動くようになった。

それでも、uClibc を作り直すことはできるようになった。
これで busybox を作り直して uclinux で起動。
ちゃんとうごくようになった。
やっと次のステップに行ける。
TODO
コンパイラ

UCLIBC_CTOR_DTOR を is not set にすると uClibc は crti.o crtn.o を作らなくなる。
するとコンパイラエラーです。仕方がないので、gcc の crti.o と crtn.o をリンクすると
_init _fini が undefined になる。当たり前か。ちゃんと自前で用意しなければいけない。
_init _fini は今はすることはないので空関数にしておしまいにする。

gcc はこの辺巧妙にしていて、アセンブラをサンド一致する形で関数を作っていく。(こともある)
巧妙というか汚いでしょ。

記憶では確か、_init から _fini の間に ?.o がはいっていそれが
順に並ぶことで関数になる例えば、

_init
関数の宣言

?0.o
なんかの初期化処理

?1.o
なんかの初期化処理

_fini
関数のリターン

つまり、_init から _fini までで一つの関数。
なんか forth を思わせるな。

                                                                                • -