コンパイラオプションの不足について

40 views
Skip to first unread message

猫島

unread,
Jun 3, 2023, 12:09:37 PM6/3/23
to KOZOS友の会
初めまして。吉田と申します。
『組み込みOS自作入門』の11thステップを学習している中で1点疑問があり、
コンパイラオプションが不足しているのではないかと思ったため連絡いたします。

本書では11.3.3 メッセージ送受信処理のリスト11.9内で、kz_msgbox構造体のサイズを2のべき乗に揃えています。
2のべき乗でない場合は、構造体の配列のインデックス計算に乗算が使われて「__mulsi3が無い」などのリンクエラーになると記載されてあります。

GNUのコンパイラオプションの説明を読むと、本書のコンパイラオプションで指定している「-nostdlib」で標準ライブラリを使用しない場合、libgcc.aは必須のため「-lgcc」を指定しするよう記載があります。
https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#index-nostdlib

さらに、以下のリンク先の「MULSI3_LIBCALL」の説明を見ると、__mulsi3はlibgcc.aの中で定義されているようです。
https://gcc.gnu.org/onlinedocs/gcc-3.2.3/gccint/Library-Calls.html

上記から、コンパイラオプションに「-lgcc」がないために乗算計算のリンクエラーが発生するようなので、コンパイラオプションには「-lgcc」が必要ではないでしょうか?
(私の環境ではリンクエラーが再現できなかったので確認はできていません)

本書のパディングにより問題を回避できるので、特に問題があるわけではないですが、気になったので確認させてください。
Reply all
Reply to author
Forward
0 new messages