(toppers-users 1426) Re: JSPカーネル 1.4のC++バインディングについて

高木信尚 takagi @ oct.zaq.ne.jp
2004年 3月 30日 (火) 14:06:25 JST


宇佐美様

> systask/newlibrt.c の_sbrk_rですが、reent.h内の定義と
> コンフリクトする、というエラーがでます。
> reent.hをインクルードしないことで回避できるようですが
> 問題ないのでしょうか。
> 
> ../systask/newlibrt.c:66: conflicting types for `_sbrk_r'
> /usr/local/sh++/sh-hitachi-elf/sys-include/reent.h:74: 
> previous declaration of `_sbrk_r'
> (改行は適当に変えています)

Newlibの_sbrk_rの第2引数は、1.10.0まではsize_t型だったのですが、
1.11.0以降はptrdiff_t型に変更になっています。これがコンパイル時に
障害が出る原因と思われます。
SHの場合、size_tとptrdiff_tのサイズは必ず同じになるので、ヘッダ
をインクルードしない方法でも実質的には問題ありませんが、より
正確にはnewlibrt.cの_sbrk_r関数の定義を、第2引数がsize_t型になる
ように修正すべきかと思います。

> また、reent.hをインクルードしないように修正して、
> コンパイルした場合、__dso_handleが定義されていないと、
> リンクエラーになります。
> 
> /usr/local/sh++/lib/gcc-lib/sh-hitachi-elf/3.2.3/../../../../
> sh-hitachi-elf/bin/
> ld: jsp.exe: hidden symbol `__dso_handle' isn't defined
> (改行は適当に変えています)
> 
> リンカスクリプトで、適当に定義してやればリンク自体は通るのですが、

** Cut quoted 5 lines by the mail filter. **

crtbegin.oがリンクされていないことが原因と思われます。
MS7727CP01でも起こるとのことですので、configure時に-l c++オプション
を付け忘れた可能性が一番高いのですが、いかがでしょうか?

以上、よろしくお願いいたします。

-------------------
高木信尚