diff options
Diffstat (limited to 'pkgs/os-specific/darwin/apple-source-releases/libauto')
-rw-r--r-- | pkgs/os-specific/darwin/apple-source-releases/libauto/auto_dtrace.h | 129 | ||||
-rw-r--r-- | pkgs/os-specific/darwin/apple-source-releases/libauto/default.nix | 74 |
2 files changed, 203 insertions, 0 deletions
diff --git a/pkgs/os-specific/darwin/apple-source-releases/libauto/auto_dtrace.h b/pkgs/os-specific/darwin/apple-source-releases/libauto/auto_dtrace.h new file mode 100644 index 000000000000..bf367a3cabb3 --- /dev/null +++ b/pkgs/os-specific/darwin/apple-source-releases/libauto/auto_dtrace.h @@ -0,0 +1,129 @@ +/* + * Generated by dtrace(1M). + */ + +#ifndef _AUTO_DTRACE_H +#define _AUTO_DTRACE_H + +#include <unistd.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#define GARBAGE_COLLECTION_STABILITY "___dtrace_stability$garbage_collection$v1$1_1_0_1_1_0_1_1_0_1_1_0_1_1_0" + +#define GARBAGE_COLLECTION_TYPEDEFS "___dtrace_typedefs$garbage_collection$v2$6175746f5f636f6c6c656374696f6e5f70686173655f74$6175746f5f636f6c6c656374696f6e5f747970655f74$6d616c6c6f635f7a6f6e655f74" + +#if !defined(DTRACE_PROBES_DISABLED) || !DTRACE_PROBES_DISABLED + +#define GARBAGE_COLLECTION_AUTO_BLOCK_LOST_THREAD_LOCALITY(arg0, arg1) \ +do { \ + __asm__ volatile(".reference " GARBAGE_COLLECTION_TYPEDEFS); \ + __dtrace_probe$garbage_collection$auto_block_lost_thread_locality$v1$766f6964202a$75696e7436345f74(arg0, arg1); \ + __asm__ volatile(".reference " GARBAGE_COLLECTION_STABILITY); \ +} while (0) +#define GARBAGE_COLLECTION_AUTO_BLOCK_LOST_THREAD_LOCALITY_ENABLED() \ + ({ int _r = __dtrace_isenabled$garbage_collection$auto_block_lost_thread_locality$v1(); \ + __asm__ volatile(""); \ + _r; }) +#define GARBAGE_COLLECTION_AUTO_REFCOUNT_ONE_ALLOCATION(arg0) \ +do { \ + __asm__ volatile(".reference " GARBAGE_COLLECTION_TYPEDEFS); \ + __dtrace_probe$garbage_collection$auto_refcount_one_allocation$v1$75696e7436345f74(arg0); \ + __asm__ volatile(".reference " GARBAGE_COLLECTION_STABILITY); \ +} while (0) +#define GARBAGE_COLLECTION_AUTO_REFCOUNT_ONE_ALLOCATION_ENABLED() \ + ({ int _r = __dtrace_isenabled$garbage_collection$auto_refcount_one_allocation$v1(); \ + __asm__ volatile(""); \ + _r; }) +#define GARBAGE_COLLECTION_COLLECTION_BEGIN(arg0, arg1) \ +do { \ + __asm__ volatile(".reference " GARBAGE_COLLECTION_TYPEDEFS); \ + __dtrace_probe$garbage_collection$collection_begin$v1$6d616c6c6f635f7a6f6e655f74202a$6175746f5f636f6c6c656374696f6e5f747970655f74(arg0, arg1); \ + __asm__ volatile(".reference " GARBAGE_COLLECTION_STABILITY); \ +} while (0) +#define GARBAGE_COLLECTION_COLLECTION_BEGIN_ENABLED() \ + ({ int _r = __dtrace_isenabled$garbage_collection$collection_begin$v1(); \ + __asm__ volatile(""); \ + _r; }) +#define GARBAGE_COLLECTION_COLLECTION_END(arg0, arg1, arg2, arg3, arg4) \ +do { \ + __asm__ volatile(".reference " GARBAGE_COLLECTION_TYPEDEFS); \ + __dtrace_probe$garbage_collection$collection_end$v1$6d616c6c6f635f7a6f6e655f74202a$75696e7436345f74$75696e7436345f74$75696e7436345f74$75696e7436345f74(arg0, arg1, arg2, arg3, arg4); \ + __asm__ volatile(".reference " GARBAGE_COLLECTION_STABILITY); \ +} while (0) +#define GARBAGE_COLLECTION_COLLECTION_END_ENABLED() \ + ({ int _r = __dtrace_isenabled$garbage_collection$collection_end$v1(); \ + __asm__ volatile(""); \ + _r; }) +#define GARBAGE_COLLECTION_COLLECTION_PHASE_BEGIN(arg0, arg1) \ +do { \ + __asm__ volatile(".reference " GARBAGE_COLLECTION_TYPEDEFS); \ + __dtrace_probe$garbage_collection$collection_phase_begin$v1$6d616c6c6f635f7a6f6e655f74202a$6175746f5f636f6c6c656374696f6e5f70686173655f74(arg0, arg1); \ + __asm__ volatile(".reference " GARBAGE_COLLECTION_STABILITY); \ +} while (0) +#define GARBAGE_COLLECTION_COLLECTION_PHASE_BEGIN_ENABLED() \ + ({ int _r = __dtrace_isenabled$garbage_collection$collection_phase_begin$v1(); \ + __asm__ volatile(""); \ + _r; }) +#define GARBAGE_COLLECTION_COLLECTION_PHASE_END(arg0, arg1, arg2, arg3) \ +do { \ + __asm__ volatile(".reference " GARBAGE_COLLECTION_TYPEDEFS); \ + __dtrace_probe$garbage_collection$collection_phase_end$v1$6d616c6c6f635f7a6f6e655f74202a$6175746f5f636f6c6c656374696f6e5f70686173655f74$75696e7436345f74$75696e7436345f74(arg0, arg1, arg2, arg3); \ + __asm__ volatile(".reference " GARBAGE_COLLECTION_STABILITY); \ +} while (0) +#define GARBAGE_COLLECTION_COLLECTION_PHASE_END_ENABLED() \ + ({ int _r = __dtrace_isenabled$garbage_collection$collection_phase_end$v1(); \ + __asm__ volatile(""); \ + _r; }) + + +extern void __dtrace_probe$garbage_collection$auto_block_lost_thread_locality$v1$766f6964202a$75696e7436345f74(const void *, uint64_t); +extern int __dtrace_isenabled$garbage_collection$auto_block_lost_thread_locality$v1(void); +extern void __dtrace_probe$garbage_collection$auto_refcount_one_allocation$v1$75696e7436345f74(uint64_t); +extern int __dtrace_isenabled$garbage_collection$auto_refcount_one_allocation$v1(void); +extern void __dtrace_probe$garbage_collection$collection_begin$v1$6d616c6c6f635f7a6f6e655f74202a$6175746f5f636f6c6c656374696f6e5f747970655f74(const malloc_zone_t *, auto_collection_type_t); +extern int __dtrace_isenabled$garbage_collection$collection_begin$v1(void); +extern void __dtrace_probe$garbage_collection$collection_end$v1$6d616c6c6f635f7a6f6e655f74202a$75696e7436345f74$75696e7436345f74$75696e7436345f74$75696e7436345f74(const malloc_zone_t *, uint64_t, uint64_t, uint64_t, uint64_t); +extern int __dtrace_isenabled$garbage_collection$collection_end$v1(void); +extern void __dtrace_probe$garbage_collection$collection_phase_begin$v1$6d616c6c6f635f7a6f6e655f74202a$6175746f5f636f6c6c656374696f6e5f70686173655f74(const malloc_zone_t *, auto_collection_phase_t); +extern int __dtrace_isenabled$garbage_collection$collection_phase_begin$v1(void); +extern void __dtrace_probe$garbage_collection$collection_phase_end$v1$6d616c6c6f635f7a6f6e655f74202a$6175746f5f636f6c6c656374696f6e5f70686173655f74$75696e7436345f74$75696e7436345f74(const malloc_zone_t *, auto_collection_phase_t, uint64_t, uint64_t); +extern int __dtrace_isenabled$garbage_collection$collection_phase_end$v1(void); + +#else + +#define GARBAGE_COLLECTION_AUTO_BLOCK_LOST_THREAD_LOCALITY(arg0, arg1) \ +do { \ + } while (0) +#define GARBAGE_COLLECTION_AUTO_BLOCK_LOST_THREAD_LOCALITY_ENABLED() (0) +#define GARBAGE_COLLECTION_AUTO_REFCOUNT_ONE_ALLOCATION(arg0) \ +do { \ + } while (0) +#define GARBAGE_COLLECTION_AUTO_REFCOUNT_ONE_ALLOCATION_ENABLED() (0) +#define GARBAGE_COLLECTION_COLLECTION_BEGIN(arg0, arg1) \ +do { \ + } while (0) +#define GARBAGE_COLLECTION_COLLECTION_BEGIN_ENABLED() (0) +#define GARBAGE_COLLECTION_COLLECTION_END(arg0, arg1, arg2, arg3, arg4) \ +do { \ + } while (0) +#define GARBAGE_COLLECTION_COLLECTION_END_ENABLED() (0) +#define GARBAGE_COLLECTION_COLLECTION_PHASE_BEGIN(arg0, arg1) \ +do { \ + } while (0) +#define GARBAGE_COLLECTION_COLLECTION_PHASE_BEGIN_ENABLED() (0) +#define GARBAGE_COLLECTION_COLLECTION_PHASE_END(arg0, arg1, arg2, arg3) \ +do { \ + } while (0) +#define GARBAGE_COLLECTION_COLLECTION_PHASE_END_ENABLED() (0) + +#endif /* !defined(DTRACE_PROBES_DISABLED) || !DTRACE_PROBES_DISABLED */ + + +#ifdef __cplusplus +} +#endif + +#endif /* _AUTO_DTRACE_H */ diff --git a/pkgs/os-specific/darwin/apple-source-releases/libauto/default.nix b/pkgs/os-specific/darwin/apple-source-releases/libauto/default.nix new file mode 100644 index 000000000000..1c61297c7d5f --- /dev/null +++ b/pkgs/os-specific/darwin/apple-source-releases/libauto/default.nix @@ -0,0 +1,74 @@ +{ stdenv, appleDerivation }: + +appleDerivation { + buildPhase = '' + cp ${./auto_dtrace.h} ./auto_dtrace.h + + substituteInPlace auto_zone.cpp \ + --replace "#include <msgtracer_client.h>" ''$'#include <asl.h>\nstatic void msgtracer_log_with_keys(...) { };' + + substituteInPlace Definitions.h \ + --replace "#include <System/pthread_machdep.h>" "" + + # getspecific_direct is more efficient, but this should be equivalent... + substituteInPlace Zone.h \ + --replace "_pthread_getspecific_direct" "pthread_getspecific" \ + --replace "_pthread_has_direct_tsd()" "0" \ + --replace "__PTK_FRAMEWORK_GC_KEY0" "110" \ + --replace "__PTK_FRAMEWORK_GC_KEY1" "111" \ + --replace "__PTK_FRAMEWORK_GC_KEY2" "112" \ + --replace "__PTK_FRAMEWORK_GC_KEY3" "113" \ + --replace "__PTK_FRAMEWORK_GC_KEY4" "114" \ + --replace "__PTK_FRAMEWORK_GC_KEY5" "115" \ + --replace "__PTK_FRAMEWORK_GC_KEY6" "116" \ + --replace "__PTK_FRAMEWORK_GC_KEY7" "117" \ + --replace "__PTK_FRAMEWORK_GC_KEY8" "118" \ + --replace "__PTK_FRAMEWORK_GC_KEY9" "119" + + substituteInPlace auto_zone.cpp \ + --replace "__PTK_FRAMEWORK_GC_KEY9" "119" \ + --replace "__PTK_FRAMEWORK_GC_KEY0" "110" \ + + substituteInPlace Zone.cpp \ + --replace "_pthread_getspecific_direct" "pthread_getspecific" \ + --replace "__PTK_FRAMEWORK_GC_KEY9" "119" \ + --replace "__PTK_FRAMEWORK_GC_KEY0" "110" \ + --replace "__PTK_LIBDISPATCH_KEY0" "20" \ + --replace "struct auto_zone_cursor {" ''$'extern "C" int pthread_key_init_np(int, void (*)(void *));\nstruct auto_zone_cursor {' + + substituteInPlace auto_impl_utilities.c \ + --replace "# include <CrashReporterClient.h>" "void CRSetCrashLogMessage(void *msg) { };" + + c++ -I. -O3 -c -Wno-c++11-extensions auto_zone.cpp + cc -I. -O3 -Iauto_tester -c auto_impl_utilities.c + c++ -I. -O3 -c auto_weak.cpp + c++ -I. -O3 -c Admin.cpp + c++ -I. -O3 -c Bitmap.cpp + c++ -I. -O3 -c Definitions.cpp + c++ -I. -O3 -c Environment.cpp + c++ -I. -O3 -c Large.cpp + c++ -I. -O3 -c Region.cpp + c++ -I. -O3 -c Subzone.cpp + c++ -I. -O3 -c WriteBarrier.cpp + c++ -I. -O3 -c Zone.cpp + c++ -I. -O3 -c Thread.cpp + c++ -I. -O3 -c InUseEnumerator.cpp + c++ -I. -O3 -c auto_gdb_interface.cpp + c++ -I. -O3 -c PointerHash.cpp + c++ -I. -O3 -c ThreadLocalCollector.cpp + c++ -I. -O3 -c ZoneDump.cpp + c++ -I. -O3 -c ZoneCollectors.cpp + c++ -I. -O3 -c SubzonePartition.cpp + c++ -I. -O3 -c ZoneCollectionChecking.cpp + c++ -I. -O3 -c ZoneCompaction.cpp + c++ -I. -O3 -c BlockRef.cpp + + c++ -Wl,-no_dtrace_dof --stdlib=libc++ -dynamiclib -install_name $out/lib/libauto.dylib -o libauto.dylib *.o + ''; + + installPhase = '' + mkdir -p $out/lib $out/include + cp auto_zone.h auto_weak.h auto_tester/auto_tester.h auto_gdb_interface.h $out/include + cp libauto.dylib $out/lib + ''; +} |