mirror of
				https://github.com/esp8266/Arduino.git
				synced 2025-10-30 04:26:50 +03:00 
			
		
		
		
	* Use newlib libc library This change adds libcmin.a, which is created from newlib libc by selectively removing some of the object files (mostly related to heap management). The list of files is available in tools/sdk/lib/make_libcmin.sh. Files which are not needed are commented out. This change adds support for various functions which were missing, like sscanf, strftime, etc. * Fix some of the time functions * Redirect stdout to serial * Implement __putc_r * Switch to custom newlib build Built from https://github.com/igrr/newlib-xtensa using: ./configure --with-newlib --enable-multilib --disable-newlib-io-c99-formats --enable-newlib-supplied-syscalls --enable-target-optspace --program-transform-name="s&^&xtensa-lx106-elf-&" --disable-option-checking --with-target-subdir=xtensa-lx106-elf --target=xtensa-lx106-elf --enable-newlib-nano-formatted-io --enable-newlib-reent-small --prefix=path-to-arduino-core/tools/sdk/libc CROSS_CFLAGS="-DMALLOC_PROVIDED -DSIGNAL_PROVIDED -DABORT_PROVIDED" make make install * Update tests
		
			
				
	
	
		
			80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * stdio_ext.h
 | |
|  *
 | |
|  * Definitions for I/O internal operations, originally from Solaris.
 | |
|  */
 | |
| 
 | |
| #ifndef _STDIO_EXT_H_
 | |
| #define _STDIO_EXT_H_
 | |
| 
 | |
| #ifdef __rtems__
 | |
| #error "<stdio_ext.h> not supported"
 | |
| #endif
 | |
| 
 | |
| #include <stdio.h>
 | |
| 
 | |
| #define	FSETLOCKING_QUERY	0
 | |
| #define	FSETLOCKING_INTERNAL	1
 | |
| #define	FSETLOCKING_BYCALLER	2
 | |
| 
 | |
| _BEGIN_STD_C
 | |
| 
 | |
| void	 _EXFUN(__fpurge,(FILE *));
 | |
| int	 _EXFUN(__fsetlocking,(FILE *, int));
 | |
| 
 | |
| /* TODO:
 | |
| 
 | |
|    void _flushlbf (void);
 | |
| */
 | |
| 
 | |
| #ifdef  __GNUC__
 | |
| 
 | |
| _ELIDABLE_INLINE size_t
 | |
| __fbufsize (FILE *__fp) { return (size_t) __fp->_bf._size; }
 | |
| 
 | |
| _ELIDABLE_INLINE int
 | |
| __freading (FILE *__fp) { return (__fp->_flags & __SRD) != 0; }
 | |
| 
 | |
| _ELIDABLE_INLINE int
 | |
| __fwriting (FILE *__fp) { return (__fp->_flags & __SWR) != 0; }
 | |
| 
 | |
| _ELIDABLE_INLINE int
 | |
| __freadable (FILE *__fp) { return (__fp->_flags & (__SRD | __SRW)) != 0; }
 | |
| 
 | |
| _ELIDABLE_INLINE int
 | |
| __fwritable (FILE *__fp) { return (__fp->_flags & (__SWR | __SRW)) != 0; }
 | |
| 
 | |
| _ELIDABLE_INLINE int
 | |
| __flbf (FILE *__fp) { return (__fp->_flags & __SLBF) != 0; }
 | |
| 
 | |
| _ELIDABLE_INLINE size_t
 | |
| __fpending (FILE *__fp) { return __fp->_p - __fp->_bf._base; }
 | |
| 
 | |
| #else
 | |
| 
 | |
| size_t	 _EXFUN(__fbufsize,(FILE *));
 | |
| int	 _EXFUN(__freading,(FILE *));
 | |
| int	 _EXFUN(__fwriting,(FILE *));
 | |
| int	 _EXFUN(__freadable,(FILE *));
 | |
| int	 _EXFUN(__fwritable,(FILE *));
 | |
| int	 _EXFUN(__flbf,(FILE *));
 | |
| size_t	 _EXFUN(__fpending,(FILE *));
 | |
| 
 | |
| #ifndef __cplusplus
 | |
| 
 | |
| #define __fbufsize(__fp) ((size_t) (__fp)->_bf._size)
 | |
| #define __freading(__fp) (((__fp)->_flags & __SRD) != 0)
 | |
| #define __fwriting(__fp) (((__fp)->_flags & __SWR) != 0)
 | |
| #define __freadable(__fp) (((__fp)->_flags & (__SRD | __SRW)) != 0)
 | |
| #define __fwritable(__fp) (((__fp)->_flags & (__SWR | __SRW)) != 0)
 | |
| #define __flbf(__fp) (((__fp)->_flags & __SLBF) != 0)
 | |
| #define __fpending(__fp) ((size_t) ((__fp)->_p - (__fp)->_bf._base))
 | |
| 
 | |
| #endif /* __cplusplus */
 | |
| 
 | |
| #endif /* __GNUC__ */
 | |
| 
 | |
| _END_STD_C
 | |
| 
 | |
| #endif /* _STDIO_EXT_H_ */
 |