denshikobo’s blog

PICプログラミングやPCの操作で感じた日々の由無し事を綴ります

構造体名が見つからない

Pic-coloは、readelfの出力を解析して変数のアドレスやサイズなどの情報を取得しています。今までは、(便宜上)全ての変数をバイト型の配列と見なして表示してきたのですが、もっと見やすい形式に整える作業に着手しました。

 

これまでは  v_int   BASE  e803     だった
それを           v_int    int       0x3e8  1000 と表示するようにしました。

構造体も表示を改善しようとして、問題に気付きました。

typedef struct
{
I2C_TR_QUEUE_ENTRY *pTrTail; // tail of the queue
I2C_TR_QUEUE_ENTRY *pTrHead; // head of the queue
I2C_TR_QUEUE_STATUS trStatus; // status of the last transaction
uint8_t i2cDoneFlag; // flag to indicate the current
uint8_t i2cErrors; // keeps track of errors
} I2C_OBJECT ;

 static I2C_OBJECT i2c_object;

 

変数(i2c_object )がstructure_typeだということは分かるのですが、構造体名(I2C_OBJECT)が見つかりません。orz

 

実は、構造体情報の出力は2種類( Abbrev Numberが5と21)あって、そのうちAbbrev Numberが5の方は構造体名が出力されないのらしいです。”I2C_OBJECT”という文字列が有るのかgrepで調べてみたですが、そもそもelfファイルに出力されていません。orz

readelfのオプション云々の問題では無さそうです。

 

何故、そんなことになっているのか?

?????????(<==暫く、悩んでみた)

ググッてみても、分かりません。

?????????(<==もう一度、悩んでみた)

考えてみても、分かりません。

 

どうすれば良いのか?

???(<==比較的簡単に結論が出た)

 

やれることからやる!

Abbrev Numberが21の方だけ先に処置することにしました。

Abbrev Numberが5の対策は、そのうちに見つかるかもしれません。

最後まで残ったときは、力任せにlstファイルを解析して、構造体名を取得することだってできるのですから。

Pic-colo開発の試練はまだまだ続きそうです。