ELFファイルのDWARF情報から、構造体のメンバのアドレスを求める方法

いつもお世話になっております。

マイコン内のROM/RAM内の任意の変数の値をモニタする
PCアプリを作成しようとしています。
手順としては下記を考えています。 

①ビルドして出来上がったabsファイル(ELF形式)に対して、
 objdumpを実行しDWARF情報を取り出す。

②取り出したDWARF情報から、変数のアドレスを求める。

③PCアプリから、求めた変数のアドレスを参照し、
 UARTでマイコンのROM/RAMの変数の値を取得する。

mapファイルからでなく、DWARF情報から変数のアドレスを求めるのは、
他のマイコンでも同じ方法で、アドレスを求めたいからです。

②を効率よくやる方法をご存知であれば、教えていただけないでしょうか?

例えば、下記のようなネストされた構造体の各メンバや、
多次元の配列の各要素のアドレスをDWARF情報から求めたいです。
具体例を出すと、struct2.struct1[10][1][2].b[3][1]
のアドレスを求めたいです。

何かいい方法はありますか?
地道にDWARF情報を解析するしかないのでしょうか。
よろしくお願いいたします。


typedef struct{
unsigned char a[10];
unsigned short b[10][10];
unsigned int c;
unsigned char d;
}struct1_t;

 

typedef struct{
unsigned long e;
unsigned char f[10][3][12][3];
float g;
double h[40];
struct1_t struct1[34][2][3];
}struct2_t;


struct2_t struct2;


参考にしているサイト
https://qiita.com/tobira-code/items/de16088be23021e75c74

 

 

 

Parents
  • NoMaYさん、こんばんは。
    返信が遅くなってすみません。

    提案していただいた方法で、試してみようと思います。
    また、結果を報告させていただきます
Reply
  • NoMaYさん、こんばんは。
    返信が遅くなってすみません。

    提案していただいた方法で、試してみようと思います。
    また、結果を報告させていただきます
Children
No Data