diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..13dfe58
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,113 @@
+#
+#    Copyright (c) 2010-2014 Nest, Inc.
+#    All rights reserved.
+#
+#    This document is the property of Nest. It is considered
+#    confidential and proprietary information.
+#
+#    This document may not be reproduced or transmitted in any form,
+#    in whole or in part, without the express written permission of
+#    Nest.
+#
+#    Description:
+#      This file is the make file for dmalloc,
+#
+
+
+include pre.mak
+
+PackageName		:= dmalloc
+
+PackageExtension	:= tar.gz
+PackageSeparator	:= -
+
+PackagePatchArgs	:= -p1
+
+PackageArchive		:= $(PackageName).$(PackageExtension)
+PackageSourceDir	:= $(call GenerateBuildPaths,$(PackageName)$(PackageSeparator)$(PackageVersion))
+
+LicenseSourceFile	:= $(PackageSourceDir)/COPYING
+
+CleanPaths		+= $(PackageLicenseFile)
+
+SOURCEDIRS                      = $(PackageSourceDir)
+$(PackageSourceDir)_RULE_TARGET = $(BuildDirectory)/configure
+
+all: $(PackageDefaultGoal)
+
+# Generate the package license contents.
+
+$(LicenseSourceFile): $(BuildDirectory)/source
+
+$(PackageLicenseFile): $(LicenseSourceFile)
+	$(copy-result)
+
+# Extract the source from the archive and apply patches, if any.
+
+$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths) | $(BuildDirectory)
+	$(call expand-archive,$(PackageArchive),$(dir $(@)))
+	$(call patch-directory,$(@),$(PackagePatchArgs),$(PackagePatchPaths))
+	$(Verbose)touch $(@)
+
+# Prepare the sources.
+
+$(BuildDirectory)/source: | $(PackageSourceDir) $(BuildDirectory)
+	$(Verbose)touch $@
+
+# Patch the sources, if necessary.
+
+$(BuildDirectory)/patch: $(BuildDirectory)/source
+	$(Verbose)touch $@
+
+# Generate the package build makefile.
+
+# Configure the source for building.
+
+$(BuildDirectory)/configure: $(BuildDirectory)/source | $(PackageSourceDir) $(BuildDirectory) $(ResultDirectory)
+	$(Verbose)cd $(BuildDirectory) && \
+	autoconf -o $(CURDIR)/$(PackageSourceDir)/configure $(CURDIR)/$(PackageSourceDir)/configure.ac && \
+	$(CURDIR)/$(PackageSourceDir)/configure \
+	CC="$(CC) $(CPPOPTFLAGS)" CXX="$(CXX) $(CPPOPTFLAGS)" AR=$(AR) NM=$(NM) RANLIB=$(RANLIB) STRIP=$(STRIP) \
+	CPPFLAGS="$(call ToolGenerateIncludeArgument,$(LinuxIncludePath))" \
+	--build=$(HostTuple) \
+	--host=$(TargetTuple) \
+	--target=$(TargetTuple) \
+	--prefix=/usr \
+	--sysconfdir=/etc \
+	--localstatedir=/var \
+	--enable-threads \
+	--with-abort-okay \
+	--with-pagesize=12 \
+	--with-return-macros \
+	--with-strdup-macro \
+	$(NULL)
+	$(Verbose)touch $@
+
+# Build the source.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+$(BuildDirectory)/build: $(BuildDirectory)/configure
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) -C $(BuildDirectory) \
+	all
+	$(Verbose)touch $@
+
+# Stage the build to a temporary installation area.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+$(BuildDirectory)/stage: $(BuildDirectory)/build | $(ResultDirectory)
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) -C $(BuildDirectory) DESTDIR=$(ResultDirectory) install
+	$(Verbose)touch $@
+
+.PHONY: stage
+stage: $(BuildDirectory)/stage
+
+clean:
+	$(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory)
+
+include post.mak
diff --git a/dmalloc.patches/dmalloc-50.description b/dmalloc.patches/dmalloc-50.description
new file mode 100644
index 0000000..a3ae65b
--- /dev/null
+++ b/dmalloc.patches/dmalloc-50.description
@@ -0,0 +1 @@
+Fix cross-compiling.
diff --git a/dmalloc.patches/dmalloc-50.patch b/dmalloc.patches/dmalloc-50.patch
new file mode 100644
index 0000000..ba7f765
--- /dev/null
+++ b/dmalloc.patches/dmalloc-50.patch
@@ -0,0 +1,180 @@
+diff -ur a/configure.ac b/configure.ac
+--- a/configure.ac	2007-05-14 10:26:14.000000000 -0700
++++ b/configure.ac	2016-05-14 18:42:26.261439471 -0700
+@@ -56,7 +56,7 @@
+ AC_PROG_CXX
+ 
+ # see if we actually have a CXX program
+-if test "$ac_cv_prog_CXX" = "" -o ! -x "$ac_cv_prog_CXX"; then
++if test "$ac_cv_prog_CXX" = "" -o ! "$ac_cv_prog_CXX" --version &>/dev/null ; then
+     AC_MSG_WARN(could not find C++ compiler $ac_cv_prog_CXX)
+     enable_cxx=no
+ fi
+@@ -263,6 +263,10 @@
+ # check for strdup macro (linux)
+ #
+ AC_MSG_CHECKING([strdup macro])
++AC_ARG_WITH(strdup-macro,
++    [ AC_HELP_STRING([--with-strdup-macro],
++		[override strdup macro detection] ) ],
++    [ ac_cv_strdup_macro="$withval" ], [
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ #if HAVE_STDLIB_H
+ #  include <string.h>
+@@ -278,6 +282,7 @@
+ [ac_cv_strdup_macro=no],
+ [ac_cv_strdup_macro=no]
+ )
++],)
+ AC_MSG_RESULT([$ac_cv_strdup_macro])
+ 
+ #
+@@ -349,6 +354,12 @@
+ AC_CHECK_FUNCS(getpagesize)
+ AC_MSG_CHECKING([basic-block size])
+ ac_cv_page_size=0
++AC_ARG_WITH(pagesize,
++    [ AC_HELP_STRING([--with-pagesize=nbits],
++		[log base 2 of machine page size] ) ],
++    [ case "$withval" in ?|1?) ac_cv_page_size=$withval; esac ],
++    [ : # default to probing, set above ],
++)
+ if test $ac_cv_page_size = 0; then
+    AC_RUN_IFELSE([main() { if (getpagesize()<=2048) exit(0); else exit(1); }],
+ 	[ ac_cv_page_size=11 ] )
+@@ -389,6 +400,10 @@
+ # check the safety of the abort function
+ #
+ AC_CHECK_FUNCS(abort)
++AC_ARG_WITH(abort-okay,
++    [ AC_HELP_STRING([--with-abort-okay],
++		[override abort okay detection] ) ],
++    [ AC_DEFINE(ABORT_OKAY, 1) AC_MSG_RESULT([yes]) ], [
+ AC_MSG_CHECKING([abort safe])
+ AC_RUN_IFELSE([[
+ static int main_b = 0;
+@@ -429,6 +444,7 @@
+ [ AC_DEFINE(ABORT_OKAY, 1) AC_MSG_RESULT([yes]) ],
+ [ AC_DEFINE(ABORT_OKAY, 0) AC_MSG_RESULT([no]) ]
+ )
++],)
+ 
+ AC_TYPE_SIGNAL
+ AC_MSG_CHECKING([signal works])
+@@ -593,6 +609,10 @@
+ #
+ # check if the return.h macros work
+ #
++AC_ARG_WITH(return-macros,
++    [ AC_HELP_STRING([--with-return-macros],
++		[override return macros detection] ) ],
++    [ AC_DEFINE(RETURN_MACROS_WORK, 1) AC_MSG_RESULT([yes]) ], [
+ AC_MSG_CHECKING([return.h macros work])
+ AC_RUN_IFELSE([
+ 
+@@ -618,6 +638,7 @@
+ [ AC_DEFINE(RETURN_MACROS_WORK, 0) AC_MSG_RESULT([no]) ],
+ [ AC_DEFINE(RETURN_MACROS_WORK, 0) AC_MSG_RESULT([no]) ]
+ )
++],)
+ 
+ ##############################################################################
+ 
+diff -ur a/Makefile.in b/Makefile.in
+--- a/Makefile.in	2007-05-14 10:26:14.000000000 -0700
++++ b/Makefile.in	2016-05-14 17:39:10.740821762 -0700
+@@ -174,66 +174,66 @@
+ #	rm -f configure
+ 
+ installdirs :
+-	$(srcdir)/mkinstalldirs $(includedir) $(libdir) $(bindir)
++	$(srcdir)/mkinstalldirs $(DESTDIR)/$(includedir) $(DESTDIR)/$(libdir) $(DESTDIR)/$(bindir)
+ 
+ installincs : $(HFLS)
+-	$(srcdir)/mkinstalldirs $(includedir)
+-	$(INSTALL_DATA) $(HFLS) $(includedir)
++	$(srcdir)/mkinstalldirs $(DESTDIR)/$(includedir)
++	$(INSTALL_DATA) $(HFLS) $(DESTDIR)/$(includedir)
+ 
+ installthsl : $(LIB_TH_SL)
+-	$(srcdir)/mkinstalldirs $(libdir)
+-	$(INSTALL_PROGRAM) $(LIB_TH_SL) $(libdir)
++	$(srcdir)/mkinstalldirs $(DESTDIR)/$(libdir)
++	$(INSTALL_PROGRAM) $(LIB_TH_SL) $(DESTDIR)/$(libdir)
+ 
+ installth : $(INSTALL_THREADS)
+-	$(srcdir)/mkinstalldirs $(libdir)
+-	$(INSTALL_PROGRAM) $(LIB_TH) $(libdir)
++	$(srcdir)/mkinstalldirs $(DESTDIR)/$(libdir)
++	$(INSTALL_PROGRAM) $(LIB_TH) $(DESTDIR)/$(libdir)
+ @CXX_OFF@	@echo "Enter 'make installthcxx' to install the threaded C++ library"
+ @SL_OFF@	@echo "Enter 'make installthsl' to install the threaded shared-library"
+ 
+ installthcxxsl : $(LIB_TH_CXX_SL)
+-	$(srcdir)/mkinstalldirs $(shlibdir)
+-	$(INSTALL_PROGRAM) $(LIB_TH_CXX_SL) $(shlibdir)
++	$(srcdir)/mkinstalldirs $(DESTDIR)/$(shlibdir)
++	$(INSTALL_PROGRAM) $(LIB_TH_CXX_SL) $(DESTDIR)/$(shlibdir)
+ 
+ installthcxx : $(INSTALL_TH_CXX)
+-	$(srcdir)/mkinstalldirs $(libdir)
+-	$(INSTALL_PROGRAM) $(LIB_TH_CXX) $(libdir)
++	$(srcdir)/mkinstalldirs $(DESTDIR)/$(libdir)
++	$(INSTALL_PROGRAM) $(LIB_TH_CXX) $(DESTDIR)/$(libdir)
+ @SL_OFF@	@echo "Enter 'make installthcxxsl' to install the threaded C++ shared-library"
+ 
+ installcxxsl : $(LIB_CXX_SL)
+-	$(srcdir)/mkinstalldirs $(libdir)
+-	$(INSTALL_PROGRAM) $(LIB_CXX_SL) $(libdir)
++	$(srcdir)/mkinstalldirs $(DESTDIR)/$(libdir)
++	$(INSTALL_PROGRAM) $(LIB_CXX_SL) $(DESTDIR)/$(libdir)
+ 
+ installcxx : $(INSTALL_CXX)
+-	$(srcdir)/mkinstalldirs $(libdir)
+-	$(INSTALL_PROGRAM) $(LIB_CXX) $(libdir)
++	$(srcdir)/mkinstalldirs $(DESTDIR)/$(libdir)
++	$(INSTALL_PROGRAM) $(LIB_CXX) $(DESTDIR)/$(libdir)
+ @TH_OFF@	@echo "Enter 'make installthcxx' to install the threaded C++ library"
+ @SL_OFF@	@echo "Enter 'make installcxxsl' to install the C++ shared-library"
+ 
+ installsl : $(LIB_SL)
+-	$(srcdir)/mkinstalldirs $(shlibdir)
+-	$(INSTALL_PROGRAM) $(LIB_SL) $(shlibdir)
++	$(srcdir)/mkinstalldirs $(DESTDIR)/$(shlibdir)
++	$(INSTALL_PROGRAM) $(LIB_SL) $(DESTDIR)/$(shlibdir)
+ @CXX_OFF@	@echo "Enter 'make installcxxsl' to install the C++ shared-library"
+ @TH_OFF@	@echo "Enter 'make installthsl' to install thread shared-library"
+ 
+ installlib : $(INSTALL_LIB)
+-	$(srcdir)/mkinstalldirs $(libdir)
+-	$(INSTALL_PROGRAM) $(LIBRARY) $(libdir)
+-	@RANLIB@ $(libdir)/$(LIBRARY)
+-@SL_OFF@	@echo "Enter 'make installsl' to install $(LIB_SL) in $(shlibdir)"
++	$(srcdir)/mkinstalldirs $(DESTDIR)/$(libdir)
++	$(INSTALL_PROGRAM) $(LIBRARY) $(DESTDIR)/$(libdir)
++	@RANLIB@ $(DESTDIR)/$(libdir)/$(LIBRARY)
++@SL_OFF@	@echo "Enter 'make installsl' to install $(LIB_SL) in $(DESTDIR)/$(shlibdir)"
+ @CXX_OFF@	@echo "Enter 'make installcxx' to install the C++ library"
+ @TH_OFF@	@echo "Enter 'make installth' to install thread library"
+ 
+ installdocs : $(srcdir)/docs/$(HTMLFILE) $(srcdir)/docs/$(TEXIFILE) \
+ 		$(srcdir)/docs/$(PDFFILE)
+-	$(srcdir)/mkinstalldirs $(docdir)
+-	$(INSTALL_DATA) $(srcdir)/docs/$(HTMLFILE) $(docdir)
+-	$(INSTALL_DATA) $(srcdir)/docs/$(TEXIFILE) $(docdir)
+-	$(INSTALL_DATA) $(srcdir)/docs/$(PDFFILE) $(docdir)
++	$(srcdir)/mkinstalldirs $(DESTDIR)/$(docdir)
++	$(INSTALL_DATA) $(srcdir)/docs/$(HTMLFILE) $(DESTDIR)/$(docdir)
++	$(INSTALL_DATA) $(srcdir)/docs/$(TEXIFILE) $(DESTDIR)/$(docdir)
++	$(INSTALL_DATA) $(srcdir)/docs/$(PDFFILE) $(DESTDIR)/$(docdir)
+ 
+ install : installincs installlib $(UTIL)
+-	$(srcdir)/mkinstalldirs $(bindir)
+-	$(INSTALL_PROGRAM) $(UTIL) $(bindir)
+-	@echo "Enter 'make installdocs' to install $(DOCFILES) in $(docdir)"
++	$(srcdir)/mkinstalldirs $(DESTDIR)/$(bindir)
++	$(INSTALL_PROGRAM) $(UTIL) $(DESTDIR)/$(bindir)
++	@echo "Enter 'make installdocs' to install $(DOCFILES) in $(DESTDIR)/$(docdir)"
+ 
+ dmalloc.h.2 : $(srcdir)/configure
+ 	$(SHELL) $(srcdir)/configure
diff --git a/dmalloc.patches/dmalloc-51.description b/dmalloc.patches/dmalloc-51.description
new file mode 100644
index 0000000..7497866
--- /dev/null
+++ b/dmalloc.patches/dmalloc-51.description
@@ -0,0 +1 @@
+Add posix_memalign Support
diff --git a/dmalloc.patches/dmalloc-51.patch b/dmalloc.patches/dmalloc-51.patch
new file mode 100644
index 0000000..d6cf05d
--- /dev/null
+++ b/dmalloc.patches/dmalloc-51.patch
@@ -0,0 +1,55 @@
+diff -ur a/malloc.c b/malloc.c
+--- a/malloc.c	2007-05-14 10:26:14.000000000 -0700
++++ b/malloc.c	2016-05-13 17:02:10.141760950 -0700
+@@ -81,6 +81,8 @@
+ #include <signal.h>
+ #endif
+ 
++#include <errno.h>
++
+ #define DMALLOC_DISABLE
+ 
+ #include "dmalloc.h"
+@@ -1209,6 +1211,30 @@
+ 			0 /* no xalloc messages */);
+ }
+ 
++#undef posix_memalign
++int		posix_memalign(DMALLOC_PNT *ppnt, DMALLOC_SIZE alignment, DMALLOC_SIZE size)
++{
++    int ret = 0;;
++    DMALLOC_PNT pnt;
++
++    if ((alignment & (alignment - 1)) != 0) {
++        ret = -EINVAL;
++    }
++
++    if (ret >= 0) {
++        pnt = memalign(alignment, size);
++        if (pnt == NULL) {
++            ret = -ENOMEM;
++        }
++    }
++
++    if (ret >= 0) {
++        *ppnt = pnt;
++    }
++
++    return ret;
++}
++
+ /*
+  * DMALLOC_PNT valloc
+  *
+diff -ur a/malloc_funcs.h b/malloc_funcs.h
+--- a/malloc_funcs.h	2007-05-14 10:26:14.000000000 -0700
++++ b/malloc_funcs.h	2016-05-13 17:01:21.817144140 -0700
+@@ -129,6 +129,8 @@
+  */
+ extern
+ DMALLOC_PNT	memalign(DMALLOC_SIZE alignment, DMALLOC_SIZE size);
++extern
++int		posix_memalign(DMALLOC_PNT *ppnt, DMALLOC_SIZE alignment, DMALLOC_SIZE size);
+ 
+ /*
+  * Allocate and return a SIZE block of bytes that has been aligned to
diff --git a/dmalloc.patches/dmalloc-52.description b/dmalloc.patches/dmalloc-52.description
new file mode 100644
index 0000000..a998755
--- /dev/null
+++ b/dmalloc.patches/dmalloc-52.description
@@ -0,0 +1 @@
+Disable Free Null Message
diff --git a/dmalloc.patches/dmalloc-52.patch b/dmalloc.patches/dmalloc-52.patch
new file mode 100644
index 0000000..0c1ba0c
--- /dev/null
+++ b/dmalloc.patches/dmalloc-52.patch
@@ -0,0 +1,12 @@
+diff -ur a/settings.dist b/settings.dist
+--- a/settings.dist	2007-05-14 10:26:14.000000000 -0700
++++ b/settings.dist	2016-05-15 10:52:15.844959444 -0700
+@@ -78,7 +78,7 @@
+  * generate an exception when it sees a free(0L).
+  */
+ #define ALLOW_FREE_NULL 1
+-#define ALLOW_FREE_NULL_MESSAGE 1
++#define ALLOW_FREE_NULL_MESSAGE 0
+ 
+ /*
+  * Should we use the ra-address macros in return.h.  These are system
diff --git a/dmalloc.tar.gz b/dmalloc.tar.gz
new file mode 100644
index 0000000..4e19078
--- /dev/null
+++ b/dmalloc.tar.gz
Binary files differ
diff --git a/dmalloc.url b/dmalloc.url
new file mode 100644
index 0000000..4493150
--- /dev/null
+++ b/dmalloc.url
@@ -0,0 +1 @@
+http://dmalloc.com/releases/dmalloc-5.5.2.tgz
diff --git a/dmalloc.version b/dmalloc.version
new file mode 100644
index 0000000..e4d41db
--- /dev/null
+++ b/dmalloc.version
@@ -0,0 +1 @@
+5.5.2
