diff options
| author | Bernard Xiong <[email protected]> | 2021-09-28 13:48:39 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-09-28 13:48:39 +0800 |
| commit | d43a68e95e026ecc73eab7999677e46bbd4984ef (patch) | |
| tree | 484d6bbc52f7352eb4b8ccad94e4fbc9b4d54b72 /components/libc/compilers/newlib | |
| parent | ae49c3f560dd4d15f4fa93f0811b6f5ced083da0 (diff) | |
| parent | c80688126a013c53334464799e28fcf2e4f4fb8c (diff) | |
Merge pull request #5105 from mysterywolf/part
[libc]新建gcc文件夹,将newlib和partical文件夹并入
Diffstat (limited to 'components/libc/compilers/newlib')
| -rw-r--r-- | components/libc/compilers/newlib/README.md | 9 | ||||
| -rw-r--r-- | components/libc/compilers/newlib/SConscript | 28 | ||||
| -rw-r--r-- | components/libc/compilers/newlib/libc.c | 50 | ||||
| -rw-r--r-- | components/libc/compilers/newlib/libc.h | 28 | ||||
| -rw-r--r-- | components/libc/compilers/newlib/libc_syms.c | 52 | ||||
| -rw-r--r-- | components/libc/compilers/newlib/machine/time.h | 12 | ||||
| -rw-r--r-- | components/libc/compilers/newlib/stdio.c | 80 | ||||
| -rw-r--r-- | components/libc/compilers/newlib/syscalls.c | 344 |
8 files changed, 0 insertions, 603 deletions
diff --git a/components/libc/compilers/newlib/README.md b/components/libc/compilers/newlib/README.md deleted file mode 100644 index 385f329a4f..0000000000 --- a/components/libc/compilers/newlib/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# NEWLIB (GCC) porting for RT-Thread - -Please define RT_USING_LIBC and compile RT-Thread with GCC compiler. - - - -## More Information - -https://sourceware.org/newlib/libc.html#Reentrancy
\ No newline at end of file diff --git a/components/libc/compilers/newlib/SConscript b/components/libc/compilers/newlib/SConscript deleted file mode 100644 index cef546e17c..0000000000 --- a/components/libc/compilers/newlib/SConscript +++ /dev/null @@ -1,28 +0,0 @@ -from building import * -Import('rtconfig') - -src = [] -cwd = GetCurrentDir() -group = [] -LIBS = [] -CPPDEFINES = [] -CPPPATH = [cwd] - -if rtconfig.PLATFORM == 'gcc': - if GetDepend('RT_USING_LIBC'): - 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'] - - src += Glob('*.c') - if GetDepend('RT_USING_MODULE') == False: - SrcRemove(src, ['libc_syms.c']) - else: - src += ['syscalls.c'] - - group = DefineGroup('libc', src, depend = [], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES, LIBS = LIBS) - -Return('group') diff --git a/components/libc/compilers/newlib/libc.c b/components/libc/compilers/newlib/libc.c deleted file mode 100644 index 9834a9a015..0000000000 --- a/components/libc/compilers/newlib/libc.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2017/10/15 bernard the first version - */ -#include <rtthread.h> -#include <stdio.h> -#include <stdlib.h> -#include <fcntl.h> -#include <sys/time.h> - -#include "libc.h" - -#ifdef RT_USING_PTHREADS -#include <pthread.h> -#endif - -int _EXFUN(putenv,(char *__string)); - -int libc_system_init(void) -{ -#if defined(RT_USING_DFS) & defined(RT_USING_DFS_DEVFS) & defined(RT_USING_CONSOLE) - rt_device_t dev_console; - - dev_console = rt_console_get_device(); - if (dev_console) - { - #if defined(RT_USING_POSIX) - libc_stdio_set_console(dev_console->parent.name, O_RDWR); - #else - libc_stdio_set_console(dev_console->parent.name, O_WRONLY); - #endif - } - - /* set PATH and HOME */ - putenv("PATH=/bin"); - putenv("HOME=/home"); -#endif - -#if defined RT_USING_PTHREADS && !defined RT_USING_COMPONENTS_INIT - pthread_system_init(); -#endif - - return 0; -} -INIT_COMPONENT_EXPORT(libc_system_init); diff --git a/components/libc/compilers/newlib/libc.h b/components/libc/compilers/newlib/libc.h deleted file mode 100644 index c470698aa6..0000000000 --- a/components/libc/compilers/newlib/libc.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2017/10/15 bernard the first version - */ -#ifndef __RTT_LIBC_H__ -#define __RTT_LIBC_H__ - -#ifndef _EXFUN -#define _EXFUN(name, proto) name proto -#endif - -#ifdef __cplusplus -extern "C" { -#endif -int libc_system_init(void); -int libc_stdio_get_console(void); -int libc_stdio_set_console(const char* device_name, int mode); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/components/libc/compilers/newlib/libc_syms.c b/components/libc/compilers/newlib/libc_syms.c deleted file mode 100644 index aaf6980d6b..0000000000 --- a/components/libc/compilers/newlib/libc_syms.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2017/10/15 bernard the first version - */ -#include <rtthread.h> -#include <rtm.h> - -#include <string.h> -#include <stdio.h> -#include <stdlib.h> - -RTM_EXPORT(strcpy); -RTM_EXPORT(strncpy); -RTM_EXPORT(strlen); -RTM_EXPORT(strcat); -RTM_EXPORT(strstr); -RTM_EXPORT(strchr); -RTM_EXPORT(strcmp); -RTM_EXPORT(strtol); -RTM_EXPORT(strtoul); -RTM_EXPORT(strncmp); - -RTM_EXPORT(memcpy); -RTM_EXPORT(memcmp); -RTM_EXPORT(memmove); -RTM_EXPORT(memset); -RTM_EXPORT(memchr); - -RTM_EXPORT(putchar); -RTM_EXPORT(puts); -RTM_EXPORT(printf); -RTM_EXPORT(sprintf); -RTM_EXPORT(snprintf); - -RTM_EXPORT(fwrite); - -#include <setjmp.h> -RTM_EXPORT(longjmp); -RTM_EXPORT(setjmp); - -RTM_EXPORT(exit); -RTM_EXPORT(abort); - -RTM_EXPORT(rand); - -#include <assert.h> -RTM_EXPORT(__assert_func); diff --git a/components/libc/compilers/newlib/machine/time.h b/components/libc/compilers/newlib/machine/time.h deleted file mode 100644 index ff754d2473..0000000000 --- a/components/libc/compilers/newlib/machine/time.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef _MACHTIME_H_ -#define _MACHTIME_H_ - -#include <rtconfig.h> -#define _CLOCKS_PER_SEC_ RT_TICK_PER_SECOND - -#ifdef __SPU__ -#include <sys/_timespec.h> -int nanosleep (const struct timespec *, struct timespec *); -#endif - -#endif /* _MACHTIME_H_ */ diff --git a/components/libc/compilers/newlib/stdio.c b/components/libc/compilers/newlib/stdio.c deleted file mode 100644 index baccafad87..0000000000 --- a/components/libc/compilers/newlib/stdio.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2017/10/15 bernard the first version - */ -#include <stdio.h> -#include <stdlib.h> -#include <fcntl.h> -#include <rtthread.h> -#include "libc.h" - -#define STDIO_DEVICE_NAME_MAX 32 - -int _EXFUN(fileno, (FILE *)); - -static FILE* std_console = NULL; - -int libc_stdio_set_console(const char* device_name, int mode) -{ - FILE *fp; - char name[STDIO_DEVICE_NAME_MAX]; - char *file_mode; - - snprintf(name, sizeof(name) - 1, "/dev/%s", device_name); - name[STDIO_DEVICE_NAME_MAX - 1] = '\0'; - - if (mode == O_RDWR) file_mode = "r+"; - else if (mode == O_WRONLY) file_mode = "wb"; - else file_mode = "rb"; - - fp = fopen(name, file_mode); - if (fp) - { - setvbuf(fp, NULL, _IONBF, 0); - - if (std_console) - { - fclose(std_console); - std_console = NULL; - } - std_console = fp; - - if (mode == O_RDWR) - { - _GLOBAL_REENT->_stdin = std_console; - } - else - { - _GLOBAL_REENT->_stdin = NULL; - } - - if (mode == O_RDONLY) - { - _GLOBAL_REENT->_stdout = NULL; - _GLOBAL_REENT->_stderr = NULL; - } - else - { - _GLOBAL_REENT->_stdout = std_console; - _GLOBAL_REENT->_stderr = std_console; - } - - _GLOBAL_REENT->__sdidinit = 1; - } - - if (std_console) return fileno(std_console); - - return -1; -} - -int libc_stdio_get_console(void) { - if (std_console) - return fileno(std_console); - else - return -1; -} diff --git a/components/libc/compilers/newlib/syscalls.c b/components/libc/compilers/newlib/syscalls.c deleted file mode 100644 index 4c1dc82ad3..0000000000 --- a/components/libc/compilers/newlib/syscalls.c +++ /dev/null @@ -1,344 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-02-11 Meco Man remove _gettimeofday_r() and _times_r() - * 2020-02-13 Meco Man re-implement exit() and abort() - * 2020-02-21 Meco Man improve and beautify syscalls - * 2020-02-24 Meco Man fix bug of _isatty_r() - */ - -#include <reent.h> -#include <rtthread.h> -#include <stddef.h> -#include <unistd.h> -#include <sys/errno.h> - -#define DBG_TAG "newlib.syscalls" -#define DBG_LVL DBG_INFO -#include <rtdbg.h> - -#ifdef RT_USING_HEAP /* Memory routine */ -void *_malloc_r (struct _reent *ptr, size_t size) -{ - void* result; - - result = (void*)rt_malloc (size); - if (result == RT_NULL) - { - ptr->_errno = ENOMEM; - } - - return result; -} - -void *_realloc_r (struct _reent *ptr, void *old, size_t newlen) -{ - void* result; - - result = (void*)rt_realloc (old, newlen); - if (result == RT_NULL) - { - ptr->_errno = ENOMEM; - } - - return result; -} - -void *_calloc_r (struct _reent *ptr, size_t size, size_t len) -{ - void* result; - - result = (void*)rt_calloc (size, len); - if (result == RT_NULL) - { - ptr->_errno = ENOMEM; - } - - return result; -} - -void _free_r (struct _reent *ptr, void *addr) -{ - rt_free (addr); -} - -#else -void * -_sbrk_r(struct _reent *ptr, ptrdiff_t incr) -{ - LOG_E("Please enable RT_USING_HEAP or RT_USING_LIBC"); - RT_ASSERT(0); - return RT_NULL; -} -#endif /*RT_USING_HEAP*/ - -void __libc_init_array(void) -{ - /* we not use __libc init_aray to initialize C++ objects */ - /* __libc_init_array is ARM code, not Thumb; it will cause a hardfault. */ -} - -#ifdef RT_USING_LIBC -#include <reent.h> -#include <stdio.h> -#ifdef RT_USING_DFS -#include <dfs_posix.h> -#endif -#ifdef RT_USING_MODULE -#include <dlmodule.h> -#endif - -#define DBG_TAG "newlib.syscalls" -#define DBG_LVL DBG_INFO -#include <rtdbg.h> - -/* Reentrant versions of system calls. */ - -#ifndef _REENT_ONLY -int *__errno () -{ - return _rt_errno(); -} -#endif - -int _getpid_r(struct _reent *ptr) -{ - return 0; -} - -int _close_r(struct _reent *ptr, int fd) -{ -#ifndef RT_USING_DFS - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -#else - return close(fd); -#endif -} - -int _execve_r(struct _reent *ptr, const char * name, char *const *argv, char *const *env) -{ - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -} - -int _fcntl_r(struct _reent *ptr, int fd, int cmd, int arg) -{ - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -} - -int _fork_r(struct _reent *ptr) -{ - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -} - -int _fstat_r(struct _reent *ptr, int fd, struct stat *pstat) -{ - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -} - -int _isatty_r(struct _reent *ptr, int fd) -{ - if (fd >=0 && fd < 3) - { - return 1; - } - else - { - return 0; - } -} - -int _kill_r(struct _reent *ptr, int pid, int sig) -{ - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -} - -int _link_r(struct _reent *ptr, const char *old, const char *new) -{ - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -} - -_off_t _lseek_r(struct _reent *ptr, int fd, _off_t pos, int whence) -{ -#ifndef RT_USING_DFS - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -#else - _off_t rc; - - rc = lseek(fd, pos, whence); - return rc; -#endif -} - -int _mkdir_r(struct _reent *ptr, const char *name, int mode) -{ -#ifndef RT_USING_DFS - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -#else - int rc; - - rc = mkdir(name, mode); - return rc; -#endif -} - -int _open_r(struct _reent *ptr, const char *file, int flags, int mode) -{ -#ifndef RT_USING_DFS - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -#else - int rc; - - rc = open(file, flags, mode); - return rc; -#endif -} - -_ssize_t _read_r(struct _reent *ptr, int fd, void *buf, size_t nbytes) -{ -#ifndef RT_USING_DFS - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -#else - _ssize_t rc; - if (libc_stdio_get_console() < 0 && fd == STDIN_FILENO) - { - LOG_W("Do not invoke standard input before initializing libc"); - return 0; - } - rc = read(fd, buf, nbytes); - return rc; -#endif -} - -int _rename_r(struct _reent *ptr, const char *old, const char *new) -{ -#ifndef RT_USING_DFS - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -#else - int rc; - - rc = rename(old, new); - return rc; -#endif -} - -int _stat_r(struct _reent *ptr, const char *file, struct stat *pstat) -{ -#ifndef RT_USING_DFS - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -#else - int rc; - - rc = stat(file, pstat); - return rc; -#endif -} - -int _unlink_r(struct _reent *ptr, const char *file) -{ -#ifndef RT_USING_DFS - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -#else - return unlink(file); -#endif -} - -int _wait_r(struct _reent *ptr, int *status) -{ - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -} - -_ssize_t _write_r(struct _reent *ptr, int fd, const void *buf, size_t nbytes) -{ -#ifndef RT_USING_DFS -#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE) - if (STDOUT_FILENO == fd) - { - rt_device_t console; - - console = rt_console_get_device(); - if (console) return rt_device_write(console, -1, buf, nbytes); - } - - return 0; -#else - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -#endif /*RT_USING_DEVICE*/ -#else - _ssize_t rc; - if (libc_stdio_get_console() < 0 && fd == STDOUT_FILENO) - { - LOG_W("Do not invoke standard output before initializing libc"); - return 0; - } - rc = write(fd, buf, nbytes); - return rc; -#endif -} - -void _system(const char *s) -{ - extern int __rt_libc_system(const char *string); - __rt_libc_system(s); -} - -/* for exit() and abort() */ -__attribute__ ((noreturn)) void _exit (int status) -{ - extern void __rt_libc_exit(int status); - __rt_libc_exit(status); - while(1); -} - -mode_t umask(mode_t mask) -{ - return 022; -} - -int flock(int fd, int operation) -{ - return 0; -} - -/* -These functions are implemented and replaced by the 'common/time.c' file -int _gettimeofday_r(struct _reent *ptr, struct timeval *__tp, void *__tzp); -_CLOCK_T_ _times_r(struct _reent *ptr, struct tms *ptms); -*/ - -#endif /* RT_USING_LIBC */ |
