ライブラリの仕様(AArch64)
exeGCC for SOLID s006 (AArch64)ライブラリ仕様
ライブラリの共通設定
全てのライブラリは以下の設定でビルドされています。 設定が異なるユーザープログラムとライブラリをリンクした際の動作は保証されません。
char型は signed。(-fsigned-char)C は
gnu11、 C++ はgnu++14規格。
C11/C++14 標準関数サポート
ライブラリとスタートアップ
初期の A53 エラッタ未対応です。
-mfix-cortex-a53-835769と-mfix-cortex-a53-843419オプションは付いてません。LP64 ABI と unaligned data access 設定のみサポート。
large code model
デフォルトの
-mcmodel=smallでは、コードとデータを 4GB 範囲に収める必要がありますが、 large は常にフルアドレスで参照するため、無制限です。そのため若干のオーバーヘッドがあります。
libc と libm は NetBSD-9.1 ベース
注釈
BSD 独自の関数はサポート範囲外です。ヘッダには存在しますが、実体が存在しない関数も多数あります。
KMCによる標準関数の実装
abort(),exit(),perror(),setjmp(),longjmp(),strerror(),strerror_r(),signal(),raise()time.hclock(),difftime(),mktime(),time(),asctime(),ctime(),ctime_r(),gmtime(),localtime(),localtime_r(),strftime()time_tは 64 bit です。clock()はダミー実装です。初回の呼び出しは必ず 0 になり、2 回目以降は 10msec 精度カウンタの前回呼び出し時との差分を返します。time_tはうるう秒未考慮です。
ロケールは
"C"のみサポートsetlocale()は常に"C"を返し、一切 current locale を変更しません。*_l(locale) 関数は、対応する_lの無い関数と同じ挙動となります。
OS の機能を使用するような関数は、VLINK 有効時のみサポート
signal.hはダミー関数です。signal(),raise()__SOFTFP__時fenv.hferaiseexcept()は例外を発生させません。stdio.hのprintf()やファイル関係の関数、tmpnam()など。stdlib.hのgetenv(),setenv()など。system()は未サポート。time.hのclock(),time(),utime()以下の非標準関数(KMC による実装)
rename(),getcwd(),getwd(),open(),creat(),close(),lseek(),read(),write(),unlink(),tell(),dup(),dup2(),access(),chdir(),rmdir(),findfirst(),findnext(),stat(),fstat(),lstat(),mkdir(),chmod(),mktemp(),sleep(),usleep()stat(),fstat(),lstat(),utime()の制限MS-DOS Data and Time (
FILETIME) を使用しているので、保証されるのは 1980/1/1-2107/12/31 の範囲です。usleep()の制限millisecond 精度です。
未サポートの機能
GCC の
float.hの制限でFLT_ROUNDSは常に 1 (nearest) となります。fenv.hのfegetround()で現行の丸めモードを取得してください。SVE 拡張
long doublemath.h,complex.hヘッダの*l関数など。例:
long double sinl(long double x)nexttoward(),nexttowardf(),nexttowardl()C11
uchar.htime.hstruct timespec,timespec_get()stdio.hfopen()mode"x"Remove
gets()Annex * [Optional]
C++11
randomヘッダrandom_deviceマルチスレッド
C11
stdatomic.h,thread.hヘッダ [Optional]C++11
thread,mutex,future,condition_variableヘッダ。TLS (Thread Local Storage)
GCC 拡張の
__thread, C11 の_Thread_local, C++11 のthread_localキーワード。
exeGCC for SOLID s005 (AArch64)ライブラリ仕様
ライブラリの共通設定
全てのライブラリは以下の設定でビルドされています。 設定が異なるユーザープログラムとライブラリをリンクした際の動作は保証されません。
char型は signed。(-fsigned-char)C は
gnu11、 C++ はgnu++14規格。
C11/C++14 標準関数サポート
ライブラリとスタートアップ
初期の A53 エラッタ未対応です。
-mfix-cortex-a53-835769と-mfix-cortex-a53-843419オプションは付いてません。LP64 ABI と unaligned data access 設定のみサポート。
large code model
デフォルトの
-mcmodel=smallでは、コードとデータを 4GB 範囲に収める必要がありますが、 large は常にフルアドレスで参照するため、無制限です。そのため若干のオーバーヘッドがあります。
libc と libm は NetBSD-7.0 ベース
注釈
非標準の関数や BSD 由来の関数は、ヘッダには存在しますが、実体が存在しない関数も多数あります。
KMCによる標準関数の実装
abort(),exit(),perror(),setjmp(),longjmp(),strerror(),strerror_r(),signal(),raise()time.hclock(),difftime(),mktime(),time(),asctime(),ctime(),ctime_r(),gmtime(),localtime(),localtime_r(),strftime()time.hの仕様time_tは 64 bit です。clock()はダミー実装です。初回の呼び出しは必ず 0 になり、2 回目以降は 10msec 精度カウンタの前回呼び出し時との差分を返します。time_tはうるう秒未考慮です。
ロケールは
"C"のみサポート*_l(locale) 関数は、対応する_lの無い関数と同じ挙動となります。
OS の機能を使用するような関数は、VLINK 有効時のみサポート
signal.hはダミー関数です。signal(),raise()__SOFTFP__時fenv.hferaiseexcept()は例外を発生させません。stdio.hのprintf()やファイル関係の関数、tmpnam()など。stdlib.hのgetenv(),setenv()など。system()は未サポート。time.hのclock(),time(),utime()以下の非標準関数(KMC による実装)
rename(),getcwd(),getwd(),open(),creat(),close(),lseek(),read(),write(),unlink(),tell(),dup(),dup2(),access(),chdir(),rmdir(),findfirst(),findnext(),stat(),fstat(),lstat(),mkdir(),chmod(),mktemp(),sleep(),usleep()stat(),fstat(),lstat(),utime()の制限MS-DOS Data and Time (
FILETIME) を使用しているので、保証されるのは 1980/1/1-2107/12/31 の範囲です。usleep()の制限millisecond 精度です。
未サポートの機能
long doublemath.h,complex.hヘッダの*l関数など。例:
long double sinl(long double x)nexttoward(),nexttowardf(),nexttowardl()C99
math.hfma(),fmaf(),fmal()
C11
uchar.htime.hstruct timespec,timespec_get()stdio.hfopen()mode"x"Remove
gets()Annex * [Optional]
C++11
randomヘッダrandom_deviceマルチスレッド
C11
stdatomic.h,thread.hヘッダ [Optional]C++11
thread,mutex,future,condition_variableヘッダ。TLS (Thread Local Storage)
GCC 拡張の
__thread, C11 の_Thread_local, C++11 のthread_localキーワード。