Skip to content

MIPS用GDBのインストール

Takuya Kojima edited this page Feb 6, 2020 · 2 revisions

VMIPSではremote GDBをサポートする。これは

+---------------------------------------------------+
|                     ホストマシン                    |
+---------------------------------------------------+
|  +-------------------+     +-------------------+  |
|  |     cube_sim      |     |      mips-gdb     |  |
|  +-------------------+     +-------------------+  |
|  |     gdbserver     |     | +---------------+ |  |
|  |     listen on     | <-- | |MIPS ELF binary| |  |
|  |  localhost:port   |     | +---------------+ |  |
|  +-------------------+     +-------------------+  |
|                                                   |
+---------------------------------------------------+

のようにcube_simとgdbを両方ホストマシン上で実行する。

ただし、Linuxで通常インストールされるGDBはMIPSに対応していないことや、VMIPSが古いバージョンのGDBのプロトコルにしか対応していないなどの問題がある。そのため、GDBを一からbuildした方が無難である。

ここでは、備忘録的にmips-gdbのインストール方法を示す。

ソースの入手

どうやらGDB6系以前でないとうまく動かなそうなのでGDB 6.8をダウンロードし、展開する。

$ wget http://ftp.jaist.ac.jp/pub/GNU/gdb/gdb-6.8a.tar.gz
$ tar xf gdb-6.8a.tar.gz 

ビルド

まずはビルド用ディレクトリとconfigureする

$ mkdir build
$  env PATH="/home/wasmii5/mips-cross/bin:${PATH}" \
    ../gdb-6.8/configure --target=mips--elf --prefix=/home/wasmii5/mips-cross/

targetオプションでmips-elfを指定した。また、インストール先はすでにmipsのクロスコンパイラがインストールされている /home/wasmii5/mips-cross にした。 ただし、この段階でmips-elf-gccなどがインストールされているかを探しにいくのでパスが通っていなければ、一時的envなどを用いてパスが通った状態にしておく。

これがうまくいけば

$ make -j8

として、ビルドを開始する。 ただし、なぜかWerrorオプションをつけてビルドが行われるため十中八九コンパイルに失敗する箇所が出てくる。

こちらの環境では bfdディレクトリとgdbディレクトリで

../../gdb-6.8/bfd/elf-eh-frame.c:1220:29: warning: variable 'hdr_info' set but not used [-Wunused-but-set-variable]

cp-name-parser.y:1980:20: エラー: ‘enum demangle_component_type’ と ‘enum <無名>’ の比較です [-Werror=enum-compare]

などが出た。明らかに無視して良さそうなので当該ディレクトリのMakefileからWerrorオプションを消し、再度ビルドした。

インストール

make installをすれば良いのだが、アンインストールすることも考えて野良アプリ管理のporgを使っておく。

$ porg -lp mips--elf-gdb.6.8 "make install" 

こうすると mips--elf-gdb.6.8 というパッケージ名でインストールされたファイルたちが記録されるので、アンインストールしたくなったら

$ porg -r mips--elf-gdb.6.8

とすれば良い。