| |||
Home > コンパイラのコーディング慣行 > C コードでゼロによる整数除算エラーが発生した場合のパラメータの検証 |
パラメータを検証し、事後分析デバッグ用に保存するには、__aeabi_idiv0
をトラップします。__aeabi_idiv0
のすべての呼び出しに割り込むには、$Super$$
および $Sub$$
のメカニズムを使用します。
ゼロによる整数除算エラーが発生した場合にパラメータを検証するには、次の手順を実行します。
パッチを適用していない元の関数 __aeabi_idiv0()
を識別するには、__aeabi_idiv0()
に接頭辞 $Super$$
を付けます。
元の関数を直接呼び出すには、接頭辞 $Super$$
を付けた __aeabi_idiv0()
を使用します。
__aeabi_idiv0()
の元のバージョンの代わりに呼び出す新しい関数を識別するには、__aeabi_idiv0()
に接頭辞 $Sub$$
を付けます。
元の関数 __aeabi_idiv0()
の前または後に処理を追加するには、__aeabi_idiv0()
に接頭辞 $Sub$$
を付けます。
Example 36 は、$Super$$
および $Sub$$
のメカニズムを使用して __aeabi_div0
をインターセプトする仕組みを示しています。
Example 36. $Super$$ および $Sub$$ を使用した __aeabi_div0 のインターセプト
extern void $Super$$__aeabi_idiv0(void); /* この関数が元の関数 __aeabi_idiv0() の代わりに呼び出される */ void $Sub$$__aeabi_idiv0() { // ゼロによる除算を処理するコードを挿入する ... // 元の __aeabi_idiv0 関数を呼び出す $Super$$__aeabi_idiv0(); }