DWARFDUMPをインストールした
Maker Faire Tokyoの選考に落ちてしまいました。orz
しょげていても始まらないので、Maestronの開発は一先ず置いて、以前からやりたいと思っていた『Raspi-Pic』の開発に取り組むことにしました。
『Raspi-Pic』は、Raspberry piとPICデバイスを組み合わせた、新しい『PIC電子工作の学習、開発、アプリケーション実行環境』になる予定です。構想(<==妄想?)があれこれ膨らみ、その実現方法を思案しながら開発を進めています。
PICコンパイラが出力したELFファイルから、デバッグ情報を取り出す方法がわからず、あれこれ調べてDWARFDUMPというプログラムに行き着きました。
これ(↓)です。
これをRaspiにインストールしたので、その手順を以下に記します。
(1) sudo apt-get install libelf-dev
(2) wget https://www.prevanders.net/libdwarf-20170416.tar.gz
(3) tar --extract -f libdwarf-20170416.tar.gz
(4) cd dwarf-20170416
(5) ./configure
(6) make
(7) sudo cp dwarfdump/dwarfdump /usr/local/bin
(8) dwarfdump -V
これを使ってelfファイルを解析するとこんな感じにデバッグ情報を取り出すことが出来ました。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
.debug_info
COMPILE_UNIT<header overall offset = 0x00000000>:
< 0><0x0000000b> DW_TAG_compile_unit
DW_AT_stmt_list 0x00000000
DW_AT_producer Microchip MPLAB XC8 Compiler v1.42
DW_AT_language DW_LANG_C89
DW_AT_name C:\common\developement\Raspi-Pic\RaspiPic-user.X\mcc_generated_files/interrupt_manager.c
DW_AT_low_pc 0x00000004
DW_AT_high_pc 0x00000032
LOCAL_SYMBOLS:
< 1><0x00000092> DW_TAG_subprogram
DW_AT_name INTERRUPT_InterruptManager
DW_AT_type <0x000000ba>
DW_AT_external yes(1)
DW_AT_decl_file 0x00000001
DW_AT_decl_line 0x00000033
DW_AT_low_pc 0x00000004
DW_AT_high_pc 0x00000032
DW_AT_inline DW_INL_not_inlined
< 1><0x000000ba> DW_TAG_subroutine_type
以下省略
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
この出力を解析するプログラムが次の課題です。
(先はまだまだ長いなぁ~)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
補足
”version 20120410-2”なら、以下のコマンドで簡単にインストールできるようです。
sudo apt-get install dwarfdump