diff --git a/components/libc/Kconfig b/components/libc/Kconfig index 4506001d42..a6000295e7 100644 --- a/components/libc/Kconfig +++ b/components/libc/Kconfig @@ -2,7 +2,8 @@ menu "POSIX layer and C standard library" config RT_USING_LIBC bool "Enable libc APIs from toolchain" - default y + select RT_USING_HEAP + default n if RT_USING_LIBC config RT_LIBC_USING_TIME diff --git a/components/libc/compilers/gcc/newlib/syscalls.c b/components/libc/compilers/gcc/newlib/syscalls.c index 7c25ffac3f..f3a2f5bfcf 100644 --- a/components/libc/compilers/gcc/newlib/syscalls.c +++ b/components/libc/compilers/gcc/newlib/syscalls.c @@ -80,7 +80,7 @@ void _free_r (struct _reent *ptr, void *addr) void * _sbrk_r(struct _reent *ptr, ptrdiff_t incr) { - LOG_E("Please enable RT_USING_HEAP or RT_USING_LIBC"); + LOG_E("Please enable RT_USING_HEAP"); RT_ASSERT(0); return RT_NULL; } @@ -109,7 +109,12 @@ int _getpid_r(struct _reent *ptr) int _close_r(struct _reent *ptr, int fd) { +#ifdef RT_USING_POSIX return close(fd); +#else + ptr->_errno = ENOTSUP; + return -1; +#endif } int _execve_r(struct _reent *ptr, const char * name, char *const *argv, char *const *env)