web-dev-qa-db-ja.com

ELFセクションとシンボルのサイズを分析するツール

ARM用GCCコンパイラの出力ファイルを分析する方法が必要です。私はベアメタル用にコンパイルしていて、サイズにかなり関心があります。使うことができます arm-none-eabi-objdumpクロスコンパイラーによって提供されますが、出力を解析することは、このタスクのためのツールが存在する場合、私が熱心に行うことではありません。そのようなツールが存在することを知っていますか?検索結果がありませんでした。

さらに、私のコードのすべての関数は、独自のセクションにあります。

27
RushPL

nmおよびsizeを使用して、関数とELFセクションのサイズを取得できます。

関数(および静的ストレージ期間を持つオブジェクト)のサイズを取得するには:

$ nm --print-size --size-sort --radix=d tst.o

2列目には、関数とオブジェクトのサイズが10進数で表示されます。

セクションのサイズを取得するには:

$ size -A -d tst.o

2番目の列は、セクションのサイズを10進数で示しています。

49
ouah

readelf ユーティリティは、セクションサイズなど、さまざまなセクション情報を表示するのに便利です。

arm-none-eabi-readelf -e foo.o

ランタイムメモリフットプリントに関心がある場合は、「A」(割り当て)フラグが設定されていないセクションを無視できます。

8

puncover は、objdumpと他のいくつかのgccツールを使用して、コードとデータスペースの場所を簡単に参照できるHTMLページを生成します。

これは、gccツールのテキスト出力よりもはるかに優れたフロントエンドです。

0
sarfata