Project import generated by Copybara.

NOKEYCHECK=True
GitOrigin-RevId: 1ce9d651a8ee180ac250dfa11f66549eb2e44f48
diff --git a/opencflite.patches/opencflite-50.patch b/opencflite.patches/opencflite-50.patch
new file mode 100644
index 0000000..10013ff
--- /dev/null
+++ b/opencflite.patches/opencflite-50.patch
@@ -0,0 +1,63 @@
+diff -aruN a/CFBase.c b/CFBase.c
+--- a/CFBase.c	2009-02-19 16:25:06.000000000 -0800
++++ b/CFBase.c	2010-10-01 14:31:38.286830645 -0700
+@@ -1062,4 +1062,20 @@
+ #endif
+ #endif
+ 
+-
++#if defined(__arm__)
++__asm__ (
++".text\n"
++"	.align 2\n"
++#if DEPLOYMENT_TARGET_MACOSX
++".private_extern ___HALT\n"
++"___HALT:\n"
++#elif DEPLOYMENT_TARGET_LINUX
++".globl __HALT\n"
++"__HALT:\n"
++#else
++".globl ___HALT\n"
++"___HALT:\n"
++#endif
++"	bkpt\n"
++);
++#endif /* defined(__arm__) */
+diff -aruN a/CFBase.h b/CFBase.h
+--- a/CFBase.h	2009-02-19 16:25:06.000000000 -0800
++++ b/CFBase.h	2010-10-01 14:30:23.799644073 -0700
+@@ -50,6 +50,10 @@
+     #define __LITTLE_ENDIAN__ 1
+ #endif
+ 
++#if (defined(__ARMEL__) && !defined(__LITTLE_ENDIAN__))
++	#define __LITTLE_ENDIAN__ 1
++#endif
++
+ #if !defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
+ #error Do not know the endianess of this architecture
+ #endif
+diff -aruN a/CFInternal.h b/CFInternal.h
+--- a/CFInternal.h	2009-02-19 16:25:06.000000000 -0800
++++ b/CFInternal.h	2010-10-01 14:05:48.926799829 -0700
+@@ -121,6 +121,8 @@
+     #else
+         #error Compiler not supported
+     #endif
++#elif defined(__arm__)
++	#define HALT asm __volatile__("bkpt")
+ #endif
+ 
+ #if defined(DEBUG)
+diff -aruN a/include/AvailabilityMacros.h b/include/AvailabilityMacros.h
+--- a/include/AvailabilityMacros.h	2009-02-04 10:42:19.000000000 -0800
++++ b/include/AvailabilityMacros.h	2010-10-01 14:07:14.999780293 -0700
+@@ -84,7 +84,7 @@
+     #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+         #define MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+     #else
+-        #if __ppc64__ || __i386__ || __x86_64__
++        #if __ppc64__ || __i386__ || __x86_64__ || __arm__
+             #define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_4
+         #else
+             #define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_1
diff --git a/opencflite.patches/opencflite-51.patch b/opencflite.patches/opencflite-51.patch
new file mode 100644
index 0000000..77d173c
--- /dev/null
+++ b/opencflite.patches/opencflite-51.patch
@@ -0,0 +1,23 @@
+diff -aruN a/configure b/configure
+--- a/configure	2009-03-10 23:44:34.000000000 -0700
++++ b/configure	2010-10-20 13:12:19.000000000 -0700
+@@ -18528,6 +18528,8 @@
+ 	fi
+ 
+ 	UUID_saved_libs="${LIBS}"
++	UUID_saved_ldflags="${LDFLAGS}"
++	LDFLAGS="${UUID_LDFLAGS} ${LDFLAGS}"
+ 	LIBS=""
+ 
+ 
+@@ -18603,8 +18605,10 @@
+ 
+ 
+ 	UUID_LIBS="${UUID_LDFLAGS} ${LIBS}"
++	LDFLAGS="${UUID_saved_ldflags}"
+ 	LIBS="${UUID_saved_libs}"
+ 	unset UUID_saved_libs
++	unset UUID_saved_ldflags
+ 
+ elif test "x${UUID_CONFIG}" != "x"; then
+ 	UUID_CPPFLAGS="`${UUID_CONFIG} --cflags`"
diff --git a/opencflite.patches/opencflite-52.patch b/opencflite.patches/opencflite-52.patch
new file mode 100644
index 0000000..560f4a4
--- /dev/null
+++ b/opencflite.patches/opencflite-52.patch
@@ -0,0 +1,1664 @@
+diff -aruN a/include/AssertMacros.h b/include/AssertMacros.h
+--- a/include/AssertMacros.h	2009-02-03 21:28:26.000000000 -0800
++++ b/include/AssertMacros.h	2009-04-13 10:08:23.000000000 -0700
+@@ -1,26 +1,51 @@
+ /*
+-     File:       AssertMacros.h
+- 
+-     Contains:   This file defines structured error handling and assertion macros for
+-                 programming in C. Originally used in QuickDraw GX and later enhanced.
+-                 These macros are used throughout Apple's software.
+-
+-                 See "Living In an Exceptional World" by Sean Parent
+-                 (develop, The Apple Technical Journal, Issue 11, August/September 1992)
+-                 <http://developer.apple.com/dev/techsupport/develop/issue11toc.shtml>
+-                 for the methodology behind these error handling and assertion macros.
+-
+-     Copyright:  © 2002 by Apple Computer, Inc., all rights reserved.
+-  
+-     Bugs?:      For bug reports, consult the following page on
+-                 the World Wide Web:
++ * Copyright (c) 2002-2008 by Apple Inc.. All rights reserved.
++ *
++ * @APPLE_LICENSE_HEADER_START@
++ * 
++ * This file contains Original Code and/or Modifications of Original Code
++ * as defined in and that are subject to the Apple Public Source License
++ * Version 2.0 (the 'License'). You may not use this file except in
++ * compliance with the License. Please obtain a copy of the License at
++ * http://www.opensource.apple.com/apsl/ and read it before using this
++ * file.
++ * 
++ * The Original Code and all software distributed under the License are
++ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
++ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
++ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
++ * Please see the License for the specific language governing rights and
++ * limitations under the License.
++ * 
++ * @APPLE_LICENSE_HEADER_END@
++ */
++
++
++/*
++	File:       AssertMacros.h
+  
+-                     http://developer.apple.com/bugreporter/ 
++	Contains:   This file defines structured error handling and assertion macros for
++				programming in C. Originally used in QuickDraw GX and later enhanced.
++				These macros are used throughout Apple's software.
++	
++				New code may not want to begin adopting these macros and instead use
++				existing language functionality.
++	
++				See "Living In an Exceptional World" by Sean Parent
++				(develop, The Apple Technical Journal, Issue 11, August/September 1992)
++				<http://developer.apple.com/dev/techsupport/develop/issue11toc.shtml> or
++				<http://www.mactech.com/articles/develop/issue_11/Parent_final.html>
++				for the methodology behind these error handling and assertion macros.
++	
++	Bugs?:      For bug reports, consult the following page on
++				the World Wide Web:
++
++	 http://developer.apple.com/bugreporter/ 
+ */
+ #ifndef __ASSERTMACROS__
+ #define __ASSERTMACROS__
+ 
+-
+ /*
+  *  Macro overview:
+  *  
+@@ -60,6 +85,27 @@
+  *      By default, all messages write to stderr.  If you would like to write a custom
+  *      error message formater, defined DEBUG_ASSERT_MESSAGE to your function name.
+  *
++ *      Each individual macro will only be defined if it is not already defined, so
++ *      you can redefine their behavior singly by providing your own definition before
++ *      this file is included.
++ *
++ *      If you define __ASSERTMACROS__ before this file is included, then nothing in
++ *      this file will take effect.
++ *
++ *      Prior to Mac OS X 10.6 the macro names used in this file conflicted with some
++ *      user code, including libraries in boost and the proposed C++ standards efforts,
++ *      and there was no way for a client of this header to resolve this conflict. Because
++ *      of this, most of the macros have been changed so that they are prefixed with 
++ *      __ and contain at least one capital letter, which should alleviate the current
++ *      and future conflicts.  However, to allow current sources to continue to compile,
++ *      compatibility macros are defined at the end with the old names.  A tops script 
++ *      at the end of this file will convert all of the old macro names used in a directory
++ *      to the new names.  Clients are recommended to migrate over to these new macros as
++ *      they update their sources because a future release of Mac OS X will remove the
++ *      old macro definitions ( without the double-underscore prefix ).  Clients who
++ *      want to compile without the old macro definitions can define the macro
++ *      __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES to 0 before this file is
++ *      included.
+  */
+ 
+ 
+@@ -165,9 +211,9 @@
+  */
+ #ifndef DEBUG_ASSERT_MESSAGE
+    #ifdef KERNEL
+-      #include <syslog.h>
++      #include <libkern/libkern.h>
+       #define DEBUG_ASSERT_MESSAGE(name, assertion, label, message, file, line, value) \
+-                                  syslog(LOG_ERR, "AssertMacros: %s, %s file: %s, line: %d\n", assertion, (message!=0) ? message : "", file, line);
++                                  printf( "AssertMacros: %s, %s file: %s, line: %d\n", assertion, (message!=0) ? message : "", file, line);
+    #else
+       #include <stdio.h>
+       #define DEBUG_ASSERT_MESSAGE(name, assertion, label, message, file, line, value) \
+@@ -180,7 +226,7 @@
+ 
+ 
+ /*
+- *  debug_string(message)
++ *  __Debug_String(message)
+  *
+  *  Summary:
+  *    Production builds: does nothing and produces no code.
+@@ -193,26 +239,27 @@
+  *      The C string to display.
+  *
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define debug_string(message)
+-#else
+-   #define debug_string(message)                                              \
+-      do                                                                      \
+-      {                                                                       \
+-          DEBUG_ASSERT_MESSAGE(                                               \
+-              DEBUG_ASSERT_COMPONENT_NAME_STRING,                             \
+-              "",                                                             \
+-              0,                                                              \
+-              message,                                                        \
+-              __FILE__,                                                       \
+-              __LINE__,                                                       \
+-              0);                                                             \
+-      } while ( 0 )
++#ifndef __Debug_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Debug_String(message)
++	#else
++	   #define __Debug_String(message)                                             \
++		  do                                                                      \
++		  {                                                                       \
++			  DEBUG_ASSERT_MESSAGE(                                               \
++				  DEBUG_ASSERT_COMPONENT_NAME_STRING,                             \
++				  "",                                                             \
++				  0,                                                              \
++				  message,                                                        \
++				  __FILE__,                                                       \
++				  __LINE__,                                                       \
++				  0);                                                             \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-
+ /*
+- *  check(assertion)
++ *  __Check(assertion)
+  *
+  *  Summary:
+  *    Production builds: does nothing and produces no code.
+@@ -225,32 +272,29 @@
+  *    assertion:
+  *      The assertion expression.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define check(assertion)
+-#else
+-   #define check(assertion)                                                   \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  0,                                                          \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Check
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Check(assertion)
++	#else
++	   #define __Check(assertion)                                                 \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, 0, 0, __FILE__, __LINE__, 0 );                  \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-#define ncheck(assertion)                                                     \
+-  check(!(assertion))
+-
++#ifndef __nCheck
++	#define __nCheck(assertion)  __Check(!(assertion))
++#endif
+ 
+ /*
+- *  check_string(assertion, message)
++ *  __Check_String(assertion, message)
+  *
+  *  Summary:
+  *    Production builds: does nothing and produces no code.
+@@ -266,32 +310,29 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define check_string(assertion, message)
+-#else
+-   #define check_string(assertion, message)                                   \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  0,                                                          \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Check_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Check_String(assertion, message)
++	#else
++	   #define __Check_String(assertion, message)                                 \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, 0, message, __FILE__, __LINE__, 0 );            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-#define ncheck_string(assertion, message)                                     \
+-  check_string(!(assertion), message)
+-
++#ifndef __nCheck_String
++	#define __nCheck_String(assertion, message)  __Check_String(!(assertion), message)
++#endif
+ 
+ /*
+- *  check_noerr(errorCode)
++ *  __Check_noErr(errorCode)
+  *
+  *  Summary:
+  *    Production builds: does nothing and produces no code.
+@@ -304,30 +345,26 @@
+  *    errorCode:
+  *      The errorCode expression to compare with 0.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define check_noerr(errorCode)
+-#else
+-   #define check_noerr(errorCode)                                             \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  0,                                                          \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Check_noErr
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Check_noErr(errorCode)
++	#else
++	   #define __Check_noErr(errorCode)                                           \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ", 0, 0, __FILE__, __LINE__, evalOnceErrorCode ); \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-
+ /*
+- *  check_noerr_string(errorCode, message)
++ *  __Check_noErr_String(errorCode, message)
+  *
+  *  Summary:
+  *    Production builds: check_noerr_string() does nothing and produces
+@@ -344,30 +381,26 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define check_noerr_string(errorCode, message)
+-#else
+-   #define check_noerr_string(errorCode, message)                             \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  0,                                                          \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Check_noErr_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Check_noErr_String(errorCode, message)
++	#else
++	   #define __Check_noErr_String(errorCode, message)                           \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ", 0, message, __FILE__, __LINE__, evalOnceErrorCode ); \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-
+ /*
+- *  verify(assertion)
++ *  __Verify(assertion)
+  *
+  *  Summary:
+  *    Production builds: evaluate the assertion expression, but ignore
+@@ -381,38 +414,35 @@
+  *    assertion:
+  *      The assertion expression.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define verify(assertion)                                                  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define verify(assertion)                                                  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  0,                                                          \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Verify
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Verify(assertion)                                                \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( !(assertion) )                                                 \
++			  {                                                                   \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Verify(assertion)                                                \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, 0, 0, __FILE__, __LINE__, 0 );                  \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-#define nverify(assertion)                                                    \
+-  verify(!(assertion))
+-
++#ifndef __nVerify
++	#define __nVerify(assertion)	__Verify(!(assertion))
++#endif
+ 
+ /*
+- *  verify_string(assertion, message)
++ *  __Verify_String(assertion, message)
+  *
+  *  Summary:
+  *    Production builds: evaluate the assertion expression, but ignore
+@@ -429,38 +459,35 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define verify_string(assertion, message)                                  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define verify_string(assertion, message)                                  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  0,                                                          \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Verify_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Verify_String(assertion, message)                                \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( !(assertion) )                                                 \
++			  {                                                                   \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Verify_String(assertion, message)                                \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, 0, message, __FILE__, __LINE__, 0 );            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-#define nverify_string(assertion, message)                                    \
+-  verify_string(!(assertion), message)
+-
++#ifndef __nVerify_String
++	#define __nVerify_String(assertion, message)  __Verify_String(!(assertion), message)
++#endif
+ 
+ /*
+- *  verify_noerr(errorCode)
++ *  __Verify_noErr(errorCode)
+  *
+  *  Summary:
+  *    Production builds: evaluate the errorCode expression, but ignore
+@@ -474,36 +501,32 @@
+  *    errorCode:
+  *      The expression to compare to 0.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define verify_noerr(errorCode)                                            \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( 0 != (errorCode) )                                             \
+-          {                                                                   \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define verify_noerr(errorCode)                                            \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  0,                                                          \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Verify_noErr
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Verify_noErr(errorCode)                                          \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( 0 != (errorCode) )                                             \
++			  {                                                                   \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Verify_noErr(errorCode)                                          \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ", 0, 0, __FILE__, __LINE__, evalOnceErrorCode ); \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-
+ /*
+- *  verify_noerr_string(errorCode, message)
++ *  __Verify_noErr_String(errorCode, message)
+  *
+  *  Summary:
+  *    Production builds: evaluate the errorCode expression, but ignore
+@@ -520,36 +543,71 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define verify_noerr_string(errorCode, message)                            \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( 0 != (errorCode) )                                             \
+-          {                                                                   \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define verify_noerr_string(errorCode, message)                            \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  0,                                                          \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Verify_noErr_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Verify_noErr_String(errorCode, message)                          \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( 0 != (errorCode) )                                             \
++			  {                                                                   \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Verify_noErr_String(errorCode, message)                          \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ", 0, message, __FILE__, __LINE__, evalOnceErrorCode ); \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
++/*
++ *  __Verify_noErr_Action(errorCode, action)
++ *
++ *  Summary:
++ *    Production builds: if the errorCode expression does not equal 0 (noErr),
++ *    execute the action statement or compound statement (block).
++ *
++ *    Non-production builds: if the errorCode expression does not equal 0 (noErr),
++ *    call DEBUG_ASSERT_MESSAGE and then execute the action statement or compound
++ *    statement (block).
++ *
++ *  Parameters:
++ *
++ *    errorCode:
++ *      The expression to compare to 0.
++ *
++ *    action:
++ *      The statement or compound statement (block).
++ */
++#ifndef __Verify_noErr_Action
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Verify_noErr_Action(errorCode, action)                          \
++		  if ( 0 != (errorCode) ) {                                              \
++			  action;                                                            \
++		  }                                                                      \
++		  else do {} while (0)
++	#else
++	   #define __Verify_noErr_Action(errorCode, action)                          \
++		  long evalOnceErrorCode = (errorCode);                                  \
++		  if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) {                   \
++			  DEBUG_ASSERT_MESSAGE(                                              \
++				  DEBUG_ASSERT_COMPONENT_NAME_STRING,                            \
++				  #errorCode " == 0 ", 0, 0, __FILE__, __LINE__, 0 );            \
++			  action;                                                            \
++		  }                                                                      \
++		  else do {} while (0)
++	#endif
++#endif
+ 
+ /*
+- *  verify_action(assertion, action)
++ *  __Verify_Action(assertion, action)
+  *
+  *  Summary:
+  *    Production builds: if the assertion expression evaluates to false,
+@@ -567,37 +625,27 @@
+  *    action:
+  *      The statement or compound statement (block).
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define verify_action(assertion, action)                                   \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              action;                                                         \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define verify_action(assertion, action)                                  \
+-     do                                                                      \
+-      {                                                                      \
+-          if ( !(assertion) )                                                \
+-          {                                                                  \
+-             DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                        \
+-                  #assertion,                                                \
+-                  0,                                                         \
+-                  0,                                                         \
+-                  __FILE__,                                                  \
+-                  __LINE__,                                                  \
+-                  0);                                                        \
+-             { action; }                                                     \
+-         }                                                                   \
+-     } while ( 0 )
++#ifndef __Verify_Action
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Verify_Action(assertion, action)                                \
++		  if ( __builtin_expect(!(assertion), 0) ) {                             \
++			action;                                                              \
++		  }                                                                      \
++		  else do {} while (0)
++	#else
++	   #define __Verify_Action(assertion, action)                                \
++		  if ( __builtin_expect(!(assertion), 0) ) {                             \
++			  DEBUG_ASSERT_MESSAGE(                                              \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                        \
++					  #assertion, 0, 0, __FILE__, __LINE__, 0 );                 \
++			  action;                                                            \
++		  }                                                                      \
++		  else do {} while (0)
++	#endif
+ #endif
+ 
+-
+ /*
+- *  require(assertion, exceptionLabel)
++ *  __Require(assertion, exceptionLabel)
+  *
+  *  Summary:
+  *    Production builds: if the assertion expression evaluates to false,
+@@ -614,40 +662,36 @@
+  *    exceptionLabel:
+  *      The label.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require(assertion, exceptionLabel)                                 \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require(assertion, exceptionLabel)                                 \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  #exceptionLabel,                                            \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Require
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require(assertion, exceptionLabel)                               \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require(assertion, exceptionLabel)                               \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) ) {                          \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, #exceptionLabel, 0, __FILE__, __LINE__,  0);    \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-#define nrequire(assertion, exceptionLabel)                                   \
+-  require(!(assertion), exceptionLabel)
+-
++#ifndef __nRequire
++	#define __nRequire(assertion, exceptionLabel)  __Require(!(assertion), exceptionLabel)
++#endif
+ 
+ /*
+- *  require_action(assertion, exceptionLabel, action)
++ *  __Require_Action(assertion, exceptionLabel, action)
+  *
+  *  Summary:
+  *    Production builds: if the assertion expression evaluates to false,
+@@ -669,46 +713,44 @@
+  *    action:
+  *      The statement or compound statement (block).
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require_action(assertion, exceptionLabel, action)                  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require_action(assertion, exceptionLabel, action)                  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  #exceptionLabel,                                            \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Require_Action
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require_Action(assertion, exceptionLabel, action)                \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require_Action(assertion, exceptionLabel, action)                \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, #exceptionLabel, 0,   __FILE__, __LINE__, 0);   \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
++#endif
++
++#ifndef __nRequire_Action
++	#define __nRequire_Action(assertion, exceptionLabel, action)                  \
++	__Require_Action(!(assertion), exceptionLabel, action)
+ #endif
+ 
+-#define nrequire_action(assertion, exceptionLabel, action)                    \
+-  require_action(!(assertion), exceptionLabel, action)
+-
+-
+ /*
+- *  require_quiet(assertion, exceptionLabel)
++ *  __Require_Quiet(assertion, exceptionLabel)
+  *
+  *  Summary:
+  *    If the assertion expression evaluates to false, goto exceptionLabel.
+@@ -721,21 +763,23 @@
+  *    exceptionLabel:
+  *      The label.
+  */
+-#define require_quiet(assertion, exceptionLabel)                              \
+-  do                                                                          \
+-  {                                                                           \
+-      if ( !(assertion) )                                                     \
+-      {                                                                       \
+-          goto exceptionLabel;                                                \
+-      }                                                                       \
+-  } while ( 0 )
+-
+-#define nrequire_quiet(assertion, exceptionLabel)                             \
+-  require_quiet(!(assertion), exceptionLabel)
++#ifndef __Require_Quiet
++	#define __Require_Quiet(assertion, exceptionLabel)                            \
++	  do                                                                          \
++	  {                                                                           \
++		  if ( __builtin_expect(!(assertion), 0) )                                \
++		  {                                                                       \
++			  goto exceptionLabel;                                                \
++		  }                                                                       \
++	  } while ( 0 )
++#endif
+ 
++#ifndef __nRequire_Quiet
++	#define __nRequire_Quiet(assertion, exceptionLabel)  __Require_Quiet(!(assertion), exceptionLabel)
++#endif
+ 
+ /*
+- *  require_action_quiet(assertion, exceptionLabel, action)
++ *  __Require_Action_Quiet(assertion, exceptionLabel, action)
+  *
+  *  Summary:
+  *    If the assertion expression evaluates to false, execute the action
+@@ -752,24 +796,27 @@
+  *    action:
+  *      The statement or compound statement (block).
+  */
+-#define require_action_quiet(assertion, exceptionLabel, action)               \
+-  do                                                                          \
+-  {                                                                           \
+-      if ( !(assertion) )                                                     \
+-      {                                                                       \
+-          {                                                                   \
+-              action;                                                         \
+-          }                                                                   \
+-          goto exceptionLabel;                                                \
+-      }                                                                       \
+-  } while ( 0 )
+-
+-#define nrequire_action_quiet(assertion, exceptionLabel, action)              \
+-  require_action_quiet(!(assertion), exceptionLabel, action)
+-
++#ifndef __Require_Action_Quiet
++	#define __Require_Action_Quiet(assertion, exceptionLabel, action)             \
++	  do                                                                          \
++	  {                                                                           \
++		  if ( __builtin_expect(!(assertion), 0) )                                \
++		  {                                                                       \
++			  {                                                                   \
++				  action;                                                         \
++			  }                                                                   \
++			  goto exceptionLabel;                                                \
++		  }                                                                       \
++	  } while ( 0 )
++#endif
++
++#ifndef __nRequire_Action_Quiet
++	#define __nRequire_Action_Quiet(assertion, exceptionLabel, action)              \
++		__Require_Action_Quiet(!(assertion), exceptionLabel, action)
++#endif
+ 
+ /*
+- *  require_string(assertion, exceptionLabel, message)
++ *  __Require_String(assertion, exceptionLabel, message)
+  *
+  *  Summary:
+  *    Production builds: if the assertion expression evaluates to false,
+@@ -789,40 +836,38 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require_string(assertion, exceptionLabel, message)                 \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require_string(assertion, exceptionLabel, message)                 \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  #exceptionLabel,                                            \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Require_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require_String(assertion, exceptionLabel, message)               \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require_String(assertion, exceptionLabel, message)               \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, #exceptionLabel,  message,  __FILE__, __LINE__, 0); \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
++#endif
++
++#ifndef __nRequire_String
++	#define __nRequire_String(assertion, exceptionLabel, string)                  \
++		__Require_String(!(assertion), exceptionLabel, string)
+ #endif
+ 
+-#define nrequire_string(assertion, exceptionLabel, string)                    \
+-  require_string(!(assertion), exceptionLabel, string)
+-
+-
+ /*
+- *  require_action_string(assertion, exceptionLabel, action, message)
++ *  __Require_Action_String(assertion, exceptionLabel, action, message)
+  *
+  *  Summary:
+  *    Production builds: if the assertion expression evaluates to false,
+@@ -847,46 +892,44 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require_action_string(assertion, exceptionLabel, action, message)  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require_action_string(assertion, exceptionLabel, action, message)  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  #exceptionLabel,                                            \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Require_Action_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require_Action_String(assertion, exceptionLabel, action, message)  \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require_Action_String(assertion, exceptionLabel, action, message)  \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, #exceptionLabel,  message,  __FILE__,  __LINE__, 0); \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
++#endif
++
++#ifndef __nRequire_Action_String
++	#define __nRequire_Action_String(assertion, exceptionLabel, action, message)    \
++		__Require_Action_String(!(assertion), exceptionLabel, action, message)
+ #endif
+ 
+-#define nrequire_action_string(assertion, exceptionLabel, action, message)    \
+-  require_action_string(!(assertion), exceptionLabel, action, message)
+-
+-
+ /*
+- *  require_noerr(errorCode, exceptionLabel)
++ *  __Require_noErr(errorCode, exceptionLabel)
+  *
+  *  Summary:
+  *    Production builds: if the errorCode expression does not equal 0 (noErr),
+@@ -903,37 +946,34 @@
+  *    exceptionLabel:
+  *      The label.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require_noerr(errorCode, exceptionLabel)                           \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( 0 != (errorCode) )                                             \
+-          {                                                                   \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require_noerr(errorCode, exceptionLabel)                           \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  #exceptionLabel,                                            \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Require_noErr
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require_noErr(errorCode, exceptionLabel)                         \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(0 != (errorCode), 0) )                        \
++			  {                                                                   \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require_noErr(errorCode, exceptionLabel)                         \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ",  #exceptionLabel,  0,  __FILE__, __LINE__, evalOnceErrorCode); \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+ /*
+- *  require_noerr_action(errorCode, exceptionLabel, action)
++ *  __Require_noErr_Action(errorCode, exceptionLabel, action)
+  *
+  *  Summary:
+  *    Production builds: if the errorCode expression does not equal 0 (noErr),
+@@ -955,44 +995,40 @@
+  *    action:
+  *      The statement or compound statement (block).
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require_noerr_action(errorCode, exceptionLabel, action)            \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( 0 != (errorCode) )                                             \
+-          {                                                                   \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require_noerr_action(errorCode, exceptionLabel, action)            \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  #exceptionLabel,                                            \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Require_noErr_Action
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require_noErr_Action(errorCode, exceptionLabel, action)          \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(0 != (errorCode), 0) )                        \
++			  {                                                                   \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require_noErr_Action(errorCode, exceptionLabel, action)          \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ", #exceptionLabel,  0,  __FILE__, __LINE__,  evalOnceErrorCode); \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-
+ /*
+- *  require_noerr_quiet(errorCode, exceptionLabel)
++ *  __Require_noErr_Quiet(errorCode, exceptionLabel)
+  *
+  *  Summary:
+  *    If the errorCode expression does not equal 0 (noErr),
+@@ -1006,18 +1042,19 @@
+  *    exceptionLabel:
+  *      The label.
+  */
+-#define require_noerr_quiet(errorCode, exceptionLabel)                        \
+-  do                                                                          \
+-  {                                                                           \
+-      if ( 0 != (errorCode) )                                                 \
+-      {                                                                       \
+-          goto exceptionLabel;                                                \
+-      }                                                                       \
+-  } while ( 0 )
+-
++#ifndef __Require_noErr_Quiet
++	#define __Require_noErr_Quiet(errorCode, exceptionLabel)                      \
++	  do                                                                          \
++	  {                                                                           \
++		  if ( __builtin_expect(0 != (errorCode), 0) )                            \
++		  {                                                                       \
++			  goto exceptionLabel;                                                \
++		  }                                                                       \
++	  } while ( 0 )
++#endif
+ 
+ /*
+- *  require_noerr_action_quiet(errorCode, exceptionLabel, action)
++ *  __Require_noErr_Action_Quiet(errorCode, exceptionLabel, action)
+  *
+  *  Summary:
+  *    If the errorCode expression does not equal 0 (noErr),
+@@ -1035,21 +1072,22 @@
+  *    action:
+  *      The statement or compound statement (block).
+  */
+-#define require_noerr_action_quiet(errorCode, exceptionLabel, action)         \
+-  do                                                                          \
+-  {                                                                           \
+-      if ( 0 != (errorCode) )                                                 \
+-      {                                                                       \
+-          {                                                                   \
+-              action;                                                         \
+-          }                                                                   \
+-          goto exceptionLabel;                                                \
+-      }                                                                       \
+-  } while ( 0 )
+-
++#ifndef __Require_noErr_Action_Quiet
++	#define __Require_noErr_Action_Quiet(errorCode, exceptionLabel, action)       \
++	  do                                                                          \
++	  {                                                                           \
++		  if ( __builtin_expect(0 != (errorCode), 0) )                            \
++		  {                                                                       \
++			  {                                                                   \
++				  action;                                                         \
++			  }                                                                   \
++			  goto exceptionLabel;                                                \
++		  }                                                                       \
++	  } while ( 0 )
++#endif
+ 
+ /*
+- *  require_noerr_string(errorCode, exceptionLabel, message)
++ *  __Require_noErr_String(errorCode, exceptionLabel, message)
+  *
+  *  Summary:
+  *    Production builds: if the errorCode expression does not equal 0 (noErr),
+@@ -1069,38 +1107,34 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require_noerr_string(errorCode, exceptionLabel, message)           \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( 0 != (errorCode) )                                             \
+-          {                                                                   \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require_noerr_string(errorCode, exceptionLabel, message)           \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  #exceptionLabel,                                            \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Require_noErr_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require_noErr_String(errorCode, exceptionLabel, message)         \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(0 != (errorCode), 0) )                        \
++			  {                                                                   \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require_noErr_String(errorCode, exceptionLabel, message)         \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ",  #exceptionLabel, message, __FILE__,  __LINE__,  evalOnceErrorCode); \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-
+ /*
+- *  require_noerr_action_string(errorCode, exceptionLabel, action, message)
++ *  __Require_noErr_Action_String(errorCode, exceptionLabel, action, message)
+  *
+  *  Summary:
+  *    Production builds: if the errorCode expression does not equal 0 (noErr),
+@@ -1125,41 +1159,270 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require_noerr_action_string(errorCode, exceptionLabel, action, message)\
+-      do                                                                      \
+-      {                                                                       \
+-          if ( 0 != (errorCode) )                                             \
+-          {                                                                   \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require_noerr_action_string(errorCode, exceptionLabel, action, message) \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  #exceptionLabel,                                            \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#endif
++#ifndef __Require_noErr_Action_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require_noErr_Action_String(errorCode, exceptionLabel, action, message) \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(0 != (errorCode), 0) )                        \
++			  {                                                                   \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require_noErr_Action_String(errorCode, exceptionLabel, action, message) \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ", #exceptionLabel, message, __FILE__, __LINE__, evalOnceErrorCode); \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
++#endif
++
++/*
++ *  __Check_Compile_Time(expr)
++ *
++ *  Summary:
++ *    any build: if the expression is not true, generated a compile time error.
++ *
++ *  Parameters:
++ *
++ *    expr:
++ *      The compile time expression that should evaluate to non-zero.
++ *
++ *  Discussion:
++ *     This declares an array with a size that is determined by a compile-time expression.
++ *     If false, it declares a negatively sized array, which generates a compile-time error.
++ *
++ * Examples:
++ *     __Check_Compile_Time( sizeof( int ) == 4 );
++ *     __Check_Compile_Time( offsetof( MyStruct, myField ) == 4 );
++ *     __Check_Compile_Time( ( kMyBufferSize % 512 ) == 0 );
++ *
++ *  Note: This only works with compile-time expressions.
++ *  Note: This only works in places where extern declarations are allowed (e.g. global scope).
++ */
++#ifndef __Check_Compile_Time
++    #ifdef __GNUC__ 
++        #define __Check_Compile_Time( expr )    \
++            extern int compile_time_assert_failed[ ( expr ) ? 1 : -1 ] __attribute__( ( unused ) )
++    #else
++        #define __Check_Compile_Time( expr )    \
++            extern int compile_time_assert_failed[ ( expr ) ? 1 : -1 ]
++    #endif
++#endif
++
++/*
++ *	For time immemorial, Mac OS X has defined version of most of these macros without the __ prefix, which
++ *	could collide with similarly named functions or macros in user code, including new functionality in
++ *	Boost and the C++ standard library.
++ *
++ *	A future release of Mac OS X will no longer do this, and will require that clients move to the
++ *  new macros as defined above.  However, in the interim both the new and old macros will work, unless
++ *  clients define a macro __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES before this file is included
++ *  in their compilations.  Clients who do not want the older macros defined can accomplish this by adding
++ *    #define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0
++ *  at the top of their sources, or my adding -D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0 to the
++ *  gcc compilation options.
++ *
++ *  To aid users of these macros in converting their sources, the following tops script will convert usages
++ *  of the old macros into the new equivalents.  To do so, in Terminal go into the directory containing the
++ *  sources to be converted and run this command.
++ *
++    find . -name '*.[c|cc|cp|cpp|m|mm|h]' -print0 |  xargs -0 tops -verbose \
++      replace "check(<b args>)" with "__Check(<args>)" \
++      replace "check_noerr(<b args>)" with "__Check_noErr(<args>)" \
++      replace "check_noerr_string(<b args>)" with "__Check_noErr_String(<args>)" \
++      replace "check_string(<b args>)" with "__Check_String(<args>)" \
++      replace "require(<b args>)" with "__Require(<args>)" \
++      replace "require_action(<b args>)" with "__Require_Action(<args>)" \
++      replace "require_action_string(<b args>)" with "__Require_Action_String(<args>)" \
++      replace "require_noerr(<b args>)" with "__Require_noErr(<args>)" \
++      replace "require_noerr_action(<b args>)" with "__Require_noErr_Action(<args>)" \
++      replace "require_noerr_action_string(<b args>)" with "__Require_noErr_Action_String(<args>)" \
++      replace "require_noerr_string(<b args>)" with "__Require_noErr_String(<args>)" \
++      replace "require_string(<b args>)" with "__Require_String(<args>)" \
++      replace "verify(<b args>)" with "__Verify(<args>)" \
++      replace "verify_action(<b args>)" with "__Verify_Action(<args>)" \
++      replace "verify_noerr(<b args>)" with "__Verify_noErr(<args>)" \
++      replace "verify_noerr_action(<b args>)" with "__Verify_noErr_Action(<args>)" \
++      replace "verify_noerr_string(<b args>)" with "__Verify_noErr_String(<args>)" \
++      replace "verify_string(<b args>)" with "__Verify_String(<args>)" \
++      replace "ncheck(<b args>)" with "__nCheck(<args>)" \
++      replace "ncheck_string(<b args>)" with "__nCheck_String(<args>)" \
++      replace "nrequire(<b args>)" with "__nRequire(<args>)" \
++      replace "nrequire_action(<b args>)" with "__nRequire_Action(<args>)" \
++      replace "nrequire_action_quiet(<b args>)" with "__nRequire_Action_Quiet(<args>)" \
++      replace "nrequire_action_string(<b args>)" with "__nRequire_Action_String(<args>)" \
++      replace "nrequire_quiet(<b args>)" with "__nRequire_Quiet(<args>)" \
++      replace "nrequire_string(<b args>)" with "__nRequire_String(<args>)" \
++      replace "nverify(<b args>)" with "__nVerify(<args>)" \
++      replace "nverify_string(<b args>)" with "__nVerify_String(<args>)" \
++      replace "require_action_quiet(<b args>)" with "__Require_Action_Quiet(<args>)" \
++      replace "require_noerr_action_quiet(<b args>)" with "__Require_noErr_Action_Quiet(<args>)" \
++      replace "require_noerr_quiet(<b args>)" with "__Require_noErr_Quiet(<args>)" \
++      replace "require_quiet(<b args>)" with "__Require_Quiet(<args>)" \
++      replace "check_compile_time(<b args>)" with "__Check_Compile_Time(<args>)" \
++      replace "debug_string(<b args>)" with "__Debug_String(<args>)"
++ *
++ */
++
++#ifndef __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES
++	/* If we haven't set this yet, it defaults to on.  In the next release, this will default to off. */
++	#define	__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES	1
++#endif
++
++#if	__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES
++
++	#ifndef check
++	#define check(assertion)  __Check(assertion)
++	#endif
++
++	#ifndef check_noerr
++	#define check_noerr(errorCode)  __Check_noErr(errorCode)
++	#endif
++
++	#ifndef check_noerr_string
++		#define check_noerr_string(errorCode, message)  __Check_noErr_String(errorCode, message)
++	#endif
++
++	#ifndef check_string
++		#define check_string(assertion, message)  __Check_String(assertion, message)
++	#endif
++
++	#ifndef require
++		#define require(assertion, exceptionLabel)  __Require(assertion, exceptionLabel)
++	#endif
++
++	#ifndef require_action
++		#define require_action(assertion, exceptionLabel, action)  __Require_Action(assertion, exceptionLabel, action)
++	#endif
++
++	#ifndef require_action_string
++		#define require_action_string(assertion, exceptionLabel, action, message)  __Require_Action_String(assertion, exceptionLabel, action, message)
++	#endif
++
++	#ifndef require_noerr
++		#define require_noerr(errorCode, exceptionLabel)  __Require_noErr(errorCode, exceptionLabel)
++	#endif
++
++	#ifndef require_noerr_action
++		#define require_noerr_action(errorCode, exceptionLabel, action)  __Require_noErr_Action(errorCode, exceptionLabel, action)
++	#endif
++
++	#ifndef require_noerr_action_string
++		#define require_noerr_action_string(errorCode, exceptionLabel, action, message)  __Require_noErr_Action_String(errorCode, exceptionLabel, action, message)
++	#endif
++
++	#ifndef require_noerr_string
++		#define require_noerr_string(errorCode, exceptionLabel, message)  __Require_noErr_String(errorCode, exceptionLabel, message)
++	#endif
++
++	#ifndef require_string
++		#define require_string(assertion, exceptionLabel, message)  __Require_String(assertion, exceptionLabel, message)
++	#endif
++
++	#ifndef verify
++		#define verify(assertion) __Verify(assertion)
++	#endif
++
++	#ifndef verify_action
++		#define verify_action(assertion, action)  __Verify_Action(assertion, action)
++	#endif
++
++	#ifndef verify_noerr
++		#define verify_noerr(errorCode)  __Verify_noErr(errorCode)
++	#endif
++
++	#ifndef verify_noerr_action
++		#define verify_noerr_action(errorCode, action)  __Verify_noErr_Action(errorCode, action)
++	#endif
++
++	#ifndef verify_noerr_string
++		#define verify_noerr_string(errorCode, message)  __Verify_noErr_String(errorCode, message)
++	#endif
++
++	#ifndef verify_string
++		#define verify_string(assertion, message)  __Verify_String(assertion, message)
++	#endif
++
++	#ifndef ncheck
++		#define ncheck(assertion)  __nCheck(assertion)
++	#endif
++
++	#ifndef ncheck_string
++		#define ncheck_string(assertion, message)  __nCheck_String(assertion, message)
++	#endif
++
++	#ifndef nrequire
++		#define nrequire(assertion, exceptionLabel)  __nRequire(assertion, exceptionLabel)
++	#endif
++
++	#ifndef nrequire_action
++		#define nrequire_action(assertion, exceptionLabel, action)  __nRequire_Action(assertion, exceptionLabel, action)
++	#endif
++
++	#ifndef nrequire_action_quiet
++		#define nrequire_action_quiet(assertion, exceptionLabel, action)  __nRequire_Action_Quiet(assertion, exceptionLabel, action)
++	#endif
++
++	#ifndef nrequire_action_string
++		#define nrequire_action_string(assertion, exceptionLabel, action, message)  __nRequire_Action_String(assertion, exceptionLabel, action, message)
++	#endif
++
++	#ifndef nrequire_quiet
++		#define nrequire_quiet(assertion, exceptionLabel)  __nRequire_Quiet(assertion, exceptionLabel)
++	#endif
++
++	#ifndef nrequire_string
++		#define nrequire_string(assertion, exceptionLabel, string)  __nRequire_String(assertion, exceptionLabel, string)
++	#endif
++
++	#ifndef nverify
++		#define nverify(assertion)  __nVerify(assertion)
++	#endif
++
++	#ifndef nverify_string
++		#define nverify_string(assertion, message)  __nVerify_String(assertion, message)
++	#endif
++
++	#ifndef require_action_quiet
++		#define require_action_quiet(assertion, exceptionLabel, action)  __Require_Action_Quiet(assertion, exceptionLabel, action)
++	#endif
++
++	#ifndef require_noerr_action_quiet
++		#define require_noerr_action_quiet(errorCode, exceptionLabel, action)  __Require_noErr_Action_Quiet(errorCode, exceptionLabel, action)
++	#endif
++
++	#ifndef require_noerr_quiet
++		#define require_noerr_quiet(errorCode, exceptionLabel)  __Require_noErr_Quiet(errorCode, exceptionLabel)
++	#endif
++
++	#ifndef require_quiet
++		#define require_quiet(assertion, exceptionLabel)  __Require_Quiet(assertion, exceptionLabel)
++	#endif
++
++	#ifndef check_compile_time
++		#define check_compile_time( expr )  __Check_Compile_Time( expr )
++	#endif
++
++	#ifndef debug_string
++		#define debug_string(message)  __Debug_String(message)
++	#endif
++	
++#endif	/* ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES */
+ 
+ 
+ #endif /* __ASSERTMACROS__ */
+-
diff --git a/opencflite.patches/opencflite-53.patch b/opencflite.patches/opencflite-53.patch
new file mode 100644
index 0000000..ef6c37f
--- /dev/null
+++ b/opencflite.patches/opencflite-53.patch
@@ -0,0 +1,26 @@
+diff -aruN a/CFBase.c b/CFBase.c
+--- a/CFBase.c	2011-08-10 16:29:04.841083602 -0700
++++ b/CFBase.c	2011-08-10 15:46:44.000000000 -0700
+@@ -44,6 +44,7 @@
+ #include <mach/mach.h>
+ #include <dlfcn.h>
+ #elif DEPLOYMENT_TARGET_LINUX
++#include <mcheck.h>
+ #include <pthread.h>
+ #elif DEPLOYMENT_TARGET_WINDOWS
+ #include <windows.h>
+@@ -281,6 +282,14 @@
+ }
+ 
+ static void __CFAllocatorSystemDeallocate(void *ptr, void *info) {
++#if defined(DEBUG)
++    const enum mcheck_status status = mprobe(ptr);
++
++    CFAssert3(status == MCHECK_OK || status == MCHECK_DISABLED,
++              __kCFLogAssertion, "%s: ptr %p status %d",
++              __PRETTY_FUNCTION__, ptr, status);
++#endif
++
+     free(ptr);
+ }
+ #endif
diff --git a/opencflite.patches/opencflite-54.patch b/opencflite.patches/opencflite-54.patch
new file mode 100644
index 0000000..f65ab05
--- /dev/null
+++ b/opencflite.patches/opencflite-54.patch
@@ -0,0 +1,30 @@
+diff -aruN a/CFBase.c b/CFBase.c
+--- a/CFBase.c	2011-08-10 16:29:35.458178493 -0700
++++ b/CFBase.c	2011-08-10 16:31:27.000000000 -0700
+@@ -270,7 +270,7 @@
+     malloc_zone_free((malloc_zone_t*)info, ptr);
+ }
+ 
+-#endif
++#endif /* DEPLOYMENT_TARGET_MACOSX */
+ 
+ #if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
+ static void *__CFAllocatorSystemAllocate(CFIndex size, CFOptionFlags hint, void *info) {
+@@ -685,7 +685,7 @@
+ 	    malloc_zone_free((malloc_zone_t *)allocator, ptr);
+ 	    return NULL;
+ 	}
+-#endif
++#endif /* DEPLOYMENT_TARGET_MACOSX */
+ 	deallocateFunc = __CFAllocatorGetDeallocateFunction(&allocator->_context);
+ 	if (NULL != deallocateFunc) {
+ 	    INVOKE_CALLBACK2(deallocateFunc, ptr, allocator->_context.info);
+@@ -722,7 +722,7 @@
+ #endif
+ 	return malloc_zone_free((malloc_zone_t *)allocator, ptr);
+     }
+-#endif
++#endif /* DEPLOYMENT_TARGET_MACOSX */
+     deallocateFunc = __CFAllocatorGetDeallocateFunction(&allocator->_context);
+     if (NULL != ptr && NULL != deallocateFunc) {
+ 	INVOKE_CALLBACK2(deallocateFunc, ptr, allocator->_context.info);
diff --git a/opencflite.patches/opencflite-55.patch b/opencflite.patches/opencflite-55.patch
new file mode 100644
index 0000000..36cd340
--- /dev/null
+++ b/opencflite.patches/opencflite-55.patch
@@ -0,0 +1,54 @@
+diff -aruN a/CFRuntime.c b/CFRuntime.c
+--- a/CFRuntime.c	2009-02-19 08:32:54.000000000 -0800
++++ b/CFRuntime.c	2011-08-10 16:32:44.000000000 -0700
+@@ -73,11 +73,6 @@
+ CF_INLINE size_t malloc_size(void* memblock) {
+     return _msize(memblock);
+ }
+-#elif DEPLOYMENT_TARGET_LINUX
+-#include <malloc.h>
+-CF_INLINE size_t malloc_size(const void *memblock) {
+-    return malloc_usable_size((void *)memblock);
+-}
+ #endif
+ 
+ extern void __HALT(void);
+@@ -264,12 +259,21 @@
+     if (NULL == memory) {
+ 	return NULL;
+     }
+-#if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX
++#if DEPLOYMENT_TARGET_WINDOWS
+     // malloc_size won't work if the memory address has been moved
+     // (such as a custom allocator that adds its own metadata
+     // (e.g. under/overflow guard data), so don't attempt to call it
+     // on the allocation return.
+     size_t msize = (usesSystemDefaultAllocator) ? malloc_size(memory) : size;
++#elif DEPLOYMENT_TARGET_LINUX
++    // On Linux, across various architectures and versions of the GNU
++    // C Library, malloc_usable_size has been observed to at times return
++    // incorrect values. Since the introspection value-add it provides to
++    // CoreFoundation seems to be of limited utility, we eliminate it and
++    // simpy use the caller-requested size. In addition, memsetting this
++    // small tail block has also been found to cause heap consistency
++    // problems.
++    size_t msize = size;
+ #else
+     size_t msize = malloc_size(memory);
+ #endif
+@@ -1098,6 +1100,7 @@
+ 	usesSystemDefaultAllocator = (allocator == kCFAllocatorSystemDefault);
+ 
+ 	if (__CFZombieLevel & (1 << 0)) {
++#if !DEPLOYMENT_TARGET_LINUX
+ 	    uint8_t *ptr = (uint8_t *)cf - (usesSystemDefaultAllocator ? 0 : sizeof(CFAllocatorRef));
+ 	    size_t size = malloc_size(ptr);
+ 	    uint8_t byte = 0xFC;
+@@ -1109,6 +1112,7 @@
+ 		byte = (__CFZombieLevel >> 8) & 0xFF;
+ 	    }
+ 	    memset(ptr, byte, size);
++#endif /* !DEPLOYMENT_TARGET_LINUX */
+ 	}
+ 	if (!(__CFZombieLevel & (1 << 4))) {
+ 	    CFAllocatorDeallocate(allocator, (uint8_t *)cf - (usesSystemDefaultAllocator ? 0 : sizeof(CFAllocatorRef)));
diff --git a/opencflite.patches/opencflite-56.patch b/opencflite.patches/opencflite-56.patch
new file mode 100644
index 0000000..b403a63
--- /dev/null
+++ b/opencflite.patches/opencflite-56.patch
@@ -0,0 +1,22 @@
+diff -aruN a/CFSet.c b/CFSet.c
+--- a/CFSet.c	2009-02-19 08:32:54.000000000 -0800
++++ b/CFSet.c	2011-09-06 17:05:25.000000000 -0700
+@@ -1089,15 +1089,14 @@
+     if (CFDictionary) CF_OBJC_FUNCDISPATCH2(__kCFHashTypeID, void, hc, "_apply:context:", applier, context);
+     if (CFSet) CF_OBJC_FUNCDISPATCH2(__kCFHashTypeID, void, hc, "_applyValues:context:", applier, context);
+     __CFGenericValidateType(hc, __kCFHashTypeID);
+-    any_t *keys = hc->_keys;
+     for (CFIndex idx = 0, nbuckets = hc->_bucketsNum; idx < nbuckets; idx++) {
+-        if (__CFHashKeyIsValue(hc, keys[idx])) {
++        if (__CFHashKeyIsValue(hc, hc->_keys[idx])) {
+             for (CFIndex cnt = __CFHashGetOccurrenceCount(hc, idx); cnt--;) {
+ #if CFDictionary
+-                INVOKE_CALLBACK3(applier, (const_any_pointer_t)keys[idx], (const_any_pointer_t)hc->_values[idx], context);
++                INVOKE_CALLBACK3(applier, (const_any_pointer_t)hc->_keys[idx], (const_any_pointer_t)hc->_values[idx], context);
+ #endif
+ #if CFSet || CFBag
+-                INVOKE_CALLBACK2(applier, (const_any_pointer_t)keys[idx], context);
++                INVOKE_CALLBACK2(applier, (const_any_pointer_t)hc->_keys[idx], context);
+ #endif
+             }
+         }
diff --git a/opencflite.patches/opencflite-57.patch b/opencflite.patches/opencflite-57.patch
new file mode 100644
index 0000000..184f57c
--- /dev/null
+++ b/opencflite.patches/opencflite-57.patch
@@ -0,0 +1,32 @@
+diff -aruN a/CFLocale.c b/CFLocale.c
+--- a/CFLocale.c	2009-02-22 21:56:00.000000000 -0800
++++ b/CFLocale.c	2012-04-20 12:14:07.061605103 -0700
+@@ -223,6 +223,19 @@
+     WindowsLocales = CFArrayCreate(kCFAllocatorSystemDefault, (const void**)s_WindowsInstalledLocales, s_num_installed_localesI, &kCFTypeArrayCallBacks);
+     return (WindowsLocales);
+ }
++#elif DEPLOYMENT_TARGET_LINUX
++static CFStringRef __CFLocaleCopyPOSIXLocaleName(void)
++{
++    const char *p = NULL;
++    CFStringRef identifier = NULL;
++
++    p = getenv("LC_ALL");
++
++    if (NULL == p) p = getenv("LANG");
++    if (NULL != p) identifier = CFStringCreateWithCString(kCFAllocatorDefault, p, kCFStringEncodingASCII);
++
++    return (identifier);
++}
+ #endif // DEPLOYMENT_TARGET_WINDOWS
+ 
+ static Boolean __CFLocaleEqual(CFTypeRef cf1, CFTypeRef cf2) {
+@@ -335,6 +348,8 @@
+ 
+ #ifdef DEPLOYMENT_TARGET_WINDOWS
+     identifier = __CFLocaleWindowsLCIDToISOLocaleName(LOCALE_USER_DEFAULT);
++#elif DEPLOYMENT_TARGET_LINUX
++    identifier = __CFLocaleCopyPOSIXLocaleName();
+ #endif 
+ 
+     struct __CFLocale *locale;
diff --git a/opencflite.patches/opencflite-58.patch b/opencflite.patches/opencflite-58.patch
new file mode 100644
index 0000000..db1f9ce
--- /dev/null
+++ b/opencflite.patches/opencflite-58.patch
@@ -0,0 +1,38 @@
+diff -aruN a/CFXMLPreferencesDomain.c b/CFXMLPreferencesDomain.c
+--- a/CFXMLPreferencesDomain.c	2009-02-19 08:32:54.000000000 -0800
++++ b/CFXMLPreferencesDomain.c	2012-04-25 10:35:53.000000000 -0700
+@@ -238,9 +238,10 @@
+ }
+ 
+ 
+-#if DEPLOYMENT_TARGET_MACOSX
++#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_LINUX
++#include <stdio.h>
+ #include <sys/fcntl.h>
+ 
+ /* __CFWriteBytesToFileWithAtomicity is a "safe save" facility. Write the bytes using the specified mode on the file to the provided URL. If the atomic flag is true, try to do it in a fashion that will enable a safe save.
+  */
+ static Boolean __CFWriteBytesToFileWithAtomicity(CFURLRef url, const void *bytes, int length, SInt32 mode, Boolean atomic) {
+@@ -264,6 +269,6 @@
+     if (atomic) {
+         CFURLRef dir = CFURLCreateCopyDeletingLastPathComponent(kCFAllocatorSystemDefault, url);
+-        CFURLRef tempFile = CFURLCreateCopyAppendingPathComponent(kCFAllocatorSystemDefault, dir, CFSTR("cf#XXXXX"), false);
++        CFURLRef tempFile = CFURLCreateCopyAppendingPathComponent(kCFAllocatorSystemDefault, dir, CFSTR("cf#XXXXXX"), false);
+         CFRelease(dir);
+         if (!CFURLGetFileSystemRepresentation(tempFile, true, (uint8_t *)auxPath, CFMaxPathSize)) {
+             CFRelease(tempFile);
+@@ -339,12 +346,12 @@
+         CFRelease(binStream);
+         if (data) {
+             SInt32 mode;
+-#if DEPLOYMENT_TARGET_MACOSX
++#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_LINUX
+             mode = isWorldReadable ? S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH : S_IRUSR|S_IWUSR;
+ #else
+ 	    mode = 0666;
+ #endif
+-#if DEPLOYMENT_TARGET_MACOSX
++#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_LINUX
+             {	// Try quick atomic way first, then fallback to slower ways and error cases
+                 CFStringRef scheme = CFURLCopyScheme(url);
+                 if (!scheme) {
diff --git a/opencflite.patches/opencflite-59.patch b/opencflite.patches/opencflite-59.patch
new file mode 100644
index 0000000..cc73877
--- /dev/null
+++ b/opencflite.patches/opencflite-59.patch
@@ -0,0 +1,29 @@
+diff -aruN a/CFXMLPreferencesDomain.c b/CFXMLPreferencesDomain.c
+--- a/CFXMLPreferencesDomain.c	2009-02-19 08:32:54.000000000 -0800
++++ b/CFXMLPreferencesDomain.c	2012-04-25 10:35:53.000000000 -0700
+@@ -239,9 +239,13 @@
+ 
+ 
+ #if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_LINUX
++#include <grp.h>
+ #include <stdio.h>
+ #include <sys/fcntl.h>
+ 
++#define __kCFAdminGroupName       "admin"
++#define __kCFAdminFallbackGroupID 80
++
+ /* __CFWriteBytesToFileWithAtomicity is a "safe save" facility. Write the bytes using the specified mode on the file to the provided URL. If the atomic flag is true, try to do it in a fashion that will enable a safe save.
+  */
+ static Boolean __CFWriteBytesToFileWithAtomicity(CFURLRef url, const void *bytes, int length, SInt32 mode, Boolean atomic) {
+@@ -265,8 +270,10 @@
+         } else {
+             mode = 0664;
+             if (writingFileAsRoot && (0 == strncmp(cpath, "/Library/Preferences", 20))) {
++                const struct group *grent;
+                 owner = geteuid();
+-                group = 80;
++                grent = getgrnam(__kCFAdminGroupName);
++                group = grent ? grent->gr_gid : __kCFAdminFallbackGroupID;
+             }
+         }
+     }
diff --git a/opencflite.patches/opencflite-60.patch b/opencflite.patches/opencflite-60.patch
new file mode 100644
index 0000000..bf01af4
--- /dev/null
+++ b/opencflite.patches/opencflite-60.patch
@@ -0,0 +1,93 @@
+diff -aruN a/CFUniChar.c b/CFUniChar.c
+--- a/CFUniChar.c	2009-02-19 16:25:06.000000000 -0800
++++ b/CFUniChar.c	2016-06-03 16:45:46.707080496 -0700
+@@ -67,7 +67,7 @@
+ #if DEPLOYMENT_TARGET_MACOSX
+ #define __kCFCharacterSetDir "/System/Library/CoreServices"
+ #elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
+-#define __kCFCharacterSetDir "/usr/local/share/CoreFoundation"
++#define __kCFCharacterSetDir __kCFDataDir "/CoreFoundation"
+ #elif DEPLOYMENT_TARGET_WINDOWS
+ #define __kCFCharacterSetDir "\\Windows\\CoreFoundation"
+ #define MAXPATHLEN MAX_PATH
+@@ -129,6 +129,26 @@
+     strlcpy(cpath, _CFDLLPath(), MAXPATHLEN);
+ #else
+     strlcpy(cpath, __kCFCharacterSetDir, MAXPATHLEN);
++    // For non-absolute paths, prefix them with the path to this executable
++    if (*cpath != '/') {
++        int len;
++        char *lastslash;
++
++        len = readlink("/proc/self/exe", cpath, MAXPATHLEN);
++        if (len < 0) {
++            cpath[0] = '\0';
++        } else {
++            cpath[len] = '\0';
++        }
++
++        // Would have used dirname(), but it was behaving badly, and this works in place
++        lastslash = strrchr(cpath, '/');
++        if (lastslash != NULL) {
++            *(lastslash + 1) = '\0';
++        }
++
++        strlcat(cpath, __kCFCharacterSetDir, MAXPATHLEN);
++    }
+ #endif
+ 
+ #if DEPLOYMENT_TARGET_WINDOWS || 0
+diff -aruN a/configure b/configure
+--- a/configure	2016-06-03 16:43:52.651387528 -0700
++++ b/configure	2016-06-03 16:44:19.875314281 -0700
+@@ -1305,7 +1305,7 @@
+ 
+ # Be sure to have absolute directory names.
+ for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+-		datadir sysconfdir sharedstatedir localstatedir includedir \
++		sysconfdir sharedstatedir localstatedir includedir \
+ 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ 		libdir localedir mandir
+ do
+diff -aruN a/Makefile.am b/Makefile.am
+--- a/Makefile.am	2009-03-10 16:31:21.000000000 -0700
++++ b/Makefile.am	2016-06-03 16:44:19.879314270 -0700
+@@ -25,7 +25,7 @@
+ # Unicode character mappings.
+ #
+ 
+-libCoreFoundation_la_datadir	= ${datadir}/CoreServices
++libCoreFoundation_la_datadir	= ${datadir}/CoreFoundation/CharacterSets
+ 
+ libCoreFoundation_la_data_DATA	= CFCharacterSetBitmaps.bitmap		\
+ 				  CFUniCharPropertyDatabase.data	\
+@@ -35,7 +35,7 @@
+ CF_COMMON_CPPFLAGS		= $(AM_CPPFLAGS)			\
+ 				  -DU_SHOW_DRAFT_API=1			\
+ 				  -DCF_BUILDING_CF=1			\
+-				  -D__kCFCharacterSetDir=\"${libCoreFoundation_la_datadir}\" \
++				  -D__kCFDataDir=\"${datadir}\" \
+ 				  -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_5	\
+ 				  -I$(top_srcdir)/include		\
+ 				  -I$(top_srcdir)/include/mach_support
+diff -aruN a/Makefile.in b/Makefile.in
+--- a/Makefile.in	2009-03-10 23:44:36.000000000 -0700
++++ b/Makefile.in	2016-06-03 16:44:19.879314270 -0700
+@@ -535,7 +535,7 @@
+ # Define where we will install and where CoreFoundation can find its
+ # Unicode character mappings.
+ #
+-libCoreFoundation_la_datadir = ${datadir}/CoreServices
++libCoreFoundation_la_datadir = ${datadir}/CoreFoundation/CharacterSets
+ libCoreFoundation_la_data_DATA = CFCharacterSetBitmaps.bitmap		\
+ 				  CFUniCharPropertyDatabase.data	\
+ 				  CFUnicodeData-B.mapping		\
+@@ -544,7 +544,7 @@
+ CF_COMMON_CPPFLAGS = $(AM_CPPFLAGS)			\
+ 				  -DU_SHOW_DRAFT_API=1			\
+ 				  -DCF_BUILDING_CF=1			\
+-				  -D__kCFCharacterSetDir=\"${libCoreFoundation_la_datadir}\" \
++				  -D__kCFDataDir=\"${datadir}\" \
+ 				  -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_5	\
+ 				  -I$(top_srcdir)/include		\
+ 				  -I$(top_srcdir)/include/mach_support
diff --git a/opencflite.patches/opencflite-61.patch b/opencflite.patches/opencflite-61.patch
new file mode 100644
index 0000000..b724c34
--- /dev/null
+++ b/opencflite.patches/opencflite-61.patch
@@ -0,0 +1,24 @@
+diff -aruN a/CFUniChar.c b/CFUniChar.c
+--- a/CFUniChar.c	2009-02-19 16:25:06.000000000 -0800
++++ b/CFUniChar.c	2012-04-25 22:58:38.968005637 -0700
+@@ -574,18 +576,10 @@
+ 
+ static CFSpinLock_t __CFUniCharMappingTableLock = CFSpinLockInit;
+ 
+-#if __CF_BIG_ENDIAN__
+ #if USE_MACHO_SEGMENT
+ #define MAPPING_TABLE_FILE "__data"
+ #else
+-#define MAPPING_TABLE_FILE "CFUnicodeData-B.mapping"
+-#endif
+-#else
+-#if USE_MACHO_SEGMENT
+-#define MAPPING_TABLE_FILE "__data"
+-#else
+-#define MAPPING_TABLE_FILE "CFUnicodeData-L.mapping"
+-#endif
++#define MAPPING_TABLE_FILE "CFUnicodeData.mapping"
+ #endif
+ 
+ __private_extern__ const void *CFUniCharGetMappingData(uint32_t type) {
+diff -aruN a/Makefile.am b/Makefile.am
diff --git a/opencflite.patches/opencflite-62.patch b/opencflite.patches/opencflite-62.patch
new file mode 100644
index 0000000..e58f77a
--- /dev/null
+++ b/opencflite.patches/opencflite-62.patch
@@ -0,0 +1,16 @@
+diff -aruN a/CFUniChar.c b/CFUniChar.c
+--- a/CFUniChar.c	2009-02-19 16:25:06.000000000 -0800
++++ b/CFUniChar.c	2012-04-25 22:58:38.968005637 -0700
+@@ -221,10 +221,12 @@
+ 
+     int no_hang_fd = open("/dev/autofs_nowait", 0);
+     if ((fd = open(fileName, O_RDONLY, 0)) < 0) {
++    CFLog(__kCFLogAssertion, CFSTR("%s(): could not open %s for read-only access."), __PRETTY_FUNCTION__, fileName);
+ 	close(no_hang_fd);
+ 	return false;
+     }
+     if (fstat(fd, &statBuf) < 0 || (*bytes = mmap(0, statBuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) == (void *)-1) {
++        CFLog(__kCFLogAssertion, CFSTR("%s(): could not map %s for read-only access."), __PRETTY_FUNCTION__, fileName);
+         close(fd);
+         return false;
+     }
diff --git a/opencflite.tar.gz b/opencflite.tar.gz
new file mode 100644
index 0000000..cff4fd0
--- /dev/null
+++ b/opencflite.tar.gz
Binary files differ
diff --git a/opencflite.url b/opencflite.url
new file mode 100644
index 0000000..90a49dc
--- /dev/null
+++ b/opencflite.url
@@ -0,0 +1 @@
+http://download.sourceforge.net/opencflite/opencflite-476.17.2.tar.gz
diff --git a/opencflite.version b/opencflite.version
new file mode 100644
index 0000000..7b60178
--- /dev/null
+++ b/opencflite.version
@@ -0,0 +1 @@
+476.17.2