]> git.ipfire.org Git - thirdparty/strongswan.git/log
thirdparty/strongswan.git
12 years agolibimcv: Pass TNC_SESSION_ID as argument instead as a environment variable
Martin Willi [Thu, 6 Mar 2014 18:08:24 +0000 (19:08 +0100)] 
libimcv: Pass TNC_SESSION_ID as argument instead as a environment variable

Doing so works on Windows as well.

12 years agolibimcv: Be a little more verbose about the Windows system reported
Martin Willi [Thu, 6 Mar 2014 16:35:51 +0000 (17:35 +0100)] 
libimcv: Be a little more verbose about the Windows system reported

12 years agoimv: Return an empty enumerator instead of null, as expected by callers
Martin Willi [Thu, 6 Mar 2014 16:25:21 +0000 (17:25 +0100)] 
imv: Return an empty enumerator instead of null, as expected by callers

12 years agoimc-os: Add missing TNC_IMC_API definitions, fixes warnings on Windows
Martin Willi [Thu, 6 Mar 2014 16:24:49 +0000 (17:24 +0100)] 
imc-os: Add missing TNC_IMC_API definitions, fixes warnings on Windows

12 years agoimv-os: Don't build pacman on Windows
Martin Willi [Thu, 6 Mar 2014 16:24:27 +0000 (17:24 +0100)] 
imv-os: Don't build pacman on Windows

12 years agofile-logger: Emulate setlinebuf() if not supported by using fflush()
Martin Willi [Wed, 5 Mar 2014 15:28:38 +0000 (16:28 +0100)] 
file-logger: Emulate setlinebuf() if not supported by using fflush()

12 years agocharon-svc: When running as service, change working directory to executable
Martin Willi [Wed, 5 Mar 2014 14:45:42 +0000 (15:45 +0100)] 
charon-svc: When running as service, change working directory to executable

Services get executed with system32 as current working directory. This does
not work for us, as we expect paths to be relative to the executable.

12 years agoopenssl: Be less verbose about FIPS mode when not running as daemon
Martin Willi [Wed, 5 Mar 2014 11:18:33 +0000 (12:18 +0100)] 
openssl: Be less verbose about FIPS mode when not running as daemon

While this is valuable information, printing it for pki and other tools is
annoying.

12 years agounit-tests: Adapt settings tests for Windows
Martin Willi [Tue, 4 Mar 2014 13:00:11 +0000 (14:00 +0100)] 
unit-tests: Adapt settings tests for Windows

12 years agoswanctl: Concatenate relative certificate paths correctly on Windows
Martin Willi [Thu, 15 May 2014 13:12:35 +0000 (15:12 +0200)] 
swanctl: Concatenate relative certificate paths correctly on Windows

12 years agoparser-helper: Detect absolute pathnames and concatenate paths on Windows
Martin Willi [Tue, 4 Mar 2014 12:59:04 +0000 (13:59 +0100)] 
parser-helper: Detect absolute pathnames and concatenate paths on Windows

12 years agoutils: Provide a path_absolute() function to check path for non-relativeness
Martin Willi [Fri, 7 Mar 2014 11:25:31 +0000 (12:25 +0100)] 
utils: Provide a path_absolute() function to check path for non-relativeness

The usually used trivial '/' check won't work on Windows platforms.

12 years agoutils: Return plain drive letter as base/pathname for drive letters on Windows
Martin Willi [Fri, 7 Mar 2014 13:16:50 +0000 (14:16 +0100)] 
utils: Return plain drive letter as base/pathname for drive letters on Windows

12 years agoutils: Support Windows path separators in path_basename/dirname
Martin Willi [Fri, 7 Mar 2014 11:12:55 +0000 (12:12 +0100)] 
utils: Support Windows path separators in path_basename/dirname

12 years agoutils: Define a platform directory separator character used in paths
Martin Willi [Tue, 4 Mar 2014 12:58:20 +0000 (13:58 +0100)] 
utils: Define a platform directory separator character used in paths

12 years agoconfigure: Separate pki from --disable-tools
Martin Willi [Tue, 4 Mar 2014 11:24:52 +0000 (12:24 +0100)] 
configure: Separate pki from --disable-tools

While pki builds and runs just fine on Windows, this is not true for scepclient.

12 years agowindows: Provide a getpass() implementation
Martin Willi [Thu, 20 Feb 2014 10:30:17 +0000 (11:30 +0100)] 
windows: Provide a getpass() implementation

12 years agoconfigure: Check if __attribute__((packed)) works as expected
Martin Willi [Wed, 15 Jan 2014 16:01:24 +0000 (17:01 +0100)] 
configure: Check if __attribute__((packed)) works as expected

This is really hard to detect if not, and is not unlikely. If -mms-bitfields
is given, the attribute does not work. Even worse, that switch is by default
on with GCC/MinGW 4.7+ for Windows targets.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52991

12 years agolibpts: Use chunk_map() to load AIK blob
Martin Willi [Mon, 13 Jan 2014 15:21:36 +0000 (16:21 +0100)] 
libpts: Use chunk_map() to load AIK blob

12 years agochunk: On Windows, chunk_map() opens files in binary mode
Martin Willi [Mon, 13 Jan 2014 15:20:19 +0000 (16:20 +0100)] 
chunk: On Windows, chunk_map() opens files in binary mode

12 years agolibpts: Fix PCR read, avoid cast of a pointer to different sized integer
Martin Willi [Thu, 9 Jan 2014 16:29:35 +0000 (17:29 +0100)] 
libpts: Fix PCR read, avoid cast of a pointer to different sized integer

12 years agolibpts: Parse TPM version info without TrouSerS helper function
Martin Willi [Thu, 9 Jan 2014 16:25:37 +0000 (17:25 +0100)] 
libpts: Parse TPM version info without TrouSerS helper function

Trspi_UnloadBlob_CAP_VERSION_INFO() is a TrouSerS specific function, not
available on all platforms.

12 years agolibnccs: Fix casts between integers and pointers
Martin Willi [Thu, 9 Jan 2014 14:00:09 +0000 (15:00 +0100)] 
libnccs: Fix casts between integers and pointers

12 years agotnc-imc/imv: Don't include <dlfcn.h> on Windows
Martin Willi [Thu, 9 Jan 2014 13:59:25 +0000 (14:59 +0100)] 
tnc-imc/imv: Don't include <dlfcn.h> on Windows

12 years agolibtnccs: Use a default tnc_config in the current working dir on Windows
Martin Willi [Thu, 9 Jan 2014 13:58:32 +0000 (14:58 +0100)] 
libtnccs: Use a default tnc_config in the current working dir on Windows

12 years agolibpts: Work around BASETSD_H define mismatch between MinGW and TSS
Martin Willi [Wed, 8 Jan 2014 15:45:09 +0000 (16:45 +0100)] 
libpts: Work around BASETSD_H define mismatch between MinGW and TSS

12 years agoimc-attestation: Use TNC_IMV_API prefix on TNC functions for correct declspec
Martin Willi [Wed, 8 Jan 2014 11:24:37 +0000 (12:24 +0100)] 
imc-attestation: Use TNC_IMV_API prefix on TNC functions for correct declspec

12 years agolibimcv: Use TNC_IMV_API prefix on TNC functions for correct declspec
Martin Willi [Wed, 8 Jan 2014 11:23:13 +0000 (12:23 +0100)] 
libimcv: Use TNC_IMV_API prefix on TNC functions for correct declspec

12 years agolibimcv: Silence integer to pointer cast warnings
Martin Willi [Wed, 8 Jan 2014 11:17:01 +0000 (12:17 +0100)] 
libimcv: Silence integer to pointer cast warnings

12 years agopt-tls-client: Support platforms not having syslog()
Martin Willi [Mon, 2 Jun 2014 09:55:59 +0000 (11:55 +0200)] 
pt-tls-client: Support platforms not having syslog()

12 years agopt-tls-client: Remove unneeded socket.h include, fixing Windows build
Martin Willi [Wed, 8 Jan 2014 11:04:31 +0000 (12:04 +0100)] 
pt-tls-client: Remove unneeded socket.h include, fixing Windows build

12 years agoattest: Disable syslog logging if syslog() missing
Martin Willi [Wed, 8 Jan 2014 11:03:58 +0000 (12:03 +0100)] 
attest: Disable syslog logging if syslog() missing

12 years agolibpts: Fix build on Windows
Martin Willi [Wed, 8 Jan 2014 11:00:06 +0000 (12:00 +0100)] 
libpts: Fix build on Windows

12 years agolibpts: Link against ws_w32 on Windows
Martin Willi [Wed, 8 Jan 2014 10:59:50 +0000 (11:59 +0100)] 
libpts: Link against ws_w32 on Windows

12 years agolibimcv: Port os_info (partially) to Windows
Martin Willi [Wed, 8 Jan 2014 10:56:55 +0000 (11:56 +0100)] 
libimcv: Port os_info (partially) to Windows

12 years agolibimcv: Disable default syslog() logging if not supported
Martin Willi [Wed, 8 Jan 2014 10:29:41 +0000 (11:29 +0100)] 
libimcv: Disable default syslog() logging if not supported

12 years agolibimcv: Link against ws_w32 on Windows
Martin Willi [Wed, 8 Jan 2014 10:56:44 +0000 (11:56 +0100)] 
libimcv: Link against ws_w32 on Windows

12 years agolibpttls: Link against ws_w32 on Windows
Martin Willi [Wed, 8 Jan 2014 10:07:01 +0000 (11:07 +0100)] 
libpttls: Link against ws_w32 on Windows

12 years agolibtnccs: Link against ws_w32 on Windows
Martin Willi [Wed, 8 Jan 2014 10:06:50 +0000 (11:06 +0100)] 
libtnccs: Link against ws_w32 on Windows

12 years agolibtls: Link against ws_w32 on Windows
Martin Willi [Wed, 8 Jan 2014 10:06:18 +0000 (11:06 +0100)] 
libtls: Link against ws_w32 on Windows

12 years agobus: Build syslog logger depending on syslog() availability
Martin Willi [Wed, 8 Jan 2014 10:28:49 +0000 (11:28 +0100)] 
bus: Build syslog logger depending on syslog() availability

12 years agowindows: Include for Vista instead of defining CondVar/SRWLock functions ourself
Martin Willi [Thu, 2 Jan 2014 17:14:51 +0000 (18:14 +0100)] 
windows: Include for Vista instead of defining CondVar/SRWLock functions ourself

12 years agowindows: Don't redeclare inet_ntop/pton if already defined
Martin Willi [Thu, 2 Jan 2014 14:20:14 +0000 (15:20 +0100)] 
windows: Don't redeclare inet_ntop/pton if already defined

12 years agowindows: Check for existence of error codes before defining them
Martin Willi [Thu, 2 Jan 2014 13:34:00 +0000 (14:34 +0100)] 
windows: Check for existence of error codes before defining them

12 years agowindows: Check for clock_gettime() function itself as well
Martin Willi [Thu, 2 Jan 2014 13:30:45 +0000 (14:30 +0100)] 
windows: Check for clock_gettime() function itself as well

CLOCK_THREAD_CPUTIME_ID seems to be defined sometimes even if clock_gettime() is
missing.

12 years agowindows: Overload sleep() cancellable when it is defined in <unistd.h>
Martin Willi [Thu, 2 Jan 2014 13:29:35 +0000 (14:29 +0100)] 
windows: Overload sleep() cancellable when it is defined in <unistd.h>

12 years agosqlite: Avoid name clash when building on Windows
Martin Willi [Mon, 2 Dec 2013 10:36:34 +0000 (11:36 +0100)] 
sqlite: Avoid name clash when building on Windows

12 years agomysql: Add Windows support
Martin Willi [Fri, 22 Nov 2013 08:08:09 +0000 (09:08 +0100)] 
mysql: Add Windows support

As the mysql_config script is not available for Windows, we use a hardcoded
library name and no additional CFLAGS. This builds fine against the binary
MySQL Connector/C distribution.

12 years agocharon-svc: Implement a Windows IKE service using libcharon
Martin Willi [Tue, 29 Oct 2013 16:33:33 +0000 (17:33 +0100)] 
charon-svc: Implement a Windows IKE service using libcharon

The resulting binary can be either run as Windows service or directly as
console application.

12 years agolibcharon: Link against Winsock2 on Windows
Martin Willi [Tue, 29 Oct 2013 09:59:08 +0000 (10:59 +0100)] 
libcharon: Link against Winsock2 on Windows

12 years agofilelog: Ignore flush_line option if setlinebuf() not supported
Martin Willi [Tue, 29 Oct 2013 09:58:39 +0000 (10:58 +0100)] 
filelog: Ignore flush_line option if setlinebuf() not supported

12 years agowindows: Provide a close(2) that can close both file handles and sockets
Martin Willi [Thu, 21 Nov 2013 15:27:21 +0000 (16:27 +0100)] 
windows: Provide a close(2) that can close both file handles and sockets

12 years agochunk: Fallback to recv() on Windows chunk_from_fd() when operating on socket
Martin Willi [Thu, 21 Nov 2013 15:27:50 +0000 (16:27 +0100)] 
chunk: Fallback to recv() on Windows chunk_from_fd() when operating on socket

12 years agowindows: Don't use function macros to overload send/recv() and friends
Martin Willi [Tue, 29 Oct 2013 09:48:09 +0000 (10:48 +0100)] 
windows: Don't use function macros to overload send/recv() and friends

While the macro versions would not catch non-function invocations, we actually
have to use catch all to support the sender_t.send() function.

12 years agocontroller: Remove unused <dlfcn.h> include
Martin Willi [Tue, 29 Oct 2013 09:47:36 +0000 (10:47 +0100)] 
controller: Remove unused <dlfcn.h> include

12 years agocharon: Don't use syslog() if not supported
Martin Willi [Tue, 29 Oct 2013 09:46:30 +0000 (10:46 +0100)] 
charon: Don't use syslog() if not supported

12 years agoencoding: Don't explicitly include <arpa/inet.h>
Martin Willi [Tue, 29 Oct 2013 09:45:43 +0000 (10:45 +0100)] 
encoding: Don't explicitly include <arpa/inet.h>

12 years agopayload: Use common prefixes for all payload type identifiers
Martin Willi [Tue, 29 Oct 2013 09:09:39 +0000 (10:09 +0100)] 
payload: Use common prefixes for all payload type identifiers

The old identifiers did not use a proper namespace and often clashed with
other defines.

12 years agowindows: Never link to libpthread
Martin Willi [Wed, 6 Nov 2013 10:17:01 +0000 (11:17 +0100)] 
windows: Never link to libpthread

12 years agoopenssl: Fix includes to prevent <winsock2.h> to complain about include order
Martin Willi [Fri, 25 Oct 2013 15:30:27 +0000 (17:30 +0200)] 
openssl: Fix includes to prevent <winsock2.h> to complain about include order

12 years agoopenssl: Undef OpenSSLs X509_NAME defined by <wincrypt.h>
Martin Willi [Fri, 25 Oct 2013 15:29:31 +0000 (17:29 +0200)] 
openssl: Undef OpenSSLs X509_NAME defined by <wincrypt.h>

12 years agoopenssl: Check and link against libeay32 instead of libcrypto on Windows
Martin Willi [Fri, 25 Oct 2013 15:28:13 +0000 (17:28 +0200)] 
openssl: Check and link against libeay32 instead of libcrypto on Windows

Most Windows OpenSSL builds come with the crypto library named libeay32.

12 years agowindows: Provide a strndup(3) replacement
Martin Willi [Fri, 25 Oct 2013 14:41:48 +0000 (16:41 +0200)] 
windows: Provide a strndup(3) replacement

12 years agosha1: Include <library.h> instead of directly including <arpa/inet.h>
Martin Willi [Fri, 25 Oct 2013 14:41:04 +0000 (16:41 +0200)] 
sha1: Include <library.h> instead of directly including <arpa/inet.h>

On Windows we don't have <arpa/inet.h>

12 years agox509: Undef OCSP_RESPONSE from <wincrypt.h> before using it
Martin Willi [Fri, 25 Oct 2013 14:40:32 +0000 (16:40 +0200)] 
x509: Undef OCSP_RESPONSE from <wincrypt.h> before using it

12 years agoplugins: Don't link with -rdynamic on Windows
Martin Willi [Fri, 25 Oct 2013 14:03:47 +0000 (16:03 +0200)] 
plugins: Don't link with -rdynamic on Windows

12 years agounit-tests: Uninline dlopen() and friends, make more dynamic, fix dlerror()
Martin Willi [Fri, 25 Oct 2013 14:03:07 +0000 (16:03 +0200)] 
unit-tests: Uninline dlopen() and friends, make more dynamic, fix dlerror()

As the error string contains a newline, we have to remove that before
returning the string.

12 years agothread-value: Immediately cleanup all Windows TLS values on destroy
Martin Willi [Fri, 6 Dec 2013 10:33:40 +0000 (11:33 +0100)] 
thread-value: Immediately cleanup all Windows TLS values on destroy

12 years agowindows: Prevent queueing of multiple thread cancel APCs
Martin Willi [Wed, 28 May 2014 15:34:48 +0000 (17:34 +0200)] 
windows: Prevent queueing of multiple thread cancel APCs

This avoids any races during cleanup invocation if multiple cancel() requests
come in.

12 years agowindows: Provide a complete native Windows threading backend
Martin Willi [Mon, 21 Oct 2013 16:07:51 +0000 (18:07 +0200)] 
windows: Provide a complete native Windows threading backend

12 years agowindows: Provide a cancellable usleep(), but with ms resolution only
Martin Willi [Wed, 23 Oct 2013 13:50:10 +0000 (15:50 +0200)] 
windows: Provide a cancellable usleep(), but with ms resolution only

12 years agowindows: Add a sleep function acting as cancellation point
Martin Willi [Mon, 21 Oct 2013 14:58:54 +0000 (16:58 +0200)] 
windows: Add a sleep function acting as cancellation point

12 years agowindows: Provide a sched_yield() implementation
Martin Willi [Wed, 23 Oct 2013 14:44:14 +0000 (16:44 +0200)] 
windows: Provide a sched_yield() implementation

12 years agolibipsec: Avoid name clash with sched.h clone()
Martin Willi [Mon, 10 Mar 2014 16:06:57 +0000 (17:06 +0100)] 
libipsec: Avoid name clash with sched.h clone()

12 years agowindows: Provide a time_monotonic() based on GetTickCount64()
Martin Willi [Fri, 18 Oct 2013 12:19:32 +0000 (14:19 +0200)] 
windows: Provide a time_monotonic() based on GetTickCount64()

12 years agolibrary: Change init/deinit order to allow utils to depend on threading
Martin Willi [Mon, 21 Oct 2013 11:00:29 +0000 (13:00 +0200)] 
library: Change init/deinit order to allow utils to depend on threading

12 years agochunk: Don't depend on pthread directly
Martin Willi [Fri, 18 Oct 2013 13:04:55 +0000 (15:04 +0200)] 
chunk: Don't depend on pthread directly

12 years agoutils: Don't directly depend on pthread
Martin Willi [Wed, 28 May 2014 10:17:15 +0000 (12:17 +0200)] 
utils: Don't directly depend on pthread

12 years agostrerror: Don't directly depend on pthread
Martin Willi [Wed, 28 May 2014 10:15:10 +0000 (12:15 +0200)] 
strerror: Don't directly depend on pthread

12 years agowindows: Link libhydra against Winsock2
Martin Willi [Thu, 17 Oct 2013 15:12:34 +0000 (17:12 +0200)] 
windows: Link libhydra against Winsock2

12 years agowindows: Provide a strdup variant safe when passing zero-length strings
Martin Willi [Thu, 17 Oct 2013 14:23:43 +0000 (16:23 +0200)] 
windows: Provide a strdup variant safe when passing zero-length strings

12 years agounit-tests: Don't test Unix socket stream/services on Windows
Martin Willi [Thu, 17 Oct 2013 13:09:17 +0000 (15:09 +0200)] 
unit-tests: Don't test Unix socket stream/services on Windows

12 years agounit-tests: Use send/recv on socket in watcher tests
Martin Willi [Wed, 16 Oct 2013 17:32:15 +0000 (19:32 +0200)] 
unit-tests: Use send/recv on socket in watcher tests

Windows does not support read/write on sockets.

12 years agostream: Separate TCP/Unix stream helpers from stream/service implementations
Martin Willi [Fri, 11 Oct 2013 13:32:10 +0000 (15:32 +0200)] 
stream: Separate TCP/Unix stream helpers from stream/service implementations

This allows us to disable Unix sockets cleanly on Windows. Replaces some
read/write calls with recv/send counterparts, as Winsock does not like
read/writes.

12 years agowatcher: Add Windows support
Martin Willi [Thu, 17 Oct 2013 09:56:15 +0000 (11:56 +0200)] 
watcher: Add Windows support

Instead of a pipe we use a TCP socketpair (can't select() a _pipe()), and
Windsock2 send/recv functions instead of read/write.

Currently supported (and required) are file descriptors provided by Winsock
only; we might use a separate mechanism for traditional file handles if
required (or switch to Windows events and WaitForMultipleObjects) for a future
version.

12 years agowindows: Map WSAGetLastError() to errno failures in wrapped send/recv/from/to
Martin Willi [Thu, 17 Oct 2013 09:32:48 +0000 (11:32 +0200)] 
windows: Map WSAGetLastError() to errno failures in wrapped send/recv/from/to

12 years agowindows: Add send/recv and sendto/recvfrom wrappers supporting MSG_DONTWAIT
Martin Willi [Wed, 16 Oct 2013 16:31:24 +0000 (18:31 +0200)] 
windows: Add send/recv and sendto/recvfrom wrappers supporting MSG_DONTWAIT

12 years agowindows: Implement socketpair() using TCP sockets
Martin Willi [Wed, 16 Oct 2013 15:44:32 +0000 (17:44 +0200)] 
windows: Implement socketpair() using TCP sockets

12 years agowindows: Add utils_init/deinit functions to initialize Winsock2
Martin Willi [Wed, 16 Oct 2013 15:27:19 +0000 (17:27 +0200)] 
windows: Add utils_init/deinit functions to initialize Winsock2

12 years agowindows: Provide a setenv() wrapper
Martin Willi [Tue, 15 Oct 2013 16:27:27 +0000 (18:27 +0200)] 
windows: Provide a setenv() wrapper

12 years agounit-tests: Use Windows path for chunk tests, and socket functions if required
Martin Willi [Thu, 21 Nov 2013 15:26:18 +0000 (16:26 +0100)] 
unit-tests: Use Windows path for chunk tests, and socket functions if required

12 years agounit-tests: Don't depend on sockaddr_un to test invalid host_t family
Martin Willi [Tue, 15 Oct 2013 16:12:39 +0000 (18:12 +0200)] 
unit-tests: Don't depend on sockaddr_un to test invalid host_t family

12 years ago.gitignore: Add Windows .exe files
Martin Willi [Tue, 15 Oct 2013 16:09:06 +0000 (18:09 +0200)] 
.gitignore: Add Windows .exe files

12 years agounit-tests: Add support for Windows build
Martin Willi [Tue, 15 Oct 2013 15:40:58 +0000 (17:40 +0200)] 
unit-tests: Add support for Windows build

Instead of signals we catch Windows exceptions. Currently not supported are
timers, which is more a convenience thing anyway.

12 years agowindows: Fix up PRI* printf formatters when building against own backend
Martin Willi [Tue, 15 Oct 2013 15:40:06 +0000 (17:40 +0200)] 
windows: Fix up PRI* printf formatters when building against own backend

12 years agowindows: Use localtime/gmtime to implement _r variants
Martin Willi [Tue, 15 Oct 2013 14:23:44 +0000 (16:23 +0200)] 
windows: Use localtime/gmtime to implement _r variants

The _s variants and friends do not seem to work on Windows 7 and always fail.

12 years agoasn1: Return a zeroed ASN1 time if gmtime_r() conversion fails
Martin Willi [Tue, 15 Oct 2013 14:11:19 +0000 (16:11 +0200)] 
asn1: Return a zeroed ASN1 time if gmtime_r() conversion fails

12 years agoutils: Printf() defined time output should gmtime/localtime_r() fail
Martin Willi [Tue, 15 Oct 2013 14:10:05 +0000 (16:10 +0200)] 
utils: Printf() defined time output should gmtime/localtime_r() fail

12 years agobacktrace: Inline esc() helper, making it available to all build variants
Martin Willi [Thu, 2 Jan 2014 13:33:32 +0000 (14:33 +0100)] 
backtrace: Inline esc() helper, making it available to all build variants

12 years agobacktrace: Support backtraces on Windows without DbgHelp
Martin Willi [Tue, 19 Nov 2013 17:40:51 +0000 (18:40 +0100)] 
backtrace: Support backtraces on Windows without DbgHelp

While DbgHelp provides a convenient API to create backtraces, any executable
linking against DbgHelp gets a more than a significant slow down. Further, it
can only lookup global symbols, as it expects PDB files we can't produce with a
MinGW build.

With some core Kernel32.dll functionality, we can capture stack traces much
faster. Together with the optional libbfd, we can print very fine backtraces.

When --enable-bfd-backtraces is used on Windows, a libbfd.dll is required for
the build. Such a DLL can be created from the binutils sources using:

  # build binutils with mingw...

  # extract archive members from binutils libraries
  x86_64-w64-mingw32-ar x $BINUTILS/bfd/.libs/libbfd.a
  x86_64-w64-mingw32-ar x $BINUTILS/intl/libintl.a
  x86_64-w64-mingw32-ar x $BINUTILS/libiberty/libiberty.a

  # create self-contained libbfd.a, with index
  x86_64-w64-mingw32-ar qs libbfd.a *.o

  # create DLL from static library
  x86_64-w64-mingw32-dlltool -e libbfd.o -l libbfd.lib libbfd.a
  x86_64-w64-mingw32-gcc -shared libbfd.a libbfd.o -o libbfd.dll