diff --git a/dports/lang/erlang/Portfile b/dports/lang/erlang/Portfile
index ed3309c..f8e07f0 100644
--- a/dports/lang/erlang/Portfile
+++ b/dports/lang/erlang/Portfile
@@ -1,8 +1,8 @@
-# $Id$
+# $Id: Portfile 44939 2009-01-04 23:22:47Z bfulgham@macports.org $
 
 PortSystem 1.0
 name		erlang
-version		R12B-5
+version		R13A
 revision        1
 categories	lang erlang
 maintainers	bfulgham@macports.org
@@ -32,18 +32,18 @@ distfiles       otp_src_${version}${extract.suffix}                    \
                 otp_doc_man_${version}${extract.suffix}                \
                 otp_doc_html_${version}${extract.suffix}
 
-checksums       otp_src_R12B-5.tar.gz \
-                    md5     3751ea3fea669d2b25c67eeb883734bb \
-                    sha1    6c45509acf70d35d5def2cbefd86ada093c1ac3a \
-                    rmd160  7265ae8ebd045ec5b977148a7c9b995eb7ef2d2d \
-                otp_doc_man_R12B-5.tar.gz \
-                    md5     6231cb172847040395cc34b20781aa3b \
-                    sha1    ae7036bd2afc9d1fca97f0de2eca84f56656def8 \
-                    rmd160  e28d555d0a86fc69e0ee091864828c8eaa58d2be \
-                otp_doc_html_R12B-5.tar.gz \
-                    md5     fb0c5454bbd865e881b6712295f6d41f \
-                    sha1    0bd369d02051e01bac58c9b8665bd3538e116f51 \
-                    rmd160  b460906043171b27735332ec90c45e38d888869a
+checksums       otp_src_R13A.tar.gz \
+                    md5     76804ff9c18710184cf0c0230a0443fc \
+                    sha1    9fa0db27611559d697fe269c3fb9a405ae24d147 \
+                    rmd160  42ba3c4815fa702d19281f1d42faaec72a75c703 \
+                otp_doc_man_R13A.tar.gz \
+                    md5     883e097796abd2cda4727fe3527dc1b6 \
+                    sha1    98ce2fbc2daf7ec88ca38334412b9e85ca9cd53c \
+                    rmd160  c082bda26b85cd6bd2ede8dd2c538e2ef50bbd2c \
+                otp_doc_html_R13A.tar.gz \
+                    md5     2bbecc1c5537e0cd1c0fc406082b6c56 \
+                    sha1    fb3ed9c0d619d8bbd70af5c6b0e4e90c49771e0d \
+                    rmd160  873b30cd8c5f2617c62aba0314197c54097a27cf
 
 extract.only    otp_src_${version}${extract.suffix}
 
@@ -59,7 +59,8 @@ patchfiles	patch-toolbar.erl \
                 patch-lib_ssl_c_src_Makefile.in \
                 patch-decode_big.c.diff \
                 patch-decode_fun.c.diff \
-                patch-eunit_xml.diff
+                patch-eunit_xml.diff \
+                patch-erts_configure.diff
 
 configure.args  --prefix=${destroot}${prefix}	\
                 --enable-kernel-poll            \
@@ -78,29 +79,20 @@ variant ssl	{
 }
 
 variant no-hipe {
-	# Currently produces bus errors in 10.5.3 due to changes in
-	# signal handling
 	configure.args-delete   --enable-hipe
 }
 
 
-platform i386 {
-   pre-configure {
-      file copy ${filespath}/mach_override.h ${workpath}/${name}-${version}/erts/emulator/hipe
-      file copy ${filespath}/mach_override.c ${workpath}/${name}-${version}/erts/emulator/hipe
-   }
-}
-
-
 
-depends_build   port:gawk
+depends_build   port:gawk \
+                port:wxWidgets
 depends_run     port:tk
 
 post-destroot	{
 	system "tar -C ${destroot}${prefix}/lib/erlang -zxvf ${distpath}/otp_doc_html_${version}${extract.suffix}"
 	system "tar -C ${destroot}${prefix}/lib/erlang -zxvf ${distpath}/otp_doc_man_${version}${extract.suffix}"
  
-        set erts_dir   erts-5.6.5
+        set erts_dir   erts-5.7
 
         reinplace s|${destroot}|| ${destroot}${prefix}/lib/erlang/bin/erl
         reinplace s|${destroot}|| ${destroot}${prefix}/lib/erlang/bin/start
diff --git a/dports/lang/erlang/files/mach_override.c b/dports/lang/erlang/files/mach_override.c
deleted file mode 100644
index 06f9b74..0000000
--- a/dports/lang/erlang/files/mach_override.c
+++ /dev/null
@@ -1,603 +0,0 @@
-/*******************************************************************************
-	mach_override.c
-		Copyright (c) 2003-2005 Jonathan 'Wolf' Rentzsch: <http://rentzsch.com>
-		Some rights reserved: <http://creativecommons.org/licenses/by/2.0/>
-
-	***************************************************************************/
-
-#include "mach_override.h"
-
-#include <mach-o/dyld.h>
-#include <mach/mach_host.h>
-#include <mach/mach_init.h>
-#include <mach/vm_map.h>
-#include <sys/mman.h>
-
-#include <CoreServices/CoreServices.h>
-
-/**************************
-*	
-*	Constants
-*	
-**************************/
-#pragma mark	-
-#pragma mark	(Constants)
-
-#if defined(__ppc__) || defined(__POWERPC__)
-
-long kIslandTemplate[] = {
-	0x9001FFFC,	//	stw		r0,-4(SP)
-	0x3C00DEAD,	//	lis		r0,0xDEAD
-	0x6000BEEF,	//	ori		r0,r0,0xBEEF
-	0x7C0903A6,	//	mtctr	r0
-	0x8001FFFC,	//	lwz		r0,-4(SP)
-	0x60000000,	//	nop		; optionally replaced
-	0x4E800420 	//	bctr
-};
-
-#define kAddressHi			3
-#define kAddressLo			5
-#define kInstructionHi		10
-#define kInstructionLo		11
-
-#elif defined(__i386__) 
-
-#define kOriginalInstructionsSize 16
-
-char kIslandTemplate[] = {
-	// kOriginalInstructionsSize nop instructions so that we 
-	// should have enough space to host original instructions 
-	0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 
-	0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-	// Now the real jump instruction
-	0xE9, 0xEF, 0xBE, 0xAD, 0xDE
-};
-
-#define kInstructions	0
-#define kJumpAddress    kInstructions + kOriginalInstructionsSize + 1
-#endif
-
-
-#define	kAllocateHigh		1
-#define	kAllocateNormal		0
-
-/**************************
-*	
-*	Data Types
-*	
-**************************/
-#pragma mark	-
-#pragma mark	(Data Types)
-
-typedef	struct	{
-	char	instructions[sizeof(kIslandTemplate)];
-	int		allocatedHigh;
-}	BranchIsland;
-
-/**************************
-*	
-*	Funky Protos
-*	
-**************************/
-#pragma mark	-
-#pragma mark	(Funky Protos)
-
-	mach_error_t
-allocateBranchIsland(
-		BranchIsland	**island,
-		int				allocateHigh );
-
-	mach_error_t
-freeBranchIsland(
-		BranchIsland	*island );
-
-#if defined(__ppc__) || defined(__POWERPC__)
-	mach_error_t
-setBranchIslandTarget(
-		BranchIsland	*island,
-		const void		*branchTo,
-		long			instruction );
-#endif 
-
-#if defined(__i386__)
-mach_error_t
-setBranchIslandTarget_i386(
-						   BranchIsland	*island,
-						   const void		*branchTo,
-						   char*			instructions );
-void 
-atomic_mov64(
-		uint64_t *targetAddress,
-		uint64_t value );
-
-	static Boolean 
-eatKnownInstructions( 
-	unsigned char	*code, 
-	uint64_t		*newInstruction,
-	int				*howManyEaten, 
-	char			*originalInstructions );
-#endif
-
-/*******************************************************************************
-*	
-*	Interface
-*	
-*******************************************************************************/
-#pragma mark	-
-#pragma mark	(Interface)
-
-	mach_error_t
-mach_override(
-		char *originalFunctionSymbolName,
-		const char *originalFunctionLibraryNameHint,
-		const void *overrideFunctionAddress,
-		void **originalFunctionReentryIsland )
-{
-	assert( originalFunctionSymbolName );
-	assert( strlen( originalFunctionSymbolName ) );
-	assert( overrideFunctionAddress );
-	
-	//	Lookup the original function's code pointer.
-	long	*originalFunctionPtr;
-	if( originalFunctionLibraryNameHint )
-		_dyld_lookup_and_bind_with_hint(
-			originalFunctionSymbolName,
-			originalFunctionLibraryNameHint,
-			(void*) &originalFunctionPtr,
-			NULL );
-	else
-		_dyld_lookup_and_bind(
-			originalFunctionSymbolName,
-			(void*) &originalFunctionPtr,
-			NULL );
-	
-	return mach_override_ptr( originalFunctionPtr, overrideFunctionAddress,
-		originalFunctionReentryIsland );
-}
-
-    mach_error_t
-mach_override_ptr(
-	void *originalFunctionAddress,
-    const void *overrideFunctionAddress,
-    void **originalFunctionReentryIsland )
-{
-	assert( originalFunctionAddress );
-	assert( overrideFunctionAddress );
-	
-	long	*originalFunctionPtr = (long*) originalFunctionAddress;
-	mach_error_t	err = err_none;
-	
-#if defined(__ppc__) || defined(__POWERPC__)
-	//	Ensure first instruction isn't 'mfctr'.
-	#define	kMFCTRMask			0xfc1fffff
-	#define	kMFCTRInstruction	0x7c0903a6
-	
-	long	originalInstruction = *originalFunctionPtr;
-	if( !err && ((originalInstruction & kMFCTRMask) == kMFCTRInstruction) )
-		err = err_cannot_override;
-#elif defined (__i386__)
-	int eatenCount = 0;
-	char originalInstructions[kOriginalInstructionsSize];
-	uint64_t jumpRelativeInstruction = 0; // JMP
-
-	Boolean overridePossible = eatKnownInstructions ((unsigned char *)originalFunctionPtr, 
-										&jumpRelativeInstruction, &eatenCount, originalInstructions);
-	if (eatenCount > kOriginalInstructionsSize) {
-		//printf ("Too many instructions eaten\n");
-		overridePossible = false;
-	}
-	if (!overridePossible) err = err_cannot_override;
-#endif
-	
-	//	Make the original function implementation writable.
-	if( !err ) {
-		err = vm_protect( mach_task_self(),
-				(vm_address_t) originalFunctionPtr,
-				sizeof(long), false, (VM_PROT_ALL | VM_PROT_COPY) );
-		if( err )
-			err = vm_protect( mach_task_self(),
-					(vm_address_t) originalFunctionPtr, sizeof(long), false,
-					(VM_PROT_DEFAULT | VM_PROT_COPY) );
-	}
-	
-	//	Allocate and target the escape island to the overriding function.
-	BranchIsland	*escapeIsland = NULL;
-	if( !err )	
-		err = allocateBranchIsland( &escapeIsland, kAllocateHigh );
-	
-#if defined(__ppc__) || defined(__POWERPC__)
-	if( !err )
-		err = setBranchIslandTarget( escapeIsland, overrideFunctionAddress, 0 );
-
-	//	Build the branch absolute instruction to the escape island.
-	long	branchAbsoluteInstruction = 0; // Set to 0 just to silence warning.
-	if( !err ) {
-		long escapeIslandAddress = ((long) escapeIsland) & 0x3FFFFFF;
-		branchAbsoluteInstruction = 0x48000002 | escapeIslandAddress;
-	}
-#elif defined (__i386__)
-	if( !err )
-		err = setBranchIslandTarget_i386( escapeIsland, overrideFunctionAddress, 0 );
- 
-	// Build the jump relative instruction to the escape island
-	if (!err) {
-		int32_t addressOffset = ((int32_t)escapeIsland - (int32_t)originalFunctionPtr - 5);
-		addressOffset = OSSwapInt32(addressOffset);
-		
-		jumpRelativeInstruction |= 0xE900000000000000LL; 
-		jumpRelativeInstruction |= ((uint64_t)addressOffset & 0xffffffff) << 24;
-		jumpRelativeInstruction = OSSwapInt64(jumpRelativeInstruction);		
-	}
-#endif
-	
-	//	Optionally allocate & return the reentry island.
-	BranchIsland	*reentryIsland = NULL;
-	if( !err && originalFunctionReentryIsland ) {
-		err = allocateBranchIsland( &reentryIsland, kAllocateNormal );
-		if( !err )
-			*originalFunctionReentryIsland = reentryIsland;
-	}
-	
-#if defined(__ppc__) || defined(__POWERPC__)	
-	//	Atomically:
-	//	o If the reentry island was allocated:
-	//		o Insert the original instruction into the reentry island.
-	//		o Target the reentry island at the 2nd instruction of the
-	//		  original function.
-	//	o Replace the original instruction with the branch absolute.
-	if( !err ) {
-		int escapeIslandEngaged = false;
-		do {
-			if( reentryIsland )
-				err = setBranchIslandTarget( reentryIsland,
-						(void*) (originalFunctionPtr+1), originalInstruction );
-			if( !err ) {
-				escapeIslandEngaged = CompareAndSwap( originalInstruction,
-										branchAbsoluteInstruction,
-										(UInt32*)originalFunctionPtr );
-				if( !escapeIslandEngaged ) {
-					//	Someone replaced the instruction out from under us,
-					//	re-read the instruction, make sure it's still not
-					//	'mfctr' and try again.
-					originalInstruction = *originalFunctionPtr;
-					if( (originalInstruction & kMFCTRMask) == kMFCTRInstruction)
-						err = err_cannot_override;
-				}
-			}
-		} while( !err && !escapeIslandEngaged );
-	}
-#elif defined (__i386__)
-	// Atomically:
-	//	o If the reentry island was allocated:
-	//		o Insert the original instructions into the reentry island.
-	//		o Target the reentry island at the first non-replaced 
-	//        instruction of the original function.
-	//	o Replace the original first instructions with the jump relative.
-	//
-	// Note that on i386, we do not support someone else changing the code under our feet
-	if ( !err ) {
-		if( reentryIsland )
-			err = setBranchIslandTarget_i386( reentryIsland,
-										 (void*) ((char *)originalFunctionPtr+eatenCount), originalInstructions );
-		if ( !err )
-			atomic_mov64((uint64_t *)originalFunctionPtr, jumpRelativeInstruction);
-	}
-#endif
-	
-	//	Clean up on error.
-	if( err ) {
-		if( reentryIsland )
-			freeBranchIsland( reentryIsland );
-		if( escapeIsland )
-			freeBranchIsland( escapeIsland );
-	}
-	
-	return err;
-}
-
-/*******************************************************************************
-*	
-*	Implementation
-*	
-*******************************************************************************/
-#pragma mark	-
-#pragma mark	(Implementation)
-
-/***************************************************************************//**
-	Implementation: Allocates memory for a branch island.
-	
-	@param	island			<-	The allocated island.
-	@param	allocateHigh	->	Whether to allocate the island at the end of the
-								address space (for use with the branch absolute
-								instruction).
-	@result					<-	mach_error_t
-
-	***************************************************************************/
-
-	mach_error_t
-allocateBranchIsland(
-		BranchIsland	**island,
-		int				allocateHigh )
-{
-	assert( island );
-	
-	mach_error_t	err = err_none;
-	
-	if( allocateHigh ) {
-		vm_size_t pageSize;
-		err = host_page_size( mach_host_self(), &pageSize );
-		if( !err ) {
-			assert( sizeof( BranchIsland ) <= pageSize );
-			vm_address_t first = 0xfeffffff;
-			vm_address_t last = 0xfe000000 + pageSize;
-			vm_address_t page = first;
-			int allocated = 0;
-			vm_map_t task_self = mach_task_self();
-			
-			while( !err && !allocated && page != last ) {
-				err = vm_allocate( task_self, &page, pageSize, 0 );
-				if( err == err_none )
-					allocated = 1;
-				else if( err == KERN_NO_SPACE ) {
-					page += pageSize;
-					err = err_none;
-				}
-			}
-			if( allocated )
-				*island = (void*) page;
-			else if( !allocated && !err )
-				err = KERN_NO_SPACE;
-		}
-	} else {
-		void *block = malloc( sizeof( BranchIsland ) );
-		if( block )
-			*island = block;
-		else
-			err = KERN_NO_SPACE;
-	}
-	if( !err )
-		(**island).allocatedHigh = allocateHigh;
-	
-	return err;
-}
-
-/***************************************************************************//**
-	Implementation: Deallocates memory for a branch island.
-	
-	@param	island	->	The island to deallocate.
-	@result			<-	mach_error_t
-
-	***************************************************************************/
-
-	mach_error_t
-freeBranchIsland(
-		BranchIsland	*island )
-{
-	assert( island );
-	assert( (*(long*)&island->instructions[0]) == kIslandTemplate[0] );
-	assert( island->allocatedHigh );
-	
-	mach_error_t	err = err_none;
-	
-	if( island->allocatedHigh ) {
-		vm_size_t pageSize;
-		err = host_page_size( mach_host_self(), &pageSize );
-		if( !err ) {
-			assert( sizeof( BranchIsland ) <= pageSize );
-			err = vm_deallocate(
-					mach_task_self(),
-					(vm_address_t) island, pageSize );
-		}
-	} else {
-		free( island );
-	}
-	
-	return err;
-}
-
-/***************************************************************************//**
-	Implementation: Sets the branch island's target, with an optional
-	instruction.
-	
-	@param	island		->	The branch island to insert target into.
-	@param	branchTo	->	The address of the target.
-	@param	instruction	->	Optional instruction to execute prior to branch. Set
-							to zero for nop.
-	@result				<-	mach_error_t
-
-	***************************************************************************/
-#if defined(__ppc__) || defined(__POWERPC__)
-	mach_error_t
-setBranchIslandTarget(
-		BranchIsland	*island,
-		const void		*branchTo,
-		long			instruction )
-{
-	//	Copy over the template code.
-    bcopy( kIslandTemplate, island->instructions, sizeof( kIslandTemplate ) );
-    
-    //	Fill in the address.
-    ((short*)island->instructions)[kAddressLo] = ((long) branchTo) & 0x0000FFFF;
-    ((short*)island->instructions)[kAddressHi]
-    	= (((long) branchTo) >> 16) & 0x0000FFFF;
-    
-    //	Fill in the (optional) instuction.
-    if( instruction != 0 ) {
-        ((short*)island->instructions)[kInstructionLo]
-        	= instruction & 0x0000FFFF;
-        ((short*)island->instructions)[kInstructionHi]
-        	= (instruction >> 16) & 0x0000FFFF;
-    }
-    
-    //MakeDataExecutable( island->instructions, sizeof( kIslandTemplate ) );
-	msync( island->instructions, sizeof( kIslandTemplate ), MS_INVALIDATE );
-    
-    return err_none;
-}
-#endif 
-
-#if defined(__i386__)
-	mach_error_t
-setBranchIslandTarget_i386(
-	BranchIsland	*island,
-	const void		*branchTo,
-	char*			instructions )
-{
-
-	//	Copy over the template code.
-    bcopy( kIslandTemplate, island->instructions, sizeof( kIslandTemplate ) );
-    
-	// copy original instructions
-	if (instructions) {
-		bcopy (instructions, island->instructions + kInstructions, kOriginalInstructionsSize);
-	}
-	
-    //	Fill in the address.
-	int32_t addressOffset = (char *)branchTo - (island->instructions + kJumpAddress + 4);
-	*((int32_t *)(island->instructions + kJumpAddress)) = addressOffset; 
-	
-    //MakeDataExecutable( island->instructions, sizeof( kIslandTemplate ) );
-	msync( island->instructions, sizeof( kIslandTemplate ), MS_INVALIDATE );
-
-    return err_none;
-}
-#endif
-
-
-#if defined (__i386__)
-// simplistic instruction matching
-typedef struct {
-	unsigned int length; // max 15
-	unsigned char mask[15]; // sequence of bytes in memory order
-	unsigned char constraint[15]; // sequence of bytes in memory order
-}	AsmInstructionMatch;
-
-static AsmInstructionMatch possibleInstructions[] = {
-	{ 0x1, {0xFF}, {0x90} },							// nop
-	{ 0x1, {0xFF}, {0x55} },							// push %esp
-	{ 0x2, {0xFF, 0xFF}, {0x89, 0xE5} },				// mov %esp,%ebp
-	{ 0x1, {0xFF}, {0x53} },							// push %ebx
-	{ 0x3, {0xFF, 0xFF, 0x00}, {0x83, 0xEC, 0x00} },	// sub 0x??, %esp
-	{ 0x1, {0xFF}, {0x57} },							// push %edi
-	{ 0x1, {0xFF}, {0x56} },							// push %esi
-	{ 0x0 }
-};
-
-static Boolean codeMatchesInstruction(unsigned char *code, AsmInstructionMatch* instruction) 
-{
-	Boolean match = true;
-	
-	int i;
-	for (i=0; i<instruction->length; i++) {
-		unsigned char mask = instruction->mask[i];
-		unsigned char constraint = instruction->constraint[i];
-		unsigned char codeValue = code[i];
-		match = ((codeValue & mask) == constraint);
-		if (!match) break;
-	}
-	
-	return match;
-}
-
-	static Boolean 
-eatKnownInstructions( 
-	unsigned char *code, 
-	uint64_t* newInstruction,
-	int* howManyEaten, 
-	char* originalInstructions )
-{
-	Boolean allInstructionsKnown = true;
-	int totalEaten = 0;
-	unsigned char* ptr = code;
-	int remainsToEat = 5; // a JMP instruction takes 5 bytes
-	
-	if (howManyEaten) *howManyEaten = 0;
-	while (remainsToEat > 0) {
-		Boolean curInstructionKnown = false;
-		
-		// See if instruction matches one  we know
-		AsmInstructionMatch* curInstr = possibleInstructions;
-		do {
-			if (curInstructionKnown = codeMatchesInstruction(ptr, curInstr)) break;
-			curInstr++;
-		} while (curInstr->length > 0);
-		
-		// if all instruction matches failed, we don't know current instruction then, stop here
-		if (!curInstructionKnown) { 
-			allInstructionsKnown = false;
-			break;
-		}
-		
-		// At this point, we've matched curInstr
-		int eaten = curInstr->length;
-		ptr += eaten;
-		remainsToEat -= eaten;
-		totalEaten += eaten;
-	}
-
-
-	if (howManyEaten) *howManyEaten = totalEaten;
-
-	if (originalInstructions) {
-		Boolean enoughSpaceForOriginalInstructions = (totalEaten < kOriginalInstructionsSize);
-		
-		if (enoughSpaceForOriginalInstructions) {
-			memset(originalInstructions, 0x90 /* NOP */, kOriginalInstructionsSize); // fill instructions with NOP
-			bcopy(code, originalInstructions, totalEaten);
-		} else {
-			// printf ("Not enough space in island to store original instructions. Adapt the island definition and kOriginalInstructionsSize\n");
-			return false;
-		}
-	}
-	
-	if (allInstructionsKnown) {
-		// save last 3 bytes of first 64bits of codre we'll replace
-		uint64_t currentFirst64BitsOfCode = *((uint64_t *)code);
-		currentFirst64BitsOfCode = OSSwapInt64(currentFirst64BitsOfCode); // back to memory representation
-		currentFirst64BitsOfCode &= 0x0000000000FFFFFFLL; 
-		
-		// keep only last 3 instructions bytes, first 5 will be replaced by JMP instr
-		*newInstruction &= 0xFFFFFFFFFF000000LL; // clear last 3 bytes
-		*newInstruction |= (currentFirst64BitsOfCode & 0x0000000000FFFFFFLL); // set last 3 bytes
-	}
-
-	return allInstructionsKnown;
-}
-
-asm(		
-			".text;"
-			".align 2, 0x90;"
-			".globl _atomic_mov64;"
-			"_atomic_mov64:;"
-			"	pushl %ebp;"
-			"	movl %esp, %ebp;"
-			"	pushl %esi;"
-			"	pushl %ebx;"
-			"	pushl %ecx;"
-			"	pushl %eax;"
-			"	pushl %edx;"
-	
-			// atomic push of value to an address
-			// we use cmpxchg8b, which compares content of an address with 
-			// edx:eax. If they are equal, it atomically puts 64bit value 
-			// ecx:ebx in address. 
-			// We thus put contents of address in edx:eax to force ecx:ebx
-			// in address
-			"	mov		8(%ebp), %esi;"  // esi contains target address
-			"	mov		12(%ebp), %ebx;"
-			"	mov		16(%ebp), %ecx;" // ecx:ebx now contains value to put in target address
-			"	mov		(%esi), %eax;"
-			"	mov		4(%esi), %edx;"  // edx:eax now contains value currently contained in target address
-			"	lock; cmpxchg8b	(%esi);" // atomic move.
-			
-			// restore registers
-			"	popl %edx;"
-			"	popl %eax;"
-			"	popl %ecx;"
-			"	popl %ebx;"
-			"	popl %esi;"
-			"	popl %ebp;"
-			"	ret"
-);
-
-#endif
diff --git a/dports/lang/erlang/files/mach_override.h b/dports/lang/erlang/files/mach_override.h
deleted file mode 100644
index c07a9af..0000000
--- a/dports/lang/erlang/files/mach_override.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
-	mach_override.h
-		Copyright (c) 2003-2005 Jonathan 'Wolf' Rentzsch: <http://rentzsch.com>
-		Some rights reserved: <http://creativecommons.org/licenses/by/2.0/>
-
-	***************************************************************************/
-
-/***************************************************************************//**
-	@mainpage	mach_override
-	@author		Jonathan 'Wolf' Rentzsch: <http://rentzsch.com>
-	
-	This package, coded in C to the Mach API, allows you to override ("patch")
-	program- and system-supplied functions at runtime. You can fully replace
-	functions with your implementations, or merely head- or tail-patch the
-	original implementations.
-	
-	Use it by #include'ing mach_override.h from your .c, .m or .mm file(s).
-	
-	@todo	Discontinue use of Carbon's MakeDataExecutable() and
-			CompareAndSwap() calls and start using the Mach equivalents, if they
-			exist. If they don't, write them and roll them in. That way, this
-			code will be pure Mach, which will make it easier to use everywhere.
-			Update: MakeDataExecutable() has been replaced by
-			msync(MS_INVALIDATE). There is an OSCompareAndSwap in libkern, but
-			I'm currently unsure if I can link against it. May have to roll in
-			my own version...
-	@todo	Stop using an entire 4K high-allocated VM page per 28-byte escape
-			branch island. Done right, this will dramatically speed up escape
-			island allocations when they number over 250. Then again, if you're
-			overriding more than 250 functions, maybe speed isn't your main
-			concern...
-	@todo	Add detection of: b, bl, bla, bc, bcl, bcla, bcctrl, bclrl
-			first-instructions. Initially, we should refuse to override
-			functions beginning with these instructions. Eventually, we should
-			dynamically rewrite them to make them position-independent.
-	@todo	Write mach_unoverride(), which would remove an override placed on a
-			function. Must be multiple-override aware, which means an almost
-			complete rewrite under the covers, because the target address can't
-			be spread across two load instructions like it is now since it will
-			need to be atomically updatable.
-	@todo	Add non-rentry variants of overrides to test_mach_override.
-
-	***************************************************************************/
-
-#ifndef		_mach_override_
-#define		_mach_override_
-
-#include <sys/types.h>
-#include <mach/error.h>
-
-#ifdef	__cplusplus
-	extern	"C"	{
-#endif
-
-/**
-	Returned if the function to be overrided begins with a 'mfctr' instruction.
-*/
-#define	err_cannot_override	(err_local|1)
-
-/***************************************************************************//**
-	Dynamically overrides the function implementation referenced by
-	originalFunctionSymbolName with the implentation pointed to by
-	overrideFunctionAddress. Optionally returns a pointer to a "reentry island"
-	which, if jumped to, will resume the original implementation.
-	
-	@param	originalFunctionSymbolName		->	Required symbol name of the
-												function to override (with
-												overrideFunctionAddress).
-												Remember, C function name
-												symbols are prepended with an
-												underscore.
-	@param	originalFunctionLibraryNameHint	->	Optional name of the library
-												which contains
-												originalFunctionSymbolName. Can
-												be NULL, but this may result in
-												the wrong function being
-												overridden and/or a crash.
-	@param	overrideFunctionAddress			->	Required address to the
-												overriding function.
-	@param	originalFunctionReentryIsland	<-	Optional pointer to pointer to
-												the reentry island. Can be NULL.
-	@result									<-	err_cannot_override if the
-												original function's
-												implementation begins with the
-												'mfctr' instruction.
-
-	***************************************************************************/
-	 
-    mach_error_t
-mach_override(
-    char *originalFunctionSymbolName,
-    const char *originalFunctionLibraryNameHint,
-    const void *overrideFunctionAddress,
-    void **originalFunctionReentryIsland );
-
-/************************************************************************************//**
-	Dynamically overrides the function implementation referenced by
-	originalFunctionAddress with the implentation pointed to by overrideFunctionAddress.
-	Optionally returns a pointer to a "reentry island" which, if jumped to, will resume
-	the original implementation.
-	
-	@param	originalFunctionAddress			->	Required address of the function to
-												override (with overrideFunctionAddress).
-	@param	overrideFunctionAddress			->	Required address to the overriding
-												function.
-	@param	originalFunctionReentryIsland	<-	Optional pointer to pointer to the
-												reentry island. Can be NULL.
-	@result									<-	err_cannot_override if the original
-												function's implementation begins with
-												the 'mfctr' instruction.
-
-	************************************************************************************/
-
-    mach_error_t
-mach_override_ptr(
-	void *originalFunctionAddress,
-    const void *overrideFunctionAddress,
-    void **originalFunctionReentryIsland );
- 
-#ifdef	__cplusplus
-	}
-#endif
-#endif	//	_mach_override_
\ No newline at end of file
diff --git a/dports/lang/erlang/files/patch-erts_configure.diff b/dports/lang/erlang/files/patch-erts_configure.diff
new file mode 100644
index 0000000..60d5e7c
--- /dev/null
+++ b/dports/lang/erlang/files/patch-erts_configure.diff
@@ -0,0 +1,220 @@
+--- erts/configure.orig	2009-04-21 11:33:14.000000000 -0400
++++ erts/configure	2009-04-21 10:49:56.000000000 -0400
+@@ -19528,6 +19742,91 @@
+   	esac
+   fi
+ fi
++
++case $ARCH-$OPSYS in
++	amd64-darwin*|x86-darwin*)
++		{ $as_echo "$as_me:$LINENO: checking For modern (leopard) style mcontext_t" >&5
++$as_echo_n "checking For modern (leopard) style mcontext_t... " >&6; }
++		cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h.  */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h.  */
++
++				#include <stdlib.h>
++				#include <sys/types.h>
++				#include <unistd.h>
++				#include <mach/mach.h>
++				#include <pthread.h>
++				#include <machine/signal.h>
++				#include <ucontext.h>
++
++int
++main ()
++{
++
++				#if defined(__APPLE__) && defined(__MACH__) && !defined(__DARWIN__)
++				#define __DARWIN__ 1
++				#endif
++
++				#ifndef __DARWIN__
++				#error inpossible
++				#else
++
++    				mcontext_t mc = NULL;
++    				int x = mc->__fs.__fpu_mxcsr;
++
++				#endif
++
++  ;
++  return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++  *) ac_try_echo=$ac_try;;
++esac
++eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++$as_echo "$ac_try_echo") >&5
++  (eval "$ac_compile") 2>conftest.er1
++  ac_status=$?
++  grep -v '^ *+' conftest.er1 >conftest.err
++  rm -f conftest.er1
++  cat conftest.err >&5
++  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++  (exit $ac_status); } && {
++	 test -z "$ac_c_werror_flag" ||
++	 test ! -s conftest.err
++       } && test -s conftest.$ac_objext; then
++  darwin_mcontext_leopard=yes
++else
++  $as_echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++	darwin_mcontext_leopard=no
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++				if test X"$darwin_mcontext_leopard" = X"yes"; then
++
++cat >>confdefs.h <<\_ACEOF
++#define DARWIN_MODERN_MCONTEXT /**/
++_ACEOF
++
++				   { $as_echo "$as_me:$LINENO: result: yes" >&5
++$as_echo "yes" >&6; }
++				else
++				   { $as_echo "$as_me:$LINENO: result: no" >&5
++$as_echo "no" >&6; }
++				fi
++		;;
++	*)
++		darwin_mcontext_leopard=no
++		;;
++esac
+ if test X${enable_fp_exceptions} = Xauto ; then
+    if test X${enable_hipe} = Xyes; then
+       enable_fp_exceptions=yes
+@@ -19920,6 +20219,7 @@
+     regs[PT_FPSCR] = 0x80|0x40|0x10;	/* VE, OE, ZE; not UE or XE */
+ #endif
+ #elif defined(__DARWIN__)
++#if defined(DARWIN_MODERN_MCONTEXT)
+ #if defined(__x86_64__)
+      mcontext_t mc = uc->uc_mcontext;
+     struct __darwin_x86_float_state64 *fpstate = &mc->__fs;
+@@ -19935,6 +20235,23 @@
+     mc->ss.srr0 += 4;
+     mc->fs.fpscr = 0x80|0x40|0x10;
+ #endif
++#else
++#if defined(__x86_64__)
++    mcontext_t mc = uc->uc_mcontext;
++    struct x86_float_state64_t *fpstate = &mc->fs;
++    fpstate->fpu_mxcsr = 0x1F80;
++    *(unsigned short *)&fpstate->fpu_fsw &= ~0xFF;
++#elif defined(__i386__)
++    mcontext_t mc = uc->uc_mcontext;
++    x86_float_state32_t	*fpstate = &mc->fs;
++    fpstate->fpu_mxcsr = 0x1F80;
++    *(unsigned short *)&fpstate->fpu_fsw &= ~0xFF;
++#elif defined(__ppc__)
++    mcontext_t mc = uc->uc_mcontext;
++    mc->ss.srr0 += 4;
++    mc->fs.fpscr = 0x80|0x40|0x10;
++#endif
++#endif
+ #elif defined(__FreeBSD__) && defined(__x86_64__)
+     mcontext_t *mc = &uc->uc_mcontext;
+     struct savefpu *savefpu = (struct savefpu*)&mc->mc_fpstate;
+@@ -20069,93 +20400,6 @@
+     fi
+ fi
+ 
+-case $ARCH-$OPSYS in
+-	amd64-darwin*|x86-darwin*)
+-		echo "$as_me:$LINENO: checking For modern (leopard) style mcontext_t" >&5
+-echo $ECHO_N "checking For modern (leopard) style mcontext_t... $ECHO_C" >&6
+-		cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-
+-				#include <stdlib.h>
+-				#include <sys/types.h>
+-				#include <unistd.h>
+-				#include <mach/mach.h>
+-				#include <pthread.h>
+-				#include <machine/signal.h>
+-				#include <ucontext.h>
+-
+-int
+-main ()
+-{
+-
+-				#if defined(__APPLE__) && defined(__MACH__) && !defined(__DARWIN__)
+-				#define __DARWIN__ 1
+-				#endif
+-
+-				#ifndef __DARWIN__
+-				#error inpossible
+-				#else
+-
+-    				mcontext_t mc = NULL;
+-    				int x = mc->__fs.__fpu_mxcsr;
+-
+-				#endif
+-
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>conftest.er1
+-  ac_status=$?
+-  grep -v '^ *+' conftest.er1 >conftest.err
+-  rm -f conftest.er1
+-  cat conftest.err >&5
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-	 { ac_try='test -z "$ac_c_werror_flag"
+-			 || test ! -s conftest.err'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; } &&
+-	 { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  darwin_mcontext_leopard=yes
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-darwin_mcontext_leopard=no
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-				if test X"$darwin_mcontext_leopard" = X"yes"; then
+-
+-cat >>confdefs.h <<\_ACEOF
+-#define DARWIN_MODERN_MCONTEXT
+-_ACEOF
+-
+-				   echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
+-				else
+-				   echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-				fi
+-		;;
+-	*)
+-		darwin_mcontext_leopard=no
+-		;;
+-esac
+ 
+ 
+ 
