DWARFDUMPをインストールした

Maker Faire Tokyoの選考に落ちてしまいました。orz

しょげていても始まらないので、Maestronの開発は一先ず置いて、以前からやりたいと思っていた『Raspi-Pic』の開発に取り組むことにしました。

『Raspi-Pic』は、Raspberry piとPICデバイスを組み合わせた、新しい『PIC電子工作の学習、開発、アプリケーション実行環境』になる予定です。構想(<==妄想?)があれこれ膨らみ、その実現方法を思案しながら開発を進めています。


PICコンパイラが出力したELFファイルから、デバッグ情報を取り出す方法がわからず、あれこれ調べてDWARFDUMPというプログラムに行き着きました。

これ(↓)です。

www.prevanders.net

これを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