1
0
mirror of https://github.com/skeeto/w64devkit.git synced 2026-10-24 17:39:18 +03:00
Commit Graph

181 Commits

Author SHA1 Message Date
Christopher Wellons
308f5abc19 Import Peter0x44's printf %g patch 2025-10-11 09:48:39 -04:00
Christopher Wellons
0019476f03 Upgrade to expat 2.7.2 (#164)
Also switch to GitHub releases because it apparently not subject to
naive Expat security policies, making it more reliable. Expat only
parses trusted inputs in w64dk, and so is unaffected by security issues.
Updates are generally unnecessary. Unfortunately Expat's repository has
an unconventiontional tagging convention, and tags do not exactly match
the version, so the ARG will no longer work on its own, which is why I
had avoided its GitHub releases for so long.
2025-09-23 09:36:17 -04:00
Christopher Wellons
90c2621c4e Add uuidgen utility, a clone of Microsoft uuidgen
The original uuidgen utility complements midl, and this rewrite
complements the recently-added widl.
2025-09-14 21:20:09 -04:00
Christopher Wellons
bfd6577d07 Move w64devkit.ini to the root to mirror "installs"
One of my goals is that the distribution can be re-built in place using
only Docker or Podman, and so the unpacked distribution mirrors the
repository layout. That hasn't been true for w64devkit.ini, which is the
only file interfering with this trick, so fix it.
2025-09-03 09:09:07 -04:00
Wes
b72edc3815 peports: UNKNOWN only for the 0x0000 machine type
Closes #272.
2025-08-19 09:18:49 -04:00
Peter0x44
b88e8b3f80 peports: Add -m flag to print PE machine type
Adds support for displaying the target machine type of PE files with
a new -m command line option.
2025-08-17 17:25:45 -04:00
Christopher Wellons
d3f34afe07 peports: Support "--" arg and fix "-" handling 2025-08-09 08:51:39 -04:00
Christopher Wellons
47cd41b1b7 peports: Properly track the exit status on errors
Fixes #263.
2025-08-09 08:37:45 -04:00
Christopher Wellons
576676338c Update to GCC 15.2.0
https://gcc.gnu.org/gcc-15/changes.html
2025-08-08 09:10:52 -04:00
Peter0x44
e27db5e4a5 Upgrade to binutils 2.45
https://lists.gnu.org/archive/html/info-gnu/2025-07/msg00009.html
2025-07-27 14:50:31 -04:00
Christopher Wellons
54739722d3 rexxd: Treat "-s N" pipe seek EOF as an error
The change matches behavior to the original xxd, plus an infinite loop
is of course undesirable. Noticed this in a casual re-review.
2025-07-17 09:48:45 -04:00
Christopher Wellons
b49df4c686 make: Fix support for shell paths with spaces
GNU Make incorrectly processes shell paths that contain a space on all
supported platforms. This is a common case on Windows after resolving
the shell's absolute path (e.g. "Documents and Settings" or "Program
Files"). The space is not escaped when constructing the shell command,
and then the shell path is truncated when splitting on the space.

Adding a space to sh_chars causes construct_command_argv_internal to
recurse indefinitely, so instead add a special case when copying the
shell path into the command.
2025-07-09 08:18:49 -04:00
Christopher Wellons
9a97c6d992 w64devkit.ini: MSYS2-like "path style"
Allows $PATH in w64dk environments to be controlled similarly to MSYS2.
Fixes #235.

https://www.msys2.org/wiki/MSYS2-introduction/#path
https://github.com/msys2/MSYS2-packages/blob/ae252e94/filesystem/profile#L28-L45
2025-07-06 11:29:22 -04:00
Christopher Wellons
055fbb6bf1 w64devkit.c: Style update before new changes
My personal style has evolved slightly more, and so continue moving in
that direction:

* Just accept u8 as an aliasing type (it's tolerable)
* Capitalize struct and enum typedefs, but leave s8 and s16 unchanged
* -Wconversion compliance, both 32- and 64-bit
* iz/uz for sizes and pointer-integers
* i32 for flags
* -lmemory now that it's available, with memory built-ins
* Rely on w64devkit's unique stdcall patch
* Drop dangerously-broken GCC attributes (malloc, alloc_size)
* Use C23 [[...]] instead of __attribute (new and experimental!)
2025-07-06 11:26:56 -04:00
Christopher Wellons
ff695fc9c1 vim: Improve HiDPI experience with a better font
GUI Vim defaults to Fixedsys, a raster font which does not scale. On
HiDPI displays, Vim is unusable in its default configuration despite
supporting HiDPI generally. This issue was never solved upstream, and
the official Vim builds still have this poor experience. For w64dk, I
want a better out-of-the-box experience. It tries Consolas, present on
any HiDPI system, and then falls back to Fixedsys if necessary (XP). As
a side effect, the unicode experience improves as well because Fixedsys
has little support beyond ASCII.

There's an argument to be made for Lucida Console, but Consolas edges
out by not having a space in the name. This also "breaks the seal" on
making other changes to Vim's generally poor defaults, perhaps to adopt
some of neovim's more thoughtful defaults:

https://neovim.io/doc/user/vim_diff.html#defaults
2025-06-26 13:01:34 -04:00
Christopher Wellons
ff4bb190f1 Adopt Hannes Domani's relocatable mingw patch (#212)
3a38668f is incomplete, and requires the toolchain is located under a
path ending w64devkit/, which unfortunately made it into the 2.2.0
release. This patch is more complete, but must only be applied to the
native toolchain, not the cross toolchain, so it applies the patch late
in the build.
2025-06-08 10:03:47 -04:00
Christopher Wellons
f2b69d2df5 Upgrade to Mingw-w64 13.0.0
Despite the patch notes, the only new debug import libraries are
msvcr80d, msvcr100d, and msvcr110d.

https://www.mingw-w64.org/changelog/#v1300-2025-06-08
2025-06-08 09:57:33 -04:00
Christopher Wellons
db95ea4855 peports: Remove an unnecessary void return
GCC and Clang accept this but other compilers do not. Regardless, this
was probably left over from refactoring. (#227)
2025-06-05 06:17:40 -04:00
Peter0x44
37355b4ca9 Delete unneeded patch for #86
The issue in GCC (PR110572) has been fixed upstream so this patch is no
longer needed.
2025-05-08 19:28:27 +01:00
Christopher Wellons
861ae534d5 Default to a quiet, trapping std::terminate
Remove 30k of Itanium demangling from C++ images just to display the
uncaught exception type before aborting. The message is near useless,
and GDB already does this while providing a wealth of information. An
application can still opt-in to the old behavior (including the 30k of
code) at runtime with:

    std::set_terminate(__gnu_cxx::__verbose_terminate_handler);

Speaking of GDB, std::terminate calls std::abort, but msvcrt!abort calls
exit() and does not trap. Introduce __gnu_cxx::__trap_terminate_handler
which uses __builtin_trap() instead, and set it as the new default. The
verbose handler also now uses a trap instruction. These changes improve
the debugging experience and better communicate the hard failure.

Closes #215.
2025-04-26 10:29:38 -04:00
Christopher Wellons
030ccf65c4 Update to GCC 15.1.0
https://gcc.gnu.org/gcc-15/changes.html
2025-04-25 07:54:22 -04:00
Christopher Wellons
b0617931ee Upgrade to u-config 0.34.0 2025-04-24 17:30:03 -04:00
Peter0x44
ec659f6883 Upgrade to libiconv 1.18 2025-03-27 15:45:03 -04:00
Peter0x44
ce0f09303c Upgrade to expat 2.7.0 2025-03-27 02:52:57 +00:00
Peter0x44
d25b1c790d Upgrade to MPFR 4.2.2 2025-03-26 01:16:09 +00:00
Christopher Wellons
f0387373ea Upgrade to u-config 0.33.3
Improved --static, --modversion, error messages, and some variables.
2025-03-12 21:48:46 -04:00
Christopher Wellons
5cfc5e2688 rexxd.c: Stricter command line octal parsing
It now rejects invalid inputs that had been previously parsed as
decimal. It never incorrectly parsed valid inputs.
2025-03-10 10:38:34 -04:00
Christopher Wellons
5309f25b40 rexxd.c: Small cut() optimization
If the input is a multiple of the block size, it can run all the way to
the end. Has a small, but significant effect in the benchmarks.
2025-03-10 10:37:55 -04:00
Christopher Wellons
efd082db3a rexxd.c: Slightly stricter testing 2025-03-10 10:34:06 -04:00
Christopher Wellons
c6f30ee033 rexxd.c: Fix exit in two platforms
On x86-64 Linux actually use the exit status. On POSIX, do not exit
through libc.
2025-03-10 10:30:40 -04:00
Christopher Wellons
b217f139b8 Upgrade to busybox-w32 version FRP-5579
https://frippery.org/busybox/release-notes/FRP-5579.html
2025-02-28 07:59:02 -05:00
Christopher Wellons
36ac343fc3 gcc: Patch misaligned AVX spills (GCC bug 54412)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54412
2025-02-17 18:45:27 -05:00
Christopher Wellons
05d3306ca2 Replace Vim xxd with new "rexxd" implementation
An order of magnitude faster, and far less buggy.

Ref: https://nullprogram.com/blog/2025/02/17/
2025-02-16 19:30:19 -05:00
Christopher Wellons
cbb4c3f0df Fix libmemory and libchkstk archival on x86
The build used the host ar instead of the cross ar. With -mbig-obj as
the default (c9c9c073), the host ar cannot understand the PE32 object
files and so doesn't produce a symbol index. Not the first time this
problem has come up.
2025-02-13 20:33:25 -05:00
Christopher Wellons
d2a9c1c8b2 Update Expat to 2.6.4
Change to SourceForge becasue it's slightly more reliable than
fossies.org, which is down as of the time of this commit.
2025-02-08 11:00:53 -05:00
Peter0x44
6675cda8c3 Upgrade to GDB 16.2
Closes #194.
2025-02-08 11:00:40 -05:00
Peter0x44
e0bea3b7b7 Upgrade binutils to 2.44 2025-02-08 04:57:08 +00:00
Christopher Wellons
710e851add Upgrade to u-config 0.33.2
Primarily for changes to backslash processing in $PKG_CONFIG_PATH.
2025-02-07 19:52:52 -05:00
Christopher Wellons
9969888b05 Bintuils patch to exclude more symbols from export
In bfd is a list of known libraries whose symbols are excluded when
exporting all symbols, the default behavior when no exports are chosen,
or with --export-all-symbols. The list is incomplete for w64dk and is
missing 15 additional "standard" libraries.

The result is that Windows-unaware builds using any of these libraries,
including any C++ program due to libpthread, tends to be broken. Instead
of adding each library to the list, blanket-exclude all libraries that
come from the sysroot. Since libpthread is so important, also add it to
the known list. Its absence is essentially a Binutils bug.
2025-01-24 17:33:06 -05:00
Christopher Wellons
e1d3826d6f vim: Backport "xxd -n" patch
The -n option is both useful and obvious. Surprising it took 20 years to
arrive, just after the release of Vim 9.0.
2025-01-19 20:22:38 -05:00
Christopher Wellons
8ea0fee87c Fix ordinal patch for Binutils 2.43 (#180)
The original patch, which functioned properly between Bintuils 2.28
(March 2017) and 2.42 (January 2024), was broken by Binutils commit
057a2b4c (June 2024), made just 3 weeks later. Either rotten luck, or
someone's reading over my shoulder!
2024-11-03 15:28:41 -05:00
Semphris
0c2b1b37ff Update Expat to 2.6.3 2024-10-30 19:43:12 -04:00
Peter0x44
a21558c6b4 Update to binutils 2.43 2024-10-25 14:25:56 -04:00
Peter0x44
b1a0339332 Update GDB to 15.2 2024-10-22 04:28:32 +01:00
Christopher Wellons
6a54545b4f Align stack for GCC on incoming stdcall (x86 only)
This GCC bug has had a wide impact since 2008. It affects nearly every
x86 program with a foreign-facing stdcall function, except WinMain and
wWinMain (covered by a CRT special case). That includes callbacks like
WNDPROC and APCs, thread procedures for CreateThread and _beginthreadex,
and entry points like mainCRTStartup and WinMainCRTStartup.

Programs included in w64dk have workarounds as needed, though between
Binutils 2.42 (6bf81ffd) and this patch, they're redundant. But still
needed, of course, when compiled with other Mingw-w64 toolchains.

Some cases are still affected, most commonly _beginthread, whose thread
procedure is _not_ stdcall, but is still called with a stack unsuitably
aligned for GCC. This case is less arguably a GCC bug, though neither
MSVC nor Clang are affected by this issue (due to not assuming 16-byte
stack alignment).
2024-09-22 19:37:39 -04:00
Christopher Wellons
11c8495d0f Upgrade to busybox-w32 FRP-5398-g89ae34445
Two patches have been effectively upstreamed.

https://frippery.org/busybox/release-notes/FRP-5467.html
2024-09-20 16:19:41 -04:00
Christopher Wellons
7b78b3e72b Update documentation in w64devkit.ini
As of 3cacd962, the "known bugs" comment is no longer true for typical
use cases (x64 Windows 10 and later).

The UTF-8 comment came out of abusing GetPrivateProfileStringA. It was
replaced in 568efdcd with a custom parser.
2024-09-19 11:05:45 -04:00
Christopher Wellons
3cacd96206 busybox-w32: Enable UTF-8 in 64-bit builds
The x86 build supports Windows XP, but the x64 build supports no earlier
than Windows 7 (my personal favorite). Windows XP outright rejects EXEs
with a UTF-8 manifest, but Windows 7 simply ignores it. That permits GCC
to continue operating on Windows 7 with a UTF-8 manifest (as of GCC 13),
which must be disabled entirely in x86 builds for Windows XP. The same
can be done with busybox-w32 by disabling the UTF-8 check and gracefully
degrading to original "ANSI-only" behavior when the manifest is ignored.
2024-09-10 16:16:02 -04:00
Christopher Wellons
4176ece791 Disable GCC UTF-8 manifest via configure switch
The UTF-8 manifest was added in GCC 13 but the configure switch was not
added until GCC 14 (https://gcc.gnu.org/PR111170). Better to use the
swtich rather than the original hack. Thanks to Peter0x44 for pointing
this out (#58).
2024-08-08 15:49:44 -04:00
Christopher Wellons
d5e0d0e081 Update to GCC 14.2.0
This rolls in 7d6330af (#138), so the patch is no longer needed.
2024-08-01 08:37:14 -04:00