summaryrefslogtreecommitdiffstats
path: root/newlib/libc/include
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/include')
-rw-r--r--newlib/libc/include/stdio.h9
-rw-r--r--newlib/libc/include/sys/config.h1
-rw-r--r--newlib/libc/include/sys/custom_file.h2
-rw-r--r--newlib/libc/include/sys/reent.h11
4 files changed, 20 insertions, 3 deletions
diff --git a/newlib/libc/include/stdio.h b/newlib/libc/include/stdio.h
index f99480d44..4d3e0c597 100644
--- a/newlib/libc/include/stdio.h
+++ b/newlib/libc/include/stdio.h
@@ -395,6 +395,7 @@ FILE *_EXFUN(funopen,(const _PTR _cookie,
#define fwopen(cookie, fn) funopen(cookie, (int (*)())0, fn, (fpos_t (*)())0, (int (*)())0)
#endif
+#ifndef __CUSTOM_FILE_IO__
/*
* The __sfoo macros are here so that we can
* define function versions in the C library.
@@ -472,9 +473,6 @@ static __inline int __sputc_r(struct _reent *_ptr, int _c, FILE *_p) {
#endif /* lint */
#endif /* __CYGWIN__ */
-#define getchar() getc(stdin)
-#define putchar(x) putc(x, stdout)
-
#ifndef __STRICT_ANSI__
/* fast always-buffered version, true iff error */
#define fast_putc(x,p) (--(p)->_w < 0 ? \
@@ -486,6 +484,11 @@ static __inline int __sputc_r(struct _reent *_ptr, int _c, FILE *_p) {
#endif
#endif
+#endif /* !__CUSTOM_FILE_IO__ */
+
+#define getchar() getc(stdin)
+#define putchar(x) putc(x, stdout)
+
_END_STD_C
#endif /* _STDIO_H_ */
diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h
index 1f3c3e03d..58305d4a8 100644
--- a/newlib/libc/include/sys/config.h
+++ b/newlib/libc/include/sys/config.h
@@ -132,6 +132,7 @@
#ifdef __SPU__
#define MALLOC_ALIGNMENT 16
+#define __CUSTOM_FILE_IO__
#endif
/* This block should be kept in sync with GCC's limits.h. The point
diff --git a/newlib/libc/include/sys/custom_file.h b/newlib/libc/include/sys/custom_file.h
new file mode 100644
index 000000000..96314fb91
--- /dev/null
+++ b/newlib/libc/include/sys/custom_file.h
@@ -0,0 +1,2 @@
+#error System-specific custom_file.h is missing.
+
diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h
index a7d4f968f..93c79ffc7 100644
--- a/newlib/libc/include/sys/reent.h
+++ b/newlib/libc/include/sys/reent.h
@@ -212,6 +212,12 @@ struct __sFILE {
#endif
};
+#ifdef __CUSTOM_FILE_IO__
+
+/* Get custom _FILE definition. */
+#include <sys/custom_file.h>
+
+#else /* !__CUSTOM_FILE_IO__ */
#ifdef __LARGE64_FILES
struct __sFILE64 {
unsigned char *_p; /* current position in (some) buffer */
@@ -260,6 +266,7 @@ typedef struct __sFILE64 __FILE;
#else
typedef struct __sFILE __FILE;
#endif /* __LARGE64_FILES */
+#endif /* !__CUSTOM_FILE_IO__ */
struct _glue
{
@@ -459,6 +466,10 @@ extern const struct __sFILE_fake __sf_fake_stderr;
#define __reent_assert(x) ((void)0)
#endif
+#ifdef __CUSTOM_FILE_IO__
+#error Custom FILE I/O and _REENT_SMALL not currently supported.
+#endif
+
/* Generic _REENT check macro. */
#define _REENT_CHECK(var, what, type, size, init) do { \
struct _reent *_r = (var); \