| #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 |
| |
| /* 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 |
| |
| static struct _reent __ATTRIBUTE_IMPURE_DATA__ impure_data = _REENT_INIT (impure_data); |
| #ifdef __CYGWIN__ |
| extern struct _reent reent_data __attribute__ ((alias("impure_data"))); |
| #endif |
| struct _reent *__ATTRIBUTE_IMPURE_PTR__ _impure_ptr = &impure_data; |
| struct _reent *_CONST __ATTRIBUTE_IMPURE_PTR__ _global_impure_ptr = &impure_data; |