Version 0.44 - GPR#127: Recognise hyphens in option names in the COFF .drectve section. Fixes #126 (Reza Barazesh) - GPR#136: Fix parallel access crashes and misbehavior (David Allsopp, Jan Midtgaard, Antonin Décimo) - GPR#141: Support relocation kind 0003 (IMAGE_REL_AMD64_ADDR32NB) and IMAGE_REL_I386_DIR32NB. Extend relative types to IMAGE_REL_AMD64_REL32_5. Fixes GPR#29 (Jonah Beckford) - GPR#148: Pass-through -pthread to the linker (Romain Beauxis) - GPR#150: Fix stack reserve incorrectly reading from the start of the PE executable instead of the COFF file header. Fix reading the file address of new exe header. (Antonin Décimo, review by David Allsopp and Nicolás Ojeda Bär) - GPR#153: Allow the names of the compiler binaries to be overridden without losing the flags which go with them to assist use of alternate compilers and for cross-compilation. Fix FlexDLL cross-build on macOS and BSD. (Antonin Décimo, review by Nicolás Ojeda Bär) - GPR#151: Use response files with all toolchains (Puneeth Chaganti, review by David Allsopp and Antonin Décimo) - GPR#152: Use a response file to pass arguments to cygpath (Puneeth Chaganti, review by David Allsopp and Antonin Décimo) - GPR#156: Allow choosing an alternative linker and manifest tool at runtime with -use-linker= and -use-mt=. (Antonin Décimo, review by David Allsopp) - GPR#133, GPR#147: Allow default libraries to be marked as optional (David Allsopp, report by Romain Beauxis) - GPR#157: Improve flexlink support on Unix (for cross-compiling contexts). (Antonin Décimo, review by David Allsopp) - GPR#158: Reuse the compilers used during the build for later operations, such as querying the compilers for their library search paths. Support parsing clang output. (Antonin Décimo, review by David Allsopp) Version 0.43 - GPR#108: Add -lgcc_s to Cygwin's link libraries, upstreaming a patch from the Cygwin flexdll package (David Allsopp) - GPR#112: Put error global variables into thread-local storage (Samuel Hym, Nicolás Ojeda Bär) - GPR#114: Support for /alternatename directive. Fixes GPR#113 (Jonah Beckford) - GPR#116: Remove Cygwin32 (David Allsopp) - GPR#117: Fix handling of object names of length > 16 in archive files. Fixes GPR#101 (Nicolás Ojeda Bär) - GPR#118: Defer the detection of cygpath to the first time it's actually required, reducing the overall number of calls. Further, detect whether mingw-w64 gcc's library path requires cygpath, which further reduces the calls when using Cygwin's build of mingw-w64 as the search path is then converted only once. In passing, this trivially adds support for MSYS2's mingw-w64 compilers, fixing GPR#97. (David Allsopp) Version 0.42 - GPR#106: Support -l: syntax, to allow static linking of specific libraries (David Allsopp) - GPR#103: Delete objects from C files compiled by flexlink (David Allsopp, report by Xavier Leroy) - GPR#85: Split multiple arguments passed with a single -Wl (David Allsopp) Version 0.41 - GPR#98: Eliminate Warning 6 compiling coff.ml (David Allsopp) - GPR#99: Harden version number parsing from ocamlopt -version (David Allsopp) Version 0.40 - GPR#65: Support for compiling objects with /bigobj (Extended COFF) (Dmitry Bely) - GPR#80: Silence MSVC filenames for long commands as well as short ones (David Allsopp) - GPR#94: Fix parsing of COFF archives to ignore headers, allowing the Windows 11 SDK to be used. (David Allsopp) - GPR#96: Suppress volatile metadata on versions of MSVC which support it (David Allsopp) - GPR#88: Correctly handle relative search paths coming from gcc -print-search-dirs (Boris Yakobowski) Version 0.39 - GPR#89: Stop passing --image-base on Cygwin64 - Cygwin64 DLLs should load at 0x4:00000000-0x6:00000000 if not rebased or 0x2:00000000-0x4:00000000 if rebased. (David Allsopp) - GPR#90: Fix passing NULL to flexdll_dlopen on non-Cygwin builds (David Allsopp) Version 0.38 - GPR#58: Bug fix: fix -custom-crt regression (Dmitry Bely) - GPR#61: Ignore x64 debug relocs (Dmitry Bely) - GPR#49: Adding support for 64bit GNAT compiler (Johannes Kanig) - GPR#64: Fix problem with setting page permission during relocation (report by Dmitry Bely) - GPR#48: Enable linking of C++ object files for mingw ports (David Allsopp) - GPR#81, GPR#84: use msvs-detect (from metastack/msvs-tools) for detecting Windows SDK or Visual Studio (David Allsopp) - GPR#78: Eliminate deprecation warnings on OCaml 4.08+ (Bernhard Schommer) - GPR#68: fix incorrect calculation of maximum path length (Bryan Phelps and David Allsopp) - GPR#3: Recognise data symbols in import libraries (Andreas Hauptmann) - GPR#73: Pass GCC-style linker options (-Wl,...) onto the the linker (Michael Soegtrop) Version 0.37 - Bug fix: the IMAGE_SCN_LNK_NRELOC_OVFL section flag was not propertly reset when the number of relocations was reduced enough to fit in the 16-bit field, causing https://caml.inria.fr/mantis/view.php?id=7603 - Support for passing argument through external files (-arg/-arg0) (Bernhard Schommer) - Fix encoding of high surrogate for U+10000-U+10FFFF in UTF-16 response files (David Allsopp) Version 0.36 - Add Unicode support (patch by Nicolás Ojeda Bär) - Workaround apparent bug in VS 2017.3 link (patch by David Allsopp) - Additional heuristic for -lfoo on MSVC: try libfoo.lib but then try foo.lib (David Allsopp) Version 0.35 - Fixes for clang (patch by Roven Gabriel) - Improve autodetection of WinSDK paths (patch by David Allsopp) - Add MSVC_DETECT Makefile variable which overrides all C Compiler detection logic when 0. - Add checkenv script which determines if the environment is sound specifying MSVC_DETECT=0 - Improve performance of -builtin - Better support for @response files, which can contain options in addition to filenames (patch by Bernhard Schommer) - Ignore "-g" (passed by OCaml when building ocamlrund) (patch by whitequark) - Uses gcc -print-search-dirs instead of gcc -print-sysroot when figuring out the default library search paths (patch by whitequark) - Modernize code for OCaml 4.03 (patch for compatibility layers for earlier versions by David Allsopp) - Better support for long command line when calling the toolchain linker - Do not perform relocation from the DLL entry point when the DLL is loaded in "not for execution mode" (http://caml.inria.fr/mantis/view.php?id=7268) - Fix -stack for Cygwin (when the resulting executable is called XXX.exe, not XXX) Version 0.34 - New option -norelrelocs to check that no relative flexdll relocations are created (this ensures that the generated DLLs can be loaded at any address), - New option -base to specify the image base address (msvc64 only). - Always generate a table for used __flimp_XXX symbols (even when X is defined in the generated image). - Fix bug with empty sections in "-builtin" mode - -builtin: Generate proper ADDR64 instead of HIGHLOW (32-bit) relocations in the dll Version 0.33 - Turn 'too far' messages into proper errors, avoid terminating the process Version 0.31 - Support for "@respfiles" arguments (for long command lines). Used to be implemented by OCaml runtime system. - Fix bug when relocation counter > 0xffff - Fix bug with REL32 relocations on non-zero base in DLLs - Fix bug with empty .a files Version 0.30 - Allow the internal linker to create large DLLs (>= 16Mb) Version 0.29 - use "cygpath -S", not "cygpath -v" which no longer exists Version 0.28 - new option '-stack' to set the stack reserve - new option '-patch' (to be used in conjunction with -stack and -o to patch the an existing image) Version 0.27 - support for mingw64; the mingw toolcgain now relies on the 32-bit version of mingw64; the old "gcc -mno-cygwin" is no longer supporte. Patch from Antointe Mine: http://caml.inria.fr/mantis/view.php?id=5179 - fix directive parsing bug (http://caml.inria.fr/mantis/view.php?id=5339) - support for new file layout for cygwin's version of mingw - support for objects with more than 65536 relocations Version 0.26 - fix for Win64 (use a PE32+ optional header, and a lower base address) - use _putenv_s instead of putenv for FLEXDLL_RELOCATE (thanks to Yasutaka Atarashi) - use /dev/null instead of NUL for Cygwin (thanks to Yasutaka Atarashi) Version 0.25 - fix a bug with archive member names that contain a slash Version 0.24 - add new toolchain msvc64; replace the old combination "-chain msvc -x64" (-x64 has been removed) - change build system to create a single binary version of flexdll that includes both the 32-bit and 64-bit version for MSVC's support objects - switch to Visual Studio 2008 (to compile the binary distribution and for the default manifests) Version 0.23 - ignore -D and -U flags (OCaml PR #4979) - change limit before using a response file (OCaml PR #4645) Version 0.22 - fix a bug when emitting IMAGE_COMDAT_SELECT_ASSOCIATIVE symbols Version 0.21 - always use bash to call external commands under Cygwin (to make it work when gcc is a symlink) Version 0.20 - (build) Avoid the use of the rc tool - (dist) add version.rc to the source release - Allow "/link XXX" as an equivalent to "-link XXX" (or "/linkXXX") - Use an explicit .def file under MinGW and Cygwin to force the two symbols reloctbl and symtbl to be exported - Fixes for x64 - Allow to write sections with more than 0xffff relocations - Create a Win32 installer Version 0.19 - fix bug introduced in version 0.17 about virtual addresses for the builtin linker mode Version 0.18 - support for .sxdata section Version 0.17 - patch from Lars Nilsson to ease compilation of flexdll.h with C++ - prefer using XXX.dll.a (import lib) over XXX.a (static lib) - fix bug introduced in commit 136 about virtual addresses Version 0.16 - New -noexport command line option to force an empty symbol table Version 0.15, released on 2009-02-25 - protects calls to cygpath with long command lines (patch from Matthieu Dubuget) - always pass msvcrt.lib to link.exe Version 0.14, released on 2008-28-01 - mingw port: put /lib/mingw before /lib - support for a built-in linker Version 0.13, released on 2008-11-20 - another technique to work around the lack of response file for gcc: put the command line in an external bash script and apply bash to it (relies on the fact that Cygwin programs can call Cygwin programs with long command lines); this idea is from Xavier Leroy - the -subsystem switch is now supported for the mingw toolchain Version 0.12, released on 2008-11-17 - gcc 3 does not support response files; to support longer command lines, we use a custom replacement for cmd.exe (which restricts the length of the command line to 8kB whereas Windows supports 32kB) - patch for Richard Jones: do not find directories when looking for a file Version 0.11, released on 2008-11-10 - compiled with mingw port so as to depend on msvcrt.dll, not msvcr80.dll - experimental support for directly calling "ld" instead of "gcc" - by default, reexport symbols imported from an import library - quote the response file argument - use slashes instead of backslashed in response file (needed for mingw's ld) - by default, use the real manifest Version 0.10, released on 2008-10-21 - use "gcc -mno-cygwin -print-libgcc-file-name" to get the standard library directory for mingw - lower the length threshold to use a diversion file when calling the linker with many arguments Version 0.9, released on 2008-09-18 - fix bug with COFF symbols for sections (with more than 1 auxilliary block) - ignore debug relocations on x86 (of kind 0x000a, 0x000b) Version 0.8, released on 2008-03-10 - new -no-merge-manifest Version 0.7, released on 2008-03-09 - allow .dll.a as automatic extension for libraries - minor bug fixes Version 0.6, released on 2008-02-11 - support COMDAT section symbols - support mixed libraries (import library + regular objects) - optimizations (do not rewrite library objects when not needed, pass the lib to the linker) - new -real-manifest, replace -default-manifest - new -implib option - new -outdef option - new zlib/libpng license Version 0.5, released on 2008-01-11 - new -default-manifest option (always on, currently) - use a temp file name for getting the output of commands (allow several instances of flexlink to run in parallel) Version 0.4, released on 2008-01-02 - Code cleanup - FLEXLINKFLAGS env var to pass extra arguments Version 0.3, released on 2007-11-20 - Make it work under x86_64 - New -subsystem option (currently for MSVC chain only) - New -explain option - New -link option Version 0.2, released on 2007-11-06 - New -maindll option (to build a DLL that contains the "main program" from FlexDLL's point of view) - Can now explicitly enable/disable the use of cygpath (on by default only for Cygwin) - New -L xxx (or -Lxxx) option - New -where option - FLEXDIR environment variable (where to look for FlexDLL's .obj files) Version 0.1, released on 2007-06-14 - Initial release