-
Notifications
You must be signed in to change notification settings - Fork 5.2k
improve libc time and MSVC simulator #5775
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
squash的时候帮我整理一下commit 复制下面的内容即可
|
@@ -18,7 +18,9 @@ | |||
#include <time.h> | |||
#ifdef _WIN32 | |||
#include <winsock.h> /* for struct timeval */ | |||
#endif | |||
#include <corecrt.h> /* for __time64_t */ | |||
typedef __time64_t time_t; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这个地方要留意
get_timeval 和 set_timeval 里面有这样一段代码
static int set_timeval(struct timeval *tv)
{
rst = rt_device_control(device, RT_DEVICE_CTRL_RTC_SET_TIME, &tv->tv_sec);
rt_device_control(device, RT_DEVICE_CTRL_RTC_SET_TIMEVAL, tv);
}
vs 上 struct timeval
中的 tv_sec
类型是 long
,RTC 驱动那边,会当成 time_t *
进行赋值,会造成不致命的内存越界
// 这种形式会写穿 tv_usec,不致命
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* and microseconds */
};
// 这种形式会写穿后面的内存,致命
struct timeval {
long tv_usec; /* and microseconds */
long tv_sec; /* seconds */
};
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
struct timeval {
long tv_usec; /* and microseconds */
long tv_sec; /* seconds */
};
这种倒过来的形式在newlib vs都没有 都是正着的
time64可以先放着,因为后续都要升级到64位了,要应对2038的问题。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
看来2038的问题不只是time_t 32改64这么简单,相关的时间结构体 long都得改成longlong
拉取/合并请求描述:(PR description)
以下的内容不应该在提交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):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0
代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up