ツールチェーン更新履歴
s002
ソフトウェアアップデート
GCC 4.9.4 -> 6.4.0
GMP 6.1.2
MPFR 3.1.5 -> 4.0.1
MPC 1.0.3 -> 1.1.0
libiconv 1.14 -> 1.15
libelf 0.8.13
binutils 2.27 -> 2.28.1
GDB 7.12.1 -> 8.1
termcap 1.3.1
GNU make 4.2.1
Clang 4.0.0 -> 6.0.0
C は gnu11、 C++ は gnu++14 規格がデフォルトになりました。(GCC 4.x までは gnu89、gnu++98 がデフォルト。)
列挙型が 32 bit 固定になりました。(-fno-short-enums)
float-abi=hard をサポートしました。
fstat() に fd として stdin/stdout/stderr を渡した時にメモリアクセス違反が発生する不具合を修正しました。
(fwrite() など、fstat() を内部で使用する stdio.h のファイル関連関数にも影響があります。)
time.h
欠けていた標準関数を実装しました。
未サポートの関数をヘッダからコメントアウトしました。
time_t の開始年を DOS Time (1980) から UNIX Time (1970) に変更しました。
stat, fstat, lstat, utime のタイムスタンプ(秒の値)が正しくない不具合を修正しました。(MS-DOS 形式の秒の値は 2 で割った値でした。)
stdout が常にバッファリングされてしまい 'n' が来ても fflush() されない不具合を修正しました。
stdio が常にリンクされコードサイズが肥大してしまう不具合を修正しました。
dlmalloc の malloc_stats() は fprintf() を使用するため廃止されました。
abort() 内部の fprintf() を write() に置き換えました。
write() 内部の printf() を削除しました。
stdio を使用する ssp ライブラリを libc から分離しました。
不要な関数、データの削除
VLINK 有効時
ファイルの最大 open 数(_FD_MAX) を 100 から 20 に削減しました。
_LF_flg を廃止しました。ロングファイルネームサポートは常に有効です。
(変数自体は残っているので既存の crt との互換性は保たれています。)
その他(内部実装)
arm_neon.h を Clang で使用するとエラーになる問題を修正しました。
整数型のみサポートする
*iprintf/*iscanf
関数を追加しました(newlib 拡張)詳細は stdio.h を参照してください。
ただし、これは C99 までの仕様をフルサポートするため、スタック消費量がほとんど変わらず、内部で malloc() も使用するため、省メモリ環境においては SOLID が提供する同名の機能制限版関数の使用を推奨します。(SOLID とは別に、newlib との互換性のために追加された関数。)
s001
最初のリリース