From 70b20d7d8985f5d8bba317b1e59df8ecd1d8d5f8 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Fri, 29 Mar 2024 12:11:41 +0100 Subject: [PATCH] CI updates --- .clangd | 3 +- .github/workflows/ci.yml | 11 ++--- misc/analyze/clang-tidy/clang-tidy-bzip2.yml | 2 + misc/analyze/clang-tidy/clang-tidy-ucl.yml | 2 + misc/analyze/clang-tidy/clang-tidy-zlib.yml | 2 + misc/analyze/clang-tidy/clang-tidy-zstd.yml | 2 + misc/podman/rebuild-stubs/10-create-image.sh | 1 + misc/podman/rebuild-stubs/11-list-packages.sh | 1 + .../rebuild-stubs/20-image-run-shell.sh | 1 + misc/podman/rebuild-stubs/Dockerfile | 1 + misc/podman/rebuild-stubs/packages.txt | 40 +++++++++---------- src/help.cpp | 19 +++++++-- 12 files changed, 56 insertions(+), 29 deletions(-) diff --git a/.clangd b/.clangd index a585e8cd..5210fa73 100644 --- a/.clangd +++ b/.clangd @@ -17,7 +17,8 @@ If: CompileFlags: Add: - -std=gnu++17 - # -std=gnu++20 # requires clang >= 10.0 + # -std=gnu++20 # requires clangd >= 11.0 + # -std=gnu++23 # requires clangd >= 18.0 --- # common flags for all C/C++ files If: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6a02256d..510f1a86 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,8 +16,8 @@ env: UPX_CMAKE_BUILD_FLAGS: --verbose UPX_CMAKE_CONFIG_FLAGS: -Wdev --warn-uninitialized UPX_DEBUG_TEST_FLOAT_DIVISION_BY_ZERO: 1 - # 2024-03-28 - ZIG_DIST_VERSION: 0.12.0-dev.3480+9dac8db2d + # 2024-03-29 + ZIG_DIST_VERSION: 0.12.0-dev.3484+7aa42f47b jobs: job-rebuild-and-verify-stubs: @@ -465,14 +465,15 @@ jobs: - { zig_target: aarch64-windows-gnu } - { zig_target: arm-linux-musleabihf, qemu: qemu-arm } # { zig_target: arm-linux-musleabihf, qemu: qemu-arm, zig_pic: -fPIE } - - { zig_target: i386-linux-musl, qemu: qemu-i386 -cpu Conroe } - # { zig_target: i386-linux-musl, qemu: qemu-i386 -cpu Conroe, zig_pic: -fPIE } + - { zig_target: i386-linux-musl, qemu: qemu-i386 } + # { zig_target: i386-linux-musl, qemu: qemu-i386, zig_pic: -fPIE } - { zig_target: i386-windows-gnu } # mips and mipsel: bad hard-float code generation(??); or QEMU bug; or UPX bug; see https://github.com/upx/upx/issues/788 - { zig_target: mips-linux-musl, zig_flags: -msoft-float, qemu: qemu-mips } - { zig_target: mipsel-linux-musl, zig_flags: -msoft-float, qemu: qemu-mipsel } - { zig_target: powerpc-linux-musl, qemu: qemu-ppc } - - { zig_target: powerpc64-linux-musl, qemu: qemu-ppc64 } + # powerpc64: obscure problem with C++ exceptions in doctest checks when *NOT* using -fstack-protector + - { zig_target: powerpc64-linux-musl, zig_flags: -fstack-protector, qemu: qemu-ppc64 } - { zig_target: powerpc64le-linux-musl, qemu: qemu-ppc64le } - { zig_target: x86_64-linux-musl, qemu: qemu-x86_64 } # { zig_target: x86_64-linux-musl, qemu: qemu-x86_64, zig_pic: -fPIE } diff --git a/misc/analyze/clang-tidy/clang-tidy-bzip2.yml b/misc/analyze/clang-tidy/clang-tidy-bzip2.yml index 6f85229a..4c7acbb3 100644 --- a/misc/analyze/clang-tidy/clang-tidy-bzip2.yml +++ b/misc/analyze/clang-tidy/clang-tidy-bzip2.yml @@ -1,3 +1,5 @@ +# vim:set ft=yaml ts=2 sw=2 et: +# Copyright (C) Markus Franz Xaver Johannes Oberhumer # for clang-tidy from https://clang.llvm.org/extra/clang-tidy/ --- Checks: > diff --git a/misc/analyze/clang-tidy/clang-tidy-ucl.yml b/misc/analyze/clang-tidy/clang-tidy-ucl.yml index 142b9b29..67af1462 100644 --- a/misc/analyze/clang-tidy/clang-tidy-ucl.yml +++ b/misc/analyze/clang-tidy/clang-tidy-ucl.yml @@ -1,3 +1,5 @@ +# vim:set ft=yaml ts=2 sw=2 et: +# Copyright (C) Markus Franz Xaver Johannes Oberhumer # for clang-tidy from https://clang.llvm.org/extra/clang-tidy/ --- Checks: > diff --git a/misc/analyze/clang-tidy/clang-tidy-zlib.yml b/misc/analyze/clang-tidy/clang-tidy-zlib.yml index 61556761..da09b2b9 100644 --- a/misc/analyze/clang-tidy/clang-tidy-zlib.yml +++ b/misc/analyze/clang-tidy/clang-tidy-zlib.yml @@ -1,3 +1,5 @@ +# vim:set ft=yaml ts=2 sw=2 et: +# Copyright (C) Markus Franz Xaver Johannes Oberhumer # for clang-tidy from https://clang.llvm.org/extra/clang-tidy/ --- Checks: > diff --git a/misc/analyze/clang-tidy/clang-tidy-zstd.yml b/misc/analyze/clang-tidy/clang-tidy-zstd.yml index c55e1aee..3b9b8ac5 100644 --- a/misc/analyze/clang-tidy/clang-tidy-zstd.yml +++ b/misc/analyze/clang-tidy/clang-tidy-zstd.yml @@ -1,3 +1,5 @@ +# vim:set ft=yaml ts=2 sw=2 et: +# Copyright (C) Markus Franz Xaver Johannes Oberhumer # for clang-tidy from https://clang.llvm.org/extra/clang-tidy/ --- Checks: > diff --git a/misc/podman/rebuild-stubs/10-create-image.sh b/misc/podman/rebuild-stubs/10-create-image.sh index 2895ba75..8aa2f260 100755 --- a/misc/podman/rebuild-stubs/10-create-image.sh +++ b/misc/podman/rebuild-stubs/10-create-image.sh @@ -5,6 +5,7 @@ argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")" # create the image from Dockerfile # using a rootless Podman container +# Copyright (C) Markus Franz Xaver Johannes Oberhumer image=upx-stubtools-20221212-v7 [[ $1 == --print-image ]] && echo "$image" && exit 0 diff --git a/misc/podman/rebuild-stubs/11-list-packages.sh b/misc/podman/rebuild-stubs/11-list-packages.sh index 37457aba..d738866e 100755 --- a/misc/podman/rebuild-stubs/11-list-packages.sh +++ b/misc/podman/rebuild-stubs/11-list-packages.sh @@ -5,6 +5,7 @@ argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")" # list all system packages that are installed in the image # using a rootless Podman container +# Copyright (C) Markus Franz Xaver Johannes Oberhumer image="$("$argv0dir/10-create-image.sh" --print-image)" diff --git a/misc/podman/rebuild-stubs/20-image-run-shell.sh b/misc/podman/rebuild-stubs/20-image-run-shell.sh index 1dfd708c..3c4b0b75 100755 --- a/misc/podman/rebuild-stubs/20-image-run-shell.sh +++ b/misc/podman/rebuild-stubs/20-image-run-shell.sh @@ -5,6 +5,7 @@ argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")" # run an interactive shell in the image # using a rootless Podman container +# Copyright (C) Markus Franz Xaver Johannes Oberhumer image="$("$argv0dir/10-create-image.sh" --print-image)" diff --git a/misc/podman/rebuild-stubs/Dockerfile b/misc/podman/rebuild-stubs/Dockerfile index 902df3f8..ca6f9a1a 100644 --- a/misc/podman/rebuild-stubs/Dockerfile +++ b/misc/podman/rebuild-stubs/Dockerfile @@ -1,3 +1,4 @@ +# Copyright (C) Markus Franz Xaver Johannes Oberhumer FROM docker.io/library/ubuntu:22.04 ENV UPX_CONTAINER_IMAGE_NAME=upx-stubtools-20221212-v6 ARG DEBIAN_FRONTEND=noninteractive diff --git a/misc/podman/rebuild-stubs/packages.txt b/misc/podman/rebuild-stubs/packages.txt index 23bb27e8..d189a741 100644 --- a/misc/podman/rebuild-stubs/packages.txt +++ b/misc/podman/rebuild-stubs/packages.txt @@ -7,13 +7,13 @@ ii apt 2.4.11 amd64 ii aria2 1.36.0-1 amd64 High speed download utility ii base-files 12ubuntu4.6 amd64 Debian base system miscellaneous files ii base-passwd 3.5.52build1 amd64 Debian base system master password and group files -ii bash 5.1-6ubuntu1 amd64 GNU Bourne Again SHell +ii bash 5.1-6ubuntu1.1 amd64 GNU Bourne Again SHell ii bash-completion 1:2.11-5ubuntu1 all programmable completion for the bash shell ii bfs 2.3.1-1 amd64 Breadth-first version of find(1) ii binutils 2.38-4ubuntu2.6 amd64 GNU assembler, linker and binary utilities ii binutils-common:amd64 2.38-4ubuntu2.6 amd64 Common files for the GNU assembler, linker and binary utilities ii binutils-x86-64-linux-gnu 2.38-4ubuntu2.6 amd64 GNU binary utilities, for x86-64-linux-gnu target -ii bsdutils 1:2.37.2-4ubuntu3 amd64 basic utilities from 4.4BSD-Lite +ii bsdutils 1:2.37.2-4ubuntu3.3 amd64 basic utilities from 4.4BSD-Lite ii busybox 1:1.30.1-7ubuntu3 amd64 Tiny utilities for small and embedded systems ii bzip2 1.0.8-5build1 amd64 high-quality block-sorting file compressor - utilities ii ca-certificates 20230311ubuntu0.22.04.1 all Common CA certificates @@ -22,11 +22,11 @@ ii ccache 4.5.1-1 amd64 ii chrpath 0.16-2 amd64 Tool to edit the rpath in ELF binaries ii cmake 3.22.1-1ubuntu1.22.04.2 amd64 cross-platform, open-source make system ii cmake-data 3.22.1-1ubuntu1.22.04.2 all CMake data files (modules, templates and documentation) -ii coreutils 8.32-4.1ubuntu1.1 amd64 GNU core utilities +ii coreutils 8.32-4.1ubuntu1.2 amd64 GNU core utilities ii cpio 2.13+dfsg-7 amd64 GNU cpio -- a program to manage archives of files ii cpp 4:11.2.0-1ubuntu1 amd64 GNU C preprocessor (cpp) ii cpp-11 11.4.0-1ubuntu1~22.04 amd64 GNU C preprocessor -ii curl 7.81.0-1ubuntu1.15 amd64 command line tool for transferring data with URL syntax +ii curl 7.81.0-1ubuntu1.16 amd64 command line tool for transferring data with URL syntax ii dash 0.5.11+git20210903+057cd650a4ed-3build1 amd64 POSIX-compliant shell ii debconf 1.5.79ubuntu1 all Debian configuration management system ii debianutils 5.5-1ubuntu2 amd64 Miscellaneous utilities specific to Debian @@ -89,7 +89,7 @@ ii libaudit-common 1:3.0.7-1build1 all ii libaudit1:amd64 1:3.0.7-1build1 amd64 Dynamic library for security auditing ii libbabeltrace1:amd64 1.5.8-2build1 amd64 Babeltrace conversion libraries ii libbinutils:amd64 2.38-4ubuntu2.6 amd64 GNU binary utilities (private shared library) -ii libblkid1:amd64 2.37.2-4ubuntu3 amd64 block device ID library +ii libblkid1:amd64 2.37.2-4ubuntu3.3 amd64 block device ID library ii libboost-regex1.74.0:amd64 1.74.0-14ubuntu3 amd64 regular expression library for C++ ii libbrotli1:amd64 1.0.9-2build6 amd64 library implementing brotli encoder and decoder (shared libraries) ii libbsd0:amd64 0.11.5-1 amd64 utility functions from BSD systems - shared library @@ -113,8 +113,8 @@ ii libcrypt1:amd64 1:4.4.27-1 amd64 ii libcrypt1:i386 1:4.4.27-1 i386 libcrypt shared library ii libctf-nobfd0:amd64 2.38-4ubuntu2.6 amd64 Compact C Type Format library (runtime, no BFD dependency) ii libctf0:amd64 2.38-4ubuntu2.6 amd64 Compact C Type Format library (runtime, BFD dependency) -ii libcurl3-gnutls:amd64 7.81.0-1ubuntu1.15 amd64 easy-to-use client-side URL transfer library (GnuTLS flavour) -ii libcurl4:amd64 7.81.0-1ubuntu1.15 amd64 easy-to-use client-side URL transfer library (OpenSSL flavour) +ii libcurl3-gnutls:amd64 7.81.0-1ubuntu1.16 amd64 easy-to-use client-side URL transfer library (GnuTLS flavour) +ii libcurl4:amd64 7.81.0-1ubuntu1.16 amd64 easy-to-use client-side URL transfer library (OpenSSL flavour) ii libdb5.3:amd64 5.3.28+dfsg1-0.8ubuntu3 amd64 Berkeley v5.3 Database Libraries [runtime] ii libdebconfclient0:amd64 0.261ubuntu1 amd64 Debian Configuration Management System (C-implementation library) ii libdebuginfod-common 0.186-1build1 all configuration to enable the Debian debug info server @@ -162,7 +162,7 @@ ii liblzo2-2:amd64 2.10-2build3 amd64 ii libmagic-mgc 1:5.41-3ubuntu0.1 amd64 File type determination library using "magic" numbers (compiled magic file) ii libmagic1:amd64 1:5.41-3ubuntu0.1 amd64 Recognize the type of data in a file using "magic" numbers - library ii libmd0:amd64 1.0.4-1build1 amd64 message digest functions from BSD systems - shared library -ii libmount1:amd64 2.37.2-4ubuntu3 amd64 device mounting library +ii libmount1:amd64 2.37.2-4ubuntu3.3 amd64 device mounting library ii libmpc3:amd64 1.2.1-2build1 amd64 multiple precision complex floating-point library ii libmpdec3:amd64 2.5.1-2build2 amd64 library for decimal floating point arithmetic (runtime library) ii libmpfr6:amd64 4.1.0-3build3 amd64 multiple precision floating-point computation @@ -207,7 +207,7 @@ ii libsensors-config 1:3.6.0-7ubuntu1 all ii libsensors5:amd64 1:3.6.0-7ubuntu1 amd64 library to read temperature/voltage/fan sensors ii libsepol2:amd64 3.3-1build1 amd64 SELinux library for manipulating binary security policies ii libsigsegv2:amd64 2.13-1ubuntu3 amd64 Library for handling page faults in a portable way -ii libsmartcols1:amd64 2.37.2-4ubuntu3 amd64 smart column output alignment library +ii libsmartcols1:amd64 2.37.2-4ubuntu3.3 amd64 smart column output alignment library ii libsodium23:amd64 1.0.18-1build2 amd64 Network communication, cryptography and signaturing library ii libsource-highlight-common 3.1.9-4.1build2 all architecture-independent files for source highlighting library ii libsource-highlight4v5 3.1.9-4.1build2 amd64 source highlighting library @@ -232,7 +232,7 @@ ii libubsan1:amd64 12.3.0-1ubuntu1~22.04 amd64 ii libudev1:amd64 249.11-0ubuntu3.12 amd64 libudev shared library ii libunistring2:amd64 1.0-1 amd64 Unicode string library for C ii libutempter0:amd64 1.2.1-2build2 amd64 privileged helper for utmp/wtmp updates (runtime) -ii libuuid1:amd64 2.37.2-4ubuntu3 amd64 Universally Unique ID library +ii libuuid1:amd64 2.37.2-4ubuntu3.3 amd64 Universally Unique ID library ii libuv1:amd64 1.43.0-1ubuntu0.1 amd64 asynchronous event notification library - runtime library ii libx11-6:amd64 2:1.7.5-1ubuntu0.3 amd64 X11 client-side library ii libx11-data 2:1.7.5-1ubuntu0.3 all X11 client-side library @@ -254,7 +254,7 @@ ii libxxhash0:amd64 0.8.1-1 amd64 ii libyaml-0-2:amd64 0.2.2-1build2 amd64 Fast YAML 1.1 parser and emitter library ii libzstd-dev:amd64 1.4.8+dfsg-3build1 amd64 fast lossless compression algorithm -- development files ii libzstd1:amd64 1.4.8+dfsg-3build1 amd64 fast lossless compression algorithm -ii linux-libc-dev:amd64 5.15.0-100.110 amd64 Linux Kernel Headers for development +ii linux-libc-dev:amd64 5.15.0-101.111 amd64 Linux Kernel Headers for development ii login 1:4.8.1-2ubuntu2.2 amd64 system login tools ii logsave 1.46.5-2ubuntu1.1 amd64 save the output of a command in a log file ii lsb-base 11.1.0ubuntu4 all Linux Standard Base init script functionality @@ -267,7 +267,7 @@ ii mawk 1.3.4.20200120-3 amd64 ii media-types 7.0.0 all List of standard media types and their usual file extension ii mksh 59c-16 amd64 MirBSD Korn Shell ii moreutils 0.66-1 amd64 additional Unix utilities -ii mount 2.37.2-4ubuntu3 amd64 tools for mounting and manipulating filesystems +ii mount 2.37.2-4ubuntu3.3 amd64 tools for mounting and manipulating filesystems ii ncurses-base 6.3-2ubuntu0.1 all basic terminal type definitions ii ncurses-bin 6.3-2ubuntu0.1 amd64 terminal-related programs and man pages ii ncurses-term 6.3-2ubuntu0.1 all additional terminal type definitions @@ -311,12 +311,12 @@ ii ucf 3.0043 all ii universal-ctags 5.9.20210829.0-1 amd64 build tag file indexes of source code definitions ii unzip 6.0-26ubuntu3.2 amd64 De-archiver for .zip files ii usrmerge 25ubuntu2 all Convert the system to the merged /usr directories scheme -ii util-linux 2.37.2-4ubuntu3 amd64 miscellaneous system utilities -ii vim 2:8.2.3995-1ubuntu2.15 amd64 Vi IMproved - enhanced vi editor -ii vim-common 2:8.2.3995-1ubuntu2.15 all Vi IMproved - Common files -ii vim-runtime 2:8.2.3995-1ubuntu2.15 all Vi IMproved - Runtime files +ii util-linux 2.37.2-4ubuntu3.3 amd64 miscellaneous system utilities +ii vim 2:8.2.3995-1ubuntu2.16 amd64 Vi IMproved - enhanced vi editor +ii vim-common 2:8.2.3995-1ubuntu2.16 all Vi IMproved - Common files +ii vim-runtime 2:8.2.3995-1ubuntu2.16 all Vi IMproved - Runtime files ii wget 1.21.2-2ubuntu1 amd64 retrieves files from the web -ii xxd 2:8.2.3995-1ubuntu2.15 amd64 tool to make (or reverse) a hex dump +ii xxd 2:8.2.3995-1ubuntu2.16 amd64 tool to make (or reverse) a hex dump ii xz-utils 5.2.5-2ubuntu1 amd64 XZ-format compression utilities ii yash 2.51-1 amd64 yet another shell ii zip 3.0-12build2 amd64 Archiver for .zip files @@ -331,7 +331,7 @@ ii zstd 1.4.8+dfsg-3build1 amd64 ||/ Name Version Architecture Description Packages sorted by Installed-Size: - 754392 ===== TOTAL (325 packages) + 754396 ===== TOTAL (325 packages) 52747 gcc-11 amd64 34444 libicu70 amd64 32783 vim-runtime all @@ -362,7 +362,7 @@ Packages sorted by Installed-Size: 7263 libc6-dev-i386 amd64 7255 libtsan0 amd64 7128 libmagic-mgc amd64 - 7104 coreutils amd64 + 7112 coreutils amd64 6988 libx32gcc-11-dev amd64 6858 linux-libc-dev amd64 6733 dpkg amd64 @@ -382,7 +382,7 @@ Packages sorted by Installed-Size: 3506 re2c amd64 3487 gojq amd64 3405 libmpfr6 amd64 - 3399 util-linux amd64 + 3395 util-linux amd64 3347 libaria2-0 amd64 3198 libapt-pkg6.0 amd64 3013 libboost-regex1.74.0 amd64 diff --git a/src/help.cpp b/src/help.cpp index d8ba6bbb..4ad94b09 100644 --- a/src/help.cpp +++ b/src/help.cpp @@ -25,6 +25,11 @@ */ +#if defined(_WIN32_WINNT) +static constexpr long long initial_win32_winnt = _WIN32_WINNT + 0LL; +#else +static constexpr long long initial_win32_winnt = 0; +#endif #define WANT_WINDOWS_LEAN_H 1 // _WIN32_WINNT #include "conf.h" #include "compress/compress.h" // upx_ucl_version_string() @@ -425,11 +430,14 @@ void show_version(bool one_line) { fprintf(f, "Copyright (C) 1996-2024 Markus Franz Xaver Johannes Oberhumer\n"); fprintf(f, "Copyright (C) 1996-2024 Laszlo Molnar\n"); fprintf(f, "Copyright (C) 2000-2024 John F. Reiser\n"); - fprintf(f, "Copyright (C) 2002-2024 Jens Medoch\n"); + // Jens contributed the ps1/exe format; no need to list as main author + // fprintf(f, "Copyright (C) 2002-2024 Jens Medoch\n"); #if (WITH_ZLIB) + // see vendor/zlib/LICENSE fprintf(f, "Copyright (C) 1995" "-2024 Jean-loup Gailly and Mark Adler\n"); #endif #if (WITH_LZMA) + // see vendor/lzma-sdk/lzma.txt fprintf(f, "Copyright (C) 1999" "-2006 Igor Pavlov\n"); #endif #if (WITH_ZSTD) @@ -437,13 +445,15 @@ void show_version(bool one_line) { fprintf(f, "Copyright (C) 2015" "-2024 Meta Platforms, Inc. and affiliates\n"); #endif #if (WITH_BZIP2) - fprintf(f, "Copyright (C) 1996" "-2010 Julian Seward\n"); // see + // see + fprintf(f, "Copyright (C) 1996" "-2010 Julian Seward\n"); #endif #if !defined(DOCTEST_CONFIG_DISABLE) + // see vendor/doctest/LICENSE.txt fprintf(f, "Copyright (C) 2016" "-2023 Viktor Kirilov\n"); #endif - fprintf(f, "UPX comes with ABSOLUTELY NO WARRANTY; for details type '%s -L'.\n", progname); // clang-format on + fprintf(f, "UPX comes with ABSOLUTELY NO WARRANTY; for details type '%s -L'.\n", progname); } /************************************************************************* @@ -525,6 +535,8 @@ void show_sysinfo(const char *options_var) { #endif #if defined(_WIN32_WINNT) cf_print("_WIN32_WINNT", "0x%04llx", _WIN32_WINNT + 0); + if (initial_win32_winnt != 0 && initial_win32_winnt != _WIN32_WINNT + 0) + cf_print("INITIAL_WIN32_WINNT", "0x%04llx", initial_win32_winnt); #endif #if defined(__MSVCRT_VERSION__) cf_print("__MSVCRT_VERSION__", "0x%04llx", __MSVCRT_VERSION__ + 0); @@ -556,6 +568,7 @@ void show_sysinfo(const char *options_var) { #endif UNUSED(cf_count); UNUSED(cf_print); + UNUSED(initial_win32_winnt); } // run-time