diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9bf3c80c..5e63b96f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,16 +19,16 @@ env: UPX_DEBUG_TEST_FLOAT_DIVISION_BY_ZERO: 1 UPX_DEBUG_TEST_LIBC_QSORT: 1 ZSTD_CLEVEL: 9 - # 2024-08-03 - ZIG_DIST_VERSION: 0.14.0-dev.839+a931bfada + # 2024-08-13 + ZIG_DIST_VERSION: 0.14.0-dev.1033+25096ed89 jobs: job-rebuild-and-verify-stubs: name: Rebuild stubs runs-on: ubuntu-latest - container: ubuntu:24.04 # glibc-2.39 - #container: debian:12-slim # also works; glibc-2.36 - #container: debian:testing-slim # also works; currently at glibc-2.38 + container: ubuntu:24.04 # provides glibc-2.39 + #container: debian:12-slim # also works; provides glibc-2.36 + #container: debian:testing-slim # also works; currently provides glibc-2.38 steps: - name: Install packages run: | @@ -85,6 +85,7 @@ jobs: - { os: ubuntu-22.04, use_extra: true, use_wine: true } # GitHub ubuntu-24.04 is BETA; BUG: currently i386 programs can abort with "The futex facility returned an unexpected error code" # THIS IS A KNOWN ISSUE: https://github.com/actions/runner-images/issues/9848 + # { os: ubuntu-24.04, use_extra: true, use_wine: true } - { os: ubuntu-24.04 } # TODO later: enable extra+wine once the GitHub VM is fixed name: ${{ format('{0}', matrix.os) }} runs-on: ${{ matrix.os }} @@ -144,7 +145,7 @@ jobs: for d in $dirs; do cmake --install build/extra/$d --prefix "$PWD/tmp/artifact/$N/InstallWithCMake/InstallWithPrefixAndStrip/$d" --strip; done (cd build && shopt -s nullglob && cp -ai --parents */upx{,.exe} */*/*/upx{,.exe} "../tmp/artifact/$N") if command -v hardlink >/dev/null; then (cd "tmp/artifact/$N" && hardlink .) fi - (cd tmp/artifact && tar --sort=name --zstd -cf "$N.tar.zst" "$N" && rm -rf "./$N" && ls -la) + (cd tmp/artifact && tar --sort=name --zstd -cf "$N.tar.zst" "$N" && rm -rf "./$N" && ls -la && zstd -tq "$N.tar.zst") echo "artifact_name=$N" >> $GITHUB_ENV - name: ${{ format('Upload artifact {0}', env.artifact_name) }} uses: actions/upload-artifact@v4 @@ -283,7 +284,7 @@ jobs: (cd build && rsync -R -a */*/*/upx "../tmp/artifact/$N/") hardlink="$HOMEBREW_PREFIX/opt/util-linux/bin/hardlink" if test -f "$hardlink"; then (cd "tmp/artifact/$N" && "$hardlink" .) fi - (cd tmp/artifact && gtar --sort=name --zstd -cf "$N.tar.zst" "$N" && rm -rf "./$N" && ls -la) + (cd tmp/artifact && gtar --sort=name --zstd -cf "$N.tar.zst" "$N" && rm -rf "./$N" && ls -la && zstd -tq "$N.tar.zst") echo "artifact_name=$N" >> $GITHUB_ENV - name: ${{ format('Upload artifact {0}', env.artifact_name) }} uses: actions/upload-artifact@v4 @@ -360,7 +361,7 @@ jobs: cmake --install build/debug --config Debug --prefix "$PWD/tmp/artifact/$N/InstallWithCMake/InstallWithPrefixAndStrip/debug" --strip cmake --install build/release --config Release --prefix "$PWD/tmp/artifact/$N/InstallWithCMake/InstallWithPrefixAndStrip/release" --strip (cd build && cp -ai --parents */*/upx.exe "../tmp/artifact/$N") - (cd tmp/artifact && tar --sort=name --zstd -cf "$N.tar.zst" "$N" && rm -rf "./$N" && ls -la) + (cd tmp/artifact && tar --sort=name --zstd -cf "$N.tar.zst" "$N" && rm -rf "./$N" && ls -la && zstd -tq "$N.tar.zst") echo "artifact_name=$N" >> $GITHUB_ENV - name: ${{ format('Upload artifact {0}', env.artifact_name) }} uses: actions/upload-artifact@v4 @@ -455,7 +456,7 @@ jobs: N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-windows-${{ matrix.name }}" | sed 's/[^0-9a-zA-Z_.-]/-/g') mkdir -p "tmp/artifact/$N/$B" cp -ai build/$C/$B/upx/upx*.exe "tmp/artifact/$N/$B" - (cd tmp/artifact && tar --sort=name --zstd -cf "$N.tar.zst" "$N" && rm -rf "./$N" && ls -la) + (cd tmp/artifact && tar --sort=name --zstd -cf "$N.tar.zst" "$N" && rm -rf "./$N" && ls -la && zstd -tq "$N.tar.zst") echo "artifact_name=$N" >> $GITHUB_ENV - name: ${{ format('Upload artifact {0}', env.artifact_name) }} uses: actions/upload-artifact@v4 @@ -488,19 +489,14 @@ jobs: fail-fast: false matrix: include: - # only build a few targets => more targets are tested in the Weekly CI + # only build a few selected targets => more targets are tested in the Weekly CI - { zig_target: aarch64-linux-musl, qemu: qemu-aarch64 } - # { zig_target: aarch64-linux-musl, qemu: qemu-aarch64, zig_pic: -fPIE } - # { zig_target: aarch64-macos-none } - { zig_target: aarch64-macos.11.0-none } - # { zig_target: aarch64-macos.12.0-none } - # { zig_target: aarch64-macos.13.0-none } - { zig_target: aarch64-windows-gnu } - { zig_target: arm-linux-musleabihf, zig_flags: -mcpu=cortex_a5, qemu: qemu-arm } - # { zig_target: arm-linux-musleabihf, zig_flags: -mcpu=cortex_a5, qemu: qemu-arm, zig_pic: -fPIE } + - { zig_target: armeb-linux-musleabihf, zig_flags: -mcpu=cortex_a5, qemu: qemu-armeb } - { zig_target: i386-linux-gnu.2.3.4, zig_flags: -march=i586 } - { zig_target: i386-linux-musl, zig_flags: -march=i586, qemu: qemu-i386 } - # { zig_target: i386-linux-musl, zig_flags: -march=i586, qemu: qemu-i386, zig_pic: -fPIE } - { zig_target: i386-windows-gnu } - { zig_target: mips-linux-musl, qemu: qemu-mips } - { zig_target: mips-linux-muslsf, zig_flags: -msoft-float, qemu: qemu-mips } @@ -511,15 +507,11 @@ jobs: - { zig_target: powerpc64le-linux-musl, qemu: qemu-ppc64le } - { zig_target: x86_64-linux-gnu.2.3.4, qemu: qemu-x86_64 } # can use QEMU because of gcompat - { zig_target: x86_64-linux-musl, qemu: qemu-x86_64 } - # { zig_target: x86_64-linux-musl, qemu: qemu-x86_64, zig_pic: -fPIE } - # { zig_target: x86_64-macos-none } - { zig_target: x86_64-macos.11.0-none } - # { zig_target: x86_64-macos.12.0-none } - # { zig_target: x86_64-macos.13.0-none } - { zig_target: x86_64-windows-gnu } name: ${{ format('zigcc {0} {1}', matrix.zig_target, matrix.zig_pic) }} runs-on: ubuntu-latest - container: alpine:3.20 + container: ${{ contains(matrix.zig_target, 'armeb-') && 'alpine:3.19' || 'alpine:3.20' }} # qemu-armeb bug env: # zig is currently missing winpthreads; see https://github.com/ziglang/zig/issues/10989 UPX_CONFIG_EXPECT_THREADS: ${{ contains(matrix.zig_target, '-windows') && 'OFF' || 'ON' }} @@ -611,7 +603,7 @@ jobs: fi (cd build && shopt -s nullglob && cp -ai --parents */upx{,.exe} */*/*/upx{,.exe} "../tmp/artifact/$N") if command -v hardlink >/dev/null; then (cd "tmp/artifact/$N" && hardlink .) fi - (cd tmp/artifact && tar --sort=name --zstd -cf "$N.tar.zst" "$N" && rm -rf "./$N" && ls -la) + (cd tmp/artifact && tar --sort=name --zstd -cf "$N.tar.zst" "$N" && rm -rf "./$N" && ls -la && zstd -tq "$N.tar.zst") echo "artifact_name=$N" >> $GITHUB_ENV - name: ${{ format('Upload artifact {0}', env.artifact_name) }} uses: actions/upload-artifact@v4 diff --git a/CMakeLists.txt b/CMakeLists.txt index fd62bede..daee1d99 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,7 +44,7 @@ if(NOT USE_STRICT_DEFAULTS) option(UPX_CONFIG_DISABLE_WSTRICT "Do not compile with strict compiler warnings." ON) else() # strict config defaults for Git developer builds - message(STATUS "===== UPX info: strict config defaults enabled") + message(STATUS "===== UPX NOTE: strict developer config defaults enabled =====") option(UPX_CONFIG_DISABLE_GITREV "Do not compile with Git version info." OFF) option(UPX_CONFIG_DISABLE_SANITIZE "Do not compile with sanitize options." OFF) option(UPX_CONFIG_DISABLE_WERROR "Do not compile with -Werror option." OFF) @@ -521,10 +521,7 @@ endif() # extra sanity checks to detect incompatible C vs CXX settings if(NOT UPX_CONFIG_CMAKE_DISABLE_PLATFORM_CHECK) - upx_platform_check_mismatch(CMAKE_C_PLATFORM_ID CMAKE_CXX_PLATFORM_ID) - upx_platform_check_mismatch(CMAKE_C_SIMULATE_ID CMAKE_CXX_SIMULATE_ID) - upx_platform_check_mismatch(CMAKE_C_COMPILER_ABI CMAKE_CXX_COMPILER_ABI) - upx_platform_check_mismatch(CMAKE_C_COMPILER_FRONTEND_VARIANT CMAKE_CXX_COMPILER_FRONTEND_VARIANT) + upx_platform_check_c_cxx_mismatch() endif() upx_cmake_include_hook(9_finish) diff --git a/misc/cmake/functions.cmake b/misc/cmake/functions.cmake index a31daf68..ac98f86b 100644 --- a/misc/cmake/functions.cmake +++ b/misc/cmake/functions.cmake @@ -103,6 +103,7 @@ endmacro() macro(upx_check_working_build_rpath var_name) if(WIN32 OR MINGW OR CYGWIN) # always works; DLLs reside next to the executables + set(${var_name} ON) upx_cache_bool_vars(ON ${var_name}) elseif(CMAKE_BUILD_WITH_INSTALL_RPATH OR CMAKE_SKIP_RPATH OR CMAKE_SKIP_BUILD_RPATH) # cannot work; BUILD_RPATH is disabled by global CMake settings @@ -281,6 +282,14 @@ function(upx_platform_check_mismatch var_name_1 var_name_2) endif() endfunction() +# check for incompatible C vs CXX settings +function(upx_platform_check_c_cxx_mismatch) + upx_platform_check_mismatch(CMAKE_C_PLATFORM_ID CMAKE_CXX_PLATFORM_ID) + upx_platform_check_mismatch(CMAKE_C_SIMULATE_ID CMAKE_CXX_SIMULATE_ID) + upx_platform_check_mismatch(CMAKE_C_COMPILER_ABI CMAKE_CXX_COMPILER_ABI) + upx_platform_check_mismatch(CMAKE_C_COMPILER_FRONTEND_VARIANT CMAKE_CXX_COMPILER_FRONTEND_VARIANT) +endfunction() + #*********************************************************************** # compilation flags #*********************************************************************** diff --git a/misc/cmake/print_info.cmake b/misc/cmake/print_info.cmake index 407af753..dcdc8728 100644 --- a/misc/cmake/print_info.cmake +++ b/misc/cmake/print_info.cmake @@ -8,7 +8,7 @@ # print some info about the build configuration #*********************************************************************** -function(upx_print_info) # ARGV +function(upx_print_info) get_property(PROPERTY_GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) get_property(PROPERTY_TARGET_SUPPORTS_SHARED_LIBS GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS) @@ -50,7 +50,7 @@ function(upx_print_info) # ARGV endforeach() # misc - upx_print_var(CMAKE_BUILD_WITH_INSTALL_RPATH) + upx_print_var(CMAKE_BUILD_WITH_INSTALL_RPATH CMAKE_SKIP_RPATH CMAKE_SKIP_BUILD_RPATH CMAKE_SKIP_INSTALL_RPATH) upx_print_var(CMAKE_INTERPROCEDURAL_OPTIMIZATION CMAKE_POSITION_INDEPENDENT_CODE) upx_print_var(PROPERTY_TARGET_SUPPORTS_SHARED_LIBS) upx_print_var(UPX_CONFIG_SANITIZE_FLAGS_DEBUG UPX_CONFIG_SANITIZE_FLAGS_RELEASE) diff --git a/misc/podman/rebuild-stubs/packages.txt b/misc/podman/rebuild-stubs/packages.txt index 45419618..61ce87f9 100644 --- a/misc/podman/rebuild-stubs/packages.txt +++ b/misc/podman/rebuild-stubs/packages.txt @@ -32,13 +32,13 @@ ii cpp 4:13.2.0-7ubuntu1 amd64 ii cpp-13 13.2.0-23ubuntu4 amd64 GNU C preprocessor ii cpp-13-x86-64-linux-gnu 13.2.0-23ubuntu4 amd64 GNU C preprocessor for x86_64-linux-gnu ii cpp-x86-64-linux-gnu 4:13.2.0-7ubuntu1 amd64 GNU C preprocessor (cpp) for the amd64 architecture -ii curl 8.5.0-2ubuntu10.1 amd64 command line tool for transferring data with URL syntax +ii curl 8.5.0-2ubuntu10.2 amd64 command line tool for transferring data with URL syntax ii dash 0.5.12-6ubuntu5 amd64 POSIX-compliant shell ii debconf 1.5.86ubuntu1 all Debian configuration management system ii debianutils 5.17build1 amd64 Miscellaneous utilities specific to Debian ii diffstat 1.66-1build1 amd64 produces graph of changes introduced by a diff file ii diffutils 1:3.10-1build1 amd64 File comparison utilities -ii direnv 2.32.1-2build1 amd64 Utility to set directory specific environment variables +ii direnv 2.32.1-2ubuntu0.24.04.1 amd64 Utility to set directory specific environment variables ii dpkg 1.22.6ubuntu6 amd64 Debian package management system ii e2fsprogs 1.47.0-2.4~exp1ubuntu4 amd64 ext2/ext3/ext4 file system utilities ii elfutils 0.190-1.1build4 amd64 collection of utilities to handle ELF objects @@ -49,7 +49,7 @@ ii file 1:5.45-3build1 amd64 ii findutils 4.9.0-5build1 amd64 utilities for finding files--find, xargs ii fish 3.7.0-1 amd64 friendly interactive shell ii fish-common 3.7.0-1 all friendly interactive shell (architecture-independent files) -ii fzf 0.44.1-1 amd64 general-purpose command-line fuzzy finder +ii fzf 0.44.1-1ubuntu0.1 amd64 general-purpose command-line fuzzy finder ii g++ 4:13.2.0-7ubuntu1 amd64 GNU C++ compiler ii g++-13 13.2.0-23ubuntu4 amd64 GNU C++ compiler ii g++-13-multilib 13.2.0-23ubuntu4 amd64 GNU C++ compiler (multilib support) @@ -69,7 +69,7 @@ ii gcc-x86-64-linux-gnu 4:13.2.0-7ubuntu1 amd64 ii gdb 15.0.50.20240403-0ubuntu1 amd64 GNU Debugger ii git 1:2.43.0-1ubuntu7.1 amd64 fast, scalable, distributed revision control system ii git-man 1:2.43.0-1ubuntu7.1 all fast, scalable, distributed revision control system (manual pages) -ii gojq 0.12.13-1 amd64 pure Go implementation of jq (program) +ii gojq 0.12.13-1ubuntu0.24.04.1 amd64 pure Go implementation of jq (program) ii gpgv 2.4.4-2ubuntu17 amd64 GNU privacy guard - signature verification tool ii grep 3.11-4build1 amd64 GNU grep, egrep and fgrep ii groff-base 1.23.0-3build2 amd64 GNU troff text-formatting system (base system components) @@ -130,8 +130,8 @@ ii libcrypt-dev:amd64 1:4.4.36-4build1 amd64 ii libcrypt1:amd64 1:4.4.36-4build1 amd64 libcrypt shared library ii libctf-nobfd0:amd64 2.42-4ubuntu2 amd64 Compact C Type Format library (runtime, no BFD dependency) ii libctf0:amd64 2.42-4ubuntu2 amd64 Compact C Type Format library (runtime, BFD dependency) -ii libcurl3t64-gnutls:amd64 8.5.0-2ubuntu10.1 amd64 easy-to-use client-side URL transfer library (GnuTLS flavour) -ii libcurl4t64:amd64 8.5.0-2ubuntu10.1 amd64 easy-to-use client-side URL transfer library (OpenSSL flavour) +ii libcurl3t64-gnutls:amd64 8.5.0-2ubuntu10.2 amd64 easy-to-use client-side URL transfer library (GnuTLS flavour) +ii libcurl4t64:amd64 8.5.0-2ubuntu10.2 amd64 easy-to-use client-side URL transfer library (OpenSSL flavour) ii libdb5.3t64:amd64 5.3.28+dfsg2-7 amd64 Berkeley v5.3 Database Libraries [runtime] ii libdebconfclient0:amd64 0.271ubuntu3 amd64 Debian Configuration Management System (C-implementation library) ii libdebuginfod-common 0.190-1.1build4 all configuration to enable the Debian debug info server @@ -155,7 +155,7 @@ ii libgnutls30t64:amd64 3.8.3-1.1ubuntu3.1 amd64 ii libgomp1:amd64 14-20240412-0ubuntu1 amd64 GCC OpenMP (GOMP) support library ii libgpg-error0:amd64 1.47-3build2 amd64 GnuPG development runtime library ii libgprofng0:amd64 2.42-4ubuntu2 amd64 GNU Next Generation profiler (runtime library) -ii libgssapi-krb5-2:amd64 1.20.1-6ubuntu2 amd64 MIT Kerberos runtime libraries - krb5 GSS-API Mechanism +ii libgssapi-krb5-2:amd64 1.20.1-6ubuntu2.1 amd64 MIT Kerberos runtime libraries - krb5 GSS-API Mechanism ii libhiredis1.1.0:amd64 1.2.0-6ubuntu3 amd64 minimalistic C client library for Redis ii libhogweed6t64:amd64 3.9.1-2.2build1 amd64 low level cryptographic library (public-key cryptos) ii libhttp-parser2.9:amd64 2.9.4-6build1 amd64 parser for HTTP messages written in C @@ -170,10 +170,10 @@ ii libitm1:amd64 14-20240412-0ubuntu1 amd64 ii libjansson4:amd64 2.14-2build2 amd64 C library for encoding, decoding and manipulating JSON data ii libjq1:amd64 1.7.1-3build1 amd64 lightweight and flexible command-line JSON processor - shared library ii libjsoncpp25:amd64 1.9.5-6build1 amd64 library for reading and writing JSON for C++ -ii libk5crypto3:amd64 1.20.1-6ubuntu2 amd64 MIT Kerberos runtime libraries - Crypto Library +ii libk5crypto3:amd64 1.20.1-6ubuntu2.1 amd64 MIT Kerberos runtime libraries - Crypto Library ii libkeyutils1:amd64 1.6.3-3build1 amd64 Linux Key Management Utilities (library) -ii libkrb5-3:amd64 1.20.1-6ubuntu2 amd64 MIT Kerberos runtime libraries -ii libkrb5support0:amd64 1.20.1-6ubuntu2 amd64 MIT Kerberos runtime libraries - Support library +ii libkrb5-3:amd64 1.20.1-6ubuntu2.1 amd64 MIT Kerberos runtime libraries +ii libkrb5support0:amd64 1.20.1-6ubuntu2.1 amd64 MIT Kerberos runtime libraries - Support library ii libldap2:amd64 2.6.7+dfsg-1~exp1ubuntu8 amd64 OpenLDAP libraries ii liblsan0:amd64 14-20240412-0ubuntu1 amd64 LeakSanitizer -- a memory leak detector (runtime) ii libluajit-5.1-2:amd64 2.1.0+git20231223.c525bcb+dfsg-1 amd64 Just in time compiler for Lua - library version @@ -211,9 +211,9 @@ ii libproc2-0:amd64 2:4.0.4-4ubuntu3 amd64 ii libpsl5t64:amd64 0.21.2-1.1build1 amd64 Library for Public Suffix List (shared libraries) ii libpython2.7-minimal:amd64 2.7.18-8+deb11u1 amd64 Minimal subset of the Python language (version 2.7) ii libpython3-stdlib:amd64 3.12.3-0ubuntu1 amd64 interactive high-level object-oriented language (default python3 version) -ii libpython3.12-minimal:amd64 3.12.3-1 amd64 Minimal subset of the Python language (version 3.12) -ii libpython3.12-stdlib:amd64 3.12.3-1 amd64 Interactive high-level object-oriented language (standard library, version 3.12) -ii libpython3.12t64:amd64 3.12.3-1 amd64 Shared Python runtime library (version 3.12) +ii libpython3.12-minimal:amd64 3.12.3-1ubuntu0.1 amd64 Minimal subset of the Python language (version 3.12) +ii libpython3.12-stdlib:amd64 3.12.3-1ubuntu0.1 amd64 Interactive high-level object-oriented language (standard library, version 3.12) +ii libpython3.12t64:amd64 3.12.3-1ubuntu0.1 amd64 Shared Python runtime library (version 3.12) ii libquadmath0:amd64 14-20240412-0ubuntu1 amd64 GCC Quad-Precision Math Library ii libreadline8t64:amd64 8.2-4build1 amd64 GNU readline and history libraries, run-time libraries ii librhash0:amd64 1.4.3-3build1 amd64 shared library for hash functions computing @@ -236,10 +236,10 @@ ii libsqlite3-0:amd64 3.45.1-1ubuntu2 amd64 ii libss2:amd64 1.47.0-2.4~exp1ubuntu4 amd64 command-line interface parsing library ii libssh-4:amd64 0.10.6-2build2 amd64 tiny C SSH library (OpenSSL flavor) ii libssh2-1t64:amd64 1.11.0-4.1build2 amd64 SSH2 client-side library -ii libssl3t64:amd64 3.0.13-0ubuntu3.1 amd64 Secure Sockets Layer toolkit - shared libraries +ii libssl3t64:amd64 3.0.13-0ubuntu3.2 amd64 Secure Sockets Layer toolkit - shared libraries ii libstdc++-13-dev:amd64 13.2.0-23ubuntu4 amd64 GNU Standard C++ Library v3 (development files) ii libstdc++6:amd64 14-20240412-0ubuntu1 amd64 GNU Standard C++ Library v3 -ii libsystemd0:amd64 255.4-1ubuntu8.1 amd64 systemd utility library +ii libsystemd0:amd64 255.4-1ubuntu8.2 amd64 systemd utility library ii libtalloc2:amd64 2.4.2-1build2 amd64 hierarchical pool based memory allocator ii libtasn1-6:amd64 4.19.0-3build1 amd64 Manage ASN.1 structures (runtime) ii libtermkey1:amd64 0.22-1 amd64 library for processing keyboard input @@ -250,7 +250,7 @@ ii libtree-sitter0:amd64 0.20.8-2 amd64 ii libtsan2:amd64 14-20240412-0ubuntu1 amd64 ThreadSanitizer -- a Valgrind-based detector of data races (runtime) ii libubsan1:amd64 14-20240412-0ubuntu1 amd64 UBSan -- undefined behaviour sanitizer (runtime) ii libuchardet0:amd64 0.0.8-1build1 amd64 universal charset detection library - shared library -ii libudev1:amd64 255.4-1ubuntu8.1 amd64 libudev shared library +ii libudev1:amd64 255.4-1ubuntu8.2 amd64 libudev shared library ii libunibilium4:amd64 2.1.0-3 amd64 simple, self-contained terminfo library ii libunistring5:amd64 1.1-2build1 amd64 Unicode string library for C ii libunwind8:amd64 1.6.2-3build1 amd64 library to determine the call-chain of a program - runtime @@ -279,7 +279,7 @@ ii libxxhash0:amd64 0.8.2-2build1 amd64 ii libyaml-0-2:amd64 0.2.5-1build1 amd64 Fast YAML 1.1 parser and emitter library ii libzstd-dev:amd64 1.5.5+dfsg2-2build1 amd64 fast lossless compression algorithm -- development files ii libzstd1:amd64 1.5.5+dfsg2-2build1 amd64 fast lossless compression algorithm -ii linux-libc-dev:amd64 6.8.0-35.35 amd64 Linux Kernel Headers for development +ii linux-libc-dev:amd64 6.8.0-40.40 amd64 Linux Kernel Headers for development ii login 1:4.13+dfsg1-4ubuntu3 amd64 system login tools ii logsave 1.47.0-2.4~exp1ubuntu4 amd64 save the output of a command in a log file ii lsb-release 12.0-2 all Linux Standard Base version reporting utility (minimal implementation) @@ -304,7 +304,7 @@ ii neovim 0.9.5-6ubuntu2 amd64 ii neovim-runtime 0.9.5-6ubuntu2 all heavily refactored vim fork (runtime files) ii netbase 6.4 all Basic TCP/IP networking system ii ninja-build 1.11.1-2 amd64 small build system closest in spirit to Make -ii openssl 3.0.13-0ubuntu3.1 amd64 Secure Sockets Layer toolkit - cryptographic utility +ii openssl 3.0.13-0ubuntu3.2 amd64 Secure Sockets Layer toolkit - cryptographic utility ii p7zip 16.02+transitional.1 all transitional package ii parallel 20231122+ds-1 all build and execute command lines from standard input in parallel ii passwd 1:4.13+dfsg1-4ubuntu3 amd64 change and administer password and group data @@ -331,8 +331,8 @@ ii python3-tomli-w 1.0.0-2 all ii python3-xmltodict 0.13.0-1 all Makes working with XML feel like you are working with JSON (Python 3) ii python3-yaml 6.0.1-2build2 amd64 YAML parser and emitter for Python3 ii python3-zstd 1.5.5.1-1build1 amd64 python bindings to Yann Collet ZSTD compression library -ii python3.12 3.12.3-1 amd64 Interactive high-level object-oriented language (version 3.12) -ii python3.12-minimal 3.12.3-1 amd64 Minimal subset of the Python language (version 3.12) +ii python3.12 3.12.3-1ubuntu0.1 amd64 Interactive high-level object-oriented language (version 3.12) +ii python3.12-minimal 3.12.3-1ubuntu0.1 amd64 Minimal subset of the Python language (version 3.12) ii re2c 3.1-1build1 amd64 lexer generator for C, C++, Go and Rust ii readline-common 8.2-4build1 all GNU readline and history libraries, common files ii ripgrep 14.1.0-1 amd64 Recursively searches directories for a regex pattern @@ -353,7 +353,7 @@ ii universal-ctags 5.9.20210829.0-1 amd64 ii unzip 6.0-28ubuntu4 amd64 De-archiver for .zip files ii util-linux 2.39.3-9ubuntu6 amd64 miscellaneous system utilities ii valgrind 1:3.22.0-0ubuntu3 amd64 instrumentation framework for building dynamic analysis tools -ii wget 1.21.4-1ubuntu4 amd64 retrieves files from the web +ii wget 1.21.4-1ubuntu4.1 amd64 retrieves files from the web ii xz-utils 5.6.1+really5.4.5-1 amd64 XZ-format compression utilities ii yash 2.55-2 amd64 yet another shell ii yq 3.1.0-3 all Command-line YAML processor - jq wrapper for YAML documents @@ -370,7 +370,7 @@ ii zstd 1.5.5+dfsg2-2build1 amd64 ||/ Name Version Architecture Description Packages sorted by Installed-Size: - 984549 ===== TOTAL (364 packages) + 985000 ===== TOTAL (364 packages) 76943 valgrind amd64 72249 gcc-13-x86-64-linux-gnu amd64 37841 g++-13-x86-64-linux-gnu amd64 @@ -397,7 +397,7 @@ Packages sorted by Installed-Size: 10764 libasan8 amd64 9665 libx32asan8 amd64 9556 lib32asan8 amd64 - 9012 libpython3.12-stdlib amd64 + 9020 libpython3.12-stdlib amd64 8905 libpython3.12t64 amd64 8893 libtsan2 amd64 8636 lib32gcc-13-dev amd64 @@ -406,30 +406,30 @@ Packages sorted by Installed-Size: 7923 python3.12-minimal amd64 7913 perl-base amd64 7492 libx32gcc-13-dev amd64 - 7193 linux-libc-dev amd64 + 7238 linux-libc-dev amd64 + 7024 direnv amd64 6946 libc6-dev-i386 amd64 6944 coreutils amd64 - 6832 direnv amd64 6775 neovim amd64 6743 lib32stdc++-13-dev amd64 - 6607 libssl3t64 amd64 + 6608 libssl3t64 amd64 6433 libx32stdc++-13-dev amd64 6237 dpkg amd64 6158 7zip amd64 5219 bat amd64 5210 ripgrep amd64 - 5169 libpython3.12-minimal amd64 + 5172 libpython3.12-minimal amd64 4879 libhwasan0 amd64 4341 ncurses-term all 4244 minify amd64 4193 libglib2.0-0t64 amd64 4103 apt amd64 - 3983 gojq amd64 + 4074 gojq amd64 3956 python3-pycryptodome amd64 3849 libgprofng0 amd64 3806 liblsan0 amd64 + 3738 fzf amd64 3721 groff-base amd64 - 3627 fzf amd64 3605 python2.7-minimal amd64 3443 fish amd64 3441 re2c amd64 diff --git a/src/conf.h b/src/conf.h index 7c33f20e..1bbc1ca8 100644 --- a/src/conf.h +++ b/src/conf.h @@ -372,8 +372,8 @@ typedef long long upx_off_t; // for no-op debug output inline void NO_printf(const char *, ...) noexcept attribute_format(1, 2); -inline void NO_fprintf(FILE *, const char *, ...) noexcept attribute_format(2, 3); inline void NO_printf(const char *, ...) noexcept {} +inline void NO_fprintf(FILE *, const char *, ...) noexcept attribute_format(2, 3); inline void NO_fprintf(FILE *, const char *, ...) noexcept {} #if __has_builtin(__builtin_memcmp) diff --git a/src/except.h b/src/except.h index 9a372543..06016cb6 100644 --- a/src/except.h +++ b/src/except.h @@ -133,7 +133,7 @@ public: CantPackException(const char *m = nullptr, bool w = false) noexcept : super(m, 0, w) {} }; -class UnknownExecutableFormatException : public CantPackException { +class UnknownExecutableFormatException final : public CantPackException { typedef CantPackException super; public: UnknownExecutableFormatException(const char *m = nullptr, bool w = false) noexcept diff --git a/src/util/system_features.h b/src/util/system_features.h index cd1b903e..40927001 100644 --- a/src/util/system_features.h +++ b/src/util/system_features.h @@ -45,23 +45,23 @@ // libc++ hardenining #if defined(__cplusplus) && 0 // TODO later -#if defined(__clang__) && defined(__clang_major__) && (__clang_major__ + 0 >= 18) #if !defined(_LIBCPP_HARDENING_MODE) +#if defined(__clang__) && defined(__clang_major__) && (__clang_major__ + 0 >= 18) #if DEBUG #define _LIBCPP_HARDENING_MODE _LIBCPP_HARDENING_MODE_DEBUG #else #define _LIBCPP_HARDENING_MODE _LIBCPP_HARDENING_MODE_EXTENSIVE #endif -#endif #endif // clang >= 18 +#endif // _LIBCPP_HARDENING_MODE -#if defined(__clang__) && defined(__clang_major__) && (__clang_major__ + 0 < 18) #if !defined(_LIBCPP_ENABLE_ASSERTIONS) +#if defined(__clang__) && defined(__clang_major__) && (__clang_major__ + 0 < 18) #if DEBUG #define _LIBCPP_ENABLE_ASSERTIONS 1 #endif -#endif #endif // clang < 18 +#endif // _LIBCPP_ENABLE_ASSERTIONS #endif // TODO later