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

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


高木です。

> No symbol "_end" in current context.と言われてしまいました。やはり何か違って
> いるのかもしれません。

jsp/systask/newlibcrt.cの_sbrk_r内でブレークを張って、&endを調べればアドレスが
分かるかと思います。
あるいはsh-hitachi-elf-nmを使うなどして、シンボルを調べる手もあります。

> リンカスクリプトも実は内容がよくわからないまま
> sh-hitachi-elf/lib/ldscripts/shelf.x の該当するセクションを持ってきただけの
> ような感じです。

リンカスクリプトはかなりデリケートなので、できればjsp/config/sh3/shlelf.ldをもとに
した方が確実かと思います。もし、ビッグエンディアンの環境であれば、最初の部分の

OUTPUT_FORMAT("elf32-shl","elf32-shl","elf32-shl")

を修正すれば、ビッグエンディアンになるかと思います。
# JSPでビッグエンディアンのリンカスクリプトがC++対応になっていないのは、動作
# 確認できる環境が手元になかったからです。

原因がまったく他の可能性もあるので、できれば_sbrk_rを次のようにしてみて、
動作するか確認してみるのもよいかと思います。

void *_sbrk_r(struct _reent *ptr, ptrdiff_t nbyte)
{
	extern char end;
	static char *heap_ptr = &end;
	char *base;

	base = heap_ptr;
	heap_ptr += nbyte;
	return base;
}

> STACKTOPは /config/sh3/hsb7727st/sys_defs.h で、下記のように定義されていま
> す。これが使われているのでしょうか?
> 
> #define STACKTOP    0x0c200000

これは多分大丈夫そうです。

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