From 850e1aeb5264818c133a32ff457794ff9bd9364d Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Wed, 28 Apr 2021 13:03:43 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[libc][time]=20=E7=BB=86=E5=BE=AE=E8=B0=83?= =?UTF-8?q?=E6=95=B4time.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/libc/compilers/common/time.c | 10 +++++----- components/libc/compilers/newlib/SConscript | 9 ++++----- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index 33d8907165..5f4af8e572 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -16,7 +16,7 @@ * 2012-12-08 Bernard fix the issue of _timevalue.tv_usec initialization, * which found by Rob * 2021-02-12 Meco Man move all of the functions located in to this file - * 2021-03-15 Meco Man fixed bug: https://club.rt-thread.org/ask/question/423650.html + * 2021-03-15 Meco Man fixed a bug of leaking memory in asctime() */ #include @@ -104,7 +104,7 @@ static int get_timeval(struct timeval *tv) } else { - /* LOG_W will cause a recursive printing if ulog timestamp function is turned on */ + /* LOG_W will cause a recursive printing if ulog timestamp function is enabled */ rt_kprintf("Cannot find a RTC device to provide time!\r\n"); return -1; } @@ -112,7 +112,7 @@ static int get_timeval(struct timeval *tv) return (rst < 0) ? -1 : 1; #else - /* LOG_W will cause a recursive printing if ulog timestamp function is turned on */ + /* LOG_W will cause a recursive printing if ulog timestamp function is enabled */ rt_kprintf("Cannot find a RTC device to provide time!\r\n"); return -1; #endif /* RT_USING_RTC */ @@ -273,13 +273,13 @@ RTM_EXPORT(asctime); char *ctime_r (const time_t * tim_p, char * result) { struct tm tm; - return asctime_r (localtime_r (tim_p, &tm), result); + return asctime_r(localtime_r(tim_p, &tm), result); } RTM_EXPORT(ctime_r); char* ctime(const time_t *tim_p) { - return asctime (localtime (tim_p)); + return asctime(localtime(tim_p)); } RTM_EXPORT(ctime); diff --git a/components/libc/compilers/newlib/SConscript b/components/libc/compilers/newlib/SConscript index b1ad6e4784..542cdecd40 100644 --- a/components/libc/compilers/newlib/SConscript +++ b/components/libc/compilers/newlib/SConscript @@ -4,17 +4,18 @@ Import('rtconfig') src = [] cwd = GetCurrentDir() group = [] - +LIBS = [] +CPPDEFINES = [] CPPPATH = [cwd] if rtconfig.PLATFORM == 'gcc': if GetDepend('RT_USING_LIBC'): - CPPDEFINES = ['RT_USING_NEWLIB'] + CPPDEFINES += ['RT_USING_NEWLIB'] # link with libc and libm: # libm is a frequently used lib. Newlib is compiled with -ffunction-sections in # recent GCC tool chains. The linker would just link in the functions that have # been referenced. So setting this won't result in bigger text size. - LIBS = ['c', 'm'] + LIBS += ['c', 'm'] src += Glob('*.c') SrcRemove(src, ['minilib.c']) @@ -22,8 +23,6 @@ if rtconfig.PLATFORM == 'gcc': SrcRemove(src, ['libc_syms.c']) else: src += ['minilib.c'] - CPPDEFINES = [] - LIBS = [] group = DefineGroup('libc', src, depend = [], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES, LIBS = LIBS) From 82f2d8e53d866598b993054990b73339ef457607 Mon Sep 17 00:00:00 2001 From: Meco Jianting Man <920369182@qq.com> Date: Thu, 29 Apr 2021 00:21:10 +0800 Subject: [PATCH 2/3] =?UTF-8?q?time.c=20=E5=88=A0=E9=99=A4=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=90=8D=E4=B8=8E=E6=8B=AC=E5=8F=B7=E4=B9=8B=E9=97=B4?= =?UTF-8?q?=E7=9A=84=E7=A9=BA=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/libc/compilers/common/time.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index 5f4af8e572..72542867d2 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -270,7 +270,7 @@ char* asctime(const struct tm *timeptr) } RTM_EXPORT(asctime); -char *ctime_r (const time_t * tim_p, char * result) +char *ctime_r(const time_t * tim_p, char * result) { struct tm tm; return asctime_r(localtime_r(tim_p, &tm), result); From 1627597fcc89a7d9babc972b5d1d46764ffc7ef8 Mon Sep 17 00:00:00 2001 From: Meco Jianting Man <920369182@qq.com> Date: Thu, 29 Apr 2021 04:42:11 +0800 Subject: [PATCH 3/3] remove _TIMESPEC_DEFINED --- components/libc/compilers/common/sys/time.h | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/components/libc/compilers/common/sys/time.h b/components/libc/compilers/common/sys/time.h index ef1c810608..24da0b6c77 100644 --- a/components/libc/compilers/common/sys/time.h +++ b/components/libc/compilers/common/sys/time.h @@ -18,14 +18,6 @@ extern "C" { #endif -/* - * Skip define timespec for IAR version over 8.10.1 where __VER__ is 8010001. - */ -#if defined ( __ICCARM__ ) && (__VER__ >= 8010001) -#define _TIMESPEC_DEFINED -#endif - - #ifndef _TIMEVAL_DEFINED #define _TIMEVAL_DEFINED /* @@ -40,7 +32,7 @@ struct timeval { #endif #endif /* _TIMEVAL_DEFINED */ -#if !(defined(__GNUC__) && !defined(__ARMCC_VERSION)/*GCC*/) && !defined (__ICCARM__) && !defined (_WIN32) +#if !(defined(__GNUC__) && !defined(__ARMCC_VERSION)/*GCC*/) && !(defined(__ICCARM__) && (__VER__ >= 8010001)) && !defined(_WIN32) struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* and nanoseconds */