Linux 6.2 启用“-funsigned-char”,所有 char 类型设为无符号


在下周 Linux 6.2 合并窗口打开之前的早期拉取请求中,有一项更改是默认为 Linux 内核构建启用“-funsigned-char”,这意味着如果没有指定,“-funsigned-char”编译器标志会将所有“char”字符类型设为无符号。

C 的 char 字符数据类型分为 signed char 和 unsigned char,其中 unsigned char 占用内存的所有 8 位并且没有符号位。

灯箱

char 在标准中是 unsigned,但不同的 CPU 体系结构/编译器能将其实现为 signed,也可以实现为 unsigned 。但此更改合并后,对于使用普通“char”类型编写的内核代码, 将普遍将默认 char 类型视为 unsigned 。

WireGuard 首席开发人员 Jason Donenfeld 领导了 Linux 内核的 -funsigned-char 转换工作。早在 Linux 6.1 版本,Jason Donenfeld 在 ARM 上编译驱动程序时触发了构建错误,当时驱动程序假定裸 char 类型有符号,但 ARM 将其视为无符号, C 标准则表示它依赖于体系结构。

发现这个 Char 类型混乱的问题后,他提出了 “treat char as always unsigned” 构建请求。并为 Linux 6.2 发送了一个默认启用 unsigned char 行为的早期 PR ,以及针对内核代码对 char 类型的符号性做出不同假设的各种内核修复。

感兴趣的朋友可以在构建请求和早期 PR 邮件中查阅更多详情。


相關推薦

2022-11-23

此前,关于 Linux 的计算加速器子系统(Accelerator Subsystem)一直处于争论状态,部分内核开发者应该针对该计算加速器开发新的子系统、部分开发者则认为它应当是 DRM 的子系统或其他子系统的一部分。 而在今年的 LPC 大会中,

2024-10-15

我们实现了对 Wayland 颜色管理协议的更完整支持,并默认启用它。 我们还改进了 HDR 和 ICC 配置文件的亮度处理以及 HDR 性能。这将改善您在设计图形、玩游戏和观看视频时的体验。 Plasma 的 KWin 合成器中内置的新色调映射功能

2022-10-30

,并有助于减少读取延迟。现在 Btrfs 开发人员计划默认启用它。在固态硬盘作为驱动器时,异步丢弃功能都会自动打开。 目前 SUSE 的 David Sterba 已将相关补丁添加到 Linux 6.2 合并窗口的 Btrfs for-next 分支中, 通过“discard=async

2022-12-16

的实现支持。 kallsyms_lookup_name() 函数用于根据名称查找符号的地址,并可用于查找内核符号表中的任何符号。 Zhen Lei 曾在较早的补丁中描述了 kallsyms_lookup_name() 的优化思路: 目前,要搜索一个符号,我们需要将'kallsyms_name

2022-12-23

s” 两个 sysfs 属性,可以用来完成二级压缩算法的管理。启用 ZRAM_MULTI_COMP 选项的 ZRAM 设备最多允许支持四种不同的压缩算法。 通过文档了解有关 ZRAM 多压缩流支持的更多详细信息,或查看 ZRAM 多重压缩流补丁邮件 。

2023-05-10

AM ,这意味着如果测试没问题, 就可以在 Linux 6.4 中顺利启用 LAM 功能。不过这次 Linus 竟然亲自动手为英特尔工程师修改“有瑕疵的代码”,这种情况相当少见。

2022-11-17

理器上,很难证明 SCS 的有用性。因此对于 Linux 6.2,计划启用动态 SCS 支持,允许它在启动时进行启用/禁用。此项动态 SCS 支持特性是在启动/运行时通过代码修补完成的。 因此,对于那些由于其他硬件保护已经到位而不想为

2022-12-13

t for Linux 6.2 的补丁包括以下内容: 字符串和格式:新类型 `CString`、`CStr`、`BStr` 和 `Formatter`;新宏“c_str!”、“b_str!” 和 “fmt!”。 错误:来自 errno-base.h 的其余错误代码,以及 Error 类型的一些 From 特性实现。 Printing:

2023-03-16

试。 根据 Ubuntu 开发者邮件列表的消息,理想情况下,所有风味版本的内核都已经用上 Linux Kernel 6.2。但由于各种原因,该目标并没有实现。在 23.04 中,现在他们暂时不会为任何风味版本做进一步的 6.1 构建,所有版本都在积极

2022-11-14

好几个月,属于 Rust 补丁系列的一部分,且每个补丁都在启用 Rust 的 defconfig 上进行了构建测试。鉴于其测试的完整度,这批补丁极有可能进入 Linux 6.2 合并窗口。 一旦所有 Rust 基础设施都到位,将会有一些硬件驱动程序开始转

2023-03-31

 Focus Sticky Scroll 。通过 View: Toggle Stick Scroll 命令启用 Sticky Scroll UI 。 复制 GitHub deep links - 从编辑器中创建永久链接和 HEAD 链接。 现在你可以在 GitHub 仓库中工作时,从 editor gutter 中复制 editor line 或 range 的 de

2023-02-06

我们有一些 Thorsten 正在跟踪的显着回归,在代码树上所有常见的地方进行了一些小的修复,最大的单个补丁是对 zsmalloc 的竞争修复。 这个版本有驱动程序修复(gpu、网络、音频,但也有一些其他东西)、一些核心 mm (zsma

2022-07-31

合常规,检查会发出警告。 还为 iota 和其他内置常量启用了 Reserved word used as name(保留词用作名称)检查。 尝试对名为 iota、true 或 false 的常量分配值时,将触发检查。 对值和指针接收器上的方法的检查 Go 文档建议给定

2022-08-09

char/misc 是 Linux 内核中一块“包罗万象”的区域,任何不属于其他子系统的驱动程序都存放在这里。 几天前,Linux 6.0 “char/misc”区域的最新 PR 合并了,此次更新最值得注意的是引入了对 Intel 的 AI 处理器 Habana Labs Gaudi2