16758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar/* ===-- stdio.h - stub SDK header for compiler-rt --------------------------===
26758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar *
36758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar *                     The LLVM Compiler Infrastructure
46758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar *
56758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar * This file is dual licensed under the MIT and the University of Illinois Open
66758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar * Source Licenses. See LICENSE.TXT for details.
76758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar *
86758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar * ===-----------------------------------------------------------------------===
96758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar *
106758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar * This is a stub SDK header file. This file is not part of the interface of
116758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar * this library nor an official version of the appropriate SDK header. It is
126758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar * intended only to stub the features of this header required by compiler-rt.
136758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar *
146758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar * ===-----------------------------------------------------------------------===
156758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar */
166758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar
176758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#ifndef __STDIO_H__
186758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#define __STDIO_H__
196758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar
204a4ef702597471bff5e249b8ec9d94d265007895Richard Smith#if defined(__cplusplus)
214a4ef702597471bff5e249b8ec9d94d265007895Richard Smithextern "C" {
224a4ef702597471bff5e249b8ec9d94d265007895Richard Smith#endif
234a4ef702597471bff5e249b8ec9d94d265007895Richard Smith
246758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbartypedef struct __sFILE FILE;
256758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbartypedef __SIZE_TYPE__ size_t;
266758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar
27d06f2fc03087e7cccda19bd550bf6fb3bc2f5ae7Bill Wendling/* Determine the appropriate fdopen, fopen(), and fwrite() functions. */
286758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
296758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#  if defined(__i386)
30d06f2fc03087e7cccda19bd550bf6fb3bc2f5ae7Bill Wendling#    define __FDOPEN_NAME  "_fdopen$UNIX2003"
316758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#    define __FOPEN_NAME "_fopen$UNIX2003"
326758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#    define __FWRITE_NAME "_fwrite$UNIX2003"
336758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#  elif defined(__x86_64__)
34d06f2fc03087e7cccda19bd550bf6fb3bc2f5ae7Bill Wendling#    define __FDOPEN_NAME  "_fdopen"
356758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#    define __FOPEN_NAME "_fopen"
366758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#    define __FWRITE_NAME "_fwrite"
376758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#  elif defined(__arm)
38d06f2fc03087e7cccda19bd550bf6fb3bc2f5ae7Bill Wendling#    define __FDOPEN_NAME  "_fdopen"
396758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#    define __FOPEN_NAME "_fopen"
406758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#    define __FWRITE_NAME "_fwrite"
416758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#  else
422d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#    error "unrecognized architecture for targeting OS X"
436758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#  endif
446758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#elif defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__)
456758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#  if defined(__i386) || defined (__x86_64)
46d06f2fc03087e7cccda19bd550bf6fb3bc2f5ae7Bill Wendling#    define __FDOPEN_NAME  "_fdopen"
476758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#    define __FOPEN_NAME "_fopen"
486758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#    define __FWRITE_NAME "_fwrite"
496758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#  elif defined(__arm)
50d06f2fc03087e7cccda19bd550bf6fb3bc2f5ae7Bill Wendling#    define __FDOPEN_NAME  "_fdopen"
516758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#    define __FOPEN_NAME "_fopen"
526758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#    define __FWRITE_NAME "_fwrite"
536758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#  else
542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#    error "unrecognized architecture for targeting iOS"
556758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#  endif
566758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#else
572d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#  error "unrecognized architecture for targeting Darwin"
586758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#endif
596758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar
606758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#    define stderr __stderrp
616758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbarextern FILE *__stderrp;
626758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar
63843f359862fb8370eacf8aed4e749c46a92b2e38Bill Wendling#ifndef SEEK_SET
64843f359862fb8370eacf8aed4e749c46a92b2e38Bill Wendling#define	SEEK_SET	0	/* set file offset to offset */
65843f359862fb8370eacf8aed4e749c46a92b2e38Bill Wendling#endif
66843f359862fb8370eacf8aed4e749c46a92b2e38Bill Wendling#ifndef SEEK_CUR
67843f359862fb8370eacf8aed4e749c46a92b2e38Bill Wendling#define	SEEK_CUR	1	/* set file offset to current plus offset */
68843f359862fb8370eacf8aed4e749c46a92b2e38Bill Wendling#endif
69843f359862fb8370eacf8aed4e749c46a92b2e38Bill Wendling#ifndef SEEK_END
70843f359862fb8370eacf8aed4e749c46a92b2e38Bill Wendling#define	SEEK_END	2	/* set file offset to EOF plus offset */
71843f359862fb8370eacf8aed4e749c46a92b2e38Bill Wendling#endif
72843f359862fb8370eacf8aed4e749c46a92b2e38Bill Wendling
736758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbarint fclose(FILE *);
746758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbarint fflush(FILE *);
754a4ef702597471bff5e249b8ec9d94d265007895Richard SmithFILE *fopen(const char * __restrict, const char * __restrict) __asm(__FOPEN_NAME);
76d06f2fc03087e7cccda19bd550bf6fb3bc2f5ae7Bill WendlingFILE *fdopen(int, const char *) __asm(__FDOPEN_NAME);
774a4ef702597471bff5e249b8ec9d94d265007895Richard Smithint fprintf(FILE * __restrict, const char * __restrict, ...);
782d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesint fputc(int, FILE *);
794a4ef702597471bff5e249b8ec9d94d265007895Richard Smithsize_t fwrite(const void * __restrict, size_t, size_t, FILE * __restrict)
806758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar  __asm(__FWRITE_NAME);
81843f359862fb8370eacf8aed4e749c46a92b2e38Bill Wendlingsize_t fread(void * __restrict, size_t, size_t, FILE * __restrict);
82843f359862fb8370eacf8aed4e749c46a92b2e38Bill Wendlinglong ftell(FILE *);
83843f359862fb8370eacf8aed4e749c46a92b2e38Bill Wendlingint fseek(FILE *, long, int);
844a4ef702597471bff5e249b8ec9d94d265007895Richard Smithint snprintf(char * __restrict, size_t, const char * __restrict, ...);
854a4ef702597471bff5e249b8ec9d94d265007895Richard Smith
864a4ef702597471bff5e249b8ec9d94d265007895Richard Smith#if defined(__cplusplus)
874a4ef702597471bff5e249b8ec9d94d265007895Richard Smith}
884a4ef702597471bff5e249b8ec9d94d265007895Richard Smith#endif
894a4ef702597471bff5e249b8ec9d94d265007895Richard Smith
906758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#endif /* __STDIO_H__ */
91