はじめまして。からさわと申します。
AKI-H8/gcc-2.95.3/binutils-2.11.2/newlib-1.9.0/gdb-4.18/FreeBSD4.3にて先
週からいろいろ試しています。
まだRAMを増設していないので書き込み回数がもったいない(^^;ということでgdb
上でシミュレートしている状態です。
#リモートデバッグには至っていません。
ところがSIGILLで落ちる(gdbがではなく)ので調べてみると場所は見つけました。
ーーーーーーーーーーーーーーここからーーーーーーーーーーーー
> h8300-hms-gdb test.coff
(gdb) set machine h8300h
(gdb) target sim
Connected to the simulator.
(gdb) load
Loading section .vectors, size 0xf4 vma 0x0
Loading section .text, size 0x1ad0 vma 0x200
Start address 0x200
Transfer rate: 56864 bits in <1 sec.
(gdb) b *0x27e
Breakpoint 1 at 0x27e: file crt1.c, line 2.
(gdb) run
Starting program: /home/export/gatesos/h8gcc/test.coff
Breakpoint 1, 0x27e in __main () at crt1.c:2
2 {
(gdb) info registers
〜〜〜省略〜〜〜
er6 0x0 0
sp 0xffef8 1048312
ccr 0x4 4 I-0 - H-0 - N-0 Z-1 V-0 C-0 u<= u>= == >= <=
pc 0x27e 638
〜〜〜省略〜〜〜
(gdb) disassemble
Dump of assembler code for function __main:
0x27e <__main>: 01 00 6d f6 mov.l er6,@-er7
0x282 <__main+4>: 0f f6 mov.l er7,er6
0x284 <__main+6>: 01 00 6d f4 mov.l er4,@-er7
〜〜〜省略〜〜〜
End of assembler dump.
(gdb) si
0x282 2 {
(gdb) info registers
〜〜〜省略〜〜〜
er6 0x0 0
sp 0x3fef4 261876
ccr 0x4 4 I-0 - H-0 - N-0 Z-1 V-0 C-0 u<= u>= == >= <=
pc 0x282 642
〜〜〜省略〜〜〜
ーーーーーーーーーーーーーーここまでーーーーーーーーーーーー
0x27e <__main>: 01 00 6d f6 mov.l er6,@-er7
これは多分PUSH ER6だと思うんですが、これを実行した前後でSPの値がぜんぜん
違っています。このため__mainのエンドで変なアドレスへリターンして落ちてい
ました。
#たぶん・・・(^_^;
#PCみたら0x3fef4の値(0x0)だったので
gdbの使い方が間違っているのでしょうか?
あるいはこれで正しい動作???
しばらく悩んでいたのですがよくわからなくなってきたので教えてください。
よろしくお願いいたします。
--
karasawa <mak@xxxxxxxxxxxxxx>