4.6 errno

C ライブラリの errno 変数は、ライブラリの暗黙的なスタティックデータエリア内で定義されます。

このエリアは __user_libspace() によって識別されます。errno のアドレスは次の関数から返されます。
(*( volatile int *) __aeabi_errno_addr())
__aeabi_errno_addr() を定義することで、__user_libspace() によって識別されるデフォルトの場所ではなく、ユーザ定義の場所に errno を配置できます。

従来のバージョンの errno.h では、__aeabi_errno_addr() ではなく __rt_errno_addr() において、errno を定義していました。関数名 __rt_errno_addr() は ABI より前のバージョンのツールで使用されていた従来の名前であり、これらのツールで生成されたオブジェクトファイルを正常にリンクできるように、現在でもサポートされています。

戻り値

戻り値は、 int 型の変数を指すポインタで、現在使用できる errno のインスタンスが格納されています。
関連する概念
1.5.4 C ライブラリでのスタティックデータの使用
関連する参考文書
4.1 __aeabi_errno_addr()
1.5.5 C ライブラリによる __user_libspace スタティックデータ領域の使用
関連情報
Application Binary Interface for the ARM Architecture
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.