166e7cd0eea6f116f3ed79acb8948c6d8db50833cReid Spencer/* ===-- string.h - stub SDK header for compiler-rt -------------------------===
2237cef4b0b94b17ca065efad484f386f42579b61Misha Brukman *
37db7fa0828bc4ac375032a847b3fd530cef131e2Chris Lattner *                     The LLVM Compiler Infrastructure
47db7fa0828bc4ac375032a847b3fd530cef131e2Chris Lattner *
5fc001bbfc360ab828e5a4b0cbe4bb7db87361b85Chris Lattner * This file is dual licensed under the MIT and the University of Illinois Open
6fc001bbfc360ab828e5a4b0cbe4bb7db87361b85Chris Lattner * Source Licenses. See LICENSE.TXT for details.
7237cef4b0b94b17ca065efad484f386f42579b61Misha Brukman *
87db7fa0828bc4ac375032a847b3fd530cef131e2Chris Lattner * ===-----------------------------------------------------------------------===
98ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner *
108ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner * This is a stub SDK header file. This file is not part of the interface of
11a99be51bf5cdac1438069d4b01766c47704961c8Gabor Greif * this library nor an official version of the appropriate SDK header. It is
128ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner * intended only to stub the features of this header required by compiler-rt.
138ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner *
148ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner * ===-----------------------------------------------------------------------===
158ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner */
164ca7e09b7c1e41535f2a1bd86915375d023daf27Chandler Carruth
170a08460599eed603e469e3e16d0cf6aa33b8ba93Chandler Carruth#ifndef __STRING_H__
180a08460599eed603e469e3e16d0cf6aa33b8ba93Chandler Carruth#define __STRING_H__
190a08460599eed603e469e3e16d0cf6aa33b8ba93Chandler Carruth
200a08460599eed603e469e3e16d0cf6aa33b8ba93Chandler Carruthtypedef __SIZE_TYPE__ size_t;
210a08460599eed603e469e3e16d0cf6aa33b8ba93Chandler Carruth
22b515d75856f58a8b3b71d782eb00916d686329adChris Lattnerint memcmp(const void *, const void *, size_t);
23d0fde30ce850b78371fd1386338350591f9ff494Brian Gaekevoid *memcpy(void *, const void *, size_t);
24d0fde30ce850b78371fd1386338350591f9ff494Brian Gaekevoid *memset(void *, int, size_t);
258ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattnerchar *strcat(char *, const char *);
268b477ed579794ba6d76915d56b3f448a7dd20120Owen Andersonchar *strcpy(char *, const char *);
278b477ed579794ba6d76915d56b3f448a7dd20120Owen Andersonchar *strdup(const char *);
288ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattnersize_t strlen(const char *);
298ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattnerchar *strncpy(char *, const char *, size_t);
3031895e73591d3c9ceae731a1274c8f56194b9616Owen Anderson
31237cef4b0b94b17ca065efad484f386f42579b61Misha Brukman/* Determine the appropriate strerror() function. */
328ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
339adc0abad3c3ed40a268ccbcee0c74cb9e1359feOwen Anderson#  if defined(__i386)
341d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson#    define __STRERROR_NAME  "_strerror$UNIX2003"
35237cef4b0b94b17ca065efad484f386f42579b61Misha Brukman#  elif defined(__x86_64__) || defined(__arm)
368ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner#    define __STRERROR_NAME  "_strerror"
378ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner#  else
38051a950000e21935165db56695e35bade668193bGabor Greif#    error "unrecognized architecture for targetting OS X"
39237cef4b0b94b17ca065efad484f386f42579b61Misha Brukman#  endif
408ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner#elif defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__)
418ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner#  if defined(__i386) || defined (__x86_64) || defined(__arm)
421d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson#    define __STRERROR_NAME  "_strerror"
43237cef4b0b94b17ca065efad484f386f42579b61Misha Brukman#  else
448ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner#    error "unrecognized architecture for targetting iOS"
451d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson#  endif
461d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson#else
47237cef4b0b94b17ca065efad484f386f42579b61Misha Brukman#  error "unrecognized architecture for targetting Darwin"
488ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner#endif
497cbd8a3e92221437048b484d5ef9c0a22d0f8c58Gabor Greif
508ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattnerchar *strerror(int) __asm(__STRERROR_NAME);
51237cef4b0b94b17ca065efad484f386f42579b61Misha Brukman
528ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner#endif /* __STRING_H__ */
538ca0eebe4ef4fe810dba5ce91306031272f139cfChris Lattner