Monday, 9 July 2018

OS9 level 2, lldb, gdb

OS9 Level 2 はMMUの実装もできて、Shellが起動するところまではいきました。が、

D1C5: 0D 06     TST     <$06
D1C7: F6 0C 07    LDB     $0C07
D1CA: 0F 0E     CLR     <$0E
D1CC: 07 18     ASR     <$18
D1CE: 16 07 30    LBRA    $D901
v09>c
OS-9 LEVEL TWO VR. 03.00.02
   COPYRIGHT 1988 BY
  MICROWARE SYSTEMS CORP.
  LICENSED TO TANDY CORP.
  ALL RIGHTS RESERVED.


Shell

OS9:

しかし、Diskにアクセスできない

  OS9:dir /d0
  Error #221

ぶう。Disk driver の初期化に来てないから、なんかで蹴られているんだろうな。Level 1は動いているのでいけそうなものなんですが。

SBC09 ってのをEmulatorに使っているんですが、ちょっとダメだったかも。アセンブラもエミュレータもバグが多くて。まぁ、動いたから良いんだけど。

で、こいつは signalを使って traceに入れるんですが...

  lldb が signal を食ってしまう

そういうの制御するのがありそうなものなんだけど。外からシグナル送ると少しなんとかなるみたいだが、まぁ、だめぽ。

あと、lldb が core を読んでくれない。

    (lldb) target create --arch=mips32-pc-linux "app_mips.elf" --core "core_mips"

こんな感じで triple を指定してやると良いらしいが、

  the specified architecture 'x86_64-apple-darwin17.6.0' is not compatible with 'x86_64-apple-macosx'

つまり、lldb がサポートしてるのは、darwin17.6.0 で、吐かれた core の方はmacosxなのでだめらしい。ググった感じではだめっぽいです。

そんなこんなで、

  じゃぁ、gdb 使うか

となったんですが、例の

  SIPで、code sign がどうとか

で、csrutil disable とか、いろいろやったんですが、

  gdb 8.1 は、High Sierra ではバグで動かないから、8.0.1 を使え

で、しかも、code signしてもダメで、8.0.1 を

  sudo gdb

すると動くと言うことがわかりました。さすが、OS X 、SIP で超安全。

  root で gdb でデバッグ

とか、超安心で素晴らしいです。

OS9 level 2 の disk は RBF からオープンに来るらしいので、少し苦労しそうだな。見当付かない感じ。os9 I$Open から trace かな。Leve1 でも似たようなことはやったから。まぁ、なんとか。

No comments: