2000-02-18 03:39:52 +08:00
|
|
|
#include <reent.h>
|
|
|
|
|
|
|
|
/* Note that there is a copy of this in sys/reent.h. */
|
|
|
|
#ifndef __ATTRIBUTE_IMPURE_PTR__
|
|
|
|
#define __ATTRIBUTE_IMPURE_PTR__
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef __ATTRIBUTE_IMPURE_DATA__
|
|
|
|
#define __ATTRIBUTE_IMPURE_DATA__
|
|
|
|
#endif
|
|
|
|
|
2009-04-22 02:38:53 +08:00
|
|
|
/* Redeclare these symbols locally as weak so that the file containing
|
|
|
|
their definitions (along with a lot of other stuff) isn't sucked in
|
|
|
|
unless they are actually used by other compilation units. This is
|
|
|
|
important to reduce image size for targets with very small amounts
|
|
|
|
of memory. */
|
|
|
|
#ifdef _REENT_SMALL
|
|
|
|
extern const struct __sFILE_fake __sf_fake_stdin _ATTRIBUTE ((weak));
|
|
|
|
extern const struct __sFILE_fake __sf_fake_stdout _ATTRIBUTE ((weak));
|
|
|
|
extern const struct __sFILE_fake __sf_fake_stderr _ATTRIBUTE ((weak));
|
|
|
|
#endif
|
|
|
|
|
2000-02-18 03:39:52 +08:00
|
|
|
static struct _reent __ATTRIBUTE_IMPURE_DATA__ impure_data = _REENT_INIT (impure_data);
|
2004-09-16 05:44:39 +08:00
|
|
|
#ifdef __CYGWIN__
|
|
|
|
extern struct _reent reent_data __attribute__ ((alias("impure_data")));
|
|
|
|
#endif
|
2000-02-18 03:39:52 +08:00
|
|
|
struct _reent *__ATTRIBUTE_IMPURE_PTR__ _impure_ptr = &impure_data;
|
2017-12-04 10:25:16 +08:00
|
|
|
struct _reent *const __ATTRIBUTE_IMPURE_PTR__ _global_impure_ptr = &impure_data;
|