stdio(3)变更:FILE现已不透明
在-current版本中,stdio(3)的FILE类型底层结构已改为不透明,同时全面更新了库版本号:
CVSROOT: /cvs
模块名: src
变更者: yasuoka@cvs.openbsd.org 2025/07/16 09:33:05
修改文件:
lib/libc: Symbols.list shlib_version
lib/libc/hidden: stdio.h wchar.h
lib/libc/stdio: Makefile.inc fclose.3 fclose.c findfp.c
lib/libcrypto: shlib_version
lib/libcurses: shlib_version
lib/libedit: shlib_version
lib/libexpat: shlib_version
lib/libfido2: shlib_version
lib/libfuse: shlib_version
lib/libkvm: shlib_version
lib/libpcap: shlib_version
lib/librthread: shlib_version
lib/libskey: shlib_version
lib/libsndio: shlib_version
lib/libutil: shlib_version
include: stdio.h wchar.h
gnu/lib/libcxx: shlib_version
gnu/lib/libcxxabi: shlib_version
gnu/lib/libexecinfo: shlib_version
gnu/lib/libiberty: shlib_version
gnu/lib/libreadline: shlib_version
gnu/lib/libstdc++: shlib_version
gnu/lib/libstdc++-v3: shlib_version
gnu/usr.bin/perl: shlib_version
新增文件:
lib/libc/hidden: _stdio.h
lib/libc/stdio: fdclose.c
日志信息:
使FILE对象不透明。将__sFILE定义移至libc/hidden/_stdio.h。从现在起,所有引用FILE对象内部结构的程序将无法编译。std{in,out,err}不再引用__sF[],但暂时保留隐藏的__sF以及__srget和__swbuf符号以便过渡。这些符号将很快删除。为libc及所有引用std{in,out,err}的库更新了共享库版本。
由guenther提供差异,由我调整,多人测试通过
ok sthen tb
请注意,这是一项重大变更,涉及基础系统的多个组件。影响范围包括libcrypto(本身正在进行重大清理)、libtls、libssl,以及之前提到的性能分析子系统。强烈建议通常从源代码构建的用户使用快照升级以应对此变更。