Skip to content

[libc] 修复在fcntl.h中两种不同的宏编码方式导致的bug#5267

Merged
BernardXiong merged 1 commit into
RT-Thread:masterfrom
mysterywolf:libc-fcntl.h
Nov 15, 2021
Merged

[libc] 修复在fcntl.h中两种不同的宏编码方式导致的bug#5267
BernardXiong merged 1 commit into
RT-Thread:masterfrom
mysterywolf:libc-fcntl.h

Conversation

@mysterywolf

@mysterywolf mysterywolf commented Nov 10, 2021

Copy link
Copy Markdown
Member

拉取/合并请求描述:(PR description)

[
此PR旨在修复 https://github.com//issues/5186 和 https://github.com//issues/5265 所报告的问题

This PR will fix the problem which is reported by 5265 and 5186

经过再次查证,这个不是arm-链的问题,
历史上fcntl.h有两种标准,一个是以16进制进行编码的版本 也就是newlib arm链用的https://github.com/bminor/newlib/blob/80cda9bbda04a1e9e3bee5eadf99061ed69ca5fb/newlib/libc/include/sys/_default_fcntl.h

还有一种是8进制编码的标准 也就是rtt给keil iar以及musl库用的 https://github.com/bminor/musl/blob/cfdfd5ea3ce14c6abf7fb22a531f3d99518b5a1b/arch/arm/bits/fcntl.h

这两种标准的编码值并不相同,因此造成了冲突,这个问题是我在4.0.4整理libc时引入的。目前已经修复了。
]

以下的内容不应该在提交PR时的message修改,修改下述message,PR会被直接关闭。请在提交PR后,浏览器查看PR并对以下检查项逐项check,没问题后逐条在页面上打钩。
The following content must not be changed in the submitted PR message. Otherwise, the PR will be closed immediately. After submitted PR, please use a web browser to visit PR, and check items one by one, and ticked them if no problem.

当前拉取/合并请求的状态 Intent for your PR

必须选择一项 Choose one (Mandatory):

  • 本拉取/合并请求是一个草稿版本 This PR is for a code-review and is intended to get feedback
  • 本拉取/合并请求是一个成熟版本 This PR is mature, and ready to be integrated into the repo

代码质量 Code Quality:

我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:

  • 已经仔细查看过代码改动的对比 Already check the difference between PR and old code
  • 代码风格正确,包括缩进空格,命名及其他风格 Style guide is adhered to, including spacing, naming and other styles
  • 没有垃圾代码,代码尽量精简,不包含#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up
  • 所有变更均有原因及合理的,并且不会影响到其他软件组件代码或BSP All modifications are justified and not affect other components or BSP
  • 对难懂代码均提供对应的注释 I've commented appropriately where code is tricky
  • 本拉取/合并请求代码是高质量的 Code in this PR is of high quality
  • 本拉取/合并使用formatting等源码格式化工具确保格式符合RT-Thread代码规范 This PR complies with RT-Thread code specification

@mysterywolf mysterywolf added bug This PR/issue is a bug in the current code. important urgent 🏃 urgent labels Nov 10, 2021
@mysterywolf mysterywolf added Status: waiting for test Waiting test for this PR. and removed bug This PR/issue is a bug in the current code. labels Nov 11, 2021
@Guozhanxin Guozhanxin added reviewed PR has been reviewed. and removed Status: waiting for test Waiting test for this PR. labels Nov 15, 2021
@mysterywolf

mysterywolf commented Apr 5, 2022

Copy link
Copy Markdown
Member Author

补充一下,在unix发展过程中 十六进制和八进制的fcntl宏都有 详见:https://stackoverflow.com/questions/37326133/why-fcntl-flag-values-are-defined-in-octal-format-how-this-function-works-fo

目前,RT-Thread, newlib采用其内置的十六进制编码方式;VS采用十六进制,但是其编码和newlib还有区别(例如vs中O_CREAT表示的是0x0100,但是在newlib中表示的是0x0200);musl库采用八进制,RT-Thread给Keil和IAR等不支持UNIX头文件的提供八进制宏。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

important reviewed PR has been reviewed. urgent 🏃 urgent +1 Agree +1

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants