Merge pull request #583 from ourairquality/global-stdio-streams

newlib: rebuild with the global stdio streams enabled.
This commit is contained in:
Ruslan V. Uss 2018-04-02 11:22:48 +05:00 committed by GitHub
commit 524a98ed1a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 47 additions and 6 deletions

View file

@ -431,8 +431,6 @@ static __attribute__((noinline)) void user_start_phase2(void) {
memcpy(&phy_info, &default_phy_info, sizeof(sdk_phy_info_t)); memcpy(&phy_info, &default_phy_info, sizeof(sdk_phy_info_t));
} }
// Disable default buffering on stdout
setbuf(stdout, NULL);
// Wait for UARTs to finish sending anything in their queues. // Wait for UARTs to finish sending anything in their queues.
uart_flush_txfifo(0); uart_flush_txfifo(0);
uart_flush_txfifo(1); uart_flush_txfifo(1);

View file

@ -1,9 +1,9 @@
Newlib from git://sourceware.org/git/newlib-cygwin.git with xtensa & locking patches see https://github.com/ourairquality/newlib and built from commit 7558d27f9dba58ba0e51e37a2aa3ea6be7214799 Newlib from git://sourceware.org/git/newlib-cygwin.git with xtensa & locking patches see https://github.com/ourairquality/newlib and built from commit 984b749fb223daab954060c04720933290584f00
The build commands were: The build commands were:
mkdir build mkdir build
cd build cd build
../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-malloc --enable-newlib-nano-formatted-io --enable-newlib-reent-small --disable-newlib-mb --prefix=/tmp/libc ../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-malloc --enable-newlib-nano-formatted-io --enable-newlib-reent-small --disable-newlib-mb --enable-newlib-global-stdio-streams --prefix=/tmp/libc
env CROSS_CFLAGS="-DSIGNAL_PROVIDED -DABORT_PROVIDED" make env CROSS_CFLAGS="-DSIGNAL_PROVIDED -DABORT_PROVIDED" make
make install make install

View file

@ -133,6 +133,10 @@ extern int malloc_trim (size_t);
extern int _malloc_trim_r (struct _reent *, size_t); extern int _malloc_trim_r (struct _reent *, size_t);
#endif #endif
extern void __malloc_lock(struct _reent *);
extern void __malloc_unlock(struct _reent *);
/* A compatibility routine for an earlier version of the allocator. */ /* A compatibility routine for an earlier version of the allocator. */
extern void mstats (char *); extern void mstats (char *);

View file

@ -83,7 +83,7 @@
/* Define to move the stdio stream FILE objects out of struct _reent and make /* Define to move the stdio stream FILE objects out of struct _reent and make
them global. The stdio stream pointers of struct _reent are initialized to them global. The stdio stream pointers of struct _reent are initialized to
point to the global stdio FILE stream objects. */ point to the global stdio FILE stream objects. */
/* #undef _WANT_REENT_GLOBAL_STDIO_STREAMS */ #define _WANT_REENT_GLOBAL_STDIO_STREAMS 1
/* Define if small footprint nano-formatted-IO implementation used. */ /* Define if small footprint nano-formatted-IO implementation used. */
#define _NANO_FORMATTED_IO 1 #define _NANO_FORMATTED_IO 1

View file

@ -144,7 +144,7 @@ struct __sbuf {
* _ub._base!=NULL) and _up and _ur save the current values of _p and _r. * _ub._base!=NULL) and _up and _ur save the current values of _p and _r.
*/ */
#ifdef _REENT_SMALL #if defined(_REENT_SMALL) && !defined(_REENT_GLOBAL_STDIO_STREAMS)
/* /*
* struct __sFILE_fake is the start of a struct __sFILE, with only the * struct __sFILE_fake is the start of a struct __sFILE, with only the
* minimal fields allocated. In __sinit() we really allocate the 3 * minimal fields allocated. In __sinit() we really allocate the 3
@ -418,6 +418,43 @@ struct _reent
char *_signal_buf; /* strsignal */ char *_signal_buf; /* strsignal */
}; };
#ifdef _REENT_GLOBAL_STDIO_STREAMS
extern __FILE __sf[3];
# define _REENT_INIT(var) \
{ 0, \
&__sf[0], \
&__sf[1], \
&__sf[2], \
0, \
_NULL, \
0, \
0, \
_NULL, \
_NULL, \
_NULL, \
0, \
0, \
_NULL, \
_NULL, \
_NULL, \
_NULL, \
_NULL, \
_REENT_INIT_ATEXIT \
{_NULL, 0, _NULL}, \
_NULL, \
_NULL, \
_NULL \
}
#define _REENT_INIT_PTR_ZEROED(var) \
{ (var)->_stdin = &__sf[0]; \
(var)->_stdout = &__sf[1]; \
(var)->_stderr = &__sf[2]; \
}
#else
extern const struct __sFILE_fake __sf_fake_stdin; extern const struct __sFILE_fake __sf_fake_stdin;
extern const struct __sFILE_fake __sf_fake_stdout; extern const struct __sFILE_fake __sf_fake_stdout;
extern const struct __sFILE_fake __sf_fake_stderr; extern const struct __sFILE_fake __sf_fake_stderr;
@ -454,6 +491,8 @@ extern const struct __sFILE_fake __sf_fake_stderr;
(var)->_stderr = (__FILE *)&__sf_fake_stderr; \ (var)->_stderr = (__FILE *)&__sf_fake_stderr; \
} }
#endif
/* Only add assert() calls if we are specified to debug. */ /* Only add assert() calls if we are specified to debug. */
#ifdef _REENT_CHECK_DEBUG #ifdef _REENT_CHECK_DEBUG
#include <assert.h> #include <assert.h>

Binary file not shown.

Binary file not shown.

Binary file not shown.