(toppers-users 2042) Re: cxx_sample1でBus erroeが出てしまいます

高木信尚 takagi-n @ biggie.jp
2005年 7月 5日 (火) 12:23:57 JST


新井田様

現時点では当て推量でしかないのですが、気になった点がいくつかあります。

>  C++で開発を行いたいため、サンプルのcxx_sample1をコンパイルして動かしてみた
> のですが、gdbで以下のようになり、すぐに止まってしまいます。

止まってしまうのはバナー出力の前でしょうか?後でしょうか?
タスク起動の前後で、考えられる原因が変わってきます。

> (gdb) load
> Loading section .text, size 0xdc80 lma 0xc004000 Loading 
> section .data, size 0x7d8 lma 0xc100000 Loading section 
> .init, size 0x36 lma 0x0 Loading section .fini, size 0x2a lma 
> 0xc011c80 Loading section .rodata, size 0xf9a lma 0xc011cac 

.initセクションが0x0番地になっているようです。
.textの前後になるようにリンカスクリプトを調整してください。
ただ、今回の問題と直接関係があるかどうかは何ともいえません。

> Program received signal SIGBUS, Bus error.
> _malloc_r (reent_ptr=0x80080, bytes=59)

reent_ptrの値を見ると、.bssセクションが変なところに割り付けられているような気がします。
_end (.bssの終端アドレス)とスタック領域の前後関係によっても動作不良の原因になります。

STACKTOPの定義と、.bssおよび_endの定義が分かれば、ある程度見えてくるかもしれません。

>  使用しているのは、
>  北斗電子製 SH7727 スターターキット
>  それに添付された開発環境に SourceForge.jp からダウンロードした
> sh-hitachi-elf_toppers_cygwin-1.tar を入れています。
>  GDB のバージョンは6.0です。

SourceForge.jpのものは、最終版だったかどうか記憶があいまいです。
多分大丈夫だと思いますが、あまり自信はありません。
なお、パッチ適用済みのバイナリは、近いうちに何らかの形で提供できるように
したいと考えています。

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