Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c4113b6bd6 | |||
| 4988868e61 | |||
| 5a513ab16f | |||
| f1a9d1bec9 | |||
| 70a3acfded | |||
| 3ec6a3cce0 | |||
| dd0a8856cc | |||
| c51a1130b8 | |||
| 9851fba246 | |||
| 8054543671 | |||
| 17d0e897ba | |||
| a7940fd19b | |||
| 1fbd34035e | |||
| 945d9157fa | |||
| 915bfbd82e | |||
| ef01a73e8f | |||
| 7e4e6a3cb1 | |||
| ca97430db2 | |||
| 7530643d1d | |||
| 073cdb0d58 | |||
| 9a93b5d1c1 | |||
| 44ce469b84 | |||
| 4d8d330f21 | |||
| 793e1622ea | |||
| 92a33fa0cc | |||
| e8c49a2c35 | |||
| d2e9db7112 | |||
| b728b0e021 | |||
| a1ef410509 | |||
| 24b4ec42e7 | |||
| 52dde5789e |
+128
-26
@@ -19,9 +19,9 @@ env:
|
|||||||
UPX_CONFIG_HAVE_WORKING_BUILD_RPATH: 'ON'
|
UPX_CONFIG_HAVE_WORKING_BUILD_RPATH: 'ON'
|
||||||
UPX_DEBUG_TEST_FLOAT_DIVISION_BY_ZERO: 1
|
UPX_DEBUG_TEST_FLOAT_DIVISION_BY_ZERO: 1
|
||||||
UPX_DEBUG_TEST_LIBC_QSORT: 1
|
UPX_DEBUG_TEST_LIBC_QSORT: 1
|
||||||
ZSTD_CLEVEL: 9
|
ZSTD_CLEVEL: 17
|
||||||
# 2025-03-05
|
# 2025-05-21
|
||||||
ZIG_DIST_VERSION: 0.14.0
|
ZIG_DIST_VERSION: 0.14.1
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
job-rebuild-and-verify-stubs:
|
job-rebuild-and-verify-stubs:
|
||||||
@@ -61,7 +61,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
export PATH="$(readlink -en ../deps/bin-upx-20221212):$PATH"
|
export PATH="$(readlink -en ../deps/bin-upx-20221212):$PATH"
|
||||||
make -C src/stub maintainer-clean extra-clean
|
make -C src/stub maintainer-clean extra-clean
|
||||||
git status || true
|
git status || true # make sure the stub files got deleted
|
||||||
make -C src/stub extra-all all
|
make -C src/stub extra-all all
|
||||||
if ! git diff --quiet; then git diff; exit 1; fi
|
if ! git diff --quiet; then git diff; exit 1; fi
|
||||||
- run: bash ./misc/scripts/check_whitespace_git.sh
|
- run: bash ./misc/scripts/check_whitespace_git.sh
|
||||||
@@ -74,6 +74,65 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
make -C doc clean all
|
make -C doc clean all
|
||||||
if ! git diff --quiet; then git diff || true; fi # ignore diff error
|
if ! git diff --quiet; then git diff || true; fi # ignore diff error
|
||||||
|
- name: Clean up
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
git ls-files -z --others --ignored --exclude-standard ./src/stub | xargs -0r rm -v --
|
||||||
|
find ./src/stub/src -type d -name tmp -print0 | xargs -0r rmdir -v --
|
||||||
|
- run: git status --ignored || true
|
||||||
|
|
||||||
|
job-linux-cmake-0: # uses cmake + make
|
||||||
|
if: true
|
||||||
|
needs: [ job-rebuild-and-verify-stubs ]
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- { os: ubuntu-22.04 }
|
||||||
|
- { os: ubuntu-24.04 }
|
||||||
|
- { os: ubuntu-22.04-arm }
|
||||||
|
- { os: ubuntu-24.04-arm }
|
||||||
|
name: ${{ format('{0}', matrix.os) }}-0
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- run: uname -a; pwd; id; umask
|
||||||
|
- run: sudo apt-get update
|
||||||
|
- run: sudo apt-get install -y gdb parallel
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with: { submodules: true }
|
||||||
|
- run: make build/extra/gcc/all
|
||||||
|
- run: make build/extra/clang/all
|
||||||
|
# run: make build/extra/gcc-pie/all
|
||||||
|
# run: make build/extra/clang-pie/all
|
||||||
|
- run: ls -l build/*/*/*/upx* || true
|
||||||
|
- run: file build/*/*/*/upx* || true
|
||||||
|
- name: Make artifact
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-${{ matrix.os }}-0" | sed 's/[^0-9a-zA-Z_.-]/-/g')
|
||||||
|
mkdir -p "tmp/artifact/$N"
|
||||||
|
(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 && zstd -tq "$N.tar.zst")
|
||||||
|
echo "artifact_name=$N" >> $GITHUB_ENV
|
||||||
|
- name: ${{ format('Upload artifact {0}', env.artifact_name) }}
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with: { name: '${{ env.artifact_name }}', path: tmp/artifact }
|
||||||
|
- name: Mimic ctest tests SIGSEGV
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
jobs="gcc/debug gcc/release clang/debug clang/release"
|
||||||
|
#jobs="$jobs gcc-pie/debug gcc-pie/release clang-pie/debug clang-pie/release"
|
||||||
|
for ((i = 0; i < 5; i++)); do
|
||||||
|
echo "===== parallel jobs: $jobs"
|
||||||
|
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/mimic_ctest_sigsegv.sh' ::: $jobs
|
||||||
|
done
|
||||||
|
- name: Run ctest tests
|
||||||
|
run: |
|
||||||
|
jobs="gcc/debug gcc/release clang/debug clang/release"
|
||||||
|
#jobs="$jobs gcc-pie/debug gcc-pie/release clang-pie/debug clang-pie/release"
|
||||||
|
echo "===== parallel jobs: $jobs"
|
||||||
|
CTEST_JOBS=2 parallel -kv --lb 'make build/extra/{}+test' ::: $jobs
|
||||||
|
|
||||||
job-linux-cmake: # uses cmake + make
|
job-linux-cmake: # uses cmake + make
|
||||||
if: true
|
if: true
|
||||||
@@ -82,7 +141,6 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
# { os: ubuntu-20.04, use_extra: true }
|
|
||||||
- { os: ubuntu-22.04, use_extra: true, use_wine: true }
|
- { os: ubuntu-22.04, use_extra: true, use_wine: true }
|
||||||
- { os: ubuntu-24.04, use_extra: true, use_wine: true }
|
- { os: ubuntu-24.04, use_extra: true, use_wine: true }
|
||||||
name: ${{ format('{0}', matrix.os) }}
|
name: ${{ format('{0}', matrix.os) }}
|
||||||
@@ -128,6 +186,8 @@ jobs:
|
|||||||
if: ${{ matrix.use_extra }}
|
if: ${{ matrix.use_extra }}
|
||||||
- run: make build/extra/cross-windows-mingw64/all
|
- run: make build/extra/cross-windows-mingw64/all
|
||||||
if: ${{ matrix.use_extra }}
|
if: ${{ matrix.use_extra }}
|
||||||
|
- run: ls -l build/*/*/*/upx* || true
|
||||||
|
- run: file build/*/*/*/upx* || true
|
||||||
- name: Make artifact
|
- name: Make artifact
|
||||||
run: |
|
run: |
|
||||||
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-${{ matrix.os }}" | sed 's/[^0-9a-zA-Z_.-]/-/g')
|
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-${{ matrix.os }}" | sed 's/[^0-9a-zA-Z_.-]/-/g')
|
||||||
@@ -153,6 +213,12 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
(cd build/extra/gcc/release && DESTDIR="$PWD/Install with cmake" cmake --install .)
|
(cd build/extra/gcc/release && DESTDIR="$PWD/Install with cmake" cmake --install .)
|
||||||
(cd build/extra/gcc/release && DESTDIR="$PWD/Install with make" make install)
|
(cd build/extra/gcc/release && DESTDIR="$PWD/Install with make" make install)
|
||||||
|
- name: Mimic ctest tests SIGSEGV
|
||||||
|
run: |
|
||||||
|
jobs="gcc/debug gcc/release clang/debug clang/release"
|
||||||
|
test "${{ matrix.use_extra }}" = "true" && jobs="$jobs gcc-m32/debug gcc-m32/release"
|
||||||
|
echo "===== parallel jobs: $jobs"
|
||||||
|
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/mimic_ctest_sigsegv.sh' ::: $jobs
|
||||||
- name: Run ctest tests
|
- name: Run ctest tests
|
||||||
run: |
|
run: |
|
||||||
jobs="gcc/debug gcc/release clang/debug clang/release"
|
jobs="gcc/debug gcc/release clang/debug clang/release"
|
||||||
@@ -161,12 +227,6 @@ jobs:
|
|||||||
command -v wine >/dev/null && jobs="$jobs cross-windows-mingw64/debug cross-windows-mingw64/release"
|
command -v wine >/dev/null && jobs="$jobs cross-windows-mingw64/debug cross-windows-mingw64/release"
|
||||||
echo "===== parallel jobs: $jobs"
|
echo "===== parallel jobs: $jobs"
|
||||||
CTEST_JOBS=2 parallel -kv --lb 'make build/extra/{}+test' ::: $jobs
|
CTEST_JOBS=2 parallel -kv --lb 'make build/extra/{}+test' ::: $jobs
|
||||||
- name: Mimic ctest tests
|
|
||||||
run: |
|
|
||||||
jobs="gcc/debug gcc/release clang/debug clang/release"
|
|
||||||
test "${{ matrix.use_extra }}" = "true" && jobs="$jobs gcc-m32/debug gcc-m32/release"
|
|
||||||
echo "===== parallel jobs: $jobs"
|
|
||||||
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
|
|
||||||
- name: Mimic ctest tests with Valgrind
|
- name: Mimic ctest tests with Valgrind
|
||||||
if: true # note: valgrind is SLOW
|
if: true # note: valgrind is SLOW
|
||||||
run: |
|
run: |
|
||||||
@@ -215,7 +275,8 @@ jobs:
|
|||||||
# NOTE: macos does not have "env -C"; only with brew coreutils
|
# NOTE: macos does not have "env -C"; only with brew coreutils
|
||||||
- { os: macos-13, gcc: gcc-12, gxx: g++-12, testsuite: true }
|
- { os: macos-13, gcc: gcc-12, gxx: g++-12, testsuite: true }
|
||||||
- { os: macos-14, gcc: gcc-13, gxx: g++-13, testsuite: true }
|
- { os: macos-14, gcc: gcc-13, gxx: g++-13, testsuite: true }
|
||||||
- { os: macos-15, gcc: gcc-14, gxx: g++-14, testsuite: true }
|
# { os: macos-15, gcc: gcc-14, gxx: g++-14, testsuite: true }
|
||||||
|
- { os: macos-15, testsuite: true }
|
||||||
name: ${{ format('{0} {1}{2}', matrix.os, matrix.xcode_version && 'xcode-' || '', matrix.xcode_version) }}
|
name: ${{ format('{0} {1}{2}', matrix.os, matrix.xcode_version && 'xcode-' || '', matrix.xcode_version) }}
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
@@ -229,7 +290,7 @@ jobs:
|
|||||||
test -z "$HOMEBREW_PREFIX" && HOMEBREW_PREFIX="$(brew --prefix)"
|
test -z "$HOMEBREW_PREFIX" && HOMEBREW_PREFIX="$(brew --prefix)"
|
||||||
echo "HOMEBREW_PREFIX=$HOMEBREW_PREFIX" >> $GITHUB_ENV
|
echo "HOMEBREW_PREFIX=$HOMEBREW_PREFIX" >> $GITHUB_ENV
|
||||||
# testsuite needs working "readlink -en" and "sha256sum -b"
|
# testsuite needs working "readlink -en" and "sha256sum -b"
|
||||||
packages="ninja parallel util-linux"
|
packages="parallel util-linux"
|
||||||
test -e "$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin/readlink" || packages="$packages coreutils"
|
test -e "$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin/readlink" || packages="$packages coreutils"
|
||||||
if test -n "$packages"; then
|
if test -n "$packages"; then
|
||||||
echo "===== brew leaves:"; brew leaves; echo "===== brew list:"; brew list --versions
|
echo "===== brew leaves:"; brew leaves; echo "===== brew list:"; brew list --versions
|
||||||
@@ -265,7 +326,10 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
make UPX_XTARGET=xtarget/cross-darwin-arm64 xtarget/all \
|
make UPX_XTARGET=xtarget/cross-darwin-arm64 xtarget/all \
|
||||||
CC="clang -target arm64-apple-darwin" CXX="clang++ -target arm64-apple-darwin"
|
CC="clang -target arm64-apple-darwin" CXX="clang++ -target arm64-apple-darwin"
|
||||||
|
- run: ls -l build/*/*/*/upx* || true
|
||||||
|
- run: file build/*/*/*/upx* || true
|
||||||
- name: Make artifact
|
- name: Make artifact
|
||||||
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
X="${{ matrix.xcode_version }}"; test -n "$X" && X="-xcode-$X"
|
X="${{ matrix.xcode_version }}"; test -n "$X" && X="-xcode-$X"
|
||||||
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-${{ matrix.os }}$X" | sed 's/[^0-9a-zA-Z_.-]/-/g')
|
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-${{ matrix.os }}$X" | sed 's/[^0-9a-zA-Z_.-]/-/g')
|
||||||
@@ -328,8 +392,15 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- { name: windows-2019-amd64, os: windows-2019, vsversion: 2019, vsarch: amd64 }
|
# { name: windows-2019-amd64, os: windows-2019, vsversion: 2019, vsarch: amd64 }
|
||||||
- { name: windows-2022-amd64, os: windows-2022, vsversion: 2022, vsarch: amd64 }
|
- { name: windows-2022-amd64, os: windows-2022, vsversion: 2022, vsarch: amd64 }
|
||||||
|
- { name: windows-2022-arm64, os: windows-2022, vsversion: 2022, vsarch: amd64_arm64 }
|
||||||
|
# { name: windows-2022-arm64ec, os: windows-2022, vsversion: 2022, vsarch: amd64_arm64, use_amd64ec: true }
|
||||||
|
- { name: windows-2022-i386, os: windows-2022, vsversion: 2022, vsarch: amd64_x86 }
|
||||||
|
- { name: windows-2025-amd64, os: windows-2025, vsversion: 2022, vsarch: amd64 }
|
||||||
|
- { name: windows-2025-arm64, os: windows-2025, vsversion: 2022, vsarch: amd64_arm64 }
|
||||||
|
- { name: windows-2025-arm64ec, os: windows-2025, vsversion: 2022, vsarch: amd64_arm64, use_amd64ec: true }
|
||||||
|
- { name: windows-2025-i386, os: windows-2025, vsversion: 2022, vsarch: amd64_x86 }
|
||||||
name: ${{ format('{0}', matrix.name) }}
|
name: ${{ format('{0}', matrix.name) }}
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
@@ -340,12 +411,26 @@ jobs:
|
|||||||
run: git clone --depth=1 https://github.com/upx/upx-testsuite ../deps/upx-testsuite
|
run: git clone --depth=1 https://github.com/upx/upx-testsuite ../deps/upx-testsuite
|
||||||
- uses: ilammy/msvc-dev-cmd@v1
|
- uses: ilammy/msvc-dev-cmd@v1
|
||||||
with: { vsversion: '${{ matrix.vsversion }}', arch: '${{ matrix.vsarch }}' }
|
with: { vsversion: '${{ matrix.vsversion }}', arch: '${{ matrix.vsarch }}' }
|
||||||
|
- name: Set platform
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [[ "${{ matrix.vsarch }}" == amd64 ]]; then true;
|
||||||
|
echo "UPX_CMAKE_CONFIG_FLAGS_PLATFORM=-A x64" >> $GITHUB_ENV
|
||||||
|
elif [[ "${{ matrix.use_amd64ec }}" == "true" ]]; then true;
|
||||||
|
echo "UPX_CMAKE_CONFIG_FLAGS_PLATFORM=-A ARM64EC" >> $GITHUB_ENV
|
||||||
|
echo "UPX_CONFIG_DISABLE_SELF_PACK_TEST=ON" >> $GITHUB_ENV
|
||||||
|
elif [[ "${{ matrix.vsarch }}" == amd64_arm64 ]]; then true;
|
||||||
|
echo "UPX_CMAKE_CONFIG_FLAGS_PLATFORM=-A ARM64" >> $GITHUB_ENV
|
||||||
|
echo "UPX_CONFIG_DISABLE_SELF_PACK_TEST=ON" >> $GITHUB_ENV
|
||||||
|
elif [[ "${{ matrix.vsarch }}" == amd64_x86 ]]; then true;
|
||||||
|
echo "UPX_CMAKE_CONFIG_FLAGS_PLATFORM=-A Win32" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
- run: make build/debug
|
- run: make build/debug
|
||||||
- run: make build/release
|
- run: make build/release
|
||||||
- name: Make artifact
|
- name: Make artifact
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-${{ matrix.os }}" | sed 's/[^0-9a-zA-Z_.-]/-/g')
|
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-${{ matrix.name }}" | sed 's/[^0-9a-zA-Z_.-]/-/g')
|
||||||
mkdir -p "tmp/artifact/$N"
|
mkdir -p "tmp/artifact/$N"
|
||||||
DESTDIR="$PWD/tmp/artifact/$N/InstallWithCMake/InstallWithDestdir/debug" cmake --install build/debug --config Debug
|
DESTDIR="$PWD/tmp/artifact/$N/InstallWithCMake/InstallWithDestdir/debug" cmake --install build/debug --config Debug
|
||||||
DESTDIR="$PWD/tmp/artifact/$N/InstallWithCMake/InstallWithDestdir/release" cmake --install build/release --config Release
|
DESTDIR="$PWD/tmp/artifact/$N/InstallWithCMake/InstallWithDestdir/release" cmake --install build/release --config Release
|
||||||
@@ -366,12 +451,18 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
ctest --test-dir build/debug --parallel 8 -C Debug
|
ctest --test-dir build/debug --parallel 8 -C Debug
|
||||||
ctest --test-dir build/release --parallel 8 -C Release
|
ctest --test-dir build/release --parallel 8 -C Release
|
||||||
|
- name: Mimic ctest tests
|
||||||
|
if: ${{ matrix.vsarch != 'amd64_arm64' }}
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
env -C build/debug/Debug upx_exe=./upx.exe bash "$PWD"/misc/testsuite/mimic_ctest.sh
|
||||||
|
env -C build/release/Release upx_exe=./upx.exe bash "$PWD"/misc/testsuite/mimic_ctest.sh
|
||||||
- name: Run test suite build/release
|
- name: Run test suite build/release
|
||||||
if: ${{ matrix.vsarch != 'amd64_arm64' }}
|
if: ${{ matrix.vsarch != 'amd64_arm64' }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
export upx_testsuite_SRCDIR="$(readlink -en ../deps/upx-testsuite)"
|
export upx_testsuite_SRCDIR="$(readlink -en ../deps/upx-testsuite)"
|
||||||
env -C build/release/Release bash "$PWD"/misc/testsuite/upx_testsuite_1.sh
|
env -C build/release/Release upx_exe=./upx.exe bash "$PWD"/misc/testsuite/upx_testsuite_1.sh
|
||||||
|
|
||||||
job-windows-toolchains: # build "by hand" using cmd.exe
|
job-windows-toolchains: # build "by hand" using cmd.exe
|
||||||
if: github.repository_owner == 'upx'
|
if: github.repository_owner == 'upx'
|
||||||
@@ -380,13 +471,13 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- { name: amd64-win64-vs2019, os: windows-2019, vsversion: 2019, vsarch: amd64 }
|
# { name: amd64-win64-vs2019, os: windows-2019, vsversion: 2019, vsarch: amd64 }
|
||||||
- { name: amd64-win64-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64 }
|
- { name: amd64-win64-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64 }
|
||||||
- { name: arm64-win64-vs2019, os: windows-2019, vsversion: 2019, vsarch: amd64_arm64 }
|
# { name: arm64-win64-vs2019, os: windows-2019, vsversion: 2019, vsarch: amd64_arm64 }
|
||||||
- { name: arm64-win64-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64_arm64 }
|
- { name: arm64-win64-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64_arm64 }
|
||||||
- { name: arm64ec-win64-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64_arm64, cl_machine_flags: -arm64EC, link_machine_flags: '/machine:arm64ec' }
|
- { name: arm64ec-win64-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64_arm64, cl_machine_flags: -arm64EC, link_machine_flags: '/machine:arm64ec' }
|
||||||
# { name: arm64x-win64-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64_arm64, cl_machine_flags: -arm64EC, link_machine_flags: '/machine:arm64x' }
|
# { name: arm64x-win64-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64_arm64, cl_machine_flags: -arm64EC, link_machine_flags: '/machine:arm64x' }
|
||||||
- { name: i386-win32-vs2019, os: windows-2019, vsversion: 2019, vsarch: amd64_x86 }
|
# { name: i386-win32-vs2019, os: windows-2019, vsversion: 2019, vsarch: amd64_x86 }
|
||||||
- { name: i386-win32-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64_x86 }
|
- { name: i386-win32-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64_x86 }
|
||||||
name: ${{ format('windows {0}', matrix.name) }}
|
name: ${{ format('windows {0}', matrix.name) }}
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
@@ -471,6 +562,11 @@ jobs:
|
|||||||
.\upx.exe -l upx_packed.exe
|
.\upx.exe -l upx_packed.exe
|
||||||
.\upx.exe -t upx_packed.exe
|
.\upx.exe -t upx_packed.exe
|
||||||
.\upx_packed.exe --version
|
.\upx_packed.exe --version
|
||||||
|
- name: Mimic ctest tests
|
||||||
|
if: ${{ matrix.vsarch != 'amd64_arm64' }}
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
env -C build/$C/$B/upx upx_exe=./upx.exe bash "$PWD"/misc/testsuite/mimic_ctest.sh
|
||||||
- name: Run test suite
|
- name: Run test suite
|
||||||
if: ${{ matrix.vsarch != 'amd64_arm64' }}
|
if: ${{ matrix.vsarch != 'amd64_arm64' }}
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -487,6 +583,7 @@ jobs:
|
|||||||
include:
|
include:
|
||||||
# only build a few selected 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_target: aarch64-linux-musl, qemu: qemu-aarch64, zig_pic: -fPIE }
|
||||||
- { zig_target: aarch64-macos.11.0-none }
|
- { zig_target: aarch64-macos.11.0-none }
|
||||||
- { zig_target: aarch64-windows-gnu }
|
- { zig_target: aarch64-windows-gnu }
|
||||||
- { zig_target: arm-linux-musleabihf, qemu: qemu-arm }
|
- { zig_target: arm-linux-musleabihf, qemu: qemu-arm }
|
||||||
@@ -505,7 +602,9 @@ jobs:
|
|||||||
# { zig_target: mips-linux-musleabi-mips32r6, zig_flags: -march=mips32r6, qemu: qemu-mips }
|
# { zig_target: mips-linux-musleabi-mips32r6, zig_flags: -march=mips32r6, qemu: qemu-mips }
|
||||||
- { zig_target: powerpc-linux-musleabihf, qemu: qemu-ppc }
|
- { zig_target: powerpc-linux-musleabihf, qemu: qemu-ppc }
|
||||||
- { zig_target: powerpc64-linux-musl, qemu: qemu-ppc64 }
|
- { zig_target: powerpc64-linux-musl, qemu: qemu-ppc64 }
|
||||||
|
- { zig_target: powerpc64-linux-musl, qemu: qemu-ppc64, zig_pic: -fPIE }
|
||||||
- { zig_target: powerpc64le-linux-musl, qemu: qemu-ppc64le }
|
- { zig_target: powerpc64le-linux-musl, qemu: qemu-ppc64le }
|
||||||
|
- { zig_target: powerpc64le-linux-musl, qemu: qemu-ppc64le, zig_pic: -fPIE }
|
||||||
- { zig_target: x86_64-linux-gnu.2.3.4, qemu: qemu-x86_64 } # can use QEMU because of gcompat
|
- { zig_target: x86_64-linux-gnu.2.3.4, qemu: qemu-x86_64 } # can use QEMU because of gcompat
|
||||||
- { zig_target: x86_64-linux-gnu.2.17, qemu: qemu-x86_64 } # can use QEMU because of gcompat
|
- { zig_target: x86_64-linux-gnu.2.17, 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 }
|
||||||
@@ -513,9 +612,10 @@ jobs:
|
|||||||
- { zig_target: x86_64-windows-gnu }
|
- { zig_target: x86_64-windows-gnu }
|
||||||
name: ${{ format('zigcc {0} {1}', matrix.zig_target, matrix.zig_pic) }}
|
name: ${{ format('zigcc {0} {1}', matrix.zig_target, matrix.zig_pic) }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: 'alpine:3.21'
|
#container: 'alpine:3.22'
|
||||||
#container: ${{ contains(matrix.qemu, 'qemu-ppc64') && 'alpine:3.19' || 'alpine:3.21' }}
|
#container: ${{ contains(matrix.qemu, 'qemu-ppc64') && 'alpine:3.19' || 'alpine:3.22' }}
|
||||||
#container: ${{ (matrix.qemu == 'qemu-ppc64') && 'alpine:edge' || 'alpine:3.21' }}
|
#container: ${{ (matrix.qemu == 'qemu-ppc64') && 'alpine:edge' || 'alpine:3.22' }}
|
||||||
|
container: ${{ (matrix.qemu == 'qemu-aarch64' && matrix.zig_pic == '-fPIE') && 'alpine:3.18' || 'alpine:3.22' }}
|
||||||
env:
|
env:
|
||||||
UPX_CONFIG_HAVE_WORKING_BUILD_RPATH: ''
|
UPX_CONFIG_HAVE_WORKING_BUILD_RPATH: ''
|
||||||
# for zig-cc wrapper scripts (see below):
|
# for zig-cc wrapper scripts (see below):
|
||||||
@@ -529,7 +629,7 @@ jobs:
|
|||||||
if: ${{ job.container }}
|
if: ${{ job.container }}
|
||||||
shell: sh
|
shell: sh
|
||||||
run: |
|
run: |
|
||||||
apk update && apk upgrade && apk add bash cmake curl file git make parallel patch tar util-linux xz zstd
|
apk update && apk upgrade && apk add bash cmake curl file gdb git make parallel patch strace tar util-linux xz zstd
|
||||||
# set PATH like in Ubuntu
|
# set PATH like in Ubuntu
|
||||||
echo "PATH=$HOME/.local/bin:$PATH" >> $GITHUB_ENV
|
echo "PATH=$HOME/.local/bin:$PATH" >> $GITHUB_ENV
|
||||||
git config --global --add safe.directory '*' # needed when running in a container
|
git config --global --add safe.directory '*' # needed when running in a container
|
||||||
@@ -553,9 +653,11 @@ jobs:
|
|||||||
mkdir -p -v ~/.local/bin
|
mkdir -p -v ~/.local/bin
|
||||||
cd ~/.local/bin
|
cd ~/.local/bin
|
||||||
ZIG_DIST_NAME=zig-linux-x86_64-${ZIG_DIST_VERSION}
|
ZIG_DIST_NAME=zig-linux-x86_64-${ZIG_DIST_VERSION}
|
||||||
|
ZIG_DIST_NAME=zig-x86_64-linux-${ZIG_DIST_VERSION}
|
||||||
#curl -sS -L -O https://ziglang.org/builds/${ZIG_DIST_NAME}.tar.xz
|
#curl -sS -L -O https://ziglang.org/builds/${ZIG_DIST_NAME}.tar.xz
|
||||||
curl -sS -L -O https://ziglang.org/download/0.14.0/${ZIG_DIST_NAME}.tar.xz
|
curl -sS -L -O https://ziglang.org/download/0.14.1/${ZIG_DIST_NAME}.tar.xz
|
||||||
ls -l ${ZIG_DIST_NAME}.tar.xz
|
ls -l ${ZIG_DIST_NAME}.tar.xz
|
||||||
|
file ${ZIG_DIST_NAME}.tar.xz || true
|
||||||
tar -xoJf ${ZIG_DIST_NAME}.tar.xz
|
tar -xoJf ${ZIG_DIST_NAME}.tar.xz
|
||||||
rm ${ZIG_DIST_NAME}.tar.xz
|
rm ${ZIG_DIST_NAME}.tar.xz
|
||||||
ln -s -v ${ZIG_DIST_NAME}/zig zig
|
ln -s -v ${ZIG_DIST_NAME}/zig zig
|
||||||
@@ -601,12 +703,12 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
make UPX_XTARGET=zig/${ZIG_TARGET}${ZIG_PIC} xtarget/release \
|
make UPX_XTARGET=zig/${ZIG_TARGET}${ZIG_PIC} xtarget/release \
|
||||||
CC="zig-cc" CXX="zig-cxx" CMAKE_AR="$HOME/.local/bin/zig-ar" CMAKE_RANLIB="$HOME/.local/bin/zig-ranlib"
|
CC="zig-cc" CXX="zig-cxx" CMAKE_AR="$HOME/.local/bin/zig-ar" CMAKE_RANLIB="$HOME/.local/bin/zig-ranlib"
|
||||||
file build/zig/${ZIG_TARGET}${ZIG_PIC}/release/upx*
|
|
||||||
- name: ${{ format('Build Debug with zig-cc -target {0} {1}', env.ZIG_TARGET, env.ZIG_PIC) }}
|
- name: ${{ format('Build Debug with zig-cc -target {0} {1}', env.ZIG_TARGET, env.ZIG_PIC) }}
|
||||||
run: |
|
run: |
|
||||||
make UPX_XTARGET=zig/${ZIG_TARGET}${ZIG_PIC} xtarget/debug \
|
make UPX_XTARGET=zig/${ZIG_TARGET}${ZIG_PIC} xtarget/debug \
|
||||||
CC="zig-cc" CXX="zig-cxx" CMAKE_AR="$HOME/.local/bin/zig-ar" CMAKE_RANLIB="$HOME/.local/bin/zig-ranlib"
|
CC="zig-cc" CXX="zig-cxx" CMAKE_AR="$HOME/.local/bin/zig-ar" CMAKE_RANLIB="$HOME/.local/bin/zig-ranlib"
|
||||||
file build/zig/${ZIG_TARGET}${ZIG_PIC}/debug/upx*
|
- run: ls -l build/*/*/*/upx* || true
|
||||||
|
- run: file build/*/*/*/upx* || true
|
||||||
- name: ${{ format('Make artifact from upx-{0}-{1}', github.ref_name, env.UPX_GITREV_SHORT) }}
|
- name: ${{ format('Make artifact from upx-{0}-{1}', github.ref_name, env.UPX_GITREV_SHORT) }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
/.cache*
|
/.cache*
|
||||||
|
/.idea/
|
||||||
/.hg*
|
/.hg*
|
||||||
/.vscode*
|
/.vscode*
|
||||||
|
/.zed/
|
||||||
/CMakeCache*
|
/CMakeCache*
|
||||||
/CMakeFiles*
|
/CMakeFiles*
|
||||||
/CTest*
|
/CTest*
|
||||||
|
|||||||
+4
-1
@@ -30,6 +30,7 @@ endif()
|
|||||||
# support functions and some utility
|
# support functions and some utility
|
||||||
include("${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/functions.cmake")
|
include("${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/functions.cmake")
|
||||||
upx_print_var(CMAKE_VERSION UPX_CONFIG_CMAKE_MINIMUM_REQUIRED_VERSION CMAKE_GENERATOR)
|
upx_print_var(CMAKE_VERSION UPX_CONFIG_CMAKE_MINIMUM_REQUIRED_VERSION CMAKE_GENERATOR)
|
||||||
|
upx_print_var(CMAKE_GENERATOR_TOOLSET CMAKE_GENERATOR_PLATFORM)
|
||||||
|
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
# options
|
# options
|
||||||
@@ -62,13 +63,15 @@ option(UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS "Do not run exhaustive tests"
|
|||||||
# init
|
# init
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
|
|
||||||
set(UPX_VERSION_STRING "5.0.1") # this should match src/version.h
|
set(UPX_VERSION_STRING "5.0.2") # this should match src/version.h
|
||||||
|
|
||||||
upx_cmake_include_hook(2_init)
|
upx_cmake_include_hook(2_init)
|
||||||
|
|
||||||
# Disallow in-source build. Note that you will still have to manually
|
# Disallow in-source build. Note that you will still have to manually
|
||||||
# clean up a few files if you accidentally try an in-source build.
|
# clean up a few files if you accidentally try an in-source build.
|
||||||
|
if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.git")
|
||||||
upx_disallow_in_source_build()
|
upx_disallow_in_source_build()
|
||||||
|
endif()
|
||||||
|
|
||||||
# global settings
|
# global settings
|
||||||
if(${CMAKE_VERSION} VERSION_GREATER "3.14.99" AND NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY)
|
if(${CMAKE_VERSION} VERSION_GREATER "3.14.99" AND NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY)
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
User visible changes for UPX
|
User visible changes for UPX
|
||||||
==================================================================
|
==================================================================
|
||||||
|
|
||||||
|
Changes in 5.0.2 (20 Jul 2025):
|
||||||
|
* bug fixes - see https://github.com/upx/upx/milestone/20
|
||||||
|
|
||||||
Changes in 5.0.1 (06 May 2025):
|
Changes in 5.0.1 (06 May 2025):
|
||||||
* bug fixes - see https://github.com/upx/upx/milestone/19
|
* bug fixes - see https://github.com/upx/upx/milestone/19
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
.\" ========================================================================
|
.\" ========================================================================
|
||||||
.\"
|
.\"
|
||||||
.IX Title "UPX 1"
|
.IX Title "UPX 1"
|
||||||
.TH UPX 1 2025-05-06 "upx 5.0.1" " "
|
.TH UPX 1 2025-07-20 "upx 5.0.2" " "
|
||||||
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
||||||
.\" way too many mistakes in technical documents.
|
.\" way too many mistakes in technical documents.
|
||||||
.if n .ad l
|
.if n .ad l
|
||||||
|
|||||||
@@ -114,8 +114,14 @@ endif()
|
|||||||
if(NOT UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS)
|
if(NOT UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS)
|
||||||
foreach(method IN ITEMS nrv2b nrv2d nrv2e lzma)
|
foreach(method IN ITEMS nrv2b nrv2d nrv2e lzma)
|
||||||
foreach(level IN ITEMS 1 2 3 4 5 6 7)
|
foreach(level IN ITEMS 1 2 3 4 5 6 7)
|
||||||
|
foreach(small IN ITEMS normal small)
|
||||||
set(s "${method}-${level}")
|
set(s "${method}-${level}")
|
||||||
upx_add_test(upx-self-pack-${s} upx --${method} -${level} --all-filters --debug-use-random-filter "${upx_self_exe}" ${fo} -o upx-packed-${s}${exe})
|
set(ss "")
|
||||||
|
if(small MATCHES "small")
|
||||||
|
set(s "${method}-${level}-${small}")
|
||||||
|
set(ss "--small")
|
||||||
|
endif()
|
||||||
|
upx_add_test(upx-self-pack-${s} upx --${method} -${level} ${ss} --all-filters --debug-use-random-filter "${upx_self_exe}" ${fo} -o upx-packed-${s}${exe})
|
||||||
upx_add_test(upx-list-${s} upx -l upx-packed-${s}${exe})
|
upx_add_test(upx-list-${s} upx -l upx-packed-${s}${exe})
|
||||||
upx_add_test(upx-fileinfo-${s} upx --fileinfo upx-packed-${s}${exe})
|
upx_add_test(upx-fileinfo-${s} upx --fileinfo upx-packed-${s}${exe})
|
||||||
upx_add_test(upx-test-${s} upx -t upx-packed-${s}${exe})
|
upx_add_test(upx-test-${s} upx -t upx-packed-${s}${exe})
|
||||||
@@ -137,6 +143,7 @@ if(NOT UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS)
|
|||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
endforeach()
|
||||||
endif() # UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS
|
endif() # UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS
|
||||||
|
|
||||||
# clean up
|
# clean up
|
||||||
|
|||||||
@@ -65,6 +65,13 @@ build/extra/clang-lto-auto/release: PHONY; $(call run_config_and_build,$@,Releas
|
|||||||
build/extra/clang-lto-auto/%: export CC = clang -flto=auto
|
build/extra/clang-lto-auto/%: export CC = clang -flto=auto
|
||||||
build/extra/clang-lto-auto/%: export CXX = clang++ -flto=auto
|
build/extra/clang-lto-auto/%: export CXX = clang++ -flto=auto
|
||||||
|
|
||||||
|
# force building with clang/clang++ -pie
|
||||||
|
build/extra/clang-pie/debug: PHONY; $(call run_config_and_build,$@,Debug)
|
||||||
|
build/extra/clang-pie/release: PHONY; $(call run_config_and_build,$@,Release)
|
||||||
|
build/extra/clang-pie/%: export CC = clang -pie -fPIE -Wno-unused-command-line-argument
|
||||||
|
build/extra/clang-pie/%: export CXX = clang++ -pie -fPIE -Wno-unused-command-line-argument
|
||||||
|
build/extra/clang-pie/%: export UPX_CONFIG_DISABLE_SHARED_LIBS = ON
|
||||||
|
|
||||||
# force building with clang/clang++ -static
|
# force building with clang/clang++ -static
|
||||||
build/extra/clang-static/debug: PHONY; $(call run_config_and_build,$@,Debug)
|
build/extra/clang-static/debug: PHONY; $(call run_config_and_build,$@,Debug)
|
||||||
build/extra/clang-static/release: PHONY; $(call run_config_and_build,$@,Release)
|
build/extra/clang-static/release: PHONY; $(call run_config_and_build,$@,Release)
|
||||||
@@ -140,6 +147,13 @@ build/extra/gcc-lto-auto/release: PHONY; $(call run_config_and_build,$@,Release)
|
|||||||
build/extra/gcc-lto-auto/%: export CC = gcc -flto=auto
|
build/extra/gcc-lto-auto/%: export CC = gcc -flto=auto
|
||||||
build/extra/gcc-lto-auto/%: export CXX = g++ -flto=auto
|
build/extra/gcc-lto-auto/%: export CXX = g++ -flto=auto
|
||||||
|
|
||||||
|
# force building with gcc/g++ -pie
|
||||||
|
build/extra/gcc-pie/debug: PHONY; $(call run_config_and_build,$@,Debug)
|
||||||
|
build/extra/gcc-pie/release: PHONY; $(call run_config_and_build,$@,Release)
|
||||||
|
build/extra/gcc-pie/%: export CC = gcc -pie -fPIE
|
||||||
|
build/extra/gcc-pie/%: export CXX = g++ -pie -fPIE
|
||||||
|
build/extra/gcc-pie/%: export UPX_CONFIG_DISABLE_SHARED_LIBS = ON
|
||||||
|
|
||||||
# force building with gcc/g++ -static
|
# force building with gcc/g++ -static
|
||||||
build/extra/gcc-static/debug: PHONY; $(call run_config_and_build,$@,Debug)
|
build/extra/gcc-static/debug: PHONY; $(call run_config_and_build,$@,Debug)
|
||||||
build/extra/gcc-static/release: PHONY; $(call run_config_and_build,$@,Release)
|
build/extra/gcc-static/release: PHONY; $(call run_config_and_build,$@,Release)
|
||||||
@@ -177,7 +191,7 @@ build/extra/gcc-std-cxx23/%: export CXX = g++ -std=gnu++2b
|
|||||||
build/extra/gcc-std-cxx23/%: export UPX_CONFIG_DISABLE_C_STANDARD = ON
|
build/extra/gcc-std-cxx23/%: export UPX_CONFIG_DISABLE_C_STANDARD = ON
|
||||||
build/extra/gcc-std-cxx23/%: export UPX_CONFIG_DISABLE_CXX_STANDARD = ON
|
build/extra/gcc-std-cxx23/%: export UPX_CONFIG_DISABLE_CXX_STANDARD = ON
|
||||||
|
|
||||||
# force building with gcc/g++ C++26 (EXPERIMENTAL; need gcc-14)
|
# force building with gcc/g++ C++26 (and C23)
|
||||||
build/extra/gcc-std-cxx26/debug: PHONY; $(call run_config_and_build,$@,Debug)
|
build/extra/gcc-std-cxx26/debug: PHONY; $(call run_config_and_build,$@,Debug)
|
||||||
build/extra/gcc-std-cxx26/release: PHONY; $(call run_config_and_build,$@,Release)
|
build/extra/gcc-std-cxx26/release: PHONY; $(call run_config_and_build,$@,Release)
|
||||||
build/extra/gcc-std-cxx26/%: export CC = gcc -std=gnu23
|
build/extra/gcc-std-cxx26/%: export CC = gcc -std=gnu23
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ RUN dpkg --add-architecture i386 \
|
|||||||
# the full UPX binary inside the container via CMake:
|
# the full UPX binary inside the container via CMake:
|
||||||
7zip bat bfs btop bubblewrap busybox bzip2 bzip3 cabextract ccache chrpath cmake cpio \
|
7zip bat bfs btop bubblewrap busybox bzip2 bzip3 cabextract ccache chrpath cmake cpio \
|
||||||
dash diffstat direnv elfutils execstack eza fd-find file fish fzf \
|
dash diffstat direnv elfutils execstack eza fd-find file fish fzf \
|
||||||
g++ gawk gdb gojq ht htop hyperfine jq ksh \
|
g++ gawk gdb gh gojq ht htop hyperfine jq ksh \
|
||||||
lftp libzstd-dev lsb-release lsd lz4 lzip lzop minify mksh moreutils musl neovim ninja-build \
|
lftp libzstd-dev lsb-release lsd lz4 lzip lzop minify mksh moreutils musl neovim ninja-build \
|
||||||
p7zip parallel patch patchelf patchutils pax-utils proot \
|
p7zip parallel patch patchelf patchutils pax-utils proot \
|
||||||
python3 python3-pyasn1 python3-pycryptodome python3-pycurl python3-tomli python3-tomli-w \
|
python3 python3-pyasn1 python3-pycryptodome python3-pycurl python3-tomli python3-tomli-w \
|
||||||
@@ -62,7 +62,7 @@ RUN cd /root \
|
|||||||
# install official UPX release binaries into /usr/local/bin; not required but convenient for testing
|
# install official UPX release binaries into /usr/local/bin; not required but convenient for testing
|
||||||
RUN cd /root \
|
RUN cd /root \
|
||||||
&& curl -sS -L -O https://github.com/upx/upx/releases/download/v3.91/upx-3.91-amd64_linux.tar.bz2 \
|
&& curl -sS -L -O https://github.com/upx/upx/releases/download/v3.91/upx-3.91-amd64_linux.tar.bz2 \
|
||||||
&& xzversions="3.92 3.93 3.94 3.95 3.96 4.0.0 4.0.1 4.0.2 4.1.0 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 5.0.0" \
|
&& xzversions="3.92 3.93 3.94 3.95 3.96 4.0.0 4.0.1 4.0.2 4.1.0 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 5.0.0 5.0.1" \
|
||||||
&& for v in $xzversions; do curl -sS -L -O https://github.com/upx/upx/releases/download/v${v}/upx-${v}-amd64_linux.tar.xz; done \
|
&& for v in $xzversions; do curl -sS -L -O https://github.com/upx/upx/releases/download/v${v}/upx-${v}-amd64_linux.tar.xz; done \
|
||||||
&& for f in ./upx-*.tar.*; do tar -xoaf $f; done \
|
&& for f in ./upx-*.tar.*; do tar -xoaf $f; done \
|
||||||
&& for v in 3.91 $xzversions; do d=upx-${v}-amd64_linux; ./$d/upx -qq -d $d/upx -o /usr/local/bin/upx-${v}; done \
|
&& for v in 3.91 $xzversions; do d=upx-${v}-amd64_linux; ./$d/upx -qq -d $d/upx -o /usr/local/bin/upx-${v}; done \
|
||||||
|
|||||||
Generated
+52
-50
@@ -2,7 +2,7 @@ Packages:
|
|||||||
+++-=============================-=================================-============-================================================================================
|
+++-=============================-=================================-============-================================================================================
|
||||||
Desired=Unknown/Install/Remove/Purge/Hold
|
Desired=Unknown/Install/Remove/Purge/Hold
|
||||||
ii 7zip 23.01+dfsg-11 amd64 7-Zip file archiver with a high compression ratio
|
ii 7zip 23.01+dfsg-11 amd64 7-Zip file archiver with a high compression ratio
|
||||||
ii apt 2.7.14build2 amd64 commandline package manager
|
ii apt 2.8.3 amd64 commandline package manager
|
||||||
ii aria2 1.37.0+debian-1build3 amd64 High speed download utility
|
ii aria2 1.37.0+debian-1build3 amd64 High speed download utility
|
||||||
ii base-files 13ubuntu10.2 amd64 Debian base system miscellaneous files
|
ii base-files 13ubuntu10.2 amd64 Debian base system miscellaneous files
|
||||||
ii base-passwd 3.6.3build1 amd64 Debian base system master password and group files
|
ii base-passwd 3.6.3build1 amd64 Debian base system master password and group files
|
||||||
@@ -10,9 +10,9 @@ ii bash 5.2.21-2ubuntu4 amd64
|
|||||||
ii bash-completion 1:2.11-8 all programmable completion for the bash shell
|
ii bash-completion 1:2.11-8 all programmable completion for the bash shell
|
||||||
ii bat 0.24.0-1build1 amd64 cat(1) clone with syntax highlighting and git integration
|
ii bat 0.24.0-1build1 amd64 cat(1) clone with syntax highlighting and git integration
|
||||||
ii bfs 3.1.2-1build1 amd64 Breadth-first version of find(1)
|
ii bfs 3.1.2-1build1 amd64 Breadth-first version of find(1)
|
||||||
ii binutils 2.42-4ubuntu2.4 amd64 GNU assembler, linker and binary utilities
|
ii binutils 2.42-4ubuntu2.5 amd64 GNU assembler, linker and binary utilities
|
||||||
ii binutils-common:amd64 2.42-4ubuntu2.4 amd64 Common files for the GNU assembler, linker and binary utilities
|
ii binutils-common:amd64 2.42-4ubuntu2.5 amd64 Common files for the GNU assembler, linker and binary utilities
|
||||||
ii binutils-x86-64-linux-gnu 2.42-4ubuntu2.4 amd64 GNU binary utilities, for x86-64-linux-gnu target
|
ii binutils-x86-64-linux-gnu 2.42-4ubuntu2.5 amd64 GNU binary utilities, for x86-64-linux-gnu target
|
||||||
ii bsdextrautils 2.39.3-9ubuntu6.2 amd64 extra utilities from 4.4BSD-Lite
|
ii bsdextrautils 2.39.3-9ubuntu6.2 amd64 extra utilities from 4.4BSD-Lite
|
||||||
ii bsdutils 1:2.39.3-9ubuntu6.2 amd64 basic utilities from 4.4BSD-Lite
|
ii bsdutils 1:2.39.3-9ubuntu6.2 amd64 basic utilities from 4.4BSD-Lite
|
||||||
ii btop 1.3.0-1 amd64 Modern and colorful command line resource monitor that shows usage and stats
|
ii btop 1.3.0-1 amd64 Modern and colorful command line resource monitor that shows usage and stats
|
||||||
@@ -41,7 +41,7 @@ ii diffutils 1:3.10-1build1 amd64
|
|||||||
ii direnv 2.32.1-2ubuntu0.24.04.2 amd64 Utility to set directory specific environment variables
|
ii direnv 2.32.1-2ubuntu0.24.04.2 amd64 Utility to set directory specific environment variables
|
||||||
ii dpkg 1.22.6ubuntu6.1 amd64 Debian package management system
|
ii dpkg 1.22.6ubuntu6.1 amd64 Debian package management system
|
||||||
ii e2fsprogs 1.47.0-2.4~exp1ubuntu4.1 amd64 ext2/ext3/ext4 file system utilities
|
ii e2fsprogs 1.47.0-2.4~exp1ubuntu4.1 amd64 ext2/ext3/ext4 file system utilities
|
||||||
ii elfutils 0.190-1.1build4.1 amd64 collection of utilities to handle ELF objects
|
ii elfutils 0.190-1.1ubuntu0.1 amd64 collection of utilities to handle ELF objects
|
||||||
ii execstack 0.0.20131005-1.1ubuntu1 amd64 ELF GNU_STACK program header editing utility
|
ii execstack 0.0.20131005-1.1ubuntu1 amd64 ELF GNU_STACK program header editing utility
|
||||||
ii eza 0.18.2-1 amd64 Modern replacement for ls
|
ii eza 0.18.2-1 amd64 Modern replacement for ls
|
||||||
ii fd-find 9.0.0-1 amd64 Simple, fast and user-friendly alternative to find
|
ii fd-find 9.0.0-1 amd64 Simple, fast and user-friendly alternative to find
|
||||||
@@ -67,10 +67,11 @@ ii gcc-14-base:i386 14.2.0-4ubuntu2~24.04 i386
|
|||||||
ii gcc-multilib 4:13.2.0-7ubuntu1 amd64 GNU C compiler (multilib files)
|
ii gcc-multilib 4:13.2.0-7ubuntu1 amd64 GNU C compiler (multilib files)
|
||||||
ii gcc-x86-64-linux-gnu 4:13.2.0-7ubuntu1 amd64 GNU C compiler for the amd64 architecture
|
ii gcc-x86-64-linux-gnu 4:13.2.0-7ubuntu1 amd64 GNU C compiler for the amd64 architecture
|
||||||
ii gdb 15.0.50.20240403-0ubuntu1 amd64 GNU Debugger
|
ii gdb 15.0.50.20240403-0ubuntu1 amd64 GNU Debugger
|
||||||
|
ii gh 2.45.0-1ubuntu0.2 amd64 GitHub CLI, GitHub’s official command line tool
|
||||||
ii git 1:2.43.0-1ubuntu7.2 amd64 fast, scalable, distributed revision control system
|
ii git 1:2.43.0-1ubuntu7.2 amd64 fast, scalable, distributed revision control system
|
||||||
ii git-man 1:2.43.0-1ubuntu7.2 all fast, scalable, distributed revision control system (manual pages)
|
ii git-man 1:2.43.0-1ubuntu7.2 all fast, scalable, distributed revision control system (manual pages)
|
||||||
ii gojq 0.12.13-1ubuntu0.24.04.2 amd64 pure Go implementation of jq (program)
|
ii gojq 0.12.13-1ubuntu0.24.04.2 amd64 pure Go implementation of jq (program)
|
||||||
ii gpgv 2.4.4-2ubuntu17 amd64 GNU privacy guard - signature verification tool
|
ii gpgv 2.4.4-2ubuntu17.2 amd64 GNU privacy guard - signature verification tool
|
||||||
ii grep 3.11-4build1 amd64 GNU grep, egrep and fgrep
|
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)
|
ii groff-base 1.23.0-3build2 amd64 GNU troff text-formatting system (base system components)
|
||||||
ii gzip 1.12-1ubuntu3 amd64 GNU compression utilities
|
ii gzip 1.12-1ubuntu3 amd64 GNU compression utilities
|
||||||
@@ -95,18 +96,18 @@ ii lib32stdc++-13-dev 13.3.0-6ubuntu2~24.04 amd64
|
|||||||
ii lib32stdc++6 14.2.0-4ubuntu2~24.04 amd64 GNU Standard C++ Library v3 (32 bit Version)
|
ii lib32stdc++6 14.2.0-4ubuntu2~24.04 amd64 GNU Standard C++ Library v3 (32 bit Version)
|
||||||
ii lib32ubsan1 14.2.0-4ubuntu2~24.04 amd64 UBSan -- undefined behaviour sanitizer (32bit)
|
ii lib32ubsan1 14.2.0-4ubuntu2~24.04 amd64 UBSan -- undefined behaviour sanitizer (32bit)
|
||||||
ii libacl1:amd64 2.3.2-1build1.1 amd64 access control list - shared library
|
ii libacl1:amd64 2.3.2-1build1.1 amd64 access control list - shared library
|
||||||
ii libapt-pkg6.0t64:amd64 2.7.14build2 amd64 package management runtime library
|
ii libapt-pkg6.0t64:amd64 2.8.3 amd64 package management runtime library
|
||||||
ii libarchive13t64:amd64 3.7.2-2ubuntu0.3 amd64 Multi-format archive and compression library (shared library)
|
ii libarchive13t64:amd64 3.7.2-2ubuntu0.4 amd64 Multi-format archive and compression library (shared library)
|
||||||
ii libaria2-0:amd64 1.37.0+debian-1build3 amd64 C++ library interface to aria2
|
ii libaria2-0:amd64 1.37.0+debian-1build3 amd64 C++ library interface to aria2
|
||||||
ii libasan8:amd64 14.2.0-4ubuntu2~24.04 amd64 AddressSanitizer -- a fast memory error detector
|
ii libasan8:amd64 14.2.0-4ubuntu2~24.04 amd64 AddressSanitizer -- a fast memory error detector
|
||||||
ii libasm1t64:amd64 0.190-1.1build4.1 amd64 library with a programmable assembler interface
|
ii libasm1t64:amd64 0.190-1.1ubuntu0.1 amd64 library with a programmable assembler interface
|
||||||
ii libassuan0:amd64 2.5.6-1build1 amd64 IPC library for the GnuPG components
|
ii libassuan0:amd64 2.5.6-1build1 amd64 IPC library for the GnuPG components
|
||||||
ii libatomic1:amd64 14.2.0-4ubuntu2~24.04 amd64 support library providing __atomic built-in functions
|
ii libatomic1:amd64 14.2.0-4ubuntu2~24.04 amd64 support library providing __atomic built-in functions
|
||||||
ii libattr1:amd64 1:2.5.2-1build1.1 amd64 extended attribute handling - shared library
|
ii libattr1:amd64 1:2.5.2-1build1.1 amd64 extended attribute handling - shared library
|
||||||
ii libaudit-common 1:3.1.2-2.1build1.1 all Dynamic library for security auditing - common files
|
ii libaudit-common 1:3.1.2-2.1build1.1 all Dynamic library for security auditing - common files
|
||||||
ii libaudit1:amd64 1:3.1.2-2.1build1.1 amd64 Dynamic library for security auditing
|
ii libaudit1:amd64 1:3.1.2-2.1build1.1 amd64 Dynamic library for security auditing
|
||||||
ii libbabeltrace1:amd64 1.5.11-3build3 amd64 Babeltrace conversion libraries
|
ii libbabeltrace1:amd64 1.5.11-3build3 amd64 Babeltrace conversion libraries
|
||||||
ii libbinutils:amd64 2.42-4ubuntu2.4 amd64 GNU binary utilities (private shared library)
|
ii libbinutils:amd64 2.42-4ubuntu2.5 amd64 GNU binary utilities (private shared library)
|
||||||
ii libblkid1:amd64 2.39.3-9ubuntu6.2 amd64 block device ID library
|
ii libblkid1:amd64 2.39.3-9ubuntu6.2 amd64 block device ID library
|
||||||
ii libbrotli1:amd64 1.1.0-2build2 amd64 library implementing brotli encoder and decoder (shared libraries)
|
ii libbrotli1:amd64 1.1.0-2build2 amd64 library implementing brotli encoder and decoder (shared libraries)
|
||||||
ii libbsd0:amd64 0.12.1-1build1.1 amd64 utility functions from BSD systems - shared library
|
ii libbsd0:amd64 0.12.1-1build1.1 amd64 utility functions from BSD systems - shared library
|
||||||
@@ -129,18 +130,18 @@ ii libcc1-0:amd64 14.2.0-4ubuntu2~24.04 amd64
|
|||||||
ii libcom-err2:amd64 1.47.0-2.4~exp1ubuntu4.1 amd64 common error description library
|
ii libcom-err2:amd64 1.47.0-2.4~exp1ubuntu4.1 amd64 common error description library
|
||||||
ii libcrypt-dev:amd64 1:4.4.36-4build1 amd64 libcrypt development files
|
ii libcrypt-dev:amd64 1:4.4.36-4build1 amd64 libcrypt development files
|
||||||
ii libcrypt1:amd64 1:4.4.36-4build1 amd64 libcrypt shared library
|
ii libcrypt1:amd64 1:4.4.36-4build1 amd64 libcrypt shared library
|
||||||
ii libctf-nobfd0:amd64 2.42-4ubuntu2.4 amd64 Compact C Type Format library (runtime, no BFD dependency)
|
ii libctf-nobfd0:amd64 2.42-4ubuntu2.5 amd64 Compact C Type Format library (runtime, no BFD dependency)
|
||||||
ii libctf0:amd64 2.42-4ubuntu2.4 amd64 Compact C Type Format library (runtime, BFD dependency)
|
ii libctf0:amd64 2.42-4ubuntu2.5 amd64 Compact C Type Format library (runtime, BFD dependency)
|
||||||
ii libcurl3t64-gnutls:amd64 8.5.0-2ubuntu10.6 amd64 easy-to-use client-side URL transfer library (GnuTLS flavour)
|
ii libcurl3t64-gnutls:amd64 8.5.0-2ubuntu10.6 amd64 easy-to-use client-side URL transfer library (GnuTLS flavour)
|
||||||
ii libcurl4t64:amd64 8.5.0-2ubuntu10.6 amd64 easy-to-use client-side URL transfer library (OpenSSL flavour)
|
ii libcurl4t64:amd64 8.5.0-2ubuntu10.6 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 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 libdebconfclient0:amd64 0.271ubuntu3 amd64 Debian Configuration Management System (C-implementation library)
|
||||||
ii libdebuginfod-common 0.190-1.1build4.1 all configuration to enable the Debian debug info server
|
ii libdebuginfod-common 0.190-1.1ubuntu0.1 all configuration to enable the Debian debug info server
|
||||||
ii libdebuginfod1t64:amd64 0.190-1.1build4.1 amd64 library to interact with debuginfod (development files)
|
ii libdebuginfod1t64:amd64 0.190-1.1ubuntu0.1 amd64 library to interact with debuginfod (development files)
|
||||||
ii libdw1t64:amd64 0.190-1.1build4.1 amd64 library that provides access to the DWARF debug information
|
ii libdw1t64:amd64 0.190-1.1ubuntu0.1 amd64 library that provides access to the DWARF debug information
|
||||||
ii libelf1t64:amd64 0.190-1.1build4.1 amd64 library to read and write ELF files
|
ii libelf1t64:amd64 0.190-1.1ubuntu0.1 amd64 library to read and write ELF files
|
||||||
ii liberror-perl 0.17029-2 all Perl module for error/exception handling in an OO-ish way
|
ii liberror-perl 0.17029-2 all Perl module for error/exception handling in an OO-ish way
|
||||||
ii libexpat1:amd64 2.6.1-2ubuntu0.2 amd64 XML parsing C library - runtime library
|
ii libexpat1:amd64 2.6.1-2ubuntu0.3 amd64 XML parsing C library - runtime library
|
||||||
ii libext2fs2t64:amd64 1.47.0-2.4~exp1ubuntu4.1 amd64 ext2/ext3/ext4 file system libraries
|
ii libext2fs2t64:amd64 1.47.0-2.4~exp1ubuntu4.1 amd64 ext2/ext3/ext4 file system libraries
|
||||||
ii libffi8:amd64 3.4.6-1build1 amd64 Foreign Function Interface library runtime
|
ii libffi8:amd64 3.4.6-1build1 amd64 Foreign Function Interface library runtime
|
||||||
ii libgcc-13-dev:amd64 13.3.0-6ubuntu2~24.04 amd64 GCC support library (development files)
|
ii libgcc-13-dev:amd64 13.3.0-6ubuntu2~24.04 amd64 GCC support library (development files)
|
||||||
@@ -150,13 +151,13 @@ ii libgcrypt20:amd64 1.10.3-2build1 amd64
|
|||||||
ii libgdbm-compat4t64:amd64 1.23-5.1build1 amd64 GNU dbm database routines (legacy support runtime version)
|
ii libgdbm-compat4t64:amd64 1.23-5.1build1 amd64 GNU dbm database routines (legacy support runtime version)
|
||||||
ii libgdbm6t64:amd64 1.23-5.1build1 amd64 GNU dbm database routines (runtime version)
|
ii libgdbm6t64:amd64 1.23-5.1build1 amd64 GNU dbm database routines (runtime version)
|
||||||
ii libgit2-1.7:amd64 1.7.2+ds-1ubuntu3 amd64 low-level Git library
|
ii libgit2-1.7:amd64 1.7.2+ds-1ubuntu3 amd64 low-level Git library
|
||||||
ii libglib2.0-0t64:amd64 2.80.0-6ubuntu3.2 amd64 GLib library of C routines
|
ii libglib2.0-0t64:amd64 2.80.0-6ubuntu3.4 amd64 GLib library of C routines
|
||||||
ii libgmp10:amd64 2:6.3.0+dfsg-2ubuntu6.1 amd64 Multiprecision arithmetic library
|
ii libgmp10:amd64 2:6.3.0+dfsg-2ubuntu6.1 amd64 Multiprecision arithmetic library
|
||||||
ii libgnutls30t64:amd64 3.8.3-1.1ubuntu3.3 amd64 GNU TLS library - main runtime library
|
ii libgnutls30t64:amd64 3.8.3-1.1ubuntu3.3 amd64 GNU TLS library - main runtime library
|
||||||
ii libgomp1:amd64 14.2.0-4ubuntu2~24.04 amd64 GCC OpenMP (GOMP) support library
|
ii libgomp1:amd64 14.2.0-4ubuntu2~24.04 amd64 GCC OpenMP (GOMP) support library
|
||||||
ii libgpg-error0:amd64 1.47-3build2.1 amd64 GnuPG development runtime library
|
ii libgpg-error0:amd64 1.47-3build2.1 amd64 GnuPG development runtime library
|
||||||
ii libgprofng0:amd64 2.42-4ubuntu2.4 amd64 GNU Next Generation profiler (runtime library)
|
ii libgprofng0:amd64 2.42-4ubuntu2.5 amd64 GNU Next Generation profiler (runtime library)
|
||||||
ii libgssapi-krb5-2:amd64 1.20.1-6ubuntu2.5 amd64 MIT Kerberos runtime libraries - krb5 GSS-API Mechanism
|
ii libgssapi-krb5-2:amd64 1.20.1-6ubuntu2.6 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 libhiredis1.1.0:amd64 1.2.0-6ubuntu3 amd64 minimalistic C client library for Redis
|
||||||
ii libhogweed6t64:amd64 3.9.1-2.2build1.1 amd64 low level cryptographic library (public-key cryptos)
|
ii libhogweed6t64:amd64 3.9.1-2.2build1.1 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
|
ii libhttp-parser2.9:amd64 2.9.4-6build1 amd64 parser for HTTP messages written in C
|
||||||
@@ -171,16 +172,16 @@ ii libitm1:amd64 14.2.0-4ubuntu2~24.04 amd64
|
|||||||
ii libjansson4:amd64 2.14-2build2 amd64 C library for encoding, decoding and manipulating JSON data
|
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 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 libjsoncpp25:amd64 1.9.5-6build1 amd64 library for reading and writing JSON for C++
|
||||||
ii libk5crypto3:amd64 1.20.1-6ubuntu2.5 amd64 MIT Kerberos runtime libraries - Crypto Library
|
ii libk5crypto3:amd64 1.20.1-6ubuntu2.6 amd64 MIT Kerberos runtime libraries - Crypto Library
|
||||||
ii libkeyutils1:amd64 1.6.3-3build1 amd64 Linux Key Management Utilities (library)
|
ii libkeyutils1:amd64 1.6.3-3build1 amd64 Linux Key Management Utilities (library)
|
||||||
ii libkrb5-3:amd64 1.20.1-6ubuntu2.5 amd64 MIT Kerberos runtime libraries
|
ii libkrb5-3:amd64 1.20.1-6ubuntu2.6 amd64 MIT Kerberos runtime libraries
|
||||||
ii libkrb5support0:amd64 1.20.1-6ubuntu2.5 amd64 MIT Kerberos runtime libraries - Support library
|
ii libkrb5support0:amd64 1.20.1-6ubuntu2.6 amd64 MIT Kerberos runtime libraries - Support library
|
||||||
ii libldap2:amd64 2.6.7+dfsg-1~exp1ubuntu8.2 amd64 OpenLDAP libraries
|
ii libldap2:amd64 2.6.7+dfsg-1~exp1ubuntu8.2 amd64 OpenLDAP libraries
|
||||||
ii liblsan0:amd64 14.2.0-4ubuntu2~24.04 amd64 LeakSanitizer -- a memory leak detector (runtime)
|
ii liblsan0:amd64 14.2.0-4ubuntu2~24.04 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
|
ii libluajit-5.1-2:amd64 2.1.0+git20231223.c525bcb+dfsg-1 amd64 Just in time compiler for Lua - library version
|
||||||
ii libluajit-5.1-common 2.1.0+git20231223.c525bcb+dfsg-1 all Just in time compiler for Lua - common files
|
ii libluajit-5.1-common 2.1.0+git20231223.c525bcb+dfsg-1 all Just in time compiler for Lua - common files
|
||||||
ii liblz4-1:amd64 1.9.4-1build1.1 amd64 Fast LZ compression algorithm library - runtime
|
ii liblz4-1:amd64 1.9.4-1build1.1 amd64 Fast LZ compression algorithm library - runtime
|
||||||
ii liblzma5:amd64 5.6.1+really5.4.5-1build0.1 amd64 XZ-format compression library
|
ii liblzma5:amd64 5.6.1+really5.4.5-1ubuntu0.2 amd64 XZ-format compression library
|
||||||
ii liblzo2-2:amd64 2.10-2build4 amd64 data compression library
|
ii liblzo2-2:amd64 2.10-2build4 amd64 data compression library
|
||||||
ii libmagic-mgc 1:5.45-3build1 amd64 File type determination library using "magic" numbers (compiled magic file)
|
ii libmagic-mgc 1:5.45-3build1 amd64 File type determination library using "magic" numbers (compiled magic file)
|
||||||
ii libmagic1t64:amd64 1:5.45-3build1 amd64 Recognize the type of data in a file using "magic" numbers - library
|
ii libmagic1t64:amd64 1:5.45-3build1 amd64 Recognize the type of data in a file using "magic" numbers - library
|
||||||
@@ -205,7 +206,7 @@ ii libpam-runtime 1.5.3-5ubuntu5.1 all
|
|||||||
ii libpam0g:amd64 1.5.3-5ubuntu5.1 amd64 Pluggable Authentication Modules library
|
ii libpam0g:amd64 1.5.3-5ubuntu5.1 amd64 Pluggable Authentication Modules library
|
||||||
ii libpcre2-32-0:amd64 10.42-4ubuntu2.1 amd64 New Perl Compatible Regular Expression Library - 32 bit runtime files
|
ii libpcre2-32-0:amd64 10.42-4ubuntu2.1 amd64 New Perl Compatible Regular Expression Library - 32 bit runtime files
|
||||||
ii libpcre2-8-0:amd64 10.42-4ubuntu2.1 amd64 New Perl Compatible Regular Expression Library- 8 bit runtime files
|
ii libpcre2-8-0:amd64 10.42-4ubuntu2.1 amd64 New Perl Compatible Regular Expression Library- 8 bit runtime files
|
||||||
ii libperl5.38t64:amd64 5.38.2-3.2build2.1 amd64 shared Perl library
|
ii libperl5.38t64:amd64 5.38.2-3.2ubuntu0.1 amd64 shared Perl library
|
||||||
ii libpipeline1:amd64 1.5.7-2 amd64 Unix process pipeline manipulation library
|
ii libpipeline1:amd64 1.5.7-2 amd64 Unix process pipeline manipulation library
|
||||||
ii libpopt0:amd64 1.19+dfsg-1build1 amd64 lib for parsing cmdline parameters
|
ii libpopt0:amd64 1.19+dfsg-1build1 amd64 lib for parsing cmdline parameters
|
||||||
ii libproc2-0:amd64 2:4.0.4-4ubuntu3.2 amd64 library for accessing process information from /proc
|
ii libproc2-0:amd64 2:4.0.4-4ubuntu3.2 amd64 library for accessing process information from /proc
|
||||||
@@ -228,19 +229,19 @@ ii libsemanage2:amd64 3.5-1build5 amd64
|
|||||||
ii libsensors-config 1:3.6.0-9build1 all lm-sensors configuration files
|
ii libsensors-config 1:3.6.0-9build1 all lm-sensors configuration files
|
||||||
ii libsensors5:amd64 1:3.6.0-9build1 amd64 library to read temperature/voltage/fan sensors
|
ii libsensors5:amd64 1:3.6.0-9build1 amd64 library to read temperature/voltage/fan sensors
|
||||||
ii libsepol2:amd64 3.5-2build1 amd64 SELinux library for manipulating binary security policies
|
ii libsepol2:amd64 3.5-2build1 amd64 SELinux library for manipulating binary security policies
|
||||||
ii libsframe1:amd64 2.42-4ubuntu2.4 amd64 Library to handle the SFrame format (runtime library)
|
ii libsframe1:amd64 2.42-4ubuntu2.5 amd64 Library to handle the SFrame format (runtime library)
|
||||||
ii libsigsegv2:amd64 2.14-1ubuntu2 amd64 Library for handling page faults in a portable way
|
ii libsigsegv2:amd64 2.14-1ubuntu2 amd64 Library for handling page faults in a portable way
|
||||||
ii libsmartcols1:amd64 2.39.3-9ubuntu6.2 amd64 smart column output alignment library
|
ii libsmartcols1:amd64 2.39.3-9ubuntu6.2 amd64 smart column output alignment library
|
||||||
ii libsource-highlight-common 3.1.9-4.3build1 all architecture-independent files for source highlighting library
|
ii libsource-highlight-common 3.1.9-4.3build1 all architecture-independent files for source highlighting library
|
||||||
ii libsource-highlight4t64:amd64 3.1.9-4.3build1 amd64 source highlighting library
|
ii libsource-highlight4t64:amd64 3.1.9-4.3build1 amd64 source highlighting library
|
||||||
ii libsqlite3-0:amd64 3.45.1-1ubuntu2.1 amd64 SQLite 3 shared library
|
ii libsqlite3-0:amd64 3.45.1-1ubuntu2.3 amd64 SQLite 3 shared library
|
||||||
ii libss2:amd64 1.47.0-2.4~exp1ubuntu4.1 amd64 command-line interface parsing library
|
ii libss2:amd64 1.47.0-2.4~exp1ubuntu4.1 amd64 command-line interface parsing library
|
||||||
ii libssh-4:amd64 0.10.6-2build2 amd64 tiny C SSH library (OpenSSL flavor)
|
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 libssh2-1t64:amd64 1.11.0-4.1build2 amd64 SSH2 client-side library
|
||||||
ii libssl3t64:amd64 3.0.13-0ubuntu3.5 amd64 Secure Sockets Layer toolkit - shared libraries
|
ii libssl3t64:amd64 3.0.13-0ubuntu3.5 amd64 Secure Sockets Layer toolkit - shared libraries
|
||||||
ii libstdc++-13-dev:amd64 13.3.0-6ubuntu2~24.04 amd64 GNU Standard C++ Library v3 (development files)
|
ii libstdc++-13-dev:amd64 13.3.0-6ubuntu2~24.04 amd64 GNU Standard C++ Library v3 (development files)
|
||||||
ii libstdc++6:amd64 14.2.0-4ubuntu2~24.04 amd64 GNU Standard C++ Library v3
|
ii libstdc++6:amd64 14.2.0-4ubuntu2~24.04 amd64 GNU Standard C++ Library v3
|
||||||
ii libsystemd0:amd64 255.4-1ubuntu8.5 amd64 systemd utility library
|
ii libsystemd0:amd64 255.4-1ubuntu8.6 amd64 systemd utility library
|
||||||
ii libtalloc2:amd64 2.4.2-1build2 amd64 hierarchical pool based memory allocator
|
ii libtalloc2:amd64 2.4.2-1build2 amd64 hierarchical pool based memory allocator
|
||||||
ii libtasn1-6:amd64 4.19.0-3ubuntu0.24.04.1 amd64 Manage ASN.1 structures (runtime)
|
ii libtasn1-6:amd64 4.19.0-3ubuntu0.24.04.1 amd64 Manage ASN.1 structures (runtime)
|
||||||
ii libtermkey1:amd64 0.22-1 amd64 library for processing keyboard input
|
ii libtermkey1:amd64 0.22-1 amd64 library for processing keyboard input
|
||||||
@@ -251,7 +252,7 @@ ii libtree-sitter0:amd64 0.20.8-2 amd64
|
|||||||
ii libtsan2:amd64 14.2.0-4ubuntu2~24.04 amd64 ThreadSanitizer -- a Valgrind-based detector of data races (runtime)
|
ii libtsan2:amd64 14.2.0-4ubuntu2~24.04 amd64 ThreadSanitizer -- a Valgrind-based detector of data races (runtime)
|
||||||
ii libubsan1:amd64 14.2.0-4ubuntu2~24.04 amd64 UBSan -- undefined behaviour sanitizer (runtime)
|
ii libubsan1:amd64 14.2.0-4ubuntu2~24.04 amd64 UBSan -- undefined behaviour sanitizer (runtime)
|
||||||
ii libuchardet0:amd64 0.0.8-1build1 amd64 universal charset detection library - shared library
|
ii libuchardet0:amd64 0.0.8-1build1 amd64 universal charset detection library - shared library
|
||||||
ii libudev1:amd64 255.4-1ubuntu8.5 amd64 libudev shared library
|
ii libudev1:amd64 255.4-1ubuntu8.6 amd64 libudev shared library
|
||||||
ii libunibilium4:amd64 2.1.0-3 amd64 simple, self-contained terminfo library
|
ii libunibilium4:amd64 2.1.0-3 amd64 simple, self-contained terminfo library
|
||||||
ii libunistring5:amd64 1.1-2build1.1 amd64 Unicode string library for C
|
ii libunistring5:amd64 1.1-2build1.1 amd64 Unicode string library for C
|
||||||
ii libunwind8:amd64 1.6.2-3build1.1 amd64 library to determine the call-chain of a program - runtime
|
ii libunwind8:amd64 1.6.2-3build1.1 amd64 library to determine the call-chain of a program - runtime
|
||||||
@@ -276,12 +277,12 @@ ii libx32ubsan1 14.2.0-4ubuntu2~24.04 amd64
|
|||||||
ii libxau6:amd64 1:1.0.9-1build6 amd64 X11 authorisation library
|
ii libxau6:amd64 1:1.0.9-1build6 amd64 X11 authorisation library
|
||||||
ii libxcb1:amd64 1.15-1ubuntu2 amd64 X C Binding
|
ii libxcb1:amd64 1.15-1ubuntu2 amd64 X C Binding
|
||||||
ii libxdmcp6:amd64 1:1.1.3-0ubuntu6 amd64 X11 Display Manager Control Protocol library
|
ii libxdmcp6:amd64 1:1.1.3-0ubuntu6 amd64 X11 Display Manager Control Protocol library
|
||||||
ii libxml2:amd64 2.9.14+dfsg-1.3ubuntu3.2 amd64 GNOME XML library
|
ii libxml2:amd64 2.9.14+dfsg-1.3ubuntu3.3 amd64 GNOME XML library
|
||||||
ii libxxhash0:amd64 0.8.2-2build1 amd64 shared library for xxhash
|
ii libxxhash0:amd64 0.8.2-2build1 amd64 shared library for xxhash
|
||||||
ii libyaml-0-2:amd64 0.2.5-1build1 amd64 Fast YAML 1.1 parser and emitter library
|
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.1 amd64 fast lossless compression algorithm -- development files
|
ii libzstd-dev:amd64 1.5.5+dfsg2-2build1.1 amd64 fast lossless compression algorithm -- development files
|
||||||
ii libzstd1:amd64 1.5.5+dfsg2-2build1.1 amd64 fast lossless compression algorithm
|
ii libzstd1:amd64 1.5.5+dfsg2-2build1.1 amd64 fast lossless compression algorithm
|
||||||
ii linux-libc-dev:amd64 6.8.0-55.57 amd64 Linux Kernel Headers for development
|
ii linux-libc-dev:amd64 6.8.0-60.63 amd64 Linux Kernel Headers for development
|
||||||
ii login 1:4.13+dfsg1-4ubuntu3.2 amd64 system login tools
|
ii login 1:4.13+dfsg1-4ubuntu3.2 amd64 system login tools
|
||||||
ii logsave 1.47.0-2.4~exp1ubuntu4.1 amd64 save the output of a command in a log file
|
ii logsave 1.47.0-2.4~exp1ubuntu4.1 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)
|
ii lsb-release 12.0-2 all Linux Standard Base version reporting utility (minimal implementation)
|
||||||
@@ -314,9 +315,9 @@ ii patch 2.7.6-7build3 amd64
|
|||||||
ii patchelf 0.18.0-1.1build1 amd64 modify properties of ELF executables
|
ii patchelf 0.18.0-1.1build1 amd64 modify properties of ELF executables
|
||||||
ii patchutils 0.4.2-1build3 amd64 Utilities to work with patches
|
ii patchutils 0.4.2-1build3 amd64 Utilities to work with patches
|
||||||
ii pax-utils 1.3.7-1 amd64 Security-focused ELF files checking tool
|
ii pax-utils 1.3.7-1 amd64 Security-focused ELF files checking tool
|
||||||
ii perl 5.38.2-3.2build2.1 amd64 Larry Wall's Practical Extraction and Report Language
|
ii perl 5.38.2-3.2ubuntu0.1 amd64 Larry Wall's Practical Extraction and Report Language
|
||||||
ii perl-base 5.38.2-3.2build2.1 amd64 minimal Perl system
|
ii perl-base 5.38.2-3.2ubuntu0.1 amd64 minimal Perl system
|
||||||
ii perl-modules-5.38 5.38.2-3.2build2.1 all Core Perl modules
|
ii perl-modules-5.38 5.38.2-3.2ubuntu0.1 all Core Perl modules
|
||||||
ii procps 2:4.0.4-4ubuntu3.2 amd64 /proc file system utilities
|
ii procps 2:4.0.4-4ubuntu3.2 amd64 /proc file system utilities
|
||||||
ii proot 5.1.0-1.3 amd64 emulate chroot, bind mount and binfmt_misc for non-root users
|
ii proot 5.1.0-1.3 amd64 emulate chroot, bind mount and binfmt_misc for non-root users
|
||||||
ii python2.7-minimal 2.7.18-8+deb11u1 amd64 Minimal subset of the Python language (version 2.7)
|
ii python2.7-minimal 2.7.18-8+deb11u1 amd64 Minimal subset of the Python language (version 2.7)
|
||||||
@@ -349,7 +350,7 @@ ii sysstat 12.6.1-2 amd64
|
|||||||
ii sysvinit-utils 3.08-6ubuntu3 amd64 System-V-like utilities
|
ii sysvinit-utils 3.08-6ubuntu3 amd64 System-V-like utilities
|
||||||
ii tar 1.35+dfsg-3build1 amd64 GNU version of the tar archiving utility
|
ii tar 1.35+dfsg-3build1 amd64 GNU version of the tar archiving utility
|
||||||
ii time 1.9-0.2build1 amd64 GNU time program for measuring CPU resource usage
|
ii time 1.9-0.2build1 amd64 GNU time program for measuring CPU resource usage
|
||||||
ii tzdata 2024b-0ubuntu0.24.04.1 all time zone and daylight-saving time data
|
ii tzdata 2025b-0ubuntu0.24.04.1 all time zone and daylight-saving time data
|
||||||
ii ubuntu-keyring 2023.11.28.1 all GnuPG keys of the Ubuntu archive
|
ii ubuntu-keyring 2023.11.28.1 all GnuPG keys of the Ubuntu archive
|
||||||
ii ucf 3.0043+nmu1 all Update Configuration File(s): preserve user changes to config files
|
ii ucf 3.0043+nmu1 all Update Configuration File(s): preserve user changes to config files
|
||||||
ii universal-ctags 5.9.20210829.0-1 amd64 build tag file indexes of source code definitions
|
ii universal-ctags 5.9.20210829.0-1 amd64 build tag file indexes of source code definitions
|
||||||
@@ -358,7 +359,7 @@ ii unzip 6.0-28ubuntu4.1 amd64
|
|||||||
ii util-linux 2.39.3-9ubuntu6.2 amd64 miscellaneous system utilities
|
ii util-linux 2.39.3-9ubuntu6.2 amd64 miscellaneous system utilities
|
||||||
ii valgrind 1:3.22.0-0ubuntu3 amd64 instrumentation framework for building dynamic analysis tools
|
ii valgrind 1:3.22.0-0ubuntu3 amd64 instrumentation framework for building dynamic analysis tools
|
||||||
ii wget 1.21.4-1ubuntu4.1 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-1build0.1 amd64 XZ-format compression utilities
|
ii xz-utils 5.6.1+really5.4.5-1ubuntu0.2 amd64 XZ-format compression utilities
|
||||||
ii yash 2.55-2 amd64 yet another shell
|
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
|
ii yq 3.1.0-3 all Command-line YAML processor - jq wrapper for YAML documents
|
||||||
ii zip 3.0-13ubuntu0.2 amd64 Archiver for .zip files
|
ii zip 3.0-13ubuntu0.2 amd64 Archiver for .zip files
|
||||||
@@ -374,9 +375,10 @@ ii zstd 1.5.5+dfsg2-2build1.1 amd64
|
|||||||
||/ Name Version Architecture Description
|
||/ Name Version Architecture Description
|
||||||
|
|
||||||
Packages sorted by Installed-Size:
|
Packages sorted by Installed-Size:
|
||||||
971255 ===== TOTAL (368 packages)
|
1015747 ===== TOTAL (369 packages)
|
||||||
76943 valgrind amd64
|
76943 valgrind amd64
|
||||||
61333 gcc-13-x86-64-linux-gnu amd64
|
61333 gcc-13-x86-64-linux-gnu amd64
|
||||||
|
44381 gh amd64
|
||||||
36493 cmake amd64
|
36493 cmake amd64
|
||||||
35919 libicu74 amd64
|
35919 libicu74 amd64
|
||||||
33545 g++-13-x86-64-linux-gnu amd64
|
33545 g++-13-x86-64-linux-gnu amd64
|
||||||
@@ -410,7 +412,7 @@ Packages sorted by Installed-Size:
|
|||||||
7924 python3.12-minimal amd64
|
7924 python3.12-minimal amd64
|
||||||
7913 perl-base amd64
|
7913 perl-base amd64
|
||||||
7531 libx32gcc-13-dev amd64
|
7531 libx32gcc-13-dev amd64
|
||||||
7359 linux-libc-dev amd64
|
7437 linux-libc-dev amd64
|
||||||
7226 lib32stdc++-13-dev amd64
|
7226 lib32stdc++-13-dev amd64
|
||||||
7059 libx32stdc++-13-dev amd64
|
7059 libx32stdc++-13-dev amd64
|
||||||
7024 direnv amd64
|
7024 direnv amd64
|
||||||
@@ -427,7 +429,7 @@ Packages sorted by Installed-Size:
|
|||||||
4341 ncurses-term all
|
4341 ncurses-term all
|
||||||
4244 minify amd64
|
4244 minify amd64
|
||||||
4193 libglib2.0-0t64 amd64
|
4193 libglib2.0-0t64 amd64
|
||||||
4103 apt amd64
|
4108 apt amd64
|
||||||
4074 gojq amd64
|
4074 gojq amd64
|
||||||
3956 python3-pycryptodome amd64
|
3956 python3-pycryptodome amd64
|
||||||
3833 libgprofng0 amd64
|
3833 libgprofng0 amd64
|
||||||
@@ -442,13 +444,13 @@ Packages sorted by Installed-Size:
|
|||||||
3403 libaria2-0 amd64
|
3403 libaria2-0 amd64
|
||||||
3382 fd-find amd64
|
3382 fd-find amd64
|
||||||
3364 libubsan1 amd64
|
3364 libubsan1 amd64
|
||||||
3244 libapt-pkg6.0t64 amd64
|
3249 libapt-pkg6.0t64 amd64
|
||||||
3181 libx32ubsan1 amd64
|
3181 libx32ubsan1 amd64
|
||||||
3111 ksh93u+m amd64
|
3111 ksh93u+m amd64
|
||||||
3110 libstdc++6 amd64
|
3110 libstdc++6 amd64
|
||||||
3104 lib32ubsan1 amd64
|
3104 lib32ubsan1 amd64
|
||||||
2995 parallel all
|
2995 parallel all
|
||||||
2957 elfutils amd64
|
2958 elfutils amd64
|
||||||
2928 man-db amd64
|
2928 man-db amd64
|
||||||
2894 lib32stdc++6 amd64
|
2894 lib32stdc++6 amd64
|
||||||
2810 libx32stdc++6 amd64
|
2810 libx32stdc++6 amd64
|
||||||
@@ -456,7 +458,7 @@ Packages sorted by Installed-Size:
|
|||||||
2431 zsh amd64
|
2431 zsh amd64
|
||||||
2419 passwd amd64
|
2419 passwd amd64
|
||||||
2352 libgnutls30t64 amd64
|
2352 libgnutls30t64 amd64
|
||||||
2346 libbinutils amd64
|
2350 libbinutils amd64
|
||||||
2191 ht amd64
|
2191 ht amd64
|
||||||
2183 libc-bin amd64
|
2183 libc-bin amd64
|
||||||
2163 git-man all
|
2163 git-man all
|
||||||
@@ -473,7 +475,7 @@ Packages sorted by Installed-Size:
|
|||||||
1761 libdb5.3t64 amd64
|
1761 libdb5.3t64 amd64
|
||||||
1757 libunistring5 amd64
|
1757 libunistring5 amd64
|
||||||
1736 gawk amd64
|
1736 gawk amd64
|
||||||
1730 libsqlite3-0 amd64
|
1731 libsqlite3-0 amd64
|
||||||
1712 libp11-kit0 amd64
|
1712 libp11-kit0 amd64
|
||||||
1634 mksh amd64
|
1634 mksh amd64
|
||||||
1610 socat amd64
|
1610 socat amd64
|
||||||
@@ -484,7 +486,7 @@ Packages sorted by Installed-Size:
|
|||||||
1452 sysstat amd64
|
1452 sysstat amd64
|
||||||
1448 yash amd64
|
1448 yash amd64
|
||||||
1396 libgcrypt20 amd64
|
1396 libgcrypt20 amd64
|
||||||
1382 tzdata all
|
1387 tzdata all
|
||||||
1362 libx11-6 amd64
|
1362 libx11-6 amd64
|
||||||
1342 libx11-data all
|
1342 libx11-data all
|
||||||
1322 zlib1g-dev amd64
|
1322 zlib1g-dev amd64
|
||||||
@@ -508,7 +510,7 @@ Packages sorted by Installed-Size:
|
|||||||
812 lua-luv amd64
|
812 lua-luv amd64
|
||||||
785 musl amd64
|
785 musl amd64
|
||||||
781 rsync amd64
|
781 rsync amd64
|
||||||
765 libdw1t64 amd64
|
766 libdw1t64 amd64
|
||||||
761 libzstd1 amd64
|
761 libzstd1 amd64
|
||||||
751 libsepol2 amd64
|
751 libsepol2 amd64
|
||||||
745 libsource-highlight4t64 amd64
|
745 libsource-highlight4t64 amd64
|
||||||
@@ -546,9 +548,9 @@ Packages sorted by Installed-Size:
|
|||||||
415 libssh2-1t64 amd64
|
415 libssh2-1t64 amd64
|
||||||
404 make amd64
|
404 make amd64
|
||||||
389 python3-pyasn1 all
|
389 python3-pyasn1 all
|
||||||
|
388 libexpat1 amd64
|
||||||
386 ca-certificates all
|
386 ca-certificates all
|
||||||
384 ncurses-base all
|
384 ncurses-base all
|
||||||
384 libexpat1 amd64
|
|
||||||
379 liblzma5 amd64
|
379 liblzma5 amd64
|
||||||
375 unzip amd64
|
375 unzip amd64
|
||||||
373 libgomp1 amd64
|
373 libgomp1 amd64
|
||||||
@@ -606,10 +608,10 @@ Packages sorted by Installed-Size:
|
|||||||
209 libpam0g amd64
|
209 libpam0g amd64
|
||||||
207 libuchardet0 amd64
|
207 libuchardet0 amd64
|
||||||
206 proot amd64
|
206 proot amd64
|
||||||
|
204 libelf1t64 amd64
|
||||||
202 python3-pycurl amd64
|
202 python3-pycurl amd64
|
||||||
200 libselinux1 amd64
|
200 libselinux1 amd64
|
||||||
200 libnghttp2-14 amd64
|
200 libnghttp2-14 amd64
|
||||||
200 libelf1t64 amd64
|
|
||||||
199 execstack amd64
|
199 execstack amd64
|
||||||
198 libtree-sitter0 amd64
|
198 libtree-sitter0 amd64
|
||||||
197 libgcc-s1 amd64
|
197 libgcc-s1 amd64
|
||||||
@@ -682,14 +684,14 @@ Packages sorted by Installed-Size:
|
|||||||
77 readline-common all
|
77 readline-common all
|
||||||
77 python3-toml all
|
77 python3-toml all
|
||||||
75 libsasl2-modules-db amd64
|
75 libsasl2-modules-db amd64
|
||||||
74 libasm1t64 amd64
|
75 libasm1t64 amd64
|
||||||
74 libacl1 amd64
|
74 libacl1 amd64
|
||||||
72 libffi8 amd64
|
72 libffi8 amd64
|
||||||
72 diffstat amd64
|
72 diffstat amd64
|
||||||
|
70 libdebuginfod1t64 amd64
|
||||||
69 yq all
|
69 yq all
|
||||||
69 libss2 amd64
|
69 libss2 amd64
|
||||||
69 liberror-perl all
|
69 liberror-perl all
|
||||||
69 libdebuginfod1t64 amd64
|
|
||||||
67 libpipeline1 amd64
|
67 libpipeline1 amd64
|
||||||
66 libhttp-parser2.9 amd64
|
66 libhttp-parser2.9 amd64
|
||||||
66 bzip3 amd64
|
66 bzip3 amd64
|
||||||
@@ -704,7 +706,7 @@ Packages sorted by Installed-Size:
|
|||||||
53 libnl-genl-3-200 amd64
|
53 libnl-genl-3-200 amd64
|
||||||
51 logsave amd64
|
51 logsave amd64
|
||||||
51 libutempter0 amd64
|
51 libutempter0 amd64
|
||||||
50 libdebuginfod-common all
|
51 libdebuginfod-common all
|
||||||
49 libatomic1 amd64
|
49 libatomic1 amd64
|
||||||
48 libmsgpackc2 amd64
|
48 libmsgpackc2 amd64
|
||||||
47 python3-xmltodict all
|
47 python3-xmltodict all
|
||||||
|
|||||||
@@ -16,6 +16,12 @@ argv0=$0; argv0abs=$(readlink -fn "$argv0"); argv0dir=$(dirname "$argv0abs")
|
|||||||
# $upx_exe_runner (e.g. "qemu-x86_64 -cpu Nehalem" or "valgrind")
|
# $upx_exe_runner (e.g. "qemu-x86_64 -cpu Nehalem" or "valgrind")
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# Debugging aid for locating failing commands. Depends on 'bash' shell.
|
||||||
|
# (BASH_LINENO is relative to current FUNCTION only; non-function ==> 0)
|
||||||
|
# Notice single-quoting of entire first argument.
|
||||||
|
trap 'echo ERROR: pwd=\"$PWD\" file=\"$BASH_SOURCE\" line=${BASH_LINENO[0]} cmd=\"$BASH_COMMAND\"' ERR
|
||||||
|
# Example: "false a b c" ==> ERROR: pwd="path/misc/testsuite" file="./mimic_ctest.sh" line=0 cmd="false a b c"
|
||||||
|
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
# init & checks
|
# init & checks
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
@@ -148,9 +154,15 @@ if [[ $UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS != ON ]]; then
|
|||||||
set +x
|
set +x
|
||||||
for method in nrv2b nrv2d nrv2e lzma; do
|
for method in nrv2b nrv2d nrv2e lzma; do
|
||||||
for level in 1 2 3 4 5 6 7; do
|
for level in 1 2 3 4 5 6 7; do
|
||||||
|
for small in normal small; do
|
||||||
s="${method}-${level}"
|
s="${method}-${level}"
|
||||||
|
ss=
|
||||||
|
if [[ $small == "small" ]]; then
|
||||||
|
s="${method}-${level}-${small}"
|
||||||
|
ss="--small"
|
||||||
|
fi
|
||||||
echo "========== $s =========="
|
echo "========== $s =========="
|
||||||
"${run_upx[@]}" -qq --${method} -${level} --all-filters --debug-use-random-filter "${upx_self_exe}" ${fo} -o upx-packed-${s}${exe}
|
"${run_upx[@]}" -qq --${method} -${level} ${ss} --all-filters --debug-use-random-filter "${upx_self_exe}" ${fo} -o upx-packed-${s}${exe}
|
||||||
"${run_upx[@]}" -qq -l upx-packed-${s}${exe}
|
"${run_upx[@]}" -qq -l upx-packed-${s}${exe}
|
||||||
"${run_upx[@]}" -qq --fileinfo upx-packed-${s}${exe}
|
"${run_upx[@]}" -qq --fileinfo upx-packed-${s}${exe}
|
||||||
"${run_upx[@]}" -qq -t upx-packed-${s}${exe}
|
"${run_upx[@]}" -qq -t upx-packed-${s}${exe}
|
||||||
@@ -161,6 +173,7 @@ if [[ $UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS != ON ]]; then
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "run_upx='${run_upx[*]}'"
|
echo "run_upx='${run_upx[*]}'"
|
||||||
|
|||||||
Executable
+46
@@ -0,0 +1,46 @@
|
|||||||
|
#! /usr/bin/env bash
|
||||||
|
## vim:set ts=4 sw=4 et:
|
||||||
|
set -e; set -o pipefail
|
||||||
|
argv0=$0; argv0abs=$(readlink -fn "$argv0"); argv0dir=$(dirname "$argv0abs")
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
|
||||||
|
#
|
||||||
|
# mimic running "ctest", i.e. the "test" section of CMakeLists.txt
|
||||||
|
# - does not redirect stdout
|
||||||
|
# - allows freely setting $upx_exe_runner, while CMake is restricted to configure-time settings
|
||||||
|
#
|
||||||
|
# requires:
|
||||||
|
# $upx_exe (required, but with convenience fallback "./upx")
|
||||||
|
# optional settings:
|
||||||
|
# $upx_exe_runner (e.g. "qemu-x86_64 -cpu Nehalem" or "valgrind")
|
||||||
|
#
|
||||||
|
|
||||||
|
cat >catch-sigsegv.gdb <<'EOF'
|
||||||
|
catch signal SIGSEGV
|
||||||
|
commands
|
||||||
|
x/i $pc
|
||||||
|
info reg
|
||||||
|
x/32i $pc-0x20
|
||||||
|
quit 77
|
||||||
|
end
|
||||||
|
EOF
|
||||||
|
|
||||||
|
catcher=$(readlink -fn catch-sigsegv.gdb)
|
||||||
|
|
||||||
|
function emu_gdb() {
|
||||||
|
gdb -q -x "$catcher" <<EOF --args "$@"
|
||||||
|
run
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ -n $upx_exe_runner ]]; then
|
||||||
|
true
|
||||||
|
elif [[ -n $CMAKE_CROSSCOMPILING_EMULATOR ]]; then
|
||||||
|
true
|
||||||
|
else
|
||||||
|
upx_exe_runner=emu_gdb
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$argv0dir/mimic_ctest.sh"
|
||||||
+7
-7
@@ -66,7 +66,7 @@ f60bab42fe3914109ab1b9f5d00a5be753cd0a2c1a79a3998d58800efedbfff7 *mipsel-linux.e
|
|||||||
b6d8cc9e2023a3fc415166afc378ccf2eb505487df84c8d959ec74b3fb4f8256 *mipsel-linux.elf/upx-3.95
|
b6d8cc9e2023a3fc415166afc378ccf2eb505487df84c8d959ec74b3fb4f8256 *mipsel-linux.elf/upx-3.95
|
||||||
acd3dc5ed3e4c4eeaa42e7cca71a79d687dd844ce5f384666ed6e78327b5a8e3 *powerpc-linux.elf/upx-3.91
|
acd3dc5ed3e4c4eeaa42e7cca71a79d687dd844ce5f384666ed6e78327b5a8e3 *powerpc-linux.elf/upx-3.91
|
||||||
03600584c97fa466ef58239452baf9ec6ff2f06b79d97d45c8490953080de6e3 *powerpc-linux.elf/upx-3.95
|
03600584c97fa466ef58239452baf9ec6ff2f06b79d97d45c8490953080de6e3 *powerpc-linux.elf/upx-3.95
|
||||||
2aa45e314e83a7ecc548a5116048a981755d00c3e102bd9a9fc6e9a2356047be *powerpc64le-linux.elf/upx-3.95
|
e615fc0e61d2bdd09f34275ec6c3de46fe5ce54da61cf5f5c94c40c6072bc1d6 *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
|
expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
|
||||||
c5bafac11df5a38c1b72fd070373a0e1d5a066527129937c5bc9a280e21ad656 *amd64-linux.elf/upx-3.91
|
c5bafac11df5a38c1b72fd070373a0e1d5a066527129937c5bc9a280e21ad656 *amd64-linux.elf/upx-3.91
|
||||||
@@ -89,7 +89,7 @@ c3b3e5b0a379022b26bae96432c3f5f946990f45b0b26afe056afe1170bf33c7 *armeb-linux.el
|
|||||||
b78d8cd3a3402fed266c737cc34a32cc21b2b67b573e9e9071d4faf9fca89b89 *mipsel-linux.elf/upx-3.95
|
b78d8cd3a3402fed266c737cc34a32cc21b2b67b573e9e9071d4faf9fca89b89 *mipsel-linux.elf/upx-3.95
|
||||||
ea9cae1d1701db3a0c53e9a651766db5bdc30032f48913a4a9e99f193a800acc *powerpc-linux.elf/upx-3.91
|
ea9cae1d1701db3a0c53e9a651766db5bdc30032f48913a4a9e99f193a800acc *powerpc-linux.elf/upx-3.91
|
||||||
aea86bf87870a1e48a454ac1ea9a80d90d8abe5113d418a71d8a9c4a74bb2d0a *powerpc-linux.elf/upx-3.95
|
aea86bf87870a1e48a454ac1ea9a80d90d8abe5113d418a71d8a9c4a74bb2d0a *powerpc-linux.elf/upx-3.95
|
||||||
4b0c280570213f2cd94dad68aa8251baf05f817b4a569dda9444ff0d3adbb33d *powerpc64le-linux.elf/upx-3.95
|
5fbc114a7fec5ed8e098d8e918cdf7b446a8c9dc5496336fe077fe084dbea8ce *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
|
expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
|
||||||
509bc9676a0f5f5ce6df118da8e792151db816fcce5490eadc87fc525aad5a35 *amd64-linux.elf/upx-3.91
|
509bc9676a0f5f5ce6df118da8e792151db816fcce5490eadc87fc525aad5a35 *amd64-linux.elf/upx-3.91
|
||||||
@@ -112,7 +112,7 @@ cd9b3d3780a79cb416b261d622e8e86f2369fa8bb9bc49b529c50cac2980d528 *mipsel-linux.e
|
|||||||
5baf7db9e4335c0227106262efc9d18ad23b88c6d6bb636656aea67bb063b6ec *mipsel-linux.elf/upx-3.95
|
5baf7db9e4335c0227106262efc9d18ad23b88c6d6bb636656aea67bb063b6ec *mipsel-linux.elf/upx-3.95
|
||||||
aba8bd826ee52d533f9e1c4270d4f4194fe8d8747ea10a1d3ce59b6443f1a9f2 *powerpc-linux.elf/upx-3.91
|
aba8bd826ee52d533f9e1c4270d4f4194fe8d8747ea10a1d3ce59b6443f1a9f2 *powerpc-linux.elf/upx-3.91
|
||||||
6f737ccbf8c830476bed9c4dd33dd7757ea25bf2f8fb03b44d03e9b77ada0f1b *powerpc-linux.elf/upx-3.95
|
6f737ccbf8c830476bed9c4dd33dd7757ea25bf2f8fb03b44d03e9b77ada0f1b *powerpc-linux.elf/upx-3.95
|
||||||
91ee0982626eec07e524523d54873790b183aca5bdb27255771fcbfbc081cbc3 *powerpc64le-linux.elf/upx-3.95
|
62eeb7b59d1eafa59cbb5ffa6572fd47560a8a8bf85274e711f29d2fe390c773 *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t140_compress_lzma_2_no_filter="\
|
expected_sha256sums__t140_compress_lzma_2_no_filter="\
|
||||||
ed2849169a873bb4070e9d878126f7bc19fb326d1dc6e169901ff3a3026661c3 *amd64-linux.elf/upx-3.91
|
ed2849169a873bb4070e9d878126f7bc19fb326d1dc6e169901ff3a3026661c3 *amd64-linux.elf/upx-3.91
|
||||||
@@ -135,7 +135,7 @@ e268c98fdacfd04268d76644f2bb4746ae04b57801407aaa1867798840eeeea0 *m68k-atari.tos
|
|||||||
339d38602413d97d9bba113f39884815af10ebcdccf37e3f5e8d0879f262a048 *mipsel-linux.elf/upx-3.95
|
339d38602413d97d9bba113f39884815af10ebcdccf37e3f5e8d0879f262a048 *mipsel-linux.elf/upx-3.95
|
||||||
6d4f9d4383ebc9d8411d06a7c219dcf3e8513ea8c989f2d31ab382602f873ba5 *powerpc-linux.elf/upx-3.91
|
6d4f9d4383ebc9d8411d06a7c219dcf3e8513ea8c989f2d31ab382602f873ba5 *powerpc-linux.elf/upx-3.91
|
||||||
5dd727d8d5a35cc0ab86d629285d8ff450f52b538118679edaa886ce9c1fed7d *powerpc-linux.elf/upx-3.95
|
5dd727d8d5a35cc0ab86d629285d8ff450f52b538118679edaa886ce9c1fed7d *powerpc-linux.elf/upx-3.95
|
||||||
d915a3326dda439c0e30df2bd7abf9856a5b5e039142c4ea74e72cb43c854160 *powerpc64le-linux.elf/upx-3.95
|
7b9aeffda399143db878f24a9faecdc21fb8ec906fed80bc6636d82771090f2f *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t150_compress_ucl_2_all_filters="\
|
expected_sha256sums__t150_compress_ucl_2_all_filters="\
|
||||||
fc30606d37c697f5c79742bf6e7d2afa8503e69fc87e52274d00b5210d03157a *amd64-linux.elf/upx-3.91
|
fc30606d37c697f5c79742bf6e7d2afa8503e69fc87e52274d00b5210d03157a *amd64-linux.elf/upx-3.91
|
||||||
@@ -158,7 +158,7 @@ c5107a84d32de820c81401259a7dd23435ea625588d56c6c75ad6fa14b0dbf8b *mips-linux.elf
|
|||||||
fd9ea397a29b41a2143f9e02217e181d0075d7ad7d87bdbadc7fc94bfb1b0d76 *mipsel-linux.elf/upx-3.95
|
fd9ea397a29b41a2143f9e02217e181d0075d7ad7d87bdbadc7fc94bfb1b0d76 *mipsel-linux.elf/upx-3.95
|
||||||
c47d1299f6ecf86e62528fc54979117b2b2ddbb6c80f553689402399fc7eab28 *powerpc-linux.elf/upx-3.91
|
c47d1299f6ecf86e62528fc54979117b2b2ddbb6c80f553689402399fc7eab28 *powerpc-linux.elf/upx-3.91
|
||||||
77c3b4ba6909a4e20180bc13775e280086d67240519c323c2005f3fcee6e0b78 *powerpc-linux.elf/upx-3.95
|
77c3b4ba6909a4e20180bc13775e280086d67240519c323c2005f3fcee6e0b78 *powerpc-linux.elf/upx-3.95
|
||||||
9741ba142aa8f9fb554dbab3a0295b1aa58e5f246274e2831583d8f99af59764 *powerpc64le-linux.elf/upx-3.95
|
030a1ac080381a5ec7ad1e167f8809709620e555db792f43146c8c34e2cb37ec *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t160_compress_all_methods_1_no_filter="\
|
expected_sha256sums__t160_compress_all_methods_1_no_filter="\
|
||||||
115046275f6bccbaa34b7aefbedeba8741aba4e4876340a3d7363bae86ee4209 *amd64-linux.elf/upx-3.91
|
115046275f6bccbaa34b7aefbedeba8741aba4e4876340a3d7363bae86ee4209 *amd64-linux.elf/upx-3.91
|
||||||
@@ -181,7 +181,7 @@ f3d33c5c9809943a902133490bcf0cfbe39a5ef1635a0c29b3bdc4f35dfffa50 *i386-win32.pe/
|
|||||||
68f674d081d87e86e54f0051eee9e2bc85b566051992774ab28ff3173cbcb75a *mipsel-linux.elf/upx-3.95
|
68f674d081d87e86e54f0051eee9e2bc85b566051992774ab28ff3173cbcb75a *mipsel-linux.elf/upx-3.95
|
||||||
f569d8f49d7110bb8b262a48055b39d889e9977c40c5f1b21e74f8cbf93b27ae *powerpc-linux.elf/upx-3.91
|
f569d8f49d7110bb8b262a48055b39d889e9977c40c5f1b21e74f8cbf93b27ae *powerpc-linux.elf/upx-3.91
|
||||||
d8227a8a88c083760889acaf259e7da59eab75a23e341289bc8e3c60563ae344 *powerpc-linux.elf/upx-3.95
|
d8227a8a88c083760889acaf259e7da59eab75a23e341289bc8e3c60563ae344 *powerpc-linux.elf/upx-3.95
|
||||||
1675cd12ecdccdcc8bb73d75e8841f5bfde6dfd424dc73cb0065ebf271ace1f8 *powerpc64le-linux.elf/upx-3.95
|
8260862f104a23c2a3fa574e10d882204ed40a17702040edbbbc8d25f961163f *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t170_compress_all_methods_no_lzma_5_no_filter="\
|
expected_sha256sums__t170_compress_all_methods_no_lzma_5_no_filter="\
|
||||||
09cee61e2a4e94455d75a76711078719c3ca7fab77f047c4c85c9424e651956d *amd64-linux.elf/upx-3.91
|
09cee61e2a4e94455d75a76711078719c3ca7fab77f047c4c85c9424e651956d *amd64-linux.elf/upx-3.91
|
||||||
@@ -204,6 +204,6 @@ ad47c7522167f6f7e47d495e1fa119431386ca5ea9bc16b6a4b9cb38cf9cd29f *i386-win32.pe/
|
|||||||
1dcd626fc4566c608e987fd6999b695793c5cae7f78872e3d1a9a23942fea188 *mipsel-linux.elf/upx-3.95
|
1dcd626fc4566c608e987fd6999b695793c5cae7f78872e3d1a9a23942fea188 *mipsel-linux.elf/upx-3.95
|
||||||
2047a4a880322bf41e8afbb4787f6103364de4a299b543808251a4144c4d990b *powerpc-linux.elf/upx-3.91
|
2047a4a880322bf41e8afbb4787f6103364de4a299b543808251a4144c4d990b *powerpc-linux.elf/upx-3.91
|
||||||
63679bd238f30bfb14853246eb257536471fea10f942b2adfdd43cbef21dea30 *powerpc-linux.elf/upx-3.95
|
63679bd238f30bfb14853246eb257536471fea10f942b2adfdd43cbef21dea30 *powerpc-linux.elf/upx-3.95
|
||||||
f075e10b0f7c9ab703d0f923387e7ae425fa22c04349cb8085916c32afe4eef2 *powerpc64le-linux.elf/upx-3.95
|
bee0b9b5fa783550d3e7e5ba6e48d92776578dd82d6ac644e14191e0879d185b *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
########## end .sha256sums.recreate
|
########## end .sha256sums.recreate
|
||||||
|
|||||||
+12
-11
@@ -32,8 +32,9 @@
|
|||||||
// NE - Native Endianness (aka Host Endianness aka CPU Endianness)
|
// NE - Native Endianness (aka Host Endianness aka CPU Endianness)
|
||||||
// TE - Target Endianness (not used here, see various packers)
|
// TE - Target Endianness (not used here, see various packers)
|
||||||
|
|
||||||
static_assert(std::is_same_v<upx_uint32_t, unsigned>);
|
|
||||||
static_assert(std::is_same_v<byte, unsigned char>);
|
static_assert(std::is_same_v<byte, unsigned char>);
|
||||||
|
static_assert(std::is_same_v<upx_int32_t, int>);
|
||||||
|
static_assert(std::is_same_v<upx_uint32_t, unsigned>);
|
||||||
|
|
||||||
#if defined(upx_is_constant_evaluated)
|
#if defined(upx_is_constant_evaluated)
|
||||||
#define bele_constexpr constexpr
|
#define bele_constexpr constexpr
|
||||||
@@ -411,7 +412,7 @@ inline bele_constexpr void set_le14_5(XE32 *p, unsigned v) noexcept {
|
|||||||
// get signed values
|
// get signed values
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
forceinline constexpr int sign_extend(unsigned v, unsigned bits) noexcept {
|
forceinline constexpr int sign_extend32(unsigned v, unsigned bits) noexcept {
|
||||||
#if (ACC_ARCH_M68K) // no barrel shifter
|
#if (ACC_ARCH_M68K) // no barrel shifter
|
||||||
const unsigned sign_bit = 1u << (bits - 1);
|
const unsigned sign_bit = 1u << (bits - 1);
|
||||||
return ACC_ICAST(int, (v & (sign_bit - 1)) - (v & sign_bit));
|
return ACC_ICAST(int, (v & (sign_bit - 1)) - (v & sign_bit));
|
||||||
@@ -420,7 +421,7 @@ forceinline constexpr int sign_extend(unsigned v, unsigned bits) noexcept {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
forceinline constexpr upx_int64_t sign_extend(upx_uint64_t v, unsigned bits) noexcept {
|
forceinline constexpr upx_int64_t sign_extend64(upx_uint64_t v, unsigned bits) noexcept {
|
||||||
#if (ACC_ARCH_M68K) // no barrel shifter
|
#if (ACC_ARCH_M68K) // no barrel shifter
|
||||||
const upx_uint64_t sign_bit = upx_uint64_t(1) << (bits - 1);
|
const upx_uint64_t sign_bit = upx_uint64_t(1) << (bits - 1);
|
||||||
return ACC_ICAST(upx_int64_t, (v & (sign_bit - 1)) - (v & sign_bit));
|
return ACC_ICAST(upx_int64_t, (v & (sign_bit - 1)) - (v & sign_bit));
|
||||||
@@ -432,49 +433,49 @@ forceinline constexpr upx_int64_t sign_extend(upx_uint64_t v, unsigned bits) noe
|
|||||||
REQUIRE_XE16
|
REQUIRE_XE16
|
||||||
inline bele_constexpr int get_be16_signed(const XE16 *p) noexcept {
|
inline bele_constexpr int get_be16_signed(const XE16 *p) noexcept {
|
||||||
unsigned v = get_be16(p);
|
unsigned v = get_be16(p);
|
||||||
return sign_extend(v, 16);
|
return sign_extend32(v, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
REQUIRE_XE24
|
REQUIRE_XE24
|
||||||
inline bele_constexpr int get_be24_signed(const XE24 *p) noexcept {
|
inline bele_constexpr int get_be24_signed(const XE24 *p) noexcept {
|
||||||
unsigned v = get_be24(p);
|
unsigned v = get_be24(p);
|
||||||
return sign_extend(v, 24);
|
return sign_extend32(v, 24);
|
||||||
}
|
}
|
||||||
|
|
||||||
REQUIRE_XE32
|
REQUIRE_XE32
|
||||||
inline bele_constexpr int get_be32_signed(const XE32 *p) noexcept {
|
inline bele_constexpr int get_be32_signed(const XE32 *p) noexcept {
|
||||||
unsigned v = get_be32(p);
|
unsigned v = get_be32(p);
|
||||||
return sign_extend(v, 32);
|
return sign_extend32(v, 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
REQUIRE_XE64
|
REQUIRE_XE64
|
||||||
inline bele_constexpr upx_int64_t get_be64_signed(const XE64 *p) noexcept {
|
inline bele_constexpr upx_int64_t get_be64_signed(const XE64 *p) noexcept {
|
||||||
upx_uint64_t v = get_be64(p);
|
upx_uint64_t v = get_be64(p);
|
||||||
return sign_extend(v, 64);
|
return sign_extend64(v, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
REQUIRE_XE16
|
REQUIRE_XE16
|
||||||
inline bele_constexpr int get_le16_signed(const XE16 *p) noexcept {
|
inline bele_constexpr int get_le16_signed(const XE16 *p) noexcept {
|
||||||
unsigned v = get_le16(p);
|
unsigned v = get_le16(p);
|
||||||
return sign_extend(v, 16);
|
return sign_extend32(v, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
REQUIRE_XE24
|
REQUIRE_XE24
|
||||||
inline bele_constexpr int get_le24_signed(const XE24 *p) noexcept {
|
inline bele_constexpr int get_le24_signed(const XE24 *p) noexcept {
|
||||||
unsigned v = get_le24(p);
|
unsigned v = get_le24(p);
|
||||||
return sign_extend(v, 24);
|
return sign_extend32(v, 24);
|
||||||
}
|
}
|
||||||
|
|
||||||
REQUIRE_XE32
|
REQUIRE_XE32
|
||||||
inline bele_constexpr int get_le32_signed(const XE32 *p) noexcept {
|
inline bele_constexpr int get_le32_signed(const XE32 *p) noexcept {
|
||||||
unsigned v = get_le32(p);
|
unsigned v = get_le32(p);
|
||||||
return sign_extend(v, 32);
|
return sign_extend32(v, 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
REQUIRE_XE64
|
REQUIRE_XE64
|
||||||
inline bele_constexpr upx_int64_t get_le64_signed(const XE64 *p) noexcept {
|
inline bele_constexpr upx_int64_t get_le64_signed(const XE64 *p) noexcept {
|
||||||
upx_uint64_t v = get_le64(p);
|
upx_uint64_t v = get_le64(p);
|
||||||
return sign_extend(v, 64);
|
return sign_extend64(v, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
|||||||
+36
-32
@@ -283,18 +283,18 @@ static_assert(bswap32(bswap32(0xf4f3f2f1)) == no_bswap32(0xf4f3f2f1));
|
|||||||
static_assert(bswap64(bswap64(0xf8f7f6f5f4f3f2f1ull)) == no_bswap64(0xf8f7f6f5f4f3f2f1ull));
|
static_assert(bswap64(bswap64(0xf8f7f6f5f4f3f2f1ull)) == no_bswap64(0xf8f7f6f5f4f3f2f1ull));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static_assert(sign_extend(0u + 0, 8) == 0);
|
static_assert(sign_extend32(0u + 0, 8) == 0);
|
||||||
static_assert(sign_extend(0u + 1, 8) == 1);
|
static_assert(sign_extend32(0u + 1, 8) == 1);
|
||||||
static_assert(sign_extend(0u + 127, 8) == 127);
|
static_assert(sign_extend32(0u + 127, 8) == 127);
|
||||||
static_assert(sign_extend(0u + 128, 8) == -128);
|
static_assert(sign_extend32(0u + 128, 8) == -128);
|
||||||
static_assert(sign_extend(0u - 1, 8) == -1);
|
static_assert(sign_extend32(0u - 1, 8) == -1);
|
||||||
static_assert(sign_extend(0u + 256, 8) == 0);
|
static_assert(sign_extend32(0u + 256, 8) == 0);
|
||||||
static_assert(sign_extend(0u + 257, 8) == 1);
|
static_assert(sign_extend32(0u + 257, 8) == 1);
|
||||||
static_assert(sign_extend(0u + 383, 8) == 127);
|
static_assert(sign_extend32(0u + 383, 8) == 127);
|
||||||
static_assert(sign_extend(0u + 384, 8) == -128);
|
static_assert(sign_extend32(0u + 384, 8) == -128);
|
||||||
static_assert(sign_extend(0u + 511, 8) == -1);
|
static_assert(sign_extend32(0u + 511, 8) == -1);
|
||||||
static_assert(sign_extend(upx_uint64_t(0) + 0, 1) == 0);
|
static_assert(sign_extend64(upx_uint64_t(0) + 0, 1) == 0);
|
||||||
static_assert(sign_extend(upx_uint64_t(0) + 1, 1) == -1);
|
static_assert(sign_extend64(upx_uint64_t(0) + 1, 1) == -1);
|
||||||
|
|
||||||
static_assert(CHAR_BIT == 8);
|
static_assert(CHAR_BIT == 8);
|
||||||
#if 0 // does not work with MSVC
|
#if 0 // does not work with MSVC
|
||||||
@@ -1212,29 +1212,33 @@ void upx_compiler_sanity_check(void) noexcept {
|
|||||||
for (int i = 0; i < 256; i++) {
|
for (int i = 0; i < 256; i++) {
|
||||||
{
|
{
|
||||||
const unsigned u = i;
|
const unsigned u = i;
|
||||||
assert_noexcept(sign_extend(u, 1) == ((i & 1) ? -1 : 0));
|
assert_noexcept(sign_extend32(u, 1) == ((i & 1) ? -1 : 0));
|
||||||
assert_noexcept(sign_extend(u, 2) == ((i & 2) ? -2 + (i & 1) : (i & 1)));
|
assert_noexcept(sign_extend32(u, 2) == ((i & 2) ? -2 + (i & 1) : (i & 1)));
|
||||||
assert_noexcept(sign_extend(u, 3) == ((i & 4) ? -4 + (i & 3) : (i & 3)));
|
assert_noexcept(sign_extend32(u, 3) == ((i & 4) ? -4 + (i & 3) : (i & 3)));
|
||||||
assert_noexcept(sign_extend(u, 4) == ((i & 8) ? -8 + (i & 7) : (i & 7)));
|
assert_noexcept(sign_extend32(u, 4) == ((i & 8) ? -8 + (i & 7) : (i & 7)));
|
||||||
assert_noexcept(sign_extend(u, 5) == ((i & 16) ? -16 + (i & 15) : (i & 15)));
|
assert_noexcept(sign_extend32(u, 5) == ((i & 16) ? -16 + (i & 15) : (i & 15)));
|
||||||
assert_noexcept(sign_extend(u, 6) == ((i & 32) ? -32 + (i & 31) : (i & 31)));
|
assert_noexcept(sign_extend32(u, 6) == ((i & 32) ? -32 + (i & 31) : (i & 31)));
|
||||||
assert_noexcept(sign_extend(u, 7) == ((i & 64) ? -64 + (i & 63) : (i & 63)));
|
assert_noexcept(sign_extend32(u, 7) == ((i & 64) ? -64 + (i & 63) : (i & 63)));
|
||||||
assert_noexcept(sign_extend(u, 8) == ((i & 128) ? -128 + (i & 127) : (i & 127)));
|
assert_noexcept(sign_extend32(u, 8) == ((i & 128) ? -128 + (i & 127) : (i & 127)));
|
||||||
assert_noexcept(sign_extend(u, 32) == i);
|
assert_noexcept(sign_extend32(u, 9) == i);
|
||||||
assert_noexcept(sign_extend(0u - u, 32) == -i);
|
assert_noexcept(sign_extend32(u, 32) == i);
|
||||||
|
assert_noexcept(sign_extend32(0u - u, 32) == -i);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
const upx_uint64_t u = i;
|
const upx_uint64_t u = i;
|
||||||
assert_noexcept(sign_extend(u, 1) == ((i & 1) ? -1 : 0));
|
assert_noexcept(sign_extend64(u, 1) == ((i & 1) ? -1 : 0));
|
||||||
assert_noexcept(sign_extend(u, 2) == ((i & 2) ? -2 + (i & 1) : (i & 1)));
|
assert_noexcept(sign_extend64(u, 2) == ((i & 2) ? -2 + (i & 1) : (i & 1)));
|
||||||
assert_noexcept(sign_extend(u, 3) == ((i & 4) ? -4 + (i & 3) : (i & 3)));
|
assert_noexcept(sign_extend64(u, 3) == ((i & 4) ? -4 + (i & 3) : (i & 3)));
|
||||||
assert_noexcept(sign_extend(u, 4) == ((i & 8) ? -8 + (i & 7) : (i & 7)));
|
assert_noexcept(sign_extend64(u, 4) == ((i & 8) ? -8 + (i & 7) : (i & 7)));
|
||||||
assert_noexcept(sign_extend(u, 5) == ((i & 16) ? -16 + (i & 15) : (i & 15)));
|
assert_noexcept(sign_extend64(u, 5) == ((i & 16) ? -16 + (i & 15) : (i & 15)));
|
||||||
assert_noexcept(sign_extend(u, 6) == ((i & 32) ? -32 + (i & 31) : (i & 31)));
|
assert_noexcept(sign_extend64(u, 6) == ((i & 32) ? -32 + (i & 31) : (i & 31)));
|
||||||
assert_noexcept(sign_extend(u, 7) == ((i & 64) ? -64 + (i & 63) : (i & 63)));
|
assert_noexcept(sign_extend64(u, 7) == ((i & 64) ? -64 + (i & 63) : (i & 63)));
|
||||||
assert_noexcept(sign_extend(u, 8) == ((i & 128) ? -128 + (i & 127) : (i & 127)));
|
assert_noexcept(sign_extend64(u, 8) == ((i & 128) ? -128 + (i & 127) : (i & 127)));
|
||||||
assert_noexcept(sign_extend(u, 64) == i);
|
assert_noexcept(sign_extend64(u, 9) == i);
|
||||||
assert_noexcept(sign_extend(upx_uint64_t(0) - u, 64) == -i);
|
assert_noexcept(sign_extend64(u, 32) == i);
|
||||||
|
assert_noexcept(sign_extend64(upx_uint64_t(0) - u, 32) == -i);
|
||||||
|
assert_noexcept(sign_extend64(u, 64) == i);
|
||||||
|
assert_noexcept(sign_extend64(upx_uint64_t(0) - u, 64) == -i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -558,7 +558,8 @@ TEST_CASE("upx::ObjectDeleter 1") {
|
|||||||
LE32 *a = nullptr; // array
|
LE32 *a = nullptr; // array
|
||||||
LE64 *m = nullptr; // malloc
|
LE64 *m = nullptr; // malloc
|
||||||
{
|
{
|
||||||
auto o_deleter = upx::ObjectDeleter(&o, 1);
|
// auto o_deleter = upx::ObjectDeleter(&o, 1);
|
||||||
|
upx::ObjectDeleter<LE16> o_deleter = upx::ObjectDeleter(&o, 1);
|
||||||
o = new LE16;
|
o = new LE16;
|
||||||
assert(o != nullptr);
|
assert(o != nullptr);
|
||||||
auto a_deleter = upx::ArrayDeleter(&a, 1);
|
auto a_deleter = upx::ArrayDeleter(&a, 1);
|
||||||
@@ -594,7 +595,8 @@ TEST_CASE("upx::ObjectDeleter 2") {
|
|||||||
BE32 *a[N]; // multiple arrays
|
BE32 *a[N]; // multiple arrays
|
||||||
BE64 *m[N]; // multiple mallocs
|
BE64 *m[N]; // multiple mallocs
|
||||||
{
|
{
|
||||||
auto o_deleter = upx::ObjectDeleter(o, 0);
|
// auto o_deleter = upx::ObjectDeleter(o, 0);
|
||||||
|
upx::ObjectDeleter<BE16> o_deleter = upx::ObjectDeleter(o, 0);
|
||||||
auto a_deleter = upx::ArrayDeleter(a, 0);
|
auto a_deleter = upx::ArrayDeleter(a, 0);
|
||||||
auto m_deleter = upx::MallocDeleter(m, 0);
|
auto m_deleter = upx::MallocDeleter(m, 0);
|
||||||
for (size_t i = 0; i < N; i++) {
|
for (size_t i = 0; i < N; i++) {
|
||||||
|
|||||||
@@ -71,6 +71,10 @@ static_assert((-1) >> 31 == -1); // arithmetic right shift
|
|||||||
static_assert(CHAR_MAX == 255); // -funsigned-char
|
static_assert(CHAR_MAX == 255); // -funsigned-char
|
||||||
static_assert((char) (-1) == 255); // -funsigned-char
|
static_assert((char) (-1) == 255); // -funsigned-char
|
||||||
|
|
||||||
|
// disable some more strict warnings
|
||||||
|
#if defined(__clang__) && __has_warning("-Wunnecessary-virtual-specifier")
|
||||||
|
#pragma clang diagnostic ignored "-Wunnecessary-virtual-specifier"
|
||||||
|
#endif
|
||||||
// enable some more strict warnings for Git developer builds
|
// enable some more strict warnings for Git developer builds
|
||||||
#if defined(UPX_CONFIG_DISABLE_WSTRICT) && (UPX_CONFIG_DISABLE_WSTRICT + 0 == 0)
|
#if defined(UPX_CONFIG_DISABLE_WSTRICT) && (UPX_CONFIG_DISABLE_WSTRICT + 0 == 0)
|
||||||
#if defined(UPX_CONFIG_DISABLE_WERROR) && (UPX_CONFIG_DISABLE_WERROR + 0 == 0)
|
#if defined(UPX_CONFIG_DISABLE_WERROR) && (UPX_CONFIG_DISABLE_WERROR + 0 == 0)
|
||||||
|
|||||||
+17
-11
@@ -1532,7 +1532,7 @@ PackLinuxElf32::buildLinuxLoader(
|
|||||||
// EXP_TAIL FIXME: unfilter
|
// EXP_TAIL FIXME: unfilter
|
||||||
// SO_TAIL
|
// SO_TAIL
|
||||||
// SO_MAIN C-language supervision based on PT_LOADs
|
// SO_MAIN C-language supervision based on PT_LOADs
|
||||||
char sec[120]; memset(sec, 0, sizeof(sec)); // debug convenience
|
char sec[200]; memset(sec, 0, sizeof(sec)); // debug convenience
|
||||||
int len = 0;
|
int len = 0;
|
||||||
unsigned m_decompr = methods_used | (1u << (0xFF & ph_forced_method(ph.method)));
|
unsigned m_decompr = methods_used | (1u << (0xFF & ph_forced_method(ph.method)));
|
||||||
len += snprintf(sec, sizeof(sec), "%s", "SO_HEAD,ptr_NEXT,EXP_HEAD");
|
len += snprintf(sec, sizeof(sec), "%s", "SO_HEAD,ptr_NEXT,EXP_HEAD");
|
||||||
@@ -1584,7 +1584,7 @@ PackLinuxElf32::buildLinuxLoader(
|
|||||||
|| this->e_machine==Elf32_Ehdr::EM_MIPS
|
|| this->e_machine==Elf32_Ehdr::EM_MIPS
|
||||||
) { // main program with ELF2 de-compressor (folded portion)
|
) { // main program with ELF2 de-compressor (folded portion)
|
||||||
initLoader(fold, szfold);
|
initLoader(fold, szfold);
|
||||||
char sec[120]; memset(sec, 0, sizeof(sec)); // debug convenience
|
char sec[200]; memset(sec, 0, sizeof(sec)); // debug convenience
|
||||||
int len = 0;
|
int len = 0;
|
||||||
unsigned m_decompr = methods_used | (1u << (0xFF & ph_forced_method(ph.method)));
|
unsigned m_decompr = methods_used | (1u << (0xFF & ph_forced_method(ph.method)));
|
||||||
len += snprintf(sec, sizeof(sec), "%s", ".text,EXP_HEAD");
|
len += snprintf(sec, sizeof(sec), "%s", ".text,EXP_HEAD");
|
||||||
@@ -1729,7 +1729,7 @@ PackLinuxElf64::buildLinuxLoader(
|
|||||||
// EXP_TAIL FIXME: unfilter
|
// EXP_TAIL FIXME: unfilter
|
||||||
// SO_TAIL
|
// SO_TAIL
|
||||||
// SO_MAIN C-language supervision based on PT_LOADs
|
// SO_MAIN C-language supervision based on PT_LOADs
|
||||||
char sec[120]; memset(sec, 0, sizeof(sec)); // debug convenience
|
char sec[200]; memset(sec, 0, sizeof(sec)); // debug convenience
|
||||||
int len = 0;
|
int len = 0;
|
||||||
unsigned m_decompr = methods_used | (1u << (0xFF & ph_forced_method(ph.method)));
|
unsigned m_decompr = methods_used | (1u << (0xFF & ph_forced_method(ph.method)));
|
||||||
len += snprintf(sec, sizeof(sec), "%s", "SO_HEAD,ptr_NEXT,EXP_HEAD");
|
len += snprintf(sec, sizeof(sec), "%s", "SO_HEAD,ptr_NEXT,EXP_HEAD");
|
||||||
@@ -1774,7 +1774,7 @@ PackLinuxElf64::buildLinuxLoader(
|
|||||||
|| this->e_machine==Elf64_Ehdr::EM_PPC64
|
|| this->e_machine==Elf64_Ehdr::EM_PPC64
|
||||||
) { // main program with ELF2 de-compressor (folded portion)
|
) { // main program with ELF2 de-compressor (folded portion)
|
||||||
initLoader(fold, szfold);
|
initLoader(fold, szfold);
|
||||||
char sec[120]; memset(sec, 0, sizeof(sec)); // debug convenience
|
char sec[200]; memset(sec, 0, sizeof(sec)); // debug convenience
|
||||||
int len = 0;
|
int len = 0;
|
||||||
unsigned m_decompr = methods_used | (1u << (0xFF & ph_forced_method(ph.method)));
|
unsigned m_decompr = methods_used | (1u << (0xFF & ph_forced_method(ph.method)));
|
||||||
len += snprintf(sec, sizeof(sec), "%s", ".text,EXP_HEAD");
|
len += snprintf(sec, sizeof(sec), "%s", ".text,EXP_HEAD");
|
||||||
@@ -2378,10 +2378,11 @@ PackLinuxElf32::invert_pt_dynamic(Elf32_Dyn const *dynp, u32_t headway)
|
|||||||
throwCantPack("bad DT_STRSZ %#x", strtab_max);
|
throwCantPack("bad DT_STRSZ %#x", strtab_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find end of DT_SYMTAB
|
{ // Find end of DT_SYMTAB
|
||||||
unsigned const tmp2 = elf_find_table_size(Elf32_Dyn::DT_SYMTAB,
|
unsigned const tmp2 = elf_find_table_size(Elf32_Dyn::DT_SYMTAB,
|
||||||
Elf32_Shdr::SHT_DYNSYM);
|
Elf32_Shdr::SHT_DYNSYM);
|
||||||
symnum_max = (~0u == tmp2) ? 0 : tmp1 / sizeof(Elf32_Sym);
|
symnum_max = (~0u == tmp2) ? 0 : tmp2 / sizeof(Elf32_Sym);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned v_sym = dt_table[Elf32_Dyn::DT_SYMTAB];
|
unsigned v_sym = dt_table[Elf32_Dyn::DT_SYMTAB];
|
||||||
if (v_sym) {
|
if (v_sym) {
|
||||||
@@ -8470,10 +8471,11 @@ PackLinuxElf64::invert_pt_dynamic(Elf64_Dyn const *dynp, upx_uint64_t headway)
|
|||||||
throwCantPack("bad DT_STRSZ %#x", strtab_max);
|
throwCantPack("bad DT_STRSZ %#x", strtab_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find end of DT_SYMTAB
|
{ // Find end of DT_SYMTAB
|
||||||
unsigned const tmp2 = elf_find_table_size(Elf64_Dyn::DT_SYMTAB,
|
unsigned const tmp2 = elf_find_table_size(Elf64_Dyn::DT_SYMTAB,
|
||||||
Elf64_Shdr::SHT_DYNSYM);
|
Elf64_Shdr::SHT_DYNSYM);
|
||||||
symnum_max = (~0u == tmp2) ? 0 : tmp1 / sizeof(Elf64_Sym);
|
symnum_max = (~0u == tmp2) ? 0 : tmp2 / sizeof(Elf64_Sym);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned v_sym = dt_table[Elf64_Dyn::DT_SYMTAB];
|
unsigned v_sym = dt_table[Elf64_Dyn::DT_SYMTAB];
|
||||||
if (v_sym) {
|
if (v_sym) {
|
||||||
@@ -8704,9 +8706,9 @@ Elf32_Sym const *PackLinuxElf32::elf_lookup(char const *name) const
|
|||||||
|
|
||||||
if (1& (w>>hbit1) & (w>>hbit2)) {
|
if (1& (w>>hbit1) & (w>>hbit2)) {
|
||||||
unsigned const hhead = get_te32(&buckets[h % n_bucket]);
|
unsigned const hhead = get_te32(&buckets[h % n_bucket]);
|
||||||
if (n_bucket <= (hhead - symbias)) {
|
if (symnum_max <= hhead || (hhead && hhead < symbias)) {
|
||||||
throwCantPack("bad DT_GNU_HASH n_bucket{%#x} <= buckets[%d]{%#x} - symbias{%#x}\n",
|
throwCantPack("bad DT_GNU_HASH symnum_max{%#x} <= buckets[%d]{%#x} < symbias{%#x}\n",
|
||||||
n_bucket, h % n_bucket, hhead, symbias);
|
symnum_max, h % n_bucket, hhead, symbias);
|
||||||
}
|
}
|
||||||
if (hhead) {
|
if (hhead) {
|
||||||
Elf32_Sym const *dsp = &dynsym[hhead];
|
Elf32_Sym const *dsp = &dynsym[hhead];
|
||||||
@@ -8805,6 +8807,10 @@ Elf64_Sym const *PackLinuxElf64::elf_lookup(char const *name) const
|
|||||||
upx_uint64_t const w = get_te64(&bitmask[(n_bitmask -1) & (h>>6)]);
|
upx_uint64_t const w = get_te64(&bitmask[(n_bitmask -1) & (h>>6)]);
|
||||||
if (1& (w>>hbit1) & (w>>hbit2)) {
|
if (1& (w>>hbit1) & (w>>hbit2)) {
|
||||||
unsigned hhead = get_te32(&buckets[h % n_bucket]);
|
unsigned hhead = get_te32(&buckets[h % n_bucket]);
|
||||||
|
if (symnum_max <= hhead || (hhead && hhead < symbias)) {
|
||||||
|
throwCantPack("bad DT_GNU_HASH symnum_max{%#x} <= buckets[%d]{%#x} < symbias{%#x}\n",
|
||||||
|
symnum_max, h % n_bucket, hhead, symbias);
|
||||||
|
}
|
||||||
if (hhead) {
|
if (hhead) {
|
||||||
Elf64_Sym const *dsp = &dynsym[hhead];
|
Elf64_Sym const *dsp = &dynsym[hhead];
|
||||||
unsigned const *hp = &hasharr[hhead - symbias];
|
unsigned const *hp = &hasharr[hhead - symbias];
|
||||||
|
|||||||
+28
-18
@@ -580,14 +580,15 @@ void PeFile32::processRelocs() // pass1
|
|||||||
// deliberately corrupt. Sometimes it is even tuned to cause us trouble!
|
// deliberately corrupt. Sometimes it is even tuned to cause us trouble!
|
||||||
// Use an extra check to avoid AccessViolation (SIGSEGV) when appending
|
// Use an extra check to avoid AccessViolation (SIGSEGV) when appending
|
||||||
// the relocs into one array.
|
// the relocs into one array.
|
||||||
if ((4 * relocnum + 8192) <
|
if ((sizeof(LE32) * relocnum + 8192) <
|
||||||
(sorelocs + 4 * (2 + xcounts[IMAGE_REL_BASED_LOW] + xcounts[IMAGE_REL_BASED_HIGH])))
|
(sorelocs +
|
||||||
|
sizeof(LE32) * (2 + xcounts[IMAGE_REL_BASED_LOW] + xcounts[IMAGE_REL_BASED_HIGH])))
|
||||||
throwCantUnpack("Invalid relocs");
|
throwCantUnpack("Invalid relocs");
|
||||||
|
|
||||||
// append relocs type "LOW" then "HIGH"
|
// append relocs type "LOW" then "HIGH"
|
||||||
for (unsigned ic = IMAGE_REL_BASED_LOW; ic >= IMAGE_REL_BASED_HIGH; ic--) {
|
for (unsigned ic = IMAGE_REL_BASED_LOW; ic >= IMAGE_REL_BASED_HIGH; ic--) {
|
||||||
memcpy(orelocs + sorelocs, fix[ic], 4 * xcounts[ic]);
|
memcpy(orelocs + sorelocs, fix[ic], sizeof(LE32) * xcounts[ic]);
|
||||||
sorelocs += 4 * xcounts[ic];
|
sorelocs += sizeof(LE32) * xcounts[ic];
|
||||||
set_le32(orelocs + sorelocs, 0);
|
set_le32(orelocs + sorelocs, 0);
|
||||||
if (xcounts[ic]) {
|
if (xcounts[ic]) {
|
||||||
sorelocs += 4;
|
sorelocs += 4;
|
||||||
@@ -1224,7 +1225,15 @@ void PeFile::Export::convert(unsigned eoffs, unsigned esize) {
|
|||||||
size += len;
|
size += len;
|
||||||
iv.add_interval(edir.name, len);
|
iv.add_interval(edir.name, len);
|
||||||
|
|
||||||
len = 4 * edir.functions;
|
// This test is weak because it does not consider other necessary storage.
|
||||||
|
// But it does detect outrageous individual members.
|
||||||
|
// Note: sizeof(LE32) <= sizeof(char *)
|
||||||
|
if (UPX_RSIZE_MAX_MEM / sizeof(char *) <= edir.functions ||
|
||||||
|
UPX_RSIZE_MAX_MEM / sizeof(char *) <= edir.names) {
|
||||||
|
throwCantPack("export directory too big: functions=%#x names=%#x",
|
||||||
|
(unsigned) edir.functions, (unsigned) edir.names);
|
||||||
|
}
|
||||||
|
len = sizeof(LE32) * edir.functions;
|
||||||
functionptrs = New(char, len + 1);
|
functionptrs = New(char, len + 1);
|
||||||
memcpy(functionptrs, base + edir.addrtable, len);
|
memcpy(functionptrs, base + edir.addrtable, len);
|
||||||
size += len;
|
size += len;
|
||||||
@@ -1233,14 +1242,14 @@ void PeFile::Export::convert(unsigned eoffs, unsigned esize) {
|
|||||||
unsigned ic;
|
unsigned ic;
|
||||||
names = New(char *, edir.names + edir.functions + 1);
|
names = New(char *, edir.names + edir.functions + 1);
|
||||||
for (ic = 0; ic < edir.names; ic++) {
|
for (ic = 0; ic < edir.names; ic++) {
|
||||||
char *n = base + get_le32(base + edir.nameptrtable + ic * 4);
|
char *n = base + get_le32(base + edir.nameptrtable + ic * sizeof(LE32));
|
||||||
len = strlen(n) + 1;
|
len = strlen(n) + 1;
|
||||||
names[ic] = strdup(n);
|
names[ic] = strdup(n);
|
||||||
size += len;
|
size += len;
|
||||||
iv.add_interval(get_le32(base + edir.nameptrtable + ic * 4), len);
|
iv.add_interval(get_le32(base + edir.nameptrtable + ic * sizeof(LE32)), len);
|
||||||
}
|
}
|
||||||
iv.add_interval(edir.nameptrtable, 4 * edir.names);
|
iv.add_interval(edir.nameptrtable, sizeof(LE32) * edir.names);
|
||||||
size += 4 * edir.names;
|
size += sizeof(LE32) * edir.names;
|
||||||
|
|
||||||
LE32 *fp = (LE32 *) functionptrs;
|
LE32 *fp = (LE32 *) functionptrs;
|
||||||
// export forwarders
|
// export forwarders
|
||||||
@@ -1270,8 +1279,8 @@ void PeFile::Export::convert(unsigned eoffs, unsigned esize) {
|
|||||||
|
|
||||||
void PeFile::Export::build(char *newbase, unsigned newoffs) {
|
void PeFile::Export::build(char *newbase, unsigned newoffs) {
|
||||||
char *const functionp = newbase + sizeof(edir);
|
char *const functionp = newbase + sizeof(edir);
|
||||||
char *const namep = functionp + 4 * edir.functions;
|
char *const namep = functionp + sizeof(LE32) * edir.functions;
|
||||||
char *const ordinalp = namep + 4 * edir.names;
|
char *const ordinalp = namep + sizeof(LE32) * edir.names;
|
||||||
char *const enamep = ordinalp + 2 * edir.names;
|
char *const enamep = ordinalp + 2 * edir.names;
|
||||||
char *exports = enamep + strlen(ename) + 1;
|
char *exports = enamep + strlen(ename) + 1;
|
||||||
|
|
||||||
@@ -1286,15 +1295,15 @@ void PeFile::Export::build(char *newbase, unsigned newoffs) {
|
|||||||
unsigned ic;
|
unsigned ic;
|
||||||
for (ic = 0; ic < edir.names; ic++) {
|
for (ic = 0; ic < edir.names; ic++) {
|
||||||
strcpy(exports, names[ic]);
|
strcpy(exports, names[ic]);
|
||||||
set_le32(namep + 4 * ic, newoffs + ptr_diff_bytes(exports, newbase));
|
set_le32(namep + sizeof(LE32) * ic, newoffs + ptr_diff_bytes(exports, newbase));
|
||||||
exports += strlen(exports) + 1;
|
exports += strlen(exports) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(functionp, functionptrs, 4 * edir.functions);
|
memcpy(functionp, functionptrs, sizeof(LE32) * edir.functions);
|
||||||
for (ic = 0; ic < edir.functions; ic++)
|
for (ic = 0; ic < edir.functions; ic++)
|
||||||
if (names[edir.names + ic]) {
|
if (names[edir.names + ic]) {
|
||||||
strcpy(exports, names[edir.names + ic]);
|
strcpy(exports, names[edir.names + ic]);
|
||||||
set_le32(functionp + 4 * ic, newoffs + ptr_diff_bytes(exports, newbase));
|
set_le32(functionp + sizeof(LE32) * ic, newoffs + ptr_diff_bytes(exports, newbase));
|
||||||
exports += strlen(exports) + 1;
|
exports += strlen(exports) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1477,12 +1486,13 @@ void PeFile::processTls2(Reloc *const rel, const Interval *const iv, unsigned ne
|
|||||||
|
|
||||||
unsigned ic;
|
unsigned ic;
|
||||||
// NEW: if TLS callbacks are used, relocate the VA of the callback chain, too - Stefan Widmann
|
// NEW: if TLS callbacks are used, relocate the VA of the callback chain, too - Stefan Widmann
|
||||||
for (ic = 0; ic < (use_tls_callbacks ? 4 * cb_size : 3 * cb_size); ic += cb_size)
|
for (ic = 0; ic < (use_tls_callbacks ? sizeof(LE32) * cb_size : (sizeof(LE32) - 1) * cb_size);
|
||||||
|
ic += cb_size)
|
||||||
rel->add_reloc(newaddr + ic, reloc_type);
|
rel->add_reloc(newaddr + ic, reloc_type);
|
||||||
|
|
||||||
SPAN_S_VAR(tls, const tlsp, mb_otls);
|
SPAN_S_VAR(tls, const tlsp, mb_otls);
|
||||||
// now the relocation entries in the tls data area
|
// now the relocation entries in the tls data area
|
||||||
for (ic = 0; ic < iv->ivnum; ic += 4) {
|
for (ic = 0; ic < iv->ivnum; ic += sizeof(LE32)) {
|
||||||
SPAN_S_VAR(byte, const pp,
|
SPAN_S_VAR(byte, const pp,
|
||||||
otls + (iv->ivarr[ic].start - (tlsp->datastart - imagebase) + sizeof(tls)));
|
otls + (iv->ivarr[ic].start - (tlsp->datastart - imagebase) + sizeof(tls)));
|
||||||
LEXX *const p = (LEXX *) raw_bytes(pp, sizeof(LEXX));
|
LEXX *const p = (LEXX *) raw_bytes(pp, sizeof(LEXX));
|
||||||
@@ -2760,12 +2770,12 @@ void PeFile::rebuildRelocs(SPAN_S(byte) & extra_info, unsigned bits, unsigned fl
|
|||||||
|
|
||||||
SPAN_S_VAR(byte, const wrkmem, mb_wrkmem);
|
SPAN_S_VAR(byte, const wrkmem, mb_wrkmem);
|
||||||
for (unsigned ic = 0; ic < relocnum; ic++) {
|
for (unsigned ic = 0; ic < relocnum; ic++) {
|
||||||
OPTR_VAR(byte, const p, obuf + get_le32(wrkmem + 4 * ic));
|
OPTR_VAR(byte, const p, obuf + get_le32(wrkmem + sizeof(LE32) * ic));
|
||||||
if (bits == 32)
|
if (bits == 32)
|
||||||
set_le32(p, get_le32(p) + imagebase + rvamin);
|
set_le32(p, get_le32(p) + imagebase + rvamin);
|
||||||
else
|
else
|
||||||
set_le64(p, get_le64(p) + imagebase + rvamin);
|
set_le64(p, get_le64(p) + imagebase + rvamin);
|
||||||
rel.add_reloc(rvamin + get_le32(wrkmem + 4 * ic),
|
rel.add_reloc(rvamin + get_le32(wrkmem + sizeof(LE32) * ic),
|
||||||
bits == 32 ? IMAGE_REL_BASED_HIGHLOW : IMAGE_REL_BASED_DIR64);
|
bits == 32 ? IMAGE_REL_BASED_HIGHLOW : IMAGE_REL_BASED_DIR64);
|
||||||
}
|
}
|
||||||
rel.finish(oxrelocs, soxrelocs);
|
rel.finish(oxrelocs, soxrelocs);
|
||||||
|
|||||||
Generated
+3
-3
@@ -33,8 +33,8 @@
|
|||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
|
||||||
#define STUB_POWERPC64_LINUX_ELF_FOLD_SIZE 20887
|
#define STUB_POWERPC64_LINUX_ELF_FOLD_SIZE 20887
|
||||||
#define STUB_POWERPC64_LINUX_ELF_FOLD_ADLER32 0x7e448798
|
#define STUB_POWERPC64_LINUX_ELF_FOLD_ADLER32 0x648b8800
|
||||||
#define STUB_POWERPC64_LINUX_ELF_FOLD_CRC32 0x90ae5864
|
#define STUB_POWERPC64_LINUX_ELF_FOLD_CRC32 0xe5c140f3
|
||||||
|
|
||||||
unsigned char stub_powerpc64_linux_elf_fold[20887] = {
|
unsigned char stub_powerpc64_linux_elf_fold[20887] = {
|
||||||
/* 0x0000 */ 127, 69, 76, 70, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0000 */ 127, 69, 76, 70, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
@@ -47,7 +47,7 @@ unsigned char stub_powerpc64_linux_elf_fold[20887] = {
|
|||||||
/* 0x0070 */ 72, 0, 0, 5,124,200, 2,166,124, 8, 3,166,232, 6,255,204,
|
/* 0x0070 */ 72, 0, 0, 5,124,200, 2,166,124, 8, 3,166,232, 6,255,204,
|
||||||
/* 0x0080 */ 124, 96, 0,120,124, 96, 24, 80,124,132, 2, 20, 72, 0, 0, 0,
|
/* 0x0080 */ 124, 96, 0,120,124, 96, 24, 80,124,132, 2, 20, 72, 0, 0, 0,
|
||||||
/* 0x0090 */ 124, 8, 2,166, 72, 0, 0, 5,124,200, 2,166,124, 8, 3,166,
|
/* 0x0090 */ 124, 8, 2,166, 72, 0, 0, 5,124,200, 2,166,124, 8, 3,166,
|
||||||
/* 0x00a0 */ 128, 6,255,168,124, 96, 0,120,124, 96, 24, 80,124,132, 2, 20,
|
/* 0x00a0 */ 232, 6,255,168,124, 96, 0,120,124, 96, 24, 80,124,132, 2, 20,
|
||||||
/* 0x00b0 */ 124,227, 34, 20, 56,231,255,255, 96,102, 0,127,124, 0, 48,108,
|
/* 0x00b0 */ 124,227, 34, 20, 56,231,255,255, 96,102, 0,127,124, 0, 48,108,
|
||||||
/* 0x00c0 */ 124, 6, 56, 64,124, 0, 55,172, 56,198, 0,128, 65,128,255,240,
|
/* 0x00c0 */ 124, 6, 56, 64,124, 0, 55,172, 56,198, 0,128, 65,128,255,240,
|
||||||
/* 0x00d0 */ 124, 0, 4,172, 76, 0, 1, 44, 72, 0, 0, 0,124, 8, 2,166,
|
/* 0x00d0 */ 124, 0, 4,172, 76, 0, 1, 44, 72, 0, 0, 0,124, 8, 2,166,
|
||||||
|
|||||||
Generated
+3
-3
@@ -33,8 +33,8 @@
|
|||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
|
||||||
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_SIZE 20929
|
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_SIZE 20929
|
||||||
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_ADLER32 0xc7a493c3
|
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_ADLER32 0xbdc3942b
|
||||||
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_CRC32 0xb5b36810
|
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_CRC32 0xe9c52429
|
||||||
|
|
||||||
unsigned char stub_powerpc64le_linux_elf_fold[20929] = {
|
unsigned char stub_powerpc64le_linux_elf_fold[20929] = {
|
||||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
@@ -47,7 +47,7 @@ unsigned char stub_powerpc64le_linux_elf_fold[20929] = {
|
|||||||
/* 0x0070 */ 5, 0, 0, 72,166, 2,200,124,166, 3, 8,124,204,255, 6,232,
|
/* 0x0070 */ 5, 0, 0, 72,166, 2,200,124,166, 3, 8,124,204,255, 6,232,
|
||||||
/* 0x0080 */ 120, 0, 96,124, 80, 24, 96,124, 20, 2,132,124, 0, 0, 0, 72,
|
/* 0x0080 */ 120, 0, 96,124, 80, 24, 96,124, 20, 2,132,124, 0, 0, 0, 72,
|
||||||
/* 0x0090 */ 166, 2, 8,124, 5, 0, 0, 72,166, 2,200,124,166, 3, 8,124,
|
/* 0x0090 */ 166, 2, 8,124, 5, 0, 0, 72,166, 2,200,124,166, 3, 8,124,
|
||||||
/* 0x00a0 */ 168,255, 6,128,120, 0, 96,124, 80, 24, 96,124, 20, 2,132,124,
|
/* 0x00a0 */ 168,255, 6,232,120, 0, 96,124, 80, 24, 96,124, 20, 2,132,124,
|
||||||
/* 0x00b0 */ 20, 34,227,124,255,255,231, 56,127, 0,102, 96,108, 48, 0,124,
|
/* 0x00b0 */ 20, 34,227,124,255,255,231, 56,127, 0,102, 96,108, 48, 0,124,
|
||||||
/* 0x00c0 */ 64, 56, 6,124,172, 55, 0,124,128, 0,198, 56,240,255,128, 65,
|
/* 0x00c0 */ 64, 56, 6,124,172, 55, 0,124,128, 0,198, 56,240,255,128, 65,
|
||||||
/* 0x00d0 */ 172, 4, 0,124, 44, 1, 0, 76, 0, 0, 0, 72,166, 2, 8,124,
|
/* 0x00d0 */ 172, 4, 0,124, 44, 1, 0, 76, 0, 0, 0, 72,166, 2, 8,124,
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ Pprotect: .globl Pprotect
|
|||||||
b mprotect
|
b mprotect
|
||||||
|
|
||||||
Psync: .globl Psync // (addr, len, flags)
|
Psync: .globl Psync // (addr, len, flags)
|
||||||
mflr r0; bl 0f; 0: mflr r6; mtlr r0; lwz r0,page_mask - 0b(r6)
|
mflr r0; bl 0f; 0: mflr r6; mtlr r0; ld r0,page_mask - 0b(r6)
|
||||||
andc r0,a0,r0 // offset within page
|
andc r0,a0,r0 // offset within page
|
||||||
sub a0,a0,r0
|
sub a0,a0,r0
|
||||||
add a1,a1,r0
|
add a1,a1,r0
|
||||||
|
|||||||
@@ -350,6 +350,7 @@ struct ObjectDeleter final {
|
|||||||
delete item; // single object delete
|
delete item; // single object delete
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static_assert(std::is_nothrow_destructible_v<T>);
|
||||||
};
|
};
|
||||||
template <class T>
|
template <class T>
|
||||||
struct ArrayDeleter final {
|
struct ArrayDeleter final {
|
||||||
@@ -363,6 +364,7 @@ struct ArrayDeleter final {
|
|||||||
delete[] item; // array delete
|
delete[] item; // array delete
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static_assert(std::is_nothrow_destructible_v<T>);
|
||||||
};
|
};
|
||||||
template <class T>
|
template <class T>
|
||||||
struct MallocDeleter final {
|
struct MallocDeleter final {
|
||||||
|
|||||||
@@ -115,8 +115,8 @@
|
|||||||
#if !defined(__ORDER_BIG_ENDIAN__) || (__ORDER_BIG_ENDIAN__ + 0 != 4321)
|
#if !defined(__ORDER_BIG_ENDIAN__) || (__ORDER_BIG_ENDIAN__ + 0 != 4321)
|
||||||
#error "unexpected __ORDER_BIG_ENDIAN__"
|
#error "unexpected __ORDER_BIG_ENDIAN__"
|
||||||
#endif
|
#endif
|
||||||
#if !defined(__ORDER_BIG_ENDIAN__) || (__ORDER_LITTLE_ENDIAN__ + 0 != 1234)
|
#if !defined(__ORDER_LITTLE_ENDIAN__) || (__ORDER_LITTLE_ENDIAN__ + 0 != 1234)
|
||||||
#error "unexpected __ORDER_BIG_ENDIAN__"
|
#error "unexpected __ORDER_LITTLE_ENDIAN__"
|
||||||
#endif
|
#endif
|
||||||
#if (__BYTE_ORDER__ != __ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__)
|
#if (__BYTE_ORDER__ != __ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__)
|
||||||
#error "unexpected __BYTE_ORDER__"
|
#error "unexpected __BYTE_ORDER__"
|
||||||
|
|||||||
+5
-5
@@ -1,7 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#define UPX_VERSION_HEX 0x050001 /* 05.00.01 */
|
#define UPX_VERSION_HEX 0x050002 /* 05.00.02 */
|
||||||
#define UPX_VERSION_STRING "5.0.1"
|
#define UPX_VERSION_STRING "5.0.2"
|
||||||
#define UPX_VERSION_STRING4 "5.01"
|
#define UPX_VERSION_STRING4 "5.02"
|
||||||
#define UPX_VERSION_DATE "May 6th 2025"
|
#define UPX_VERSION_DATE "Jul 20th 2025"
|
||||||
#define UPX_VERSION_DATE_ISO "2025-05-06"
|
#define UPX_VERSION_DATE_ISO "2025-07-20"
|
||||||
#define UPX_VERSION_YEAR "2025"
|
#define UPX_VERSION_YEAR "2025"
|
||||||
|
|||||||
Reference in New Issue
Block a user