16758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar/* ===-- string.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 __STRING_H__
186758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#define __STRING_H__
196758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar
206758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbartypedef __SIZE_TYPE__ size_t;
216758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar
22fa3eee4101f39661b4a88ac0bc7f184ca8c1ecb1Benjamin Kramerint memcmp(const void *, const void *, size_t);
23fa3eee4101f39661b4a88ac0bc7f184ca8c1ecb1Benjamin Kramervoid *memcpy(void *, const void *, size_t);
242a46a60510948b5005d62025fbba307a0323ed8dBill Wendlingvoid *memset(void *, int, size_t);
256758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbarchar *strcat(char *, const char *);
266758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbarchar *strcpy(char *, const char *);
276758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbarchar *strdup(const char *);
286758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbarsize_t strlen(const char *);
296758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbarchar *strncpy(char *, const char *, size_t);
306758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar
31da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling/* Determine the appropriate strerror() function. */
32da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
33da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling#  if defined(__i386)
34da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling#    define __STRERROR_NAME  "_strerror$UNIX2003"
35da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling#  elif defined(__x86_64__) || defined(__arm)
36da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling#    define __STRERROR_NAME  "_strerror"
37da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling#  else
382d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#    error "unrecognized architecture for targeting OS X"
39da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling#  endif
40da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling#elif defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__)
41da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling#  if defined(__i386) || defined (__x86_64) || defined(__arm)
42da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling#    define __STRERROR_NAME  "_strerror"
43da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling#  else
442d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#    error "unrecognized architecture for targeting iOS"
45da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling#  endif
46da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling#else
472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#  error "unrecognized architecture for targeting Darwin"
48da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling#endif
49da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling
50da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendlingchar *strerror(int) __asm(__STRERROR_NAME);
51da8596b60b1c90a870c9610c2cef7f06a03b6cdcBill Wendling
526758892590ff3a56d800cb862d3b37f63ff941faDaniel Dunbar#endif /* __STRING_H__ */
53