xref: /xnu-12377.41.6/libkern/libclosure/libclosuredata.c (revision bbb1b6f9e71b8cdde6e5cd6f4841f207dee3d828)
1*bbb1b6f9SApple OSS Distributions /*
2*bbb1b6f9SApple OSS Distributions  * data.c
3*bbb1b6f9SApple OSS Distributions  * libclosure
4*bbb1b6f9SApple OSS Distributions  *
5*bbb1b6f9SApple OSS Distributions  * Copyright (c) 2008-2010 Apple Inc. All rights reserved.
6*bbb1b6f9SApple OSS Distributions  *
7*bbb1b6f9SApple OSS Distributions  * @APPLE_LLVM_LICENSE_HEADER@
8*bbb1b6f9SApple OSS Distributions  *
9*bbb1b6f9SApple OSS Distributions  */
10*bbb1b6f9SApple OSS Distributions 
11*bbb1b6f9SApple OSS Distributions /********************
12*bbb1b6f9SApple OSS Distributions  *  NSBlock support
13*bbb1b6f9SApple OSS Distributions  *
14*bbb1b6f9SApple OSS Distributions  *  We allocate space and export a symbol to be used as the Class for the on-stack and malloc'ed copies until ObjC arrives on the scene.  These data areas are set up by Foundation to link in as real classes post facto.
15*bbb1b6f9SApple OSS Distributions  *
16*bbb1b6f9SApple OSS Distributions  *  We keep these in a separate file so that we can include the runtime code in test subprojects but not include the data so that compiled code that sees the data in libSystem doesn't get confused by a second copy.  Somehow these don't get unified in a common block.
17*bbb1b6f9SApple OSS Distributions  **********************/
18*bbb1b6f9SApple OSS Distributions 
19*bbb1b6f9SApple OSS Distributions void * _NSConcreteStackBlock[32] = { 0 };
20*bbb1b6f9SApple OSS Distributions void * _NSConcreteMallocBlock[32] = { 0 };
21*bbb1b6f9SApple OSS Distributions void * _NSConcreteAutoBlock[32] = { 0 };
22*bbb1b6f9SApple OSS Distributions void * _NSConcreteFinalizingBlock[32] = { 0 };
23*bbb1b6f9SApple OSS Distributions void * _NSConcreteGlobalBlock[32] = { 0 };
24*bbb1b6f9SApple OSS Distributions void * _NSConcreteWeakBlockVariable[32] = { 0 };
25