--- Config.pm_orig	Sat Apr 17 12:27:02 2010
+++ Config.pm	Sat Apr 17 16:05:28 2010
@@ -34,8 +34,10 @@
     quadtype
     uquadtype
     d_casti32
+    dlltool
 );
 my $compiler_env_initialized;
+my $gcc_pre = '';
 
 use Config ();
 my $CONFIG_OBJ = tied %Config::Config;
@@ -98,12 +100,16 @@
 	}
 	elsif ($^O eq "MSWin32" && (_gcc_requested() || !ActiveState::Path::find_prog(_orig_conf("cc")))) {
 	    my $gcc = _find_prog("gcc");
+          if(!$gcc) {
+            $gcc_pre = 'x86_64-w64-mingw32-';
+            $gcc = _find_prog("${gcc_pre}gcc");
+          }
 	    if (!$gcc && _install_mingw($key)) {
 		$gcc = _find_prog("gcc");
 	    }
 	    if ($gcc) {
 		# assume MinGW or similar is available
-		$gcc = _get_short_path_name($gcc);
+		unless($gcc_pre) {$gcc = _get_short_path_name($gcc);}
 		$gcc =~ s,\\,/,g;
 		my($mingw) = $gcc =~ m,^(.*)/bin/gcc\.exe$,;
 		if (defined $mingw) {
@@ -134,7 +140,7 @@
 		    # New: "-lfoo -lbar"
 		    my @libs = split / +/, _orig_conf($key);
 		    # Filter out empty prefix and oldnames.lib
-		    @libs = grep {$_ && $_ ne "oldnames.lib"} @libs;
+		    @libs = grep {$_ && $_ ne "oldnames.lib" && $_ ne "bufferoverflowU.lib"} @libs;
 		    # Remove '.lib' extension and add '-l' prefix
 		    s/(.*)\.lib$/-l$1/ for @libs;
 		    _override($key, join(' ', @libs));
@@ -150,8 +156,8 @@
 		_override("cpp",       "$gcc -E");
 		_override("cpprun",    "$gcc -E");
 		_override("cppminus",  "-");
-		_override("ar",        _find_prog("ar"));
-		_override("ld",        _find_prog("g++"));
+		_override("ar",        _find_prog("${gcc_pre}ar"));
+		_override("ld",        _find_prog("${gcc_pre}g++"));
 		_override("_a",        ".a");
 		_override("_o",        ".o");
 		_override("obj_ext",   ".o");
