diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json
index 9dadd49c96edab8f088f8f2fecf85a459598cc95..2480ff9a2455fe6cbdbe12d323b471e06f4ecf78 100644
--- a/Godeps/Godeps.json
+++ b/Godeps/Godeps.json
@@ -17,8 +17,8 @@
 		},
 		{
 			"ImportPath": "github.com/ethereum/ethash",
-			"Comment": "v23.1-192-g4faa4cb",
-			"Rev": "4faa4cb42ae7f0ea6b4aa2c90cb9170fdcbb915a"
+			"Comment": "v23.1-195-g4d50db9",
+			"Rev": "4d50db90d8bb5f2fae357570366cb8c657a4ddfc"
 		},
 		{
 			"ImportPath": "github.com/howeyc/fsnotify",
diff --git a/Godeps/_workspace/src/github.com/ethereum/ethash/ethash.go b/Godeps/_workspace/src/github.com/ethereum/ethash/ethash.go
index 1ee98076535957920b4c75695265fdc7976b2fd6..5b94711c4b560706c615b8b978c89d863bd7befd 100644
--- a/Godeps/_workspace/src/github.com/ethereum/ethash/ethash.go
+++ b/Godeps/_workspace/src/github.com/ethereum/ethash/ethash.go
@@ -127,12 +127,12 @@ func (l *Light) Verify(block pow.Block) bool {
 	return h256ToHash(ret.result).Big().Cmp(target) <= 0
 }
 
-func h256ToHash(in C.struct_ethash_h256) common.Hash {
+func h256ToHash(in C.ethash_h256_t) common.Hash {
 	return *(*common.Hash)(unsafe.Pointer(&in.b))
 }
 
-func hashToH256(in common.Hash) C.struct_ethash_h256 {
-	return C.struct_ethash_h256{b: *(*[32]C.uint8_t)(unsafe.Pointer(&in[0]))}
+func hashToH256(in common.Hash) C.ethash_h256_t {
+	return C.ethash_h256_t{b: *(*[32]C.uint8_t)(unsafe.Pointer(&in[0]))}
 }
 
 func (l *Light) getCache(blockNum uint64) *cache {
diff --git a/Godeps/_workspace/src/github.com/ethereum/ethash/ethashc.go b/Godeps/_workspace/src/github.com/ethereum/ethash/ethashc.go
index 9c208b3f2316a981d9843a81be87b62f945915c1..25863828fbaad937d1052a32f6d90eef48a4b07e 100644
--- a/Godeps/_workspace/src/github.com/ethereum/ethash/ethashc.go
+++ b/Godeps/_workspace/src/github.com/ethereum/ethash/ethashc.go
@@ -2,6 +2,7 @@ package ethash
 
 /*
 #cgo CFLAGS: -std=gnu99 -Wall
+#cgo windows CFLAGS: -mno-stack-arg-probe
 #cgo LDFLAGS: -lm
 
 #include "src/libethash/internal.c"
diff --git a/Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/io.h b/Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/io.h
index 26c82f11112e0bbf00fabfab24775673b855afef..4fe46d75663df12160aa4d8b8dc65ef1d9a27258 100644
--- a/Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/io.h
+++ b/Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/io.h
@@ -49,7 +49,7 @@ enum ethash_io_rc {
 
 // small hack for windows. I don't feel I should use va_args and forward just
 // to have this one function properly cross-platform abstracted
-#if defined(_WIN32)
+#if defined(_WIN32) && !defined(__GNUC__)
 #define snprintf(...) sprintf_s(__VA_ARGS__)
 #endif
 
diff --git a/Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/util.h b/Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/util.h
index c5fc6e55b5fc171e9e600a99d7f9d833a8ca95c0..0d2307f3d27a1258131ff44044e7972508e97539 100644
--- a/Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/util.h
+++ b/Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/util.h
@@ -26,11 +26,11 @@
 extern "C" {
 #endif
 
-#ifdef _MSC_VER
+//#ifdef _MSC_VER
 void debugf(char const* str, ...);
-#else
-#define debugf printf
-#endif
+//#else
+//#define debugf printf
+//#endif
 
 static inline uint32_t min_u32(uint32_t a, uint32_t b)
 {