(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++オプション
を付け忘れた可能性が一番高いのですが、いかがでしょうか?
以上、よろしくお願いいたします。
-------------------
高木信尚