view src/msvc-gnutls-1.patch @ 3080:c0222ce8760d

[MSVC] enable MSVC compilation - cc-msvc/clgcc/clg++: make WinXP SP3 the default target - set CCAS=gcc by default
author Michael Goffioul <michael.goffioul@gmail.com>
date Sun, 23 Jun 2013 23:33:40 -0400
parents
children 55c51f5ec98d
line wrap: on
line source

diff -ur gnutls-3.1.4-orig/extra/Makefile.am gnutls-3.1.4/extra/Makefile.am
--- gnutls-3.1.4-orig/extra/Makefile.am	2012-09-25 10:46:28 -0400
+++ gnutls-3.1.4/extra/Makefile.am	2013-06-23 14:17:33 -0400
@@ -45,7 +45,9 @@
 
 # OpenSSL
 
-libgnutls_openssl_la_LDFLAGS = -no-undefined
+libgnutls_openssl_la_LDFLAGS = \
+	-no-undefined \
+	-export-symbols-regex '^(SSL|SSLv3|SSLv23|TLSv1|OpenSSL|X509|BIO|ERR|RAND|MD5|RIPEMD160)_.*'
 
 if ENABLE_OPENSSL
 lib_LTLIBRARIES = libgnutls-openssl.la
@@ -70,7 +72,7 @@
 libgnutls_openssl_la_LDFLAGS += \
 	-Wl,--output-def,libgnutls-openssl-$(DLL_VERSION).def
 libgnutls-openssl-$(DLL_VERSION).def: libgnutls-openssl.la
-defexec_DATA += libgnutls-openssl-$(DLL_VERSION).def
+#defexec_DATA += libgnutls-openssl-$(DLL_VERSION).def
 endif
 endif
 
diff -ur gnutls-3.1.4-orig/lib/Makefile.am gnutls-3.1.4/lib/Makefile.am
--- gnutls-3.1.4-orig/lib/Makefile.am	2012-10-02 14:03:02 -0400
+++ gnutls-3.1.4/lib/Makefile.am	2013-06-23 14:17:21 -0400
@@ -27,7 +27,7 @@
 
 localedir = $(datadir)/locale
 
-AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS)
+AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS) -DGNUTLS_BUILDING
 AM_CPPFLAGS = \
 	-DLOCALEDIR=\"$(localedir)\"		\
 	-I$(srcdir)/../gl			\
@@ -151,7 +151,7 @@
 libgnutls_la_LDFLAGS += -Wl,--output-def,libgnutls-$(DLL_VERSION).def
 libgnutls-$(DLL_VERSION).def: libgnutls.la
 defexecdir = $(bindir)
-defexec_DATA = libgnutls-$(DLL_VERSION).def
+#defexec_DATA = libgnutls-$(DLL_VERSION).def
 DISTCLEANFILES += $(defexec_DATA)
 endif
 
@@ -164,7 +164,7 @@
 # C++ library
 
 if ENABLE_CXX
-libgnutlsxx_la_CPPFLAGS = -I$(top_srcdir)/includes -I$(top_builddir)/includes -I$(srcdir)/includes
+libgnutlsxx_la_CPPFLAGS = -I$(top_srcdir)/includes -I$(top_builddir)/includes -I$(srcdir)/includes -DGNUTLSXX_BUILDING
 
 AM_CXXFLAGS = \
 	-I$(srcdir)/includes	\
diff -ur gnutls-3.1.4-orig/lib/accelerated/Makefile.am gnutls-3.1.4/lib/accelerated/Makefile.am
--- gnutls-3.1.4-orig/lib/accelerated/Makefile.am	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/lib/accelerated/Makefile.am	2013-06-23 14:16:47 -0400
@@ -21,6 +21,7 @@
 AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS)
 SUBDIRS = 
 AM_CPPFLAGS = \
+	-DGNUTLS_BUILDING		\
 	-I$(srcdir)/../../gl		\
 	-I$(builddir)/../../gl		\
 	-I$(srcdir)/../includes		\
diff -ur gnutls-3.1.4-orig/lib/accelerated/x86/Makefile.am gnutls-3.1.4/lib/accelerated/x86/Makefile.am
--- gnutls-3.1.4-orig/lib/accelerated/x86/Makefile.am	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/lib/accelerated/x86/Makefile.am	2013-06-23 14:16:47 -0400
@@ -21,6 +21,7 @@
 AM_LIBTOOLFLAGS=--tag=CC
 AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS)
 AM_CPPFLAGS = -I$(srcdir)/../../../gl		\
+	-DGNUTLS_BUILDING		\
 	-I$(builddir)/../../../gl		\
 	-I$(srcdir)/../../includes	\
 	-I$(builddir)/../../includes	\
diff -ur gnutls-3.1.4-orig/lib/accelerated/x86/aes-gcm-padlock.c gnutls-3.1.4/lib/accelerated/x86/aes-gcm-padlock.c
--- gnutls-3.1.4-orig/lib/accelerated/x86/aes-gcm-padlock.c	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/lib/accelerated/x86/aes-gcm-padlock.c	2013-06-23 14:16:47 -0400
@@ -153,14 +153,15 @@
 }
 
 const gnutls_crypto_cipher_st aes_gcm_padlock_struct = {
-  .init = aes_gcm_cipher_init,
-  .setkey = aes_gcm_cipher_setkey,
-  .setiv = aes_gcm_setiv,
-  .encrypt = aes_gcm_encrypt,
-  .decrypt = aes_gcm_decrypt,
-  .deinit = aes_gcm_deinit,
-  .tag = aes_gcm_tag,
-  .auth = aes_gcm_auth,
+  aes_gcm_cipher_init,
+  aes_gcm_cipher_setkey,
+  aes_gcm_setiv,
+  aes_gcm_encrypt,
+  aes_gcm_decrypt,
+  aes_gcm_auth,
+  aes_gcm_tag,
+  aes_gcm_deinit,
+  NULL
 };
 
 #endif
diff -ur gnutls-3.1.4-orig/lib/accelerated/x86/aes-gcm-x86.c gnutls-3.1.4/lib/accelerated/x86/aes-gcm-x86.c
--- gnutls-3.1.4-orig/lib/accelerated/x86/aes-gcm-x86.c	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/lib/accelerated/x86/aes-gcm-x86.c	2013-06-23 14:16:47 -0400
@@ -259,12 +259,13 @@
 }
 
 const gnutls_crypto_cipher_st aes_gcm_struct = {
-  .init = aes_gcm_cipher_init,
-  .setkey = aes_gcm_cipher_setkey,
-  .setiv = aes_gcm_setiv,
-  .encrypt = aes_gcm_encrypt,
-  .decrypt = aes_gcm_decrypt,
-  .deinit = aes_gcm_deinit,
-  .tag = aes_gcm_tag,
-  .auth = aes_gcm_auth,
+  aes_gcm_cipher_init,
+  aes_gcm_cipher_setkey,
+  aes_gcm_setiv,
+  aes_gcm_encrypt,
+  aes_gcm_decrypt,
+  aes_gcm_auth,
+  aes_gcm_tag,
+  aes_gcm_deinit,
+  NULL
 };
diff -ur gnutls-3.1.4-orig/lib/accelerated/x86/aes-padlock.c gnutls-3.1.4/lib/accelerated/x86/aes-padlock.c
--- gnutls-3.1.4-orig/lib/accelerated/x86/aes-padlock.c	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/lib/accelerated/x86/aes-padlock.c	2013-06-23 14:16:47 -0400
@@ -159,12 +159,15 @@
 }
 
 static const gnutls_crypto_cipher_st aes_padlock_struct = {
-  .init = aes_cipher_init,
-  .setkey = padlock_aes_cipher_setkey,
-  .setiv = aes_setiv,
-  .encrypt = padlock_aes_cbc_encrypt,
-  .decrypt = padlock_aes_cbc_decrypt,
-  .deinit = aes_deinit,
+  aes_cipher_init,
+  padlock_aes_cipher_setkey,
+  aes_setiv,
+  padlock_aes_cbc_encrypt,
+  padlock_aes_cbc_decrypt,
+  NULL,
+  NULL,
+  aes_deinit,
+  NULL
 };
 
 static int
diff -ur gnutls-3.1.4-orig/lib/accelerated/x86/aes-x86.c gnutls-3.1.4/lib/accelerated/x86/aes-x86.c
--- gnutls-3.1.4-orig/lib/accelerated/x86/aes-x86.c	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/lib/accelerated/x86/aes-x86.c	2013-06-23 14:16:47 -0400
@@ -114,12 +114,15 @@
 }
 
 static const gnutls_crypto_cipher_st cipher_struct = {
-  .init = aes_cipher_init,
-  .setkey = aes_cipher_setkey,
-  .setiv = aes_setiv,
-  .encrypt = aes_encrypt,
-  .decrypt = aes_decrypt,
-  .deinit = aes_deinit,
+  aes_cipher_init,
+  aes_cipher_setkey,
+  aes_setiv,
+  aes_encrypt,
+  aes_decrypt,
+  NULL,
+  NULL,
+  aes_deinit,
+  NULL
 };
 
 static unsigned
diff -ur gnutls-3.1.4-orig/lib/accelerated/x86/hmac-padlock.c gnutls-3.1.4/lib/accelerated/x86/hmac-padlock.c
--- gnutls-3.1.4-orig/lib/accelerated/x86/hmac-padlock.c	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/lib/accelerated/x86/hmac-padlock.c	2013-06-23 14:16:47 -0400
@@ -351,23 +351,23 @@
 }
 
 const gnutls_crypto_mac_st hmac_sha_padlock_struct = {
-    .init = NULL,
-    .setkey = NULL,
-    .hash = NULL,
-    .reset = NULL,
-    .output = NULL,
-    .deinit = NULL,
-    .fast = wrap_padlock_hmac_fast
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    wrap_padlock_hmac_fast
 };
 
 const gnutls_crypto_mac_st hmac_sha_padlock_nano_struct = {
-    .init = wrap_padlock_hmac_init,
-    .setkey = wrap_padlock_hmac_setkey,
-    .hash = wrap_padlock_hmac_update,
-    .reset = wrap_padlock_hmac_reset,
-    .output = wrap_padlock_hmac_output,
-    .deinit = wrap_padlock_hmac_deinit,
-    .fast = wrap_padlock_hmac_fast,
+    wrap_padlock_hmac_init,
+    wrap_padlock_hmac_setkey,
+    wrap_padlock_hmac_reset,
+    wrap_padlock_hmac_update,
+    wrap_padlock_hmac_output,
+    wrap_padlock_hmac_deinit,
+    wrap_padlock_hmac_fast,
 };
 
 #endif /* HAVE_LIBNETTLE */
diff -ur gnutls-3.1.4-orig/lib/accelerated/x86/sha-padlock.c gnutls-3.1.4/lib/accelerated/x86/sha-padlock.c
--- gnutls-3.1.4-orig/lib/accelerated/x86/sha-padlock.c	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/lib/accelerated/x86/sha-padlock.c	2013-06-23 14:16:47 -0400
@@ -373,20 +373,21 @@
 const struct nettle_hash padlock_sha512 = _NETTLE_HASH(sha512, SHA512);
 
 const gnutls_crypto_digest_st sha_padlock_struct = {
-  .init = NULL,
-  .hash = NULL,
-  .output = NULL,
-  .deinit = NULL,
-  .fast = wrap_padlock_hash_fast
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  wrap_padlock_hash_fast
 };
 
 const gnutls_crypto_digest_st sha_padlock_nano_struct = {
-  .init = wrap_padlock_hash_init,
-  .hash = wrap_padlock_hash_update,
-  .reset = wrap_padlock_hash_reset,
-  .output = wrap_padlock_hash_output,
-  .deinit = wrap_padlock_hash_deinit,
-  .fast = wrap_padlock_hash_fast,
+  wrap_padlock_hash_init,
+  wrap_padlock_hash_reset,
+  wrap_padlock_hash_update,
+  wrap_padlock_hash_output,
+  wrap_padlock_hash_deinit,
+  wrap_padlock_hash_fast,
 };
 
 #endif /* HAVE_LIBNETTLE */
diff -ur gnutls-3.1.4-orig/lib/algorithms/Makefile.am gnutls-3.1.4/lib/algorithms/Makefile.am
--- gnutls-3.1.4-orig/lib/algorithms/Makefile.am	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/lib/algorithms/Makefile.am	2013-06-23 14:16:47 -0400
@@ -20,6 +20,7 @@
 
 AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS)
 AM_CPPFLAGS = \
+	-DGNUTLS_BUILDING		\
 	-I$(srcdir)/../../gl		\
 	-I$(builddir)/../../gl		\
 	-I$(srcdir)/../includes		\
diff -ur gnutls-3.1.4-orig/lib/algorithms/ecc.c gnutls-3.1.4/lib/algorithms/ecc.c
--- gnutls-3.1.4-orig/lib/algorithms/ecc.c	2012-09-19 17:13:58 -0400
+++ gnutls-3.1.4/lib/algorithms/ecc.c	2013-06-23 14:16:47 -0400
@@ -31,69 +31,69 @@
 
 static const gnutls_ecc_curve_entry_st ecc_curves[] = {
   {
-    .name = "SECP192R1", 
-    .oid = "1.2.840.10045.3.1.1",
-    .id = GNUTLS_ECC_CURVE_SECP192R1,
-    .tls_id = 19,
-    .size = 24,
-    .prime = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF",
-    .A = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC",
-    .B = "64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1",
-    .order = "FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831",
-    .Gx =    "188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012",
-    .Gy =    "07192B95FFC8DA78631011ED6B24CDD573F977A11E794811"
+    "SECP192R1", 
+    "1.2.840.10045.3.1.1",
+    GNUTLS_ECC_CURVE_SECP192R1,
+    19,
+    24,
+    "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF",
+    "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC",
+    "64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1",
+    "FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831",
+    "188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012",
+    "07192B95FFC8DA78631011ED6B24CDD573F977A11E794811"
   },
   {
-    .name = "SECP224R1", 
-    .oid = "1.3.132.0.33",
-    .id = GNUTLS_ECC_CURVE_SECP224R1,
-    .tls_id = 21,
-    .size = 28,
-    .prime = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001",
-    .A = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE",
-    .B = "B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4",
-    .order = "FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D",
-    .Gx =    "B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21",
-    .Gy =    "BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34",
+    "SECP224R1", 
+    "1.3.132.0.33",
+    GNUTLS_ECC_CURVE_SECP224R1,
+    21,
+    28,
+    "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001",
+    "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE",
+    "B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4",
+    "FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D",
+    "B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21",
+    "BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34",
   },
   {
-    .name = "SECP256R1", 
-    .oid = "1.2.840.10045.3.1.7",
-    .id = GNUTLS_ECC_CURVE_SECP256R1,
-    .tls_id = 23,
-    .size = 32,
-    .prime = "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF",
-    .A = "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC",
-    .B = "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B",
-    .order = "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551",
-    .Gx = "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296",
-    .Gy = "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5",
+    "SECP256R1", 
+    "1.2.840.10045.3.1.7",
+    GNUTLS_ECC_CURVE_SECP256R1,
+    23,
+    32,
+    "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF",
+    "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC",
+    "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B",
+    "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551",
+    "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296",
+    "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5",
   },
   {
-    .name = "SECP384R1",
-    .oid = "1.3.132.0.34",
-    .id = GNUTLS_ECC_CURVE_SECP384R1,
-    .tls_id = 24,
-    .size = 48,
-    .prime = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF",
-    .A = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC",
-    .B = "B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF",
-    .order = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973",
-    .Gx = "AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7",
-    .Gy = "3617DE4A96262C6F5D9E98BF9292DC29F8F41DBD289A147CE9DA3113B5F0B8C00A60B1CE1D7E819D7A431D7C90EA0E5F"
+    "SECP384R1",
+    "1.3.132.0.34",
+    GNUTLS_ECC_CURVE_SECP384R1,
+    24,
+    48,
+    "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF",
+    "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC",
+    "B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF",
+    "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973",
+    "AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7",
+    "3617DE4A96262C6F5D9E98BF9292DC29F8F41DBD289A147CE9DA3113B5F0B8C00A60B1CE1D7E819D7A431D7C90EA0E5F"
   },
   {
-    .name = "SECP521R1",
-    .oid = "1.3.132.0.35",
-    .id = GNUTLS_ECC_CURVE_SECP521R1,
-    .tls_id = 25,
-    .size = 66,
-    .prime = "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
-    .A = "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC",
-    .B = "0051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00",
-    .order = "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409",
-    .Gx =    "00C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66",
-    .Gy =    "011839296A789A3BC0045C8A5FB42C7D1BD998F54449579B446817AFBD17273E662C97EE72995EF42640C550B9013FAD0761353C7086A272C24088BE94769FD16650",
+    "SECP521R1",
+    "1.3.132.0.35",
+    GNUTLS_ECC_CURVE_SECP521R1,
+    25,
+    66,
+    "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
+    "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC",
+    "0051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00",
+    "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409",
+    "00C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66",
+    "011839296A789A3BC0045C8A5FB42C7D1BD998F54449579B446817AFBD17273E662C97EE72995EF42640C550B9013FAD0761353C7086A272C24088BE94769FD16650",
   },
   {0, 0, 0}
 };
diff -ur gnutls-3.1.4-orig/lib/auth/Makefile.am gnutls-3.1.4/lib/auth/Makefile.am
--- gnutls-3.1.4-orig/lib/auth/Makefile.am	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/lib/auth/Makefile.am	2013-06-23 14:16:48 -0400
@@ -20,6 +20,7 @@
 
 AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS)
 AM_CPPFLAGS = \
+	-DGNUTLS_BUILDING		\
 	-I$(srcdir)/../../gl		\
 	-I$(builddir)/../../gl		\
 	-I$(srcdir)/../includes		\
diff -ur gnutls-3.1.4-orig/lib/ext/Makefile.am gnutls-3.1.4/lib/ext/Makefile.am
--- gnutls-3.1.4-orig/lib/ext/Makefile.am	2012-11-05 15:43:12 -0500
+++ gnutls-3.1.4/lib/ext/Makefile.am	2013-06-23 14:16:48 -0400
@@ -20,6 +20,7 @@
 
 AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS)
 AM_CPPFLAGS = \
+	-DGNUTLS_BUILDING		\
 	-I$(srcdir)/../../gl		\
 	-I$(builddir)/../../gl		\
 	-I$(srcdir)/../includes		\
diff -ur gnutls-3.1.4-orig/lib/ext/cert_type.c gnutls-3.1.4/lib/ext/cert_type.c
--- gnutls-3.1.4-orig/lib/ext/cert_type.c	2012-09-19 17:13:58 -0400
+++ gnutls-3.1.4/lib/ext/cert_type.c	2013-06-23 14:16:48 -0400
@@ -43,15 +43,15 @@
                                           gnutls_buffer_st * extdata);
 
 extension_entry_st ext_mod_cert_type = {
-  .name = "CERT TYPE",
-  .type = GNUTLS_EXTENSION_CERT_TYPE,
-  .parse_type = GNUTLS_EXT_TLS,
+  "CERT TYPE",
+  GNUTLS_EXTENSION_CERT_TYPE,
+  GNUTLS_EXT_TLS,
 
-  .recv_func = _gnutls_cert_type_recv_params,
-  .send_func = _gnutls_cert_type_send_params,
-  .pack_func = NULL,
-  .unpack_func = NULL,
-  .deinit_func = NULL
+  _gnutls_cert_type_recv_params,
+  _gnutls_cert_type_send_params,
+  NULL,
+  NULL,
+  NULL
 };
 
 /* 
diff -ur gnutls-3.1.4-orig/lib/ext/ecc.c gnutls-3.1.4/lib/ext/ecc.c
--- gnutls-3.1.4-orig/lib/ext/ecc.c	2012-09-19 17:13:58 -0400
+++ gnutls-3.1.4/lib/ext/ecc.c	2013-06-23 14:16:48 -0400
@@ -49,27 +49,27 @@
                                           gnutls_buffer_st * extdata);
 
 extension_entry_st ext_mod_supported_ecc = {
-  .name = "SUPPORTED ECC",
-  .type = GNUTLS_EXTENSION_SUPPORTED_ECC,
-  .parse_type = GNUTLS_EXT_TLS,
+  "SUPPORTED ECC",
+  GNUTLS_EXTENSION_SUPPORTED_ECC,
+  GNUTLS_EXT_TLS,
 
-  .recv_func = _gnutls_supported_ecc_recv_params,
-  .send_func = _gnutls_supported_ecc_send_params,
-  .pack_func = NULL,
-  .unpack_func = NULL,
-  .deinit_func = NULL
+  _gnutls_supported_ecc_recv_params,
+  _gnutls_supported_ecc_send_params,
+  NULL,
+  NULL,
+  NULL
 };
 
 extension_entry_st ext_mod_supported_ecc_pf = {
-  .name = "SUPPORTED ECC POINT FORMATS",
-  .type = GNUTLS_EXTENSION_SUPPORTED_ECC_PF,
-  .parse_type = GNUTLS_EXT_TLS,
+  "SUPPORTED ECC POINT FORMATS",
+  GNUTLS_EXTENSION_SUPPORTED_ECC_PF,
+  GNUTLS_EXT_TLS,
 
-  .recv_func = _gnutls_supported_ecc_pf_recv_params,
-  .send_func = _gnutls_supported_ecc_pf_send_params,
-  .pack_func = NULL,
-  .unpack_func = NULL,
-  .deinit_func = NULL
+  _gnutls_supported_ecc_pf_recv_params,
+  _gnutls_supported_ecc_pf_send_params,
+  NULL,
+  NULL,
+  NULL
 };
 
 /* 
diff -ur gnutls-3.1.4-orig/lib/ext/heartbeat.c gnutls-3.1.4/lib/ext/heartbeat.c
--- gnutls-3.1.4-orig/lib/ext/heartbeat.c	2012-09-26 14:19:33 -0400
+++ gnutls-3.1.4/lib/ext/heartbeat.c	2013-06-23 14:16:48 -0400
@@ -512,13 +512,13 @@
 
 
 extension_entry_st ext_mod_heartbeat = {
-  .name = "HEARTBEAT",
-  .type = GNUTLS_EXTENSION_HEARTBEAT,
-  .parse_type = GNUTLS_EXT_TLS,
+  "HEARTBEAT",
+  GNUTLS_EXTENSION_HEARTBEAT,
+  GNUTLS_EXT_TLS,
 
-  .recv_func = _gnutls_heartbeat_recv_params,
-  .send_func = _gnutls_heartbeat_send_params,
-  .pack_func = _gnutls_heartbeat_pack,
-  .unpack_func = _gnutls_heartbeat_unpack,
-  .deinit_func = NULL
+  _gnutls_heartbeat_recv_params,
+  _gnutls_heartbeat_send_params,
+  NULL,
+  _gnutls_heartbeat_pack,
+  _gnutls_heartbeat_unpack
 };
diff -ur gnutls-3.1.4-orig/lib/ext/max_record.c gnutls-3.1.4/lib/ext/max_record.c
--- gnutls-3.1.4-orig/lib/ext/max_record.c	2012-09-28 11:47:46 -0400
+++ gnutls-3.1.4/lib/ext/max_record.c	2013-06-23 14:16:48 -0400
@@ -48,15 +48,15 @@
 
 
 extension_entry_st ext_mod_max_record_size = {
-  .name = "MAX RECORD SIZE",
-  .type = GNUTLS_EXTENSION_MAX_RECORD_SIZE,
-  .parse_type = GNUTLS_EXT_TLS,
+  "MAX RECORD SIZE",
+  GNUTLS_EXTENSION_MAX_RECORD_SIZE,
+  GNUTLS_EXT_TLS,
 
-  .recv_func = _gnutls_max_record_recv_params,
-  .send_func = _gnutls_max_record_send_params,
-  .pack_func = _gnutls_max_record_pack,
-  .unpack_func = _gnutls_max_record_unpack,
-  .deinit_func = NULL
+  _gnutls_max_record_recv_params,
+  _gnutls_max_record_send_params,
+  NULL,
+  _gnutls_max_record_pack,
+  _gnutls_max_record_unpack
 };
 
 /* 
diff -ur gnutls-3.1.4-orig/lib/ext/safe_renegotiation.c gnutls-3.1.4/lib/ext/safe_renegotiation.c
--- gnutls-3.1.4-orig/lib/ext/safe_renegotiation.c	2012-09-21 19:26:49 -0400
+++ gnutls-3.1.4/lib/ext/safe_renegotiation.c	2013-06-23 14:16:48 -0400
@@ -31,15 +31,15 @@
 static void _gnutls_sr_deinit_data (extension_priv_data_t priv);
 
 extension_entry_st ext_mod_sr = {
-  .name = "SAFE RENEGOTIATION",
-  .type = GNUTLS_EXTENSION_SAFE_RENEGOTIATION,
-  .parse_type = GNUTLS_EXT_MANDATORY,
+  "SAFE RENEGOTIATION",
+  GNUTLS_EXTENSION_SAFE_RENEGOTIATION,
+  GNUTLS_EXT_MANDATORY,
 
-  .recv_func = _gnutls_sr_recv_params,
-  .send_func = _gnutls_sr_send_params,
-  .pack_func = NULL,
-  .unpack_func = NULL,
-  .deinit_func = _gnutls_sr_deinit_data,
+  _gnutls_sr_recv_params,
+  _gnutls_sr_send_params,
+  _gnutls_sr_deinit_data,
+  NULL,
+  NULL
 };
 
 int
diff -ur gnutls-3.1.4-orig/lib/ext/server_name.c gnutls-3.1.4/lib/ext/server_name.c
--- gnutls-3.1.4-orig/lib/ext/server_name.c	2012-10-31 13:36:34 -0400
+++ gnutls-3.1.4/lib/ext/server_name.c	2013-06-23 14:16:48 -0400
@@ -40,15 +40,15 @@
 
 
 extension_entry_st ext_mod_server_name = {
-  .name = "SERVER NAME",
-  .type = GNUTLS_EXTENSION_SERVER_NAME,
-  .parse_type = GNUTLS_EXT_APPLICATION,
+  "SERVER NAME",
+  GNUTLS_EXTENSION_SERVER_NAME,
+  GNUTLS_EXT_APPLICATION,
 
-  .recv_func = _gnutls_server_name_recv_params,
-  .send_func = _gnutls_server_name_send_params,
-  .pack_func = _gnutls_server_name_pack,
-  .unpack_func = _gnutls_server_name_unpack,
-  .deinit_func = _gnutls_server_name_deinit_data,
+  _gnutls_server_name_recv_params,
+  _gnutls_server_name_send_params,
+  _gnutls_server_name_deinit_data,
+  _gnutls_server_name_pack,
+  _gnutls_server_name_unpack
 };
 
 /*
diff -ur gnutls-3.1.4-orig/lib/ext/session_ticket.c gnutls-3.1.4/lib/ext/session_ticket.c
--- gnutls-3.1.4-orig/lib/ext/session_ticket.c	2012-09-30 06:52:54 -0400
+++ gnutls-3.1.4/lib/ext/session_ticket.c	2013-06-23 14:16:48 -0400
@@ -52,15 +52,15 @@
 static void session_ticket_deinit_data (extension_priv_data_t priv);
 
 extension_entry_st ext_mod_session_ticket = {
-  .name = "SESSION TICKET",
-  .type = GNUTLS_EXTENSION_SESSION_TICKET,
-  .parse_type = GNUTLS_EXT_MANDATORY,
+  "SESSION TICKET",
+  GNUTLS_EXTENSION_SESSION_TICKET,
+  GNUTLS_EXT_MANDATORY,
 
-  .recv_func = session_ticket_recv_params,
-  .send_func = session_ticket_send_params,
-  .pack_func = session_ticket_pack,
-  .unpack_func = session_ticket_unpack,
-  .deinit_func = session_ticket_deinit_data,
+  session_ticket_recv_params,
+  session_ticket_send_params,
+  session_ticket_deinit_data,
+  session_ticket_pack,
+  session_ticket_unpack
 };
 
 #define SESSION_KEY_SIZE (SESSION_TICKET_KEY_NAME_SIZE+SESSION_TICKET_KEY_SIZE+SESSION_TICKET_MAC_SECRET_SIZE)
diff -ur gnutls-3.1.4-orig/lib/ext/signature.c gnutls-3.1.4/lib/ext/signature.c
--- gnutls-3.1.4-orig/lib/ext/signature.c	2012-09-19 17:13:58 -0400
+++ gnutls-3.1.4/lib/ext/signature.c	2013-06-23 14:16:48 -0400
@@ -46,15 +46,15 @@
                                         extension_priv_data_t * _priv);
 
 extension_entry_st ext_mod_sig = {
-  .name = "SIGNATURE ALGORITHMS",
-  .type = GNUTLS_EXTENSION_SIGNATURE_ALGORITHMS,
-  .parse_type = GNUTLS_EXT_TLS,
+  "SIGNATURE ALGORITHMS",
+  GNUTLS_EXTENSION_SIGNATURE_ALGORITHMS,
+  GNUTLS_EXT_TLS,
 
-  .recv_func = _gnutls_signature_algorithm_recv_params,
-  .send_func = _gnutls_signature_algorithm_send_params,
-  .pack_func = signature_algorithms_pack,
-  .unpack_func = signature_algorithms_unpack,
-  .deinit_func = signature_algorithms_deinit_data,
+  _gnutls_signature_algorithm_recv_params,
+  _gnutls_signature_algorithm_send_params,
+  signature_algorithms_deinit_data,
+  signature_algorithms_pack,
+  signature_algorithms_unpack
 };
 
 typedef struct
diff -ur gnutls-3.1.4-orig/lib/ext/srp.c gnutls-3.1.4/lib/ext/srp.c
--- gnutls-3.1.4-orig/lib/ext/srp.c	2012-10-10 02:29:58 -0400
+++ gnutls-3.1.4/lib/ext/srp.c	2013-06-23 14:16:48 -0400
@@ -42,15 +42,15 @@
 static int _gnutls_srp_send_params (gnutls_session_t state, gnutls_buffer_st * extdata);
 
 extension_entry_st ext_mod_srp = {
-  .name = "SRP",
-  .type = GNUTLS_EXTENSION_SRP,
-  .parse_type = GNUTLS_EXT_TLS,
+  "SRP",
+  GNUTLS_EXTENSION_SRP,
+  GNUTLS_EXT_TLS,
 
-  .recv_func = _gnutls_srp_recv_params,
-  .send_func = _gnutls_srp_send_params,
-  .pack_func = _gnutls_srp_pack,
-  .unpack_func = _gnutls_srp_unpack,
-  .deinit_func = _gnutls_srp_deinit_data
+  _gnutls_srp_recv_params,
+  _gnutls_srp_send_params,
+  _gnutls_srp_deinit_data,
+  _gnutls_srp_pack,
+  _gnutls_srp_unpack
 };
 
 
diff -ur gnutls-3.1.4-orig/lib/ext/srtp.c gnutls-3.1.4/lib/ext/srtp.c
--- gnutls-3.1.4-orig/lib/ext/srtp.c	2012-11-06 17:19:19 -0500
+++ gnutls-3.1.4/lib/ext/srtp.c	2013-06-23 14:16:48 -0400
@@ -41,15 +41,15 @@
 
 
 extension_entry_st ext_mod_srtp = {
-  .name = "SRTP",
-  .type = GNUTLS_EXTENSION_SRTP,
-  .parse_type = GNUTLS_EXT_APPLICATION,
+  "SRTP",
+  GNUTLS_EXTENSION_SRTP,
+  GNUTLS_EXT_APPLICATION,
 
-  .recv_func = _gnutls_srtp_recv_params,
-  .send_func = _gnutls_srtp_send_params,
-  .pack_func = _gnutls_srtp_pack,
-  .unpack_func = _gnutls_srtp_unpack,
-  .deinit_func = _gnutls_srtp_deinit_data,
+  _gnutls_srtp_recv_params,
+  _gnutls_srtp_send_params,
+  _gnutls_srtp_deinit_data,
+  _gnutls_srtp_pack,
+  _gnutls_srtp_unpack
 };
 
 typedef struct
diff -ur gnutls-3.1.4-orig/lib/ext/status_request.c gnutls-3.1.4/lib/ext/status_request.c
--- gnutls-3.1.4-orig/lib/ext/status_request.c	2012-10-10 02:30:07 -0400
+++ gnutls-3.1.4/lib/ext/status_request.c	2013-06-23 14:16:48 -0400
@@ -500,14 +500,14 @@
 }
 
 extension_entry_st ext_mod_status_request = {
-  .name = "STATUS REQUEST",
-  .type = GNUTLS_EXTENSION_STATUS_REQUEST,
-  .parse_type = GNUTLS_EXT_TLS,
-  .recv_func = _gnutls_status_request_recv_params,
-  .send_func = _gnutls_status_request_send_params,
-  .pack_func = _gnutls_status_request_pack,
-  .unpack_func = _gnutls_status_request_unpack,
-  .deinit_func = _gnutls_status_request_deinit_data
+  "STATUS REQUEST",
+  GNUTLS_EXTENSION_STATUS_REQUEST,
+  GNUTLS_EXT_TLS,
+  _gnutls_status_request_recv_params,
+  _gnutls_status_request_send_params,
+  _gnutls_status_request_deinit_data,
+  _gnutls_status_request_pack,
+  _gnutls_status_request_unpack
 };
 
 /* Functions to be called from handshake */
diff -ur gnutls-3.1.4-orig/lib/extras/Makefile.am gnutls-3.1.4/lib/extras/Makefile.am
--- gnutls-3.1.4-orig/lib/extras/Makefile.am	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/lib/extras/Makefile.am	2013-06-23 14:16:48 -0400
@@ -20,6 +20,7 @@
 
 AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS)
 AM_CPPFLAGS = \
+	-DGNUTLS_BUILDING		\
 	-I$(srcdir)/../../gl		\
 	-I$(builddir)/../../gl		\
 	-I$(srcdir)/../includes		\
diff -ur gnutls-3.1.4-orig/lib/gnutls_cipher.c gnutls-3.1.4/lib/gnutls_cipher.c
--- gnutls-3.1.4-orig/lib/gnutls_cipher.c	2012-09-19 17:13:58 -0400
+++ gnutls-3.1.4/lib/gnutls_cipher.c	2013-06-23 14:16:48 -0400
@@ -463,7 +463,7 @@
        */
       if (explicit_iv && _gnutls_auth_cipher_is_aead(&params->read.cipher_state))
         {
-          uint8_t nonce[blocksize];
+          uint8_t * nonce;
           /* Values in AEAD are pretty fixed in TLS 1.2 for 128-bit block
            */
           if (params->read.IV.data == NULL || params->read.IV.size != 4)
@@ -472,6 +472,7 @@
           if (ciphertext->size < tag_size+AEAD_EXPLICIT_DATA_SIZE)
             return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
 
+          nonce = (uint8_t *) malloc (sizeof (uint8_t) * blocksize);
           memcpy(nonce, params->read.IV.data, AEAD_IMPLICIT_DATA_SIZE);
           memcpy(&nonce[AEAD_IMPLICIT_DATA_SIZE], ciphertext->data, AEAD_EXPLICIT_DATA_SIZE);
           
@@ -481,6 +482,7 @@
           ciphertext->size -= AEAD_EXPLICIT_DATA_SIZE;
           
           length_to_decrypt = ciphertext->size - tag_size;
+          free (nonce);
         }
       else
         {
diff -ur gnutls-3.1.4-orig/lib/gnutls_mpi.h gnutls-3.1.4/lib/gnutls_mpi.h
--- gnutls-3.1.4-orig/lib/gnutls_mpi.h	2012-09-19 17:13:58 -0400
+++ gnutls-3.1.4/lib/gnutls_mpi.h	2013-06-23 14:16:48 -0400
@@ -28,7 +28,7 @@
 #include <crypto-backend.h>
 
 extern int crypto_bigint_prio;
-extern gnutls_crypto_bigint_st _gnutls_mpi_ops;
+extern GNUTLS_EXPORTED gnutls_crypto_bigint_st _gnutls_mpi_ops;
 
 bigint_t _gnutls_mpi_randomize (bigint_t, unsigned int bits,
                                 gnutls_rnd_level_t level);
diff -ur gnutls-3.1.4-orig/lib/gnutls_x509.c gnutls-3.1.4/lib/gnutls_x509.c
--- gnutls-3.1.4-orig/lib/gnutls_x509.c	2012-11-09 11:21:05 -0500
+++ gnutls-3.1.4/lib/gnutls_x509.c	2013-06-23 14:16:48 -0400
@@ -1591,8 +1591,10 @@
                                    int ca_list_size)
 {
   int ret, i, j;
-  gnutls_x509_crt_t new_list[ca_list_size];
+  gnutls_x509_crt_t * new_list;
 
+  new_list = (gnutls_x509_crt_t *) malloc (sizeof (gnutls_x509_crt_t) *
+                                           ca_list_size);
   for (i = 0; i < ca_list_size; i++)
     {
       ret = gnutls_x509_crt_init (&new_list[i]);
@@ -1623,12 +1625,16 @@
       goto cleanup;
     }
 
+  free (new_list);
+
   return ret;
 
 cleanup:
   for (j=0;j<i;i++)
     gnutls_x509_crt_deinit(new_list[j]);
 
+  free (new_list);
+
   return ret;
 }
 
@@ -1856,7 +1862,10 @@
                                  int crl_list_size)
 {
   int ret, i, j;
-  gnutls_x509_crl_t new_crl[crl_list_size];
+  gnutls_x509_crl_t * new_crl;
+
+  new_crl = (gnutls_x509_crl_t *) malloc (sizeof (gnutls_x509_crl_t) *
+                                          crl_list_size);
 
   for (i = 0; i < crl_list_size; i++)
     {
@@ -1882,12 +1891,16 @@
       goto cleanup;
     }
 
+  free (new_crl);
+
   return ret;
 
 cleanup:
   for (j=0;j<i;j++)
     gnutls_x509_crl_deinit(new_crl[j]);
 
+  free (new_crl);
+
   return ret;
 }
 
diff -ur gnutls-3.1.4-orig/lib/includes/gnutls/gnutls.h.in gnutls-3.1.4/lib/includes/gnutls/gnutls.h.in
--- gnutls-3.1.4-orig/lib/includes/gnutls/gnutls.h.in	2012-11-08 11:54:29 -0500
+++ gnutls-3.1.4/lib/includes/gnutls/gnutls.h.in	2013-06-23 14:16:48 -0400
@@ -36,6 +36,16 @@
 #ifndef GNUTLS_H
 #define GNUTLS_H
 
+#ifdef _MSC_VER
+# ifdef GNUTLS_BUILDING
+#  define GNUTLS_EXPORTED __declspec(dllexport)
+# else
+#  define GNUTLS_EXPORTED __declspec(dllimport)
+# endif
+#else
+# define GNUTLS_EXPORTED
+#endif
+
 /* Get size_t. */
 #include <stddef.h>
 /* Get ssize_t. */
@@ -1316,13 +1326,13 @@
   void gnutls_global_set_time_function (gnutls_time_func time_func);
 
 /* For use in callbacks */
-  extern gnutls_alloc_function gnutls_malloc;
-  extern gnutls_alloc_function gnutls_secure_malloc;
-  extern gnutls_realloc_function gnutls_realloc;
-  extern gnutls_calloc_function gnutls_calloc;
-  extern gnutls_free_function gnutls_free;
+  extern GNUTLS_EXPORTED gnutls_alloc_function gnutls_malloc;
+  extern GNUTLS_EXPORTED gnutls_alloc_function gnutls_secure_malloc;
+  extern GNUTLS_EXPORTED gnutls_realloc_function gnutls_realloc;
+  extern GNUTLS_EXPORTED gnutls_calloc_function gnutls_calloc;
+  extern GNUTLS_EXPORTED gnutls_free_function gnutls_free;
 
-  extern char *(*gnutls_strdup) (const char *);
+  extern GNUTLS_EXPORTED char *(*gnutls_strdup) (const char *);
 
   typedef void (*gnutls_log_func) (int, const char *);
   typedef void (*gnutls_audit_log_func) (gnutls_session_t, const char *);
@@ -1474,20 +1484,20 @@
 /* The static parameters defined in draft-ietf-tls-srp-05
  * Those should be used as input to gnutls_srp_verifier().
  */
-  extern const gnutls_datum_t gnutls_srp_4096_group_prime;
-  extern const gnutls_datum_t gnutls_srp_4096_group_generator;
+  extern GNUTLS_EXPORTED const gnutls_datum_t gnutls_srp_4096_group_prime;
+  extern GNUTLS_EXPORTED const gnutls_datum_t gnutls_srp_4096_group_generator;
 
-  extern const gnutls_datum_t gnutls_srp_3072_group_prime;
-  extern const gnutls_datum_t gnutls_srp_3072_group_generator;
+  extern GNUTLS_EXPORTED const gnutls_datum_t gnutls_srp_3072_group_prime;
+  extern GNUTLS_EXPORTED const gnutls_datum_t gnutls_srp_3072_group_generator;
 
-  extern const gnutls_datum_t gnutls_srp_2048_group_prime;
-  extern const gnutls_datum_t gnutls_srp_2048_group_generator;
+  extern GNUTLS_EXPORTED const gnutls_datum_t gnutls_srp_2048_group_prime;
+  extern GNUTLS_EXPORTED const gnutls_datum_t gnutls_srp_2048_group_generator;
 
-  extern const gnutls_datum_t gnutls_srp_1536_group_prime;
-  extern const gnutls_datum_t gnutls_srp_1536_group_generator;
+  extern GNUTLS_EXPORTED const gnutls_datum_t gnutls_srp_1536_group_prime;
+  extern GNUTLS_EXPORTED const gnutls_datum_t gnutls_srp_1536_group_generator;
 
-  extern const gnutls_datum_t gnutls_srp_1024_group_prime;
-  extern const gnutls_datum_t gnutls_srp_1024_group_generator;
+  extern GNUTLS_EXPORTED const gnutls_datum_t gnutls_srp_1024_group_prime;
+  extern GNUTLS_EXPORTED const gnutls_datum_t gnutls_srp_1024_group_generator;
 
   typedef int gnutls_srp_server_credentials_function (gnutls_session_t,
                                                       const char *username,
diff -ur gnutls-3.1.4-orig/lib/includes/gnutls/gnutlsxx.h gnutls-3.1.4/lib/includes/gnutls/gnutlsxx.h
--- gnutls-3.1.4-orig/lib/includes/gnutls/gnutlsxx.h	2012-04-25 06:03:29 -0400
+++ gnutls-3.1.4/lib/includes/gnutls/gnutlsxx.h	2013-06-23 14:16:48 -0400
@@ -27,10 +27,20 @@
 #include <vector>
 #include <gnutls/gnutls.h>
 
+#ifdef _MSC_VER
+# ifdef GNUTLSXX_BUILDING
+#  define GNUTLSXX_EXPORTED __declspec(dllexport)
+# else
+#  define GNUTLSXX_EXPORTED __declspec(dllimport)
+# endif
+#else
+# define GNUTLSXX_EXPORTED
+#endif
+
 namespace gnutls
 {
 
-  class noncopyable
+  class GNUTLSXX_EXPORTED noncopyable
   {
   protected:
     noncopyable ()
@@ -47,7 +57,7 @@
   };
 
 
-  class exception:public std::exception
+  class GNUTLSXX_EXPORTED exception:public std::exception
   {
   public:
     exception (int x);
@@ -58,7 +68,7 @@
   };
 
 
-  class dh_params:private noncopyable
+  class GNUTLSXX_EXPORTED dh_params:private noncopyable
   {
   public:
     dh_params ();
@@ -80,7 +90,7 @@
   };
 
 
-  class rsa_params:private noncopyable
+  class GNUTLSXX_EXPORTED rsa_params:private noncopyable
   {
   public:
     rsa_params ();
@@ -106,7 +116,7 @@
       gnutls_rsa_params_t params;
   };
 
-  class session:private noncopyable
+  class GNUTLSXX_EXPORTED session:private noncopyable
   {
   protected:
     gnutls_session_t s;
@@ -220,10 +230,14 @@
   };
 
 // interface for databases
-  class DB:private noncopyable
+  class GNUTLSXX_EXPORTED DB:private noncopyable
   {
   public:
+#ifdef _MSC_VER
+    virtual ~ DB () { };
+#else
     virtual ~ DB () = 0;
+#endif
     virtual bool store (const gnutls_datum_t & key,
                         const gnutls_datum_t & data) = 0;
     virtual bool retrieve (const gnutls_datum_t & key,
@@ -231,7 +245,7 @@
     virtual bool remove (const gnutls_datum_t & key) = 0;
   };
 
-  class server_session:public session
+  class GNUTLSXX_EXPORTED server_session:public session
   {
   public:
     server_session ();
@@ -255,7 +269,7 @@
     void set_certificate_request (gnutls_certificate_request_t);
   };
 
-  class client_session:public session
+  class GNUTLSXX_EXPORTED client_session:public session
   {
   public:
     client_session ();
@@ -268,7 +282,7 @@
   };
 
 
-  class credentials:private noncopyable
+  class GNUTLSXX_EXPORTED credentials:private noncopyable
   {
   public:
     virtual ~ credentials ()
@@ -285,7 +299,7 @@
     void *cred;
   };
 
-  class certificate_credentials:public credentials
+  class GNUTLSXX_EXPORTED certificate_credentials:public credentials
   {
   public:
     ~certificate_credentials ();
@@ -332,13 +346,13 @@
       gnutls_certificate_credentials_t cred;
   };
 
-  class certificate_server_credentials:public certificate_credentials
+  class GNUTLSXX_EXPORTED certificate_server_credentials:public certificate_credentials
   {
   public:
     void set_params_function (gnutls_params_function * func);
   };
 
-  class certificate_client_credentials:public certificate_credentials
+  class GNUTLSXX_EXPORTED certificate_client_credentials:public certificate_credentials
   {
   public:
   };
@@ -346,7 +360,7 @@
 
 
 
-  class anon_server_credentials:public credentials
+  class GNUTLSXX_EXPORTED anon_server_credentials:public credentials
   {
   public:
     anon_server_credentials ();
@@ -357,7 +371,7 @@
       gnutls_anon_server_credentials_t cred;
   };
 
-  class anon_client_credentials:public credentials
+  class GNUTLSXX_EXPORTED anon_client_credentials:public credentials
   {
   public:
     anon_client_credentials ();
@@ -367,7 +381,7 @@
   };
 
 
-  class srp_server_credentials:public credentials
+  class GNUTLSXX_EXPORTED srp_server_credentials:public credentials
   {
   public:
     srp_server_credentials ();
@@ -380,7 +394,7 @@
       gnutls_srp_server_credentials_t cred;
   };
 
-  class srp_client_credentials:public credentials
+  class GNUTLSXX_EXPORTED srp_client_credentials:public credentials
   {
   public:
     srp_client_credentials ();
@@ -393,7 +407,7 @@
   };
 
 
-  class psk_server_credentials:public credentials
+  class GNUTLSXX_EXPORTED psk_server_credentials:public credentials
   {
   public:
     psk_server_credentials ();
@@ -407,7 +421,7 @@
       gnutls_psk_server_credentials_t cred;
   };
 
-  class psk_client_credentials:public credentials
+  class GNUTLSXX_EXPORTED psk_client_credentials:public credentials
   {
   public:
     psk_client_credentials ();
diff -ur gnutls-3.1.4-orig/lib/minitasn1/Makefile.am gnutls-3.1.4/lib/minitasn1/Makefile.am
--- gnutls-3.1.4-orig/lib/minitasn1/Makefile.am	2012-10-08 10:36:07 -0400
+++ gnutls-3.1.4/lib/minitasn1/Makefile.am	2013-06-23 14:16:48 -0400
@@ -21,6 +21,8 @@
 # MA 02110-1301, USA
 
 AM_CPPFLAGS = -DASN1_BUILDING		\
+	-DASN1_STATIC			\
+	-DGNUTLS_BUILDING		\
 	-I$(srcdir)/../../gl		\
 	-I$(builddir)/../../gl          \
 	-I$(srcdir)/..
diff -ur gnutls-3.1.4-orig/lib/nettle/Makefile.am gnutls-3.1.4/lib/nettle/Makefile.am
--- gnutls-3.1.4-orig/lib/nettle/Makefile.am	2012-09-02 15:08:16 -0400
+++ gnutls-3.1.4/lib/nettle/Makefile.am	2013-06-23 14:16:48 -0400
@@ -20,6 +20,7 @@
 
 AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS)
 AM_CPPFLAGS = \
+	-DGNUTLS_BUILDING		\
 	-I$(srcdir)/../../gl		\
 	-I$(builddir)/../../gl		\
 	-I$(srcdir)/../includes		\
diff -ur gnutls-3.1.4-orig/lib/nettle/cipher.c gnutls-3.1.4/lib/nettle/cipher.c
--- gnutls-3.1.4-orig/lib/nettle/cipher.c	2012-09-19 17:13:58 -0400
+++ gnutls-3.1.4/lib/nettle/cipher.c	2013-06-23 14:16:48 -0400
@@ -369,13 +369,13 @@
 }
 
 gnutls_crypto_cipher_st _gnutls_cipher_ops = {
-  .init = wrap_nettle_cipher_init,
-  .exists = wrap_nettle_cipher_exists,
-  .setiv = wrap_nettle_cipher_setiv,
-  .setkey = wrap_nettle_cipher_setkey,
-  .encrypt = wrap_nettle_cipher_encrypt,
-  .decrypt = wrap_nettle_cipher_decrypt,
-  .deinit = wrap_nettle_cipher_close,
-  .auth = wrap_nettle_cipher_auth,
-  .tag = wrap_nettle_cipher_tag,
+  wrap_nettle_cipher_init,
+  wrap_nettle_cipher_setkey,
+  wrap_nettle_cipher_setiv,
+  wrap_nettle_cipher_encrypt,
+  wrap_nettle_cipher_decrypt,
+  wrap_nettle_cipher_auth,
+  wrap_nettle_cipher_tag,
+  wrap_nettle_cipher_close,
+  wrap_nettle_cipher_exists
 };
diff -ur gnutls-3.1.4-orig/lib/nettle/mac.c gnutls-3.1.4/lib/nettle/mac.c
--- gnutls-3.1.4-orig/lib/nettle/mac.c	2012-09-19 17:13:58 -0400
+++ gnutls-3.1.4/lib/nettle/mac.c	2013-06-23 14:16:48 -0400
@@ -424,22 +424,22 @@
 
 
 gnutls_crypto_mac_st _gnutls_mac_ops = {
-  .init = wrap_nettle_hmac_init,
-  .setkey = wrap_nettle_hmac_setkey,
-  .hash = wrap_nettle_hmac_update,
-  .reset = wrap_nettle_hmac_reset,
-  .output = wrap_nettle_hmac_output,
-  .deinit = wrap_nettle_hmac_deinit,
-  .fast = wrap_nettle_hmac_fast,
-  .exists = wrap_nettle_hmac_exists,
+  wrap_nettle_hmac_init,
+  wrap_nettle_hmac_setkey,
+  wrap_nettle_hmac_reset,
+  wrap_nettle_hmac_update,
+  wrap_nettle_hmac_output,
+  wrap_nettle_hmac_deinit,
+  wrap_nettle_hmac_fast,
+  wrap_nettle_hmac_exists
 };
 
 gnutls_crypto_digest_st _gnutls_digest_ops = {
-  .init = wrap_nettle_hash_init,
-  .hash = wrap_nettle_hash_update,
-  .reset = wrap_nettle_hash_reset,
-  .output = wrap_nettle_hash_output,
-  .deinit = wrap_nettle_hash_deinit,
-  .fast = wrap_nettle_hash_fast,
-  .exists = wrap_nettle_hash_exists,
+  wrap_nettle_hash_init,
+  wrap_nettle_hash_reset,
+  wrap_nettle_hash_update,
+  wrap_nettle_hash_output,
+  wrap_nettle_hash_deinit,
+  wrap_nettle_hash_fast,
+  wrap_nettle_hash_exists
 };
diff -ur gnutls-3.1.4-orig/lib/nettle/mpi.c gnutls-3.1.4/lib/nettle/mpi.c
--- gnutls-3.1.4-orig/lib/nettle/mpi.c	2012-09-19 17:13:58 -0400
+++ gnutls-3.1.4/lib/nettle/mpi.c	2013-06-23 14:16:48 -0400
@@ -616,27 +616,27 @@
 int crypto_bigint_prio = INT_MAX;
 
 gnutls_crypto_bigint_st _gnutls_mpi_ops = {
-  .bigint_new = wrap_nettle_mpi_new,
-  .bigint_cmp = wrap_nettle_mpi_cmp,
-  .bigint_cmp_ui = wrap_nettle_mpi_cmp_ui,
-  .bigint_mod = wrap_nettle_mpi_mod,
-  .bigint_set = wrap_nettle_mpi_set,
-  .bigint_set_ui = wrap_nettle_mpi_set_ui,
-  .bigint_get_nbits = wrap_nettle_mpi_get_nbits,
-  .bigint_powm = wrap_nettle_mpi_powm,
-  .bigint_addm = wrap_nettle_mpi_addm,
-  .bigint_subm = wrap_nettle_mpi_subm,
-  .bigint_add = wrap_nettle_mpi_add,
-  .bigint_sub = wrap_nettle_mpi_sub,
-  .bigint_add_ui = wrap_nettle_mpi_add_ui,
-  .bigint_sub_ui = wrap_nettle_mpi_sub_ui,
-  .bigint_mul = wrap_nettle_mpi_mul,
-  .bigint_mulm = wrap_nettle_mpi_mulm,
-  .bigint_mul_ui = wrap_nettle_mpi_mul_ui,
-  .bigint_div = wrap_nettle_mpi_div,
-  .bigint_prime_check = wrap_nettle_prime_check,
-  .bigint_release = wrap_nettle_mpi_release,
-  .bigint_print = wrap_nettle_mpi_print,
-  .bigint_scan = wrap_nettle_mpi_scan,
-  .bigint_generate_group = wrap_nettle_generate_group
+  wrap_nettle_mpi_new,
+  wrap_nettle_mpi_release,
+  wrap_nettle_mpi_cmp,
+  wrap_nettle_mpi_cmp_ui,
+  wrap_nettle_mpi_mod,
+  wrap_nettle_mpi_set,
+  wrap_nettle_mpi_set_ui,
+  wrap_nettle_mpi_get_nbits,
+  wrap_nettle_mpi_powm,
+  wrap_nettle_mpi_addm,
+  wrap_nettle_mpi_subm,
+  wrap_nettle_mpi_mulm,
+  wrap_nettle_mpi_add,
+  wrap_nettle_mpi_sub,
+  wrap_nettle_mpi_mul,
+  wrap_nettle_mpi_add_ui,
+  wrap_nettle_mpi_sub_ui,
+  wrap_nettle_mpi_mul_ui,
+  wrap_nettle_mpi_div,
+  wrap_nettle_prime_check,
+  wrap_nettle_generate_group,
+  wrap_nettle_mpi_scan,
+  wrap_nettle_mpi_print
 };
diff -ur gnutls-3.1.4-orig/lib/nettle/pk.c gnutls-3.1.4/lib/nettle/pk.c
--- gnutls-3.1.4-orig/lib/nettle/pk.c	2012-09-21 19:38:14 -0400
+++ gnutls-3.1.4/lib/nettle/pk.c	2013-06-23 14:16:49 -0400
@@ -1134,13 +1134,13 @@
 int crypto_pk_prio = INT_MAX;
 
 gnutls_crypto_pk_st _gnutls_pk_ops = {
-  .hash_algorithm = wrap_nettle_hash_algorithm,
-  .encrypt = _wrap_nettle_pk_encrypt,
-  .decrypt = _wrap_nettle_pk_decrypt,
-  .sign = _wrap_nettle_pk_sign,
-  .verify = _wrap_nettle_pk_verify,
-  .verify_params = wrap_nettle_pk_verify_params,
-  .generate = wrap_nettle_pk_generate_params,
-  .pk_fixup_private_params = wrap_nettle_pk_fixup,
-  .derive = _wrap_nettle_pk_derive,
+  _wrap_nettle_pk_encrypt,
+  _wrap_nettle_pk_decrypt,
+  _wrap_nettle_pk_sign,
+  _wrap_nettle_pk_verify,
+  wrap_nettle_hash_algorithm,
+  wrap_nettle_pk_verify_params,
+  wrap_nettle_pk_generate_params,
+  wrap_nettle_pk_fixup,
+  _wrap_nettle_pk_derive
 };
diff -ur gnutls-3.1.4-orig/lib/nettle/rnd.c gnutls-3.1.4/lib/nettle/rnd.c
--- gnutls-3.1.4-orig/lib/nettle/rnd.c	2012-09-19 17:13:58 -0400
+++ gnutls-3.1.4/lib/nettle/rnd.c	2013-06-23 14:16:49 -0400
@@ -471,7 +471,7 @@
 int crypto_rnd_prio = INT_MAX;
 
 gnutls_crypto_rnd_st _gnutls_rnd_ops = {
-  .init = wrap_nettle_rnd_init,
-  .deinit = wrap_nettle_rnd_deinit,
-  .rnd = wrap_nettle_rnd,
+  wrap_nettle_rnd_init,
+  wrap_nettle_rnd,
+  wrap_nettle_rnd_deinit
 };
diff -ur gnutls-3.1.4-orig/lib/opencdk/Makefile.am gnutls-3.1.4/lib/opencdk/Makefile.am
--- gnutls-3.1.4-orig/lib/opencdk/Makefile.am	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/lib/opencdk/Makefile.am	2013-06-23 14:16:49 -0400
@@ -19,6 +19,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>
 
 AM_CPPFLAGS = \
+	-DGNUTLS_BUILDING		\
 	-I$(srcdir)/../../gl		\
 	-I$(builddir)/../../gl		\
 	-I$(srcdir)/../includes		\
diff -ur gnutls-3.1.4-orig/lib/openpgp/Makefile.am gnutls-3.1.4/lib/openpgp/Makefile.am
--- gnutls-3.1.4-orig/lib/openpgp/Makefile.am	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/lib/openpgp/Makefile.am	2013-06-23 14:16:49 -0400
@@ -20,6 +20,7 @@
 
 AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS)
 AM_CPPFLAGS = \
+	-DGNUTLS_BUILDING		\
 	-I$(srcdir)/../../gl		\
 	-I$(builddir)/../../gl		\
 	-I$(srcdir)/../includes		\
diff -ur gnutls-3.1.4-orig/lib/x509/Makefile.am gnutls-3.1.4/lib/x509/Makefile.am
--- gnutls-3.1.4-orig/lib/x509/Makefile.am	2012-06-28 16:12:15 -0400
+++ gnutls-3.1.4/lib/x509/Makefile.am	2013-06-23 14:16:49 -0400
@@ -18,6 +18,7 @@
 
 AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS)
 AM_CPPFLAGS = \
+	-DGNUTLS_BUILDING		\
 	-I$(srcdir)/../../gl		\
 	-I$(builddir)/../../gl		\
 	-I$(srcdir)/../includes		\
diff -ur gnutls-3.1.4-orig/src/libopts/autoopts/options.h gnutls-3.1.4/src/libopts/autoopts/options.h
--- gnutls-3.1.4-orig/src/libopts/autoopts/options.h	2012-05-14 11:35:38 -0400
+++ gnutls-3.1.4/src/libopts/autoopts/options.h	2013-06-23 14:16:49 -0400
@@ -52,7 +52,7 @@
 
 #  if defined(HAVE_STDBOOL_H)
 #    include <stdbool.h>
-#  else
+#  elif !defined(_GL_STDBOOL_H)
      typedef enum { false = 0, true = 1 } _Bool;
 #    define bool _Bool
 
diff -ur gnutls-3.1.4-orig/src/libopts/autoopts.c gnutls-3.1.4/src/libopts/autoopts.c
--- gnutls-3.1.4-orig/src/libopts/autoopts.c	2012-05-14 11:35:38 -0400
+++ gnutls-3.1.4/src/libopts/autoopts.c	2013-06-23 14:16:49 -0400
@@ -105,8 +105,15 @@
 #  include "compat/pathfind.c"
 #endif
 
+#ifdef _MSC_VER
+#  define fprintf _fprintf_p
+#  define snprintf _sprintf_p
+#endif
+
 #ifndef HAVE_SNPRINTF
-#  include "compat/snprintf.c"
+#  ifndef _MSC_VER
+#    include "compat/snprintf.c"
+#  endif
 #endif
 
 #ifndef HAVE_STRDUP
diff -ur gnutls-3.1.4-orig/src/libopts/compat/compat.h gnutls-3.1.4/src/libopts/compat/compat.h
--- gnutls-3.1.4-orig/src/libopts/compat/compat.h	2012-05-14 11:35:38 -0400
+++ gnutls-3.1.4/src/libopts/compat/compat.h	2013-06-23 14:16:49 -0400
@@ -77,7 +77,9 @@
 #ifdef HAVE_SYS_MMAN_H
 #  include <sys/mman.h>
 #endif
-#include <sys/param.h>
+#if HAVE_SYS_PARAM_H
+#  include <sys/param.h>
+#endif
 #if HAVE_SYS_PROCSET_H
 #  include <sys/procset.h>
 #endif
@@ -346,7 +348,9 @@
 # define  HAVE_WINT_T           1
 #endif
 #ifndef HAVE_PID_T
+#  ifndef pid_t
   typedef signed int            pid_t;
+#  endif
 # define  HAVE_PID_T            1
 #endif
 
diff -ur gnutls-3.1.4-orig/src/libopts/compat/pathfind.c gnutls-3.1.4/src/libopts/compat/pathfind.c
--- gnutls-3.1.4-orig/src/libopts/compat/pathfind.c	2012-05-14 11:35:38 -0400
+++ gnutls-3.1.4/src/libopts/compat/pathfind.c	2013-06-23 14:16:49 -0400
@@ -11,6 +11,11 @@
 
 #include "compat.h"
 #ifndef HAVE_PATHFIND
+#if defined(_MSC_VER) && !defined(R_OK)
+# define X_OK 1
+# define W_OK 2
+# define R_OK 4
+#endif
 #if defined(__windows__) && !defined(__CYGWIN__)
 char*
 pathfind( char const*  path,
diff -ur gnutls-3.1.4-orig/src/libopts/configfile.c gnutls-3.1.4/src/libopts/configfile.c
--- gnutls-3.1.4-orig/src/libopts/configfile.c	2012-05-14 11:35:38 -0400
+++ gnutls-3.1.4/src/libopts/configfile.c	2013-06-23 14:16:49 -0400
@@ -26,6 +26,11 @@
  *  66a5cedaf62c4b2637025f049f9b826f pkg/libopts/COPYING.mbsd
  */
 
+#ifndef S_ISDIR
+#  define S_ISDIR(m)      (((m) & _S_IFMT) == _S_IFDIR)
+#  define S_ISREG(m)      (((m) & _S_IFMT) == _S_IFREG)
+#endif
+
 /* = = = START-STATIC-FORWARD = = = */
 static void
 file_preset(tOptions * opts, char const * fname, int dir);
diff -ur gnutls-3.1.4-orig/src/libopts/enum.c gnutls-3.1.4/src/libopts/enum.c
--- gnutls-3.1.4-orig/src/libopts/enum.c	2012-05-14 11:35:38 -0400
+++ gnutls-3.1.4/src/libopts/enum.c	2013-06-23 14:16:49 -0400
@@ -249,9 +249,9 @@
 char const *
 optionKeywordName(tOptDesc * pOD, unsigned int enum_val)
 {
-    tOptDesc od = {
-        .optArg.argEnum = enum_val };
+    tOptDesc od = { 0 };
 
+    od.optArg.argEnum = enum_val;
     (*(pOD->pOptProc))(OPTPROC_RETURN_VALNAME, &od );
     return od.optArg.argString;
 }
diff -ur gnutls-3.1.4-orig/src/tests.c gnutls-3.1.4/src/tests.c
--- gnutls-3.1.4-orig/src/tests.c	2012-09-02 15:08:16 -0400
+++ gnutls-3.1.4/src/tests.c	2013-06-23 14:16:49 -0400
@@ -180,7 +180,7 @@
 
 
 static int export_true = 0;
-static gnutls_datum_t exp = { NULL, 0 }, mod =
+static gnutls_datum_t _exp = { NULL, 0 }, mod =
 
 {
 NULL, 0};
@@ -202,7 +202,7 @@
   if (ret == TEST_SUCCEED)
     {
       export_true = 1;
-      gnutls_rsa_export_get_pubkey (session, &exp, &mod);
+      gnutls_rsa_export_get_pubkey (session, &_exp, &mod);
     }
 
   return ret;
@@ -242,9 +242,9 @@
           if (print)
             printf (" Modulus [%d bits]: %s\n", mod2.size * 8, print);
 
-          if (mod2.size != mod.size || exp2.size != exp.size ||
+          if (mod2.size != mod.size || exp2.size != _exp.size ||
               memcmp (mod2.data, mod.data, mod.size) != 0 ||
-              memcmp (exp2.data, exp.data, exp.size) != 0)
+              memcmp (exp2.data, _exp.data, _exp.size) != 0)
             {
               printf
                 (" (server uses different public keys per connection)\n");
diff -ur gnutls-3.1.4-orig/tests/cert-tests/dane gnutls-3.1.4/tests/cert-tests/dane
--- gnutls-3.1.4-orig/tests/cert-tests/dane	2012-11-09 18:54:04 -0500
+++ gnutls-3.1.4/tests/cert-tests/dane	2013-06-23 14:16:49 -0400
@@ -25,6 +25,10 @@
 srcdir=${srcdir:-.}
 DANETOOL=${DANETOOL:-../../src/danetool$EXEEXT}
 
+if test ! -x "$DANETOOL"; then
+  exit 77
+fi
+
 $DANETOOL --tlsa-rr --load-certificate $srcdir/cert-ecc256.pem --host www.example.com --outfile tmp-dane.rr 2>/dev/null
 
 diff $srcdir/dane-test.rr tmp-dane.rr
diff -ur gnutls-3.1.4-orig/tests/chainverify.c gnutls-3.1.4/tests/chainverify.c
--- gnutls-3.1.4-orig/tests/chainverify.c	2012-11-08 11:54:59 -0500
+++ gnutls-3.1.4/tests/chainverify.c	2013-06-23 14:16:49 -0400
@@ -803,6 +803,8 @@
    * systems only. Disable it on windows.
    */
 #ifdef _WIN32
+  if (debug)
+    success ("Ignoring test under Win32\n");
   exit(77);
 #endif
 
diff -ur gnutls-3.1.4-orig/tests/openpgp-auth.c gnutls-3.1.4/tests/openpgp-auth.c
--- gnutls-3.1.4-orig/tests/openpgp-auth.c	2012-08-17 16:50:06 -0400
+++ gnutls-3.1.4/tests/openpgp-auth.c	2013-06-23 14:16:49 -0400
@@ -277,6 +277,8 @@
 void
 doit ()
 {
+  if (debug)
+    success ("Ignoring test on Win32 platform\n");
   exit (77);
 }
 #endif
diff -ur gnutls-3.1.4-orig/tests/openpgp-auth2.c gnutls-3.1.4/tests/openpgp-auth2.c
--- gnutls-3.1.4-orig/tests/openpgp-auth2.c	2012-07-21 08:14:24 -0400
+++ gnutls-3.1.4/tests/openpgp-auth2.c	2013-06-23 14:16:49 -0400
@@ -23,12 +23,13 @@
 #include <config.h>
 #endif
 
-#if !defined(_WIN32)
-
 #include <gnutls/gnutls.h>
 #include <gnutls/openpgp.h>
 
 #include "utils.h"
+
+#if !defined(_WIN32)
+
 #include <read-file.h>
 
 #include <unistd.h>
@@ -262,6 +263,8 @@
 void
 doit ()
 {
+  if (debug)
+    success ("Ignoring test on Win32 platform\n");
   exit (77);
 }
 #endif
diff -ur gnutls-3.1.4-orig/tests/rng-fork.c gnutls-3.1.4/tests/rng-fork.c
--- gnutls-3.1.4-orig/tests/rng-fork.c	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/tests/rng-fork.c	2013-06-23 14:16:49 -0400
@@ -107,6 +107,8 @@
 void
 doit (void)
 {
+  if (debug)
+    success ("Ignoring test on Win32 platform\n");
   exit (77);
 }
 #endif
diff -ur gnutls-3.1.4-orig/tests/slow/cipher-test.c gnutls-3.1.4/tests/slow/cipher-test.c
--- gnutls-3.1.4-orig/tests/slow/cipher-test.c	2012-04-12 16:05:11 -0400
+++ gnutls-3.1.4/tests/slow/cipher-test.c	2013-06-23 14:16:49 -0400
@@ -1,3 +1,7 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <stdint.h>
 #include <stdio.h>
 #include <string.h>
@@ -44,75 +48,74 @@
      "\x58\xe2\xfc\xce\xfa\x7e\x30\x61\x36\x7f\x1d\x57\xa4\xe7\x45\x5a"},
 #endif
     {
-     .key = (void*)
+     (void*)
      "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-     .auth = NULL,
-     .auth_size = 0,
-     .plaintext = (void*)
+     NULL,
+     0,
+     (void*)
      "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-     .plaintext_size = 16,
-     .ciphertext = (void*)
+     16,
+     (void*)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
+     (void*)
      "\x03\x88\xda\xce\x60\xb6\xa3\x92\xf3\x28\xc2\xb9\x71\xb2\xfe\x78",
-     .iv = (void*)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-     .tag = (void*)
+     (void*)
      "\xab\x6e\x47\xd4\x2c\xec\x13\xbd\xf5\x3a\x67\xb2\x12\x57\xbd\xdf"},
     {
-     .key = (void*)
+     (void*)
      "\xfe\xff\xe9\x92\x86\x65\x73\x1c\x6d\x6a\x8f\x94\x67\x30\x83\x08",
-     .auth = (void*)
+     (void*)
      "\xfe\xed\xfa\xce\xde\xad\xbe\xef\xfe\xed\xfa\xce\xde\xad\xbe\xef\xab\xad\xda\xd2",
-     .auth_size = 20,
-     .plaintext = (void*)
+     20,
+     (void*)
      "\xd9\x31\x32\x25\xf8\x84\x06\xe5\xa5\x59\x09\xc5\xaf\xf5\x26\x9a\x86\xa7\xa9\x53\x15\x34\xf7\xda\x2e\x4c\x30\x3d\x8a\x31\x8a\x72\x1c\x3c\x0c\x95\x95\x68\x09\x53\x2f\xcf\x0e\x24\x49\xa6\xb5\x25\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57\xba\x63\x7b\x39",
-     .plaintext_size = 60,
-     .ciphertext = (void*)
+     60,
+     (void*)"\xca\xfe\xba\xbe\xfa\xce\xdb\xad\xde\xca\xf8\x88",
+     (void*)
      "\x42\x83\x1e\xc2\x21\x77\x74\x24\x4b\x72\x21\xb7\x84\xd0\xd4\x9c\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0\x35\xc1\x7e\x23\x29\xac\xa1\x2e\x21\xd5\x14\xb2\x54\x66\x93\x1c\x7d\x8f\x6a\x5a\xac\x84\xaa\x05\x1b\xa3\x0b\x39\x6a\x0a\xac\x97\x3d\x58\xe0\x91",
-     .iv = (void*)"\xca\xfe\xba\xbe\xfa\xce\xdb\xad\xde\xca\xf8\x88",
-     .tag = (void*)
+     (void*)
      "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb\x94\xfa\xe9\x5a\xe7\x12\x1a\x47"}
 };
 
 
 struct aes_vectors_st aes_vectors[] = {
     {
-     .key =
      (uint8_t *)
      "\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-     .plaintext = (uint8_t *)
+     (uint8_t *)
      "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-     .ciphertext = (uint8_t *)
+     (uint8_t *)
      "\x4b\xc3\xf8\x83\x45\x0c\x11\x3c\x64\xca\x42\xe1\x11\x2a\x9e\x87",
      },
     {
-     .key = (uint8_t *)
+     (uint8_t *)
      "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-     .plaintext = (uint8_t *)
+     (uint8_t *)
      "\xf3\x44\x81\xec\x3c\xc6\x27\xba\xcd\x5d\xc3\xfb\x08\xf2\x73\xe6",
-     .ciphertext = (uint8_t *)
+     (uint8_t *)
      "\x03\x36\x76\x3e\x96\x6d\x92\x59\x5a\x56\x7c\xc9\xce\x53\x7f\x5e",
      },
     {
-     .key = (uint8_t *)
+     (uint8_t *)
      "\x10\xa5\x88\x69\xd7\x4b\xe5\xa3\x74\xcf\x86\x7c\xfb\x47\x38\x59",
-     .plaintext = (uint8_t *)
+     (uint8_t *)
      "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-     .ciphertext = (uint8_t *)
+     (uint8_t *)
      "\x6d\x25\x1e\x69\x44\xb0\x51\xe0\x4e\xaa\x6f\xb4\xdb\xf7\x84\x65",
      },
     {
-     .key = (uint8_t *)
+     (uint8_t *)
      "\xca\xea\x65\xcd\xbb\x75\xe9\x16\x9e\xcd\x22\xeb\xe6\xe5\x46\x75",
-     .plaintext = (uint8_t *)
+     (uint8_t *)
      "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-     .ciphertext = (uint8_t *)
+     (uint8_t *)
      "\x6e\x29\x20\x11\x90\x15\x2d\xf4\xee\x05\x81\x39\xde\xf6\x10\xbb",
      },
     {
-     .key = (uint8_t *)
+     (uint8_t *)
      "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe",
-     .plaintext = (uint8_t *)
+     (uint8_t *)
      "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-     .ciphertext = (uint8_t *)
+     (uint8_t *)
      "\x9b\xa4\xa9\x14\x3f\x4e\x5d\x40\x48\x52\x1c\x4f\x88\x77\xd8\x8e",
      },
 };
@@ -351,128 +354,121 @@
 } hash_vectors[] =
 {
     {
-      .name = "SHA1",
-      .algorithm = GNUTLS_MAC_SHA1,
-      .key = NULL,
-      .plaintext =
+      "SHA1",
+      GNUTLS_MAC_SHA1,
+      NULL,
+      0,
             (uint8_t *) "what do ya want for nothing?",
-      .plaintext_size =
             sizeof ("what do ya want for nothing?") - 1,
-      .output =
             (uint8_t *)
             "\x8f\x82\x03\x94\xf9\x53\x35\x18\x20\x45\xda\x24\xf3\x4d\xe5\x2b\xf8\xbc\x34\x32",
-      .output_size = 20,
+      20,
     },
     {
-      .name = "SHA1",
-      .algorithm = GNUTLS_MAC_SHA1,
-      .key = NULL,
-      .plaintext =
+      "SHA1",
+      GNUTLS_MAC_SHA1,
+      NULL,
+      0,
             (uint8_t *)
             "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
-      .plaintext_size = sizeof
+      sizeof
             ("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq")
             - 1,
-      .output =
             (uint8_t *)
             "\xbe\xae\xd1\x6d\x65\x8e\xc7\x92\x9e\xdf\xd6\x2b\xfa\xfe\xac\x29\x9f\x0d\x74\x4d",
-      .output_size = 20,
+      20,
     },
     {
-      .name = "SHA256",
-      .algorithm = GNUTLS_MAC_SHA256,
-      .key = NULL,
-      .plaintext =
+      "SHA256",
+      GNUTLS_MAC_SHA256,
+      NULL,
+      0,
             (uint8_t *)
             "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
-      .plaintext_size = sizeof
+      sizeof
             ("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq")
             - 1,
-      .output =
             (uint8_t *)
             "\x24\x8d\x6a\x61\xd2\x06\x38\xb8\xe5\xc0\x26\x93\x0c\x3e\x60\x39\xa3\x3c\xe4\x59\x64\xff\x21\x67\xf6\xec\xed\xd4\x19\xdb\x06\xc1",
-      .output_size = 32,
+      32,
     },
     {
-      .name = "SHA256",
-      .algorithm = GNUTLS_MAC_SHA256,
-      .key = NULL,
-      .plaintext =
+      "SHA256",
+      GNUTLS_MAC_SHA256,
+      NULL,
+      0,
             (uint8_t *)
             "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
-      .plaintext_size = sizeof
+      sizeof
             ("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq")
             - 1,
-      .output =
             (uint8_t *)
             "\x50\xea\x82\x5d\x96\x84\xf4\x22\x9c\xa2\x9f\x1f\xec\x51\x15\x93\xe2\x81\xe4\x6a\x14\x0d\x81\xe0\x00\x5f\x8f\x68\x86\x69\xa0\x6c",
-      .output_size = 32,
+      32,
     },
     {
-      .name = "SHA512",
-      .algorithm = GNUTLS_MAC_SHA512,
-      .key = NULL,
-      .plaintext =
+      "SHA512",
+      GNUTLS_MAC_SHA512,
+      NULL,
+      0,
             (uint8_t *)
             "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
-      .plaintext_size = sizeof
+      sizeof
             ("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu")
             - 1,
-      .output =
             (uint8_t *)
             "\x8e\x95\x9b\x75\xda\xe3\x13\xda\x8c\xf4\xf7\x28\x14\xfc\x14\x3f\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1\x72\x99\xae\xad\xb6\x88\x90\x18\x50\x1d\x28\x9e\x49\x00\xf7\xe4\x33\x1b\x99\xde\xc4\xb5\x43\x3a\xc7\xd3\x29\xee\xb6\xdd\x26\x54\x5e\x96\xe5\x5b\x87\x4b\xe9\x09",
-      .output_size = 64,
+      64,
     },
     {
-    .name = "HMAC-MD5",.algorithm = GNUTLS_MAC_MD5,.key =
-            (uint8_t *) "Jefe",.key_size = 4,.plaintext =
-            (uint8_t *) "what do ya want for nothing?",.
-            plaintext_size =
-            sizeof ("what do ya want for nothing?") - 1,.output =
+    "HMAC-MD5",GNUTLS_MAC_MD5,
+            (uint8_t *) "Jefe",4,
+            (uint8_t *) "what do ya want for nothing?",
+            sizeof ("what do ya want for nothing?") - 1,
             (uint8_t *)
-            "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03\xea\xa8\x6e\x31\x0a\x5d\xb7\x38",.output_size
-            = 16,}
+            "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03\xea\xa8\x6e\x31\x0a\x5d\xb7\x38",
+            16,}
     ,
         /* from rfc4231 */
     {
-    .name = "HMAC-SHA2-224",.algorithm = GNUTLS_MAC_SHA224,.key =
+    "HMAC-SHA2-224",GNUTLS_MAC_SHA224,
             (uint8_t *)
-            "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",.key_size
-            = 20,.plaintext = (uint8_t *) "Hi There",.plaintext_size =
-            sizeof ("Hi There") - 1,.output =
+            "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
+            20,(uint8_t *) "Hi There",
+            sizeof ("Hi There") - 1,
             (uint8_t *)
-            "\x89\x6f\xb1\x12\x8a\xbb\xdf\x19\x68\x32\x10\x7c\xd4\x9d\xf3\x3f\x47\xb4\xb1\x16\x99\x12\xba\x4f\x53\x68\x4b\x22",.output_size
-            = 28,}
+            "\x89\x6f\xb1\x12\x8a\xbb\xdf\x19\x68\x32\x10\x7c\xd4\x9d\xf3\x3f\x47\xb4\xb1\x16\x99\x12\xba\x4f\x53\x68\x4b\x22",
+            28,}
     ,
     {
-    .name = "HMAC-SHA2-256",.algorithm = GNUTLS_MAC_SHA256,.key =
+    "HMAC-SHA2-256",GNUTLS_MAC_SHA256,
             (uint8_t *)
-            "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",.key_size
-            = 20,.plaintext = (uint8_t *) "Hi There",.plaintext_size =
-            sizeof ("Hi There") - 1,.output =
+            "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
+            20,(uint8_t *) "Hi There",
+            sizeof ("Hi There") - 1,
             (uint8_t *)
-            "\xb0\x34\x4c\x61\xd8\xdb\x38\x53\x5c\xa8\xaf\xce\xaf\x0b\xf1\x2b\x88\x1d\xc2\x00\xc9\x83\x3d\xa7\x26\xe9\x37\x6c\x2e\x32\xcf\xf7",.output_size
-            = 32,}
+            "\xb0\x34\x4c\x61\xd8\xdb\x38\x53\x5c\xa8\xaf\xce\xaf\x0b\xf1\x2b\x88\x1d\xc2\x00\xc9\x83\x3d\xa7\x26\xe9\x37\x6c\x2e\x32\xcf\xf7",
+            32,}
     ,
     {
-    .name = "HMAC-SHA2-384",.algorithm = GNUTLS_MAC_SHA384,.key =
+    "HMAC-SHA2-384",GNUTLS_MAC_SHA384,
             (uint8_t *)
-            "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",.key_size
-            = 20,.plaintext = (uint8_t *) "Hi There",.plaintext_size =
-            sizeof ("Hi There") - 1,.output =
+            "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
+            20,(uint8_t *) "Hi There",
+            sizeof ("Hi There") - 1,
             (uint8_t *)
-            "\xaf\xd0\x39\x44\xd8\x48\x95\x62\x6b\x08\x25\xf4\xab\x46\x90\x7f\x15\xf9\xda\xdb\xe4\x10\x1e\xc6\x82\xaa\x03\x4c\x7c\xeb\xc5\x9c\xfa\xea\x9e\xa9\x07\x6e\xde\x7f\x4a\xf1\x52\xe8\xb2\xfa\x9c\xb6",.output_size
-            = 48,}
+            "\xaf\xd0\x39\x44\xd8\x48\x95\x62\x6b\x08\x25\xf4\xab\x46\x90\x7f\x15\xf9\xda\xdb\xe4\x10\x1e\xc6\x82\xaa\x03\x4c\x7c\xeb\xc5\x9c\xfa\xea\x9e\xa9\x07\x6e\xde\x7f\x4a\xf1\x52\xe8\xb2\xfa\x9c\xb6",
+            48,}
     ,
     {
-    .name = "HMAC-SHA2-512",.algorithm = GNUTLS_MAC_SHA512,.key =
+    "HMAC-SHA2-512",GNUTLS_MAC_SHA512,
             (uint8_t *)
-            "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",.key_size
-            = 20,.plaintext = (uint8_t *) "Hi There",.plaintext_size =
-            sizeof ("Hi There") - 1,.output =
+            "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
+            20,(uint8_t *) "Hi There",
+            sizeof ("Hi There") - 1,
             (uint8_t *)
-            "\x87\xaa\x7c\xde\xa5\xef\x61\x9d\x4f\xf0\xb4\x24\x1a\x1d\x6c\xb0\x23\x79\xf4\xe2\xce\x4e\xc2\x78\x7a\xd0\xb3\x05\x45\xe1\x7c\xde\xda\xa8\x33\xb7\xd6\xb8\xa7\x02\x03\x8b\x27\x4e\xae\xa3\xf4\xe4\xbe\x9d\x91\x4e\xeb\x61\xf1\x70\x2e\x69\x6c\x20\x3a\x12\x68\x54",.output_size
-            = 64,}
+            "\x87\xaa\x7c\xde\xa5\xef\x61\x9d\x4f\xf0\xb4\x24\x1a\x1d\x6c\xb0\x23\x79\xf4\xe2\xce\x4e\xc2\x78\x7a\xd0\xb3\x05\x45\xe1\x7c\xde\xda\xa8\x33\xb7\xd6\xb8\xa7\x02\x03\x8b\x27\x4e\xae\xa3\xf4\xe4\xbe\x9d\x91\x4e\xeb\x61\xf1\x70\x2e\x69\x6c\x20\x3a\x12\x68\x54",
+            64,}
 ,};
 
 #define HASH_DATA_SIZE 64