2016-10-17 20 views
2

arm-gccツールチェーンを使用して私の組み込みプログラムのスタック使用量を分析しようとしています。プログラムはシングルスレッドなので、通常は-fstack-usage gccのパラメータを使ってスタックを解析できます。ARM-gccスタック使用ファイルが空です

通常、このオプションでは、コンパイル単位とともにファイル.suが生成されます。これらは関数ごとのスタック使用量を記述します。しかし、私の場合、それらのファイルは空です。ここで

は(https://mcuoneclipse.com/2015/08/21/gnu-static-stack-usage-analysis/から).suファイルの内容の例である:

main.c:36:6:bar 48 static 
main.c:41:5:foo 88 static 
main.c:47:5:main 8 static 

私はgcc-arm-none-eabi-5_4-2016q3を使用していますが、問題もgcc-arm-none-eabi-5_3-2016q1上に存在します。

問題のアイデアはありますか?またはスタックの使用を制御する別のソリューションですか?

+0

コンパイルコマンドライン(行をリンクしない)に '-fstack-usage'オプションを指定しましたか?私はgcc-arm-none-eabi-4_9-2015q2でこれを試しました。 –

+0

私はgcc(コンパイル用)とg ++(リンク用)の両方にパラメータを与えます。私はリンカーとしてldに切り替えるようにします。 – Gp2mv3

+0

ldの代わりにgccを使用すると、このように通知されます。 –

答えて

2

多くのテストの結果、解決策が見つかりました。-fstack-usage-fltoと互換性がないようです。

-fltoを無効にすると、.suファイルを生成できます。

フラグを1つずつ有効化/無効化することでわかりましたが、その理由はわかりません。また、-fltoを削除すると、リンカーは失敗しますが、スタックの使用量が計算されます。

関連する問題