Compare commits
90 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 65b3dd7e52 | |||
| b11f043d64 | |||
| aef93548f9 | |||
| 26ca21f6cb | |||
| 404fb48668 | |||
| e85e8bec5d | |||
| 4530e5c264 | |||
| 1188d2933b | |||
| 4e88556c94 | |||
| 1f0036a460 | |||
| 5d30472ee2 | |||
| 9866b9bca9 | |||
| bbf52cee67 | |||
| b9b77965b7 | |||
| 852666010e | |||
| bbb886ae4d | |||
| b52d3e0772 | |||
| 27f8f4f62e | |||
| 21ec7e7410 | |||
| ae6d5303ba | |||
| fbbc2bc874 | |||
| 62f22d61e6 | |||
| 3f1f76f8a3 | |||
| 518712c613 | |||
| c0c08c9f43 | |||
| 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 | |||
| 730c6ce6c5 | |||
| 5ed1d5b2b3 | |||
| 23c70ec447 | |||
| e29e73a4e4 | |||
| 27289a7589 | |||
| e509bb87e9 | |||
| 5cec09966e | |||
| b5789fb321 | |||
| a1b0fd987f | |||
| a468b92e3a | |||
| ddf0b50c6d | |||
| 3af2b21869 | |||
| c4bfebeceb | |||
| d23484b9db | |||
| 071579b5b6 | |||
| ff9d577e46 | |||
| a25c20ee0b | |||
| ff75a462a4 | |||
| e0b6ff1924 | |||
| 1c5fae74e0 | |||
| 6f650ca16f | |||
| c2da21ba4e | |||
| 903ca50391 | |||
| 70f1ab8cb7 | |||
| 6998449715 | |||
| fb0f6c6a00 | |||
| dbde75028c | |||
| 90d86ea59e | |||
| 64891286ba | |||
| e52a3ceb48 | |||
| 8cce9cf641 | |||
| 896dff9619 | |||
| 84a0347df1 | |||
| fc5e44f391 |
+202
-71
@@ -8,19 +8,22 @@ name: CI
|
|||||||
|
|
||||||
on: [push, workflow_dispatch]
|
on: [push, workflow_dispatch]
|
||||||
|
|
||||||
|
defaults: { run: { shell: bash } }
|
||||||
|
|
||||||
env:
|
env:
|
||||||
CMAKE_REQUIRED_QUIET: 'OFF'
|
CMAKE_REQUIRED_QUIET: 'OFF'
|
||||||
CMAKE_VERBOSE_MAKEFILE: 'ON'
|
CMAKE_VERBOSE_MAKEFILE: 'ON'
|
||||||
CTEST_OUTPUT_ON_FAILURE: 'ON'
|
CTEST_OUTPUT_ON_FAILURE: 'ON'
|
||||||
DEBIAN_FRONTEND: noninteractive
|
DEBIAN_FRONTEND: noninteractive
|
||||||
|
NO_COLOR: 1
|
||||||
UPX_CMAKE_BUILD_FLAGS: --verbose
|
UPX_CMAKE_BUILD_FLAGS: --verbose
|
||||||
UPX_CMAKE_CONFIG_FLAGS: -Wdev --warn-uninitialized
|
UPX_CMAKE_CONFIG_FLAGS: -Wdev --warn-uninitialized
|
||||||
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-02-18
|
# 2025-08-19
|
||||||
ZIG_DIST_VERSION: 0.14.0-dev.3258+d2e70ef84
|
ZIG_DIST_VERSION: 0.15.1
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
job-rebuild-and-verify-stubs:
|
job-rebuild-and-verify-stubs:
|
||||||
@@ -30,9 +33,9 @@ jobs:
|
|||||||
#container: debian:12-slim # also works; provides glibc-2.36
|
#container: debian:12-slim # also works; provides glibc-2.36
|
||||||
#container: debian:testing-slim # also works; currently provides glibc-2.38
|
#container: debian:testing-slim # also works; currently provides glibc-2.38
|
||||||
steps:
|
steps:
|
||||||
|
- run: uname -a; pwd; id; umask
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
uname -a; pwd; id; umask
|
|
||||||
dpkg --add-architecture i386
|
dpkg --add-architecture i386
|
||||||
apt-get update && apt-get upgrade -y
|
apt-get update && apt-get upgrade -y
|
||||||
# install system packages
|
# install system packages
|
||||||
@@ -60,7 +63,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
|
||||||
@@ -73,6 +76,72 @@ 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
|
||||||
|
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 dmidecode gdb parallel valgrind
|
||||||
|
- run: (sudo dmidecode | sed -n -e '/System Information/,/^$/p') || true
|
||||||
|
- run: sudo dmidecode -q || true
|
||||||
|
- run: sudo dmidecode || true
|
||||||
|
- uses: actions/checkout@v5
|
||||||
|
with: { submodules: true }
|
||||||
|
- run: make build/extra/gcc/all
|
||||||
|
- run: make build/extra/clang/all
|
||||||
|
- run: ls -l build/*/*/*/upx* || true
|
||||||
|
- run: file build/*/*/*/upx* || true
|
||||||
|
- name: Make artifact
|
||||||
|
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: Run install tests
|
||||||
|
run: |
|
||||||
|
jobs="gcc/debug gcc/release clang/debug clang/release"
|
||||||
|
echo "===== parallel jobs: $jobs"
|
||||||
|
DESTDIR="Install with make 2" parallel -kv --lb 'make build/extra/{}+install' ::: $jobs
|
||||||
|
- name: Mimic ctest tests SIGSEGV
|
||||||
|
run: |
|
||||||
|
jobs="gcc/debug gcc/release clang/debug clang/release"
|
||||||
|
echo "===== parallel jobs: $jobs"
|
||||||
|
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/mimic_ctest_sigsegv.sh' ::: $jobs
|
||||||
|
- name: Run ctest tests
|
||||||
|
run: |
|
||||||
|
jobs="gcc/debug gcc/release clang/debug clang/release"
|
||||||
|
echo "===== parallel jobs: $jobs"
|
||||||
|
CTEST_JOBS=2 parallel -kv --lb 'make build/extra/{}+test' ::: $jobs
|
||||||
|
- name: Mimic ctest tests with Valgrind
|
||||||
|
run: |
|
||||||
|
export UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS=ON # valgrind is SLOW
|
||||||
|
export upx_exe_runner="valgrind --leak-check=no --error-exitcode=1 --quiet --gen-suppressions=all"
|
||||||
|
# clang/debug does not work before valgrind-3.20, see https://bugs.kde.org/show_bug.cgi?id=452758
|
||||||
|
jobs="gcc/debug gcc/release clang/release"
|
||||||
|
echo "===== parallel jobs: $jobs"
|
||||||
|
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
|
||||||
|
|
||||||
job-linux-cmake: # uses cmake + make
|
job-linux-cmake: # uses cmake + make
|
||||||
if: true
|
if: true
|
||||||
@@ -81,17 +150,18 @@ 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 }
|
||||||
- { 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) }}
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
|
- run: uname -a; pwd; id; umask
|
||||||
- name: Install extra 32-bit and MinGW packages
|
- name: Install extra 32-bit and MinGW packages
|
||||||
if: ${{ matrix.use_extra }}
|
if: ${{ matrix.use_extra }}
|
||||||
run: |
|
run: |
|
||||||
sudo dpkg --add-architecture i386
|
sudo dpkg --add-architecture i386
|
||||||
sudo apt-get update && sudo apt-get upgrade -y
|
sudo apt-get update && sudo apt-get upgrade -y
|
||||||
|
sudo apt-get install -y dmidecode gdb libc6-dbg:i386 parallel valgrind
|
||||||
sudo apt-get install -y g++-multilib g++-mingw-w64-i686 g++-mingw-w64-x86-64
|
sudo apt-get install -y g++-multilib g++-mingw-w64-i686 g++-mingw-w64-x86-64
|
||||||
# make sure that we use posix-threads (pthread/winpthreads) and NOT win32-threads
|
# make sure that we use posix-threads (pthread/winpthreads) and NOT win32-threads
|
||||||
for f in i686-w64-mingw32-g++ i686-w64-mingw32-gcc x86_64-w64-mingw32-g++ x86_64-w64-mingw32-gcc; do
|
for f in i686-w64-mingw32-g++ i686-w64-mingw32-gcc x86_64-w64-mingw32-g++ x86_64-w64-mingw32-gcc; do
|
||||||
@@ -99,14 +169,19 @@ jobs:
|
|||||||
ls -l /usr/bin/${f}*
|
ls -l /usr/bin/${f}*
|
||||||
done
|
done
|
||||||
ls -l /etc/alternatives/*mingw* || true
|
ls -l /etc/alternatives/*mingw* || true
|
||||||
sudo apt-get install -y libc6-dbg:i386 valgrind
|
- run: (sudo dmidecode | sed -n -e '/System Information/,/^$/p') || true
|
||||||
|
if: ${{ matrix.use_extra }}
|
||||||
|
- run: sudo dmidecode -q || true
|
||||||
|
if: ${{ matrix.use_extra }}
|
||||||
|
- run: sudo dmidecode || true
|
||||||
|
if: ${{ matrix.use_extra }}
|
||||||
- name: Install Wine
|
- name: Install Wine
|
||||||
if: ${{ matrix.use_extra && matrix.use_wine }}
|
if: ${{ matrix.use_extra && matrix.use_wine }}
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get install -y wine wine32:i386 wine64
|
sudo apt-get install -y wine wine32:i386 wine64
|
||||||
ls -l /usr/bin/wine*
|
ls -l /usr/bin/wine*
|
||||||
mkdir -p -v ~/.wine && wineboot --init
|
mkdir -p -v ~/.wine && wineboot --init
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
with: { submodules: true }
|
with: { submodules: true }
|
||||||
- name: Check out test suite
|
- name: Check out test suite
|
||||||
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
|
||||||
@@ -126,6 +201,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')
|
||||||
@@ -151,6 +228,16 @@ 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)
|
||||||
|
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"
|
||||||
|
DESTDIR="Install with make 2" parallel -kv --lb 'make build/extra/{}+install' ::: $jobs
|
||||||
|
- 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"
|
||||||
@@ -159,12 +246,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: |
|
||||||
@@ -213,10 +294,12 @@ 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:
|
||||||
|
- run: uname -a; pwd; id; umask
|
||||||
- uses: maxim-lobanov/setup-xcode@v1
|
- uses: maxim-lobanov/setup-xcode@v1
|
||||||
if: ${{ matrix.xcode_version }}
|
if: ${{ matrix.xcode_version }}
|
||||||
with: { xcode-version: '${{ matrix.xcode_version }}' }
|
with: { xcode-version: '${{ matrix.xcode_version }}' }
|
||||||
@@ -226,7 +309,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
|
||||||
@@ -237,9 +320,9 @@ jobs:
|
|||||||
echo "UPX_DEBUG_FORCE_PACK_MACOS=1" >> $GITHUB_ENV
|
echo "UPX_DEBUG_FORCE_PACK_MACOS=1" >> $GITHUB_ENV
|
||||||
case "${{ matrix.os }}" in
|
case "${{ matrix.os }}" in
|
||||||
# TODO FIXME: UPX on macos-13+ is broken => disable run-packed for now
|
# TODO FIXME: UPX on macos-13+ is broken => disable run-packed for now
|
||||||
macos-13 | macos-14 | macos-15) echo "UPX_CONFIG_DISABLE_RUN_PACKED_TEST=ON" >> $GITHUB_ENV ;;
|
macos-1[345]) echo "UPX_CONFIG_DISABLE_RUN_PACKED_TEST=ON" >> $GITHUB_ENV ;;
|
||||||
esac
|
esac
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
with: { submodules: true }
|
with: { submodules: true }
|
||||||
- name: Check out test suite
|
- name: Check out test suite
|
||||||
if: ${{ matrix.testsuite }}
|
if: ${{ matrix.testsuite }}
|
||||||
@@ -262,6 +345,8 @@ 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
|
||||||
run: |
|
run: |
|
||||||
X="${{ matrix.xcode_version }}"; test -n "$X" && X="-xcode-$X"
|
X="${{ matrix.xcode_version }}"; test -n "$X" && X="-xcode-$X"
|
||||||
@@ -325,24 +410,45 @@ 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_arm64ec: 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_arm64ec: 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:
|
||||||
- run: git config --global core.autocrlf false
|
- run: git config --global core.autocrlf false
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
with: { submodules: true }
|
with: { submodules: true }
|
||||||
- name: Check out test suite
|
- name: Check out test suite
|
||||||
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
|
||||||
|
run: |
|
||||||
|
if [[ "${{ matrix.vsarch }}" == amd64 ]]; then true;
|
||||||
|
echo "UPX_CMAKE_CONFIG_FLAGS_PLATFORM=-A x64" >> $GITHUB_ENV
|
||||||
|
elif [[ "${{ matrix.use_arm64ec }}" == "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
|
||||||
|
- run: shopt -s globstar; ls -ld build/**/upx* || true
|
||||||
|
- run: shopt -s globstar; file build/**/upx* || true
|
||||||
- name: Make artifact
|
- name: Make artifact
|
||||||
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
|
||||||
@@ -363,12 +469,16 @@ 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' }}
|
||||||
|
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
|
|
||||||
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'
|
||||||
@@ -377,13 +487,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 }}
|
||||||
@@ -392,10 +502,9 @@ jobs:
|
|||||||
B: release
|
B: release
|
||||||
steps:
|
steps:
|
||||||
- run: git config --global core.autocrlf false
|
- run: git config --global core.autocrlf false
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
with: { submodules: true }
|
with: { submodules: true }
|
||||||
- name: Prepare sources and Check out test suite
|
- name: Prepare sources and Check out test suite
|
||||||
shell: bash
|
|
||||||
run: |
|
run: |
|
||||||
git clone --depth=1 https://github.com/upx/upx-testsuite ../deps/upx-testsuite
|
git clone --depth=1 https://github.com/upx/upx-testsuite ../deps/upx-testsuite
|
||||||
mkdir -p -v build/$C/$B/{bzip2,ucl,upx,zlib,zstd}
|
mkdir -p -v build/$C/$B/{bzip2,ucl,upx,zlib,zstd}
|
||||||
@@ -443,8 +552,9 @@ jobs:
|
|||||||
@rem set UPX_LIBS=%BDIR%\bzip2\bzip2.lib %BDIR%\ucl\ucl.lib %BDIR%\zlib\zlib.lib %BDIR%\zstd\zstd.lib
|
@rem set UPX_LIBS=%BDIR%\bzip2\bzip2.lib %BDIR%\ucl\ucl.lib %BDIR%\zlib\zlib.lib %BDIR%\zstd\zstd.lib
|
||||||
set sources=%s%\*.cpp %s%\check\*.cpp %s%\compress\*.cpp %s%\console\*.cpp %s%\filter\*.cpp %s%\util\*.cpp
|
set sources=%s%\*.cpp %s%\check\*.cpp %s%\compress\*.cpp %s%\console\*.cpp %s%\filter\*.cpp %s%\util\*.cpp
|
||||||
%RUN_CL% -J -O2 -W4 -WX -std:c++17 -Zc:__cplusplus -EHsc -DUPX_VERSION_GITREV="""%GITREV%""" %DEFS% %UPX_DEFS% -I%H%\vendor -Feupx.exe %sources% %UPX_LIBS% /link ${{ matrix.link_machine_flags }} setargv.obj
|
%RUN_CL% -J -O2 -W4 -WX -std:c++17 -Zc:__cplusplus -EHsc -DUPX_VERSION_GITREV="""%GITREV%""" %DEFS% %UPX_DEFS% -I%H%\vendor -Feupx.exe %sources% %UPX_LIBS% /link ${{ matrix.link_machine_flags }} setargv.obj
|
||||||
|
- run: shopt -s globstar; ls -ld build/**/upx* || true
|
||||||
|
- run: shopt -s globstar; file build/**/upx* || true
|
||||||
- name: Make artifact
|
- name: Make artifact
|
||||||
shell: bash
|
|
||||||
run: |
|
run: |
|
||||||
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-windows-${{ matrix.name }}" | sed 's/[^0-9a-zA-Z_.-]/-/g')
|
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-windows-${{ matrix.name }}" | sed 's/[^0-9a-zA-Z_.-]/-/g')
|
||||||
mkdir -p "tmp/artifact/$N/$B"
|
mkdir -p "tmp/artifact/$N/$B"
|
||||||
@@ -454,23 +564,12 @@ jobs:
|
|||||||
- name: ${{ format('Upload artifact {0}', env.artifact_name) }}
|
- name: ${{ format('Upload artifact {0}', env.artifact_name) }}
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with: { name: '${{ env.artifact_name }}', path: tmp/artifact }
|
with: { name: '${{ env.artifact_name }}', path: tmp/artifact }
|
||||||
- name: Run basic tests
|
- name: Mimic ctest tests
|
||||||
if: ${{ matrix.vsarch != 'amd64_arm64' }}
|
if: ${{ matrix.vsarch != 'amd64_arm64' }}
|
||||||
run: |
|
run: |
|
||||||
$ErrorActionPreference = 'stop'
|
env -C build/$C/$B/upx upx_exe=./upx.exe bash "$PWD"/misc/testsuite/mimic_ctest.sh
|
||||||
$ErrorView = 'NormalView'
|
|
||||||
cd $Env:H\build\$Env:C\$Env:B\upx
|
|
||||||
$Env:UPX = "--no-color --no-progress"
|
|
||||||
.\upx.exe --version
|
|
||||||
.\upx.exe --sysinfo -v
|
|
||||||
.\upx.exe upx.exe -o upx_packed.exe
|
|
||||||
dir *.exe
|
|
||||||
.\upx.exe -l upx_packed.exe
|
|
||||||
.\upx.exe -t upx_packed.exe
|
|
||||||
.\upx_packed.exe --version
|
|
||||||
- name: Run test suite
|
- name: Run test suite
|
||||||
if: ${{ matrix.vsarch != 'amd64_arm64' }}
|
if: ${{ matrix.vsarch != 'amd64_arm64' }}
|
||||||
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/$C/$B/upx upx_exe=./upx.exe bash "$PWD"/misc/testsuite/upx_testsuite_1.sh
|
env -C build/$C/$B/upx upx_exe=./upx.exe bash "$PWD"/misc/testsuite/upx_testsuite_1.sh
|
||||||
@@ -484,28 +583,40 @@ 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-macos.11.0-none }
|
- { zig_target: aarch64-linux-musl, qemu: qemu-aarch64, zig_pic: -fPIE, container: 'alpine:3.18' }
|
||||||
|
- { zig_target: aarch64-macos-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 }
|
||||||
- { zig_target: armeb-linux-musleabihf, qemu: qemu-armeb }
|
- { zig_target: armeb-linux-musleabihf, qemu: qemu-armeb }
|
||||||
- { zig_target: i386-linux-gnu.2.3.4, zig_flags: -march=i586 }
|
- { zig_target: i386-linux-gnu.2.3.4, zig_flags: -march=i586 }
|
||||||
|
- { zig_target: i386-linux-gnu.2.17, zig_flags: -march=i586 }
|
||||||
- { zig_target: i386-linux-musl, zig_flags: -march=i586, qemu: qemu-i386 }
|
- { zig_target: i386-linux-musl, zig_flags: -march=i586, qemu: qemu-i386 }
|
||||||
|
- { zig_target: i386-linux-musl, zig_flags: -march=i586, qemu: qemu-i386, zig_pic: -fPIE }
|
||||||
- { zig_target: i386-windows-gnu }
|
- { zig_target: i386-windows-gnu }
|
||||||
- { zig_target: mips-linux-musleabi, zig_flags: -msoft-float, qemu: qemu-mips }
|
- { zig_target: mips-linux-musleabi, qemu: qemu-mips }
|
||||||
- { zig_target: mips-linux-musleabihf, qemu: qemu-mips }
|
- { zig_target: mips-linux-musleabihf, qemu: qemu-mips }
|
||||||
- { zig_target: mipsel-linux-musleabi, zig_flags: -msoft-float, qemu: qemu-mipsel }
|
- { zig_target: mipsel-linux-musleabi, qemu: qemu-mipsel }
|
||||||
- { zig_target: mipsel-linux-musleabihf, qemu: qemu-mipsel }
|
- { zig_target: mipsel-linux-musleabihf, qemu: qemu-mipsel }
|
||||||
|
# { zig_target: mips-linux-musleabi-mips32r2, zig_flags: -march=mips32r2, qemu: qemu-mips }
|
||||||
|
# { zig_target: mips-linux-musleabi-mips32r3, zig_flags: -march=mips32r3, qemu: qemu-mips }
|
||||||
|
# { zig_target: mips-linux-musleabi-mips32r5, zig_flags: -march=mips32r5, 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-musl, qemu: qemu-x86_64 }
|
- { zig_target: x86_64-linux-musl, qemu: qemu-x86_64 }
|
||||||
- { zig_target: x86_64-macos.11.0-none }
|
- { zig_target: x86_64-linux-musl, qemu: qemu-x86_64, zig_pic: -fPIE, container: 'alpine:3.18' }
|
||||||
|
- { zig_target: x86_64-macos-none }
|
||||||
- { 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: ${{ matrix.container || 'alpine:3.22' }}
|
||||||
env:
|
env:
|
||||||
|
container: ${{ matrix.container || 'alpine:3.22' }}
|
||||||
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):
|
||||||
ZIG_CPPFLAGS: -DUPX_DOCTEST_CONFIG_MULTITHREADING
|
ZIG_CPPFLAGS: -DUPX_DOCTEST_CONFIG_MULTITHREADING
|
||||||
@@ -513,26 +624,27 @@ jobs:
|
|||||||
ZIG_PIC: ${{ matrix.zig_pic }}
|
ZIG_PIC: ${{ matrix.zig_pic }}
|
||||||
ZIG_TARGET: ${{ matrix.zig_target }}
|
ZIG_TARGET: ${{ matrix.zig_target }}
|
||||||
steps:
|
steps:
|
||||||
- name: Install Alpine Linux container packages
|
- run: uname -a; pwd; id; umask
|
||||||
if: ${{ job.container }}
|
shell: sh
|
||||||
|
- name: ${{ format('Install packages {0}', env.container) }}
|
||||||
shell: sh
|
shell: sh
|
||||||
run: |
|
run: |
|
||||||
apk update && apk upgrade && apk add bash cmake curl file git make parallel tar util-linux xz zstd
|
apk update && apk upgrade && apk add bash cmake curl dmidecode file gdb git make parallel patch strace sudo 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
|
||||||
mkdir -p ~/.parallel && : > ~/.parallel/$(echo 6305-4721 | tr 0-7 leticlwi)
|
mkdir -p ~/.parallel && : > ~/.parallel/$(echo 6305-4721 | tr 0-7 leticlwi)
|
||||||
- uses: actions/checkout@v4
|
- run: (sudo dmidecode | sed -n -e '/System Information/,/^$/p') || true
|
||||||
|
- uses: actions/checkout@v5
|
||||||
with: { submodules: true }
|
with: { submodules: true }
|
||||||
- name: ${{ format('Install Zig {0}', env.ZIG_DIST_VERSION) }}
|
- name: ${{ format('Install Zig {0}', env.ZIG_DIST_VERSION) }}
|
||||||
shell: bash
|
|
||||||
run: |
|
run: |
|
||||||
rev=$(git rev-parse --short=7 HEAD)
|
rev=$(git rev-parse --short=7 HEAD)
|
||||||
echo "UPX_GITREV_SHORT=$rev" >> $GITHUB_ENV
|
echo "UPX_GITREV_SHORT=$rev" >> $GITHUB_ENV
|
||||||
if [[ "${{ matrix.zig_target }}" == i386-linux-gnu.2.3.4 ]]; then
|
if [[ "${{ matrix.zig_target }}" == i386-linux-gnu.2.3.* ]]; then true;
|
||||||
echo "UPX_CONFIG_DISABLE_SHARED_LIBS=ON" >> $GITHUB_ENV # zig problem when linking in Debug mode
|
echo "UPX_CONFIG_DISABLE_SHARED_LIBS=ON" >> $GITHUB_ENV # zig problem when linking in Debug mode
|
||||||
fi
|
fi
|
||||||
if [[ "${{ matrix.zig_target }}" == x86_64-linux-gnu.2.3.4 ]]; then
|
if [[ "${{ matrix.zig_target }}" == x86_64-linux-gnu.2* ]]; then true;
|
||||||
echo "NEED_GCOMPAT=1" >> $GITHUB_ENV
|
echo "NEED_GCOMPAT=1" >> $GITHUB_ENV
|
||||||
# TODO FIXME: problem with self-packed upx and musl+gcompat: "Not a valid dynamic program"
|
# TODO FIXME: problem with self-packed upx and musl+gcompat: "Not a valid dynamic program"
|
||||||
echo "UPX_CONFIG_DISABLE_RUN_PACKED_TEST=ON" >> $GITHUB_ENV
|
echo "UPX_CONFIG_DISABLE_RUN_PACKED_TEST=ON" >> $GITHUB_ENV
|
||||||
@@ -541,13 +653,20 @@ 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}
|
||||||
curl -sS -L -O https://ziglang.org/builds/${ZIG_DIST_NAME}.tar.xz
|
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/download/0.14.1/${ZIG_DIST_NAME}.tar.xz
|
||||||
|
curl -sS -L -O https://ziglang.org/download/0.15.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
|
||||||
#echo "PATH=$PATH" && which zig
|
#echo "PATH=$PATH" && which zig
|
||||||
echo -n 'zig version: '; zig version
|
echo -n 'zig version: '; zig version
|
||||||
|
# patch zig
|
||||||
|
ls -la "$HOME" "$GITHUB_WORKSPACE" || true
|
||||||
|
(cd ${ZIG_DIST_NAME} && patch --verbose -p1 -i "$GITHUB_WORKSPACE"/misc/patches/zig/0001-x.patch)
|
||||||
# create wrapper scripts (needed for CMake)
|
# create wrapper scripts (needed for CMake)
|
||||||
log=
|
log=
|
||||||
log='set -x\n'
|
log='set -x\n'
|
||||||
@@ -558,34 +677,45 @@ jobs:
|
|||||||
chmod +x zig-ar zig-cc zig-cxx zig-ranlib
|
chmod +x zig-ar zig-cc zig-cxx zig-ranlib
|
||||||
ls -la; head zig-ar zig-cc zig-cxx zig-ranlib
|
ls -la; head zig-ar zig-cc zig-cxx zig-ranlib
|
||||||
# update ZIG_TARGET
|
# update ZIG_TARGET
|
||||||
ZIG_TARGET=${ZIG_TARGET/i386-/x86-} # i386 => x86
|
[[ $ZIG_TARGET == mips-linux-musleabi-* ]] && ZIG_TARGET=mips-linux-musleabi
|
||||||
|
[[ $ZIG_TARGET == mips-linux-musleabihf-* ]] && ZIG_TARGET=mips-linux-musleabihf
|
||||||
|
[[ $ZIG_TARGET == mipsel-linux-musleabi-* ]] && ZIG_TARGET=mipsel-linux-musleabi
|
||||||
|
[[ $ZIG_TARGET == mipsel-linux-musleabihf-* ]] && ZIG_TARGET=mipsel-linux-musleabihf
|
||||||
|
ZIG_TARGET=${ZIG_TARGET/#i386-/x86-} # i386 => x86
|
||||||
echo "ZIG_TARGET=$ZIG_TARGET" >> $GITHUB_ENV
|
echo "ZIG_TARGET=$ZIG_TARGET" >> $GITHUB_ENV
|
||||||
|
# update ZIG_FLAGS
|
||||||
# -fPIE is for compilation only => also use the correct linker flag "-pie"
|
# -fPIE is for compilation only => also use the correct linker flag "-pie"
|
||||||
# INFO: it seems the zig driver does handle this automatically(??), so not really needed
|
# INFO: it seems the zig driver does handle this automatically(??), so not really needed
|
||||||
if test "X$ZIG_PIC" = "X-fPIE"; then true;
|
if test "X$ZIG_PIC" = "X-fPIE"; then true;
|
||||||
ZIG_FLAGS="$ZIG_FLAGS --start-no-unused-arguments -pie --end-no-unused-arguments"
|
ZIG_FLAGS="$ZIG_FLAGS --start-no-unused-arguments -pie --end-no-unused-arguments"
|
||||||
echo "UPX_CONFIG_DISABLE_SHARED_LIBS=ON" >> $GITHUB_ENV # conflicts with ZIG_PIC/ZIG_FLAGS
|
echo "UPX_CONFIG_DISABLE_SHARED_LIBS=ON" >> $GITHUB_ENV # conflicts with ZIG_PIC/ZIG_FLAGS
|
||||||
fi
|
fi
|
||||||
# zig bug TODO later: need -Wno-unused-command-line-argument
|
if [[ $ZIG_TARGET == *-linux-gnu.2.3.* ]]; then true;
|
||||||
case "$ZIG_TARGET" in
|
# glibc-2.3.3: undefined symbols in Debug build: __snprintf_chk __vsnprintf_chk
|
||||||
powerpc*) ZIG_FLAGS="$ZIG_FLAGS -Wno-unused-command-line-argument" ;;
|
# glibc-2.3.4: ld.lld: error: undefined symbol: openat64
|
||||||
esac
|
ZIG_FLAGS="$ZIG_FLAGS -fno-sanitize=all"
|
||||||
|
echo "UPX_CONFIG_DISABLE_SANITIZE=ON" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
|
if [[ $ZIG_TARGET == *-linux-gnu.2.[456789] ]]; then true;
|
||||||
|
# glibc-2.x: ld.lld: error: undefined symbol: pwritev64
|
||||||
|
ZIG_FLAGS="$ZIG_FLAGS -fno-sanitize=all"
|
||||||
|
echo "UPX_CONFIG_DISABLE_SANITIZE=ON" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
echo "ZIG_FLAGS=$ZIG_FLAGS" >> $GITHUB_ENV
|
echo "ZIG_FLAGS=$ZIG_FLAGS" >> $GITHUB_ENV
|
||||||
# run: set -x; zig version; zig-cc --version; zig-cxx --version
|
- run: set -x; zig version; zig-cc --version || true; zig-cxx --version || true
|
||||||
- run: zig-cc -E -x c -dM /dev/null # list predefined macros for C
|
- run: zig-cc -E -x c -dM /dev/null # list predefined macros for C
|
||||||
- run: zig-cxx -E -x c++ -dM /dev/null # list predefined macros for C++
|
- run: zig-cxx -E -x c++ -dM /dev/null # list predefined macros for C++
|
||||||
- name: ${{ format('Build Release with zig-cc -target {0} {1}', env.ZIG_TARGET, env.ZIG_PIC) }}
|
- name: ${{ format('Build Release with zig-cc -target {0} {1}', env.ZIG_TARGET, env.ZIG_PIC) }}
|
||||||
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
|
|
||||||
run: |
|
run: |
|
||||||
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-zigcc-${{ matrix.zig_target }}${ZIG_PIC}" | sed 's/[^0-9a-zA-Z_.-]/-/g')
|
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-zigcc-${{ matrix.zig_target }}${ZIG_PIC}" | sed 's/[^0-9a-zA-Z_.-]/-/g')
|
||||||
mkdir -p "tmp/artifact/$N"
|
mkdir -p "tmp/artifact/$N"
|
||||||
@@ -609,14 +739,14 @@ jobs:
|
|||||||
(cd build/zig/${ZIG_TARGET}${ZIG_PIC}/release && DESTDIR="$PWD/Install with cmake" cmake --install .)
|
(cd build/zig/${ZIG_TARGET}${ZIG_PIC}/release && DESTDIR="$PWD/Install with cmake" cmake --install .)
|
||||||
(cd build/zig/${ZIG_TARGET}${ZIG_PIC}/release && DESTDIR="$PWD/Install with make" make install)
|
(cd build/zig/${ZIG_TARGET}${ZIG_PIC}/release && DESTDIR="$PWD/Install with make" make install)
|
||||||
- name: Run ctest tests
|
- name: Run ctest tests
|
||||||
if: ${{ matrix.zig_target == 'i386-linux-musl' || matrix.zig_target == 'x86_64-linux-musl' || matrix.zig_target == 'x86_64-linux-gnu.2.3.4' }}
|
if: ${{ matrix.zig_target == 'i386-linux-musl' || matrix.zig_target == 'x86_64-linux-musl' || contains(matrix.zig_target, 'x86_64-linux-gnu.2') }}
|
||||||
run: |
|
run: |
|
||||||
test -n "$NEED_GCOMPAT" && apk add gcompat
|
test -n "$NEED_GCOMPAT" && apk add gcompat
|
||||||
jobs="${ZIG_TARGET}${ZIG_PIC}/debug ${ZIG_TARGET}${ZIG_PIC}/release"
|
jobs="${ZIG_TARGET}${ZIG_PIC}/debug ${ZIG_TARGET}${ZIG_PIC}/release"
|
||||||
echo "===== parallel jobs: $jobs"
|
echo "===== parallel jobs: $jobs"
|
||||||
parallel -kv --lb 'make build/zig/{}+test' ::: $jobs
|
parallel -kv --lb 'make build/zig/{}+test' ::: $jobs
|
||||||
- name: Mimic ctest tests
|
- name: Mimic ctest tests
|
||||||
if: ${{ matrix.zig_target == 'i386-linux-musl' || matrix.zig_target == 'x86_64-linux-musl' || matrix.zig_target == 'x86_64-linux-gnu.2.3.4' }}
|
if: ${{ matrix.zig_target == 'i386-linux-musl' || matrix.zig_target == 'x86_64-linux-musl' || contains(matrix.zig_target, 'x86_64-linux-gnu.2') }}
|
||||||
run: |
|
run: |
|
||||||
test -n "$NEED_GCOMPAT" && apk add gcompat
|
test -n "$NEED_GCOMPAT" && apk add gcompat
|
||||||
jobs="${ZIG_TARGET}${ZIG_PIC}/debug ${ZIG_TARGET}${ZIG_PIC}/release"
|
jobs="${ZIG_TARGET}${ZIG_PIC}/debug ${ZIG_TARGET}${ZIG_PIC}/release"
|
||||||
@@ -633,7 +763,8 @@ jobs:
|
|||||||
echo "===== parallel jobs: $jobs"
|
echo "===== parallel jobs: $jobs"
|
||||||
parallel -kv --lb 'cd build/zig/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
|
parallel -kv --lb 'cd build/zig/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
|
||||||
- name: Mimic ctest tests with Valgrind
|
- name: Mimic ctest tests with Valgrind
|
||||||
if: ${{ matrix.zig_target == 'x86_64-linux-musl' || matrix.zig_target == 'x86_64-linux-gnu.2.3.4' }}
|
#if: ${{ matrix.zig_target == 'x86_64-linux-musl' || contains(matrix.zig_target, 'x86_64-linux-gnu.2') }}
|
||||||
|
if: false
|
||||||
run: |
|
run: |
|
||||||
export UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS=ON # valgrind is SLOW
|
export UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS=ON # valgrind is SLOW
|
||||||
apk add coreutils valgrind
|
apk add coreutils valgrind
|
||||||
@@ -644,7 +775,7 @@ jobs:
|
|||||||
echo "===== parallel jobs: $jobs"
|
echo "===== parallel jobs: $jobs"
|
||||||
parallel -kv --lb 'cd build/zig/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
|
parallel -kv --lb 'cd build/zig/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
|
||||||
- name: Run file system tests
|
- name: Run file system tests
|
||||||
if: ${{ matrix.zig_target == 'i386-linux-musl' || matrix.zig_target == 'x86_64-linux-musl' || matrix.zig_target == 'x86_64-linux-gnu.2.3.4' }}
|
if: ${{ matrix.zig_target == 'i386-linux-musl' || matrix.zig_target == 'x86_64-linux-musl' || contains(matrix.zig_target, 'x86_64-linux-gnu.2') }}
|
||||||
run: |
|
run: |
|
||||||
apk add coreutils sudo
|
apk add coreutils sudo
|
||||||
test -n "$NEED_GCOMPAT" && apk add gcompat
|
test -n "$NEED_GCOMPAT" && apk add gcompat
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ jobs:
|
|||||||
issues: write
|
issues: write
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v9
|
- uses: actions/stale@v10
|
||||||
with:
|
with:
|
||||||
operations-per-run: 300
|
operations-per-run: 300
|
||||||
exempt-all-milestones: true
|
exempt-all-milestones: true
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
/.cache*
|
/.cache*
|
||||||
|
/.idea/
|
||||||
/.hg*
|
/.hg*
|
||||||
/.vscode*
|
/.vscode*
|
||||||
|
/.zed/
|
||||||
/CMakeCache*
|
/CMakeCache*
|
||||||
/CMakeFiles*
|
/CMakeFiles*
|
||||||
/CTest*
|
/CTest*
|
||||||
|
|||||||
+7
-3
@@ -30,6 +30,8 @@ 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)
|
||||||
|
upx_print_env_var(CC CXX CPPFLAGS CFLAGS CXXFLAGS)
|
||||||
|
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
# options
|
# options
|
||||||
@@ -62,13 +64,15 @@ option(UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS "Do not run exhaustive tests"
|
|||||||
# init
|
# init
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
|
|
||||||
set(UPX_VERSION_STRING "5.0.0") # this should match src/version.h
|
set(UPX_VERSION_STRING "5.0.3") # 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.
|
||||||
upx_disallow_in_source_build()
|
if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.git")
|
||||||
|
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)
|
||||||
@@ -89,7 +93,6 @@ upx_cache_bool_vars(OFF
|
|||||||
UPX_CONFIG_DISABLE_SAVE_TEMPS UPX_CONFIG_DISABLE_SHARED_LIBS UPX_CONFIG_REQUIRE_THREADS
|
UPX_CONFIG_DISABLE_SAVE_TEMPS UPX_CONFIG_DISABLE_SHARED_LIBS UPX_CONFIG_REQUIRE_THREADS
|
||||||
)
|
)
|
||||||
upx_cache_bool_vars(ON UPX_CONFIG_EXPECT_THREADS)
|
upx_cache_bool_vars(ON UPX_CONFIG_EXPECT_THREADS)
|
||||||
upx_print_env_var(CC CXX)
|
|
||||||
|
|
||||||
# determine Git revision
|
# determine Git revision
|
||||||
set(GITREV_SHORT "")
|
set(GITREV_SHORT "")
|
||||||
@@ -466,6 +469,7 @@ if(NOT CMAKE_CROSSCOMPILING OR CMAKE_CROSSCOMPILING_EMULATOR)
|
|||||||
# IMPORTANT NOTE: these tests can only work if the host executable format
|
# IMPORTANT NOTE: these tests can only work if the host executable format
|
||||||
# is supported by UPX!
|
# is supported by UPX!
|
||||||
include("${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/self_pack_test.cmake")
|
include("${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/self_pack_test.cmake")
|
||||||
|
upx_self_pack_test()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@@ -26,8 +26,13 @@ endif
|
|||||||
|
|
||||||
.DEFAULT_GOAL = build/release
|
.DEFAULT_GOAL = build/release
|
||||||
|
|
||||||
run_cmake_config = $(CMAKE) -S . -B $1 $(UPX_CMAKE_CONFIG_FLAGS) -DCMAKE_BUILD_TYPE=$2
|
.NOTPARALLEL: # because the actual builds use "cmake --parallel"
|
||||||
run_cmake_build = $(CMAKE) --build $1 $(UPX_CMAKE_BUILD_FLAGS) --config $2
|
.PHONY: PHONY
|
||||||
|
.SECONDEXPANSION:
|
||||||
|
.SUFFIXES:
|
||||||
|
|
||||||
|
run_cmake_config = $(CMAKE) -S . -B "$1" $(UPX_CMAKE_CONFIG_FLAGS) -DCMAKE_BUILD_TYPE="$2"
|
||||||
|
run_cmake_build = $(CMAKE) --build "$1" $(UPX_CMAKE_BUILD_FLAGS) --config "$2"
|
||||||
# avoid re-running run_cmake_config if .upx_cmake_config_done.txt already exists
|
# avoid re-running run_cmake_config if .upx_cmake_config_done.txt already exists
|
||||||
run_config = $(if $(wildcard $1/CMakeFiles/.*_cmake_config_done.txt),,$(call run_cmake_config,$1,$2))
|
run_config = $(if $(wildcard $1/CMakeFiles/.*_cmake_config_done.txt),,$(call run_cmake_config,$1,$2))
|
||||||
run_build = $(call run_cmake_build,$1,$2)
|
run_build = $(call run_cmake_build,$1,$2)
|
||||||
@@ -40,11 +45,6 @@ build/release: PHONY
|
|||||||
$(call run_config,$@,Release)
|
$(call run_config,$@,Release)
|
||||||
$(call run_build,$@,Release)
|
$(call run_build,$@,Release)
|
||||||
|
|
||||||
.NOTPARALLEL: # because the actual builds use "cmake --parallel"
|
|
||||||
.PHONY: PHONY
|
|
||||||
.SECONDEXPANSION:
|
|
||||||
.SUFFIXES:
|
|
||||||
|
|
||||||
# shortcuts (all => debug + release)
|
# shortcuts (all => debug + release)
|
||||||
debug: build/debug PHONY
|
debug: build/debug PHONY
|
||||||
release: build/release PHONY
|
release: build/release PHONY
|
||||||
@@ -72,9 +72,26 @@ all+test build/all+test: build/debug+test build/release+test PHONY
|
|||||||
|
|
||||||
test: $$(patsubst %+test,%,$$(.DEFAULT_GOAL))+test PHONY
|
test: $$(patsubst %+test,%,$$(.DEFAULT_GOAL))+test PHONY
|
||||||
|
|
||||||
#
|
#***********************************************************************
|
||||||
|
# install
|
||||||
|
#***********************************************************************
|
||||||
|
|
||||||
|
build/debug+install: $$(dir $$@)debug PHONY; cd "$(dir $@)debug" && $(CMAKE) --install . --config Debug
|
||||||
|
build/%/debug+install: $$(dir $$@)debug PHONY; cd "$(dir $@)debug" && $(CMAKE) --install . --config Debug
|
||||||
|
build/release+install: $$(dir $$@)release PHONY; cd "$(dir $@)release" && $(CMAKE) --install . --config Release
|
||||||
|
build/%/release+install: $$(dir $$@)release PHONY; cd "$(dir $@)release" && $(CMAKE) --install . --config Release
|
||||||
|
build/%/all+install: $$(dir $$@)debug+install $$(dir $$@)release+install PHONY ;
|
||||||
|
|
||||||
|
# shortcuts
|
||||||
|
debug+install: build/debug+install PHONY
|
||||||
|
release+install: build/release+install PHONY
|
||||||
|
all+install build/all+install: build/debug+install build/release+install PHONY
|
||||||
|
|
||||||
|
install: $$(patsubst %+install,%,$$(.DEFAULT_GOAL))+install PHONY
|
||||||
|
|
||||||
|
#***********************************************************************
|
||||||
# END of Makefile
|
# END of Makefile
|
||||||
#
|
#***********************************************************************
|
||||||
|
|
||||||
# extra pre-defined build configurations and some utility; optional
|
# extra pre-defined build configurations and some utility; optional
|
||||||
-include ./Makevars-local.mk
|
-include ./Makevars-local.mk
|
||||||
|
|||||||
@@ -2,6 +2,15 @@
|
|||||||
User visible changes for UPX
|
User visible changes for UPX
|
||||||
==================================================================
|
==================================================================
|
||||||
|
|
||||||
|
Changes in 5.0.3 (XX XXX XXXX):
|
||||||
|
* bug fixes - see https://github.com/upx/upx/milestone/21
|
||||||
|
|
||||||
|
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):
|
||||||
|
* bug fixes - see https://github.com/upx/upx/milestone/19
|
||||||
|
|
||||||
Changes in 5.0.0 (20 Feb 2025):
|
Changes in 5.0.0 (20 Feb 2025):
|
||||||
* ELF: use of memfd_create supports Enforcing mode of SELinux
|
* ELF: use of memfd_create supports Enforcing mode of SELinux
|
||||||
* ELF: two-step de-compression enables future per-PT_LOAD work
|
* ELF: two-step de-compression enables future per-PT_LOAD work
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ Copyright (C) 2000-2025 John F. Reiser
|
|||||||
|
|
||||||
UPX is distributed with full source code under the terms of the
|
UPX is distributed with full source code under the terms of the
|
||||||
GNU General Public License v2+; either under the pure GPLv2+ (see
|
GNU General Public License v2+; either under the pure GPLv2+ (see
|
||||||
the file COPYING), or (at your option) under the GPLv+2 with special
|
the file COPYING), or (at your option) under the GPLv2+ with special
|
||||||
exceptions and restrictions granting the free usage for all binaries
|
exceptions and restrictions granting the free usage for all binaries
|
||||||
including commercial programs (see the file LICENSE).
|
including commercial programs (see the file LICENSE).
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
.\" ========================================================================
|
.\" ========================================================================
|
||||||
.\"
|
.\"
|
||||||
.IX Title "UPX 1"
|
.IX Title "UPX 1"
|
||||||
.TH UPX 1 2025-02-20 "upx 5.0.0" " "
|
.TH UPX 1 2025-07-21 "upx 5.0.3" " "
|
||||||
.\" 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
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ function(upx_print_info)
|
|||||||
upx_print_var(CMAKE_${lang}_COMPILER_ID)
|
upx_print_var(CMAKE_${lang}_COMPILER_ID)
|
||||||
upx_print_var(CMAKE_${lang}_SIMULATE_ID)
|
upx_print_var(CMAKE_${lang}_SIMULATE_ID)
|
||||||
upx_print_var(CMAKE_${lang}_COMPILER_VERSION)
|
upx_print_var(CMAKE_${lang}_COMPILER_VERSION)
|
||||||
upx_print_var(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT )
|
upx_print_var(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT)
|
||||||
upx_print_var(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID)
|
upx_print_var(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID)
|
||||||
upx_print_var(CMAKE_${lang}_PLATFORM_ID)
|
upx_print_var(CMAKE_${lang}_PLATFORM_ID)
|
||||||
upx_print_var(CMAKE_${lang}_COMPILER_ABI)
|
upx_print_var(CMAKE_${lang}_COMPILER_ABI)
|
||||||
@@ -56,7 +56,7 @@ function(upx_print_info)
|
|||||||
upx_print_var(UPX_CONFIG_SANITIZE_FLAGS_DEBUG UPX_CONFIG_SANITIZE_FLAGS_RELEASE)
|
upx_print_var(UPX_CONFIG_SANITIZE_FLAGS_DEBUG UPX_CONFIG_SANITIZE_FLAGS_RELEASE)
|
||||||
|
|
||||||
# shortcuts
|
# shortcuts
|
||||||
upx_print_var(APPLE CLANG CYGWIN GNU_FRONTEND GNUC MINGW MSVC MSVC_FRONTEND MSVC_IDE MSVC_SIMULATE MSVC_TOOLSET_VERSION MSVC_VERSION MSYS UNIX WIN32 WIN64)
|
upx_print_var(AIX APPLE CLANG CYGWIN GNU_FRONTEND GNUC MINGW MSVC MSVC_FRONTEND MSVC_IDE MSVC_SIMULATE MSVC_TOOLSET_VERSION MSVC_VERSION MSYS UNIX WIN32 WIN64)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# vim:set ft=cmake ts=4 sw=4 tw=0 et:
|
# vim:set ft=cmake ts=4 sw=4 tw=0 et:
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
# is supported by UPX!
|
# is supported by UPX!
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
|
|
||||||
|
function(upx_self_pack_test)
|
||||||
|
|
||||||
set(emu "")
|
set(emu "")
|
||||||
if(DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
|
if(DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
|
||||||
set(emu "${CMAKE_CROSSCOMPILING_EMULATOR}")
|
set(emu "${CMAKE_CROSSCOMPILING_EMULATOR}")
|
||||||
@@ -114,35 +116,42 @@ 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)
|
||||||
set(s "${method}-${level}")
|
foreach(small IN ITEMS normal small)
|
||||||
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(s "${method}-${level}")
|
||||||
upx_add_test(upx-list-${s} upx -l upx-packed-${s}${exe})
|
set(ss "")
|
||||||
upx_add_test(upx-fileinfo-${s} upx --fileinfo upx-packed-${s}${exe})
|
if(small MATCHES "small")
|
||||||
upx_add_test(upx-test-${s} upx -t upx-packed-${s}${exe})
|
set(s "${method}-${level}-${small}")
|
||||||
upx_add_test(upx-unpack-${s} upx -d upx-packed-${s}${exe} ${fo} -o upx-unpacked-${s}${exe})
|
set(ss "--small")
|
||||||
upx_add_test(upx-compare-${s} "${CMAKE_COMMAND}" -E compare_files upx-unpacked${exe} upx-unpacked-${s}${exe})
|
endif()
|
||||||
upx_test_depends(upx-list-${s} upx-self-pack-${s})
|
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_test_depends(upx-fileinfo-${s} upx-self-pack-${s})
|
upx_add_test(upx-list-${s} upx -l upx-packed-${s}${exe})
|
||||||
upx_test_depends(upx-test-${s} upx-self-pack-${s})
|
upx_add_test(upx-fileinfo-${s} upx --fileinfo upx-packed-${s}${exe})
|
||||||
upx_test_depends(upx-unpack-${s} upx-self-pack-${s})
|
upx_add_test(upx-test-${s} upx -t upx-packed-${s}${exe})
|
||||||
upx_test_depends(upx-compare-${s} "upx-unpack;upx-unpack-${s}")
|
upx_add_test(upx-unpack-${s} upx -d upx-packed-${s}${exe} ${fo} -o upx-unpacked-${s}${exe})
|
||||||
if(method MATCHES "lzma")
|
upx_add_test(upx-compare-${s} "${CMAKE_COMMAND}" -E compare_files upx-unpacked${exe} upx-unpacked-${s}${exe})
|
||||||
set_tests_properties(upx-self-pack-${s} PROPERTIES COST "3${level}")
|
upx_test_depends(upx-list-${s} upx-self-pack-${s})
|
||||||
else()
|
upx_test_depends(upx-fileinfo-${s} upx-self-pack-${s})
|
||||||
set_tests_properties(upx-self-pack-${s} PROPERTIES COST "2${level}")
|
upx_test_depends(upx-test-${s} upx-self-pack-${s})
|
||||||
endif()
|
upx_test_depends(upx-unpack-${s} upx-self-pack-${s})
|
||||||
if(NOT UPX_CONFIG_DISABLE_RUN_PACKED_TEST)
|
upx_test_depends(upx-compare-${s} "upx-unpack;upx-unpack-${s}")
|
||||||
upx_add_test(upx-run-packed-${s} ${emu} ./upx-packed-${s}${exe} --version-short)
|
if(method MATCHES "lzma")
|
||||||
upx_test_depends(upx-run-packed-${s} upx-self-pack-${s})
|
set_tests_properties(upx-self-pack-${s} PROPERTIES COST "3${level}")
|
||||||
endif()
|
else()
|
||||||
|
set_tests_properties(upx-self-pack-${s} PROPERTIES COST "2${level}")
|
||||||
|
endif()
|
||||||
|
if(NOT UPX_CONFIG_DISABLE_RUN_PACKED_TEST)
|
||||||
|
set(i 0)
|
||||||
|
while(${i} LESS 20)
|
||||||
|
math(EXPR i "${i} + 1")
|
||||||
|
upx_add_test(upx-run-packed-${s}-${i} ${emu} ./upx-packed-${s}${exe} --version-short)
|
||||||
|
upx_test_depends(upx-run-packed-${s}-${i} upx-self-pack-${s})
|
||||||
|
endwhile()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
endforeach()
|
endforeach()
|
||||||
endforeach()
|
endforeach()
|
||||||
endif() # UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS
|
endif() # UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS
|
||||||
|
|
||||||
# clean up
|
endfunction()
|
||||||
set(emu "")
|
|
||||||
set(exe "")
|
|
||||||
set(upx_self_exe "")
|
|
||||||
set(fo "")
|
|
||||||
|
|
||||||
# vim:set ft=cmake ts=4 sw=4 tw=0 et:
|
# vim:set ft=cmake ts=4 sw=4 tw=0 et:
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
#
|
||||||
|
# UPX "CMake" build file; see https://cmake.org/
|
||||||
|
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
|
||||||
|
#
|
||||||
|
|
||||||
|
if(NOT DEFINED USE_STRICT_DEFAULTS)
|
||||||
|
# use strict config defaults for Git developer builds
|
||||||
|
set(USE_STRICT_DEFAULTS TRUE CACHE INTERNAL "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# vim:set ft=cmake ts=4 sw=4 tw=0 et:
|
||||||
@@ -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)
|
||||||
@@ -102,6 +109,14 @@ build/extra/clang-std-cxx23/%: export CXX = clang++ -std=gnu++2b
|
|||||||
build/extra/clang-std-cxx23/%: export UPX_CONFIG_DISABLE_C_STANDARD = ON
|
build/extra/clang-std-cxx23/%: export UPX_CONFIG_DISABLE_C_STANDARD = ON
|
||||||
build/extra/clang-std-cxx23/%: export UPX_CONFIG_DISABLE_CXX_STANDARD = ON
|
build/extra/clang-std-cxx23/%: export UPX_CONFIG_DISABLE_CXX_STANDARD = ON
|
||||||
|
|
||||||
|
# force building with clang/clang++ C++26 (and C23)
|
||||||
|
build/extra/clang-std-cxx26/debug: PHONY; $(call run_config_and_build,$@,Debug)
|
||||||
|
build/extra/clang-std-cxx26/release: PHONY; $(call run_config_and_build,$@,Release)
|
||||||
|
build/extra/clang-std-cxx26/%: export CC = clang -std=gnu2x -Wno-constant-logical-operand
|
||||||
|
build/extra/clang-std-cxx26/%: export CXX = clang++ -std=gnu++2c
|
||||||
|
build/extra/clang-std-cxx26/%: export UPX_CONFIG_DISABLE_C_STANDARD = ON
|
||||||
|
build/extra/clang-std-cxx26/%: export UPX_CONFIG_DISABLE_CXX_STANDARD = ON
|
||||||
|
|
||||||
# force building with gcc/g++
|
# force building with gcc/g++
|
||||||
build/extra/gcc/debug: PHONY; $(call run_config_and_build,$@,Debug)
|
build/extra/gcc/debug: PHONY; $(call run_config_and_build,$@,Debug)
|
||||||
build/extra/gcc/release: PHONY; $(call run_config_and_build,$@,Release)
|
build/extra/gcc/release: PHONY; $(call run_config_and_build,$@,Release)
|
||||||
@@ -132,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)
|
||||||
@@ -169,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
|
||||||
@@ -242,7 +264,7 @@ build/analyze/clang-analyzer/%: export CCC_CXX ?= clang++
|
|||||||
# run clang-tidy: uses file compile_commands.json from an existing clang build;
|
# run clang-tidy: uses file compile_commands.json from an existing clang build;
|
||||||
# does not create any actual files, so purely PHONY
|
# does not create any actual files, so purely PHONY
|
||||||
CLANG_TIDY_BUILD_BASE = build/extra/clang
|
CLANG_TIDY_BUILD_BASE = build/extra/clang
|
||||||
RUN_CLANG_TIDY = time python3 ./misc/analyze/clang-tidy/run-clang-tidy.py -p $<
|
RUN_CLANG_TIDY = time python3 ./misc/analyze/clang-tidy/run-clang-tidy.py -p "$<"
|
||||||
RUN_CLANG_TIDY_WERROR = $(RUN_CLANG_TIDY) '-warnings-as-errors=*'
|
RUN_CLANG_TIDY_WERROR = $(RUN_CLANG_TIDY) '-warnings-as-errors=*'
|
||||||
build/analyze/clang-tidy-upx/debug build/analyze/clang-tidy-upx/release: $$(CLANG_TIDY_BUILD_BASE)/$$(notdir $$@) PHONY
|
build/analyze/clang-tidy-upx/debug build/analyze/clang-tidy-upx/release: $$(CLANG_TIDY_BUILD_BASE)/$$(notdir $$@) PHONY
|
||||||
$(RUN_CLANG_TIDY_WERROR) -config-file ./.clang-tidy '/src/.*\.cpp'
|
$(RUN_CLANG_TIDY_WERROR) -config-file ./.clang-tidy '/src/.*\.cpp'
|
||||||
@@ -311,6 +333,7 @@ $(call check_undefined,__add_cmake_config)
|
|||||||
__add_cmake_config = $(and $($1),-D$1="$($1)")
|
__add_cmake_config = $(and $($1),-D$1="$($1)")
|
||||||
|
|
||||||
# pass common CMake settings
|
# pass common CMake settings
|
||||||
|
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_INSTALL_PREFIX)
|
||||||
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_VERBOSE_MAKEFILE)
|
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_VERBOSE_MAKEFILE)
|
||||||
# pass common CMake toolchain settings
|
# pass common CMake toolchain settings
|
||||||
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_ADDR2LINE)
|
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_ADDR2LINE)
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
From 741b9d2f24b5796fc499a411f632820ab4f889e5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Markus F.X.J. Oberhumer" <markus@oberhumer.com>
|
||||||
|
Date: Wed, 9 Apr 2025 20:00:24 +0200
|
||||||
|
Subject: [PATCH] x
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/libcxx/include/__config | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/lib/libcxx/include/__config b/lib/libcxx/include/__config
|
||||||
|
index fec323f..a16d145 100644
|
||||||
|
--- a/lib/libcxx/include/__config
|
||||||
|
+++ b/lib/libcxx/include/__config
|
||||||
|
@@ -637,9 +637,11 @@ typedef __char32_t char32_t;
|
||||||
|
# define _DECLARE_C99_LDBL_MATH 1
|
||||||
|
# endif
|
||||||
|
|
||||||
|
+# if defined(_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION)
|
||||||
|
+# define _LIBCPP_HAS_LIBRARY_ALIGNED_ALLOCATION 0
|
||||||
|
// If we are getting operator new from the MSVC CRT, then allocation overloads
|
||||||
|
// for align_val_t were added in 19.12, aka VS 2017 version 15.3.
|
||||||
|
-# if defined(_LIBCPP_MSVCRT) && defined(_MSC_VER) && _MSC_VER < 1912
|
||||||
|
+# elif defined(_LIBCPP_MSVCRT) && defined(_MSC_VER) && _MSC_VER < 1912
|
||||||
|
# define _LIBCPP_HAS_LIBRARY_ALIGNED_ALLOCATION 0
|
||||||
|
# elif defined(_LIBCPP_ABI_VCRUNTIME) && !defined(__cpp_aligned_new)
|
||||||
|
// We're deferring to Microsoft's STL to provide aligned new et al. We don't
|
||||||
|
--
|
||||||
|
2.49.0
|
||||||
|
|
||||||
@@ -8,15 +8,15 @@ ENV LANG=C.UTF-8
|
|||||||
RUN dpkg --add-architecture i386 \
|
RUN dpkg --add-architecture i386 \
|
||||||
&& apt-get update && apt-get upgrade -y \
|
&& apt-get update && apt-get upgrade -y \
|
||||||
&& apt-get install -y --no-install-recommends \
|
&& apt-get install -y --no-install-recommends \
|
||||||
aria2 bash bash-completion ca-certificates curl git less libmpc3 \
|
aria2 bash bash-completion ca-certificates coreutils curl diffutils findutils git grep gzip \
|
||||||
make ncurses-term perl-base tar time wget xz-utils \
|
less libmpc3 make ncurses-term perl-base sed sudo tar time util-linux wget xz-utils \
|
||||||
libc6:i386 zlib1g:i386 \
|
libc6:i386 zlib1g:i386 \
|
||||||
# the following packages are not required for rebuilding the stubs, but
|
# the following packages are not required for rebuilding the stubs, but
|
||||||
# they do make the image *much* more convenient and also allow building
|
# they do make the image *much* more convenient and also allow building
|
||||||
# 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 dmidecode 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 just 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" \
|
&& 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 5.0.2" \
|
||||||
&& 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
+145
-135
@@ -2,19 +2,19 @@ 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.1 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
|
||||||
ii bash 5.2.21-2ubuntu4 amd64 GNU Bourne Again SHell
|
ii bash 5.2.21-2ubuntu4 amd64 GNU Bourne Again SHell
|
||||||
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.3 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.3 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.3 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.1 amd64 extra utilities from 4.4BSD-Lite
|
ii bsdextrautils 2.39.3-9ubuntu6.3 amd64 extra utilities from 4.4BSD-Lite
|
||||||
ii bsdutils 1:2.39.3-9ubuntu6.1 amd64 basic utilities from 4.4BSD-Lite
|
ii bsdutils 1:2.39.3-9ubuntu6.3 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
|
||||||
ii bubblewrap 0.9.0-1ubuntu0.1 amd64 utility for unprivileged chroot and namespace manipulation
|
ii bubblewrap 0.9.0-1ubuntu0.1 amd64 utility for unprivileged chroot and namespace manipulation
|
||||||
ii busybox 1:1.36.1-6ubuntu3.1 amd64 Tiny utilities for small and embedded systems
|
ii busybox 1:1.36.1-6ubuntu3.1 amd64 Tiny utilities for small and embedded systems
|
||||||
@@ -38,10 +38,11 @@ ii debconf 1.5.86ubuntu1 all
|
|||||||
ii debianutils 5.17build1 amd64 Miscellaneous utilities specific to Debian
|
ii debianutils 5.17build1 amd64 Miscellaneous utilities specific to Debian
|
||||||
ii diffstat 1.66-1build1 amd64 produces graph of changes introduced by a diff file
|
ii diffstat 1.66-1build1 amd64 produces graph of changes introduced by a diff file
|
||||||
ii diffutils 1:3.10-1build1 amd64 File comparison utilities
|
ii diffutils 1:3.10-1build1 amd64 File comparison utilities
|
||||||
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.3 amd64 Utility to set directory specific environment variables
|
||||||
|
ii dmidecode 3.5-3ubuntu0.1 amd64 SMBIOS/DMI table decoder
|
||||||
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 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
|
||||||
@@ -49,7 +50,7 @@ ii file 1:5.45-3build1 amd64
|
|||||||
ii findutils 4.9.0-5build1 amd64 utilities for finding files--find, xargs
|
ii findutils 4.9.0-5build1 amd64 utilities for finding files--find, xargs
|
||||||
ii fish 3.7.0-1 amd64 friendly interactive shell
|
ii fish 3.7.0-1 amd64 friendly interactive shell
|
||||||
ii fish-common 3.7.0-1 all friendly interactive shell (architecture-independent files)
|
ii fish-common 3.7.0-1 all friendly interactive shell (architecture-independent files)
|
||||||
ii fzf 0.44.1-1ubuntu0.2 amd64 general-purpose command-line fuzzy finder
|
ii fzf 0.44.1-1ubuntu0.3 amd64 general-purpose command-line fuzzy finder
|
||||||
ii g++ 4:13.2.0-7ubuntu1 amd64 GNU C++ compiler
|
ii g++ 4:13.2.0-7ubuntu1 amd64 GNU C++ compiler
|
||||||
ii g++-13 13.3.0-6ubuntu2~24.04 amd64 GNU C++ compiler
|
ii g++-13 13.3.0-6ubuntu2~24.04 amd64 GNU C++ compiler
|
||||||
ii g++-13-multilib 13.3.0-6ubuntu2~24.04 amd64 GNU C++ compiler (multilib support)
|
ii g++-13-multilib 13.3.0-6ubuntu2~24.04 amd64 GNU C++ compiler (multilib support)
|
||||||
@@ -67,19 +68,21 @@ 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 git 1:2.43.0-1ubuntu7.2 amd64 fast, scalable, distributed revision control system
|
ii gh 2.45.0-1ubuntu0.3 amd64 GitHub CLI, GitHub’s official command line tool
|
||||||
ii git-man 1:2.43.0-1ubuntu7.2 all fast, scalable, distributed revision control system (manual pages)
|
ii git 1:2.43.0-1ubuntu7.3 amd64 fast, scalable, distributed revision control system
|
||||||
ii gojq 0.12.13-1ubuntu0.24.04.2 amd64 pure Go implementation of jq (program)
|
ii git-man 1:2.43.0-1ubuntu7.3 all fast, scalable, distributed revision control system (manual pages)
|
||||||
ii gpgv 2.4.4-2ubuntu17 amd64 GNU privacy guard - signature verification tool
|
ii gojq 0.12.13-1ubuntu0.24.04.3 amd64 pure Go implementation of jq (program)
|
||||||
|
ii gpgv 2.4.4-2ubuntu17.3 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.1 amd64 GNU compression utilities
|
||||||
ii hostname 3.23+nmu2ubuntu2 amd64 utility to set/show the host name or domain name
|
ii hostname 3.23+nmu2ubuntu2 amd64 utility to set/show the host name or domain name
|
||||||
ii ht 2.1.0+repack1-5 amd64 Viewer/editor/analyser (mostly) for executables
|
ii ht 2.1.0+repack1-5 amd64 Viewer/editor/analyser (mostly) for executables
|
||||||
ii htop 3.3.0-4build1 amd64 interactive processes viewer
|
ii htop 3.3.0-4build1 amd64 interactive processes viewer
|
||||||
ii hyperfine 1.18.0-2build1 amd64 Command-line benchmarking tool
|
ii hyperfine 1.18.0-2build1 amd64 Command-line benchmarking tool
|
||||||
ii init-system-helpers 1.66ubuntu1 all helper tools for all init systems
|
ii init-system-helpers 1.66ubuntu1 all helper tools for all init systems
|
||||||
ii jq 1.7.1-3build1 amd64 lightweight and flexible command-line JSON processor
|
ii jq 1.7.1-3ubuntu0.24.04.1 amd64 lightweight and flexible command-line JSON processor
|
||||||
|
ii just 1.21.0-1 amd64 Save and run project-specific commands
|
||||||
ii ksh 20240113 all transitional package
|
ii ksh 20240113 all transitional package
|
||||||
ii ksh93u+m 1.0.8-1 amd64 AT&T KornShell
|
ii ksh93u+m 1.0.8-1 amd64 AT&T KornShell
|
||||||
ii less 590-2ubuntu2.1 amd64 pager program similar to more
|
ii less 590-2ubuntu2.1 amd64 pager program similar to more
|
||||||
@@ -95,52 +98,53 @@ 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 libapparmor1:amd64 4.0.1really4.0.1-0ubuntu0.24.04.4 amd64 changehat AppArmor library
|
||||||
ii libarchive13t64:amd64 3.7.2-2ubuntu0.3 amd64 Multi-format archive and compression library (shared library)
|
ii libapt-pkg6.0t64:amd64 2.8.3 amd64 package management runtime library
|
||||||
|
ii libarchive13t64:amd64 3.7.2-2ubuntu0.5 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 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 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.3 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.1 amd64 block device ID library
|
ii libblkid1:amd64 2.39.3-9ubuntu6.3 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 amd64 utility functions from BSD systems - shared library
|
ii libbsd0:amd64 0.12.1-1build1.1 amd64 utility functions from BSD systems - shared library
|
||||||
ii libbz2-1.0:amd64 1.0.8-5.1build0.1 amd64 high-quality block-sorting file compressor library - runtime
|
ii libbz2-1.0:amd64 1.0.8-5.1build0.1 amd64 high-quality block-sorting file compressor library - runtime
|
||||||
ii libbzip3-0:amd64 1.4.0-1 amd64 better, faster and stronger spiritual successor to bzip2 - runtime
|
ii libbzip3-0:amd64 1.4.0-1 amd64 better, faster and stronger spiritual successor to bzip2 - runtime
|
||||||
ii libc-bin 2.39-0ubuntu8.3 amd64 GNU C Library: Binaries
|
ii libc-bin 2.39-0ubuntu8.5 amd64 GNU C Library: Binaries
|
||||||
ii libc-dev-bin 2.39-0ubuntu8.3 amd64 GNU C Library: Development binaries
|
ii libc-dev-bin 2.39-0ubuntu8.5 amd64 GNU C Library: Development binaries
|
||||||
ii libc6-dbg:amd64 2.39-0ubuntu8.3 amd64 GNU C Library: detached debugging symbols
|
ii libc6-dbg:amd64 2.39-0ubuntu8.5 amd64 GNU C Library: detached debugging symbols
|
||||||
ii libc6-dev-i386 2.39-0ubuntu8.3 amd64 GNU C Library: 32-bit development libraries for AMD64
|
ii libc6-dev-i386 2.39-0ubuntu8.5 amd64 GNU C Library: 32-bit development libraries for AMD64
|
||||||
ii libc6-dev-x32 2.39-0ubuntu8.3 amd64 GNU C Library: X32 ABI Development Libraries for AMD64
|
ii libc6-dev-x32 2.39-0ubuntu8.5 amd64 GNU C Library: X32 ABI Development Libraries for AMD64
|
||||||
ii libc6-dev:amd64 2.39-0ubuntu8.3 amd64 GNU C Library: Development Libraries and Header Files
|
ii libc6-dev:amd64 2.39-0ubuntu8.5 amd64 GNU C Library: Development Libraries and Header Files
|
||||||
ii libc6-i386 2.39-0ubuntu8.3 amd64 GNU C Library: 32-bit shared libraries for AMD64
|
ii libc6-i386 2.39-0ubuntu8.5 amd64 GNU C Library: 32-bit shared libraries for AMD64
|
||||||
ii libc6-x32 2.39-0ubuntu8.3 amd64 GNU C Library: X32 ABI Shared libraries for AMD64
|
ii libc6-x32 2.39-0ubuntu8.5 amd64 GNU C Library: X32 ABI Shared libraries for AMD64
|
||||||
ii libc6:amd64 2.39-0ubuntu8.3 amd64 GNU C Library: Shared libraries
|
ii libc6:amd64 2.39-0ubuntu8.5 amd64 GNU C Library: Shared libraries
|
||||||
ii libc6:i386 2.39-0ubuntu8.3 i386 GNU C Library: Shared libraries
|
ii libc6:i386 2.39-0ubuntu8.5 i386 GNU C Library: Shared libraries
|
||||||
ii libcap-ng0:amd64 0.8.4-2build2 amd64 alternate POSIX capabilities library
|
ii libcap-ng0:amd64 0.8.4-2build2 amd64 alternate POSIX capabilities library
|
||||||
ii libcap2:amd64 1:2.66-5ubuntu2 amd64 POSIX 1003.1e capabilities (library)
|
ii libcap2:amd64 1:2.66-5ubuntu2.2 amd64 POSIX 1003.1e capabilities (library)
|
||||||
ii libcares2:amd64 1.27.0-1.0ubuntu1 amd64 asynchronous name resolver
|
ii libcares2:amd64 1.27.0-1.0ubuntu1 amd64 asynchronous name resolver
|
||||||
ii libcc1-0:amd64 14.2.0-4ubuntu2~24.04 amd64 GCC cc1 plugin for GDB
|
ii libcc1-0:amd64 14.2.0-4ubuntu2~24.04 amd64 GCC cc1 plugin for GDB
|
||||||
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.3 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.3 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 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 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 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 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,71 +154,71 @@ 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 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.2 amd64 GNU TLS library - main runtime library
|
ii libgnutls30t64:amd64 3.8.3-1.1ubuntu3.4 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 amd64 GnuPG development runtime library
|
ii libgpg-error0:amd64 1.47-3build2.1 amd64 GnuPG development runtime library
|
||||||
ii libgprofng0:amd64 2.42-4ubuntu2.3 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.2 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
|
||||||
ii libhwasan0:amd64 14.2.0-4ubuntu2~24.04 amd64 AddressSanitizer -- a fast memory error detector
|
ii libhwasan0:amd64 14.2.0-4ubuntu2~24.04 amd64 AddressSanitizer -- a fast memory error detector
|
||||||
ii libicu74:amd64 74.2-1ubuntu3.1 amd64 International Components for Unicode
|
ii libicu74:amd64 74.2-1ubuntu3.1 amd64 International Components for Unicode
|
||||||
ii libidn2-0:amd64 2.3.7-2build1 amd64 Internationalized domain names (IDNA2008/TR46) library
|
ii libidn2-0:amd64 2.3.7-2build1.1 amd64 Internationalized domain names (IDNA2008/TR46) library
|
||||||
ii libio-pty-perl 1:1.20-1build2 amd64 Perl module for pseudo tty IO
|
ii libio-pty-perl 1:1.20-1build2 amd64 Perl module for pseudo tty IO
|
||||||
ii libipc-run-perl 20231003.0-1 all Perl module for running processes
|
ii libipc-run-perl 20231003.0-1 all Perl module for running processes
|
||||||
ii libipt2 2.0.6-1build1 amd64 Intel Processor Trace Decoder Library
|
ii libipt2 2.0.6-1build1 amd64 Intel Processor Trace Decoder Library
|
||||||
ii libisl23:amd64 0.26-3build1 amd64 manipulating sets and relations of integer points bounded by linear constraints
|
ii libisl23:amd64 0.26-3build1.1 amd64 manipulating sets and relations of integer points bounded by linear constraints
|
||||||
ii libitm1:amd64 14.2.0-4ubuntu2~24.04 amd64 GNU Transactional Memory Library
|
ii libitm1:amd64 14.2.0-4ubuntu2~24.04 amd64 GNU Transactional Memory Library
|
||||||
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-3ubuntu0.24.04.1 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.2 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.2 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.2 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.1 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
|
||||||
ii libmd0:amd64 1.1.0-2build1 amd64 message digest functions from BSD systems - shared library
|
ii libmd0:amd64 1.1.0-2build1.1 amd64 message digest functions from BSD systems - shared library
|
||||||
ii libmount1:amd64 2.39.3-9ubuntu6.1 amd64 device mounting library
|
ii libmount1:amd64 2.39.3-9ubuntu6.3 amd64 device mounting library
|
||||||
ii libmpc3:amd64 1.3.1-1build1 amd64 multiple precision complex floating-point library
|
ii libmpc3:amd64 1.3.1-1build1.1 amd64 multiple precision complex floating-point library
|
||||||
ii libmpfr6:amd64 4.2.1-1build1 amd64 multiple precision floating-point computation
|
ii libmpfr6:amd64 4.2.1-1build1.1 amd64 multiple precision floating-point computation
|
||||||
ii libmsgpackc2:amd64 4.0.0-3build1 amd64 binary-based efficient object serialization library
|
ii libmsgpackc2:amd64 4.0.0-3build1 amd64 binary-based efficient object serialization library
|
||||||
ii libmspack0t64:amd64 0.11-1.1build1 amd64 library for Microsoft compression formats (shared library)
|
ii libmspack0t64:amd64 0.11-1.1build1 amd64 library for Microsoft compression formats (shared library)
|
||||||
ii libncurses6:amd64 6.4+20240113-1ubuntu2 amd64 shared libraries for terminal handling
|
ii libncurses6:amd64 6.4+20240113-1ubuntu2 amd64 shared libraries for terminal handling
|
||||||
ii libncursesw6:amd64 6.4+20240113-1ubuntu2 amd64 shared libraries for terminal handling (wide character support)
|
ii libncursesw6:amd64 6.4+20240113-1ubuntu2 amd64 shared libraries for terminal handling (wide character support)
|
||||||
ii libnettle8t64:amd64 3.9.1-2.2build1.1 amd64 low level cryptographic library (symmetric and one-way cryptos)
|
ii libnettle8t64:amd64 3.9.1-2.2build1.1 amd64 low level cryptographic library (symmetric and one-way cryptos)
|
||||||
ii libnghttp2-14:amd64 1.59.0-1ubuntu0.1 amd64 library implementing HTTP/2 protocol (shared library)
|
ii libnghttp2-14:amd64 1.59.0-1ubuntu0.2 amd64 library implementing HTTP/2 protocol (shared library)
|
||||||
ii libnl-3-200:amd64 3.7.0-0.3build1 amd64 library for dealing with netlink sockets
|
ii libnl-3-200:amd64 3.7.0-0.3build1.1 amd64 library for dealing with netlink sockets
|
||||||
ii libnl-genl-3-200:amd64 3.7.0-0.3build1 amd64 library for dealing with netlink sockets - generic netlink
|
ii libnl-genl-3-200:amd64 3.7.0-0.3build1.1 amd64 library for dealing with netlink sockets - generic netlink
|
||||||
ii libnpth0t64:amd64 1.6-3.1build1 amd64 replacement for GNU Pth using system threads
|
ii libnpth0t64:amd64 1.6-3.1build1 amd64 replacement for GNU Pth using system threads
|
||||||
ii libonig5:amd64 6.9.9-1build1 amd64 regular expressions library
|
ii libonig5:amd64 6.9.9-1build1 amd64 regular expressions library
|
||||||
ii libp11-kit0:amd64 0.25.3-4ubuntu2.1 amd64 library for loading and coordinating access to PKCS#11 modules - runtime
|
ii libp11-kit0:amd64 0.25.3-4ubuntu2.1 amd64 library for loading and coordinating access to PKCS#11 modules - runtime
|
||||||
ii libpam-modules-bin 1.5.3-5ubuntu5.1 amd64 Pluggable Authentication Modules for PAM - helper binaries
|
ii libpam-modules-bin 1.5.3-5ubuntu5.4 amd64 Pluggable Authentication Modules for PAM - helper binaries
|
||||||
ii libpam-modules:amd64 1.5.3-5ubuntu5.1 amd64 Pluggable Authentication Modules for PAM
|
ii libpam-modules:amd64 1.5.3-5ubuntu5.4 amd64 Pluggable Authentication Modules for PAM
|
||||||
ii libpam-runtime 1.5.3-5ubuntu5.1 all Runtime support for the PAM library
|
ii libpam-runtime 1.5.3-5ubuntu5.4 all Runtime support for the PAM library
|
||||||
ii libpam0g:amd64 1.5.3-5ubuntu5.1 amd64 Pluggable Authentication Modules library
|
ii libpam0g:amd64 1.5.3-5ubuntu5.4 amd64 Pluggable Authentication Modules library
|
||||||
ii libpcre2-32-0:amd64 10.42-4ubuntu2 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 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 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
|
||||||
ii libpsl5t64:amd64 0.21.2-1.1build1 amd64 Library for Public Suffix List (shared libraries)
|
ii libpsl5t64:amd64 0.21.2-1.1build1 amd64 Library for Public Suffix List (shared libraries)
|
||||||
ii libpython2.7-minimal:amd64 2.7.18-8+deb11u1 amd64 Minimal subset of the Python language (version 2.7)
|
ii libpython2.7-minimal:amd64 2.7.18-8+deb11u1 amd64 Minimal subset of the Python language (version 2.7)
|
||||||
ii libpython3-stdlib:amd64 3.12.3-0ubuntu2 amd64 interactive high-level object-oriented language (default python3 version)
|
ii libpython3-stdlib:amd64 3.12.3-0ubuntu2 amd64 interactive high-level object-oriented language (default python3 version)
|
||||||
ii libpython3.12-minimal:amd64 3.12.3-1ubuntu0.3 amd64 Minimal subset of the Python language (version 3.12)
|
ii libpython3.12-minimal:amd64 3.12.3-1ubuntu0.7 amd64 Minimal subset of the Python language (version 3.12)
|
||||||
ii libpython3.12-stdlib:amd64 3.12.3-1ubuntu0.3 amd64 Interactive high-level object-oriented language (standard library, version 3.12)
|
ii libpython3.12-stdlib:amd64 3.12.3-1ubuntu0.7 amd64 Interactive high-level object-oriented language (standard library, version 3.12)
|
||||||
ii libpython3.12t64:amd64 3.12.3-1ubuntu0.3 amd64 Shared Python runtime library (version 3.12)
|
ii libpython3.12t64:amd64 3.12.3-1ubuntu0.7 amd64 Shared Python runtime library (version 3.12)
|
||||||
ii libquadmath0:amd64 14.2.0-4ubuntu2~24.04 amd64 GCC Quad-Precision Math Library
|
ii libquadmath0:amd64 14.2.0-4ubuntu2~24.04 amd64 GCC Quad-Precision Math Library
|
||||||
ii libreadline8t64:amd64 8.2-4build1 amd64 GNU readline and history libraries, run-time libraries
|
ii libreadline8t64:amd64 8.2-4build1 amd64 GNU readline and history libraries, run-time libraries
|
||||||
ii librhash0:amd64 1.4.3-3build1 amd64 shared library for hash functions computing
|
ii librhash0:amd64 1.4.3-3build1 amd64 shared library for hash functions computing
|
||||||
@@ -222,27 +226,27 @@ ii librtmp1:amd64 2.4+20151223.gitfa8646d.1-2build7 amd64
|
|||||||
ii libsasl2-2:amd64 2.1.28+dfsg1-5ubuntu3.1 amd64 Cyrus SASL - authentication abstraction library
|
ii libsasl2-2:amd64 2.1.28+dfsg1-5ubuntu3.1 amd64 Cyrus SASL - authentication abstraction library
|
||||||
ii libsasl2-modules-db:amd64 2.1.28+dfsg1-5ubuntu3.1 amd64 Cyrus SASL - pluggable authentication modules (DB)
|
ii libsasl2-modules-db:amd64 2.1.28+dfsg1-5ubuntu3.1 amd64 Cyrus SASL - pluggable authentication modules (DB)
|
||||||
ii libseccomp2:amd64 2.5.5-1ubuntu3.1 amd64 high level interface to Linux seccomp filter
|
ii libseccomp2:amd64 2.5.5-1ubuntu3.1 amd64 high level interface to Linux seccomp filter
|
||||||
ii libselinux1:amd64 3.5-2ubuntu2 amd64 SELinux runtime shared libraries
|
ii libselinux1:amd64 3.5-2ubuntu2.1 amd64 SELinux runtime shared libraries
|
||||||
ii libsemanage-common 3.5-1build5 all Common files for SELinux policy management libraries
|
ii libsemanage-common 3.5-1build5 all Common files for SELinux policy management libraries
|
||||||
ii libsemanage2:amd64 3.5-1build5 amd64 SELinux policy management library
|
ii libsemanage2:amd64 3.5-1build5 amd64 SELinux policy management library
|
||||||
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.3 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.1 amd64 smart column output alignment library
|
ii libsmartcols1:amd64 2.39.3-9ubuntu6.3 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 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-2ubuntu0.1 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.4 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.4 amd64 systemd utility library
|
ii libsystemd0:amd64 255.4-1ubuntu8.10 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-3build1 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
|
||||||
ii libtime-duration-perl 1.21-2 all module for rounded or exact English expression of durations
|
ii libtime-duration-perl 1.21-2 all module for rounded or exact English expression of durations
|
||||||
ii libtimedate-perl 2.3300-2 all collection of modules to manipulate date/time information
|
ii libtimedate-perl 2.3300-2 all collection of modules to manipulate date/time information
|
||||||
@@ -251,13 +255,13 @@ 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.4 amd64 libudev shared library
|
ii libudev1:amd64 255.4-1ubuntu8.10 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 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 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
|
||||||
ii liburing2:amd64 2.5-1build1 amd64 Linux kernel io_uring access library - shared library
|
ii liburing2:amd64 2.5-1build1 amd64 Linux kernel io_uring access library - shared library
|
||||||
ii libutempter0:amd64 1.2.1-3build1 amd64 privileged helper for utmp/wtmp updates (runtime)
|
ii libutempter0:amd64 1.2.1-3build1 amd64 privileged helper for utmp/wtmp updates (runtime)
|
||||||
ii libuuid1:amd64 2.39.3-9ubuntu6.1 amd64 Universally Unique ID library
|
ii libuuid1:amd64 2.39.3-9ubuntu6.3 amd64 Universally Unique ID library
|
||||||
ii libuv1t64:amd64 1.48.0-1.1build1 amd64 asynchronous event notification library - runtime library
|
ii libuv1t64:amd64 1.48.0-1.1build1 amd64 asynchronous event notification library - runtime library
|
||||||
ii libvterm0:amd64 0.3.3-2build1 amd64 abstract terminal library
|
ii libvterm0:amd64 0.3.3-2build1 amd64 abstract terminal library
|
||||||
ii libwrap0:amd64 7.6.q-33 amd64 Wietse Venema's TCP wrappers library
|
ii libwrap0:amd64 7.6.q-33 amd64 Wietse Venema's TCP wrappers library
|
||||||
@@ -276,12 +280,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 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-51.52 amd64 Linux Kernel Headers for development
|
ii linux-libc-dev:amd64 6.8.0-64.67 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)
|
||||||
@@ -297,7 +301,7 @@ ii media-types 10.1.0 all
|
|||||||
ii minify 2.20.17-1 amd64 CLI implementation of the Go minify library package
|
ii minify 2.20.17-1 amd64 CLI implementation of the Go minify library package
|
||||||
ii mksh 59c-37 amd64 MirBSD Korn Shell
|
ii mksh 59c-37 amd64 MirBSD Korn Shell
|
||||||
ii moreutils 0.69-1 amd64 additional Unix utilities
|
ii moreutils 0.69-1 amd64 additional Unix utilities
|
||||||
ii mount 2.39.3-9ubuntu6.1 amd64 tools for mounting and manipulating filesystems
|
ii mount 2.39.3-9ubuntu6.3 amd64 tools for mounting and manipulating filesystems
|
||||||
ii musl:amd64 1.2.4-2 amd64 standard C library
|
ii musl:amd64 1.2.4-2 amd64 standard C library
|
||||||
ii ncurses-base 6.4+20240113-1ubuntu2 all basic terminal type definitions
|
ii ncurses-base 6.4+20240113-1ubuntu2 all basic terminal type definitions
|
||||||
ii ncurses-bin 6.4+20240113-1ubuntu2 amd64 terminal-related programs and man pages
|
ii ncurses-bin 6.4+20240113-1ubuntu2 amd64 terminal-related programs and man pages
|
||||||
@@ -306,7 +310,7 @@ ii neovim 0.9.5-6ubuntu2 amd64
|
|||||||
ii neovim-runtime 0.9.5-6ubuntu2 all heavily refactored vim fork (runtime files)
|
ii neovim-runtime 0.9.5-6ubuntu2 all heavily refactored vim fork (runtime files)
|
||||||
ii netbase 6.4 all Basic TCP/IP networking system
|
ii netbase 6.4 all Basic TCP/IP networking system
|
||||||
ii ninja-build 1.11.1-2 amd64 small build system closest in spirit to Make
|
ii ninja-build 1.11.1-2 amd64 small build system closest in spirit to Make
|
||||||
ii openssl 3.0.13-0ubuntu3.4 amd64 Secure Sockets Layer toolkit - cryptographic utility
|
ii openssl 3.0.13-0ubuntu3.5 amd64 Secure Sockets Layer toolkit - cryptographic utility
|
||||||
ii p7zip 16.02+transitional.1 all transitional package
|
ii p7zip 16.02+transitional.1 all transitional package
|
||||||
ii parallel 20231122+ds-1 all build and execute command lines from standard input in parallel
|
ii parallel 20231122+ds-1 all build and execute command lines from standard input in parallel
|
||||||
ii passwd 1:4.13+dfsg1-4ubuntu3.2 amd64 change and administer password and group data
|
ii passwd 1:4.13+dfsg1-4ubuntu3.2 amd64 change and administer password and group data
|
||||||
@@ -314,9 +318,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 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 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 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)
|
||||||
@@ -333,8 +337,8 @@ ii python3-tomli-w 1.0.0-2 all
|
|||||||
ii python3-xmltodict 0.13.0-1 all Makes working with XML feel like you are working with JSON (Python 3)
|
ii python3-xmltodict 0.13.0-1 all Makes working with XML feel like you are working with JSON (Python 3)
|
||||||
ii python3-yaml 6.0.1-2build2 amd64 YAML parser and emitter for Python3
|
ii python3-yaml 6.0.1-2build2 amd64 YAML parser and emitter for Python3
|
||||||
ii python3-zstd 1.5.5.1-1build1 amd64 python bindings to Yann Collet ZSTD compression library
|
ii python3-zstd 1.5.5.1-1build1 amd64 python bindings to Yann Collet ZSTD compression library
|
||||||
ii python3.12 3.12.3-1ubuntu0.3 amd64 Interactive high-level object-oriented language (version 3.12)
|
ii python3.12 3.12.3-1ubuntu0.7 amd64 Interactive high-level object-oriented language (version 3.12)
|
||||||
ii python3.12-minimal 3.12.3-1ubuntu0.3 amd64 Minimal subset of the Python language (version 3.12)
|
ii python3.12-minimal 3.12.3-1ubuntu0.7 amd64 Minimal subset of the Python language (version 3.12)
|
||||||
ii re2c 3.1-1build1 amd64 lexer generator for C, C++, Go and Rust
|
ii re2c 3.1-1build1 amd64 lexer generator for C, C++, Go and Rust
|
||||||
ii readline-common 8.2-4build1 all GNU readline and history libraries, common files
|
ii readline-common 8.2-4build1 all GNU readline and history libraries, common files
|
||||||
ii ripgrep 14.1.0-1 amd64 Recursively searches directories for a regex pattern
|
ii ripgrep 14.1.0-1 amd64 Recursively searches directories for a regex pattern
|
||||||
@@ -345,22 +349,23 @@ ii sed 4.9-2build1 amd64
|
|||||||
ii sensible-utils 0.0.22 all Utilities for sensible alternative selection
|
ii sensible-utils 0.0.22 all Utilities for sensible alternative selection
|
||||||
ii socat 1.8.0.0-4build3 amd64 multipurpose relay for bidirectional data transfer
|
ii socat 1.8.0.0-4build3 amd64 multipurpose relay for bidirectional data transfer
|
||||||
ii strace 6.8-0ubuntu2 amd64 System call tracer
|
ii strace 6.8-0ubuntu2 amd64 System call tracer
|
||||||
|
ii sudo 1.9.15p5-3ubuntu5.24.04.1 amd64 Provide limited super user privileges to specific users
|
||||||
ii sysstat 12.6.1-2 amd64 system performance tools for Linux
|
ii sysstat 12.6.1-2 amd64 system performance tools for Linux
|
||||||
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 2024a-3ubuntu1.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
|
||||||
ii unzip 6.0-28ubuntu4.1 amd64 De-archiver for .zip files
|
ii unzip 6.0-28ubuntu4.1 amd64 De-archiver for .zip files
|
||||||
ii util-linux 2.39.3-9ubuntu6.1 amd64 miscellaneous system utilities
|
ii util-linux 2.39.3-9ubuntu6.3 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.1 amd64 Archiver for .zip files
|
ii zip 3.0-13ubuntu0.2 amd64 Archiver for .zip files
|
||||||
ii zlib1g-dev:amd64 1:1.3.dfsg-3.1ubuntu2.1 amd64 compression library - development
|
ii zlib1g-dev:amd64 1:1.3.dfsg-3.1ubuntu2.1 amd64 compression library - development
|
||||||
ii zlib1g:amd64 1:1.3.dfsg-3.1ubuntu2.1 amd64 compression library - runtime
|
ii zlib1g:amd64 1:1.3.dfsg-3.1ubuntu2.1 amd64 compression library - runtime
|
||||||
ii zlib1g:i386 1:1.3.dfsg-3.1ubuntu2.1 i386 compression library - runtime
|
ii zlib1g:i386 1:1.3.dfsg-3.1ubuntu2.1 i386 compression library - runtime
|
||||||
@@ -373,9 +378,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:
|
||||||
971174 ===== TOTAL (367 packages)
|
1023146 ===== TOTAL (372 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
|
||||||
@@ -393,23 +399,23 @@ Packages sorted by Installed-Size:
|
|||||||
12321 fish-common all
|
12321 fish-common all
|
||||||
12297 libc6 i386
|
12297 libc6 i386
|
||||||
12004 libc6-x32 amd64
|
12004 libc6-x32 amd64
|
||||||
11993 libc6-i386 amd64
|
11989 libc6-i386 amd64
|
||||||
11549 binutils-x86-64-linux-gnu amd64
|
11549 binutils-x86-64-linux-gnu amd64
|
||||||
11176 libc6-dbg amd64
|
11172 libc6-dbg amd64
|
||||||
10984 cmake-data all
|
10984 cmake-data all
|
||||||
10791 libasan8 amd64
|
10791 libasan8 amd64
|
||||||
9704 libx32asan8 amd64
|
9704 libx32asan8 amd64
|
||||||
9539 lib32asan8 amd64
|
9539 lib32asan8 amd64
|
||||||
9017 libpython3.12-stdlib amd64
|
9022 libpython3.12-stdlib amd64
|
||||||
8905 libpython3.12t64 amd64
|
8924 libpython3.12t64 amd64
|
||||||
8902 libtsan2 amd64
|
8902 libtsan2 amd64
|
||||||
8335 libmagic-mgc amd64
|
8335 libmagic-mgc amd64
|
||||||
8296 lib32gcc-13-dev amd64
|
8296 lib32gcc-13-dev amd64
|
||||||
8119 libc6-dev-x32 amd64
|
8119 libc6-dev-x32 amd64
|
||||||
7924 python3.12-minimal amd64
|
7926 python3.12-minimal amd64
|
||||||
7913 perl-base amd64
|
7913 perl-base amd64
|
||||||
7531 libx32gcc-13-dev amd64
|
7531 libx32gcc-13-dev amd64
|
||||||
7332 linux-libc-dev amd64
|
7460 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
|
||||||
@@ -421,12 +427,12 @@ Packages sorted by Installed-Size:
|
|||||||
6158 7zip amd64
|
6158 7zip amd64
|
||||||
5219 bat amd64
|
5219 bat amd64
|
||||||
5210 ripgrep amd64
|
5210 ripgrep amd64
|
||||||
5178 libpython3.12-minimal amd64
|
5180 libpython3.12-minimal amd64
|
||||||
4897 libhwasan0 amd64
|
4897 libhwasan0 amd64
|
||||||
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
|
||||||
@@ -434,6 +440,8 @@ Packages sorted by Installed-Size:
|
|||||||
3738 fzf amd64
|
3738 fzf amd64
|
||||||
3721 groff-base amd64
|
3721 groff-base amd64
|
||||||
3605 python2.7-minimal amd64
|
3605 python2.7-minimal amd64
|
||||||
|
3568 just amd64
|
||||||
|
3468 sudo amd64
|
||||||
3443 fish amd64
|
3443 fish amd64
|
||||||
3441 re2c amd64
|
3441 re2c amd64
|
||||||
3438 util-linux amd64
|
3438 util-linux amd64
|
||||||
@@ -441,13 +449,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
|
||||||
@@ -455,12 +463,12 @@ 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
|
2162 git-man all
|
||||||
2103 strace amd64
|
2103 strace amd64
|
||||||
2078 libxml2 amd64
|
2079 libxml2 amd64
|
||||||
2032 libisl23 amd64
|
2032 libisl23 amd64
|
||||||
2009 universal-ctags amd64
|
2009 universal-ctags amd64
|
||||||
1980 aria2 amd64
|
1980 aria2 amd64
|
||||||
@@ -472,7 +480,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
|
||||||
@@ -483,7 +491,7 @@ Packages sorted by Installed-Size:
|
|||||||
1452 sysstat amd64
|
1452 sysstat amd64
|
||||||
1448 yash amd64
|
1448 yash amd64
|
||||||
1396 libgcrypt20 amd64
|
1396 libgcrypt20 amd64
|
||||||
1381 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
|
||||||
@@ -491,23 +499,23 @@ Packages sorted by Installed-Size:
|
|||||||
1237 libzstd-dev amd64
|
1237 libzstd-dev amd64
|
||||||
1237 libgit2-1.7 amd64
|
1237 libgit2-1.7 amd64
|
||||||
1186 libmpfr6 amd64
|
1186 libmpfr6 amd64
|
||||||
1145 libpam-modules amd64
|
1150 libpam-modules amd64
|
||||||
1142 eza amd64
|
1142 eza amd64
|
||||||
1136 zoxide amd64
|
1136 zoxide amd64
|
||||||
1025 libsystemd0 amd64
|
1026 libsystemd0 amd64
|
||||||
1014 libkrb5-3 amd64
|
1015 libkrb5-3 amd64
|
||||||
996 screen amd64
|
996 screen amd64
|
||||||
925 libcurl4t64 amd64
|
925 libcurl4t64 amd64
|
||||||
916 wget amd64
|
916 wget amd64
|
||||||
906 libcurl3t64-gnutls amd64
|
906 libcurl3t64-gnutls amd64
|
||||||
904 libarchive13t64 amd64
|
905 libarchive13t64 amd64
|
||||||
884 login amd64
|
884 login amd64
|
||||||
852 busybox amd64
|
852 busybox amd64
|
||||||
843 libbrotli1 amd64
|
843 libbrotli1 amd64
|
||||||
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
|
||||||
@@ -521,33 +529,33 @@ Packages sorted by Installed-Size:
|
|||||||
624 python3-pyelftools all
|
624 python3-pyelftools all
|
||||||
614 lib32quadmath0 amd64
|
614 lib32quadmath0 amd64
|
||||||
602 libluajit-5.1-2 amd64
|
602 libluajit-5.1-2 amd64
|
||||||
560 binutils-common amd64
|
564 binutils-common amd64
|
||||||
556 libtinfo6 amd64
|
556 libtinfo6 amd64
|
||||||
554 libpcre2-32-0 amd64
|
554 libpcre2-32-0 amd64
|
||||||
553 gcc-13 amd64
|
553 gcc-13 amd64
|
||||||
552 findutils amd64
|
552 findutils amd64
|
||||||
543 libgmp10 amd64
|
543 libgmp10 amd64
|
||||||
|
540 libldap2 amd64
|
||||||
538 libext2fs2t64 amd64
|
538 libext2fs2t64 amd64
|
||||||
536 zip amd64
|
536 zip amd64
|
||||||
536 libldap2 amd64
|
|
||||||
521 curl amd64
|
521 curl amd64
|
||||||
512 python3-yaml amd64
|
512 python3-yaml amd64
|
||||||
508 libbabeltrace1 amd64
|
508 libbabeltrace1 amd64
|
||||||
496 libssh-4 amd64
|
497 libssh-4 amd64
|
||||||
493 debconf all
|
493 debconf all
|
||||||
467 libreadline8t64 amd64
|
467 libreadline8t64 amd64
|
||||||
452 diffutils amd64
|
452 diffutils amd64
|
||||||
|
426 libgssapi-krb5-2 amd64
|
||||||
426 base-files amd64
|
426 base-files amd64
|
||||||
425 libgssapi-krb5-2 amd64
|
|
||||||
424 libnettle8t64 amd64
|
424 libnettle8t64 amd64
|
||||||
424 htop amd64
|
424 htop amd64
|
||||||
422 libncursesw6 amd64
|
422 libncursesw6 amd64
|
||||||
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
|
||||||
@@ -565,10 +573,10 @@ Packages sorted by Installed-Size:
|
|||||||
337 gpgv amd64
|
337 gpgv amd64
|
||||||
336 libncurses6 amd64
|
336 libncurses6 amd64
|
||||||
328 cpio amd64
|
328 cpio amd64
|
||||||
314 libudev1 amd64
|
315 libudev1 amd64
|
||||||
311 libx32quadmath0 amd64
|
311 libx32quadmath0 amd64
|
||||||
309 less amd64
|
309 less amd64
|
||||||
306 libctf-nobfd0 amd64
|
307 libctf-nobfd0 amd64
|
||||||
305 libsource-highlight-common all
|
305 libsource-highlight-common all
|
||||||
300 libquadmath0 amd64
|
300 libquadmath0 amd64
|
||||||
289 libblkid1 amd64
|
289 libblkid1 amd64
|
||||||
@@ -581,7 +589,7 @@ Packages sorted by Installed-Size:
|
|||||||
270 pax-utils amd64
|
270 pax-utils amd64
|
||||||
270 libpam-modules-bin amd64
|
270 libpam-modules-bin amd64
|
||||||
264 libuv1t64 amd64
|
264 libuv1t64 amd64
|
||||||
257 libk5crypto3 amd64
|
258 libk5crypto3 amd64
|
||||||
255 libipc-run-perl all
|
255 libipc-run-perl all
|
||||||
254 base-passwd amd64
|
254 base-passwd amd64
|
||||||
245 rpcsvc-proto amd64
|
245 rpcsvc-proto amd64
|
||||||
@@ -593,6 +601,7 @@ Packages sorted by Installed-Size:
|
|||||||
232 libctf0 amd64
|
232 libctf0 amd64
|
||||||
231 moreutils amd64
|
231 moreutils amd64
|
||||||
230 librhash0 amd64
|
230 librhash0 amd64
|
||||||
|
228 dmidecode amd64
|
||||||
226 libcrypt1 amd64
|
226 libcrypt1 amd64
|
||||||
224 libidn2-0 amd64
|
224 libidn2-0 amd64
|
||||||
224 debianutils amd64
|
224 debianutils amd64
|
||||||
@@ -605,6 +614,7 @@ 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
|
||||||
@@ -612,7 +622,6 @@ Packages sorted by Installed-Size:
|
|||||||
198 libtree-sitter0 amd64
|
198 libtree-sitter0 amd64
|
||||||
197 libgcc-s1 amd64
|
197 libgcc-s1 amd64
|
||||||
196 libxcb1 amd64
|
196 libxcb1 amd64
|
||||||
196 libelf1t64 amd64
|
|
||||||
188 libx32gcc-s1 amd64
|
188 libx32gcc-s1 amd64
|
||||||
187 libunwind8 amd64
|
187 libunwind8 amd64
|
||||||
187 dash amd64
|
187 dash amd64
|
||||||
@@ -622,7 +631,7 @@ Packages sorted by Installed-Size:
|
|||||||
171 libsmartcols1 amd64
|
171 libsmartcols1 amd64
|
||||||
163 zlib1g amd64
|
163 zlib1g amd64
|
||||||
163 lzip amd64
|
163 lzip amd64
|
||||||
159 binutils amd64
|
160 binutils amd64
|
||||||
158 zlib1g i386
|
158 zlib1g i386
|
||||||
157 lzop amd64
|
157 lzop amd64
|
||||||
157 liblzo2-2 amd64
|
157 liblzo2-2 amd64
|
||||||
@@ -636,17 +645,18 @@ Packages sorted by Installed-Size:
|
|||||||
143 libseccomp2 amd64
|
143 libseccomp2 amd64
|
||||||
137 librtmp1 amd64
|
137 librtmp1 amd64
|
||||||
136 libhiredis1.1.0 amd64
|
136 libhiredis1.1.0 amd64
|
||||||
132 libkrb5support0 amd64
|
133 libkrb5support0 amd64
|
||||||
131 libipt2 amd64
|
131 libipt2 amd64
|
||||||
130 init-system-helpers all
|
130 init-system-helpers all
|
||||||
130 bubblewrap amd64
|
130 bubblewrap amd64
|
||||||
|
127 libsframe1 amd64
|
||||||
127 libbsd0 amd64
|
127 libbsd0 amd64
|
||||||
126 time amd64
|
126 time amd64
|
||||||
126 libsframe1 amd64
|
|
||||||
123 libtimedate-perl all
|
123 libtimedate-perl all
|
||||||
121 libtasn1-6 amd64
|
122 libtasn1-6 amd64
|
||||||
120 libpopt0 amd64
|
120 libpopt0 amd64
|
||||||
115 libitm1 amd64
|
115 libitm1 amd64
|
||||||
|
115 libapparmor1 amd64
|
||||||
113 gcc-13-base amd64
|
113 gcc-13-base amd64
|
||||||
112 jq amd64
|
112 jq amd64
|
||||||
112 gcc-14-base i386
|
112 gcc-14-base i386
|
||||||
@@ -662,7 +672,7 @@ Packages sorted by Installed-Size:
|
|||||||
100 libassuan0 amd64
|
100 libassuan0 amd64
|
||||||
99 libpsl5t64 amd64
|
99 libpsl5t64 amd64
|
||||||
98 libmspack0t64 amd64
|
98 libmspack0t64 amd64
|
||||||
97 libcap2 amd64
|
98 libcap2 amd64
|
||||||
96 liburing2 amd64
|
96 liburing2 amd64
|
||||||
95 libunibilium4 amd64
|
95 libunibilium4 amd64
|
||||||
95 libjansson4 amd64
|
95 libjansson4 amd64
|
||||||
@@ -681,14 +691,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
|
||||||
@@ -703,7 +713,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
|
||||||
|
|||||||
@@ -25,13 +25,12 @@ LC_ALL=C sort -z | xargs -0r perl -n -e '
|
|||||||
if (m,[\x00\x01\x02\x7f\xfe\xff],) { print "ERROR: binary file detected $ARGV: $_"; exit(1); }
|
if (m,[\x00\x01\x02\x7f\xfe\xff],) { print "ERROR: binary file detected $ARGV: $_"; exit(1); }
|
||||||
if (m,[\r\x1a],) { print "ERROR: DOS EOL detected $ARGV: $_"; exit(1); }
|
if (m,[\r\x1a],) { print "ERROR: DOS EOL detected $ARGV: $_"; exit(1); }
|
||||||
if (m,([ \t]+)$,) {
|
if (m,([ \t]+)$,) {
|
||||||
# allow exactly two trailing spaces for GitHub flavoured Markdown in .md files
|
if ($ARGV =~ m,\.patch$,) { }
|
||||||
if ($1 ne " " || $ARGV !~ m,\.md$,) {
|
else { print "ERROR: trailing whitespace detected $ARGV: $_"; exit(1); }
|
||||||
print "ERROR: trailing whitespace detected $ARGV: $_"; exit(1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (m,\t,) {
|
if (m,\t,) {
|
||||||
if ($ARGV =~ m,(^|/)(gnu|m)?make(file|vars),i) { }
|
if ($ARGV =~ m,\.patch$,) { }
|
||||||
|
elsif ($ARGV =~ m,(^|/)(gnu|m)?make(file|vars),i) { }
|
||||||
elsif ($ARGV =~ m,\.mk$,) { }
|
elsif ($ARGV =~ m,\.mk$,) { }
|
||||||
elsif ($ARGV =~ m,/tmp/.*\.(disasm|dump)$,) { }
|
elsif ($ARGV =~ m,/tmp/.*\.(disasm|dump)$,) { }
|
||||||
elsif ($ARGV =~ m,/src/stub/src/arch/.*/lzma\w+\.S$,) { }
|
elsif ($ARGV =~ m,/src/stub/src/arch/.*/lzma\w+\.S$,) { }
|
||||||
|
|||||||
@@ -19,13 +19,12 @@ git ls-files --full-name -z | perl -0 -n -e '
|
|||||||
if (m,[\x00\x01\x02\x7f\xfe\xff],) { print "ERROR: binary file detected $ARGV: $_"; exit(1); }
|
if (m,[\x00\x01\x02\x7f\xfe\xff],) { print "ERROR: binary file detected $ARGV: $_"; exit(1); }
|
||||||
if (m,[\r\x1a],) { print "ERROR: DOS EOL detected $ARGV: $_"; exit(1); }
|
if (m,[\r\x1a],) { print "ERROR: DOS EOL detected $ARGV: $_"; exit(1); }
|
||||||
if (m,([ \t]+)$,) {
|
if (m,([ \t]+)$,) {
|
||||||
# allow exactly two trailing spaces for GitHub flavoured Markdown in .md files
|
if ($ARGV =~ m,\.patch$,) { }
|
||||||
if ($1 ne " " || $ARGV !~ m,\.md$,) {
|
else { print "ERROR: trailing whitespace detected $ARGV: $_"; exit(1); }
|
||||||
print "ERROR: trailing whitespace detected $ARGV: $_"; exit(1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (m,\t,) {
|
if (m,\t,) {
|
||||||
if ($ARGV =~ m,(^|/)(gnu|m)?make(file|vars),i) { }
|
if ($ARGV =~ m,\.patch$,) { }
|
||||||
|
elsif ($ARGV =~ m,(^|/)(gnu|m)?make(file|vars),i) { }
|
||||||
elsif ($ARGV =~ m,\.mk$,) { }
|
elsif ($ARGV =~ m,\.mk$,) { }
|
||||||
elsif ($ARGV =~ m,/tmp/.*\.(disasm|dump)$,) { }
|
elsif ($ARGV =~ m,/tmp/.*\.(disasm|dump)$,) { }
|
||||||
elsif ($ARGV =~ m,/src/stub/src/arch/.*/lzma\w+\.S$,) { }
|
elsif ($ARGV =~ m,/src/stub/src/arch/.*/lzma\w+\.S$,) { }
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ __add_cmake_config() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# pass common CMake settings
|
# pass common CMake settings
|
||||||
for v in CMAKE_VERBOSE_MAKEFILE; do
|
for v in CMAKE_INSTALL_PREFIX CMAKE_VERBOSE_MAKEFILE; do
|
||||||
__add_cmake_config $v
|
__add_cmake_config $v
|
||||||
done
|
done
|
||||||
# pass common CMake toolchain settings
|
# pass common CMake toolchain settings
|
||||||
|
|||||||
@@ -29,6 +29,6 @@ fi
|
|||||||
# limit memory usage to 1 GiB (in case of clang-format problems with invalid files)
|
# limit memory usage to 1 GiB (in case of clang-format problems with invalid files)
|
||||||
ulimit -v 1048576 || true
|
ulimit -v 1048576 || true
|
||||||
|
|
||||||
#echo $UPX_CLANG_FORMAT
|
#echo "$UPX_CLANG_FORMAT"
|
||||||
exec "$UPX_CLANG_FORMAT" -style=file "$@"
|
exec "$UPX_CLANG_FORMAT" -style=file "$@"
|
||||||
exit 99
|
exit 99
|
||||||
|
|||||||
@@ -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,17 +154,27 @@ 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
|
||||||
s="${method}-${level}"
|
for small in normal small; do
|
||||||
echo "========== $s =========="
|
s="${method}-${level}"
|
||||||
"${run_upx[@]}" -qq --${method} -${level} --all-filters --debug-use-random-filter "${upx_self_exe}" ${fo} -o upx-packed-${s}${exe}
|
ss=
|
||||||
"${run_upx[@]}" -qq -l upx-packed-${s}${exe}
|
if [[ $small == "small" ]]; then
|
||||||
"${run_upx[@]}" -qq --fileinfo upx-packed-${s}${exe}
|
s="${method}-${level}-${small}"
|
||||||
"${run_upx[@]}" -qq -t upx-packed-${s}${exe}
|
ss="--small"
|
||||||
"${run_upx[@]}" -qq -d upx-packed-${s}${exe} ${fo} -o upx-unpacked-${s}${exe}
|
fi
|
||||||
cmp -s upx-unpacked${exe} upx-unpacked-${s}${exe}
|
echo "========== $s =========="
|
||||||
if [[ $UPX_CONFIG_DISABLE_RUN_PACKED_TEST != ON ]]; then
|
"${run_upx[@]}" -qq --${method} -${level} ${ss} --all-filters --debug-use-random-filter "${upx_self_exe}" ${fo} -o upx-packed-${s}${exe}
|
||||||
"${emu[@]}" ./upx-packed-${s}${exe} --version-short
|
"${run_upx[@]}" -qq -l upx-packed-${s}${exe}
|
||||||
fi
|
"${run_upx[@]}" -qq --fileinfo upx-packed-${s}${exe}
|
||||||
|
"${run_upx[@]}" -qq -t upx-packed-${s}${exe}
|
||||||
|
"${run_upx[@]}" -qq -d upx-packed-${s}${exe} ${fo} -o upx-unpacked-${s}${exe}
|
||||||
|
cmp -s upx-unpacked${exe} upx-unpacked-${s}${exe}
|
||||||
|
if [[ $UPX_CONFIG_DISABLE_RUN_PACKED_TEST != ON ]]; then
|
||||||
|
: ${upx_run_packed_test_count:=20}
|
||||||
|
for ((i = 0; i < $upx_run_packed_test_count; i++)); do
|
||||||
|
"${emu[@]}" ./upx-packed-${s}${exe} --version-short
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|||||||
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
|
||||||
|
: ${upx_run_packed_test_count:=20}
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$argv0dir/mimic_ctest.sh"
|
||||||
+147
-147
@@ -46,164 +46,164 @@ b8c35fa2956da17ca505956e9f5017bb5f3a746322647e24ccb8ff28059cafa4 *powerpc-linux.
|
|||||||
a0950546dc17fca9437219431d8ddb0249ce5b08e899e0c799a87ac982adee70 *powerpc64le-linux.elf/upx-3.95
|
a0950546dc17fca9437219431d8ddb0249ce5b08e899e0c799a87ac982adee70 *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t110_compress_ucl_nrv2b_3_no_filter="\
|
expected_sha256sums__t110_compress_ucl_nrv2b_3_no_filter="\
|
||||||
f0c85faf008ad8e51e71f9c29122fe23cce8e584fdea2c7a56b1b49bf9bfe8bc *amd64-linux.elf/upx-3.91
|
836d9c5d9092421e49aeb573cde449ef740afbfea54d131ccbd88d8c7d87860d *amd64-linux.elf/upx-3.91
|
||||||
82c13304a9799c5afb1963bc666f888e0c05923cb088d8d2bcc62c4aa734ad8f *amd64-linux.elf/upx-3.95
|
9776a2d030719f9d74413d17c1bb732aaabb610b341031facd2c1a75348fc661 *amd64-linux.elf/upx-3.95
|
||||||
f3a107343e8bf9d079cf669c34139bc2c99695b87881e440e5441c0403548d1f *amd64-win64.pe/upx-3.95.exe
|
822718cc0f6ac5e57bb23eeb65be6f3f7e73df8b062853abddcc924ec8207596 *amd64-win64.pe/upx-3.95.exe
|
||||||
862dc98313017cda5c7f5bc859cd7c46c203ad8da95fbf3784dbc0229672af43 *arm-linux.elf/upx-3.95
|
40353c37020fd4bb713c5d54273b8dc07666e262b83a4f0652ccb8a236465f9c *arm-linux.elf/upx-3.95
|
||||||
e6636ae5cf7f54cbe65f3768f0858d5045b0b67e087b85ddcab029d76ca46e7d *arm-wince.pe/upx-3.91.exe
|
1440d6b44968954baf56fbc2a0739a51873455876114d4445ae4b67cb5e7893b *arm-wince.pe/upx-3.91.exe
|
||||||
3f3223911d8044d2e32eb3b185bbe5a148f8719fd19cdba7fc3f5e389019e994 *arm64-linux.elf/upx-3.95
|
35c08bf5086fe21ff19e3512359e54ac97c6d4513e6bb9ef4a59294bebf18f6a *arm64-linux.elf/upx-3.95
|
||||||
c91d57c236864a6237566ac9ee32e2b1aa89bcecf688a548d6b9e80339c7fcbc *armeb-linux.elf/upx-3.91
|
0ca2dcd9e8b5c3f16dcb31e30b42ec57a70b8fe90281d412081095a3d7812f01 *armeb-linux.elf/upx-3.91
|
||||||
5ffe5dadc9c0b18f427c6a13de0065946d4437ff43ef260c48702d5ba3a0d7e6 *armeb-linux.elf/upx-3.95
|
462a72efbb580a2e90564412737bb3c1db1d930cde5b4f2c94782df91c8e4f4b *armeb-linux.elf/upx-3.95
|
||||||
a5ba2584080983aada1956c12692189742f4e0bf878b60e19a9ec1bc4228f301 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
a7ee051c5f9dcf233e2ee248274121b99fb8f098eff95469bc0638a7423723f0 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
1cd743f67f24c2588b99cfca15299bc4237fc1667f1d0615f8be995fac1696a3 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
85cf31be166cb59587a99419cdd0fc5a79825d7508ab2c9a4bc0d700d603354d *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
6af6e47762c51b8789c11619bd95fef07cacb1b8f875ee8139e903fa1cc764d7 *i386-linux.elf/upx-3.91
|
fc7656d9a877967be7e339bfc98a0c63ea7b5abc30b96fa9e5931c75ecbe9827 *i386-linux.elf/upx-3.91
|
||||||
01442d33443d9b7328464597bbaf7d410b0b6f04d10d3edf6d9c1b3bad3b563b *i386-linux.elf/upx-3.95
|
d454a7639e96b986ad422b02045ecfefa3b9405901eaa32d92a2c489292b9600 *i386-linux.elf/upx-3.95
|
||||||
a12101d24d8a248163584774c742fa2e054f5c377665b25726f824d2dfdb2878 *i386-win32.pe/upx-3.91.exe
|
934dd17076c0298d35a738533ea668e1fcbf8fc85c6671fcdd3a12e7722502ce *i386-win32.pe/upx-3.91.exe
|
||||||
53f31cfa7f07d723620764df42abc47fbae679901760ca1b53a4c79a88ada2a0 *i386-win32.pe/upx-3.95.exe
|
519a9f6b3de56f5f080151074b9d5d81e31c1961cd6e395f73d2d522b7f7f8e0 *i386-win32.pe/upx-3.95.exe
|
||||||
65f8e36edecb0635eae313c66a81e1529a4f6b1693f72416dfbc285824846f88 *m68k-atari.tos/upx-3.91.ttp
|
a7bd9f616231d883f6700b09e3c9a0af2880c6b5e5b0ce1cd8f06de43c48856c *m68k-atari.tos/upx-3.91.ttp
|
||||||
6a5d54b5a4805f96cc59a65a137002c1d25531d1429699139b09943ee9caf18f *mips-linux.elf/upx-3.95
|
7a0479691e51ea4a8a0246a1f0ffa9694ee2f0e0cf3aa43dc0f1324c4d427ba3 *mips-linux.elf/upx-3.95
|
||||||
421ac9190bd99715acd2f4a97becca55039c8f78c350ea6043f8a3b06978f0d8 *mipsel-linux.elf/upx-3.91
|
f60bab42fe3914109ab1b9f5d00a5be753cd0a2c1a79a3998d58800efedbfff7 *mipsel-linux.elf/upx-3.91
|
||||||
b17bc6b7673c33075bc3906e1bf7d7f109af7fba7bac3255b1c6fd13df89346d *mipsel-linux.elf/upx-3.95
|
b6d8cc9e2023a3fc415166afc378ccf2eb505487df84c8d959ec74b3fb4f8256 *mipsel-linux.elf/upx-3.95
|
||||||
dd82483277f03e4ed6042a4ac863f76500f9a0ba074c8225590c798d2153e278 *powerpc-linux.elf/upx-3.91
|
acd3dc5ed3e4c4eeaa42e7cca71a79d687dd844ce5f384666ed6e78327b5a8e3 *powerpc-linux.elf/upx-3.91
|
||||||
d65b9f3241982b4c4a0050cf3f3421f70d0019092560291e1e45cd88f146ee81 *powerpc-linux.elf/upx-3.95
|
03600584c97fa466ef58239452baf9ec6ff2f06b79d97d45c8490953080de6e3 *powerpc-linux.elf/upx-3.95
|
||||||
0a155990ebcc5af095b907a9a69cf072e5d0f531ec70358d8deee785009cc543 *powerpc64le-linux.elf/upx-3.95
|
3f02885d1e94e59062eb78c4c910cde042475a6cadb77a85a603de747a50f45c *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
|
expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
|
||||||
58c0b1d2ba1d1affb532efe1e55646629c53644dc55bf5dff585bbce1db5eb1a *amd64-linux.elf/upx-3.91
|
8431343adec632690cec669038c246438c799e7dc1b8bc85586e0d2bcd2eebad *amd64-linux.elf/upx-3.91
|
||||||
3f5942d5a43fa2473146bcad10ffd28d7e3aa13981adb3e73827cffbb3d7e1f6 *amd64-linux.elf/upx-3.95
|
1852bded40be6eb5ddb07a491476dcfcca69cadda45a5f128aa8f967d567fa0b *amd64-linux.elf/upx-3.95
|
||||||
e3e0c4a4c17c494d2228def4cfedf9def9f66d53eefe9208178565178882c442 *amd64-win64.pe/upx-3.95.exe
|
5ab022e2c3ecb09931e2181fb5f7699f35e2b453b54c823e42653c84b0df5f2c *amd64-win64.pe/upx-3.95.exe
|
||||||
82d1a89589d7beb1e16d13e9abb1636ddc21a182da9dec302303f05fa253f87b *arm-linux.elf/upx-3.95
|
6de0cf1903760710a95cb5330d0ffb406a93f081dbe6806935f51b0c75e23f03 *arm-linux.elf/upx-3.95
|
||||||
fed423b4a93090db5e94739f5662c183f10605bca3ebec0dc497936bf1357e00 *arm-wince.pe/upx-3.91.exe
|
53121baf42c85991900aa3947f3d817fe6e894bc6f325ab1d576de6fba5fbcbf *arm-wince.pe/upx-3.91.exe
|
||||||
d7d2e6dd5e314d1ca6987f24d28dfa4a7a733486744f7ead068428683924bf5e *arm64-linux.elf/upx-3.95
|
3c9e49445280de6a771e77f6a88b3c3957815baa193e92a893d5defe6699f50a *arm64-linux.elf/upx-3.95
|
||||||
be64f68e93443dea8b44d2a793c160efc4bc8a143018dbe227603dc832a8e93f *armeb-linux.elf/upx-3.91
|
627a3c77adfcd4ef8c32f1638a6b99e20e79bb914cbcebed6fb9ad5f96936530 *armeb-linux.elf/upx-3.91
|
||||||
5b3f6ecc52562f4b0bda58283cee0824015869199803112163ed0f9a2296da87 *armeb-linux.elf/upx-3.95
|
7faf9f0adf508cf29bf0ac2a62234df06d6c9153d6d59cf61019361db906daf8 *armeb-linux.elf/upx-3.95
|
||||||
65bfc96aadb43c6828e9e42e1992176b61d339ff17a4e70e5f0af7a898e81a9e *i386-dos32.djgpp2.coff/upx-3.91.exe
|
51e4faea51e12c7442b27bb50150f532ac51d8102f77a669cbce82f2675a2ef2 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
78cf195faccd6b5b9ff1790cbb2008bfafc49a8e3eb3fa6c11b74d8c3128b315 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
1196f578ab0b862bae8ac6b5166b770f072cf0ac521a2a23a6347c19ea82a0da *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
6dfc802b397c976078e81ea298031af215961f1ee6254a4100a1402b1f097648 *i386-linux.elf/upx-3.91
|
3015651261f28fb43ed43a8c1fa257bcfcdc788e6fd3f436f3de23733736c724 *i386-linux.elf/upx-3.91
|
||||||
14c1d4ef28374188b9e03714258507fd5f1fdc3e602d7a32343815a23456c941 *i386-linux.elf/upx-3.95
|
8cca96ea354af889f5e9d3074b2c7005f982463a3f22e1cca2bc01aed9232de1 *i386-linux.elf/upx-3.95
|
||||||
24c0712c8b1ad505762429c4f31ef68bbc030d29f6bde18a9cb9722a78e7ba2b *i386-win32.pe/upx-3.91.exe
|
3edf364443a3cd56efd04e95cc7d7c1846bf76addedd7263cfe8330771f19509 *i386-win32.pe/upx-3.91.exe
|
||||||
a4338529d1dfa339cb2ac25fbc0c56028d288e7393b2fda57e5d6588f388313a *i386-win32.pe/upx-3.95.exe
|
48141fd66443f85ea867d7fa0bb3a50debb10f15bdb26c71888026e17c88d3a8 *i386-win32.pe/upx-3.95.exe
|
||||||
4f1d68f6e66df8fecad727d0177cfad9a2b9a66fb298600a4fb4a5273b531a60 *m68k-atari.tos/upx-3.91.ttp
|
07e1c09a953a9c87afa33d1236f46244280161bf3802273a523d380318886177 *m68k-atari.tos/upx-3.91.ttp
|
||||||
595912450d678df1832d3f6e33f0f1d3787ff2fb9fb2ebf9712378d563c06835 *mips-linux.elf/upx-3.95
|
39b3a5c780d9354714d5e2ed69068511422f8faf9ab660706adc8ad5ecdf3598 *mips-linux.elf/upx-3.95
|
||||||
42c3485bdb4455bac91ac7279b061a26d203c46b8bb8284d00d93da9c50acf08 *mipsel-linux.elf/upx-3.91
|
123ce137e4cd555470fcf9fe67df75179b6f337fee66d075ddc06f9848817a37 *mipsel-linux.elf/upx-3.91
|
||||||
bd20dd1f41bf72d61fbd59be2cfa008e7a0a052272a5731e0d880c47cf6bfd5a *mipsel-linux.elf/upx-3.95
|
b78d8cd3a3402fed266c737cc34a32cc21b2b67b573e9e9071d4faf9fca89b89 *mipsel-linux.elf/upx-3.95
|
||||||
a3be663023c7cc534edb14477fb639da47d32ef88c25055ed94f22419bc34159 *powerpc-linux.elf/upx-3.91
|
ea9cae1d1701db3a0c53e9a651766db5bdc30032f48913a4a9e99f193a800acc *powerpc-linux.elf/upx-3.91
|
||||||
cc883bf36c11a4ceae5371c66e0f4b28dafa9ea4076df5eae533bcdc611c3be5 *powerpc-linux.elf/upx-3.95
|
aea86bf87870a1e48a454ac1ea9a80d90d8abe5113d418a71d8a9c4a74bb2d0a *powerpc-linux.elf/upx-3.95
|
||||||
ce5bf80740e5c13883f44fecc42f8f4eb61fe768b10eda796e7ab1fc66d76dbe *powerpc64le-linux.elf/upx-3.95
|
62038c87489dc5cd3772e8e4051cf1d416edecf267d37f390a649f4ae657e0f9 *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
|
expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
|
||||||
2207030b7262baa62b107c876399753ae080021eebd65bc26f2811ab9c584109 *amd64-linux.elf/upx-3.91
|
f817034e8b7765d8b422dac9cb6f24f78ce5bfd7169cd3b33e8224e00b131eca *amd64-linux.elf/upx-3.91
|
||||||
813c26d1c905ff526c60bde16c6f3fc00b05ec391c1265c8f08e73b10d97e229 *amd64-linux.elf/upx-3.95
|
d21441a05514c085c10e99b00d8cc4d45484297a8e4e8a246364ca4347d0ed56 *amd64-linux.elf/upx-3.95
|
||||||
0136fbd3b9706eedff270c2a59bbce60bc56f939ce8fe64cc03ae2524c80cdc0 *amd64-win64.pe/upx-3.95.exe
|
7bd7cd37093200fa94d21dd7fdfef4d7fb9c3049fbf5f408f1f242cb8d9c6a55 *amd64-win64.pe/upx-3.95.exe
|
||||||
7f34ca5efb80c4a54c5b7e1d2225ed0a594394b85d2d22741687511d4056779b *arm-linux.elf/upx-3.95
|
d328a89b333d0b36e96d0c61375bf686e8f3b73a188dd4d0df4d78e30af08632 *arm-linux.elf/upx-3.95
|
||||||
a52b38546e1273920936aef97d6880f768cf951aaacb1cefdb7349db581ea792 *arm-wince.pe/upx-3.91.exe
|
ad0a7a18e87657d28260b7c527d284863becd3c5f92259c570125465f88d4042 *arm-wince.pe/upx-3.91.exe
|
||||||
9d52fb78b10e30b213926bb0e3749f7fb86303267d57616729e34aa180125ab8 *arm64-linux.elf/upx-3.95
|
0b700f0f7dde3118694155e876e6c2003ef701fe94856d6562936ec081278747 *arm64-linux.elf/upx-3.95
|
||||||
87fd843f80b2e8ce8321db6ec0b54742457d332f913ede8ed8507bdbb377dda0 *armeb-linux.elf/upx-3.91
|
53a1d04fa62e25e64e6f792b079e21b4c42676a73503ae6d9e67ae16c98e6d04 *armeb-linux.elf/upx-3.91
|
||||||
d3cf89367b1af3f444e3f47b527b59e77a8bd01849f78a1b40e0831edd789b74 *armeb-linux.elf/upx-3.95
|
33ed1e3b84836d2af52295ba0b90343ac0b8d524539ce3b8d0aa9f19a51d70dd *armeb-linux.elf/upx-3.95
|
||||||
10f60ea47cdce4b63c44d55709978cbe77e2cb507b3498320df98e9464dc1475 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
6fcdc8e34ce8b3501db2260c8a921c6e963954fdeffedfefca353a27bcc02d56 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
c80cec60ad9ed268b3a150299881d25035fa45638885df5a82287596d0708ef1 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
6f4f901c1838252f9b3104060475a6f13a2ebec830096ff28d870148580e4287 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
8f96a1d430eefa75f76207dc7cddf3f3b06cc3b6611a2cab4131e6694d54bf03 *i386-linux.elf/upx-3.91
|
8127f8380300508e8062e9391e321abd0429a6a31fec41e769cc7fe80af27e27 *i386-linux.elf/upx-3.91
|
||||||
76fb0e1394b7ac7c9e08522f5e7d4a7996515eceb6b804c8114ee819ffcee206 *i386-linux.elf/upx-3.95
|
b0a7e6b822f038b7940a54ea160b045d2241e3dfa15a5081a23fbc4d42fb6773 *i386-linux.elf/upx-3.95
|
||||||
03a74c66ce822c948abc20f1b41b7508a2d5a60975912f89569997795f92f957 *i386-win32.pe/upx-3.91.exe
|
c78db15a8113b806e56812fd842fb467d2a9c9557fcdc0467dae3f4c33316630 *i386-win32.pe/upx-3.91.exe
|
||||||
c84de2b06d4a82a788c0c63ff1acd92a01344601b156c0cc878ccc24a07bc7d0 *i386-win32.pe/upx-3.95.exe
|
89314e8621c4a00e1a65e045686245d3c1e2ba0a858f1dcc8f3cc2d0eedccfb5 *i386-win32.pe/upx-3.95.exe
|
||||||
15dea9aa84e82d1be8d847eb7b774abd0080fb938896d37a06d9fbf07ee137d2 *m68k-atari.tos/upx-3.91.ttp
|
710ad88b63cc7e0fa0b413ebdbcebf41140678f551b5dd883ed6220507be3601 *m68k-atari.tos/upx-3.91.ttp
|
||||||
3c2e472ce7aea4d8bf8fcd27488764fef52fee7fa48807f3879c44dfabf3c131 *mips-linux.elf/upx-3.95
|
c7e3478872650b7f4f8ccb4a0649944e62f44f5a9249cb9425210333e1f2fdf4 *mips-linux.elf/upx-3.95
|
||||||
db72872a3e605bec878dbb7e841b950c8f8b9279b088fdb4b8142accbf85d78b *mipsel-linux.elf/upx-3.91
|
cd9b3d3780a79cb416b261d622e8e86f2369fa8bb9bc49b529c50cac2980d528 *mipsel-linux.elf/upx-3.91
|
||||||
407b5b6465d5af0ef43fbaf0e041115bba224a30f84f061249bfea4a7ed21b2e *mipsel-linux.elf/upx-3.95
|
5baf7db9e4335c0227106262efc9d18ad23b88c6d6bb636656aea67bb063b6ec *mipsel-linux.elf/upx-3.95
|
||||||
8d751e64f87be51d847dcc4bf0bf54f92213bed18b16919659c94dea5e5e77f8 *powerpc-linux.elf/upx-3.91
|
aba8bd826ee52d533f9e1c4270d4f4194fe8d8747ea10a1d3ce59b6443f1a9f2 *powerpc-linux.elf/upx-3.91
|
||||||
d56e4ca8274f11a26fb33518e155ca6aad6c88953bdbced23c4378c43ed7e531 *powerpc-linux.elf/upx-3.95
|
6f737ccbf8c830476bed9c4dd33dd7757ea25bf2f8fb03b44d03e9b77ada0f1b *powerpc-linux.elf/upx-3.95
|
||||||
c20cde25c44f9c4f1aa68b4307615be23a241d31acffcf612d9f5066e9703b43 *powerpc64le-linux.elf/upx-3.95
|
d313dd128a54189b9551a529b1ed21b222aa0394a30f9ba552cde96edcd4011e *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t140_compress_lzma_2_no_filter="\
|
expected_sha256sums__t140_compress_lzma_2_no_filter="\
|
||||||
50532540dbd85b45c7a5968311144dcc28087453ed053d9b025e59a79d1085a9 *amd64-linux.elf/upx-3.91
|
fefac6fbd1e95479eb4066519f9bd801a30c29966685840b6a011e2911b984ca *amd64-linux.elf/upx-3.91
|
||||||
b750a28c3a4e15a5cde30b4bc98880dc2d9119cb1a0f8507a47ecebecc0b638c *amd64-linux.elf/upx-3.95
|
64487a0e0aade092a8ff7e6d8d9528ca550540cac8d432005ba610179782d042 *amd64-linux.elf/upx-3.95
|
||||||
1f8bb9320a0083fcd6a9debefc1ef7bd0a1fdc83a60d5f920f91c7b6fc6940b9 *amd64-win64.pe/upx-3.95.exe
|
a55ec5a7f2911f6da8b9336daf4f1051e753cfb7a4458c7f7baa6b63340c6daf *amd64-win64.pe/upx-3.95.exe
|
||||||
aaa86b905cf1e0b75446a4d02212fe6dd7c07d473aabf59711fc2f9cc7f4c447 *arm-linux.elf/upx-3.95
|
9f405739b904bb85053b75187c9175e4ac7f66a07ac5e320eaa4e9771e1ec79e *arm-linux.elf/upx-3.95
|
||||||
518d80035753e184eff1a0b26c76f79df7725a28dfe6738355263a9b4eed9788 *arm-wince.pe/upx-3.91.exe
|
7a6c603eecf214e5d6742f1fce922223c97c8bd2527678a968640dd6c1bc0d71 *arm-wince.pe/upx-3.91.exe
|
||||||
148227eed271db8ef9367349211d91520c6e10fdd1cc31382fe3b83ca6dad30d *arm64-linux.elf/upx-3.95
|
c8435e2f82ba72a0b6abad4146539d40d495461c5e480af705b2bbd21d192128 *arm64-linux.elf/upx-3.95
|
||||||
487a46b214fd36db0cd814a98fe608ec6baad5fa3111c5fcf5b5902c554b9149 *armeb-linux.elf/upx-3.91
|
21fc48eaaedc73fe9239159fb864c6149f729ef1661a8407b88ad9c9a19f9a54 *armeb-linux.elf/upx-3.91
|
||||||
94a2289a1c17bf647681d52ac050677149bbcee8a6eb944051b7734d94e5c7d0 *armeb-linux.elf/upx-3.95
|
742db587dc53f616c7b276a930c3f586da2b7c3ce6ccd523c041e88a9671b99b *armeb-linux.elf/upx-3.95
|
||||||
d6dcbfb921ce4fb936f3c90929bab1c4922b557068a45a7f5e2d1e4af7462b6d *i386-dos32.djgpp2.coff/upx-3.91.exe
|
7a8eaa5139b95cc56591200fce62d3c9af163671467952cab6fcf487318107bb *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
efd3af572e9517128e49d0b013358abc0174966a8e596648af08bc3a3c822a05 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
9b5fc0f54a5f811bda190c36fb2fa5c5b03c6c3de0c62693e4191230b5a419b8 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
b98b1d2c9bea47155d26d078e152bd73a675cf91051db1419e872ba3b23d8b82 *i386-linux.elf/upx-3.91
|
68b4ce63cb0bd7dd5b287e1f9fa5d9bc234ac36359ce3ebff863984c503a698e *i386-linux.elf/upx-3.91
|
||||||
5182b9e69dd6440eacaae7213ebbe2a4bb7d4a0a2bbd650bb2b0cad0dbe8704f *i386-linux.elf/upx-3.95
|
aa75cf22f0b59cc796de678198432a3dc2d40ab871e4989dd97ff1a6c148f294 *i386-linux.elf/upx-3.95
|
||||||
770117cff05d8cf50a1ef7be873aae7d11649f2757d02b17dc8817104fa70f0d *i386-win32.pe/upx-3.91.exe
|
0e0780f5fccc52f6c78414f7279263b26e31de7c6ca1ec65a240e37cf0a4f5c9 *i386-win32.pe/upx-3.91.exe
|
||||||
460c437f090f68a8bc2c5f2557b8aa784b3a5cd7f8ef87fa6992305e1070125c *i386-win32.pe/upx-3.95.exe
|
3ddd6265d69e374f5f0f8c9f602e0e59c895da2f3fef611ef89f0ee4ae2c592b *i386-win32.pe/upx-3.95.exe
|
||||||
eaf53678fb35365dd6a20983b0379251b8aa28350a238b1636141ddc555a4520 *m68k-atari.tos/upx-3.91.ttp
|
e268c98fdacfd04268d76644f2bb4746ae04b57801407aaa1867798840eeeea0 *m68k-atari.tos/upx-3.91.ttp
|
||||||
77dcc76fda69c13a8f58cbaf34376e734457909810ec351b291b63774752e1de *mips-linux.elf/upx-3.95
|
499e1d1486810cfa5b6662e30189183979e25f45d35654d8cd60fd793d0c07d8 *mips-linux.elf/upx-3.95
|
||||||
ad82bf571be17ecdd19520959e9e770205163693561cc6b3a6c206ca7ce8694d *mipsel-linux.elf/upx-3.91
|
4a30189ad7312eafb2d47e1b526ec22eaf614a895f8dce96f3e1c7385438f44c *mipsel-linux.elf/upx-3.91
|
||||||
7f3f5b2522761550f01d1c88b5f68d0f4a391c3470418b86a10f6ca5872f4357 *mipsel-linux.elf/upx-3.95
|
339d38602413d97d9bba113f39884815af10ebcdccf37e3f5e8d0879f262a048 *mipsel-linux.elf/upx-3.95
|
||||||
63a339a06d497120002ad45d549eef5db2f07e7419f1c68a8ede9f36c7ec4b96 *powerpc-linux.elf/upx-3.91
|
6d4f9d4383ebc9d8411d06a7c219dcf3e8513ea8c989f2d31ab382602f873ba5 *powerpc-linux.elf/upx-3.91
|
||||||
5ba0f8485b832d8da4d7210f01c09850fdad9a9d1f99d3726147494fed90b130 *powerpc-linux.elf/upx-3.95
|
5dd727d8d5a35cc0ab86d629285d8ff450f52b538118679edaa886ce9c1fed7d *powerpc-linux.elf/upx-3.95
|
||||||
0c89a155ff7acbaf5ca9618a7d632650ceb99c089d3dd8e56280b28d44302361 *powerpc64le-linux.elf/upx-3.95
|
efec1e5bbb9bcf11dbc7081adfc2020de18fae326ad86194551c44fba0d2148d *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t150_compress_ucl_2_all_filters="\
|
expected_sha256sums__t150_compress_ucl_2_all_filters="\
|
||||||
af5fcd8a9b1c3869b082b2fe72c962a4dc651f1f2d8979eedbea4b2a82e6b955 *amd64-linux.elf/upx-3.91
|
05b29bde32af1e63e837e2be499567c4b10d7e692c88082f24e3417e0c7b9f40 *amd64-linux.elf/upx-3.91
|
||||||
4e0eb2be5592d19ee7ac0acfb68dec8d4393b996d4e3c112c34ffac0ba59b7b8 *amd64-linux.elf/upx-3.95
|
65c142ee01af09fa8741932c1f21d466be971aad059cc5afddbb7ecdf142c1bb *amd64-linux.elf/upx-3.95
|
||||||
0bc7af47ffb8a45b6877289c6bf8693d118a122190501438f7d77f318f8f7490 *amd64-win64.pe/upx-3.95.exe
|
cbb5c90bd9195bd9e3acd931312a70deeccfab5540f398ceda8826f8d6b332bf *amd64-win64.pe/upx-3.95.exe
|
||||||
6b16659fa1fb13af0709273f41e18d3304996bb7c71ee679f589c7701b7480de *arm-linux.elf/upx-3.95
|
1ea1bb18c0ac85c07450f0a6704b84e58a1322556757e2943340ef381b2ce675 *arm-linux.elf/upx-3.95
|
||||||
2510e493e524dcb86b5cffc16cdeb116fe41e2a6ef765f066a88dad30b09e039 *arm-wince.pe/upx-3.91.exe
|
76a5f0518fc797bd3f132ce6eb61ca187b5d463f191417883a73d4584716c23a *arm-wince.pe/upx-3.91.exe
|
||||||
a19d8c1b68864540a0e6394fbd77f55293de372903821f9e11ad4782c5bc313c *arm64-linux.elf/upx-3.95
|
4df30002376a4f18029ea9dd8260d395bec3a3fa11fbc5aa19859c2f0efdc2e6 *arm64-linux.elf/upx-3.95
|
||||||
bd7c2bf7bcfd4d70fdfaba51a2dfb9820f586e61a6414fb6c888f9c5b1a64ed6 *armeb-linux.elf/upx-3.91
|
ba03fd4889210435c9673f2dcbd2269162037090eccc79cf7d2b896e64a57e2e *armeb-linux.elf/upx-3.91
|
||||||
1080b69f81b9fe7de4abee22e7ba88efbc6ea1a3e8d59f4e48268072a4cfc7f7 *armeb-linux.elf/upx-3.95
|
681f32d01c76ff31776b8d6f1556daa38eee297f675aa40ff1bb2e47e12adf15 *armeb-linux.elf/upx-3.95
|
||||||
8998ed7c785b2f242ebff1aa88225702c281eeb31bf02f6edd61851c22271fd0 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
aa05c3a2953f0f2d70842cba45786b707a79ffef22fd084f51e304762cc67765 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
c955d35d9f829ba442db2bd26b2eb9d65c06ac15ffbbf96d77577365f489c2c9 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
c677241e9a8753ba1332ac3875ab6398fb2d792d2627edd9e58f2535b3131abe *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
cffe561026b58c3a16a78392ca835b212a6f82b7d995a6f0d607aea8b90e35a9 *i386-linux.elf/upx-3.91
|
7bcd42f58dcc8ddb6cb1a4e33d56b584fe6d49b002b01a0859571d1324dd593a *i386-linux.elf/upx-3.91
|
||||||
9fe71ad10328ddf551ed58ed377fe4b131a8deb2de9c0b3e56c1d5936075d540 *i386-linux.elf/upx-3.95
|
b6fe6220c0b3f4df131da3aaae566810f2aa1f13b63d23de3ead9174d08d82e1 *i386-linux.elf/upx-3.95
|
||||||
f4754aa1ab522cd208c93e9caf49ac0d4c357a2636fea1d94a24de3f54252c4a *i386-win32.pe/upx-3.91.exe
|
8ec02f816f4727b519e8775edc1afb1df32991319a6c6f050ece416011925379 *i386-win32.pe/upx-3.91.exe
|
||||||
54ebf5551a267e36c6afbebcde77e0f2ac1b52f66834545da082c4146f2ec03e *i386-win32.pe/upx-3.95.exe
|
d5aeeedada49c0c2870ea450ed66b2cea31369bccfccf9407378ae0fb0736deb *i386-win32.pe/upx-3.95.exe
|
||||||
a085aa278eab7c2b82d9d7b931a889bb8cdff2af993b2a446dfc652603c9b8b1 *m68k-atari.tos/upx-3.91.ttp
|
e414ad0aba43790d0498b26c23055fb051129b6cbe3e070a1406c91ac5b8032b *m68k-atari.tos/upx-3.91.ttp
|
||||||
9ab8d07b0e5aa4269d18bd0783f74c8cad6d681839774f091ea65b35231aa0be *mips-linux.elf/upx-3.95
|
c5107a84d32de820c81401259a7dd23435ea625588d56c6c75ad6fa14b0dbf8b *mips-linux.elf/upx-3.95
|
||||||
ab46fcc2f009fab7b5186c33e3d288df999e3ac96f3863fa82c314d4f8fa3d43 *mipsel-linux.elf/upx-3.91
|
78473f7d7ddf56812b8dee087ca62517ecdbd10fa14972ba6670338fc19061d1 *mipsel-linux.elf/upx-3.91
|
||||||
b23c4c341228a30a7f8a6e027279a2f016510e8011b2da4b460657bc633303fb *mipsel-linux.elf/upx-3.95
|
fd9ea397a29b41a2143f9e02217e181d0075d7ad7d87bdbadc7fc94bfb1b0d76 *mipsel-linux.elf/upx-3.95
|
||||||
ac26cabae4f900d5dbe06ec2128c66ff3d3934967d4e8f7fa8003d977827b554 *powerpc-linux.elf/upx-3.91
|
c47d1299f6ecf86e62528fc54979117b2b2ddbb6c80f553689402399fc7eab28 *powerpc-linux.elf/upx-3.91
|
||||||
f109345301a767465e966c59f9b97fcbc57dd123f0cfd6b3a1508d063afcb71a *powerpc-linux.elf/upx-3.95
|
77c3b4ba6909a4e20180bc13775e280086d67240519c323c2005f3fcee6e0b78 *powerpc-linux.elf/upx-3.95
|
||||||
14925049ea4d38ba1a7b1fa88397ea47c32b3e75aa73311acd5ce984dc9edff9 *powerpc64le-linux.elf/upx-3.95
|
e3ce51b863905a4831958c72541b04e9f893f0d9827f32e615822db7aebd56bc *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t160_compress_all_methods_1_no_filter="\
|
expected_sha256sums__t160_compress_all_methods_1_no_filter="\
|
||||||
0b4129ac4d2660a61f65f89f5e4dfd337e757504ce7cdc865dfc40236a32fb98 *amd64-linux.elf/upx-3.91
|
94c91b97fcce7402a4494b22699b2450e8e4e2a9f4ddd66e1133c76ce198c167 *amd64-linux.elf/upx-3.91
|
||||||
56dbdb335ebaa58fb9a5b2cb1a0ca7ca9b0e6f02d4d06bc6cefc0433c166b5b2 *amd64-linux.elf/upx-3.95
|
5b3e85adb37919d051c6eaff205b8e1d77a2dfde0d8e7dcdee7c22f8fd5dc8c7 *amd64-linux.elf/upx-3.95
|
||||||
1b508481525d63d90d7b9125a7ce5f3f2adfedaa6b771f2a8f4f4502cd425dfb *amd64-win64.pe/upx-3.95.exe
|
5a0ecb45658904bcd0b823b77dba039c9814e2eff4ed429784c36b7074b9858c *amd64-win64.pe/upx-3.95.exe
|
||||||
0768ad7425df8a1397cacd6e611beaefec03e6b2be97109dfce5ee71773b3b9d *arm-linux.elf/upx-3.95
|
de93a219ca3c4ea84bd9c1b5fb37ff4aaa0a08ea6eac18da6d7a5865e4dad19c *arm-linux.elf/upx-3.95
|
||||||
24d9a9331ed1bf1f29286e58a3cf7f3c3d2cfc1e8763393088e8d967a0c404eb *arm-wince.pe/upx-3.91.exe
|
fdbe0395ac401285edb9c2f9bfbb0fbd3c0eaad5052a88d8369b1a66b35a8a3e *arm-wince.pe/upx-3.91.exe
|
||||||
43f8f19d6928d072f6a8889c1045b39664d731b1164427c8f200d9aee00b8f15 *arm64-linux.elf/upx-3.95
|
acdb7ff90d7c6f403872ec333e2987ee74e99d6e1390863b321b528d312c1084 *arm64-linux.elf/upx-3.95
|
||||||
7520c0b23566e2acec6989d4d657dd004773e8da2b2f4c6440f41c5af3be0b23 *armeb-linux.elf/upx-3.91
|
54860e61da36414dc105aafcdbb86c79b745913a7d0da911fa58a6941f111e2d *armeb-linux.elf/upx-3.91
|
||||||
3adb141d33987869834da0fa971b1c5fde50cca227e2981856dba4be8e439909 *armeb-linux.elf/upx-3.95
|
7c36b75cc8a0712515e12a9e565df4ca43bff6cc0077afb282d367fcc2ee2acd *armeb-linux.elf/upx-3.95
|
||||||
73759310b8554f0011db0e5d443717e112a70f67376fa180bf1d08575f410998 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
0a0099246096d20ff6035a4df6566954b9d8aff9ed8fdbd35aa5ee4995b02bfe *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
10a3d68b8a5364b4244f5273165530bc3b68f853a9096dd83d1f8536e7d679e0 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
5df7aa9f0896df87eb8798119ad16a9b89c87a7568a67339e33b5baa99ec361f *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
69d47a715530e3d4e45a51be5c3c64ed59c1237d2b4c59d8cb8d11dcdd85266a *i386-linux.elf/upx-3.91
|
53e5aae9bc70f58e3dc2aef5a94f66df2517d547670e72ee2b3189b7da809f41 *i386-linux.elf/upx-3.91
|
||||||
f90e868783a5f216a59d230e4685d88abdc7d920de78139a841726bfc8a2395b *i386-linux.elf/upx-3.95
|
adaa1e2f46f7a235ab838b15aa7e820057e5ed7011d9d07c67dc770a88e3dd62 *i386-linux.elf/upx-3.95
|
||||||
6354a77c83a760b0621242982ace576a58941c687c8d0e2154d91263d45a7fd9 *i386-win32.pe/upx-3.91.exe
|
f3d33c5c9809943a902133490bcf0cfbe39a5ef1635a0c29b3bdc4f35dfffa50 *i386-win32.pe/upx-3.91.exe
|
||||||
43d261ecf3dccf8bb1c3591b38dc20acedd846b1f5bba0a9fa290d29e6f5bd8f *i386-win32.pe/upx-3.95.exe
|
474e68a2390cf0376f59402eaef4c902daa49428b628e025b1c8506428a37937 *i386-win32.pe/upx-3.95.exe
|
||||||
586ad3f4d1a421cbfc86a38bc0b1f3d48dc5bf76ecd8281b001ff1e42cd5ed6c *m68k-atari.tos/upx-3.91.ttp
|
1561dd69f67e8705804dba41ebd876bce6a4ce8ed8b0bc0d0e7628697e7fee68 *m68k-atari.tos/upx-3.91.ttp
|
||||||
d88760fbaac2c4628c1cb6c8b3828c3ec717ac02e87c7c452d39fb2de9e32412 *mips-linux.elf/upx-3.95
|
74f7f69b4a8b2b7c428fa55e3970ee767c1947f19ed1b0644870ecb6b3cb713d *mips-linux.elf/upx-3.95
|
||||||
a3599c2acd0a449693468612a5ca897e48612cff448489df42f2d78775c36606 *mipsel-linux.elf/upx-3.91
|
12a42365234c001a52586b74a9597dc7d65184ddf1ee1d40734823a3443cd92a *mipsel-linux.elf/upx-3.91
|
||||||
bbe0cad71e7c0f93884f972ed1f0b464184a6f7bed57fc8c5120db758166e742 *mipsel-linux.elf/upx-3.95
|
68f674d081d87e86e54f0051eee9e2bc85b566051992774ab28ff3173cbcb75a *mipsel-linux.elf/upx-3.95
|
||||||
1247a34c56ae1eea834207a409f955a39362184ed730d0bdf797e20440fbad2a *powerpc-linux.elf/upx-3.91
|
f569d8f49d7110bb8b262a48055b39d889e9977c40c5f1b21e74f8cbf93b27ae *powerpc-linux.elf/upx-3.91
|
||||||
318e5c3db467a6d14d157828931932e4ae822b255970b8a6a8f4038e6c14ad03 *powerpc-linux.elf/upx-3.95
|
d8227a8a88c083760889acaf259e7da59eab75a23e341289bc8e3c60563ae344 *powerpc-linux.elf/upx-3.95
|
||||||
424837c52bce0853f0f97dc69273de4e2f0c3cf09fd992b08b1bfd79fbe04281 *powerpc64le-linux.elf/upx-3.95
|
e4b58ed65025b765953af02e80be9a171c49b6c707c835949b1c888fdbe8bba0 *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="\
|
||||||
301f1ac99e989824b4171305c4bf21f848da49169a0ea35f9d954b6782946e3f *amd64-linux.elf/upx-3.91
|
52a39c30b60abb82c1ec2826297eb46abdc29b5dd55d7a7a41dd2fc1c573f60a *amd64-linux.elf/upx-3.91
|
||||||
bbd292d29f547d15d7ce1e5c16470282e91017a4bd317b24e71c9fc078e625e8 *amd64-linux.elf/upx-3.95
|
f0c728c42e8775767e0d963e1eef7ca78711f3f6dd180df980a1faef926d7cac *amd64-linux.elf/upx-3.95
|
||||||
dea208e13322f5545cd0f16ff06969dc9ded456191bc827803f5a871ec6e239f *amd64-win64.pe/upx-3.95.exe
|
e07e9babdeb12fddeebbfa1b0293163cc5e63017d6f0933d02587c8da1e90a82 *amd64-win64.pe/upx-3.95.exe
|
||||||
93762a9cbeed31a7eee4762f410baee0c92ffaabc36c9dc92a7eb21e6f4fc526 *arm-linux.elf/upx-3.95
|
f0359efa2247e9ea756f54c85e7518d61f3b293e08f566c3812c64c7d5f0db0f *arm-linux.elf/upx-3.95
|
||||||
56349a327b7172010484f58e3ed13a9c5819241e1326d20843516458d85ec6c2 *arm-wince.pe/upx-3.91.exe
|
8d1706ab02013b536c3a4cec20d40a96591ffa45fdcb464ccd3f038567006d79 *arm-wince.pe/upx-3.91.exe
|
||||||
9c12ee31c2dbffb30ca41e799ea22f37a82be3b3af0cb3d93fb8159d57ad40b5 *arm64-linux.elf/upx-3.95
|
14932490ff17e27bb5bedde576b8683892c4720f4a0058f373aab9f8894fda09 *arm64-linux.elf/upx-3.95
|
||||||
6f4f80cb1bc8aedf2aade7b48e404c1edfd9e361818dc52d495b66951684107a *armeb-linux.elf/upx-3.91
|
64a73512e40c2fb49d8ae3a1d496b379c97b8724cf8ca4461a85825ff04366a0 *armeb-linux.elf/upx-3.91
|
||||||
b1d33445d3732860c6c20c9dc7b643886c8fd180a19abccdf489c7af297d1575 *armeb-linux.elf/upx-3.95
|
078e7cd073ba071f17ad4292e2211b7d635f57e974546e7f156cc87f9aa716e2 *armeb-linux.elf/upx-3.95
|
||||||
abdb6b7df1c5bcb30cf7534de2527df0e9edc961828a68e77c336a29a01810b8 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
dda2c348c43741a1bd65049a8e7b51be1ebf873d215370ec002185c85390c168 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
3bda7b44bf9ca7a5a3272a2fb0202cba96017a34b1829cc371c9b7cbd7f43f2f *i386-dos32.djgpp2.coff/upx-3.95.exe
|
560392427ded22f2f3fea59ef10e55d65cf841001e67b1e4558ef13514baa602 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
503edbca35752de11340e0364374432a08da5ab4b2719aadea9482f7018f3e68 *i386-linux.elf/upx-3.91
|
f3f8feceebe8536633554b204df68c2e94e1d1a313fe7a576b7f5d404c916083 *i386-linux.elf/upx-3.91
|
||||||
99c951666eeecab20e08a88b198943ca694d755570135ef218396968edec76e4 *i386-linux.elf/upx-3.95
|
e7f98419e346670f72d66ac25f3d6ad53201e768819980eecae24d801366be27 *i386-linux.elf/upx-3.95
|
||||||
c5960e4e4fb392a6b439a95d5b41a86be95e3f7898923268bf76534be4bfd6f2 *i386-win32.pe/upx-3.91.exe
|
3510bc5627237752bedd275e73c42bc02cd46145ff916e7bccbdec663f763ee4 *i386-win32.pe/upx-3.91.exe
|
||||||
d391d97db4a4593e8c3871968b3731817a8cac52953649619d0d63deb27fea74 *i386-win32.pe/upx-3.95.exe
|
ad47c7522167f6f7e47d495e1fa119431386ca5ea9bc16b6a4b9cb38cf9cd29f *i386-win32.pe/upx-3.95.exe
|
||||||
6eec8f9d2eb1a0547f8f8c1c346227468422387dc8899782878a682d4d4e03a2 *m68k-atari.tos/upx-3.91.ttp
|
1c999e5c6cded8c99a7f6b4595879893ae63d2af1388dc61dd8b4e3106676480 *m68k-atari.tos/upx-3.91.ttp
|
||||||
a18383777c6c3ee7436447e7babb131e29608d235de47ea2583d1233b9b7103e *mips-linux.elf/upx-3.95
|
55a098c2cdce1917b76ce0845f434fc23b0bd30b34e884b19401c51c8c7f4756 *mips-linux.elf/upx-3.95
|
||||||
f4bf1e6fc9ebbdb798a6cd4875419bd9e7bfcf12d9439d926581ff60430dbd84 *mipsel-linux.elf/upx-3.91
|
4b6487d412f43acb8e41951a2135e56025139a9ad3e57102749df4d4bef934fa *mipsel-linux.elf/upx-3.91
|
||||||
7df55c1c945968d986ac6321f2503379a4a6b061f2ac59ab2dd68e2cb509839e *mipsel-linux.elf/upx-3.95
|
1dcd626fc4566c608e987fd6999b695793c5cae7f78872e3d1a9a23942fea188 *mipsel-linux.elf/upx-3.95
|
||||||
40b7830288602fb85b8068b7daebdb6c33fb64b79543ad87a412189dfdfc3583 *powerpc-linux.elf/upx-3.91
|
2047a4a880322bf41e8afbb4787f6103364de4a299b543808251a4144c4d990b *powerpc-linux.elf/upx-3.91
|
||||||
f012035e5268519485025fbc8a1286c4a380f2c80d979df182190bc32d7258e2 *powerpc-linux.elf/upx-3.95
|
63679bd238f30bfb14853246eb257536471fea10f942b2adfdd43cbef21dea30 *powerpc-linux.elf/upx-3.95
|
||||||
439cd93ccaa2b916bfb6d6c1c91cd09451121f9a8d8cad3386d628940b966870 *powerpc64le-linux.elf/upx-3.95
|
c75d1548db879ed589b55bc1319869b49d37595f4560a64b34016951dc02f997 *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
########## end .sha256sums.recreate
|
########## end .sha256sums.recreate
|
||||||
|
|||||||
@@ -119,11 +119,12 @@ cd testsuite_1 || exit 1
|
|||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
|
|
||||||
run_upx() {
|
run_upx() {
|
||||||
|
local flags="--disable-random-id --fake-stub-version=5.01 --fake-stub-year=2025"
|
||||||
local ec=0
|
local ec=0
|
||||||
if [[ $UPX_TESTSUITE_VERBOSE == 1 ]]; then
|
if [[ $UPX_TESTSUITE_VERBOSE == 1 ]]; then
|
||||||
echo "LOG: '${run_upx[*]}' $*"
|
echo "LOG: '${run_upx[*]}' $*"
|
||||||
fi
|
fi
|
||||||
"${run_upx[@]}" "$@" || ec=$?
|
"${run_upx[@]}" $flags "$@" || ec=$?
|
||||||
if [[ $ec != 0 ]]; then
|
if [[ $ec != 0 ]]; then
|
||||||
echo "FATAL: '${run_upx[*]}' $*"
|
echo "FATAL: '${run_upx[*]}' $*"
|
||||||
echo " (exit code was $ec)"
|
echo " (exit code was $ec)"
|
||||||
|
|||||||
+9
-9
@@ -25,11 +25,11 @@ endif
|
|||||||
.SECONDEXPANSION:
|
.SECONDEXPANSION:
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
|
|
||||||
build/debug build/release build/all: PHONY; $(MAKE) -C $(top_srcdir) $@
|
build/debug build/release build/all: PHONY; $(MAKE) -C "$(top_srcdir)" $@
|
||||||
build/debug+test build/release+test build/all+test: PHONY; $(MAKE) -C $(top_srcdir) $@
|
build/debug+test build/release+test build/all+test: PHONY; $(MAKE) -C "$(top_srcdir)" $@
|
||||||
# shortcuts
|
# shortcuts
|
||||||
debug release all: PHONY; $(MAKE) -C $(top_srcdir) $@
|
debug release all: PHONY; $(MAKE) -C "$(top_srcdir)" $@
|
||||||
debug+test release+test all+test: PHONY; $(MAKE) -C $(top_srcdir) $@
|
debug+test release+test all+test: PHONY; $(MAKE) -C "$(top_srcdir)" $@
|
||||||
|
|
||||||
test: $$(patsubst %+test,%,$$(.DEFAULT_GOAL))+test PHONY
|
test: $$(patsubst %+test,%,$$(.DEFAULT_GOAL))+test PHONY
|
||||||
|
|
||||||
@@ -61,11 +61,11 @@ run-testsuite-%: export upx_testsuite_SRCDIR := $(upx_testsuite_SRCDIR)
|
|||||||
run-testsuite-debug: export upx_testsuite_BUILDDIR := ./tmp-upx-testsuite-debug
|
run-testsuite-debug: export upx_testsuite_BUILDDIR := ./tmp-upx-testsuite-debug
|
||||||
run-testsuite-debug: export upx_exe := $(top_srcdir)/build/debug/upx
|
run-testsuite-debug: export upx_exe := $(top_srcdir)/build/debug/upx
|
||||||
run-testsuite-debug: build/debug PHONY
|
run-testsuite-debug: build/debug PHONY
|
||||||
time -p bash $(top_srcdir)/misc/testsuite/upx_testsuite_1.sh
|
time -p bash "$(top_srcdir)/misc/testsuite/upx_testsuite_1.sh"
|
||||||
run-testsuite-release: export upx_testsuite_BUILDDIR := ./tmp-upx-testsuite-release
|
run-testsuite-release: export upx_testsuite_BUILDDIR := ./tmp-upx-testsuite-release
|
||||||
run-testsuite-release: export upx_exe := $(top_srcdir)/build/release/upx
|
run-testsuite-release: export upx_exe := $(top_srcdir)/build/release/upx
|
||||||
run-testsuite-release: build/release PHONY
|
run-testsuite-release: build/release PHONY
|
||||||
time -p bash $(top_srcdir)/misc/testsuite/upx_testsuite_1.sh
|
time -p bash "$(top_srcdir)/misc/testsuite/upx_testsuite_1.sh"
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -75,9 +75,9 @@ endif
|
|||||||
|
|
||||||
ifneq ($(wildcard /usr/bin/env),) # need Unix utils like bash, perl, sed, xargs, etc.
|
ifneq ($(wildcard /usr/bin/env),) # need Unix utils like bash, perl, sed, xargs, etc.
|
||||||
|
|
||||||
CHECK_WHITESPACE = bash $(top_srcdir)/misc/scripts/check_whitespace.sh $(top_srcdir)
|
CHECK_WHITESPACE = bash "$(top_srcdir)/misc/scripts/check_whitespace.sh" "$(top_srcdir)"
|
||||||
ifneq ($(wildcard $(top_srcdir)/.git/.),)
|
ifneq ($(wildcard $(top_srcdir)/.git/.),)
|
||||||
CHECK_WHITESPACE = bash $(top_srcdir)/misc/scripts/check_whitespace_git.sh $(top_srcdir)
|
CHECK_WHITESPACE = bash "$(top_srcdir)/misc/scripts/check_whitespace_git.sh" "$(top_srcdir)"
|
||||||
endif
|
endif
|
||||||
check-whitespace: PHONY; $(CHECK_WHITESPACE)
|
check-whitespace: PHONY; $(CHECK_WHITESPACE)
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ CLANG_FORMAT_FILES += $(sort $(wildcard ../misc/cmake/try_compile/*.[ch]*))
|
|||||||
CLANG_FORMAT_FILES := $(sort $(filter-out $(CLANG_FORMAT_EXCLUDE_FILES),$(CLANG_FORMAT_FILES)))
|
CLANG_FORMAT_FILES := $(sort $(filter-out $(CLANG_FORMAT_EXCLUDE_FILES),$(CLANG_FORMAT_FILES)))
|
||||||
clang-format: $(CLANG_FORMAT_FILES) PHONY
|
clang-format: $(CLANG_FORMAT_FILES) PHONY
|
||||||
@echo "running upx-clang-format"
|
@echo "running upx-clang-format"
|
||||||
@bash $(top_srcdir)/misc/scripts/upx-clang-format.sh -i $(CLANG_FORMAT_FILES)
|
@bash "$(top_srcdir)/misc/scripts/upx-clang-format.sh" -i $(CLANG_FORMAT_FILES)
|
||||||
|
|
||||||
endif # Linux
|
endif # Linux
|
||||||
endif # /usr/bin/env
|
endif # /usr/bin/env
|
||||||
|
|||||||
+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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
|||||||
+1
-1
@@ -210,7 +210,7 @@ private:
|
|||||||
UPX_CXX_DISABLE_NEW_DELETE(LEPolicy)
|
UPX_CXX_DISABLE_NEW_DELETE(LEPolicy)
|
||||||
};
|
};
|
||||||
|
|
||||||
// Native Endianness policy (aka host policy)
|
// Native Endianness policy (aka Host Policy)
|
||||||
#if (ACC_ABI_BIG_ENDIAN)
|
#if (ACC_ABI_BIG_ENDIAN)
|
||||||
typedef BEPolicy NEPolicy;
|
typedef BEPolicy NEPolicy;
|
||||||
typedef BEPolicy HostPolicy;
|
typedef BEPolicy HostPolicy;
|
||||||
|
|||||||
+43
-49
@@ -158,8 +158,8 @@ static_assert(8 * sizeof(int) == __INT_WIDTH__, "");
|
|||||||
#if defined(__LONG_WIDTH__)
|
#if defined(__LONG_WIDTH__)
|
||||||
static_assert(8 * sizeof(long) == __LONG_WIDTH__, "");
|
static_assert(8 * sizeof(long) == __LONG_WIDTH__, "");
|
||||||
#endif
|
#endif
|
||||||
#if defined(__LONG_LONG_WIDTH__)
|
#if defined(__LLONG_WIDTH__)
|
||||||
static_assert(8 * sizeof(long long) == __LONG_LONG_WIDTH__, "");
|
static_assert(8 * sizeof(long long) == __LLONG_WIDTH__, "");
|
||||||
#endif
|
#endif
|
||||||
#if defined(__INTMAX_WIDTH__)
|
#if defined(__INTMAX_WIDTH__)
|
||||||
static_assert(8 * sizeof(intmax_t) == __INTMAX_WIDTH__, "");
|
static_assert(8 * sizeof(intmax_t) == __INTMAX_WIDTH__, "");
|
||||||
@@ -255,19 +255,6 @@ static_assert(std::is_unsigned<expected_ptraddr_t>::value, "");
|
|||||||
ASSERT_SAME_TYPE(upx_ptraddr_t, expected_ptraddr_t);
|
ASSERT_SAME_TYPE(upx_ptraddr_t, expected_ptraddr_t);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__INTPTR_TYPE__) && defined(__UINTPTR_TYPE__)
|
|
||||||
#if defined(__m68k__) && defined(__atarist__) && defined(__GNUC__)
|
|
||||||
// BUG: compiler/mintlib mismatch: int vs long
|
|
||||||
#elif (defined(__arm__) || defined(__mips__)) && defined(__linux__) && defined(__clang__) && \
|
|
||||||
(__SIZEOF_LONG__ == 4)
|
|
||||||
// BUG: compiler/libc mismatch: int vs long
|
|
||||||
// TODO later: check zig and clang for possible misconfiguration under 32-bit arm & mips
|
|
||||||
#else
|
|
||||||
ASSERT_SAME_TYPE(intptr_t, expected_intptr_t);
|
|
||||||
ASSERT_SAME_TYPE(uintptr_t, expected_uintptr_t);
|
|
||||||
#endif // BUG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// UPX types
|
// UPX types
|
||||||
ASSERT_SAME_TYPE(signed char, upx_int8_t);
|
ASSERT_SAME_TYPE(signed char, upx_int8_t);
|
||||||
ASSERT_SAME_TYPE(unsigned char, upx_uint8_t);
|
ASSERT_SAME_TYPE(unsigned char, upx_uint8_t);
|
||||||
@@ -296,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
|
||||||
@@ -727,6 +714,7 @@ template <class A, class B>
|
|||||||
static forceinline bool testNoAliasing(A *a, B *b) noexcept {
|
static forceinline bool testNoAliasing(A *a, B *b) noexcept {
|
||||||
return TestNoAliasingStruct<A, B>::test(a, b);
|
return TestNoAliasingStruct<A, B>::test(a, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
struct TestIntegerWrap { // check working -fno-strict-overflow
|
struct TestIntegerWrap { // check working -fno-strict-overflow
|
||||||
static inline bool inc_gt(const T x) noexcept { return x + 1 > x; }
|
static inline bool inc_gt(const T x) noexcept { return x + 1 > x; }
|
||||||
@@ -1113,7 +1101,7 @@ void upx_compiler_sanity_check(void) noexcept {
|
|||||||
assert_noexcept(TestBELE<BE32>::test());
|
assert_noexcept(TestBELE<BE32>::test());
|
||||||
assert_noexcept(TestBELE<BE64>::test());
|
assert_noexcept(TestBELE<BE64>::test());
|
||||||
{
|
{
|
||||||
alignas(16) static constexpr byte dd[32] = {
|
alignas(16) static constexpr const byte dd[32] = {
|
||||||
0, 0, 0, 0, 0, 0, 0, 0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8, 0,
|
0, 0, 0, 0, 0, 0, 0, 0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8, 0,
|
||||||
0, 0, 0, 0x7f, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0, 0, 0, 0, 0};
|
0, 0, 0, 0x7f, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0, 0, 0, 0, 0};
|
||||||
constexpr const byte *d = dd + 7;
|
constexpr const byte *d = dd + 7;
|
||||||
@@ -1129,10 +1117,10 @@ void upx_compiler_sanity_check(void) noexcept {
|
|||||||
static_assert(upx::compile_time::get_le24(d) == 0xfdfeff);
|
static_assert(upx::compile_time::get_le24(d) == 0xfdfeff);
|
||||||
static_assert(upx::compile_time::get_le32(d) == 0xfcfdfeff);
|
static_assert(upx::compile_time::get_le32(d) == 0xfcfdfeff);
|
||||||
static_assert(upx::compile_time::get_le64(d) == 0xf8f9fafbfcfdfeffULL);
|
static_assert(upx::compile_time::get_le64(d) == 0xf8f9fafbfcfdfeffULL);
|
||||||
const N_BELE_RTP::AbstractPolicy *bele;
|
|
||||||
assert_noexcept(upx_adler32(d, 4) == 0x09f003f7);
|
assert_noexcept(upx_adler32(d, 4) == 0x09f003f7);
|
||||||
assert_noexcept(upx_adler32(d, 4, 0) == 0x09ec03f6);
|
assert_noexcept(upx_adler32(d, 4, 0) == 0x09ec03f6);
|
||||||
assert_noexcept(upx_adler32(d, 4, 1) == 0x09f003f7);
|
assert_noexcept(upx_adler32(d, 4, 1) == 0x09f003f7);
|
||||||
|
const N_BELE_RTP::AbstractPolicy *bele;
|
||||||
bele = &N_BELE_RTP::be_policy;
|
bele = &N_BELE_RTP::be_policy;
|
||||||
assert_noexcept(get_be16(d) == 0xfffe);
|
assert_noexcept(get_be16(d) == 0xfffe);
|
||||||
assert_noexcept(bele->get16(d) == 0xfffe);
|
assert_noexcept(bele->get16(d) == 0xfffe);
|
||||||
@@ -1144,6 +1132,7 @@ void upx_compiler_sanity_check(void) noexcept {
|
|||||||
assert_noexcept(bele->get32(d) == 0xfffefdfc);
|
assert_noexcept(bele->get32(d) == 0xfffefdfc);
|
||||||
assert_noexcept(get_be32_signed(d) == -66052);
|
assert_noexcept(get_be32_signed(d) == -66052);
|
||||||
assert_noexcept(get_be64(d) == 0xfffefdfcfbfaf9f8ULL);
|
assert_noexcept(get_be64(d) == 0xfffefdfcfbfaf9f8ULL);
|
||||||
|
assert_noexcept(bele->get64(d) == 0xfffefdfcfbfaf9f8ULL);
|
||||||
assert_noexcept(get_be64_signed(d) == -283686952306184LL);
|
assert_noexcept(get_be64_signed(d) == -283686952306184LL);
|
||||||
bele = &N_BELE_RTP::le_policy;
|
bele = &N_BELE_RTP::le_policy;
|
||||||
assert_noexcept(get_le16(d) == 0xfeff);
|
assert_noexcept(get_le16(d) == 0xfeff);
|
||||||
@@ -1156,6 +1145,7 @@ void upx_compiler_sanity_check(void) noexcept {
|
|||||||
assert_noexcept(bele->get32(d) == 0xfcfdfeff);
|
assert_noexcept(bele->get32(d) == 0xfcfdfeff);
|
||||||
assert_noexcept(get_le32_signed(d) == -50462977);
|
assert_noexcept(get_le32_signed(d) == -50462977);
|
||||||
assert_noexcept(get_le64(d) == 0xf8f9fafbfcfdfeffULL);
|
assert_noexcept(get_le64(d) == 0xf8f9fafbfcfdfeffULL);
|
||||||
|
assert_noexcept(bele->get64(d) == 0xf8f9fafbfcfdfeffULL);
|
||||||
assert_noexcept(get_le64_signed(d) == -506097522914230529LL);
|
assert_noexcept(get_le64_signed(d) == -506097522914230529LL);
|
||||||
static_assert(get_be24(d) == 0xfffefd);
|
static_assert(get_be24(d) == 0xfffefd);
|
||||||
static_assert(get_le24(d) == 0xfdfeff);
|
static_assert(get_le24(d) == 0xfdfeff);
|
||||||
@@ -1222,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++) {
|
||||||
@@ -768,7 +770,7 @@ static_assert(sizeof(TestCT) == 8);
|
|||||||
static_assert(alignof(TestCT) == 1);
|
static_assert(alignof(TestCT) == 1);
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
TEST_CASE("upx::compile_time") {
|
TEST_CASE("upx::compile_time 1") {
|
||||||
constexpr upx_uint16_t v16 = 0x0201;
|
constexpr upx_uint16_t v16 = 0x0201;
|
||||||
constexpr upx_uint32_t v24 = 0x030201;
|
constexpr upx_uint32_t v24 = 0x030201;
|
||||||
constexpr upx_uint32_t v32 = 0x04030201;
|
constexpr upx_uint32_t v32 = 0x04030201;
|
||||||
@@ -865,7 +867,7 @@ TEST_CASE("upx::compile_time") {
|
|||||||
constexpr auto le64 = TestCT::makeLE64(v64);
|
constexpr auto le64 = TestCT::makeLE64(v64);
|
||||||
static_assert(upx::compile_time::get_le64(le64.d) == v64);
|
static_assert(upx::compile_time::get_le64(le64.d) == v64);
|
||||||
static_assert(mem_eq(le64.d, "\x01\x02\x03\x04\x05\x06\x07\x08", 8));
|
static_assert(mem_eq(le64.d, "\x01\x02\x03\x04\x05\x06\x07\x08", 8));
|
||||||
memset(buf, 0, 8);
|
upx::compile_time::mem_clear(buf, 8);
|
||||||
TestCT::noinline_set_le64(buf, v64);
|
TestCT::noinline_set_le64(buf, v64);
|
||||||
assert_noexcept(TestCT::noinline_get_le64(buf) == v64);
|
assert_noexcept(TestCT::noinline_get_le64(buf) == v64);
|
||||||
assert_noexcept(upx::compile_time::get_le64(buf) == v64);
|
assert_noexcept(upx::compile_time::get_le64(buf) == v64);
|
||||||
@@ -886,7 +888,7 @@ TEST_CASE("upx::compile_time") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("upx::compile_time") {
|
TEST_CASE("upx::compile_time 2") {
|
||||||
constexpr upx_uint16_t v16 = 0xf2f1;
|
constexpr upx_uint16_t v16 = 0xf2f1;
|
||||||
constexpr upx_uint32_t v24 = 0xf3f2f1;
|
constexpr upx_uint32_t v24 = 0xf3f2f1;
|
||||||
constexpr upx_uint32_t v32 = 0xf4f3f2f1;
|
constexpr upx_uint32_t v32 = 0xf4f3f2f1;
|
||||||
|
|||||||
+6
-6
@@ -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)
|
||||||
@@ -137,7 +141,7 @@ inline constexpr bool upx_is_integral_v = upx_is_integral<T>::value;
|
|||||||
#define upx_fake_alignas_16 __attribute__((__aligned__(2))) // object file maximum 2 ???
|
#define upx_fake_alignas_16 __attribute__((__aligned__(2))) // object file maximum 2 ???
|
||||||
#define upx_fake_alignas__(x) upx_fake_alignas_##x
|
#define upx_fake_alignas__(x) upx_fake_alignas_##x
|
||||||
#define alignas(x) upx_fake_alignas__(x)
|
#define alignas(x) upx_fake_alignas__(x)
|
||||||
#define upx_alignas_max upx_fake_alignas_4
|
#define upx_alignas_max upx_fake_alignas_2
|
||||||
#endif
|
#endif
|
||||||
#ifndef upx_alignas_max
|
#ifndef upx_alignas_max
|
||||||
#define upx_alignas_max alignas(std::max_align_t)
|
#define upx_alignas_max alignas(std::max_align_t)
|
||||||
@@ -193,11 +197,7 @@ struct alignas(1) upx_charptr_unit_type final { char hidden__; };
|
|||||||
static_assert(sizeof(upx_charptr_unit_type) == 1);
|
static_assert(sizeof(upx_charptr_unit_type) == 1);
|
||||||
|
|
||||||
// using the system off_t was a bad idea even back in 199x...
|
// using the system off_t was a bad idea even back in 199x...
|
||||||
#if (__SIZEOF_INT128__ == 16) && 0
|
|
||||||
typedef upx_int128_t upx_off_t;
|
|
||||||
#else
|
|
||||||
typedef long long upx_off_t;
|
typedef long long upx_off_t;
|
||||||
#endif
|
|
||||||
#undef off_t
|
#undef off_t
|
||||||
#if 0
|
#if 0
|
||||||
// TODO later cleanup: at some future point we can do this:
|
// TODO later cleanup: at some future point we can do this:
|
||||||
@@ -230,7 +230,7 @@ typedef long long upx_off_t;
|
|||||||
#define very_likely __acc_very_likely
|
#define very_likely __acc_very_likely
|
||||||
#define very_unlikely __acc_very_unlikely
|
#define very_unlikely __acc_very_unlikely
|
||||||
|
|
||||||
// cosmetic: explicitly annotate some functions which may throw exceptions
|
// cosmetic: explicitly annotate some functions which may throw exceptions;
|
||||||
// note that noexcept(false) is the default for all C++ functions anyway
|
// note that noexcept(false) is the default for all C++ functions anyway
|
||||||
#define may_throw noexcept(false)
|
#define may_throw noexcept(false)
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -200,15 +200,15 @@ noreturn void throwEOFException(const char *msg = nullptr, int e = 0) may_throw;
|
|||||||
// some C++ template wizardry is needed to overload throwCantPack() for varargs
|
// some C++ template wizardry is needed to overload throwCantPack() for varargs
|
||||||
template <class T>
|
template <class T>
|
||||||
void throwCantPack(const T *, ...) DELETED_FUNCTION;
|
void throwCantPack(const T *, ...) DELETED_FUNCTION;
|
||||||
template <>
|
|
||||||
noreturn void throwCantPack(const char *format, ...) may_throw attribute_format(1, 2);
|
|
||||||
template <class T>
|
template <class T>
|
||||||
void throwCantUnpack(const T *, ...) DELETED_FUNCTION;
|
void throwCantUnpack(const T *, ...) DELETED_FUNCTION;
|
||||||
template <>
|
|
||||||
noreturn void throwCantUnpack(const char *format, ...) may_throw attribute_format(1, 2);
|
|
||||||
template <class T>
|
template <class T>
|
||||||
void throwInternalError(const T *, ...) DELETED_FUNCTION;
|
void throwInternalError(const T *, ...) DELETED_FUNCTION;
|
||||||
template <>
|
template <>
|
||||||
|
noreturn void throwCantPack(const char *format, ...) may_throw attribute_format(1, 2);
|
||||||
|
template <>
|
||||||
|
noreturn void throwCantUnpack(const char *format, ...) may_throw attribute_format(1, 2);
|
||||||
|
template <>
|
||||||
noreturn void throwInternalError(const char *format, ...) may_throw attribute_format(1, 2);
|
noreturn void throwInternalError(const char *format, ...) may_throw attribute_format(1, 2);
|
||||||
|
|
||||||
/* vim:set ts=4 sw=4 et: */
|
/* vim:set ts=4 sw=4 et: */
|
||||||
|
|||||||
+4
-2
@@ -129,7 +129,8 @@ void FileBase::closex() may_throw {
|
|||||||
upx_off_t FileBase::seek(upx_off_t off, int whence) {
|
upx_off_t FileBase::seek(upx_off_t off, int whence) {
|
||||||
if (!isOpen())
|
if (!isOpen())
|
||||||
throwIOException("bad seek 1");
|
throwIOException("bad seek 1");
|
||||||
mem_size_assert(1, off >= 0 ? off : -off); // sanity check
|
if (!mem_size_valid_bytes(off >= 0 ? off : -off)) // sanity check
|
||||||
|
throwIOException("bad seek");
|
||||||
if (whence == SEEK_SET) {
|
if (whence == SEEK_SET) {
|
||||||
if (off < 0)
|
if (off < 0)
|
||||||
throwIOException("bad seek 2");
|
throwIOException("bad seek 2");
|
||||||
@@ -318,7 +319,8 @@ void OutputFile::rewrite(SPAN_P(const void) buf, int len) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
upx_off_t OutputFile::seek(upx_off_t off, int whence) {
|
upx_off_t OutputFile::seek(upx_off_t off, int whence) {
|
||||||
mem_size_assert(1, off >= 0 ? off : -off); // sanity check
|
if (!mem_size_valid_bytes(off >= 0 ? off : -off)) // sanity check
|
||||||
|
throwIOException("bad seek");
|
||||||
assert(!opt->to_stdout);
|
assert(!opt->to_stdout);
|
||||||
switch (whence) {
|
switch (whence) {
|
||||||
case SEEK_SET:
|
case SEEK_SET:
|
||||||
|
|||||||
+5
-1
@@ -220,9 +220,12 @@ void show_help(int verbose) {
|
|||||||
"%s"
|
"%s"
|
||||||
" -d decompress -l list compressed file\n"
|
" -d decompress -l list compressed file\n"
|
||||||
" -t test compressed file -V display version number\n"
|
" -t test compressed file -V display version number\n"
|
||||||
|
"%s"
|
||||||
" -h give %s help -L display software license\n%s",
|
" -h give %s help -L display software license\n%s",
|
||||||
verbose == 0 ? "" : " --best compress best (can be slow for big files)\n",
|
verbose == 0 ? "" : " --best compress best (can be slow for big files)\n",
|
||||||
verbose == 0 ? "more" : "this", verbose == 0 ? "" : "\n");
|
verbose == 0 ? "" : " --fileinfo show parameters of already-compressed file\n",
|
||||||
|
verbose == 0 ? "more" : "this",
|
||||||
|
verbose == 0 ? "" : "\n");
|
||||||
|
|
||||||
fg = con_fg(f, FG_YELLOW);
|
fg = con_fg(f, FG_YELLOW);
|
||||||
con_fprintf(f, "Options:\n");
|
con_fprintf(f, "Options:\n");
|
||||||
@@ -339,6 +342,7 @@ void show_help(int verbose) {
|
|||||||
fg = con_fg(f, fg);
|
fg = con_fg(f, fg);
|
||||||
con_fprintf(f,
|
con_fprintf(f,
|
||||||
" --preserve-build-id copy .gnu.note.build-id to compressed output\n"
|
" --preserve-build-id copy .gnu.note.build-id to compressed output\n"
|
||||||
|
" --catch-sigsegv debug errors in hardware or de-compressor\n"
|
||||||
"\n");
|
"\n");
|
||||||
}
|
}
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|||||||
+5
-1
@@ -742,6 +742,9 @@ static int do_option(int optc, const char *arg) {
|
|||||||
case 678:
|
case 678:
|
||||||
opt->o_unix.android_old = true;
|
opt->o_unix.android_old = true;
|
||||||
break;
|
break;
|
||||||
|
case 679:
|
||||||
|
opt->o_unix.catch_sigsegv = true;
|
||||||
|
break;
|
||||||
// ps1/exe
|
// ps1/exe
|
||||||
case 670:
|
case 670:
|
||||||
opt->ps1_exe.boot_only = true;
|
opt->ps1_exe.boot_only = true;
|
||||||
@@ -840,8 +843,8 @@ int main_get_options(int argc, char **argv) {
|
|||||||
{"force", 0, N, 'f'}, // force overwrite of output files
|
{"force", 0, N, 'f'}, // force overwrite of output files
|
||||||
{"force-compress", 0, N, 'f'}, // and compression of suspicious files
|
{"force-compress", 0, N, 'f'}, // and compression of suspicious files
|
||||||
{"force-overwrite", 0x90, N, 529}, // force overwrite of output files
|
{"force-overwrite", 0x90, N, 529}, // force overwrite of output files
|
||||||
{"link", 0x90, N, 530}, // preserve hard link
|
|
||||||
{"info", 0, N, 'i'}, // info mode
|
{"info", 0, N, 'i'}, // info mode
|
||||||
|
{"link", 0x90, N, 530}, // preserve hard link
|
||||||
{"no-env", 0x10, N, 519}, // no environment var
|
{"no-env", 0x10, N, 519}, // no environment var
|
||||||
{"no-link", 0x90, N, 531}, // do not preserve hard link [default]
|
{"no-link", 0x90, N, 531}, // do not preserve hard link [default]
|
||||||
{"no-mode", 0x10, N, 526}, // do not preserve mode (permissions)
|
{"no-mode", 0x10, N, 526}, // do not preserve mode (permissions)
|
||||||
@@ -957,6 +960,7 @@ int main_get_options(int argc, char **argv) {
|
|||||||
{"android-shlib", 0, N, 676},
|
{"android-shlib", 0, N, 676},
|
||||||
{"force-pie", 0x90, N, 677},
|
{"force-pie", 0x90, N, 677},
|
||||||
{"android-old", 0, N, 678},
|
{"android-old", 0, N, 678},
|
||||||
|
{"catch-sigsegv", 0, N, 679},
|
||||||
// ps1/exe
|
// ps1/exe
|
||||||
{"boot-only", 0x90, N, 670},
|
{"boot-only", 0x90, N, 670},
|
||||||
{"no-align", 0x90, N, 671},
|
{"no-align", 0x90, N, 671},
|
||||||
|
|||||||
+2
-1
@@ -28,7 +28,8 @@
|
|||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
|
|
||||||
static Options global_options;
|
static Options global_options;
|
||||||
Options *opt = &global_options; // also see class PackMaster for per-file local options
|
// also see class PackMaster for per-file local options
|
||||||
|
Options *opt = &global_options;
|
||||||
|
|
||||||
#if WITH_THREADS
|
#if WITH_THREADS
|
||||||
std::mutex opt_lock_mutex; // for locking "opt"
|
std::mutex opt_lock_mutex; // for locking "opt"
|
||||||
|
|||||||
+3
-1
@@ -30,7 +30,8 @@
|
|||||||
struct Options;
|
struct Options;
|
||||||
#define options_t Options // old name
|
#define options_t Options // old name
|
||||||
|
|
||||||
extern Options *opt; // global options, see class PackMaster for per-file local options
|
// global options, see class PackMaster for per-file local options
|
||||||
|
extern Options *opt;
|
||||||
|
|
||||||
#if WITH_THREADS
|
#if WITH_THREADS
|
||||||
extern std::mutex opt_lock_mutex; // for locking "opt"
|
extern std::mutex opt_lock_mutex; // for locking "opt"
|
||||||
@@ -161,6 +162,7 @@ struct Options final {
|
|||||||
bool android_shlib; // keep some ElfXX_Shdr for dlopen()
|
bool android_shlib; // keep some ElfXX_Shdr for dlopen()
|
||||||
bool android_old; // < Android_10 ==> no memfd_create, inconsistent __NR_ftruncate
|
bool android_old; // < Android_10 ==> no memfd_create, inconsistent __NR_ftruncate
|
||||||
bool force_pie; // choose DF_1_PIE instead of is_shlib
|
bool force_pie; // choose DF_1_PIE instead of is_shlib
|
||||||
|
bool catch_sigsegv; // to debug hardware or de-compressor
|
||||||
} o_unix;
|
} o_unix;
|
||||||
struct {
|
struct {
|
||||||
bool boot_only;
|
bool boot_only;
|
||||||
|
|||||||
+115
-49
@@ -1532,9 +1532,9 @@ 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 << 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");
|
||||||
|
|
||||||
// Start of dasiy-chain fall-through.
|
// Start of dasiy-chain fall-through.
|
||||||
@@ -1554,10 +1554,13 @@ PackLinuxElf32::buildLinuxLoader(
|
|||||||
len += snprintf(&sec[len], sizeof(sec) - len, ",%s", "EXP_TAIL");
|
len += snprintf(&sec[len], sizeof(sec) - len, ",%s", "EXP_TAIL");
|
||||||
// End of daisy-chain fall-through.
|
// End of daisy-chain fall-through.
|
||||||
|
|
||||||
len += snprintf(&sec[len], sizeof(sec) - len, ",%s",
|
// MIPS directly calls memfd_create
|
||||||
(sec_arm_attr || is_asl)
|
if (this->e_machine != Elf32_Ehdr::EM_MIPS) {
|
||||||
? "HUMF_A,UMF_ANDROID"
|
len += snprintf(&sec[len], sizeof(sec) - len, ",%s",
|
||||||
: "HUMF_L,UMF_LINUX");
|
(sec_arm_attr || is_asl)
|
||||||
|
? "HUMF_A,UMF_ANDROID"
|
||||||
|
: "HUMF_L,UMF_LINUX");
|
||||||
|
}
|
||||||
if (hasLoaderSection("STRCON")) {
|
if (hasLoaderSection("STRCON")) {
|
||||||
len += snprintf(&sec[len], sizeof(sec) - len, ",%s", "STRCON");
|
len += snprintf(&sec[len], sizeof(sec) - len, ",%s", "STRCON");
|
||||||
}
|
}
|
||||||
@@ -1581,9 +1584,9 @@ 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 << 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");
|
||||||
if (((1u<<M_NRV2B_LE32)|(1u<<M_NRV2B_8)|(1u<<M_NRV2B_LE16)) & m_decompr) {
|
if (((1u<<M_NRV2B_LE32)|(1u<<M_NRV2B_8)|(1u<<M_NRV2B_LE16)) & m_decompr) {
|
||||||
len += snprintf(&sec[len], sizeof(sec) - len, ",%s", "NRV2B");
|
len += snprintf(&sec[len], sizeof(sec) - len, ",%s", "NRV2B");
|
||||||
@@ -1678,7 +1681,11 @@ PackLinuxElf32::buildLinuxLoader(
|
|||||||
|| this->e_machine==Elf32_Ehdr::EM_MIPS
|
|| this->e_machine==Elf32_Ehdr::EM_MIPS
|
||||||
) { // main program with ELF2 de-compressor
|
) { // main program with ELF2 de-compressor
|
||||||
addLoader("ELFMAINX");
|
addLoader("ELFMAINX");
|
||||||
|
if (this->e_machine==Elf32_Ehdr::EM_ARM) { // hardware is more problematic
|
||||||
|
if (opt->o_unix.catch_sigsegv && hasLoaderSection("ELFSIGSEGV"))
|
||||||
|
addLoader("ELFSIGSEGV");
|
||||||
|
addLoader("ELFMAINX2");
|
||||||
|
}
|
||||||
// Only if $ARCH-linux.elf-entry.S calls upx_mmap_and_fd instead of memfd_create
|
// Only if $ARCH-linux.elf-entry.S calls upx_mmap_and_fd instead of memfd_create
|
||||||
if (this->e_machine != Elf32_Ehdr::EM_PPC
|
if (this->e_machine != Elf32_Ehdr::EM_PPC
|
||||||
&& this->e_machine != Elf32_Ehdr::EM_MIPS)
|
&& this->e_machine != Elf32_Ehdr::EM_MIPS)
|
||||||
@@ -1689,7 +1696,7 @@ PackLinuxElf32::buildLinuxLoader(
|
|||||||
defineSymbols(ft);
|
defineSymbols(ft);
|
||||||
}
|
}
|
||||||
else { // main program with ELF1 de-compressor
|
else { // main program with ELF1 de-compressor
|
||||||
addStubEntrySections(ft, methods_used | (1u << ph_forced_method(ph.method)) );
|
addStubEntrySections(ft, methods_used | (1u << (0xFF & ph_forced_method(ph.method))) );
|
||||||
if (!xct_off) { // main program
|
if (!xct_off) { // main program
|
||||||
defineSymbols(ft);
|
defineSymbols(ft);
|
||||||
}
|
}
|
||||||
@@ -1726,9 +1733,9 @@ 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 << 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");
|
||||||
|
|
||||||
// Start of dasiy-chain fall-through.
|
// Start of dasiy-chain fall-through.
|
||||||
@@ -1771,9 +1778,9 @@ 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 << 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");
|
||||||
if (((1u<<M_NRV2B_LE32)|(1u<<M_NRV2B_8)|(1u<<M_NRV2B_LE16)) & m_decompr) {
|
if (((1u<<M_NRV2B_LE32)|(1u<<M_NRV2B_8)|(1u<<M_NRV2B_LE16)) & m_decompr) {
|
||||||
len += snprintf(&sec[len], sizeof(sec) - len, ",%s", "NRV2B");
|
len += snprintf(&sec[len], sizeof(sec) - len, ",%s", "NRV2B");
|
||||||
@@ -1868,7 +1875,14 @@ PackLinuxElf64::buildLinuxLoader(
|
|||||||
|| this->e_machine==Elf64_Ehdr::EM_AARCH64
|
|| this->e_machine==Elf64_Ehdr::EM_AARCH64
|
||||||
|| this->e_machine==Elf64_Ehdr::EM_PPC64
|
|| this->e_machine==Elf64_Ehdr::EM_PPC64
|
||||||
) { // main program with ELF2 de-compressor
|
) { // main program with ELF2 de-compressor
|
||||||
addLoader("ELFMAINX,ELFMAINZ,FOLDEXEC,IDENTSTR");
|
addLoader("ELFMAINX");
|
||||||
|
// NYI for PPC64 {
|
||||||
|
if (opt->o_unix.catch_sigsegv && hasLoaderSection("ELFSIGSEGV"))
|
||||||
|
addLoader("ELFSIGSEGV");
|
||||||
|
if (this->e_machine!=Elf64_Ehdr::EM_PPC64)
|
||||||
|
addLoader("ELFMAINX2");
|
||||||
|
// } end NYI for PPC64
|
||||||
|
addLoader("ELFMAINZ,FOLDEXEC,IDENTSTR");
|
||||||
if (this->e_machine==Elf64_Ehdr::EM_PPC64
|
if (this->e_machine==Elf64_Ehdr::EM_PPC64
|
||||||
&& ehdri.e_ident[Elf64_Ehdr::EI_DATA]==Elf64_Ehdr::ELFDATA2MSB) {
|
&& ehdri.e_ident[Elf64_Ehdr::EI_DATA]==Elf64_Ehdr::ELFDATA2MSB) {
|
||||||
addLoader("ELFMAINZe");
|
addLoader("ELFMAINZe");
|
||||||
@@ -1878,7 +1892,7 @@ PackLinuxElf64::buildLinuxLoader(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { // main program with ELF1 de-compressor
|
else { // main program with ELF1 de-compressor
|
||||||
addStubEntrySections(ft, methods_used | (1u << ph_forced_method(ph.method)) );
|
addStubEntrySections(ft, methods_used | (1u << (0xFF & ph_forced_method(ph.method))) );
|
||||||
if (!xct_off) { // main program
|
if (!xct_off) { // main program
|
||||||
defineSymbols(ft);
|
defineSymbols(ft);
|
||||||
}
|
}
|
||||||
@@ -2312,6 +2326,8 @@ unsigned PackLinuxElf32::elf_find_table_size(unsigned dt_type, unsigned sh_type)
|
|||||||
x_rva = elf_unsigned_dynamic(dt_type);
|
x_rva = elf_unsigned_dynamic(dt_type);
|
||||||
}
|
}
|
||||||
Elf32_Phdr const *const x_phdr = elf_find_Phdr_for_va(x_rva, phdri, e_phnum);
|
Elf32_Phdr const *const x_phdr = elf_find_Phdr_for_va(x_rva, phdri, e_phnum);
|
||||||
|
if (!x_phdr)
|
||||||
|
return ~0u; // corrupted Phdrs?
|
||||||
unsigned const d_off = x_rva - get_te32(&x_phdr->p_vaddr);
|
unsigned const d_off = x_rva - get_te32(&x_phdr->p_vaddr);
|
||||||
unsigned const y_ndx = find_dt_ndx(d_off + get_te32(&x_phdr->p_offset));
|
unsigned const y_ndx = find_dt_ndx(d_off + get_te32(&x_phdr->p_offset));
|
||||||
if (~0u != y_ndx) {
|
if (~0u != y_ndx) {
|
||||||
@@ -2373,10 +2389,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) {
|
||||||
@@ -2394,6 +2411,12 @@ PackLinuxElf32::invert_pt_dynamic(Elf32_Dyn const *dynp, u32_t headway)
|
|||||||
// Find end of DT_HASH
|
// Find end of DT_HASH
|
||||||
hashend = (unsigned const *)(void const *)(elf_find_table_size(
|
hashend = (unsigned const *)(void const *)(elf_find_table_size(
|
||||||
Elf32_Dyn::DT_HASH, Elf32_Shdr::SHT_HASH) + (char const *)hashtab);
|
Elf32_Dyn::DT_HASH, Elf32_Shdr::SHT_HASH) + (char const *)hashtab);
|
||||||
|
if (!hashtab || (char const *)hashend <= (char const *)&hashtab[2]
|
||||||
|
|| file_image.getSizeInBytes()
|
||||||
|
< (unsigned)((char const *)&hashtab[2] - (char *)&file_image[0]) )
|
||||||
|
{
|
||||||
|
throwCantPack("bad DT_HASH %#x", v_hsh);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned const nbucket = get_te32(&hashtab[0]);
|
unsigned const nbucket = get_te32(&hashtab[0]);
|
||||||
unsigned const *const buckets = &hashtab[2];
|
unsigned const *const buckets = &hashtab[2];
|
||||||
@@ -3786,8 +3809,8 @@ PackLinuxElf32::generateElfHdr(
|
|||||||
assert(get_te16(&h2->ehdr.e_phentsize) == sizeof(Elf32_Phdr));
|
assert(get_te16(&h2->ehdr.e_phentsize) == sizeof(Elf32_Phdr));
|
||||||
|
|
||||||
h2->ehdr.e_shoff = 0;
|
h2->ehdr.e_shoff = 0;
|
||||||
|
set_te16(&h2->ehdr.e_shentsize, sizeof(Elf32_Shdr)); // libbfd-2.41-38.fc40
|
||||||
if (o_elf_shnum) {
|
if (o_elf_shnum) {
|
||||||
set_te16(&h2->ehdr.e_shentsize, sizeof(Elf32_Shdr));
|
|
||||||
h2->ehdr.e_shnum = o_elf_shnum;
|
h2->ehdr.e_shnum = o_elf_shnum;
|
||||||
h2->ehdr.e_shstrndx = o_elf_shnum - 1;
|
h2->ehdr.e_shstrndx = o_elf_shnum - 1;
|
||||||
}
|
}
|
||||||
@@ -3795,7 +3818,9 @@ PackLinuxElf32::generateElfHdr(
|
|||||||
// https://bugzilla.redhat.com/show_bug.cgi?id=2131609
|
// https://bugzilla.redhat.com/show_bug.cgi?id=2131609
|
||||||
// 0==.e_shnum is a special case for libbfd
|
// 0==.e_shnum is a special case for libbfd
|
||||||
// that requires 0==.e_shentsize in order to force "no Shdrs"
|
// that requires 0==.e_shentsize in order to force "no Shdrs"
|
||||||
h2->ehdr.e_shentsize = 0;
|
// But qemu 8.2.9 with libbfd-2.41-38.fc40 says EXEC format error
|
||||||
|
// and uses 0==.e_shoff instead.
|
||||||
|
// h2->ehdr.e_shentsize = 0;
|
||||||
h2->ehdr.e_shnum = 0;
|
h2->ehdr.e_shnum = 0;
|
||||||
h2->ehdr.e_shstrndx = 0;
|
h2->ehdr.e_shstrndx = 0;
|
||||||
}
|
}
|
||||||
@@ -3995,7 +4020,7 @@ PackOpenBSDElf32x86::generateElfHdr(
|
|||||||
h3->ehdr.e_shoff = 0;
|
h3->ehdr.e_shoff = 0;
|
||||||
assert(get_te16(&h3->ehdr.e_ehsize) == sizeof(Elf32_Ehdr));
|
assert(get_te16(&h3->ehdr.e_ehsize) == sizeof(Elf32_Ehdr));
|
||||||
assert(get_te16(&h3->ehdr.e_phentsize) == sizeof(Elf32_Phdr));
|
assert(get_te16(&h3->ehdr.e_phentsize) == sizeof(Elf32_Phdr));
|
||||||
h3->ehdr.e_shentsize = 0;
|
set_te16(&h3->ehdr.e_shentsize, sizeof(Elf32_Shdr)); // libbfd-2.41-38.fc40
|
||||||
h3->ehdr.e_shnum = 0;
|
h3->ehdr.e_shnum = 0;
|
||||||
h3->ehdr.e_shstrndx = 0;
|
h3->ehdr.e_shstrndx = 0;
|
||||||
|
|
||||||
@@ -4091,8 +4116,8 @@ PackLinuxElf64::generateElfHdr(
|
|||||||
assert(get_te16(&h2->ehdr.e_phentsize) == sizeof(Elf64_Phdr));
|
assert(get_te16(&h2->ehdr.e_phentsize) == sizeof(Elf64_Phdr));
|
||||||
|
|
||||||
h2->ehdr.e_shoff = 0;
|
h2->ehdr.e_shoff = 0;
|
||||||
|
set_te16(&h2->ehdr.e_shentsize, sizeof(Elf64_Shdr)); // libbfd-2.41-38.fc40
|
||||||
if (o_elf_shnum) {
|
if (o_elf_shnum) {
|
||||||
set_te16(&h2->ehdr.e_shentsize, sizeof(Elf64_Shdr));
|
|
||||||
h2->ehdr.e_shnum = o_elf_shnum;
|
h2->ehdr.e_shnum = o_elf_shnum;
|
||||||
h2->ehdr.e_shstrndx = o_elf_shnum - 1;
|
h2->ehdr.e_shstrndx = o_elf_shnum - 1;
|
||||||
}
|
}
|
||||||
@@ -4100,7 +4125,9 @@ PackLinuxElf64::generateElfHdr(
|
|||||||
// https://bugzilla.redhat.com/show_bug.cgi?id=2131609
|
// https://bugzilla.redhat.com/show_bug.cgi?id=2131609
|
||||||
// 0==.e_shnum is a special case for libbfd
|
// 0==.e_shnum is a special case for libbfd
|
||||||
// that requires 0==.e_shentsize in order to force "no Shdrs"
|
// that requires 0==.e_shentsize in order to force "no Shdrs"
|
||||||
h2->ehdr.e_shentsize = 0;
|
// But qemu 8.2.9 with libbfd-2.41-38.fc40 says EXEC format error
|
||||||
|
// and uses 0==.e_shoff instead.
|
||||||
|
// h2->ehdr.e_shentsize = 0;
|
||||||
h2->ehdr.e_shnum = 0;
|
h2->ehdr.e_shnum = 0;
|
||||||
h2->ehdr.e_shstrndx = 0;
|
h2->ehdr.e_shstrndx = 0;
|
||||||
}
|
}
|
||||||
@@ -4300,7 +4327,7 @@ void PackLinuxElf32::pack1(OutputFile * /*fo*/, Filter &ft)
|
|||||||
fi->readx(ibuf, filesz);
|
fi->readx(ibuf, filesz);
|
||||||
ft = orig_ft;
|
ft = orig_ft;
|
||||||
ph = orig_ph;
|
ph = orig_ph;
|
||||||
ph.method = ph_force_method(methods[k]);
|
ph.set_method(ph_force_method(methods[k]), offset);
|
||||||
ph.u_len = filesz;
|
ph.u_len = filesz;
|
||||||
compressWithFilters(&ft, OVERHEAD, NULL_cconf, 10, true);
|
compressWithFilters(&ft, OVERHEAD, NULL_cconf, 10, true);
|
||||||
sz_this += ph.c_len;
|
sz_this += ph.c_len;
|
||||||
@@ -4313,7 +4340,7 @@ void PackLinuxElf32::pack1(OutputFile * /*fo*/, Filter &ft)
|
|||||||
fi->readx(ibuf, sz_tail);
|
fi->readx(ibuf, sz_tail);
|
||||||
ft = orig_ft;
|
ft = orig_ft;
|
||||||
ph = orig_ph;
|
ph = orig_ph;
|
||||||
ph.method = ph_force_method(methods[k]);
|
ph.set_method(ph_force_method(methods[k]));
|
||||||
ph.u_len = sz_tail;
|
ph.u_len = sz_tail;
|
||||||
compressWithFilters(&ft, OVERHEAD, NULL_cconf, 10, true);
|
compressWithFilters(&ft, OVERHEAD, NULL_cconf, 10, true);
|
||||||
sz_this += ph.c_len;
|
sz_this += ph.c_len;
|
||||||
@@ -4326,7 +4353,7 @@ void PackLinuxElf32::pack1(OutputFile * /*fo*/, Filter &ft)
|
|||||||
}
|
}
|
||||||
ft = orig_ft;
|
ft = orig_ft;
|
||||||
ph = orig_ph;
|
ph = orig_ph;
|
||||||
ph.method = ph_force_method(method_best);
|
ph.set_method(ph_force_method(method_best));
|
||||||
}
|
}
|
||||||
|
|
||||||
Elf32_Phdr *phdr = phdri;
|
Elf32_Phdr *phdr = phdri;
|
||||||
@@ -5152,7 +5179,7 @@ void PackLinuxElf64::pack1(OutputFile * /*fo*/, Filter &ft)
|
|||||||
fi->readx(ibuf, filesz);
|
fi->readx(ibuf, filesz);
|
||||||
ft = orig_ft;
|
ft = orig_ft;
|
||||||
ph = orig_ph;
|
ph = orig_ph;
|
||||||
ph.method = ph_force_method(methods[k]);
|
ph.set_method(ph_force_method(methods[k]));
|
||||||
ph.u_len = filesz;
|
ph.u_len = filesz;
|
||||||
compressWithFilters(&ft, OVERHEAD, NULL_cconf, 10, true);
|
compressWithFilters(&ft, OVERHEAD, NULL_cconf, 10, true);
|
||||||
sz_this += ph.c_len;
|
sz_this += ph.c_len;
|
||||||
@@ -5165,7 +5192,7 @@ void PackLinuxElf64::pack1(OutputFile * /*fo*/, Filter &ft)
|
|||||||
fi->readx(ibuf, sz_tail);
|
fi->readx(ibuf, sz_tail);
|
||||||
ft = orig_ft;
|
ft = orig_ft;
|
||||||
ph = orig_ph;
|
ph = orig_ph;
|
||||||
ph.method = ph_force_method(methods[k]);
|
ph.set_method(ph_force_method(methods[k]));
|
||||||
ph.u_len = sz_tail;
|
ph.u_len = sz_tail;
|
||||||
compressWithFilters(&ft, OVERHEAD, NULL_cconf, 10, true);
|
compressWithFilters(&ft, OVERHEAD, NULL_cconf, 10, true);
|
||||||
sz_this += ph.c_len;
|
sz_this += ph.c_len;
|
||||||
@@ -5178,7 +5205,7 @@ void PackLinuxElf64::pack1(OutputFile * /*fo*/, Filter &ft)
|
|||||||
}
|
}
|
||||||
ft = orig_ft;
|
ft = orig_ft;
|
||||||
ph = orig_ph;
|
ph = orig_ph;
|
||||||
ph.method = ph_force_method(method_best);
|
ph.set_method(ph_force_method(method_best));
|
||||||
}
|
}
|
||||||
|
|
||||||
Elf64_Phdr *phdr = phdri;
|
Elf64_Phdr *phdr = phdri;
|
||||||
@@ -7303,8 +7330,11 @@ void PackLinuxElf32::un_DT_INIT(
|
|||||||
|| Elf32_Dyn::DT_PREINIT_ARRAY == tag) {
|
|| Elf32_Dyn::DT_PREINIT_ARRAY == tag) {
|
||||||
// 'val' is the RVA of the first slot, which is the slot that
|
// 'val' is the RVA of the first slot, which is the slot that
|
||||||
// the compressor changed to be the entry to the run-time stub.
|
// the compressor changed to be the entry to the run-time stub.
|
||||||
Elf32_Rel *rp = (Elf32_Rel *)elf_find_dynamic(Elf32_Dyn::DT_NULL);
|
Elf32_Dyn *dyn_null = elf_find_dynptr(Elf32_Dyn::DT_NULL);
|
||||||
((Elf32_Dyn *)elf_find_dynptr(Elf32_Dyn::DT_NULL))->d_val = 0;
|
if (!dyn_null)
|
||||||
|
throwCantUnpack("bad PT_DYNAMIC .end");
|
||||||
|
Elf32_Rel *rp = (Elf32_Rel *)elf_find_dynamic(dyn_null->d_val);
|
||||||
|
dyn_null->d_val = 0;
|
||||||
if (rp) {
|
if (rp) {
|
||||||
// Compressor saved the original *rp in dynsym[0]
|
// Compressor saved the original *rp in dynsym[0]
|
||||||
Elf32_Rel *rp_unc = (Elf32_Rel *)&dynsym[0]; // pointer
|
Elf32_Rel *rp_unc = (Elf32_Rel *)&dynsym[0]; // pointer
|
||||||
@@ -7403,6 +7433,8 @@ void PackLinuxElf32::un_DT_INIT(
|
|||||||
|
|
||||||
Elf32_Ehdr const *const o_ehdr = (Elf32_Ehdr const *)(void *)lowmem;
|
Elf32_Ehdr const *const o_ehdr = (Elf32_Ehdr const *)(void *)lowmem;
|
||||||
unsigned const o_phnum = o_ehdr->e_phnum;
|
unsigned const o_phnum = o_ehdr->e_phnum;
|
||||||
|
if (((1<<16) - sizeof(Elf32_Ehdr)) / sizeof(Elf32_Phdr) < o_phnum)
|
||||||
|
throwCantUnpack("bad Ehdr.e_phnum %#x", o_phnum);
|
||||||
phdr = phdro;
|
phdr = phdro;
|
||||||
for (unsigned j = 0; j < o_phnum; ++j, ++phdr) if (is_LOAD(phdr)) {
|
for (unsigned j = 0; j < o_phnum; ++j, ++phdr) if (is_LOAD(phdr)) {
|
||||||
upx_uint32_t vaddr = get_te32(&phdr->p_vaddr);
|
upx_uint32_t vaddr = get_te32(&phdr->p_vaddr);
|
||||||
@@ -7410,6 +7442,8 @@ void PackLinuxElf32::un_DT_INIT(
|
|||||||
upx_uint32_t d = plt_va - vaddr - asl_delta;
|
upx_uint32_t d = plt_va - vaddr - asl_delta;
|
||||||
if (d < filesz) {
|
if (d < filesz) {
|
||||||
upx_uint32_t offset = get_te32(&phdr->p_offset);
|
upx_uint32_t offset = get_te32(&phdr->p_offset);
|
||||||
|
if ((upx_uint32_t)file_size <= offset)
|
||||||
|
throwCantUnpack("bad phdr[%d].p_offset %#zx", j, (size_t)offset);
|
||||||
if (fo) {
|
if (fo) {
|
||||||
fo->seek(d + offset, SEEK_SET);
|
fo->seek(d + offset, SEEK_SET);
|
||||||
fo->rewrite(jump_slots, n_plt * sizeof(upx_uint32_t));
|
fo->rewrite(jump_slots, n_plt * sizeof(upx_uint32_t));
|
||||||
@@ -7479,12 +7513,15 @@ void PackLinuxElf64::un_DT_INIT(
|
|||||||
}
|
}
|
||||||
// Apparently the hard case is common for some Android IDEs.
|
// Apparently the hard case is common for some Android IDEs.
|
||||||
// No DT_INIT; only DT_INIT_ARRAY.
|
// No DT_INIT; only DT_INIT_ARRAY.
|
||||||
else if (Elf32_Dyn::DT_INIT_ARRAY == tag
|
else if (Elf64_Dyn::DT_INIT_ARRAY == tag
|
||||||
|| Elf64_Dyn::DT_PREINIT_ARRAY == tag) {
|
|| Elf64_Dyn::DT_PREINIT_ARRAY == tag) {
|
||||||
// 'val' is the RVA of the first slot, which is the slot that
|
// 'val' is the RVA of the first slot, which is the slot that
|
||||||
// the compressor changed to be the entry to the run-time stub.
|
// the compressor changed to be the entry to the run-time stub.
|
||||||
Elf64_Rela *rp = (Elf64_Rela *)elf_find_dynamic(Elf64_Dyn::DT_NULL);
|
Elf64_Dyn *dyn_null = elf_find_dynptr(Elf64_Dyn::DT_NULL);
|
||||||
((Elf64_Dyn *)elf_find_dynptr(Elf64_Dyn::DT_NULL))->d_val = 0;
|
if (!dyn_null)
|
||||||
|
throwCantUnpack("bad PT_DYNAMIC .end");
|
||||||
|
Elf64_Rela *rp = (Elf64_Rela *)elf_find_dynamic(dyn_null->d_val);
|
||||||
|
dyn_null->d_val = 0;
|
||||||
if (rp) {
|
if (rp) {
|
||||||
// Compressor saved the original *rp in dynsym[0]
|
// Compressor saved the original *rp in dynsym[0]
|
||||||
Elf64_Rela *rp_unc = (Elf64_Rela *)&dynsym[0]; // pointer
|
Elf64_Rela *rp_unc = (Elf64_Rela *)&dynsym[0]; // pointer
|
||||||
@@ -7547,6 +7584,8 @@ void PackLinuxElf64::un_DT_INIT(
|
|||||||
|
|
||||||
Elf64_Ehdr const *const o_ehdr = (Elf64_Ehdr const *)(void *)lowmem;
|
Elf64_Ehdr const *const o_ehdr = (Elf64_Ehdr const *)(void *)lowmem;
|
||||||
unsigned const o_phnum = o_ehdr->e_phnum;
|
unsigned const o_phnum = o_ehdr->e_phnum;
|
||||||
|
if (((1<<16) - sizeof(Elf64_Ehdr)) / sizeof(Elf64_Phdr) < o_phnum)
|
||||||
|
throwCantUnpack("bad Ehdr.e_phnum %#x", o_phnum);
|
||||||
phdr = phdro;
|
phdr = phdro;
|
||||||
for (unsigned j = 0; j < o_phnum; ++j, ++phdr) if (is_LOAD(phdr)) {
|
for (unsigned j = 0; j < o_phnum; ++j, ++phdr) if (is_LOAD(phdr)) {
|
||||||
upx_uint64_t vaddr = get_te64(&phdr->p_vaddr);
|
upx_uint64_t vaddr = get_te64(&phdr->p_vaddr);
|
||||||
@@ -7554,6 +7593,8 @@ void PackLinuxElf64::un_DT_INIT(
|
|||||||
upx_uint64_t d = plt_va - vaddr - asl_delta;
|
upx_uint64_t d = plt_va - vaddr - asl_delta;
|
||||||
if (d < filesz) {
|
if (d < filesz) {
|
||||||
upx_uint64_t offset = get_te64(&phdr->p_offset);
|
upx_uint64_t offset = get_te64(&phdr->p_offset);
|
||||||
|
if ((upx_uint64_t)file_size <= offset)
|
||||||
|
throwCantUnpack("bad phdr[%d].p_offset %#zx", j, (size_t)offset);
|
||||||
if (fo) {
|
if (fo) {
|
||||||
fo->seek(d + offset, SEEK_SET);
|
fo->seek(d + offset, SEEK_SET);
|
||||||
fo->rewrite(jump_slots, n_plt * sizeof(upx_uint64_t));
|
fo->rewrite(jump_slots, n_plt * sizeof(upx_uint64_t));
|
||||||
@@ -7620,7 +7661,7 @@ void PackLinuxElf64::unpack(OutputFile *fo)
|
|||||||
fi->readx(&bhdr, szb_info);
|
fi->readx(&bhdr, szb_info);
|
||||||
ph.u_len = get_te32(&bhdr.sz_unc);
|
ph.u_len = get_te32(&bhdr.sz_unc);
|
||||||
ph.c_len = get_te32(&bhdr.sz_cpr);
|
ph.c_len = get_te32(&bhdr.sz_cpr);
|
||||||
ph.method = bhdr.b_method;
|
ph.set_method(bhdr.b_method, overlay_offset + sizeof(p_info));
|
||||||
if (ph.c_len > file_size_u || ph.c_len == 0 || ph.u_len == 0
|
if (ph.c_len > file_size_u || ph.c_len == 0 || ph.u_len == 0
|
||||||
|| ph.u_len > orig_file_size)
|
|| ph.u_len > orig_file_size)
|
||||||
throwCantUnpack("b_info corrupted");
|
throwCantUnpack("b_info corrupted");
|
||||||
@@ -7665,15 +7706,17 @@ void PackLinuxElf64::unpack(OutputFile *fo)
|
|||||||
unsigned b_method = ibuf[0];
|
unsigned b_method = ibuf[0];
|
||||||
unsigned b_extra = ibuf[3];
|
unsigned b_extra = ibuf[3];
|
||||||
if (M_ZSTD >= b_method && 0 == b_extra) {
|
if (M_ZSTD >= b_method && 0 == b_extra) {
|
||||||
fi->seek( -(upx_off_t)(ph.c_len + szb_info), SEEK_CUR);
|
unsigned where = fi->seek( -(upx_off_t)(ph.c_len + szb_info), SEEK_CUR);
|
||||||
szb_info = 12;
|
szb_info = 12;
|
||||||
fi->readx(&bhdr, szb_info);
|
fi->readx(&bhdr, szb_info);
|
||||||
ph.filter_cto = bhdr.b_cto8;
|
ph.filter_cto = bhdr.b_cto8;
|
||||||
ph.method = bhdr.b_method;
|
ph.set_method(bhdr.b_method, where);
|
||||||
prev_method = bhdr.b_method; // FIXME if multiple de-compressors
|
prev_method = bhdr.b_method; // FIXME if multiple de-compressors
|
||||||
fi->readx(ibuf, ph.c_len);
|
fi->readx(ibuf, ph.c_len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (ph.u_len < sizeof(*ehdr))
|
||||||
|
throwCantUnpack("ElfXX_Ehdr corrupted");
|
||||||
decompress(ibuf, (upx_byte *)ehdr, false);
|
decompress(ibuf, (upx_byte *)ehdr, false);
|
||||||
if (ehdr->e_type !=ehdri.e_type
|
if (ehdr->e_type !=ehdri.e_type
|
||||||
|| ehdr->e_machine!=ehdri.e_machine
|
|| ehdr->e_machine!=ehdri.e_machine
|
||||||
@@ -7867,7 +7910,7 @@ void PackLinuxElf64::unpack(OutputFile *fo)
|
|||||||
|
|
||||||
// check for end-of-file
|
// check for end-of-file
|
||||||
fi->readx(&bhdr, szb_info);
|
fi->readx(&bhdr, szb_info);
|
||||||
ph.method = bhdr.b_method;
|
ph.set_method(bhdr.b_method, ~0u);
|
||||||
unsigned const sz_unc = ph.u_len = get_te32(&bhdr.sz_unc);
|
unsigned const sz_unc = ph.u_len = get_te32(&bhdr.sz_unc);
|
||||||
|
|
||||||
if (sz_unc == 0) { // uncompressed size 0 -> EOF
|
if (sz_unc == 0) { // uncompressed size 0 -> EOF
|
||||||
@@ -8372,6 +8415,8 @@ unsigned PackLinuxElf64::elf_find_table_size(unsigned dt_type, unsigned sh_type)
|
|||||||
x_rva = elf_unsigned_dynamic(dt_type);
|
x_rva = elf_unsigned_dynamic(dt_type);
|
||||||
}
|
}
|
||||||
Elf64_Phdr const *const x_phdr = elf_find_Phdr_for_va(x_rva, phdri, e_phnum);
|
Elf64_Phdr const *const x_phdr = elf_find_Phdr_for_va(x_rva, phdri, e_phnum);
|
||||||
|
if (!x_phdr)
|
||||||
|
return ~0u; // corrupted Phdrs?
|
||||||
unsigned const d_off = x_rva - get_te64(&x_phdr->p_vaddr);
|
unsigned const d_off = x_rva - get_te64(&x_phdr->p_vaddr);
|
||||||
unsigned const y_ndx = find_dt_ndx(d_off + get_te64(&x_phdr->p_offset));
|
unsigned const y_ndx = find_dt_ndx(d_off + get_te64(&x_phdr->p_offset));
|
||||||
if (~0u != y_ndx) {
|
if (~0u != y_ndx) {
|
||||||
@@ -8437,10 +8482,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) {
|
||||||
@@ -8459,6 +8505,12 @@ PackLinuxElf64::invert_pt_dynamic(Elf64_Dyn const *dynp, upx_uint64_t headway)
|
|||||||
// Find end of DT_HASH
|
// Find end of DT_HASH
|
||||||
hashend = (unsigned const *)(void const *)(elf_find_table_size(
|
hashend = (unsigned const *)(void const *)(elf_find_table_size(
|
||||||
Elf64_Dyn::DT_HASH, Elf64_Shdr::SHT_HASH) + (char const *)hashtab);
|
Elf64_Dyn::DT_HASH, Elf64_Shdr::SHT_HASH) + (char const *)hashtab);
|
||||||
|
if (!hashtab || (char const *)hashend <= (char const *)&hashtab[2]
|
||||||
|
|| file_image.getSizeInBytes()
|
||||||
|
< (unsigned)((char const *)&hashtab[2] - (char *)&file_image[0]) )
|
||||||
|
{
|
||||||
|
throwCantPack("bad DT_HASH %#x", v_hsh);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned const nbucket = get_te32(&hashtab[0]);
|
unsigned const nbucket = get_te32(&hashtab[0]);
|
||||||
unsigned const *const buckets = &hashtab[2];
|
unsigned const *const buckets = &hashtab[2];
|
||||||
@@ -8622,6 +8674,7 @@ Elf32_Sym const *PackLinuxElf32::elf_lookup(char const *name) const
|
|||||||
break; // end sentinel
|
break; // end sentinel
|
||||||
}
|
}
|
||||||
if (n_bucket) {
|
if (n_bucket) {
|
||||||
|
void const *EOM = file_size + (char const *)file_image.getVoidPtr();
|
||||||
unsigned const m = elf_hash(name) % n_bucket;
|
unsigned const m = elf_hash(name) % n_bucket;
|
||||||
unsigned n_visit = 0;
|
unsigned n_visit = 0;
|
||||||
unsigned si;
|
unsigned si;
|
||||||
@@ -8635,6 +8688,9 @@ Elf32_Sym const *PackLinuxElf32::elf_lookup(char const *name) const
|
|||||||
return &dynsym[si];
|
return &dynsym[si];
|
||||||
if (l_sym <= &dynsym[n_visit++])
|
if (l_sym <= &dynsym[n_visit++])
|
||||||
throwCantPack("circular DT_HASH chain %d\n", si);
|
throwCantPack("circular DT_HASH chain %d\n", si);
|
||||||
|
// Detect next si out-of-bounds
|
||||||
|
if ((unsigned)((unsigned int const *)EOM - chains) <= si)
|
||||||
|
throwCantPack("bad DT_HASH chain %d\n", si);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8665,9 +8721,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];
|
||||||
@@ -8723,6 +8779,7 @@ Elf64_Sym const *PackLinuxElf64::elf_lookup(char const *name) const
|
|||||||
break; //end
|
break; //end
|
||||||
}
|
}
|
||||||
if (n_bucket) { // -rust-musl can have "empty" hashtab
|
if (n_bucket) { // -rust-musl can have "empty" hashtab
|
||||||
|
void const *const EOM = file_size + (char const *)file_image.getVoidPtr();
|
||||||
unsigned const m = elf_hash(name) % n_bucket;
|
unsigned const m = elf_hash(name) % n_bucket;
|
||||||
unsigned n_visit = 0;
|
unsigned n_visit = 0;
|
||||||
unsigned si;
|
unsigned si;
|
||||||
@@ -8736,6 +8793,9 @@ Elf64_Sym const *PackLinuxElf64::elf_lookup(char const *name) const
|
|||||||
return &dynsym[si];
|
return &dynsym[si];
|
||||||
if (l_sym <= &dynsym[n_visit++])
|
if (l_sym <= &dynsym[n_visit++])
|
||||||
throwCantPack("circular DT_HASH chain %d\n", si);
|
throwCantPack("circular DT_HASH chain %d\n", si);
|
||||||
|
// Detect next si out-of-bounds
|
||||||
|
if ((unsigned)((unsigned int const *)EOM - chains) <= si)
|
||||||
|
throwCantPack("bad DT_HASH chain %d\n", si);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8766,6 +8826,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];
|
||||||
@@ -8851,7 +8915,7 @@ void PackLinuxElf32::unpack(OutputFile *fo)
|
|||||||
fi->readx(&bhdr, szb_info);
|
fi->readx(&bhdr, szb_info);
|
||||||
ph.u_len = get_te32(&bhdr.sz_unc);
|
ph.u_len = get_te32(&bhdr.sz_unc);
|
||||||
ph.c_len = get_te32(&bhdr.sz_cpr);
|
ph.c_len = get_te32(&bhdr.sz_cpr);
|
||||||
ph.method = bhdr.b_method;
|
ph.set_method(bhdr.b_method, overlay_offset + sizeof(p_info));
|
||||||
if (ph.c_len > (unsigned)file_size || ph.c_len == 0 || ph.u_len == 0
|
if (ph.c_len > (unsigned)file_size || ph.c_len == 0 || ph.u_len == 0
|
||||||
|| ph.u_len > orig_file_size)
|
|| ph.u_len > orig_file_size)
|
||||||
throwCantUnpack("b_info corrupted");
|
throwCantUnpack("b_info corrupted");
|
||||||
@@ -8885,6 +8949,8 @@ void PackLinuxElf32::unpack(OutputFile *fo)
|
|||||||
if (ibuf.getSize() < ph.c_len)
|
if (ibuf.getSize() < ph.c_len)
|
||||||
throwCompressedDataViolation();
|
throwCompressedDataViolation();
|
||||||
fi->readx(ibuf, ph.c_len);
|
fi->readx(ibuf, ph.c_len);
|
||||||
|
if (ph.u_len < sizeof(*ehdr))
|
||||||
|
throwCantUnpack("ElfXX_Ehdr corrupted");
|
||||||
decompress(ibuf, (upx_byte *)ehdr, false);
|
decompress(ibuf, (upx_byte *)ehdr, false);
|
||||||
if (ehdr->e_type !=ehdri.e_type
|
if (ehdr->e_type !=ehdri.e_type
|
||||||
|| ehdr->e_machine!=ehdri.e_machine
|
|| ehdr->e_machine!=ehdri.e_machine
|
||||||
@@ -9076,7 +9142,7 @@ void PackLinuxElf32::unpack(OutputFile *fo)
|
|||||||
|
|
||||||
// check for end-of-file
|
// check for end-of-file
|
||||||
fi->readx(&bhdr, szb_info);
|
fi->readx(&bhdr, szb_info);
|
||||||
ph.method = bhdr.b_method;
|
ph.set_method(bhdr.b_method, ~0u);
|
||||||
unsigned const sz_unc = ph.u_len = get_te32(&bhdr.sz_unc);
|
unsigned const sz_unc = ph.u_len = get_te32(&bhdr.sz_unc);
|
||||||
|
|
||||||
if (sz_unc == 0) { // uncompressed size 0 -> EOF
|
if (sz_unc == 0) { // uncompressed size 0 -> EOF
|
||||||
|
|||||||
@@ -1418,6 +1418,7 @@ void PackMachBase<T>::pack1(OutputFile *const fo, Filter &/*ft*/) // generate e
|
|||||||
unsigned const sz_threado = threado_size();
|
unsigned const sz_threado = threado_size();
|
||||||
MemBuffer space(sz_threado); memset(space, 0, sz_threado);
|
MemBuffer space(sz_threado); memset(space, 0, sz_threado);
|
||||||
fo->write(space, sz_threado);
|
fo->write(space, sz_threado);
|
||||||
|
UNUSED(cmdsize);
|
||||||
}
|
}
|
||||||
else if (my_filetype == Mach_header::MH_DYLIB) {
|
else if (my_filetype == Mach_header::MH_DYLIB) {
|
||||||
Mach_command const *ptr = (Mach_command const *)rawmseg;
|
Mach_command const *ptr = (Mach_command const *)rawmseg;
|
||||||
@@ -1449,6 +1450,7 @@ void PackMachBase<T>::pack1(OutputFile *const fo, Filter &/*ft*/) // generate e
|
|||||||
}
|
}
|
||||||
memset(&linkitem, 0, sizeof(linkitem));
|
memset(&linkitem, 0, sizeof(linkitem));
|
||||||
fo->write(&linkitem, sizeof(linkitem));
|
fo->write(&linkitem, sizeof(linkitem));
|
||||||
|
UNUSED(cmdsize);
|
||||||
}
|
}
|
||||||
sz_mach_headers = fo->getBytesWritten();
|
sz_mach_headers = fo->getBytesWritten();
|
||||||
gap = secTEXT.offset - sz_mach_headers;
|
gap = secTEXT.offset - sz_mach_headers;
|
||||||
|
|||||||
+2
-2
@@ -485,7 +485,6 @@ unsigned PackUnix::unpackExtent(unsigned wanted, OutputFile *fo,
|
|||||||
fi->readx(&hdr, szb_info);
|
fi->readx(&hdr, szb_info);
|
||||||
int const sz_unc = ph.u_len = get_te32(&hdr.sz_unc);
|
int const sz_unc = ph.u_len = get_te32(&hdr.sz_unc);
|
||||||
int const sz_cpr = ph.c_len = get_te32(&hdr.sz_cpr);
|
int const sz_cpr = ph.c_len = get_te32(&hdr.sz_cpr);
|
||||||
ph.method = hdr.b_method;
|
|
||||||
ph.filter_cto = hdr.b_cto8;
|
ph.filter_cto = hdr.b_cto8;
|
||||||
|
|
||||||
if (sz_unc == 0 || M_LZMA < hdr.b_method) {
|
if (sz_unc == 0 || M_LZMA < hdr.b_method) {
|
||||||
@@ -508,6 +507,7 @@ unsigned PackUnix::unpackExtent(unsigned wanted, OutputFile *fo,
|
|||||||
c_adler = upx_adler32(ibuf + j, sz_cpr, c_adler);
|
c_adler = upx_adler32(ibuf + j, sz_cpr, c_adler);
|
||||||
|
|
||||||
if (sz_cpr < sz_unc) { // block was compressed
|
if (sz_cpr < sz_unc) { // block was compressed
|
||||||
|
ph.set_method(hdr.b_method);
|
||||||
decompress(ibuf+j, ibuf+inlen, false);
|
decompress(ibuf+j, ibuf+inlen, false);
|
||||||
if (12==szb_info) { // modern per-block filter
|
if (12==szb_info) { // modern per-block filter
|
||||||
if (hdr.b_ftid) {
|
if (hdr.b_ftid) {
|
||||||
@@ -658,7 +658,7 @@ void PackUnix::unpack(OutputFile *fo)
|
|||||||
fi->readx(&bhdr, szb_info);
|
fi->readx(&bhdr, szb_info);
|
||||||
ph.u_len = sz_unc = get_te32(&bhdr.sz_unc);
|
ph.u_len = sz_unc = get_te32(&bhdr.sz_unc);
|
||||||
ph.c_len = sz_cpr = get_te32(&bhdr.sz_cpr);
|
ph.c_len = sz_cpr = get_te32(&bhdr.sz_cpr);
|
||||||
ph.method = bhdr.b_method;
|
ph.set_method(bhdr.b_method);
|
||||||
|
|
||||||
if (sz_unc == 0) // uncompressed size 0 -> EOF
|
if (sz_unc == 0) // uncompressed size 0 -> EOF
|
||||||
{
|
{
|
||||||
|
|||||||
+3
-3
@@ -48,7 +48,7 @@ protected:
|
|||||||
public:
|
public:
|
||||||
virtual ~PackerBase() noexcept {}
|
virtual ~PackerBase() noexcept {}
|
||||||
// getVersion() enables detecting forward incompatibility of unpack()
|
// getVersion() enables detecting forward incompatibility of unpack()
|
||||||
// by old upx when newer upx changes the format of compressed output.
|
// by old UPX when newer UPX changes the format of compressed output.
|
||||||
virtual int getVersion() const = 0;
|
virtual int getVersion() const = 0;
|
||||||
// A unique integer ID for this executable format; see UPX_F_xxx in conf.h.
|
// A unique integer ID for this executable format; see UPX_F_xxx in conf.h.
|
||||||
virtual int getFormat() const = 0;
|
virtual int getFormat() const = 0;
|
||||||
@@ -58,11 +58,11 @@ public:
|
|||||||
virtual const int *getFilters() const = 0;
|
virtual const int *getFilters() const = 0;
|
||||||
|
|
||||||
// canPack() should throw a cantPackException explaining why it cannot pack
|
// canPack() should throw a cantPackException explaining why it cannot pack
|
||||||
// a recognized format.
|
// a recognized format.
|
||||||
// canPack() can also return -1 to fail early; see class PackMaster
|
// canPack() can also return -1 to fail early; see class PackMaster
|
||||||
virtual tribool canPack() = 0;
|
virtual tribool canPack() = 0;
|
||||||
// canUnpack() should throw a cantUnpackException explaining why it cannot unpack
|
// canUnpack() should throw a cantUnpackException explaining why it cannot unpack
|
||||||
// a recognized format.
|
// a recognized format.
|
||||||
// canUnpack() can also return -1 to fail early; see class PackMaster
|
// canUnpack() can also return -1 to fail early; see class PackMaster
|
||||||
virtual tribool canUnpack() = 0;
|
virtual tribool canUnpack() = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,16 @@ void PackHeader::reset() noexcept {
|
|||||||
compress_result.reset();
|
compress_result.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int PackHeader::set_method(int m, unsigned offset) {
|
||||||
|
unsigned mc = ~(0x80u << 24) & m; // see ph_forced_method
|
||||||
|
unsigned lo = 0xFF & m;
|
||||||
|
// See packer_c.cpp for "hi bytes" in M_LZMA_003 and M_LZMA_407.
|
||||||
|
// "hi bytes" are not allowed unless M_LZMA.
|
||||||
|
if ((lo < M_NRV2B_LE32 || M_LZMA < lo || (M_LZMA != lo && mc != lo)) && ~0u != offset)
|
||||||
|
throwCantPack("bad method %#x at %#x", (unsigned) m, offset);
|
||||||
|
return method = m;
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// extremely simple checksum for the header itself (since version 10)
|
// extremely simple checksum for the header itself (since version 10)
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ struct PackHeader final {
|
|||||||
int n_mru; // specific name for filter ctojr
|
int n_mru; // specific name for filter ctojr
|
||||||
};
|
};
|
||||||
int header_checksum;
|
int header_checksum;
|
||||||
|
int set_method(int m, unsigned offset = 0); // check, then assign
|
||||||
|
|
||||||
// support fields for verifying decompression
|
// support fields for verifying decompression
|
||||||
unsigned saved_u_adler;
|
unsigned saved_u_adler;
|
||||||
|
|||||||
@@ -25,6 +25,8 @@
|
|||||||
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// dispatch to a concrete subclass of class PackerBase; see work.cpp
|
||||||
|
|
||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
#include "packmast.h"
|
#include "packmast.h"
|
||||||
|
|||||||
+30
-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));
|
||||||
@@ -1718,6 +1728,8 @@ PeFile::Resource::upx_rnode *PeFile::Resource::convert(const void *rnode, upx_rn
|
|||||||
branch->nc = ic;
|
branch->nc = ic;
|
||||||
branch->children = New(upx_rnode *, ic);
|
branch->children = New(upx_rnode *, ic);
|
||||||
branch->data = *node;
|
branch->data = *node;
|
||||||
|
if (!root) // first one
|
||||||
|
root = branch; // prevent leak if xcheck throws (hacked unpack or test)
|
||||||
|
|
||||||
for (const res_dir_entry *rde = node->entries + ic - 1; --ic >= 0; rde--) {
|
for (const res_dir_entry *rde = node->entries + ic - 1; --ic >= 0; rde--) {
|
||||||
upx_rnode *child = convert(start + (rde->child & 0x7fffffff), branch, level + 1);
|
upx_rnode *child = convert(start + (rde->child & 0x7fffffff), branch, level + 1);
|
||||||
@@ -2758,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);
|
||||||
|
|||||||
+70
-1
@@ -42,6 +42,8 @@ endif
|
|||||||
# ************************************************************************/
|
# ************************************************************************/
|
||||||
|
|
||||||
ifndef STUBS
|
ifndef STUBS
|
||||||
|
STUBS += riscv64-linux.elf-entry.h
|
||||||
|
STUBS += riscv64-linux.elf-fold.h
|
||||||
STUBS += amd64-darwin.dylib-entry.h
|
STUBS += amd64-darwin.dylib-entry.h
|
||||||
STUBS += amd64-darwin.macho-entry.h
|
STUBS += amd64-darwin.macho-entry.h
|
||||||
STUBS += amd64-darwin.macho-fold.h
|
STUBS += amd64-darwin.macho-fold.h
|
||||||
@@ -320,7 +322,7 @@ define tc.default.f-embed_objinfo_without_xstrip_keep_dot_text
|
|||||||
chmod a-x $1
|
chmod a-x $1
|
||||||
$(call tc,objcopy) -R .data -R .bss $1
|
$(call tc,objcopy) -R .data -R .bss $1
|
||||||
$(call tc,objcopy) -R .comment -R .note -R .note.GNU-stack -R .reginfo $1
|
$(call tc,objcopy) -R .comment -R .note -R .note.GNU-stack -R .reginfo $1
|
||||||
$(call tc,objcopy) --strip-unneeded --keep-symbol=_start --keep-symbol=upx_so_main $1
|
$(call tc,objcopy) --strip-unneeded --keep-symbol=_start --keep-symbol=upx_so_main --keep-symbol=str_upx $1
|
||||||
#
|
#
|
||||||
# Disassemble for human readability
|
# Disassemble for human readability
|
||||||
# objdump
|
# objdump
|
||||||
@@ -550,6 +552,7 @@ amd64-win64.pe.h : tc_objdump_disasm_options = -M intel-mnemonic
|
|||||||
|
|
||||||
tc.amd64-win64.pe.gcc = amd64-linux-gcc-4.1.1 -m64 -nostdinc -DWINDOWS_BACK=1 -MMD -MT $@
|
tc.amd64-win64.pe.gcc = amd64-linux-gcc-4.1.1 -m64 -nostdinc -DWINDOWS_BACK=1 -MMD -MT $@
|
||||||
tc.amd64-win64.pe.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
tc.amd64-win64.pe.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
||||||
|
tc.amd64-win64.pe.gcc += -mno-red-zone
|
||||||
tc.amd64-win64.pe.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
tc.amd64-win64.pe.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||||
tc.amd64-win64.pe.objdump = multiarch-objdump-2.23.90
|
tc.amd64-win64.pe.objdump = multiarch-objdump-2.23.90
|
||||||
|
|
||||||
@@ -2181,6 +2184,72 @@ powerpc64-linux.kernel.vmlinux-head.h : $(srcdir)/src/$$T.S
|
|||||||
$(call tc,objcopy) --output-target binary --only-section .text tmp/$T.o tmp/$T.bin
|
$(call tc,objcopy) --output-target binary --only-section .text tmp/$T.o tmp/$T.bin
|
||||||
$(call tc,bin2h) tmp/$T.bin $@
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
|
# =====
|
||||||
|
# /***********************************************************************
|
||||||
|
# // riscv64-linux.elf
|
||||||
|
# ************************************************************************/
|
||||||
|
|
||||||
|
riscv64-linux.elf%.h : tc_list = riscv64-linux.elf default
|
||||||
|
riscv64-linux.elf%.h : tc_bfdname = elf64-littleriscv64
|
||||||
|
|
||||||
|
tc.riscv64-linux.elf.gcc = /usr/bin/riscv64-linux-gnu-gcc -nostdinc -MMD -MT $@
|
||||||
|
tc.riscv64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables # -fno-stack-protector
|
||||||
|
tc.riscv64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||||
|
|
||||||
|
tc.riscv64-linux.elf.objcopy = /usr/bin/riscv64-linux-gnu-objcopy
|
||||||
|
# Override of objcopy is needed because:
|
||||||
|
# multiarch-objcopy-2.17 -F elf64-littleriscv64 --strip-unneeded --keep-symbol=_start --keep-symbol=upx_so_main tmp/riscv64-linux.elf-entry.bin
|
||||||
|
# multiarch-objcopy-2.17: tmp/riscv64-linux.elf-entry.bin: Invalid bfd target
|
||||||
|
|
||||||
|
tc.riscv64-linux.elf.objdump = /usr/bin/riscv64-linux-gnu-objdump
|
||||||
|
# Override of objdump is needed because:
|
||||||
|
# multiarch-objdump-2.17 -b elf64-littleriscv64 -Dr tmp/riscv64-linux.elf-entry.bin | sed -e 's/[ ]*$//' > tmp/riscv64-linux.elf-entry.bin.disasm
|
||||||
|
# multiarch-objdump-2.17: tmp/riscv64-linux.elf-entry.bin: Invalid bfd target
|
||||||
|
# multiarch-objdump-2.17 -b elf64-littleriscv64 -htr -w tmp/riscv64-linux.elf-entry.bin | sed -e 's/[ ]*$//' | cat --squeeze-blank | sed -e '1{/^$/d}' -e '${/^$/d}' | sed -e '1s/^.*: *file format/file format/' -e 's/ / /g' -e 's/ 00*/ 0/g' -e 's/CONTENTS.*/CONTENTS/' > tmp/riscv64-linux.elf-entry.bin.dump
|
||||||
|
# multiarch-objdump-2.17: tmp/riscv64-linux.elf-entry.bin: Invalid bfd target
|
||||||
|
|
||||||
|
|
||||||
|
tc.riscv64-linux.elf.ld = /usr/bin/riscv64-linux-gnu-ld
|
||||||
|
# Override of ld is needed because:
|
||||||
|
# multiarch-objcopy-2.17 -F elf64-littleriscv64 --strip-unneeded --keep-symbol=_start --keep-symbol=upx_so_main tmp/riscv64-linux.elf-entry.bin
|
||||||
|
# multiarch-objcopy-2.17: tmp/riscv64-linux.elf-entry.bin: Invalid bfd target
|
||||||
|
|
||||||
|
riscv64-linux.elf-entry.h : $(srcdir)/src/$$T.S
|
||||||
|
$(call tc,gcc) -c $< -o tmp/$T.bin
|
||||||
|
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||||
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
|
riscv64-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
|
||||||
|
tmp/$$T.o \
|
||||||
|
tmp/riscv64-linux.elf-help_umf.o \
|
||||||
|
tmp/riscv64-linux.elf-upxfd_linux.o \
|
||||||
|
tmp/riscv64-expand.o \
|
||||||
|
tmp/riscv64-linux.elf-main2.o
|
||||||
|
$(call tc,ld) -r -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
|
||||||
|
$(call tc,f-embed_objinfo_without_xstrip_keep_dot_text,tmp/$T.bin)
|
||||||
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
|
tmp/riscv64-linux.elf-fold.o : $(srcdir)/src/$$T.S
|
||||||
|
$(call tc,gcc) -c $< -o $@
|
||||||
|
$(call tc,f-objstrip,$@)
|
||||||
|
|
||||||
|
tmp/riscv64-linux.elf-main2.o : $(srcdir)/src/$$T.c $(srcdir)/src/i386-linux.elf-main2.c
|
||||||
|
$(call tc,gcc) -c $< -o $@
|
||||||
|
$(call tc,f-objstrip,$@)
|
||||||
|
|
||||||
|
tmp/riscv64-linux.elf-help_umf.o: $(srcdir)/src/$$T.S
|
||||||
|
$(call tc,gcc) -c $< -o $@
|
||||||
|
|
||||||
|
tmp/riscv64-linux.elf-upxfd_linux.o : $(srcdir)/src/upxfd_linux.c
|
||||||
|
$(call tc,gcc) -c -O $< -o $@
|
||||||
|
$(call tc,objcopy) --strip-unneeded --rename-section .text=UMF_LINUX \
|
||||||
|
-R .riscv.attributes -R .data -R .bss -R .note.GNU-stack $@
|
||||||
|
$(call tc,objdump) -Dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||||
|
|
||||||
|
tmp/riscv64-expand.o: $(srcdir)/src/$$T.S
|
||||||
|
$(call tc,gcc) -c $< -o $@
|
||||||
|
|
||||||
|
# =====
|
||||||
|
|
||||||
# /***********************************************************************
|
# /***********************************************************************
|
||||||
# // dependencies
|
# // dependencies
|
||||||
|
|||||||
Generated
+182
-74
@@ -1,5 +1,5 @@
|
|||||||
/* amd64-linux.elf-entry.h
|
/* amd64-linux.elf-entry.h
|
||||||
created from amd64-linux.elf-entry.bin, 1141 (0x475) bytes
|
created from amd64-linux.elf-entry.bin, 2869 (0xb35) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -32,81 +32,189 @@
|
|||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
|
||||||
#define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 1141
|
#define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 2869
|
||||||
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xd3b74a90
|
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xf865154a
|
||||||
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0x52b418e2
|
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0xe81955ed
|
||||||
|
|
||||||
unsigned char stub_amd64_linux_elf_entry[1141] = {
|
unsigned char stub_amd64_linux_elf_entry[2869] = {
|
||||||
/* 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,
|
||||||
/* 0x0010 */ 1, 0, 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0010 */ 1, 0, 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 16, 2, 0, 0, 0, 0, 0, 0,
|
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
|
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
|
||||||
/* 0x0040 */ 243, 15, 30,250, 89, 84, 95, 81, 82, 49,192, 72,175,117,252, 72,
|
/* 0x0040 */ 243, 15, 30,250, 89, 84, 95, 81, 82, 76,141, 61, 0, 0, 0, 0,
|
||||||
/* 0x0050 */ 175,117,252, 87,186, 0, 16, 0, 0, 94, 72,173,133,192,116, 8,
|
/* 0x0050 */ 87, 41,210, 82, 72,141, 5, 45, 0, 0, 0, 80,104, 4, 0, 0,
|
||||||
/* 0x0060 */ 131,248, 6, 72,173,117,243,146, 88, 72,247,218, 82, 80,104,117,
|
/* 0x0060 */ 4, 72,141, 5, 43, 0, 0, 0, 80, 76,141, 61,219, 2, 0, 0,
|
||||||
/* 0x0070 */ 112, 88, 0, 84, 95,106, 16, 94,184, 63, 1, 0, 0, 15, 5,133,
|
/* 0x0070 */ 84, 94,106, 11, 95,106, 8, 65, 90,106, 13, 88, 15, 5, 72,131,
|
||||||
/* 0x0080 */ 192,121, 29,133,246,116, 4, 49,246,235,237, 72,141, 53, 28, 1,
|
/* 0x0080 */ 196, 32, 95,233,216, 2, 0, 0,243, 15, 30,250,184, 15, 0, 0,
|
||||||
/* 0x0090 */ 0, 0,173,146,173, 86,150, 95,106, 2, 88,232, 0, 1, 0, 0,
|
/* 0x0090 */ 0, 15, 5,243, 15, 30,250, 82,186, 26, 0, 0, 0, 72,141, 53,
|
||||||
/* 0x00a0 */ 73,137,196, 89, 72,141, 61,145,255,255,255,139, 15, 72, 41,207,
|
/* 0x00a0 */ 111, 0, 0, 0,106, 2, 95,106, 1, 88, 15, 5, 49,246, 72,141,
|
||||||
/* 0x00b0 */ 72,141, 53, 0, 0, 0, 0,173,147, 65,137,221,173,146,131,194,
|
/* 0x00b0 */ 61,120, 0, 0, 0,106, 2, 88, 15, 5, 73,137,196,187, 0, 16,
|
||||||
/* 0x00c0 */ 16, 82,106,255, 87, 72, 41,217, 81, 72, 1,251, 83, 84, 93, 72,
|
/* 0x00c0 */ 0, 0, 72, 41,220,137,218, 84, 94, 76,137,231, 49,192, 15, 5,
|
||||||
/* 0x00d0 */ 41,212, 72,131,228,192, 84, 95,173, 80,173,102,131,248, 2,116,
|
/* 0x00d0 */ 133,192,126, 14,137,194, 84, 94,106, 2, 95,106, 1, 88, 15, 5,
|
||||||
/* 0x00e0 */ 1,244, 88, 72, 1,240, 80, 85, 49,219, 49,201, 72,141, 21,204,
|
/* 0x00e0 */ 235,227, 76,137,231, 72, 1,220,106, 3, 88, 15, 5, 90,106, 57,
|
||||||
/* 0x00f0 */ 0, 0, 0,106,255, 93,252,168,164,255,210,114,251,141, 65, 1,
|
/* 0x00f0 */ 88,232, 0, 0, 0, 0,133,192, 15,132,141, 1, 0, 0,235,254,
|
||||||
/* 0x0100 */ 255,210, 17,192,255,210,115,248,131,232, 3,114, 12,193,224, 8,
|
/* 0x0100 */ 47,112,114,111, 99, 47,115,101,108,102, 47, 99,109,100,108,105,
|
||||||
/* 0x0110 */ 172,131,240,255,116, 47, 72, 99,232,141, 65, 1,255,210, 17,201,
|
/* 0x0110 */ 110,101, 0, 10, 10, 83, 73, 71, 83, 69, 71, 86, 32, 97,100,100,
|
||||||
/* 0x0120 */ 255,210, 17,201,117, 13,137,193,131,192, 2,255,210, 17,201,255,
|
/* 0x0120 */ 114,101,115,115, 32,115,112, 97, 99,101, 58, 10, 0, 47,112,114,
|
||||||
/* 0x0130 */ 210,115,248,129,253, 0,243,255,255, 17,193, 86, 72,141, 52, 47,
|
/* 0x0130 */ 111, 99, 47,115,101,108,102, 47,109, 97,112,115, 0, 45,113, 0,
|
||||||
/* 0x0140 */ 243,164, 94,235,180, 93, 89, 72, 57,206,116, 1,244, 72,139, 69,
|
/* 0x0140 */ 47,117,115,114, 47, 98,105,110, 47,103,100, 98, 0,115,101,116,
|
||||||
/* 0x0150 */ 48, 72,137, 4, 36, 72,139, 85, 32, 72,131,234, 16, 84, 94, 76,
|
/* 0x0150 */ 32,112,114,111,109,112,116, 10,105,110,102,111, 32,105,110,102,
|
||||||
/* 0x0160 */ 137,231, 82,106, 1, 88,232, 53, 0, 0, 0, 72, 1,198, 41,194,
|
/* 0x0160 */ 101,114,105,111,114,115, 10,112,114,105,110,116, 32, 34,114, 56,
|
||||||
/* 0x0170 */ 117,241, 94, 85, 92, 77, 49,201, 77,137,224,106, 1, 65, 90,106,
|
/* 0x0170 */ 32, 45, 32,114, 49, 53, 34, 10,120, 47, 56,120,103, 32, 36,114,
|
||||||
/* 0x0180 */ 5, 90, 41,255,106, 9, 88,232, 20, 0, 0, 0, 80, 72,137, 69,
|
/* 0x0180 */ 100,120, 32, 43, 32, 53, 42, 56, 10,112,114,105,110,116, 32, 34,
|
||||||
/* 0x0190 */ 24, 65, 80, 95,106, 3, 88, 15, 5, 88, 72,131,192, 8,255,224,
|
/* 0x0190 */ 114,100,105, 44, 32,114,115,105, 44, 32,114, 98,112, 44, 32,114,
|
||||||
/* 0x01a0 */ 80, 15, 5, 89, 72, 61, 0,240,255,255,114, 1,244,195,192, 1,
|
/* 0x01a0 */ 98,120, 34, 10,120, 47, 52,120,103, 10,112,114,105,110,116, 32,
|
||||||
/* 0x01b0 */ 0, 0, 2, 0, 65, 0, 47,100,101,118, 47,115,104,109, 0,243,
|
/* 0x01b0 */ 34,114,100,120, 44, 32,114, 97,120, 44, 32,114, 99,120, 44, 32,
|
||||||
/* 0x01c0 */ 15, 30,250, 1,219,116, 2,243,195,139, 30, 72,131,238,252, 17,
|
/* 0x01c0 */ 114,115,112, 34, 10,120, 47, 52,120,103, 10,112,114,105,110,116,
|
||||||
/* 0x01d0 */ 219,243,195, 0, 0, 0, 0, 0,102,105,108,101, 32,102,111,114,
|
/* 0x01d0 */ 32, 34,114,105,112, 44, 32,101,102,108, 34, 10,120, 47, 50,120,
|
||||||
/* 0x01e0 */ 109, 97,116, 32,101,108,102, 54, 52, 45,120, 56, 54, 45, 54, 52,
|
/* 0x01e0 */ 103, 10,115,101,116, 32, 36,112, 99, 32, 61, 32, 42, 40,108,111,
|
||||||
/* 0x01f0 */ 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32,
|
/* 0x01f0 */ 110,103, 32, 42, 41, 40, 36,114,100,120, 32, 43, 32, 49, 54, 56,
|
||||||
/* 0x0200 */ 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,
|
/* 0x0200 */ 41, 10,112,114,105,110,116, 32, 34,102, 97,117,108,116,105,110,
|
||||||
/* 0x0210 */ 122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32,
|
/* 0x0210 */ 103, 32,105,110,115,116,114, 34, 10,120, 47,105, 32, 36,112, 99,
|
||||||
/* 0x0220 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32,
|
/* 0x0220 */ 10,112,114,105,110,116, 32, 34,102, 97,117,108,116, 32, 99,111,
|
||||||
/* 0x0230 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101,
|
/* 0x0230 */ 110,116,101,120,116, 34, 10,120, 47, 49, 54,105, 32, 36,112, 99,
|
||||||
/* 0x0240 */ 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,
|
/* 0x0240 */ 32, 45, 32, 48,120, 50, 48, 10,112,114,105,110,116, 32, 34,117,
|
||||||
/* 0x0250 */ 115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32,
|
/* 0x0250 */ 115,101,114, 32,115,116, 97, 99,107, 34, 10,120, 47, 54, 52,120,
|
||||||
/* 0x0260 */ 32, 32, 32, 32, 48, 49, 57, 51, 32, 32, 48, 32, 32, 48, 32, 32,
|
/* 0x0260 */ 103, 32, 42, 40,108,111,110,103, 32, 42, 41, 40, 36,114,100,120,
|
||||||
/* 0x0270 */ 48, 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
|
/* 0x0270 */ 32, 43, 32, 53, 42, 56, 32, 43, 32, 49, 53, 42, 56, 41, 10,107,
|
||||||
/* 0x0280 */ 78, 84, 83, 10, 32, 32, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90,
|
/* 0x0280 */ 105,108,108, 10,113,117,105,116, 32, 49, 0, 72,129,236, 0, 16,
|
||||||
/* 0x0290 */ 32, 32, 32, 32, 32, 32, 48, 52, 32, 32, 48, 32, 32, 48, 32, 32,
|
/* 0x0290 */ 0, 0, 72,141, 61,103,254,255,255,106, 0, 94,106, 2, 88,232,
|
||||||
/* 0x02a0 */ 48, 49,100, 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84,
|
/* 0x02a0 */ 0, 0, 0, 0, 80, 95, 84, 94,104, 0, 16, 0, 0, 90,106, 0,
|
||||||
/* 0x02b0 */ 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76,
|
/* 0x02b0 */ 88,232, 0, 0, 0, 0,106, 3, 88,232, 0, 0, 0, 0,106,110,
|
||||||
/* 0x02c0 */ 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x02c0 */ 88, 15, 5, 80, 94, 49,192, 80, 80, 84, 95,232, 89, 0, 0, 0,
|
||||||
/* 0x02d0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77,
|
/* 0x02d0 */ 84, 94,106, 0, 86, 72,131,198, 16, 86, 72,141, 5, 92,254,255,
|
||||||
/* 0x02e0 */ 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
|
/* 0x02e0 */ 255, 80, 72,131,192, 3, 80, 49,255,106, 3, 88, 15, 5, 80, 84,
|
||||||
/* 0x02f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x02f0 */ 95,106, 22, 88,232, 0, 0, 0, 0, 95, 72,193,239, 32,104, 62,
|
||||||
/* 0x0300 */ 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78,
|
/* 0x0300 */ 1, 0, 0, 90, 72,141, 53, 66,254,255,255,106, 1, 88,232, 0,
|
||||||
/* 0x0310 */ 88, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48,
|
/* 0x0310 */ 0, 0, 0,106, 3, 88, 15, 5,106, 0, 90, 84, 94, 72,139, 62,
|
||||||
/* 0x0320 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32,
|
/* 0x0320 */ 106, 59, 88,232, 0, 0, 0, 0,244,106, 10, 89,137,240,232, 4,
|
||||||
/* 0x0330 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48,
|
/* 0x0330 */ 0, 0, 0,198, 7, 0,195, 49,210,247,241, 82,133,192,116, 5,
|
||||||
/* 0x0340 */ 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0340 */ 232,242,255,255,255, 88,131,192, 48,170,195,243, 15, 30,250,106,
|
||||||
/* 0x0350 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x0350 */ 8, 65, 90, 49,210, 49,246,106, 11, 95,106, 13, 88, 15, 5,195,
|
||||||
/* 0x0360 */ 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, 95, 66, 73, 78, 70, 79,
|
/* 0x0360 */ 49,192, 72,175,117,252, 72,175,117,252, 87,186, 0, 16, 0, 0,
|
||||||
/* 0x0370 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
|
/* 0x0370 */ 94, 72,173,133,192,116, 8,131,248, 6, 72,173,117,243,146, 88,
|
||||||
/* 0x0380 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73,
|
/* 0x0380 */ 72,247,218, 82, 80,104,117,112, 88, 0, 84, 95,106, 16, 94,184,
|
||||||
/* 0x0390 */ 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
|
/* 0x0390 */ 63, 1, 0, 0, 15, 5,133,192,121, 29,133,246,116, 4, 49,246,
|
||||||
/* 0x03a0 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
|
/* 0x03a0 */ 235,237, 72,141, 53, 38, 1, 0, 0,173,146,173, 86,150, 95,106,
|
||||||
/* 0x03b0 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
|
/* 0x03b0 */ 2, 88,232, 10, 1, 0, 0, 73,137,196, 89, 72,141, 61, 0, 0,
|
||||||
/* 0x03c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 55, 51, 32, 82,
|
/* 0x03c0 */ 0, 0,139, 15, 72, 41,207, 72,141, 53, 0, 0, 0, 0,173,147,
|
||||||
/* 0x03d0 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
|
/* 0x03d0 */ 65,137,221,173,146,131,194, 16, 82,106,255, 87, 72, 41,217, 81,
|
||||||
/* 0x03e0 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102,102,102,102,
|
/* 0x03e0 */ 72, 1,251, 83, 84, 93, 72, 41,212, 72,131,228,192, 84, 95,173,
|
||||||
/* 0x03f0 */ 102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69,
|
/* 0x03f0 */ 80,173,102,131,248, 2,116, 1,244, 88, 72, 1,240, 80, 85, 49,
|
||||||
/* 0x0400 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
|
/* 0x0400 */ 219, 49,201, 72,141, 21,214, 0, 0, 0,106,255, 93,252,168,164,
|
||||||
/* 0x0410 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58,
|
/* 0x0410 */ 255,210,114,251,141, 65, 1,255,210, 17,192,255,210,115,248,131,
|
||||||
/* 0x0420 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x0420 */ 232, 3,114, 12,193,224, 8,172,131,240,255,116, 47, 72, 99,232,
|
||||||
/* 0x0430 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x0430 */ 141, 65, 1,255,210, 17,201,255,210, 17,201,117, 13,137,193,131,
|
||||||
/* 0x0440 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
|
/* 0x0440 */ 192, 2,255,210, 17,201,255,210,115,248,129,253, 0,243,255,255,
|
||||||
/* 0x0450 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 88, 56, 54,
|
/* 0x0450 */ 17,193, 86, 72,141, 52, 47,243,164, 94,235,180, 93, 89, 72, 57,
|
||||||
/* 0x0460 */ 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 79, 95, 66,
|
/* 0x0460 */ 206,116, 1,244, 72,139, 69, 48, 72,137, 4, 36, 76,137,124, 36,
|
||||||
/* 0x0470 */ 73, 78, 70, 79, 10
|
/* 0x0470 */ 8, 72,139, 85, 32, 72,131,234, 16, 84, 94, 76,137,231, 82,106,
|
||||||
|
/* 0x0480 */ 1, 88,232, 58, 0, 0, 0, 72, 1,198, 41,194,117,241, 94, 85,
|
||||||
|
/* 0x0490 */ 92, 77, 49,201, 77,137,224,106, 1, 65, 90,106, 5, 90, 41,255,
|
||||||
|
/* 0x04a0 */ 106, 9, 88,232, 25, 0, 0, 0, 80, 72,137, 69, 24, 65, 80, 95,
|
||||||
|
/* 0x04b0 */ 106, 3, 88, 15, 5, 88, 72,131,192, 16,255,224,243, 15, 30,250,
|
||||||
|
/* 0x04c0 */ 195, 80, 15, 5, 89, 72, 61, 0,240,255,255,114, 1,244,195,192,
|
||||||
|
/* 0x04d0 */ 1, 0, 0, 2, 0, 65, 0, 47,100,101,118, 47,115,104,109, 0,
|
||||||
|
/* 0x04e0 */ 243, 15, 30,250, 1,219,116, 2,243,195,139, 30, 72,131,238,252,
|
||||||
|
/* 0x04f0 */ 17,219,243,195, 0, 0, 0, 0,102,105,108,101, 32,102,111,114,
|
||||||
|
/* 0x0500 */ 109, 97,116, 32,101,108,102, 54, 52, 45,120, 56, 54, 45, 54, 52,
|
||||||
|
/* 0x0510 */ 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32,
|
||||||
|
/* 0x0520 */ 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,
|
||||||
|
/* 0x0530 */ 122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0540 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32,
|
||||||
|
/* 0x0550 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101,
|
||||||
|
/* 0x0560 */ 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,
|
||||||
|
/* 0x0570 */ 115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32,
|
||||||
|
/* 0x0580 */ 32, 32, 32, 32, 48, 49, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48,
|
||||||
|
/* 0x0590 */ 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
|
||||||
|
/* 0x05a0 */ 84, 83, 10, 32, 32, 49, 32, 69, 76, 70, 83, 73, 71, 83, 69, 71,
|
||||||
|
/* 0x05b0 */ 86, 32, 32, 32, 32, 48, 51, 49, 48, 32, 32, 48, 32, 32, 48, 32,
|
||||||
|
/* 0x05c0 */ 32, 48, 53, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84,
|
||||||
|
/* 0x05d0 */ 69, 78, 84, 83, 10, 32, 32, 50, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||||
|
/* 0x05e0 */ 88, 50, 32, 32, 32, 32, 32, 48, 49, 57, 52, 32, 32, 48, 32, 32,
|
||||||
|
/* 0x05f0 */ 48, 32, 32, 48, 51, 54, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67,
|
||||||
|
/* 0x0600 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 51, 32, 69, 76, 70, 77,
|
||||||
|
/* 0x0610 */ 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 52, 32, 32, 48, 32,
|
||||||
|
/* 0x0620 */ 32, 48, 32, 32, 48, 52,102, 52, 32, 32, 50, 42, 42, 50, 32, 32,
|
||||||
|
/* 0x0630 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32,
|
||||||
|
/* 0x0640 */ 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0650 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
|
||||||
|
/* 0x0660 */ 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70, 77, 65,
|
||||||
|
/* 0x0670 */ 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0680 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70,
|
||||||
|
/* 0x0690 */ 77, 65, 73, 78, 88, 50, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||||
|
/* 0x06a0 */ 88, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x06b0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77,
|
||||||
|
/* 0x06c0 */ 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
|
||||||
|
/* 0x06d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x06e0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 83, 73, 71, 83,
|
||||||
|
/* 0x06f0 */ 69, 71, 86, 32, 48, 32, 69, 76, 70, 83, 73, 71, 83, 69, 71, 86,
|
||||||
|
/* 0x0700 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0710 */ 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73,
|
||||||
|
/* 0x0720 */ 78, 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48,
|
||||||
|
/* 0x0730 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32,
|
||||||
|
/* 0x0740 */ 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, 95, 66,
|
||||||
|
/* 0x0750 */ 73, 78, 70, 79, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
|
||||||
|
/* 0x0760 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76,
|
||||||
|
/* 0x0770 */ 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
|
||||||
|
/* 0x0780 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32,
|
||||||
|
/* 0x0790 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85,
|
||||||
|
/* 0x07a0 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x07b0 */ 48, 99, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50,
|
||||||
|
/* 0x07c0 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,
|
||||||
|
/* 0x07d0 */ 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,
|
||||||
|
/* 0x07e0 */ 56, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69,
|
||||||
|
/* 0x07f0 */ 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 83, 73,
|
||||||
|
/* 0x0800 */ 71, 83, 69, 71, 86, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
|
||||||
|
/* 0x0810 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
|
||||||
|
/* 0x0820 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
|
||||||
|
/* 0x0830 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 97,
|
||||||
|
/* 0x0840 */ 50, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||||
|
/* 0x0850 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||||
|
/* 0x0860 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||||
|
/* 0x0870 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 53,
|
||||||
|
/* 0x0880 */ 48, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||||
|
/* 0x0890 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||||
|
/* 0x08a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||||
|
/* 0x08b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 54,
|
||||||
|
/* 0x08c0 */ 50, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||||
|
/* 0x08d0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||||
|
/* 0x08e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||||
|
/* 0x08f0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 54,
|
||||||
|
/* 0x0900 */ 97, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||||
|
/* 0x0910 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||||
|
/* 0x0920 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||||
|
/* 0x0930 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 97,
|
||||||
|
/* 0x0940 */ 53, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||||
|
/* 0x0950 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||||
|
/* 0x0960 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||||
|
/* 0x0970 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 98,
|
||||||
|
/* 0x0980 */ 102, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||||
|
/* 0x0990 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||||
|
/* 0x09a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||||
|
/* 0x09b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50,100,
|
||||||
|
/* 0x09c0 */ 52, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||||
|
/* 0x09d0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||||
|
/* 0x09e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||||
|
/* 0x09f0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
|
||||||
|
/* 0x0a00 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73,
|
||||||
|
/* 0x0a10 */ 78, 88, 50, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32,
|
||||||
|
/* 0x0a20 */ 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0a30 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48,
|
||||||
|
/* 0x0a40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53,101, 32,
|
||||||
|
/* 0x0a50 */ 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||||
|
/* 0x0a60 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 43, 48,120,102,102,102,
|
||||||
|
/* 0x0a70 */ 102,102,102,102,102,102,102,102,102,102,102,102, 56, 10, 48, 48,
|
||||||
|
/* 0x0a80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 54, 97, 32, 82,
|
||||||
|
/* 0x0a90 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
|
||||||
|
/* 0x0aa0 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102,102,102,102,
|
||||||
|
/* 0x0ab0 */ 102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69,
|
||||||
|
/* 0x0ac0 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
|
||||||
|
/* 0x0ad0 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58,
|
||||||
|
/* 0x0ae0 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0af0 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0b00 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0b10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 88, 56, 54,
|
||||||
|
/* 0x0b20 */ 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 79, 95, 66,
|
||||||
|
/* 0x0b30 */ 73, 78, 70, 79, 10
|
||||||
};
|
};
|
||||||
|
|||||||
Generated
+1303
-1279
File diff suppressed because it is too large
Load Diff
Generated
+399
-373
@@ -1,5 +1,5 @@
|
|||||||
/* amd64-linux.elf-so_entry.h
|
/* amd64-linux.elf-so_entry.h
|
||||||
created from amd64-linux.elf-so_entry.bin, 6372 (0x18e4) bytes
|
created from amd64-linux.elf-so_entry.bin, 6790 (0x1a86) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -32,14 +32,14 @@
|
|||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
|
||||||
#define STUB_AMD64_LINUX_ELF_SO_ENTRY_SIZE 6372
|
#define STUB_AMD64_LINUX_ELF_SO_ENTRY_SIZE 6790
|
||||||
#define STUB_AMD64_LINUX_ELF_SO_ENTRY_ADLER32 0xf9607bd7
|
#define STUB_AMD64_LINUX_ELF_SO_ENTRY_ADLER32 0x184ce0bd
|
||||||
#define STUB_AMD64_LINUX_ELF_SO_ENTRY_CRC32 0x7ca0bbfb
|
#define STUB_AMD64_LINUX_ELF_SO_ENTRY_CRC32 0x9737eb34
|
||||||
|
|
||||||
unsigned char stub_amd64_linux_elf_so_entry[6372] = {
|
unsigned char stub_amd64_linux_elf_so_entry[6790] = {
|
||||||
/* 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,
|
||||||
/* 0x0010 */ 1, 0, 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0010 */ 1, 0, 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0,120, 4, 0, 0, 0, 0, 0, 0,
|
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0,224, 4, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 16, 0, 13, 0,
|
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 16, 0, 13, 0,
|
||||||
/* 0x0040 */ 233, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0040 */ 233, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0050 */ 72,137, 92, 36,224, 72,137,108, 36,232, 76,137,100, 36,240, 76,
|
/* 0x0050 */ 72,137, 92, 36,224, 72,137,108, 36,232, 76,137,100, 36,240, 76,
|
||||||
@@ -65,375 +65,401 @@ unsigned char stub_amd64_linux_elf_so_entry[6372] = {
|
|||||||
/* 0x0190 */ 100, 36,240, 76,137,108, 36,248, 72,131,236, 40, 73,137,252, 65,
|
/* 0x0190 */ 100, 36,240, 76,137,108, 36,248, 72,131,236, 40, 73,137,252, 65,
|
||||||
/* 0x01a0 */ 137,245, 72,141, 45, 0, 0, 0, 0,190, 16, 0, 0, 0, 72,137,
|
/* 0x01a0 */ 137,245, 72,141, 45, 0, 0, 0, 0,190, 16, 0, 0, 0, 72,137,
|
||||||
/* 0x01b0 */ 239,232, 0, 0, 0, 0,137,195,131,248,234,117, 15,190, 0, 0,
|
/* 0x01b0 */ 239,232, 0, 0, 0, 0,137,195,131,248,234,117, 15,190, 0, 0,
|
||||||
/* 0x01c0 */ 0, 0, 72,137,239,232, 0, 0, 0, 0,137,195,133,219,121, 31,
|
/* 0x01c0 */ 0, 0, 72,137,239,232, 0, 0, 0, 0,137,195,133,219,121, 68,
|
||||||
/* 0x01d0 */ 72,141, 61, 0, 0, 0, 0,186,192, 1, 0, 0,190, 2, 0, 65,
|
/* 0x01d0 */ 72,141, 61, 0, 0, 0, 0,186,192, 1, 0, 0,190, 2, 0, 65,
|
||||||
/* 0x01e0 */ 0,232, 0, 0, 0, 0,137,195, 72, 99,208,133,192,120, 77, 68,
|
/* 0x01e0 */ 0,232, 0, 0, 0, 0,137,195,133,192,121, 40, 72, 99,208,131,
|
||||||
/* 0x01f0 */ 137,238,137,223,232, 0, 0, 0, 0, 72, 99,208,133,192,120, 60,
|
/* 0x01f0 */ 248,235,117,109, 72,141, 53, 0, 0, 0, 0,186, 61, 0, 0, 0,
|
||||||
/* 0x0200 */ 73,131,252, 1, 25,201,131,225,240,131,193, 17, 68,137,238, 65,
|
/* 0x0200 */ 191, 2, 0, 0, 0,232, 0, 0, 0, 0,191,127, 0, 0, 0,232,
|
||||||
/* 0x0210 */ 185, 0, 0, 0, 0, 65,137,216,186, 3, 0, 0, 0, 76,137,231,
|
/* 0x0210 */ 0, 0, 0, 0, 68,137,238,137,223,232, 0, 0, 0, 0, 72, 99,
|
||||||
/* 0x0220 */ 232, 0, 0, 0, 0, 73,137,196,232, 0, 0, 0, 0, 76,137,226,
|
/* 0x0220 */ 208,133,192,120, 60, 73,131,252, 1, 25,201,131,225,240,131,193,
|
||||||
/* 0x0230 */ 73, 57,196,115, 7,141, 67, 1, 74,141, 20, 32, 72,137,208, 72,
|
/* 0x0230 */ 17, 68,137,238, 65,185, 0, 0, 0, 0, 65,137,216,186, 3, 0,
|
||||||
/* 0x0240 */ 139, 92, 36, 8, 72,139,108, 36, 16, 76,139,100, 36, 24, 76,139,
|
/* 0x0240 */ 0, 0, 76,137,231,232, 0, 0, 0, 0, 73,137,196,232, 0, 0,
|
||||||
/* 0x0250 */ 108, 36, 32, 72,131,196, 40,195,144, 82, 86, 87, 83, 85, 72,137,
|
/* 0x0250 */ 0, 0, 76,137,226, 73, 57,196,115, 7,141, 67, 1, 74,141, 20,
|
||||||
/* 0x0260 */ 229, 72,141, 29, 0, 0, 0, 0, 72,141, 5,217,255,255,255, 80,
|
/* 0x0260 */ 32, 72,137,208, 72,139, 92, 36, 8, 72,139,108, 36, 16, 76,139,
|
||||||
/* 0x0270 */ 139, 3, 80, 72, 41,196, 72,131,228,240, 41,210, 72,141, 53, 74,
|
/* 0x0270 */ 100, 36, 24, 76,139,108, 36, 32, 72,131,196, 40,195, 0, 0, 0,
|
||||||
/* 0x0280 */ 1, 0, 0, 41,255,104, 1, 1, 0, 0,232, 43, 1, 0, 0,133,
|
/* 0x0280 */ 144, 82, 86, 87, 83, 85, 72,137,229, 72,141, 29, 0, 0, 0, 0,
|
||||||
/* 0x0290 */ 192,120, 52, 80,186, 0, 2, 0, 0, 72,141,116, 36, 8, 95, 87,
|
/* 0x0290 */ 72,141, 5,217,255,255,255, 80,139, 3, 80, 72, 41,196, 72,131,
|
||||||
/* 0x02a0 */ 106, 0,232, 19, 1, 0, 0, 76,141, 4, 48, 95,106, 3,232, 7,
|
/* 0x02a0 */ 228,240, 41,210, 72,141, 53, 74, 1, 0, 0, 41,255,104, 1, 1,
|
||||||
/* 0x02b0 */ 1, 0, 0, 72,137,230, 72,173, 72,145, 72,173, 72,131,249, 6,
|
/* 0x02b0 */ 0, 0,232, 43, 1, 0, 0,133,192,120, 52, 80,186, 0, 2, 0,
|
||||||
/* 0x02c0 */ 116, 10, 76, 57,198,124,239,184, 0, 16, 0, 0, 72,247,216, 80,
|
/* 0x02c0 */ 0, 72,141,116, 36, 8, 95, 87,106, 0,232, 19, 1, 0, 0, 76,
|
||||||
/* 0x02d0 */ 72,141, 21, 27, 0, 0, 0, 72,141,124, 36, 8, 85,139, 75, 4,
|
/* 0x02d0 */ 141, 4, 48, 95,106, 3,232, 7, 1, 0, 0, 72,137,230, 72,173,
|
||||||
/* 0x02e0 */ 72,141,115, 12, 72, 1,241, 81, 49,219, 49,201,106,255, 93,252,
|
/* 0x02e0 */ 72,145, 72,173, 72,131,249, 6,116, 10, 76, 57,198,124,239,184,
|
||||||
/* 0x02f0 */ 235, 20,243, 15, 30,250, 1,219,116, 2,243,195,139, 30, 72,131,
|
/* 0x02f0 */ 0, 16, 0, 0, 72,247,216, 80, 72,141, 21, 27, 0, 0, 0, 72,
|
||||||
/* 0x0300 */ 238,252, 17,219,195,164,255,210,114,251,141, 65, 1,255,210, 17,
|
/* 0x0300 */ 141,124, 36, 8, 85,139, 75, 4, 72,141,115, 12, 72, 1,241, 81,
|
||||||
/* 0x0310 */ 192,255,210,115,248,131,232, 3,114, 12,193,224, 8,172,131,240,
|
/* 0x0310 */ 49,219, 49,201,106,255, 93,252,235, 20,243, 15, 30,250, 1,219,
|
||||||
/* 0x0320 */ 255,116, 47, 72, 99,232,141, 65, 1,255,210, 17,201,255,210, 17,
|
/* 0x0320 */ 116, 2,243,195,139, 30, 72,131,238,252, 17,219,195,164,255,210,
|
||||||
/* 0x0330 */ 201,117, 13,137,193,131,192, 2,255,210, 17,201,255,210,115,248,
|
/* 0x0330 */ 114,251,141, 65, 1,255,210, 17,192,255,210,115,248,131,232, 3,
|
||||||
/* 0x0340 */ 129,253, 0,243,255,255, 17,193, 86, 72,141, 52, 47,243,164, 94,
|
/* 0x0340 */ 114, 12,193,224, 8,172,131,240,255,116, 47, 72, 99,232,141, 65,
|
||||||
/* 0x0350 */ 235,180, 89, 72, 57,206,116, 1,244, 93,104,117,112, 88, 0, 84,
|
/* 0x0350 */ 1,255,210, 17,201,255,210, 17,201,117, 13,137,193,131,192, 2,
|
||||||
/* 0x0360 */ 95,106, 16, 94,184, 63, 1, 0, 0, 15, 5,133,192,121, 9,133,
|
/* 0x0360 */ 255,210, 17,201,255,210,115,248,129,253, 0,243,255,255, 17,193,
|
||||||
/* 0x0370 */ 246,116, 4, 49,246,235,237,244, 89,143, 4, 36, 80, 95, 84, 94,
|
/* 0x0370 */ 86, 72,141, 52, 47,243,164, 94,235,180, 89, 72, 57,206,116, 1,
|
||||||
/* 0x0380 */ 80, 72,139, 85,240,106, 1,232, 46, 0, 0, 0, 65, 88, 72,141,
|
/* 0x0380 */ 244, 93,104,117,112, 88, 0, 84, 95,106, 16, 94,184, 63, 1, 0,
|
||||||
/* 0x0390 */ 101,240, 94, 86, 69, 41,201,106, 2, 65, 90,106, 5, 90, 41,255,
|
/* 0x0390 */ 0, 15, 5,133,192,121, 9,133,246,116, 4, 49,246,235,237,244,
|
||||||
/* 0x03a0 */ 106, 9,232, 19, 0, 0, 0, 80, 65, 80, 95,106, 3,232, 8, 0,
|
/* 0x03a0 */ 89,143, 4, 36, 80, 95, 84, 94, 80, 72,139, 85,240,106, 1,232,
|
||||||
/* 0x03b0 */ 0, 0, 88, 80, 72,131,192, 16,255,224, 72,139, 68, 36, 8, 15,
|
/* 0x03b0 */ 46, 0, 0, 0, 65, 88, 72,141,101,240, 94, 86, 69, 41,201,106,
|
||||||
/* 0x03c0 */ 5, 72, 61, 0,240,255,255,114, 1,204,194, 8, 0, 47,112,114,
|
/* 0x03c0 */ 2, 65, 90,106, 5, 90, 41,255,106, 9,232, 19, 0, 0, 0, 80,
|
||||||
/* 0x03d0 */ 111, 99, 47,115,101,108,102, 47, 97,117,120,118, 0, 0, 0, 0,
|
/* 0x03d0 */ 65, 80, 95,106, 3,232, 8, 0, 0, 0, 88, 80, 72,131,192, 16,
|
||||||
/* 0x03e0 */ 117,112,120, 0, 47,100,101,118, 47,115,104,109, 0,109,101,109,
|
/* 0x03e0 */ 255,224, 72,139, 68, 36, 8, 15, 5, 72, 61, 0,240,255,255,114,
|
||||||
/* 0x03f0 */ 102,100, 95, 99,114,101, 97,116,101, 0,117,112,120, 0, 47,100,
|
/* 0x03f0 */ 1,204,194, 8, 0, 47,112,114,111, 99, 47,115,101,108,102, 47,
|
||||||
/* 0x0400 */ 101,118, 47,115,104,109, 0, 0, 46,115,121,109,116, 97, 98, 0,
|
/* 0x0400 */ 97,117,120,118, 0, 0, 0, 0,117,112,120, 0, 47,100,101,118,
|
||||||
/* 0x0410 */ 46,115,116,114,116, 97, 98, 0, 46,115,104,115,116,114,116, 97,
|
/* 0x0410 */ 47,115,104,109, 0,109,101,109,102,100, 95, 99,114,101, 97,116,
|
||||||
/* 0x0420 */ 98, 0, 46,114,101,108, 97, 72, 85, 77, 70, 95, 65, 0, 46,114,
|
/* 0x0420 */ 101, 0,117,112,120, 0, 47,100,101,118, 47,115,104,109, 0, 85,
|
||||||
/* 0x0430 */ 101,108, 97, 72, 85, 77, 70, 95, 76, 0, 46,114,101,108, 97, 85,
|
/* 0x0430 */ 80, 88, 45, 53, 46, 48, 32,119, 97,110,116,115, 32,109,101,109,
|
||||||
/* 0x0440 */ 77, 70, 95, 65, 78, 68, 82, 79, 73, 68, 0, 46,114,101,108, 97,
|
/* 0x0440 */ 102,100, 95, 99,114,101, 97,116,101, 40, 41, 44, 32,111,114, 32,
|
||||||
/* 0x0450 */ 85, 77, 70, 95, 76, 73, 78, 85, 88, 0, 46,114,101,108, 97, 69,
|
/* 0x0450 */ 110,101,101,100,115, 32, 47,100,101,118, 47,115,104,109, 40, 44,
|
||||||
/* 0x0460 */ 76, 70, 77, 65, 73, 78, 88, 0, 69, 76, 70, 77, 65, 73, 78, 90,
|
/* 0x0460 */ 79, 95, 84, 77, 80, 70, 73, 76, 69, 44, 41, 10, 0, 0, 46,115,
|
||||||
/* 0x0470 */ 0, 83, 84, 82, 67, 79, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0470 */ 121,109,116, 97, 98, 0, 46,115,116,114,116, 97, 98, 0, 46,115,
|
||||||
/* 0x0480 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0480 */ 104,115,116,114,116, 97, 98, 0, 46,114,101,108, 97, 72, 85, 77,
|
||||||
/* 0x0490 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0490 */ 70, 95, 65, 0, 46,114,101,108, 97, 72, 85, 77, 70, 95, 76, 0,
|
||||||
/* 0x04a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x04a0 */ 46,114,101,108, 97, 85, 77, 70, 95, 65, 78, 68, 82, 79, 73, 68,
|
||||||
/* 0x04b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x04b0 */ 0, 46,114,101,108, 97, 85, 77, 70, 95, 76, 73, 78, 85, 88, 0,
|
||||||
/* 0x04c0 */ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x04c0 */ 46,114,101,108, 97, 69, 76, 70, 77, 65, 73, 78, 88, 0, 69, 76,
|
||||||
/* 0x04d0 */ 64, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x04d0 */ 70, 77, 65, 73, 78, 90, 0, 83, 84, 82, 67, 79, 78, 0, 0, 0,
|
||||||
/* 0x04e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x04e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x04f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0,
|
/* 0x04f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0500 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0500 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0510 */ 160, 10, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0510 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0520 */ 14, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0520 */ 32, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0530 */ 24, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x0530 */ 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0540 */ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0540 */ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0550 */ 69, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0550 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0560 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0560 */ 27, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0570 */ 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 4, 0, 0, 0,
|
/* 0x0570 */ 0, 0, 0, 0, 0, 0, 0, 0, 32, 11, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0580 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0580 */ 24, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x0590 */ 184, 10, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0590 */ 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x05a0 */ 14, 0, 0, 0, 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x05a0 */ 44, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x05b0 */ 24, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x05b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x05c0 */ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x05c0 */ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x05d0 */ 80, 0, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x05d0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x05e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x05e0 */ 39, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x05f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 4, 0, 0, 0,
|
/* 0x05f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 56, 11, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0600 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0600 */ 24, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0,
|
||||||
/* 0x0610 */ 208, 10, 0, 0, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x0610 */ 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0620 */ 14, 0, 0, 0, 5, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0620 */ 56, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0630 */ 24, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x0630 */ 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0640 */ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0640 */ 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0650 */ 132, 1, 0, 0, 0, 0, 0, 0,212, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0650 */ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0660 */ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0660 */ 51, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0670 */ 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 4, 0, 0, 0,
|
/* 0x0670 */ 0, 0, 0, 0, 0, 0, 0, 0, 80, 11, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0680 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0680 */ 32, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0,
|
||||||
/* 0x0690 */ 240, 11, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0690 */ 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x06a0 */ 14, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x06a0 */ 73, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x06b0 */ 24, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x06b0 */ 0, 0, 0, 0, 0, 0, 0, 0,132, 1, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x06c0 */ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x06c0 */ 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x06d0 */ 88, 2, 0, 0, 0, 0, 0, 0,136, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x06d0 */ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x06e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x06e0 */ 68, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x06f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 4, 0, 0, 0,
|
/* 0x06f0 */ 0, 0, 0, 0, 0, 0, 0, 0,112, 12, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0700 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0700 */ 8, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 7, 0, 0, 0,
|
||||||
/* 0x0710 */ 176, 12, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0710 */ 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0720 */ 14, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0720 */ 88, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0730 */ 24, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x0730 */ 0, 0, 0, 0, 0, 0, 0, 0,128, 2, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0740 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0740 */ 136, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0750 */ 224, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0750 */ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0760 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0760 */ 83, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0770 */ 0, 0, 0, 0, 0, 0, 0, 0,106, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x0770 */ 0, 0, 0, 0, 0, 0, 0, 0,120, 13, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0780 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0780 */ 24, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 9, 0, 0, 0,
|
||||||
/* 0x0790 */ 224, 3, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0790 */ 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x07a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x07a0 */ 97, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x07b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0,
|
/* 0x07b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x07c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x07c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x07d0 */ 7, 4, 0, 0, 0, 0, 0, 0,113, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x07d0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x07e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x07e0 */ 106, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x07f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0,
|
/* 0x07f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0800 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0800 */ 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0810 */ 120, 8, 0, 0, 0, 0, 0, 0,176, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x0810 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0820 */ 15, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0820 */ 17, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0830 */ 24, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0,
|
/* 0x0830 */ 0, 0, 0, 0, 0, 0, 0, 0,109, 4, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0840 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0840 */ 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0850 */ 40, 10, 0, 0, 0, 0, 0, 0,115, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0850 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0860 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0860 */ 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0870 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0870 */ 0, 0, 0, 0, 0, 0, 0, 0,224, 8, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0880 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0880 */ 200, 1, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 9, 0, 0, 0,
|
||||||
/* 0x0890 */ 0, 0, 0, 0, 3, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0890 */ 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x08a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 0,
|
/* 0x08a0 */ 9, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x08b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x08b0 */ 0, 0, 0, 0, 0, 0, 0, 0,168, 10, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x08c0 */ 1, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x08c0 */ 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x08d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0,
|
/* 0x08d0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x08e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x08e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x08f0 */ 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x08f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 11, 0,
|
||||||
/* 0x0900 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 5, 0,
|
/* 0x0900 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0910 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0910 */ 0, 0, 0, 0, 3, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0920 */ 0, 0, 0, 0, 3, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0920 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 9, 0,
|
||||||
/* 0x0930 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 9, 0,
|
/* 0x0930 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0940 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0940 */ 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0950 */ 8, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0950 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0,
|
||||||
/* 0x0960 */ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 16, 0, 0, 0,
|
/* 0x0960 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0970 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0970 */ 0, 0, 0, 0, 3, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0980 */ 32, 0, 0, 0, 18, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0980 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 7, 0,
|
||||||
/* 0x0990 */ 51, 1, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 16, 0, 0, 0,
|
/* 0x0990 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x09a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x09a0 */ 0, 0, 0, 0, 3, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x09b0 */ 61, 0, 0, 0, 18, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x09b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 16, 0, 0, 0,
|
||||||
/* 0x09c0 */ 212, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 16, 0, 0, 0,
|
/* 0x09c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x09d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x09d0 */ 22, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x09e0 */ 89, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x09e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 18, 0, 5, 0,
|
||||||
/* 0x09f0 */ 0, 0, 0, 0, 0, 0, 0, 0,102, 0, 0, 0, 16, 0, 0, 0,
|
/* 0x09f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0a00 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0a00 */ 56, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0a10 */ 110, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0a10 */ 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 18, 0, 7, 0,
|
||||||
/* 0x0a20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 95,115,116, 97,114,116, 0,
|
/* 0x0a20 */ 0, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0a30 */ 103,101,116, 95,112, 97,103,101, 95,109, 97,115,107, 0,102,116,
|
/* 0x0a30 */ 83, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0a40 */ 114,117,110, 99, 97,116,101, 0,117,112,120, 95,109,109, 97,112,
|
/* 0x0a40 */ 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 16, 0, 0, 0,
|
||||||
/* 0x0a50 */ 95, 97,110,100, 95,102,100, 95, 97,110,100,114,111,105,100, 0,
|
/* 0x0a50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0a60 */ 109,109, 97,112, 0,117,112,120, 95,109,109, 97,112, 95, 97,110,
|
/* 0x0a60 */ 102, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0a70 */ 100, 95,102,100, 95,108,105,110,117,120, 0,119,114,105,116,101,
|
/* 0x0a70 */ 0, 0, 0, 0, 0, 0, 0, 0,110, 0, 0, 0, 16, 0, 0, 0,
|
||||||
/* 0x0a80 */ 0,109,101,109,102,100, 95, 99,114,101, 97,116,101, 0,109,121,
|
/* 0x0a80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0a90 */ 95, 98,107,112,116, 0,111,112,101,110, 0, 0, 0, 0, 0, 0,
|
/* 0x0a90 */ 115, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0aa0 */ 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 11, 0, 0, 0,
|
/* 0x0aa0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 95,115,116, 97,114,116, 0,
|
||||||
/* 0x0ab0 */ 252,255,255,255,255,255,255,255, 1, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0ab0 */ 103,101,116, 95,112, 97,103,101, 95,109, 97,115,107, 0,102,116,
|
||||||
/* 0x0ac0 */ 2, 0, 0, 0, 13, 0, 0, 0,252,255,255,255,255,255,255,255,
|
/* 0x0ac0 */ 114,117,110, 99, 97,116,101, 0,117,112,120, 95,109,109, 97,112,
|
||||||
/* 0x0ad0 */ 33, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0,
|
/* 0x0ad0 */ 95, 97,110,100, 95,102,100, 95, 97,110,100,114,111,105,100, 0,
|
||||||
/* 0x0ae0 */ 252,255,255,255,255,255,255,255, 46, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0ae0 */ 109,109, 97,112, 0,117,112,120, 95,109,109, 97,112, 95, 97,110,
|
||||||
/* 0x0af0 */ 4, 0, 0, 0, 15, 0, 0, 0,252,255,255,255,255,255,255,255,
|
/* 0x0af0 */ 100, 95,102,100, 95,108,105,110,117,120, 0,119,114,105,116,101,
|
||||||
/* 0x0b00 */ 67, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 15, 0, 0, 0,
|
/* 0x0b00 */ 0,109,101,109,102,100, 95, 99,114,101, 97,116,101, 0,109,121,
|
||||||
/* 0x0b10 */ 252,255,255,255,255,255,255,255, 82, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0b10 */ 95, 98,107,112,116, 0,101,120,105,116, 0,111,112,101,110, 0,
|
||||||
/* 0x0b20 */ 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0b20 */ 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 11, 0, 0, 0,
|
||||||
/* 0x0b30 */ 97, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 0, 0, 0,
|
/* 0x0b30 */ 252,255,255,255,255,255,255,255, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0b40 */ 252,255,255,255,255,255,255,255,111, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0b40 */ 2, 0, 0, 0, 13, 0, 0, 0,252,255,255,255,255,255,255,255,
|
||||||
/* 0x0b50 */ 2, 0, 0, 0, 2, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0b50 */ 33, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0,
|
||||||
/* 0x0b60 */ 121, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0,
|
/* 0x0b60 */ 252,255,255,255,255,255,255,255, 46, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0b70 */ 252,255,255,255,255,255,255,255,131, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0b70 */ 4, 0, 0, 0, 15, 0, 0, 0,252,255,255,255,255,255,255,255,
|
||||||
/* 0x0b80 */ 4, 0, 0, 0, 9, 0, 0, 0,252,255,255,255,255,255,255,255,
|
/* 0x0b80 */ 67, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 15, 0, 0, 0,
|
||||||
/* 0x0b90 */ 168, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 10, 0, 0, 0,
|
/* 0x0b90 */ 252,255,255,255,255,255,255,255, 82, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0ba0 */ 252,255,255,255,255,255,255,255,185, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0ba0 */ 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0bb0 */ 4, 0, 0, 0, 9, 0, 0, 0,252,255,255,255,255,255,255,255,
|
/* 0x0bb0 */ 97, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 18, 0, 0, 0,
|
||||||
/* 0x0bc0 */ 208, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0,
|
/* 0x0bc0 */ 252,255,255,255,255,255,255,255,111, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0bd0 */ 252,255,255,255,255,255,255,255,248, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0bd0 */ 2, 0, 0, 0, 2, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0be0 */ 4, 0, 0, 0, 12, 0, 0, 0,252,255,255,255,255,255,255,255,
|
/* 0x0be0 */ 121, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0,
|
||||||
/* 0x0bf0 */ 33, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0,
|
/* 0x0bf0 */ 252,255,255,255,255,255,255,255,131, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0c00 */ 22, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0c00 */ 4, 0, 0, 0, 9, 0, 0, 0,252,255,255,255,255,255,255,255,
|
||||||
/* 0x0c10 */ 4, 0, 0, 0, 15, 0, 0, 0,252,255,255,255,255,255,255,255,
|
/* 0x0c10 */ 168, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 10, 0, 0, 0,
|
||||||
/* 0x0c20 */ 66, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 15, 0, 0, 0,
|
/* 0x0c20 */ 252,255,255,255,255,255,255,255,185, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0c30 */ 252,255,255,255,255,255,255,255, 79, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0c30 */ 4, 0, 0, 0, 9, 0, 0, 0,252,255,255,255,255,255,255,255,
|
||||||
/* 0x0c40 */ 2, 0, 0, 0, 2, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0c40 */ 208, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0,
|
||||||
/* 0x0c50 */ 94, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 0, 0, 0,
|
/* 0x0c50 */ 252,255,255,255,255,255,255,255,248, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0c60 */ 252,255,255,255,255,255,255,255,113, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0c60 */ 4, 0, 0, 0, 12, 0, 0, 0,252,255,255,255,255,255,255,255,
|
||||||
/* 0x0c70 */ 4, 0, 0, 0, 10, 0, 0, 0,252,255,255,255,255,255,255,255,
|
/* 0x0c70 */ 33, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0,
|
||||||
/* 0x0c80 */ 157, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0,
|
/* 0x0c80 */ 22, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0c90 */ 252,255,255,255,255,255,255,255,165, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0c90 */ 4, 0, 0, 0, 15, 0, 0, 0,252,255,255,255,255,255,255,255,
|
||||||
/* 0x0ca0 */ 4, 0, 0, 0, 9, 0, 0, 0,252,255,255,255,255,255,255,255,
|
/* 0x0ca0 */ 66, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 15, 0, 0, 0,
|
||||||
/* 0x0cb0 */ 12, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x0cb0 */ 252,255,255,255,255,255,255,255, 79, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0cc0 */ 252,255,255,255,255,255,255,255,102,105,108,101, 32,102,111,114,
|
/* 0x0cc0 */ 2, 0, 0, 0, 2, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0cd0 */ 109, 97,116, 32,101,108,102, 54, 52, 45,120, 56, 54, 45, 54, 52,
|
/* 0x0cd0 */ 94, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 18, 0, 0, 0,
|
||||||
/* 0x0ce0 */ 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32,
|
/* 0x0ce0 */ 252,255,255,255,255,255,255,255,115, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0cf0 */ 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,
|
/* 0x0cf0 */ 2, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0d00 */ 122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32,
|
/* 0x0d00 */ 130, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0,
|
||||||
/* 0x0d10 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32,
|
/* 0x0d10 */ 252,255,255,255,255,255,255,255,140, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0d20 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101,
|
/* 0x0d20 */ 4, 0, 0, 0, 17, 0, 0, 0,252,255,255,255,255,255,255,255,
|
||||||
/* 0x0d30 */ 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,
|
/* 0x0d30 */ 150, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 10, 0, 0, 0,
|
||||||
/* 0x0d40 */ 115, 10, 32, 32, 48, 32, 72, 85, 77, 70, 95, 65, 32, 32, 32, 32,
|
/* 0x0d40 */ 252,255,255,255,255,255,255,255,194, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0d50 */ 32, 32, 32, 32, 48, 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, 52,
|
/* 0x0d50 */ 4, 0, 0, 0, 12, 0, 0, 0,252,255,255,255,255,255,255,255,
|
||||||
/* 0x0d60 */ 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84,
|
/* 0x0d60 */ 202, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 9, 0, 0, 0,
|
||||||
/* 0x0d70 */ 83, 10, 32, 32, 49, 32, 72, 85, 77, 70, 95, 76, 32, 32, 32, 32,
|
/* 0x0d70 */ 252,255,255,255,255,255,255,255, 12, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0d80 */ 32, 32, 32, 32, 48, 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, 52,
|
/* 0x0d80 */ 2, 0, 0, 0, 1, 0, 0, 0,252,255,255,255,255,255,255,255,
|
||||||
/* 0x0d90 */ 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84,
|
/* 0x0d90 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 54,
|
||||||
/* 0x0da0 */ 83, 10, 32, 32, 50, 32, 85, 77, 70, 95, 65, 78, 68, 82, 79, 73,
|
/* 0x0da0 */ 52, 45,120, 56, 54, 45, 54, 52, 10, 10, 83,101, 99,116,105,111,
|
||||||
/* 0x0db0 */ 68, 32, 32, 32, 48, 49, 51, 51, 32, 32, 48, 32, 32, 48, 32, 32,
|
/* 0x0db0 */ 110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32,
|
||||||
/* 0x0dc0 */ 48, 53, 48, 32, 32, 50, 42, 42, 52, 32, 32, 67, 79, 78, 84, 69,
|
/* 0x0dc0 */ 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x0dd0 */ 78, 84, 83, 10, 32, 32, 51, 32, 85, 77, 70, 95, 76, 73, 78, 85,
|
/* 0x0dd0 */ 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x0de0 */ 88, 32, 32, 32, 32, 32, 48,100, 52, 32, 32, 48, 32, 32, 48, 32,
|
/* 0x0de0 */ 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x0df0 */ 32, 48, 49, 56, 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78,
|
/* 0x0df0 */ 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,
|
||||||
/* 0x0e00 */ 84, 69, 78, 84, 83, 10, 32, 32, 52, 32, 69, 76, 70, 77, 65, 73,
|
/* 0x0e00 */ 103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 72, 85,
|
||||||
/* 0x0e10 */ 78, 88, 32, 32, 32, 32, 32, 32, 48, 49, 56, 56, 32, 32, 48, 32,
|
/* 0x0e10 */ 77, 70, 95, 65, 32, 32, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32,
|
||||||
/* 0x0e20 */ 32, 48, 32, 32, 48, 50, 53, 56, 32, 32, 50, 42, 42, 50, 32, 32,
|
/* 0x0e20 */ 48, 32, 32, 48, 32, 32, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32,
|
||||||
/* 0x0e30 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 53, 32, 69, 76, 70,
|
/* 0x0e30 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 72, 85,
|
||||||
/* 0x0e40 */ 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 32, 32, 48, 32,
|
/* 0x0e40 */ 77, 70, 95, 76, 32, 32, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32,
|
||||||
/* 0x0e50 */ 32, 48, 32, 32, 48, 51,101, 48, 32, 32, 50, 42, 42, 48, 32, 32,
|
/* 0x0e50 */ 48, 32, 32, 48, 32, 32, 48, 52, 53, 32, 32, 50, 42, 42, 48, 32,
|
||||||
/* 0x0e60 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 54, 32, 83, 84, 82,
|
/* 0x0e60 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32, 85, 77,
|
||||||
/* 0x0e70 */ 67, 79, 78, 32, 32, 32, 32, 32, 32, 32, 32, 48, 50, 55, 32, 32,
|
/* 0x0e70 */ 70, 95, 65, 78, 68, 82, 79, 73, 68, 32, 32, 32, 48, 49, 51, 51,
|
||||||
/* 0x0e80 */ 48, 32, 32, 48, 32, 32, 48, 51,101, 48, 32, 32, 50, 42, 42, 48,
|
/* 0x0e80 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 53, 48, 32, 32, 50, 42, 42,
|
||||||
/* 0x0e90 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79,
|
/* 0x0e90 */ 52, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 51, 32,
|
||||||
/* 0x0ea0 */ 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0ea0 */ 85, 77, 70, 95, 76, 73, 78, 85, 88, 32, 32, 32, 32, 32, 48,102,
|
||||||
/* 0x0eb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
|
/* 0x0eb0 */ 57, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 56, 52, 32, 32, 50,
|
||||||
/* 0x0ec0 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32, 69, 76, 70,
|
/* 0x0ec0 */ 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32,
|
||||||
/* 0x0ed0 */ 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0ed0 */ 52, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x0ee0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 83,
|
/* 0x0ee0 */ 48, 49, 56, 56, 32, 32, 48, 32, 32, 48, 32, 32, 48, 50, 56, 48,
|
||||||
/* 0x0ef0 */ 84, 82, 67, 79, 78, 32, 48, 32, 83, 84, 82, 67, 79, 78, 10, 48,
|
/* 0x0ef0 */ 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83,
|
||||||
/* 0x0f00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
/* 0x0f00 */ 10, 32, 32, 53, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32,
|
||||||
/* 0x0f10 */ 108, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88,
|
/* 0x0f10 */ 32, 32, 32, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 52, 48, 56,
|
||||||
/* 0x0f20 */ 32, 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48,
|
/* 0x0f20 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83,
|
||||||
/* 0x0f30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
|
/* 0x0f30 */ 10, 32, 32, 54, 32, 83, 84, 82, 67, 79, 78, 32, 32, 32, 32, 32,
|
||||||
/* 0x0f40 */ 100, 32, 32, 72, 85, 77, 70, 95, 65, 32, 48, 32, 72, 85, 77, 70,
|
/* 0x0f40 */ 32, 32, 32, 48, 54, 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, 52,
|
||||||
/* 0x0f50 */ 95, 65, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0f50 */ 48, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
|
||||||
/* 0x0f60 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 72, 85, 77, 70,
|
/* 0x0f60 */ 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58,
|
||||||
/* 0x0f70 */ 95, 76, 32, 48, 32, 72, 85, 77, 70, 95, 76, 10, 48, 48, 48, 48,
|
/* 0x0f70 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x0f80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
|
/* 0x0f80 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73,
|
||||||
/* 0x0f90 */ 32, 32,100, 32, 32, 85, 77, 70, 95, 65, 78, 68, 82, 79, 73, 68,
|
/* 0x0f90 */ 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48,
|
||||||
/* 0x0fa0 */ 32, 48, 32, 85, 77, 70, 95, 65, 78, 68, 82, 79, 73, 68, 10, 48,
|
/* 0x0fa0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
|
||||||
/* 0x0fb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
/* 0x0fb0 */ 32, 32, 32, 32,100, 32, 32, 83, 84, 82, 67, 79, 78, 32, 48, 32,
|
||||||
/* 0x0fc0 */ 108, 32, 32, 32, 32,100, 32, 32, 85, 77, 70, 95, 76, 73, 78, 85,
|
/* 0x0fc0 */ 83, 84, 82, 67, 79, 78, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x0fd0 */ 88, 32, 48, 32, 85, 77, 70, 95, 76, 73, 78, 85, 88, 10, 48, 48,
|
/* 0x0fd0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x0fe0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
|
/* 0x0fe0 */ 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 95,115,116, 97,114,
|
||||||
/* 0x0ff0 */ 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32,
|
/* 0x0ff0 */ 116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1000 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48,
|
/* 0x1000 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 72, 85, 77, 70, 95,
|
||||||
/* 0x1010 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32,
|
/* 0x1010 */ 65, 32, 48, 32, 72, 85, 77, 70, 95, 65, 10, 48, 48, 48, 48, 48,
|
||||||
/* 0x1020 */ 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,103,101,116, 95,
|
/* 0x1020 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32,
|
||||||
/* 0x1030 */ 112, 97,103,101, 95,109, 97,115,107, 10, 48, 48, 48, 48, 48, 48,
|
/* 0x1030 */ 32,100, 32, 32, 72, 85, 77, 70, 95, 76, 32, 48, 32, 72, 85, 77,
|
||||||
/* 0x1040 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32,
|
/* 0x1040 */ 70, 95, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1050 */ 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,102,116,114,117,110,
|
/* 0x1050 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 85, 77, 70,
|
||||||
/* 0x1060 */ 99, 97,116,101, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x1060 */ 95, 65, 78, 68, 82, 79, 73, 68, 32, 48, 32, 85, 77, 70, 95, 65,
|
||||||
/* 0x1070 */ 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 85, 77,
|
/* 0x1070 */ 78, 68, 82, 79, 73, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1080 */ 70, 95, 65, 78, 68, 82, 79, 73, 68, 32, 48, 49, 51, 51, 32,117,
|
/* 0x1080 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
|
||||||
/* 0x1090 */ 112,120, 95,109,109, 97,112, 95, 97,110,100, 95,102,100, 95, 97,
|
/* 0x1090 */ 85, 77, 70, 95, 76, 73, 78, 85, 88, 32, 48, 32, 85, 77, 70, 95,
|
||||||
/* 0x10a0 */ 110,100,114,111,105,100, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x10a0 */ 76, 73, 78, 85, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x10b0 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x10b0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69,
|
||||||
/* 0x10c0 */ 42, 85, 78, 68, 42, 32, 48, 32,109,109, 97,112, 10, 48, 48, 48,
|
/* 0x10c0 */ 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70, 77, 65, 73,
|
||||||
/* 0x10d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32,
|
/* 0x10d0 */ 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x10e0 */ 32, 32, 32, 32, 70, 32, 85, 77, 70, 95, 76, 73, 78, 85, 88, 32,
|
/* 0x10e0 */ 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68,
|
||||||
/* 0x10f0 */ 48,100, 52, 32,117,112,120, 95,109,109, 97,112, 95, 97,110,100,
|
/* 0x10f0 */ 42, 32, 48, 32,103,101,116, 95,112, 97,103,101, 95,109, 97,115,
|
||||||
/* 0x1100 */ 95,102,100, 95,108,105,110,117,120, 10, 48, 48, 48, 48, 48, 48,
|
/* 0x1100 */ 107, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1110 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32,
|
/* 0x1110 */ 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42,
|
||||||
/* 0x1120 */ 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,119,114,105,116,101,
|
/* 0x1120 */ 32, 48, 32,102,116,114,117,110, 99, 97,116,101, 10, 48, 48, 48,
|
||||||
/* 0x1130 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x1130 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32,
|
||||||
/* 0x1140 */ 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32,
|
/* 0x1140 */ 32, 32, 32, 32, 70, 32, 85, 77, 70, 95, 65, 78, 68, 82, 79, 73,
|
||||||
/* 0x1150 */ 48, 32,109,101,109,102,100, 95, 99,114,101, 97,116,101, 10, 48,
|
/* 0x1150 */ 68, 32, 48, 49, 51, 51, 32,117,112,120, 95,109,109, 97,112, 95,
|
||||||
/* 0x1160 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
/* 0x1160 */ 97,110,100, 95,102,100, 95, 97,110,100,114,111,105,100, 10, 48,
|
||||||
/* 0x1170 */ 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,
|
/* 0x1170 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
||||||
/* 0x1180 */ 109,121, 95, 98,107,112,116, 10, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x1180 */ 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,
|
||||||
/* 0x1190 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x1190 */ 109,109, 97,112, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x11a0 */ 32, 42, 85, 78, 68, 42, 32, 48, 32,111,112,101,110, 10, 10, 82,
|
/* 0x11a0 */ 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 85, 77,
|
||||||
/* 0x11b0 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68,
|
/* 0x11b0 */ 70, 95, 76, 73, 78, 85, 88, 32, 48,102, 57, 32,117,112,120, 95,
|
||||||
/* 0x11c0 */ 83, 32, 70, 79, 82, 32, 91, 72, 85, 77, 70, 95, 65, 93, 58, 10,
|
/* 0x11c0 */ 109,109, 97,112, 95, 97,110,100, 95,102,100, 95,108,105,110,117,
|
||||||
/* 0x11d0 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x11d0 */ 120, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x11e0 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x11e0 */ 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42,
|
||||||
/* 0x11f0 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x11f0 */ 32, 48, 32,119,114,105,116,101, 10, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1200 */ 48, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 88, 56, 54, 95,
|
/* 0x1200 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1210 */ 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,117,112,120, 95,
|
/* 0x1210 */ 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,109,101,109,102,100, 95,
|
||||||
/* 0x1220 */ 109,109, 97,112, 95, 97,110,100, 95,102,100, 95, 97,110,100,114,
|
/* 0x1220 */ 99,114,101, 97,116,101, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1230 */ 111,105,100, 43, 48,120,102,102,102,102,102,102,102,102,102,102,
|
/* 0x1230 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1240 */ 102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
|
/* 0x1240 */ 42, 85, 78, 68, 42, 32, 48, 32,109,121, 95, 98,107,112,116, 10,
|
||||||
/* 0x1250 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
|
/* 0x1250 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1260 */ 72, 85, 77, 70, 95, 76, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
|
/* 0x1260 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48,
|
||||||
/* 0x1270 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32,
|
/* 0x1270 */ 32,101,120,105,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1280 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85,
|
/* 0x1280 */ 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42,
|
||||||
/* 0x1290 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x1290 */ 85, 78, 68, 42, 32, 48, 32,111,112,101,110, 10, 10, 82, 69, 76,
|
||||||
/* 0x12a0 */ 48, 49, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50,
|
/* 0x12a0 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32,
|
||||||
/* 0x12b0 */ 32, 32, 32, 32, 32,117,112,120, 95,109,109, 97,112, 95, 97,110,
|
/* 0x12b0 */ 70, 79, 82, 32, 91, 72, 85, 77, 70, 95, 65, 93, 58, 10, 79, 70,
|
||||||
/* 0x12c0 */ 100, 95,102,100, 95,108,105,110,117,120, 43, 48,120,102,102,102,
|
/* 0x12c0 */ 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84,
|
||||||
/* 0x12d0 */ 102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82,
|
/* 0x12d0 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x12e0 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68,
|
/* 0x12e0 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x12f0 */ 83, 32, 70, 79, 82, 32, 91, 85, 77, 70, 95, 65, 78, 68, 82, 79,
|
/* 0x12f0 */ 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 88, 56, 54, 95, 54, 52,
|
||||||
/* 0x1300 */ 73, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
|
/* 0x1300 */ 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,117,112,120, 95,109,109,
|
||||||
/* 0x1310 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
|
/* 0x1310 */ 97,112, 95, 97,110,100, 95,102,100, 95, 97,110,100,114,111,105,
|
||||||
/* 0x1320 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
|
/* 0x1320 */ 100, 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,
|
||||||
/* 0x1330 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 32, 82,
|
/* 0x1330 */ 102,102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
|
||||||
/* 0x1340 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
|
/* 0x1340 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 72, 85,
|
||||||
/* 0x1350 */ 32, 83, 84, 82, 67, 79, 78, 43, 48,120,102,102,102,102,102,102,
|
/* 0x1350 */ 77, 70, 95, 76, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32,
|
||||||
/* 0x1360 */ 102,102,102,102,102,102,102,102,102, 99, 10, 48, 48, 48, 48, 48,
|
/* 0x1360 */ 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32,
|
||||||
/* 0x1370 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 50,101, 32, 82, 95, 88, 56,
|
/* 0x1370 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10,
|
||||||
/* 0x1380 */ 54, 95, 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,109,101,
|
/* 0x1380 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49,
|
||||||
/* 0x1390 */ 109,102,100, 95, 99,114,101, 97,116,101, 43, 48,120,102,102,102,
|
/* 0x1390 */ 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32,
|
||||||
/* 0x13a0 */ 102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 48, 48,
|
/* 0x13a0 */ 32, 32, 32,117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,
|
||||||
/* 0x13b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 51, 32, 82,
|
/* 0x13b0 */ 102,100, 95,108,105,110,117,120, 43, 48,120,102,102,102,102,102,
|
||||||
/* 0x13c0 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32,
|
/* 0x13c0 */ 102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76,
|
||||||
/* 0x13d0 */ 32,109,101,109,102,100, 95, 99,114,101, 97,116,101, 43, 48,120,
|
/* 0x13d0 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32,
|
||||||
/* 0x13e0 */ 102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, 99,
|
/* 0x13e0 */ 70, 79, 82, 32, 91, 85, 77, 70, 95, 65, 78, 68, 82, 79, 73, 68,
|
||||||
/* 0x13f0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53,
|
/* 0x13f0 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1400 */ 50, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
/* 0x1400 */ 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1410 */ 32, 32, 32, 32, 83, 84, 82, 67, 79, 78, 10, 48, 48, 48, 48, 48,
|
/* 0x1410 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48,
|
||||||
/* 0x1420 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 54, 49, 32, 82, 95, 88, 56,
|
/* 0x1420 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 32, 82, 95, 88,
|
||||||
/* 0x1430 */ 54, 95, 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,111,112,
|
/* 0x1430 */ 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 83,
|
||||||
/* 0x1440 */ 101,110, 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,
|
/* 0x1440 */ 84, 82, 67, 79, 78, 43, 48,120,102,102,102,102,102,102,102,102,
|
||||||
/* 0x1450 */ 102,102,102,102, 99, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x1450 */ 102,102,102,102,102,102,102, 99, 10, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1460 */ 48, 48, 48, 48, 54,102, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95,
|
/* 0x1460 */ 48, 48, 48, 48, 48, 48, 48, 50,101, 32, 82, 95, 88, 56, 54, 95,
|
||||||
/* 0x1470 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 83, 84, 82, 67, 79, 78, 43,
|
/* 0x1470 */ 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,109,101,109,102,
|
||||||
/* 0x1480 */ 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x1480 */ 100, 95, 99,114,101, 97,116,101, 43, 48,120,102,102,102,102,102,
|
||||||
/* 0x1490 */ 48, 57, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x1490 */ 102,102,102,102,102,102,102,102,102,102, 99, 10, 48, 48, 48, 48,
|
||||||
/* 0x14a0 */ 48, 55, 57, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 76, 84,
|
/* 0x14a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 51, 32, 82, 95, 88,
|
||||||
/* 0x14b0 */ 51, 50, 32, 32, 32, 32,109,121, 95, 98,107,112,116, 43, 48,120,
|
/* 0x14b0 */ 56, 54, 95, 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,109,
|
||||||
/* 0x14c0 */ 102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, 99,
|
/* 0x14c0 */ 101,109,102,100, 95, 99,114,101, 97,116,101, 43, 48,120,102,102,
|
||||||
/* 0x14d0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
|
/* 0x14d0 */ 102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 48,
|
||||||
/* 0x14e0 */ 51, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 76, 84, 51, 50,
|
/* 0x14e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 50, 32,
|
||||||
/* 0x14f0 */ 32, 32, 32, 32,103,101,116, 95,112, 97,103,101, 95,109, 97,115,
|
/* 0x14f0 */ 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||||
/* 0x1500 */ 107, 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,
|
/* 0x1500 */ 32, 32, 83, 84, 82, 67, 79, 78, 10, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1510 */ 102,102,102, 99, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x1510 */ 48, 48, 48, 48, 48, 48, 48, 54, 49, 32, 82, 95, 88, 56, 54, 95,
|
||||||
/* 0x1520 */ 48, 48, 48, 97, 56, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80,
|
/* 0x1520 */ 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,111,112,101,110,
|
||||||
/* 0x1530 */ 76, 84, 51, 50, 32, 32, 32, 32,102,116,114,117,110, 99, 97,116,
|
/* 0x1530 */ 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,
|
||||||
/* 0x1540 */ 101, 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,
|
/* 0x1540 */ 102,102, 99, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1550 */ 102,102,102, 99, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x1550 */ 48, 48, 54,102, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67,
|
||||||
/* 0x1560 */ 48, 48, 48, 98, 57, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80,
|
/* 0x1560 */ 51, 50, 32, 32, 32, 32, 32, 83, 84, 82, 67, 79, 78, 43, 48,120,
|
||||||
/* 0x1570 */ 76, 84, 51, 50, 32, 32, 32, 32,103,101,116, 95,112, 97,103,101,
|
/* 0x1570 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 57,
|
||||||
/* 0x1580 */ 95,109, 97,115,107, 43, 48,120,102,102,102,102,102,102,102,102,
|
/* 0x1580 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 55,
|
||||||
/* 0x1590 */ 102,102,102,102,102,102,102, 99, 10, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x1590 */ 57, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 76, 84, 51, 50,
|
||||||
/* 0x15a0 */ 48, 48, 48, 48, 48, 48, 48,100, 48, 32, 82, 95, 88, 56, 54, 95,
|
/* 0x15a0 */ 32, 32, 32, 32,109,121, 95, 98,107,112,116, 43, 48,120,102,102,
|
||||||
/* 0x15b0 */ 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,119,114,105,116,
|
/* 0x15b0 */ 102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 48,
|
||||||
/* 0x15c0 */ 101, 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,
|
/* 0x15c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, 51, 32,
|
||||||
/* 0x15d0 */ 102,102,102, 99, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x15d0 */ 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 76, 84, 51, 50, 32, 32,
|
||||||
/* 0x15e0 */ 48, 48, 48,102, 56, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80,
|
/* 0x15e0 */ 32, 32,103,101,116, 95,112, 97,103,101, 95,109, 97,115,107, 43,
|
||||||
/* 0x15f0 */ 76, 84, 51, 50, 32, 32, 32, 32,109,109, 97,112, 43, 48,120,102,
|
/* 0x15f0 */ 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,102,
|
||||||
/* 0x1600 */ 102,102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10,
|
/* 0x1600 */ 102, 99, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1610 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79,
|
/* 0x1610 */ 48, 97, 56, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 76, 84,
|
||||||
/* 0x1620 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 85, 77, 70, 95, 76, 73, 78,
|
/* 0x1620 */ 51, 50, 32, 32, 32, 32,102,116,114,117,110, 99, 97,116,101, 43,
|
||||||
/* 0x1630 */ 85, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
|
/* 0x1630 */ 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,102,
|
||||||
/* 0x1640 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
|
/* 0x1640 */ 102, 99, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1650 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
|
/* 0x1650 */ 48, 98, 57, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 76, 84,
|
||||||
/* 0x1660 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 32, 82,
|
/* 0x1660 */ 51, 50, 32, 32, 32, 32,103,101,116, 95,112, 97,103,101, 95,109,
|
||||||
/* 0x1670 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
|
/* 0x1670 */ 97,115,107, 43, 48,120,102,102,102,102,102,102,102,102,102,102,
|
||||||
/* 0x1680 */ 32, 83, 84, 82, 67, 79, 78, 43, 48,120, 48, 48, 48, 48, 48, 48,
|
/* 0x1680 */ 102,102,102,102,102, 99, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1690 */ 48, 48, 48, 48, 48, 48, 48, 48, 49, 54, 10, 48, 48, 48, 48, 48,
|
/* 0x1690 */ 48, 48, 48, 48, 48,100, 48, 32, 82, 95, 88, 56, 54, 95, 54, 52,
|
||||||
/* 0x16a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 50,101, 32, 82, 95, 88, 56,
|
/* 0x16a0 */ 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,119,114,105,116,101, 43,
|
||||||
/* 0x16b0 */ 54, 95, 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,109,101,
|
/* 0x16b0 */ 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,102,
|
||||||
/* 0x16c0 */ 109,102,100, 95, 99,114,101, 97,116,101, 43, 48,120,102,102,102,
|
/* 0x16c0 */ 102, 99, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x16d0 */ 102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 48, 48,
|
/* 0x16d0 */ 48,102, 56, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 76, 84,
|
||||||
/* 0x16e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 50, 32, 82,
|
/* 0x16e0 */ 51, 50, 32, 32, 32, 32,109,109, 97,112, 43, 48,120,102,102,102,
|
||||||
/* 0x16f0 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32,
|
/* 0x16f0 */ 102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82,
|
||||||
/* 0x1700 */ 32,109,101,109,102,100, 95, 99,114,101, 97,116,101, 43, 48,120,
|
/* 0x1700 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68,
|
||||||
/* 0x1710 */ 102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, 99,
|
/* 0x1710 */ 83, 32, 70, 79, 82, 32, 91, 85, 77, 70, 95, 76, 73, 78, 85, 88,
|
||||||
/* 0x1720 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52,
|
/* 0x1720 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1730 */ 102, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
/* 0x1730 */ 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1740 */ 32, 32, 32, 32, 83, 84, 82, 67, 79, 78, 43, 48,120, 48, 48, 48,
|
/* 0x1740 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48,
|
||||||
/* 0x1750 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 97, 10, 48, 48,
|
/* 0x1750 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 32, 82, 95, 88,
|
||||||
/* 0x1760 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53,101, 32, 82,
|
/* 0x1760 */ 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 83,
|
||||||
/* 0x1770 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32,
|
/* 0x1770 */ 84, 82, 67, 79, 78, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1780 */ 32,111,112,101,110, 43, 48,120,102,102,102,102,102,102,102,102,
|
/* 0x1780 */ 48, 48, 48, 48, 48, 48, 49, 54, 10, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1790 */ 102,102,102,102,102,102,102, 99, 10, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x1790 */ 48, 48, 48, 48, 48, 48, 48, 50,101, 32, 82, 95, 88, 56, 54, 95,
|
||||||
/* 0x17a0 */ 48, 48, 48, 48, 48, 48, 48, 55, 49, 32, 82, 95, 88, 56, 54, 95,
|
/* 0x17a0 */ 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,109,101,109,102,
|
||||||
/* 0x17b0 */ 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,102,116,114,117,
|
/* 0x17b0 */ 100, 95, 99,114,101, 97,116,101, 43, 48,120,102,102,102,102,102,
|
||||||
/* 0x17c0 */ 110, 99, 97,116,101, 43, 48,120,102,102,102,102,102,102,102,102,
|
/* 0x17c0 */ 102,102,102,102,102,102,102,102,102,102, 99, 10, 48, 48, 48, 48,
|
||||||
/* 0x17d0 */ 102,102,102,102,102,102,102, 99, 10, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x17d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 50, 32, 82, 95, 88,
|
||||||
/* 0x17e0 */ 48, 48, 48, 48, 48, 48, 48, 57,100, 32, 82, 95, 88, 56, 54, 95,
|
/* 0x17e0 */ 56, 54, 95, 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,109,
|
||||||
/* 0x17f0 */ 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,109,109, 97,112,
|
/* 0x17f0 */ 101,109,102,100, 95, 99,114,101, 97,116,101, 43, 48,120,102,102,
|
||||||
/* 0x1800 */ 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,
|
/* 0x1800 */ 102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 48,
|
||||||
/* 0x1810 */ 102,102, 99, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x1810 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52,102, 32,
|
||||||
/* 0x1820 */ 48, 48, 97, 53, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 76,
|
/* 0x1820 */ 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||||
/* 0x1830 */ 84, 51, 50, 32, 32, 32, 32,103,101,116, 95,112, 97,103,101, 95,
|
/* 0x1830 */ 32, 32, 83, 84, 82, 67, 79, 78, 43, 48,120, 48, 48, 48, 48, 48,
|
||||||
/* 0x1840 */ 109, 97,115,107, 43, 48,120,102,102,102,102,102,102,102,102,102,
|
/* 0x1840 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 97, 10, 48, 48, 48, 48,
|
||||||
/* 0x1850 */ 102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84,
|
/* 0x1850 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53,101, 32, 82, 95, 88,
|
||||||
/* 0x1860 */ 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32,
|
/* 0x1860 */ 56, 54, 95, 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,111,
|
||||||
/* 0x1870 */ 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83,
|
/* 0x1870 */ 112,101,110, 43, 48,120,102,102,102,102,102,102,102,102,102,102,
|
||||||
/* 0x1880 */ 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80,
|
/* 0x1880 */ 102,102,102,102,102, 99, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1890 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86,
|
/* 0x1890 */ 48, 48, 48, 48, 48, 55, 51, 32, 82, 95, 88, 56, 54, 95, 54, 52,
|
||||||
/* 0x18a0 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x18a0 */ 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 83, 84, 82, 67, 79, 78,
|
||||||
/* 0x18b0 */ 48, 48, 48, 48, 99, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80,
|
/* 0x18b0 */ 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x18c0 */ 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90,
|
/* 0x18c0 */ 48, 50, 51, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x18d0 */ 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,
|
/* 0x18d0 */ 48, 48, 56, 50, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 76,
|
||||||
/* 0x18e0 */ 102,102, 99, 10
|
/* 0x18e0 */ 84, 51, 50, 32, 32, 32, 32,119,114,105,116,101, 43, 48,120,102,
|
||||||
|
/* 0x18f0 */ 102,102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10,
|
||||||
|
/* 0x1900 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, 99,
|
||||||
|
/* 0x1910 */ 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 76, 84, 51, 50, 32,
|
||||||
|
/* 0x1920 */ 32, 32, 32,101,120,105,116, 43, 48,120,102,102,102,102,102,102,
|
||||||
|
/* 0x1930 */ 102,102,102,102,102,102,102,102,102, 99, 10, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x1940 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 57, 54, 32, 82, 95, 88, 56,
|
||||||
|
/* 0x1950 */ 54, 95, 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,102,116,
|
||||||
|
/* 0x1960 */ 114,117,110, 99, 97,116,101, 43, 48,120,102,102,102,102,102,102,
|
||||||
|
/* 0x1970 */ 102,102,102,102,102,102,102,102,102, 99, 10, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x1980 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 99, 50, 32, 82, 95, 88, 56,
|
||||||
|
/* 0x1990 */ 54, 95, 54, 52, 95, 80, 76, 84, 51, 50, 32, 32, 32, 32,109,109,
|
||||||
|
/* 0x19a0 */ 97,112, 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,
|
||||||
|
/* 0x19b0 */ 102,102,102,102, 99, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x19c0 */ 48, 48, 48, 48, 99, 97, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95,
|
||||||
|
/* 0x19d0 */ 80, 76, 84, 51, 50, 32, 32, 32, 32,103,101,116, 95,112, 97,103,
|
||||||
|
/* 0x19e0 */ 101, 95,109, 97,115,107, 43, 48,120,102,102,102,102,102,102,102,
|
||||||
|
/* 0x19f0 */ 102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79, 67,
|
||||||
|
/* 0x1a00 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79,
|
||||||
|
/* 0x1a10 */ 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70,
|
||||||
|
/* 0x1a20 */ 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84,
|
||||||
|
/* 0x1a30 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x1a40 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x1a50 */ 48, 48, 48, 48, 48, 48, 99, 32, 82, 95, 88, 56, 54, 95, 54, 52,
|
||||||
|
/* 0x1a60 */ 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73,
|
||||||
|
/* 0x1a70 */ 78, 90, 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,
|
||||||
|
/* 0x1a80 */ 102,102,102,102, 99, 10
|
||||||
};
|
};
|
||||||
|
|||||||
Generated
+1354
-1328
File diff suppressed because it is too large
Load Diff
Generated
+962
-814
File diff suppressed because it is too large
Load Diff
Generated
+2291
-2273
File diff suppressed because it is too large
Load Diff
Generated
+726
-708
File diff suppressed because it is too large
Load Diff
Generated
+2142
-2123
File diff suppressed because it is too large
Load Diff
Generated
+969
-822
File diff suppressed because it is too large
Load Diff
Generated
+2304
-2287
File diff suppressed because it is too large
Load Diff
Generated
+695
-678
File diff suppressed because it is too large
Load Diff
Generated
+2175
-2155
File diff suppressed because it is too large
Load Diff
Generated
+188
-106
@@ -1,5 +1,5 @@
|
|||||||
/* arm64-linux.elf-entry.h
|
/* arm64-linux.elf-entry.h
|
||||||
created from arm64-linux.elf-entry.bin, 1656 (0x678) bytes
|
created from arm64-linux.elf-entry.bin, 2971 (0xb9b) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -32,113 +32,195 @@
|
|||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
|
||||||
#define STUB_ARM64_LINUX_ELF_ENTRY_SIZE 1656
|
#define STUB_ARM64_LINUX_ELF_ENTRY_SIZE 2971
|
||||||
#define STUB_ARM64_LINUX_ELF_ENTRY_ADLER32 0x7eeabbed
|
#define STUB_ARM64_LINUX_ELF_ENTRY_ADLER32 0x0d9b4202
|
||||||
#define STUB_ARM64_LINUX_ELF_ENTRY_CRC32 0x7ffb080c
|
#define STUB_ARM64_LINUX_ELF_ENTRY_CRC32 0x7209b84d
|
||||||
|
|
||||||
unsigned char stub_arm64_linux_elf_entry[1656] = {
|
unsigned char stub_arm64_linux_elf_entry[2971] = {
|
||||||
/* 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,
|
||||||
/* 0x0010 */ 1, 0,183, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0010 */ 1, 0,183, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 64, 4, 0, 0, 0, 0, 0, 0,
|
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
|
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
|
||||||
/* 0x0040 */ 0, 0, 0, 0,224, 7,191,169,211,255,255, 24,224, 99, 0,145,
|
/* 0x0040 */ 0, 0, 0, 0,224, 7,191,169,211,255,255, 24, 18, 0, 0, 16,
|
||||||
/* 0x0050 */ 76, 0, 0,148, 75, 0, 0,148,246, 3, 0,170,255,131, 0,209,
|
/* 0x0050 */ 32, 20, 0, 16,129, 0,128,210,224, 7,188,169,255, 15, 0,249,
|
||||||
/* 0x0060 */ 1, 8,193,168, 63, 24, 0,113, 96, 0, 0, 84,161,255,255, 53,
|
/* 0x0060 */ 255, 19, 0,249, 3, 1,128,210,226, 3, 31,170,225, 3, 0,145,
|
||||||
/* 0x0070 */ 34, 0,160,210,250, 3, 2,203,250, 3, 0,249, 0, 0, 0,148,
|
/* 0x0070 */ 96, 1,128, 82,200, 16,128, 82, 1, 0, 0,212,255, 3, 1,145,
|
||||||
/* 0x0080 */ 244, 3, 30,170, 1, 2,128, 82, 0, 0, 0, 16,232, 34,128, 82,
|
/* 0x0080 */ 114, 25, 0, 16,209, 0, 0, 20, 47,112,114,111, 99, 47,115,101,
|
||||||
/* 0x0090 */ 1, 0, 0,212, 0, 2,248, 54, 97, 0, 0, 52,225, 3, 31, 42,
|
/* 0x0090 */ 108,102, 47, 99,109,100,108,105,110,101, 0, 10, 10, 83, 73, 71,
|
||||||
/* 0x00a0 */ 250,255,255, 23, 6, 0, 0,148,192, 1, 0, 0, 2, 0, 65, 0,
|
/* 0x00a0 */ 83, 69, 71, 86, 32, 97,100,100,114,101,115,115, 32,115,112, 97,
|
||||||
/* 0x00b0 */ 47,100,101,118, 47,115,104,109, 0, 0, 0, 0,195, 71, 64,184,
|
/* 0x00b0 */ 99,101, 58, 10, 0, 47,112,114,111, 99, 47,115,101,108,102, 47,
|
||||||
/* 0x00c0 */ 194, 71, 64,184,225, 3, 30,170, 96, 12,128, 18, 8, 7,128, 82,
|
/* 0x00c0 */ 109, 97,112,115, 0, 45,113, 0, 47,117,115,114, 47, 98,105,110,
|
||||||
/* 0x00d0 */ 1, 0, 0,212,251, 3, 0, 42,128, 6, 64,185,253, 3, 0,145,
|
/* 0x00d0 */ 47,103,100, 98, 0,115,101,116, 32,112,114,111,109,112,116, 10,
|
||||||
/* 0x00e0 */ 160, 3, 0,203, 0,236,124,146, 31, 0, 0,145,226, 3, 0,170,
|
/* 0x00e0 */ 105,110,102,111, 32,105,110,102,101,114,105,111,114,115, 10,112,
|
||||||
/* 0x00f0 */ 225, 15, 31,248,227, 3, 0,145,128, 66, 0,145,129, 10, 64,185,
|
/* 0x00f0 */ 114,105,110,116, 32, 34,120, 48, 45,120, 55, 34, 10,120, 47, 56,
|
||||||
/* 0x0100 */ 132, 50, 64, 57, 34, 0, 0,148,232, 7, 65,248,250, 3, 0,249,
|
/* 0x0100 */ 120,103, 32, 36,115,112, 32, 43, 32, 48,120, 49, 51, 56, 10,112,
|
||||||
/* 0x0110 */ 130, 6, 64,185,225, 3, 0,145,224, 3, 27, 42, 8, 8,128, 82,
|
/* 0x0110 */ 114,105,110,116, 32, 34,120, 56, 45,120, 49, 53, 34, 10,120, 47,
|
||||||
/* 0x0120 */ 1, 0, 0,212,191, 3, 0,145, 5, 0,128,210,228, 3, 27, 42,
|
/* 0x0120 */ 56,120,103, 10,112,114,105,110,116, 32, 34,120, 49, 54, 45,120,
|
||||||
/* 0x0130 */ 35, 0,128, 82,162, 0,128, 82,129, 6, 64,185,225, 15, 0,249,
|
/* 0x0130 */ 50, 51, 34, 10,120, 47, 56,120,103, 10,112,114,105,110,116, 32,
|
||||||
/* 0x0140 */ 0, 0,128,210,200, 27,128, 82, 1, 0, 0,212,224, 11, 0,249,
|
/* 0x0140 */ 34,120, 50, 52, 45,120, 51, 48, 34, 10,120, 47, 55,120,103, 10,
|
||||||
/* 0x0150 */ 252, 3, 0,170,224, 3, 27, 42, 40, 7,128, 82, 1, 0, 0,212,
|
/* 0x0150 */ 115,101,116, 32, 36,112, 99, 32, 61, 32, 42, 40,108,111,110,103,
|
||||||
/* 0x0160 */ 253, 11, 64,185,129, 2, 64,185,158, 83, 0,145,189, 3, 1, 75,
|
/* 0x0160 */ 32, 42, 41, 40, 36,115,112, 32, 43, 32, 48,120, 50, 51, 56, 41,
|
||||||
/* 0x0170 */ 253, 7, 0,249, 33,120, 30, 18, 60, 3, 1,139,192, 3, 31,214,
|
/* 0x0170 */ 10,112,114,105,110,116, 32, 34,102, 97,117,108,116,105,110,103,
|
||||||
/* 0x0180 */ 1,132, 64,248,225,255,255,181,192, 3, 95,214, 1, 64, 33,139,
|
/* 0x0180 */ 32,105,110,115,116,114, 34, 10,120, 47,105, 32, 36,112, 99, 10,
|
||||||
/* 0x0190 */ 225, 11,190,169,227,123, 1,169, 5, 0,128, 18, 4, 0,176, 82,
|
/* 0x0190 */ 112,114,105,110,116, 32, 34,102, 97,117,108,116, 32, 99,111,110,
|
||||||
/* 0x01a0 */ 26, 0, 0, 20,228,123, 65,169,225, 15,194,168, 0, 0, 1,203,
|
/* 0x01a0 */ 116,101,120,116, 34, 10,120, 47, 49, 53,105, 32, 36,112, 99, 32,
|
||||||
/* 0x01b0 */ 66, 0, 3,203,130, 0, 0,185,229, 3, 0,170,224, 3, 3,170,
|
/* 0x01b0 */ 45, 32, 55, 42, 52, 10,115,101,116, 32, 36,115,112, 32, 61, 32,
|
||||||
/* 0x01c0 */ 97, 0, 2,139,224, 3, 5,170,192, 3, 95,214,132, 0, 4, 43,
|
/* 0x01c0 */ 42, 40,108,111,110,103, 32, 42, 41, 40, 36,115,112, 32, 43, 32,
|
||||||
/* 0x01d0 */ 68, 0, 0, 52,192, 3, 95,214, 4, 68, 64,184,132, 0, 4, 58,
|
/* 0x01d0 */ 48,120, 50, 51, 48, 41, 10,112,114,105,110,116, 32, 34,117,115,
|
||||||
/* 0x01e0 */ 192, 3, 95,214, 33, 0,128, 82,240, 3, 30,170,248,255,255,151,
|
/* 0x01e0 */ 101,114, 32,115,116, 97, 99,107, 34, 10,120, 47, 54, 52,120,103,
|
||||||
/* 0x01f0 */ 33, 0, 1, 58,246,255,255,151,163,255,255, 84, 0, 2, 31,214,
|
/* 0x01f0 */ 32, 36,115,112, 10,107,105,108,108, 10,113,117,105,116, 32, 49,
|
||||||
/* 0x0200 */ 3, 20, 64, 56, 67, 20, 0, 56,241,255,255,151,162,255,255, 84,
|
/* 0x0200 */ 0, 0, 0, 0, 0, 0,128, 82, 40, 7,128, 82, 1, 0, 0,212,
|
||||||
/* 0x0210 */ 245,255,255,151, 35, 12, 0,113, 1, 0,128, 82,163, 0, 0, 84,
|
/* 0x0210 */ 255,127,191,169, 1, 0,128, 82,224, 3, 0,145,104, 7,128, 82,
|
||||||
/* 0x0220 */ 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42,197,251,255, 52,
|
/* 0x0220 */ 1, 0, 0,212,240, 19, 0,145, 19, 2, 64,185,255, 67, 0,145,
|
||||||
/* 0x0230 */ 231,255,255,151, 33, 0, 1, 58,229,255,255,151, 33, 0, 1, 58,
|
/* 0x0230 */ 130, 37,128, 82, 1,245,255, 48,224, 3, 19, 42, 8, 8,128, 82,
|
||||||
/* 0x0240 */ 97, 0, 0, 84,232,255,255,151, 33, 8, 0, 17,191, 0, 52, 49,
|
/* 0x0240 */ 1, 0, 0,212,224, 3, 19, 42, 40, 7,128, 82, 1, 0, 0,212,
|
||||||
/* 0x0250 */ 33, 36,129, 26, 67,200,101, 56, 33, 4, 0,113, 67, 20, 0, 56,
|
/* 0x0250 */ 255, 7, 64,209, 2, 0,128, 82,129,241,255, 16, 0, 0,128,146,
|
||||||
/* 0x0260 */ 162,255,255, 84,233,255,255, 23,117,112,120, 0,217, 19, 1,209,
|
/* 0x0260 */ 8, 7,128, 82, 1, 0, 0,212,243, 3, 0, 42,225, 3, 0,145,
|
||||||
/* 0x0270 */ 32, 3, 64,185, 57, 67, 32,203,224, 7, 0,249,192, 3, 63,214,
|
/* 0x0270 */ 2, 0,130, 82,232, 7,128, 82, 1, 0, 0,212,224, 3, 19, 42,
|
||||||
/* 0x0280 */ 0, 0, 0, 0,102,105,108,101, 32,102,111,114,109, 97,116, 32,
|
/* 0x0280 */ 40, 7,128, 82, 1, 0, 0,212,168, 21,128, 82, 1, 0, 0,212,
|
||||||
/* 0x0290 */ 101,108,102, 54, 52, 45,108,105,116,116,108,101, 97, 97,114, 99,
|
/* 0x0290 */ 255,127,191,169,225, 3, 0, 42,224, 3, 0,145, 49, 0, 0,148,
|
||||||
/* 0x02a0 */ 104, 54, 52, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,
|
/* 0x02a0 */ 227, 3, 0,145,226, 67, 0,145,225,240,255, 48,224,240,255, 16,
|
||||||
/* 0x02b0 */ 100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x02b0 */ 224, 7,189,169,226, 15, 1,169,255, 19, 0,249, 2, 0,128,210,
|
||||||
/* 0x02c0 */ 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32,
|
/* 0x02c0 */ 225, 3, 0,145,168, 27,128, 82, 1, 0, 0,212, 0, 0, 0, 20,
|
||||||
/* 0x02d0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65,
|
/* 0x02d0 */ 31, 32, 3,213,225, 11, 63,169, 66, 3,128,210,225,237,255,112,
|
||||||
/* 0x02e0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,
|
/* 0x02e0 */ 64, 0,128, 82, 8, 8,128, 82, 1, 0, 0,212, 2, 0,128, 82,
|
||||||
/* 0x02f0 */ 105,108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,
|
/* 0x02f0 */ 33,238,255, 48, 0, 0,128, 18, 8, 7,128, 82, 1, 0, 0,212,
|
||||||
/* 0x0300 */ 108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78,
|
/* 0x0300 */ 243, 3, 0, 42,255, 7, 64,209, 2, 0,130,210,225, 3, 0,145,
|
||||||
/* 0x0310 */ 88, 32, 32, 32, 32, 32, 32, 48, 50, 50, 56, 32, 32, 48, 32, 32,
|
/* 0x0310 */ 224, 3, 19, 42,232, 7,128, 82, 1, 0, 0,212,224, 0, 0, 52,
|
||||||
/* 0x0320 */ 48, 32, 32, 48, 52, 48, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79,
|
/* 0x0320 */ 226, 3, 0,170,225, 3, 0,145, 64, 0,128, 82, 8, 8,128, 82,
|
||||||
/* 0x0330 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 69, 76, 70, 77, 65,
|
/* 0x0330 */ 1, 0, 0,212,245,255,255, 23,255, 7, 64,145,224, 3, 16,170,
|
||||||
/* 0x0340 */ 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 32, 32, 48, 32, 32, 48,
|
/* 0x0340 */ 40, 7,128, 82, 1, 0, 0,212, 0, 0,128,210, 1, 0,128,210,
|
||||||
/* 0x0350 */ 32, 32, 48, 50, 54, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
|
/* 0x0350 */ 136, 27,128, 82, 1, 0, 0,212, 96,245,255,180, 0, 0, 0, 20,
|
||||||
/* 0x0360 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32, 69, 76, 70, 77, 65,
|
/* 0x0360 */ 254,127,191,169, 4, 0, 0,148,254, 7,193,168, 1, 0, 0, 57,
|
||||||
/* 0x0370 */ 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 49, 99, 32, 32, 48, 32,
|
/* 0x0370 */ 192, 3, 95,214,162,153,153, 82,130,153,185,114, 34,124,162,155,
|
||||||
/* 0x0380 */ 32, 48, 32, 32, 48, 50, 54, 56, 32, 32, 50, 42, 42, 50, 32, 32,
|
/* 0x0380 */ 67,252, 99,211, 98, 8, 3, 11, 33, 4, 2, 75,254, 7,191,169,
|
||||||
/* 0x0390 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32,
|
/* 0x0390 */ 99, 0, 0,180,225, 3, 3, 42,247,255,255,151,254, 7,193,168,
|
||||||
/* 0x03a0 */ 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x03a0 */ 33,192, 0, 17, 1, 20, 0, 56,192, 3, 95,214, 3, 1,128,210,
|
||||||
/* 0x03b0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
|
/* 0x03b0 */ 226, 3, 31,170,225, 3, 31,170, 96, 1,128, 82,200, 16,128, 82,
|
||||||
/* 0x03c0 */ 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65,
|
/* 0x03c0 */ 1, 0, 0,212,192, 3, 95,214,224, 99, 0,145, 82, 0, 0,148,
|
||||||
/* 0x03d0 */ 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x03d0 */ 81, 0, 0,148,246, 3, 0,170,255,131, 0,209, 1, 8,193,168,
|
||||||
/* 0x03e0 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70,
|
/* 0x03e0 */ 63, 24, 0,113, 96, 0, 0, 84,161,255,255, 53, 34, 0,160,210,
|
||||||
/* 0x03f0 */ 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88,
|
/* 0x03f0 */ 250, 3, 2,203,250, 3, 0,249, 25, 0, 0, 16, 32, 3, 64,185,
|
||||||
/* 0x0400 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0400 */ 224, 7, 0,249, 57, 67, 32,203, 0, 0, 0,148,244, 3, 30,170,
|
||||||
/* 0x0410 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73,
|
/* 0x0410 */ 1, 2,128, 82, 0, 0, 0, 16,232, 34,128, 82, 1, 0, 0,212,
|
||||||
/* 0x0420 */ 78, 89, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48,
|
/* 0x0420 */ 0, 2,248, 54, 97, 0, 0, 52,225, 3, 31, 42,250,255,255, 23,
|
||||||
/* 0x0430 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
|
/* 0x0430 */ 6, 0, 0,148,192, 1, 0, 0, 2, 64, 64, 0, 47,100,101,118,
|
||||||
/* 0x0440 */ 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 77,
|
/* 0x0440 */ 47,115,104,109, 0, 0, 0, 0,195, 71, 64,184,194, 71, 64,184,
|
||||||
/* 0x0450 */ 70, 76, 71, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0450 */ 225, 3, 30,170, 96, 12,128, 18, 8, 7,128, 82, 1, 0, 0,212,
|
||||||
/* 0x0460 */ 48, 48, 48, 52, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70,
|
/* 0x0460 */ 251, 3, 0, 42,128, 6, 64,185,253, 3, 0,145,160, 3, 0,203,
|
||||||
/* 0x0470 */ 77, 65, 73, 78, 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48,
|
/* 0x0470 */ 0,236,124,146, 31, 0, 0,145,226, 3, 0,170,225, 15, 31,248,
|
||||||
/* 0x0480 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 52, 99, 32,
|
/* 0x0480 */ 227, 3, 0,145,128, 66, 0,145,129, 10, 64,185,132, 50, 64, 57,
|
||||||
/* 0x0490 */ 103, 32, 32, 32, 32, 32, 70, 32, 69, 76, 70, 77, 65, 73, 78, 88,
|
/* 0x0490 */ 36, 0, 0,148,232, 7, 65,248,250, 3, 0,249,242, 7, 0,249,
|
||||||
/* 0x04a0 */ 32, 48,100, 99, 32,117, 99,108, 95,110,114,118, 50, 98, 95,100,
|
/* 0x04a0 */ 130, 6, 64,185,225, 3, 0,145,224, 3, 27, 42, 8, 8,128, 82,
|
||||||
/* 0x04b0 */ 101, 99,111,109,112,114,101,115,115, 95, 51, 50, 10, 48, 48, 48,
|
/* 0x04b0 */ 1, 0, 0,212,191, 3, 0,145, 5, 0,128,210,228, 3, 27, 42,
|
||||||
/* 0x04c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32,
|
/* 0x04c0 */ 35, 0,128, 82,162, 0,128, 82,129, 6, 64,185,225, 15, 0,249,
|
||||||
/* 0x04d0 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 48,
|
/* 0x04d0 */ 0, 0,128,210,200, 27,128, 82, 1, 0, 0,212,224, 11, 0,249,
|
||||||
/* 0x04e0 */ 32,101,110,100, 95,100,101, 99,111,109,112,114,101,115,115, 10,
|
/* 0x04e0 */ 252, 3, 0,170,224, 3, 27, 42, 40, 7,128, 82, 1, 0, 0,212,
|
||||||
/* 0x04f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x04f0 */ 253, 11, 64,185,129, 2, 64,185,158,115, 0,145,189, 3, 1, 75,
|
||||||
/* 0x0500 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48,
|
/* 0x0500 */ 253, 7, 0,249, 33,120, 30, 18, 60, 3, 1,139,192, 3, 31,214,
|
||||||
/* 0x0510 */ 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, 82, 69, 76, 79, 67, 65,
|
/* 0x0510 */ 192, 3, 95,214, 1,132, 64,248,225,255,255,181,192, 3, 95,214,
|
||||||
/* 0x0520 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82,
|
/* 0x0520 */ 1, 64, 33,139,225, 11,190,169,227,123, 1,169, 5, 0,128, 18,
|
||||||
/* 0x0530 */ 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70,
|
/* 0x0530 */ 4, 0,176, 82, 26, 0, 0, 20,228,123, 65,169,225, 15,194,168,
|
||||||
/* 0x0540 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89,
|
/* 0x0540 */ 0, 0, 1,203, 66, 0, 3,203,130, 0, 0,185,229, 3, 0,170,
|
||||||
/* 0x0550 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x0550 */ 224, 3, 3,170, 97, 0, 2,139,224, 3, 5,170,192, 3, 95,214,
|
||||||
/* 0x0560 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0560 */ 132, 0, 4, 43, 68, 0, 0, 52,192, 3, 95,214, 4, 68, 64,184,
|
||||||
/* 0x0570 */ 48, 48, 48, 48, 48, 48, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52,
|
/* 0x0570 */ 132, 0, 4, 58,192, 3, 95,214, 33, 0,128, 82,240, 3, 30,170,
|
||||||
/* 0x0580 */ 95, 65, 66, 83, 51, 50, 32, 32, 32, 77, 70, 76, 71, 10, 48, 48,
|
/* 0x0580 */ 248,255,255,151, 33, 0, 1, 58,246,255,255,151,163,255,255, 84,
|
||||||
/* 0x0590 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 99, 32, 82,
|
/* 0x0590 */ 0, 2, 31,214, 3, 20, 64, 56, 67, 20, 0, 56,241,255,255,151,
|
||||||
/* 0x05a0 */ 95, 65, 65, 82, 67, 72, 54, 52, 95, 67, 65, 76, 76, 50, 54, 32,
|
/* 0x05a0 */ 162,255,255, 84,245,255,255,151, 35, 12, 0,113, 1, 0,128, 82,
|
||||||
/* 0x05b0 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48,
|
/* 0x05b0 */ 163, 0, 0, 84, 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42,
|
||||||
/* 0x05c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 10, 48, 48, 48,
|
/* 0x05c0 */ 197,251,255, 52,231,255,255,151, 33, 0, 1, 58,229,255,255,151,
|
||||||
/* 0x05d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 56, 32, 82, 95,
|
/* 0x05d0 */ 33, 0, 1, 58, 97, 0, 0, 84,232,255,255,151, 33, 8, 0, 17,
|
||||||
/* 0x05e0 */ 65, 65, 82, 67, 72, 54, 52, 95, 65, 68, 82, 95, 80, 82, 69, 76,
|
/* 0x05e0 */ 191, 0, 52, 49, 33, 36,129, 26, 67,200,101, 56, 33, 4, 0,113,
|
||||||
/* 0x05f0 */ 95, 76, 79, 50, 49, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
|
/* 0x05f0 */ 67, 20, 0, 56,162,255,255, 84,233,255,255, 23,117,112,120, 0,
|
||||||
/* 0x0600 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79,
|
/* 0x0600 */ 192, 3, 63,214, 0, 0, 0, 0,102,105,108,101, 32,102,111,114,
|
||||||
/* 0x0610 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78,
|
/* 0x0610 */ 109, 97,116, 32,101,108,102, 54, 52, 45,108,105,116,116,108,101,
|
||||||
/* 0x0620 */ 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32,
|
/* 0x0620 */ 97, 97,114, 99,104, 54, 52, 10, 10, 83,101, 99,116,105,111,110,
|
||||||
/* 0x0630 */ 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x0630 */ 115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32,
|
||||||
/* 0x0640 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48,
|
/* 0x0640 */ 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86,
|
||||||
/* 0x0650 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, 95,
|
/* 0x0650 */ 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x0660 */ 65, 65, 82, 67, 72, 54, 52, 95, 65, 66, 83, 51, 50, 32, 32, 32,
|
/* 0x0660 */ 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x0670 */ 79, 95, 66, 73, 78, 70, 79, 10
|
/* 0x0670 */ 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,
|
||||||
|
/* 0x0680 */ 110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70,
|
||||||
|
/* 0x0690 */ 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 49, 48, 32, 32,
|
||||||
|
/* 0x06a0 */ 48, 32, 32, 48, 32, 32, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32,
|
||||||
|
/* 0x06b0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 69, 76,
|
||||||
|
/* 0x06c0 */ 70, 83, 73, 71, 83, 69, 71, 86, 32, 32, 32, 32, 48, 51, 55, 56,
|
||||||
|
/* 0x06d0 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 53, 48, 32, 32, 50, 42, 42,
|
||||||
|
/* 0x06e0 */ 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32,
|
||||||
|
/* 0x06f0 */ 69, 76, 70, 77, 65, 73, 78, 88, 50, 32, 32, 32, 32, 32, 48, 50,
|
||||||
|
/* 0x0700 */ 51, 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 99, 56, 32, 32,
|
||||||
|
/* 0x0710 */ 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32,
|
||||||
|
/* 0x0720 */ 32, 51, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0730 */ 32, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 53,102, 99, 32, 32,
|
||||||
|
/* 0x0740 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32,
|
||||||
|
/* 0x0750 */ 32, 52, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0760 */ 32, 48, 99, 32, 32, 48, 32, 32, 48, 32, 32, 48, 53,102, 99, 32,
|
||||||
|
/* 0x0770 */ 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10,
|
||||||
|
/* 0x0780 */ 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48,
|
||||||
|
/* 0x0790 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
|
||||||
|
/* 0x07a0 */ 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32,
|
||||||
|
/* 0x07b0 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x07c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32,
|
||||||
|
/* 0x07d0 */ 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 32, 48, 32,
|
||||||
|
/* 0x07e0 */ 69, 76, 70, 77, 65, 73, 78, 88, 50, 10, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x07f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
|
||||||
|
/* 0x0800 */ 100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32, 69, 76,
|
||||||
|
/* 0x0810 */ 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0820 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
|
||||||
|
/* 0x0830 */ 69, 76, 70, 83, 73, 71, 83, 69, 71, 86, 32, 48, 32, 69, 76, 70,
|
||||||
|
/* 0x0840 */ 83, 73, 71, 83, 69, 71, 86, 10, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0850 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
|
||||||
|
/* 0x0860 */ 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 48, 32, 69, 76, 70, 77,
|
||||||
|
/* 0x0870 */ 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0880 */ 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85,
|
||||||
|
/* 0x0890 */ 78, 68, 42, 32, 48, 32, 77, 70, 76, 71, 10, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x08a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32,103, 32, 32, 32,
|
||||||
|
/* 0x08b0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 95,
|
||||||
|
/* 0x08c0 */ 115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x08d0 */ 48, 48, 48, 49, 53, 56, 32,103, 32, 32, 32, 32, 32, 70, 32, 69,
|
||||||
|
/* 0x08e0 */ 76, 70, 77, 65, 73, 78, 88, 50, 32, 48,100, 99, 32,117, 99,108,
|
||||||
|
/* 0x08f0 */ 95,110,114,118, 50, 98, 95,100,101, 99,111,109,112,114,101,115,
|
||||||
|
/* 0x0900 */ 115, 95, 51, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0910 */ 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76,
|
||||||
|
/* 0x0920 */ 70, 77, 65, 73, 78, 89, 32, 48, 32,101,110,100, 95,100,101, 99,
|
||||||
|
/* 0x0930 */ 111,109,112,114,101,115,115, 10, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0940 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0950 */ 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, 95, 66, 73, 78, 70, 79,
|
||||||
|
/* 0x0960 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
|
||||||
|
/* 0x0970 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73,
|
||||||
|
/* 0x0980 */ 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0990 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x09a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
|
||||||
|
/* 0x09b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82,
|
||||||
|
/* 0x09c0 */ 95, 65, 65, 82, 67, 72, 54, 52, 95, 65, 66, 83, 51, 50, 32, 32,
|
||||||
|
/* 0x09d0 */ 32, 77, 70, 76, 71, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x09e0 */ 48, 48, 48, 48, 48, 99, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52,
|
||||||
|
/* 0x09f0 */ 95, 65, 68, 82, 95, 80, 82, 69, 76, 95, 76, 79, 50, 49, 32, 32,
|
||||||
|
/* 0x0a00 */ 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120, 48, 48, 48, 48,
|
||||||
|
/* 0x0a10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 52, 56, 10, 10, 82, 69,
|
||||||
|
/* 0x0a20 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
|
||||||
|
/* 0x0a30 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 50, 93,
|
||||||
|
/* 0x0a40 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0a50 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0a60 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0a70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 48, 32, 82, 95, 65, 65,
|
||||||
|
/* 0x0a80 */ 82, 67, 72, 54, 52, 95, 65, 68, 82, 95, 80, 82, 69, 76, 95, 76,
|
||||||
|
/* 0x0a90 */ 79, 50, 49, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 45, 48,120,
|
||||||
|
/* 0x0aa0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52,
|
||||||
|
/* 0x0ab0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52,
|
||||||
|
/* 0x0ac0 */ 48, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 67, 65, 76, 76,
|
||||||
|
/* 0x0ad0 */ 50, 54, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48,
|
||||||
|
/* 0x0ae0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 10,
|
||||||
|
/* 0x0af0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 99,
|
||||||
|
/* 0x0b00 */ 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 65, 68, 82, 95, 80,
|
||||||
|
/* 0x0b10 */ 82, 69, 76, 95, 76, 79, 50, 49, 32, 32, 69, 76, 70, 77, 65, 73,
|
||||||
|
/* 0x0b20 */ 78, 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82,
|
||||||
|
/* 0x0b30 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77,
|
||||||
|
/* 0x0b40 */ 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32,
|
||||||
|
/* 0x0b50 */ 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32,
|
||||||
|
/* 0x0b60 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10,
|
||||||
|
/* 0x0b70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
|
||||||
|
/* 0x0b80 */ 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 65, 66, 83, 51, 50,
|
||||||
|
/* 0x0b90 */ 32, 32, 32, 79, 95, 66, 73, 78, 70, 79, 10
|
||||||
};
|
};
|
||||||
|
|||||||
Generated
+1108
-1101
File diff suppressed because it is too large
Load Diff
Generated
+1244
-1236
File diff suppressed because it is too large
Load Diff
Generated
+963
-815
File diff suppressed because it is too large
Load Diff
Generated
+2292
-2274
File diff suppressed because it is too large
Load Diff
Generated
+286
-279
@@ -1,5 +1,5 @@
|
|||||||
/* i386-linux.elf-entry.h
|
/* i386-linux.elf-entry.h
|
||||||
created from i386-linux.elf-entry.bin, 5683 (0x1633) bytes
|
created from i386-linux.elf-entry.bin, 5797 (0x16a5) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -32,14 +32,14 @@
|
|||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
|
||||||
#define STUB_I386_LINUX_ELF_ENTRY_SIZE 5683
|
#define STUB_I386_LINUX_ELF_ENTRY_SIZE 5797
|
||||||
#define STUB_I386_LINUX_ELF_ENTRY_ADLER32 0x58b72665
|
#define STUB_I386_LINUX_ELF_ENTRY_ADLER32 0x4b714499
|
||||||
#define STUB_I386_LINUX_ELF_ENTRY_CRC32 0x73fec3f8
|
#define STUB_I386_LINUX_ELF_ENTRY_CRC32 0x1fdf2a57
|
||||||
|
|
||||||
unsigned char stub_i386_linux_elf_entry[5683] = {
|
unsigned char stub_i386_linux_elf_entry[5797] = {
|
||||||
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0010 */ 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0010 */ 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0020 */ 36, 8, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
|
/* 0x0020 */ 148, 8, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
|
||||||
/* 0x0030 */ 16, 0, 13, 0,233,252,255,255,255,233,252,255,255,255, 0, 0,
|
/* 0x0030 */ 16, 0, 13, 0,233,252,255,255,255,233,252,255,255,255, 0, 0,
|
||||||
/* 0x0040 */ 85,137,229, 87, 86, 83,129,236, 68, 16, 0, 0,186, 0, 0, 0,
|
/* 0x0040 */ 85,137,229, 87, 86, 83,129,236, 68, 16, 0, 0,186, 0, 0, 0,
|
||||||
/* 0x0050 */ 0,232, 4, 0, 0, 0,117,112,120, 0, 95,185, 16, 0, 0, 0,
|
/* 0x0050 */ 0,232, 4, 0, 0, 0,117,112,120, 0, 95,185, 16, 0, 0, 0,
|
||||||
@@ -117,280 +117,287 @@ unsigned char stub_i386_linux_elf_entry[5683] = {
|
|||||||
/* 0x04d0 */ 76, 36, 20, 73,131,249,255,116, 30,138, 22,131,202, 32, 15,190,
|
/* 0x04d0 */ 76, 36, 20, 73,131,249,255,116, 30,138, 22,131,202, 32, 15,190,
|
||||||
/* 0x04e0 */ 210,138, 3,131,200, 32, 15,190,192, 67, 70, 41,194,137,208,117,
|
/* 0x04e0 */ 210,138, 3,131,200, 32, 15,190,192, 67, 70, 41,194,137,208,117,
|
||||||
/* 0x04f0 */ 11, 73,131,249,255,117,226,184, 0, 0, 0, 0, 91, 94,195, 0,
|
/* 0x04f0 */ 11, 73,131,249,255,117,226,184, 0, 0, 0, 0, 91, 94,195, 0,
|
||||||
/* 0x0500 */ 85,137,229, 87, 86, 83,131,236, 20,139,125, 12,232, 4, 0, 0,
|
/* 0x0500 */ 85,137,229, 87, 86, 83,131,236, 24,139,125, 12,232, 4, 0, 0,
|
||||||
/* 0x0510 */ 0,117,112,120, 0, 90,185, 16, 0, 0, 0,184,100, 1, 0, 0,
|
/* 0x0510 */ 0,117,112,120, 0, 90,185, 16, 0, 0, 0,184,100, 1, 0, 0,
|
||||||
/* 0x0520 */ 137,211,205,128,137,198,131,248,234,117, 16,185, 0, 0, 0, 0,
|
/* 0x0520 */ 137,211,205,128,137,198,131,248,234,117, 16,185, 0, 0, 0, 0,
|
||||||
/* 0x0530 */ 184,100, 1, 0, 0,137,211,205,128,137,198,133,246,121, 40,232,
|
/* 0x0530 */ 184,100, 1, 0, 0,137,211,205,128,137,198,133,246, 15,137,148,
|
||||||
/* 0x0540 */ 9, 0, 0, 0, 47,100,101,118, 47,115,104,109, 0, 94,185, 2,
|
/* 0x0540 */ 0, 0, 0,232, 9, 0, 0, 0, 47,100,101,118, 47,115,104,109,
|
||||||
/* 0x0550 */ 0, 65, 0,186,192, 1, 0, 0,137,243,106, 5, 88,205,128,137,
|
/* 0x0550 */ 0, 94,185, 2, 0, 65, 0,186,192, 1, 0, 0,137,243,106, 5,
|
||||||
/* 0x0560 */ 198,137,194,133,192,120, 62,137,243,137,249,106, 93, 88,205,128,
|
/* 0x0560 */ 88,205,128,137,198,133,192,121,110,137,194,131,248,235, 15,133,
|
||||||
/* 0x0570 */ 137,194,133,192,120, 47,106, 0, 86,131,125, 8, 1, 25,192,131,
|
/* 0x0570 */ 161, 0, 0, 0,184, 2, 0, 0, 0,232, 62, 0, 0, 0, 85, 80,
|
||||||
/* 0x0580 */ 224,240,131,192, 17, 80,106, 3, 87,255,117, 8,232,252,255,255,
|
/* 0x0580 */ 88, 45, 53, 46, 48, 32,119, 97,110,116,115, 32,109,101,109,102,
|
||||||
/* 0x0590 */ 255,137,195,232,252,255,255,255,131,196, 24,137,218, 57,195,115,
|
/* 0x0590 */ 100, 95, 99,114,101, 97,116,101, 40, 41, 44, 32,111,114, 32,110,
|
||||||
/* 0x05a0 */ 4,141, 84, 30, 1,137,208,141,101,244, 91, 94, 95,201,195, 0,
|
/* 0x05a0 */ 101,101,100,115, 32, 47,100,101,118, 47,115,104,109, 40, 44, 79,
|
||||||
/* 0x05b0 */ 243, 15, 30,251,232,252,255,255,255,243, 15, 30,251, 1,219,116,
|
/* 0x05b0 */ 95, 84, 77, 80, 70, 73, 76, 69, 44, 41, 10, 0, 89,186, 61, 0,
|
||||||
/* 0x05c0 */ 2,243,195,139, 30,131,238,252, 17,219,195, 94,131,236, 28,141,
|
/* 0x05c0 */ 0, 0,137,195,106, 4, 88,205,128,184,127, 0, 0, 0,137,195,
|
||||||
/* 0x05d0 */ 124, 36, 32,232,198, 1, 0, 0,232,193, 1, 0, 0,139, 7,139,
|
/* 0x05d0 */ 106, 1, 88,205,128,235,254,137,243,137,249,106, 93, 88,205,128,
|
||||||
/* 0x05e0 */ 79, 4,131,199, 8,131,248, 6,116, 9,185, 0, 16, 0, 0,133,
|
/* 0x05e0 */ 137,194,133,192,120, 47,106, 0, 86,131,125, 8, 1, 25,192,131,
|
||||||
/* 0x05f0 */ 192,117,234,247,217,137,229,137, 77, 24,141,186,243,255,255,255,
|
/* 0x05f0 */ 224,240,131,192, 17, 80,106, 3, 87,255,117, 8,232,252,255,255,
|
||||||
/* 0x0600 */ 139, 15, 41,207,137,125, 8,173, 1,199,137,125, 0, 41,193,137,
|
/* 0x0600 */ 255,137,195,232,252,255,255,255,131,196, 24,137,218, 57,195,115,
|
||||||
/* 0x0610 */ 77, 4,139, 30,141,187, 45, 1, 0, 0,137,125, 16, 41,252,131,
|
/* 0x0610 */ 4,141, 84, 30, 1,137,208,141,101,244, 91, 94, 95,201,195, 0,
|
||||||
/* 0x0620 */ 228,248, 87,141,124, 28, 4,137,233, 41,249,176,165,243,170, 95,
|
/* 0x0620 */ 243, 15, 30,251,232,252,255,255,255,243, 15, 30,251, 1,219,116,
|
||||||
/* 0x0630 */ 141, 67, 20, 1,224,131,224,248, 80,137,193, 41,225,137, 76, 36,
|
/* 0x0630 */ 2,243,195,139, 30,131,238,252, 17,219,195, 94,131,236, 28,141,
|
||||||
/* 0x0640 */ 4,139, 77, 24,137, 12, 36,185, 34, 0, 0, 0,137, 76, 36, 8,
|
/* 0x0640 */ 124, 36, 32,232,196, 1, 0, 0,232,191, 1, 0, 0,139, 7,139,
|
||||||
/* 0x0650 */ 49,201, 82, 80,137, 8, 87, 81,232,252,255,255,255,131,196, 12,
|
/* 0x0650 */ 79, 4,131,199, 8,131,248, 6,116, 9,185, 0, 16, 0, 0,133,
|
||||||
/* 0x0660 */ 169, 0, 8, 0, 0,116, 1,244, 90,137,193,193,232, 12,193,224,
|
/* 0x0660 */ 192,117,234,247,217,137,229,137, 77, 24,141,186,243,255,255,255,
|
||||||
/* 0x0670 */ 12,137, 69, 12, 41,193,131,233, 1,137, 77, 20,141,124, 36, 12,
|
/* 0x0670 */ 139, 15, 41,207,137,125, 8,173, 1,199,137,125, 0, 41,193,137,
|
||||||
/* 0x0680 */ 85,139, 78, 4,141,118, 12, 1,241, 81, 49,219, 49,201,131,205,
|
/* 0x0680 */ 77, 4,139, 30,141,187, 45, 1, 0, 0,137,125, 16, 41,252,131,
|
||||||
/* 0x0690 */ 255,252,168,164,255,210,114,251,141, 65, 1,255,210, 17,192,255,
|
/* 0x0690 */ 228,248, 87,141,124, 28, 4,137,233, 41,249,176,165,243,170, 95,
|
||||||
/* 0x06a0 */ 210,115,248,131,232, 3,114, 11,193,224, 8,172,131,240,255,116,
|
/* 0x06a0 */ 141, 67, 20, 1,224,131,224,248, 80,137,193, 41,225,137, 76, 36,
|
||||||
/* 0x06b0 */ 45,137,197,141, 65, 1,255,210, 17,201,255,210, 17,201,117, 13,
|
/* 0x06b0 */ 4,139, 77, 24,137, 12, 36,185, 34, 0, 0, 0,137, 76, 36, 8,
|
||||||
/* 0x06c0 */ 137,193,131,192, 2,255,210, 17,201,255,210,115,248,129,253, 0,
|
/* 0x06c0 */ 49,201, 82, 80,137, 8, 87, 81,232,252,255,255,255,131,196, 12,
|
||||||
/* 0x06d0 */ 243,255,255, 17,193, 86,141, 52, 47,243,164, 94,235,182, 89, 57,
|
/* 0x06d0 */ 169, 0, 8, 0, 0,116, 1,244, 90,137,193,193,232, 12,193,224,
|
||||||
/* 0x06e0 */ 206,116, 1,244, 93,139,125, 20,139, 85, 16,137,225,137,251,176,
|
/* 0x06e0 */ 12,137, 69, 12, 41,193, 73,137, 77, 20,141,124, 36, 12, 85,139,
|
||||||
/* 0x06f0 */ 4,232, 40, 0, 0, 0,137,236,106, 0, 87,106, 18,106, 5,255,
|
/* 0x06f0 */ 78, 4,141,118, 12, 1,241, 81, 49,219, 49,201,131,205,255,252,
|
||||||
/* 0x0700 */ 117, 16,255,117, 12,232,252,255,255,255,131,196, 24,137,251,176,
|
/* 0x0700 */ 168,164,255,210,114,251,141, 65, 1,255,210, 17,192,255,210,115,
|
||||||
/* 0x0710 */ 6,232, 8, 0, 0, 0,139, 69, 12,131,192, 12,255,224, 15,182,
|
/* 0x0710 */ 248,131,232, 3,114, 11,193,224, 8,172,131,240,255,116, 45,137,
|
||||||
/* 0x0720 */ 192, 80,205,128, 89, 61, 0,240,255,255,114, 1,244,195, 83,141,
|
/* 0x0720 */ 197,141, 65, 1,255,210, 17,201,255,210, 17,201,117, 13,137,193,
|
||||||
/* 0x0730 */ 92, 36, 8,176, 90,232,228,255,255,255, 91,195, 41,192,195,135,
|
/* 0x0730 */ 131,192, 2,255,210, 17,201,255,210,115,248,129,253, 0,243,255,
|
||||||
/* 0x0740 */ 92, 36, 4,139, 76, 36, 8,106,106, 88,205,128,139, 92, 36, 4,
|
/* 0x0740 */ 255, 17,193, 86,141, 52, 47,243,164, 94,235,182, 89, 57,206,116,
|
||||||
/* 0x0750 */ 195, 85,137,229, 83,139, 93, 8,106,122, 88,205,128, 91, 93,195,
|
/* 0x0750 */ 1,244, 93,139,125, 20,139, 85, 16,137,225,137,251,176, 4,232,
|
||||||
/* 0x0760 */ 85,137,229, 83,139, 93, 8,139, 77, 12,255, 53, 39, 0, 0, 0,
|
/* 0x0760 */ 40, 0, 0, 0,137,236,106, 0, 87,106, 18,106, 5,255,117, 16,
|
||||||
/* 0x0770 */ 88,205,128, 91, 93,195, 85,137,229, 87,139, 77, 16,139, 69, 12,
|
/* 0x0770 */ 255,117, 12,232,252,255,255,255,131,196, 24,137,251,176, 6,232,
|
||||||
/* 0x0780 */ 139,125, 8,243,170, 95, 93,195, 85,137,229, 87, 86,139, 77, 16,
|
/* 0x0780 */ 8, 0, 0, 0,139, 69, 12,131,192, 12,255,224, 15,182,192, 80,
|
||||||
/* 0x0790 */ 139,117, 12,139,125, 8,243,164,137,248, 94, 95, 93,195,139, 7,
|
/* 0x0790 */ 205,128, 89, 61, 0,240,255,255,114, 1,244,195, 83,141, 92, 36,
|
||||||
/* 0x07a0 */ 131,199, 4,133,192,117,247,195,204,195,184, 0,240,255,255,195,
|
/* 0x07a0 */ 8,176, 90,232,228,255,255,255, 91,195, 41,192,195,135, 92, 36,
|
||||||
/* 0x07b0 */ 90,232, 23, 0, 0, 0, 0, 0, 0, 0, 0, 46,115,121,109,116,
|
/* 0x07b0 */ 4,139, 76, 36, 8,106,106, 88,205,128,139, 92, 36, 4,195, 85,
|
||||||
/* 0x07c0 */ 97, 98, 0, 46,115,116,114,116, 97, 98, 0, 46,115,104,115,116,
|
/* 0x07c0 */ 137,229, 83,139, 93, 8,106,122, 88,205,128, 91, 93,195, 85,137,
|
||||||
/* 0x07d0 */ 114,116, 97, 98, 0, 46,114,101,108, 72, 85, 77, 70, 95, 65, 0,
|
/* 0x07d0 */ 229, 83,139, 93, 8,139, 77, 12,255, 53, 39, 0, 0, 0, 88,205,
|
||||||
/* 0x07e0 */ 46,114,101,108, 72, 85, 77, 70, 95, 76, 0, 46,114,101,108, 85,
|
/* 0x07e0 */ 128, 91, 93,195, 85,137,229, 87,139, 77, 16,139, 69, 12,139,125,
|
||||||
/* 0x07f0 */ 77, 70, 95, 65, 78, 68, 82, 79, 73, 68, 0, 46,114,101,108, 85,
|
/* 0x07f0 */ 8,243,170, 95, 93,195, 85,137,229, 87, 86,139, 77, 16,139,117,
|
||||||
/* 0x0800 */ 77, 70, 95, 76, 73, 78, 85, 88, 0, 46,114,101,108, 69, 76, 70,
|
/* 0x0800 */ 12,139,125, 8,243,164,137,248, 94, 95, 93,195,139, 7,131,199,
|
||||||
/* 0x0810 */ 77, 65, 73, 78, 88, 0, 46,114,101,108, 69, 76, 70, 77, 65, 73,
|
/* 0x0810 */ 4,133,192,117,247,195,204,195,184, 0,240,255,255,195, 0, 0,
|
||||||
/* 0x0820 */ 78, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0820 */ 90,232, 23, 0, 0, 0, 0, 0, 0, 0, 0, 46,115,121,109,116,
|
||||||
/* 0x0830 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0830 */ 97, 98, 0, 46,115,116,114,116, 97, 98, 0, 46,115,104,115,116,
|
||||||
/* 0x0840 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
|
/* 0x0840 */ 114,116, 97, 98, 0, 46,114,101,108, 72, 85, 77, 70, 95, 65, 0,
|
||||||
/* 0x0850 */ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
|
/* 0x0850 */ 46,114,101,108, 72, 85, 77, 70, 95, 76, 0, 46,114,101,108, 85,
|
||||||
/* 0x0860 */ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x0860 */ 77, 70, 95, 65, 78, 68, 82, 79, 73, 68, 0, 46,114,101,108, 85,
|
||||||
/* 0x0870 */ 0, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0870 */ 77, 70, 95, 76, 73, 78, 85, 88, 0, 46,114,101,108, 69, 76, 70,
|
||||||
/* 0x0880 */ 0, 0, 0, 0,140, 12, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0,
|
/* 0x0880 */ 77, 65, 73, 78, 88, 0, 46,114,101,108, 69, 76, 70, 77, 65, 73,
|
||||||
/* 0x0890 */ 1, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 42, 0, 0, 0,
|
/* 0x0890 */ 78, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x08a0 */ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
|
/* 0x08a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x08b0 */ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x08b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
|
||||||
/* 0x08c0 */ 0, 0, 0, 0, 38, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x08c0 */ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
|
||||||
/* 0x08d0 */ 0, 0, 0, 0,148, 12, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0,
|
/* 0x08d0 */ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x08e0 */ 3, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 53, 0, 0, 0,
|
/* 0x08e0 */ 0, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x08f0 */ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
|
/* 0x08f0 */ 0, 0, 0, 0,252, 12, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0,
|
||||||
/* 0x0900 */ 191, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
|
/* 0x0900 */ 1, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 42, 0, 0, 0,
|
||||||
/* 0x0910 */ 0, 0, 0, 0, 49, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0910 */ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
|
||||||
/* 0x0920 */ 0, 0, 0, 0,156, 12, 0, 0, 80, 0, 0, 0, 14, 0, 0, 0,
|
/* 0x0920 */ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x0930 */ 5, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 69, 0, 0, 0,
|
/* 0x0930 */ 0, 0, 0, 0, 38, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0940 */ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,
|
/* 0x0940 */ 0, 0, 0, 0, 4, 13, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0,
|
||||||
/* 0x0950 */ 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
|
/* 0x0950 */ 3, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 53, 0, 0, 0,
|
||||||
/* 0x0960 */ 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0960 */ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
|
||||||
/* 0x0970 */ 0, 0, 0, 0,236, 12, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0,
|
/* 0x0970 */ 191, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
|
||||||
/* 0x0980 */ 7, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 83, 0, 0, 0,
|
/* 0x0980 */ 0, 0, 0, 0, 49, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0990 */ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,176, 5, 0, 0,
|
/* 0x0990 */ 0, 0, 0, 0, 12, 13, 0, 0, 80, 0, 0, 0, 14, 0, 0, 0,
|
||||||
/* 0x09a0 */ 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
|
/* 0x09a0 */ 5, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 69, 0, 0, 0,
|
||||||
/* 0x09b0 */ 0, 0, 0, 0, 79, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x09b0 */ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,
|
||||||
/* 0x09c0 */ 0, 0, 0, 0,252, 12, 0, 0, 24, 0, 0, 0, 14, 0, 0, 0,
|
/* 0x09c0 */ 31, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
|
||||||
/* 0x09d0 */ 9, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 96, 0, 0, 0,
|
/* 0x09d0 */ 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x09e0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 7, 0, 0,
|
/* 0x09e0 */ 0, 0, 0, 0, 92, 13, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0,
|
||||||
/* 0x09f0 */ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x09f0 */ 7, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 83, 0, 0, 0,
|
||||||
/* 0x0a00 */ 0, 0, 0, 0, 92, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0a00 */ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0,
|
||||||
/* 0x0a10 */ 0, 0, 0, 0, 20, 13, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0,
|
/* 0x0a10 */ 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
|
||||||
/* 0x0a20 */ 11, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0,
|
/* 0x0a20 */ 0, 0, 0, 0, 79, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0a30 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,186, 7, 0, 0,
|
/* 0x0a30 */ 0, 0, 0, 0,108, 13, 0, 0, 24, 0, 0, 0, 14, 0, 0, 0,
|
||||||
/* 0x0a40 */ 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x0a40 */ 9, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 96, 0, 0, 0,
|
||||||
/* 0x0a50 */ 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0a50 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0,
|
||||||
/* 0x0a60 */ 0, 0, 0, 0,164, 10, 0, 0, 80, 1, 0, 0, 15, 0, 0, 0,
|
/* 0x0a60 */ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x0a70 */ 7, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0,
|
/* 0x0a70 */ 0, 0, 0, 0, 92, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0a80 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 11, 0, 0,
|
/* 0x0a80 */ 0, 0, 0, 0,132, 13, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0,
|
||||||
/* 0x0a90 */ 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x0a90 */ 11, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0,
|
||||||
/* 0x0aa0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0aa0 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 8, 0, 0,
|
||||||
/* 0x0ab0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0ab0 */ 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x0ac0 */ 3, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0ac0 */ 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0ad0 */ 3, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0ad0 */ 0, 0, 0, 0, 20, 11, 0, 0, 80, 1, 0, 0, 15, 0, 0, 0,
|
||||||
/* 0x0ae0 */ 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0ae0 */ 7, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0,
|
||||||
/* 0x0af0 */ 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0af0 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 12, 0, 0,
|
||||||
/* 0x0b00 */ 3, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0b00 */ 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x0b10 */ 3, 0, 7, 0, 1, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x0b10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0b20 */ 16, 0, 9, 0, 15, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
|
/* 0x0b20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0b30 */ 16, 0, 9, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0b30 */ 3, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0b40 */ 16, 0, 0, 0, 39, 0, 0, 0,216, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x0b40 */ 3, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0b50 */ 16, 0, 9, 0, 47, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,
|
/* 0x0b50 */ 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0b60 */ 18, 0, 5, 0, 71, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x0b60 */ 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0b70 */ 16, 0, 9, 0, 76, 0, 0, 0, 0, 0, 0, 0,175, 0, 0, 0,
|
/* 0x0b70 */ 3, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0b80 */ 18, 0, 7, 0, 98, 0, 0, 0,161, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x0b80 */ 3, 0, 7, 0, 1, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0b90 */ 16, 0, 9, 0,104, 0, 0, 0,140, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x0b90 */ 16, 0, 9, 0, 15, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0ba0 */ 16, 0, 9, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0ba0 */ 16, 0, 9, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0bb0 */ 16, 0, 9, 0,126, 0, 0, 0,198, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x0bb0 */ 16, 0, 0, 0, 39, 0, 0, 0,214, 1, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0bc0 */ 16, 0, 9, 0,133, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x0bc0 */ 16, 0, 9, 0, 47, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,
|
||||||
/* 0x0bd0 */ 16, 0, 9, 0,141, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x0bd0 */ 18, 0, 5, 0, 71, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0be0 */ 16, 0, 9, 0,146, 0, 0, 0,176, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x0be0 */ 16, 0, 9, 0, 76, 0, 0, 0, 0, 0, 0, 0, 31, 1, 0, 0,
|
||||||
/* 0x0bf0 */ 16, 0, 9, 0, 0,103,101,116, 95,112, 97,103,101, 95,109, 97,
|
/* 0x0bf0 */ 18, 0, 7, 0, 98, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0c00 */ 115,107, 0,117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,
|
/* 0x0c00 */ 16, 0, 9, 0,104, 0, 0, 0,138, 1, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0c10 */ 102,100, 0, 79, 95, 66, 73, 78, 70, 79, 0,109,101,109,112, 99,
|
/* 0x0c10 */ 16, 0, 9, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0c20 */ 112,121, 0,117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,
|
/* 0x0c20 */ 16, 0, 9, 0,126, 0, 0, 0,196, 1, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0c30 */ 102,100, 95, 97,110,100,114,111,105,100, 0,109,109, 97,112, 0,
|
/* 0x0c30 */ 16, 0, 9, 0,133, 0, 0, 0,246, 1, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0c40 */ 117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,102,100, 95,
|
/* 0x0c40 */ 16, 0, 9, 0,141, 0, 0, 0,141, 1, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0c50 */ 108,105,110,117,120, 0,117,110, 97,109,101, 0,103,101,116, 95,
|
/* 0x0c50 */ 16, 0, 9, 0,146, 0, 0, 0,174, 1, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0c60 */ 117,112,120,102,110, 95,112, 97,116,104, 0, 95,115,116, 97,114,
|
/* 0x0c60 */ 16, 0, 9, 0, 0,103,101,116, 95,112, 97,103,101, 95,109, 97,
|
||||||
/* 0x0c70 */ 116, 0,109,101,109,115,101,116, 0,109,121, 95, 98,107,112,116,
|
/* 0x0c70 */ 115,107, 0,117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,
|
||||||
/* 0x0c80 */ 0,115,116, 97,116, 0,109,107,100,105,114, 0, 1, 0, 0, 0,
|
/* 0x0c80 */ 102,100, 0, 79, 95, 66, 73, 78, 70, 79, 0,109,101,109,112, 99,
|
||||||
/* 0x0c90 */ 2, 11, 0, 0, 1, 0, 0, 0, 2, 13, 0, 0,124, 0, 0, 0,
|
/* 0x0c90 */ 112,121, 0,117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,
|
||||||
/* 0x0ca0 */ 2, 18, 0, 0,241, 0, 0, 0, 2, 15, 0, 0,111, 1, 0, 0,
|
/* 0x0ca0 */ 102,100, 95, 97,110,100,114,111,105,100, 0,109,109, 97,112, 0,
|
||||||
/* 0x0cb0 */ 2, 7, 0, 0,224, 1, 0, 0, 2, 7, 0, 0, 18, 2, 0, 0,
|
/* 0x0cb0 */ 117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,102,100, 95,
|
||||||
/* 0x0cc0 */ 2, 12, 0, 0, 73, 2, 0, 0, 2, 17, 0, 0,152, 2, 0, 0,
|
/* 0x0cc0 */ 108,105,110,117,120, 0,117,110, 97,109,101, 0,103,101,116, 95,
|
||||||
/* 0x0cd0 */ 2, 18, 0, 0, 94, 3, 0, 0, 2, 18, 0, 0,146, 3, 0, 0,
|
/* 0x0cd0 */ 117,112,120,102,110, 95,112, 97,116,104, 0, 95,115,116, 97,114,
|
||||||
/* 0x0ce0 */ 2, 10, 0, 0,238, 3, 0, 0, 2, 10, 0, 0,141, 0, 0, 0,
|
/* 0x0ce0 */ 116, 0,109,101,109,115,101,116, 0,109,121, 95, 98,107,112,116,
|
||||||
/* 0x0cf0 */ 2, 12, 0, 0,148, 0, 0, 0, 2, 7, 0, 0, 5, 0, 0, 0,
|
/* 0x0cf0 */ 0,115,116, 97,116, 0,109,107,100,105,114, 0, 1, 0, 0, 0,
|
||||||
/* 0x0d00 */ 2, 2, 0, 0,169, 0, 0, 0, 2, 8, 0, 0, 86, 1, 0, 0,
|
/* 0x0d00 */ 2, 11, 0, 0, 1, 0, 0, 0, 2, 13, 0, 0,124, 0, 0, 0,
|
||||||
/* 0x0d10 */ 2, 12, 0, 0, 2, 0, 0, 0, 2, 1, 0, 0, 6, 0, 0, 0,
|
/* 0x0d10 */ 2, 18, 0, 0,241, 0, 0, 0, 2, 15, 0, 0,111, 1, 0, 0,
|
||||||
/* 0x0d20 */ 1, 9, 0, 0,102,105,108,101, 32,102,111,114,109, 97,116, 32,
|
/* 0x0d20 */ 2, 7, 0, 0,224, 1, 0, 0, 2, 7, 0, 0, 18, 2, 0, 0,
|
||||||
/* 0x0d30 */ 101,108,102, 51, 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99,116,
|
/* 0x0d30 */ 2, 12, 0, 0, 73, 2, 0, 0, 2, 17, 0, 0,152, 2, 0, 0,
|
||||||
/* 0x0d40 */ 105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32,
|
/* 0x0d40 */ 2, 18, 0, 0, 94, 3, 0, 0, 2, 18, 0, 0,146, 3, 0, 0,
|
||||||
/* 0x0d50 */ 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32,
|
/* 0x0d50 */ 2, 10, 0, 0,238, 3, 0, 0, 2, 10, 0, 0,253, 0, 0, 0,
|
||||||
/* 0x0d60 */ 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32,
|
/* 0x0d60 */ 2, 12, 0, 0, 4, 1, 0, 0, 2, 7, 0, 0, 5, 0, 0, 0,
|
||||||
/* 0x0d70 */ 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32,
|
/* 0x0d70 */ 2, 2, 0, 0,169, 0, 0, 0, 2, 8, 0, 0, 84, 1, 0, 0,
|
||||||
/* 0x0d80 */ 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32,
|
/* 0x0d80 */ 2, 12, 0, 0, 2, 0, 0, 0, 2, 1, 0, 0, 6, 0, 0, 0,
|
||||||
/* 0x0d90 */ 72, 85, 77, 70, 95, 65, 32, 32, 32, 32, 32, 32, 32, 32, 48, 53,
|
/* 0x0d90 */ 1, 9, 0, 0,102,105,108,101, 32,102,111,114,109, 97,116, 32,
|
||||||
/* 0x0da0 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 52, 32, 32, 50, 42, 42,
|
/* 0x0da0 */ 101,108,102, 51, 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99,116,
|
||||||
/* 0x0db0 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32,
|
/* 0x0db0 */ 105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32,
|
||||||
/* 0x0dc0 */ 72, 85, 77, 70, 95, 76, 32, 32, 32, 32, 32, 32, 32, 32, 48, 53,
|
/* 0x0dc0 */ 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32,
|
||||||
/* 0x0dd0 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 57, 32, 32, 50, 42, 42,
|
/* 0x0dd0 */ 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32,
|
||||||
/* 0x0de0 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32,
|
/* 0x0de0 */ 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32,
|
||||||
/* 0x0df0 */ 85, 77, 70, 95, 65, 78, 68, 82, 79, 73, 68, 32, 32, 32, 48, 52,
|
/* 0x0df0 */ 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32,
|
||||||
/* 0x0e00 */ 98,102, 32, 32, 48, 32, 32, 48, 32, 32, 48, 52, 48, 32, 32, 50,
|
/* 0x0e00 */ 72, 85, 77, 70, 95, 65, 32, 32, 32, 32, 32, 32, 32, 32, 48, 53,
|
||||||
/* 0x0e10 */ 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32,
|
/* 0x0e10 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 52, 32, 32, 50, 42, 42,
|
||||||
/* 0x0e20 */ 51, 32, 85, 77, 70, 95, 76, 73, 78, 85, 88, 32, 32, 32, 32, 32,
|
/* 0x0e20 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32,
|
||||||
/* 0x0e30 */ 48, 97,102, 32, 32, 48, 32, 32, 48, 32, 32, 48, 53, 48, 48, 32,
|
/* 0x0e30 */ 72, 85, 77, 70, 95, 76, 32, 32, 32, 32, 32, 32, 32, 32, 48, 53,
|
||||||
/* 0x0e40 */ 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10,
|
/* 0x0e40 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 57, 32, 32, 50, 42, 42,
|
||||||
/* 0x0e50 */ 32, 32, 52, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32,
|
/* 0x0e50 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32,
|
||||||
/* 0x0e60 */ 32, 32, 48, 50, 48, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 53,
|
/* 0x0e60 */ 85, 77, 70, 95, 65, 78, 68, 82, 79, 73, 68, 32, 32, 32, 48, 52,
|
||||||
/* 0x0e70 */ 98, 48, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78,
|
/* 0x0e70 */ 98,102, 32, 32, 48, 32, 32, 48, 32, 32, 48, 52, 48, 32, 32, 50,
|
||||||
/* 0x0e80 */ 84, 83, 10, 32, 32, 53, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32,
|
/* 0x0e80 */ 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32,
|
||||||
/* 0x0e90 */ 32, 32, 32, 32, 32, 48, 97, 32, 32, 48, 32, 32, 48, 32, 32, 48,
|
/* 0x0e90 */ 51, 32, 85, 77, 70, 95, 76, 73, 78, 85, 88, 32, 32, 32, 32, 32,
|
||||||
/* 0x0ea0 */ 55, 98, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
|
/* 0x0ea0 */ 48, 49, 49,102, 32, 32, 48, 32, 32, 48, 32, 32, 48, 53, 48, 48,
|
||||||
/* 0x0eb0 */ 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69,
|
/* 0x0eb0 */ 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83,
|
||||||
/* 0x0ec0 */ 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
|
/* 0x0ec0 */ 10, 32, 32, 52, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32,
|
||||||
/* 0x0ed0 */ 100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76,
|
/* 0x0ed0 */ 32, 32, 32, 48, 50, 48, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48,
|
||||||
/* 0x0ee0 */ 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
/* 0x0ee0 */ 54, 50, 48, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69,
|
||||||
/* 0x0ef0 */ 108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90,
|
/* 0x0ef0 */ 78, 84, 83, 10, 32, 32, 53, 32, 69, 76, 70, 77, 65, 73, 78, 90,
|
||||||
/* 0x0f00 */ 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48,
|
/* 0x0f00 */ 32, 32, 32, 32, 32, 32, 48, 97, 32, 32, 48, 32, 32, 48, 32, 32,
|
||||||
/* 0x0f10 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 72, 85, 77,
|
/* 0x0f10 */ 48, 56, 50, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84,
|
||||||
/* 0x0f20 */ 70, 95, 65, 32, 48, 32, 72, 85, 77, 70, 95, 65, 10, 48, 48, 48,
|
/* 0x0f20 */ 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76,
|
||||||
/* 0x0f30 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 72, 85,
|
/* 0x0f30 */ 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32,
|
||||||
/* 0x0f40 */ 77, 70, 95, 76, 32, 48, 32, 72, 85, 77, 70, 95, 76, 10, 48, 48,
|
/* 0x0f40 */ 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 69,
|
||||||
/* 0x0f50 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 85,
|
/* 0x0f50 */ 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x0f60 */ 77, 70, 95, 65, 78, 68, 82, 79, 73, 68, 32, 48, 32, 85, 77, 70,
|
/* 0x0f60 */ 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||||
/* 0x0f70 */ 95, 65, 78, 68, 82, 79, 73, 68, 10, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0f70 */ 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48,
|
||||||
/* 0x0f80 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 85, 77, 70, 95, 76, 73,
|
/* 0x0f80 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 72, 85,
|
||||||
/* 0x0f90 */ 78, 85, 88, 32, 48, 32, 85, 77, 70, 95, 76, 73, 78, 85, 88, 10,
|
/* 0x0f90 */ 77, 70, 95, 65, 32, 48, 32, 72, 85, 77, 70, 95, 65, 10, 48, 48,
|
||||||
/* 0x0fa0 */ 48, 48, 48, 48, 48, 49,102, 97, 32,103, 32, 32, 32, 32, 32, 32,
|
/* 0x0fa0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 72,
|
||||||
/* 0x0fb0 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,103,101,116, 95,
|
/* 0x0fb0 */ 85, 77, 70, 95, 76, 32, 48, 32, 72, 85, 77, 70, 95, 76, 10, 48,
|
||||||
/* 0x0fc0 */ 112, 97,103,101, 95,109, 97,115,107, 10, 48, 48, 48, 48, 48, 50,
|
/* 0x0fc0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
|
||||||
/* 0x0fd0 */ 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65,
|
/* 0x0fd0 */ 85, 77, 70, 95, 65, 78, 68, 82, 79, 73, 68, 32, 48, 32, 85, 77,
|
||||||
/* 0x0fe0 */ 73, 78, 88, 32, 48, 32,117,112,120, 95,109,109, 97,112, 95, 97,
|
/* 0x0fe0 */ 70, 95, 65, 78, 68, 82, 79, 73, 68, 10, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x0ff0 */ 110,100, 95,102,100, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
|
/* 0x0ff0 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 85, 77, 70, 95, 76,
|
||||||
/* 0x1000 */ 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 79,
|
/* 0x1000 */ 73, 78, 85, 88, 32, 48, 32, 85, 77, 70, 95, 76, 73, 78, 85, 88,
|
||||||
/* 0x1010 */ 95, 66, 73, 78, 70, 79, 10, 48, 48, 48, 48, 48, 49,100, 56, 32,
|
/* 0x1010 */ 10, 48, 48, 48, 48, 48, 49,102, 56, 32,103, 32, 32, 32, 32, 32,
|
||||||
/* 0x1020 */ 103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88,
|
/* 0x1020 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,103,101,116,
|
||||||
/* 0x1030 */ 32, 48, 32,109,101,109,112, 99,112,121, 10, 48, 48, 48, 48, 48,
|
/* 0x1030 */ 95,112, 97,103,101, 95,109, 97,115,107, 10, 48, 48, 48, 48, 48,
|
||||||
/* 0x1040 */ 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 85, 77, 70, 95,
|
/* 0x1040 */ 50, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77,
|
||||||
/* 0x1050 */ 65, 78, 68, 82, 79, 73, 68, 32, 48, 50, 51, 53, 32,117,112,120,
|
/* 0x1050 */ 65, 73, 78, 88, 32, 48, 32,117,112,120, 95,109,109, 97,112, 95,
|
||||||
/* 0x1060 */ 95,109,109, 97,112, 95, 97,110,100, 95,102,100, 95, 97,110,100,
|
/* 0x1060 */ 97,110,100, 95,102,100, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
||||||
/* 0x1070 */ 114,111,105,100, 10, 48, 48, 48, 48, 48, 49, 55,101, 32,103, 32,
|
/* 0x1070 */ 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,
|
||||||
/* 0x1080 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48,
|
/* 0x1080 */ 79, 95, 66, 73, 78, 70, 79, 10, 48, 48, 48, 48, 48, 49,100, 54,
|
||||||
/* 0x1090 */ 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,103,
|
/* 0x1090 */ 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||||
/* 0x10a0 */ 32, 32, 32, 32, 32, 70, 32, 85, 77, 70, 95, 76, 73, 78, 85, 88,
|
/* 0x10a0 */ 88, 32, 48, 32,109,101,109,112, 99,112,121, 10, 48, 48, 48, 48,
|
||||||
/* 0x10b0 */ 32, 48, 97,102, 32,117,112,120, 95,109,109, 97,112, 95, 97,110,
|
/* 0x10b0 */ 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 85, 77, 70,
|
||||||
/* 0x10c0 */ 100, 95,102,100, 95,108,105,110,117,120, 10, 48, 48, 48, 48, 48,
|
/* 0x10c0 */ 95, 65, 78, 68, 82, 79, 73, 68, 32, 48, 50, 51, 53, 32,117,112,
|
||||||
/* 0x10d0 */ 49, 97, 49, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77,
|
/* 0x10d0 */ 120, 95,109,109, 97,112, 95, 97,110,100, 95,102,100, 95, 97,110,
|
||||||
/* 0x10e0 */ 65, 73, 78, 88, 32, 48, 32,117,110, 97,109,101, 10, 48, 48, 48,
|
/* 0x10e0 */ 100,114,111,105,100, 10, 48, 48, 48, 48, 48, 49, 55, 99, 32,103,
|
||||||
/* 0x10f0 */ 48, 48, 49, 56, 99, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76,
|
/* 0x10f0 */ 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32,
|
||||||
/* 0x1100 */ 70, 77, 65, 73, 78, 88, 32, 48, 32,103,101,116, 95,117,112,120,
|
/* 0x1100 */ 48, 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
||||||
/* 0x1110 */ 102,110, 95,112, 97,116,104, 10, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x1110 */ 103, 32, 32, 32, 32, 32, 70, 32, 85, 77, 70, 95, 76, 73, 78, 85,
|
||||||
/* 0x1120 */ 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78,
|
/* 0x1120 */ 88, 32, 48, 49, 49,102, 32,117,112,120, 95,109,109, 97,112, 95,
|
||||||
/* 0x1130 */ 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48,
|
/* 0x1130 */ 97,110,100, 95,102,100, 95,108,105,110,117,120, 10, 48, 48, 48,
|
||||||
/* 0x1140 */ 49, 99, 54, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77,
|
/* 0x1140 */ 48, 48, 49, 57,102, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76,
|
||||||
/* 0x1150 */ 65, 73, 78, 88, 32, 48, 32,109,101,109,115,101,116, 10, 48, 48,
|
/* 0x1150 */ 70, 77, 65, 73, 78, 88, 32, 48, 32,117,110, 97,109,101, 10, 48,
|
||||||
/* 0x1160 */ 48, 48, 48, 49,102, 56, 32,103, 32, 32, 32, 32, 32, 32, 32, 69,
|
/* 0x1160 */ 48, 48, 48, 48, 49, 56, 97, 32,103, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1170 */ 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,109,121, 95, 98,107,112,
|
/* 0x1170 */ 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,103,101,116, 95,117,
|
||||||
/* 0x1180 */ 116, 10, 48, 48, 48, 48, 48, 49, 56,102, 32,103, 32, 32, 32, 32,
|
/* 0x1180 */ 112,120,102,110, 95,112, 97,116,104, 10, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1190 */ 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,115,116,
|
/* 0x1190 */ 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65,
|
||||||
/* 0x11a0 */ 97,116, 10, 48, 48, 48, 48, 48, 49, 98, 48, 32,103, 32, 32, 32,
|
/* 0x11a0 */ 73, 78, 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48,
|
||||||
/* 0x11b0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,109,
|
/* 0x11b0 */ 48, 48, 49, 99, 52, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76,
|
||||||
/* 0x11c0 */ 107,100,105,114, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
|
/* 0x11c0 */ 70, 77, 65, 73, 78, 88, 32, 48, 32,109,101,109,115,101,116, 10,
|
||||||
/* 0x11d0 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 72, 85,
|
/* 0x11d0 */ 48, 48, 48, 48, 48, 49,102, 54, 32,103, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x11e0 */ 77, 70, 95, 65, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32,
|
/* 0x11e0 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,109,121, 95, 98,
|
||||||
/* 0x11f0 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x11f0 */ 107,112,116, 10, 48, 48, 48, 48, 48, 49, 56,100, 32,103, 32, 32,
|
||||||
/* 0x1200 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 49,
|
/* 0x1200 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,
|
||||||
/* 0x1210 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
/* 0x1210 */ 115,116, 97,116, 10, 48, 48, 48, 48, 48, 49, 97,101, 32,103, 32,
|
||||||
/* 0x1220 */ 32, 32, 32,117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,
|
/* 0x1220 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48,
|
||||||
/* 0x1230 */ 102,100, 95, 97,110,100,114,111,105,100, 10, 10, 82, 69, 76, 79,
|
/* 0x1230 */ 32,109,107,100,105,114, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
|
||||||
/* 0x1240 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70,
|
/* 0x1240 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
|
||||||
/* 0x1250 */ 79, 82, 32, 91, 72, 85, 77, 70, 95, 76, 93, 58, 10, 79, 70, 70,
|
/* 0x1250 */ 72, 85, 77, 70, 95, 65, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
|
||||||
/* 0x1260 */ 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
|
/* 0x1260 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1270 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
|
/* 0x1270 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1280 */ 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51,
|
/* 0x1280 */ 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||||
/* 0x1290 */ 50, 32, 32, 32, 32, 32, 32, 32, 32,117,112,120, 95,109,109, 97,
|
/* 0x1290 */ 32, 32, 32, 32, 32,117,112,120, 95,109,109, 97,112, 95, 97,110,
|
||||||
/* 0x12a0 */ 112, 95, 97,110,100, 95,102,100, 95,108,105,110,117,120, 10, 10,
|
/* 0x12a0 */ 100, 95,102,100, 95, 97,110,100,114,111,105,100, 10, 10, 82, 69,
|
||||||
/* 0x12b0 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82,
|
/* 0x12b0 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
|
||||||
/* 0x12c0 */ 68, 83, 32, 70, 79, 82, 32, 91, 85, 77, 70, 95, 65, 78, 68, 82,
|
/* 0x12c0 */ 32, 70, 79, 82, 32, 91, 72, 85, 77, 70, 95, 76, 93, 58, 10, 79,
|
||||||
/* 0x12d0 */ 79, 73, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84,
|
/* 0x12d0 */ 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32,
|
||||||
/* 0x12e0 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x12e0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10,
|
||||||
/* 0x12f0 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 55, 99, 32,
|
/* 0x12f0 */ 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80,
|
||||||
/* 0x1300 */ 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32,
|
/* 0x1300 */ 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,117,112,120, 95,109,
|
||||||
/* 0x1310 */ 32, 32,109,121, 95, 98,107,112,116, 10, 48, 48, 48, 48, 48, 48,
|
/* 0x1310 */ 109, 97,112, 95, 97,110,100, 95,102,100, 95,108,105,110,117,120,
|
||||||
/* 0x1320 */ 102, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
/* 0x1320 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
|
||||||
/* 0x1330 */ 32, 32, 32, 32, 32,103,101,116, 95,117,112,120,102,110, 95,112,
|
/* 0x1330 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 85, 77, 70, 95, 65, 78,
|
||||||
/* 0x1340 */ 97,116,104, 10, 48, 48, 48, 48, 48, 49, 54,102, 32, 82, 95, 51,
|
/* 0x1340 */ 68, 82, 79, 73, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
|
||||||
/* 0x1350 */ 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,103,
|
/* 0x1350 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1360 */ 101,116, 95,112, 97,103,101, 95,109, 97,115,107, 10, 48, 48, 48,
|
/* 0x1360 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 55,
|
||||||
/* 0x1370 */ 48, 48, 49,101, 48, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50,
|
/* 0x1370 */ 99, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32,
|
||||||
/* 0x1380 */ 32, 32, 32, 32, 32, 32, 32, 32,103,101,116, 95,112, 97,103,101,
|
/* 0x1380 */ 32, 32, 32, 32,109,121, 95, 98,107,112,116, 10, 48, 48, 48, 48,
|
||||||
/* 0x1390 */ 95,109, 97,115,107, 10, 48, 48, 48, 48, 48, 50, 49, 50, 32, 82,
|
/* 0x1390 */ 48, 48,102, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32,
|
||||||
/* 0x13a0 */ 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x13a0 */ 32, 32, 32, 32, 32, 32, 32,103,101,116, 95,117,112,120,102,110,
|
||||||
/* 0x13b0 */ 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 50, 52, 57, 32, 82,
|
/* 0x13b0 */ 95,112, 97,116,104, 10, 48, 48, 48, 48, 48, 49, 54,102, 32, 82,
|
||||||
/* 0x13c0 */ 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x13c0 */ 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x13d0 */ 32,109,101,109,115,101,116, 10, 48, 48, 48, 48, 48, 50, 57, 56,
|
/* 0x13d0 */ 32,103,101,116, 95,112, 97,103,101, 95,109, 97,115,107, 10, 48,
|
||||||
/* 0x13e0 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
/* 0x13e0 */ 48, 48, 48, 48, 49,101, 48, 32, 82, 95, 51, 56, 54, 95, 80, 67,
|
||||||
/* 0x13f0 */ 32, 32, 32,109,121, 95, 98,107,112,116, 10, 48, 48, 48, 48, 48,
|
/* 0x13f0 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116, 95,112, 97,
|
||||||
/* 0x1400 */ 51, 53,101, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32,
|
/* 0x1400 */ 103,101, 95,109, 97,115,107, 10, 48, 48, 48, 48, 48, 50, 49, 50,
|
||||||
/* 0x1410 */ 32, 32, 32, 32, 32, 32,109,121, 95, 98,107,112,116, 10, 48, 48,
|
/* 0x1410 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
||||||
/* 0x1420 */ 48, 48, 48, 51, 57, 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51,
|
/* 0x1420 */ 32, 32, 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 50, 52, 57,
|
||||||
/* 0x1430 */ 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,112, 99,112,121,
|
/* 0x1430 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
||||||
/* 0x1440 */ 10, 48, 48, 48, 48, 48, 51,101,101, 32, 82, 95, 51, 56, 54, 95,
|
/* 0x1440 */ 32, 32, 32,109,101,109,115,101,116, 10, 48, 48, 48, 48, 48, 50,
|
||||||
/* 0x1450 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,112,
|
/* 0x1450 */ 57, 56, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||||
/* 0x1460 */ 99,112,121, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
|
/* 0x1460 */ 32, 32, 32, 32, 32,109,121, 95, 98,107,112,116, 10, 48, 48, 48,
|
||||||
/* 0x1470 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 85, 77, 70,
|
/* 0x1470 */ 48, 48, 51, 53,101, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50,
|
||||||
/* 0x1480 */ 95, 76, 73, 78, 85, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
|
/* 0x1480 */ 32, 32, 32, 32, 32, 32, 32, 32,109,121, 95, 98,107,112,116, 10,
|
||||||
/* 0x1490 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x1490 */ 48, 48, 48, 48, 48, 51, 57, 50, 32, 82, 95, 51, 56, 54, 95, 80,
|
||||||
/* 0x14a0 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
|
/* 0x14a0 */ 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,112, 99,
|
||||||
/* 0x14b0 */ 56,100, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
/* 0x14b0 */ 112,121, 10, 48, 48, 48, 48, 48, 51,101,101, 32, 82, 95, 51, 56,
|
||||||
/* 0x14c0 */ 32, 32, 32, 32, 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 48,
|
/* 0x14c0 */ 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,
|
||||||
/* 0x14d0 */ 57, 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
/* 0x14d0 */ 109,112, 99,112,121, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79,
|
||||||
/* 0x14e0 */ 32, 32, 32, 32, 32,103,101,116, 95,112, 97,103,101, 95,109, 97,
|
/* 0x14e0 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 85,
|
||||||
/* 0x14f0 */ 115,107, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82,
|
/* 0x14f0 */ 77, 70, 95, 76, 73, 78, 85, 88, 93, 58, 10, 79, 70, 70, 83, 69,
|
||||||
/* 0x1500 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77,
|
/* 0x1500 */ 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1510 */ 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32,
|
/* 0x1510 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48,
|
||||||
/* 0x1520 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x1520 */ 48, 48,102,100, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32,
|
||||||
/* 0x1530 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 53,
|
/* 0x1530 */ 32, 32, 32, 32, 32, 32, 32,109,109, 97,112, 10, 48, 48, 48, 48,
|
||||||
/* 0x1540 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
/* 0x1540 */ 48, 49, 48, 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32,
|
||||||
/* 0x1550 */ 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48,
|
/* 0x1550 */ 32, 32, 32, 32, 32, 32, 32,103,101,116, 95,112, 97,103,101, 95,
|
||||||
/* 0x1560 */ 48, 48, 97, 57, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32,
|
/* 0x1560 */ 109, 97,115,107, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
|
||||||
/* 0x1570 */ 32, 32, 32, 32, 32, 32, 32,117,112,120, 95,109,109, 97,112, 95,
|
/* 0x1570 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76,
|
||||||
/* 0x1580 */ 97,110,100, 95,102,100, 10, 48, 48, 48, 48, 48, 49, 53, 54, 32,
|
/* 0x1580 */ 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
|
||||||
/* 0x1590 */ 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32,
|
/* 0x1590 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x15a0 */ 32, 32,109,109, 97,112, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
|
/* 0x15a0 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x15b0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
|
/* 0x15b0 */ 48, 53, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||||
/* 0x15c0 */ 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69,
|
/* 0x15c0 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48,
|
||||||
/* 0x15d0 */ 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x15d0 */ 48, 48, 48, 48, 97, 57, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51,
|
||||||
/* 0x15e0 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48,
|
/* 0x15e0 */ 50, 32, 32, 32, 32, 32, 32, 32, 32,117,112,120, 95,109,109, 97,
|
||||||
/* 0x15f0 */ 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32,
|
/* 0x15f0 */ 112, 95, 97,110,100, 95,102,100, 10, 48, 48, 48, 48, 48, 49, 53,
|
||||||
/* 0x1600 */ 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10,
|
/* 0x1600 */ 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32,
|
||||||
/* 0x1610 */ 48, 48, 48, 48, 48, 48, 48, 54, 32, 82, 95, 51, 56, 54, 95, 51,
|
/* 0x1610 */ 32, 32, 32, 32,109,109, 97,112, 10, 10, 82, 69, 76, 79, 67, 65,
|
||||||
/* 0x1620 */ 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 79, 95, 66, 73, 78,
|
/* 0x1620 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82,
|
||||||
/* 0x1630 */ 70, 79, 10
|
/* 0x1630 */ 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70,
|
||||||
|
/* 0x1640 */ 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x1650 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
|
||||||
|
/* 0x1660 */ 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51,
|
||||||
|
/* 0x1670 */ 50, 32, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||||
|
/* 0x1680 */ 88, 10, 48, 48, 48, 48, 48, 48, 48, 54, 32, 82, 95, 51, 56, 54,
|
||||||
|
/* 0x1690 */ 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 79, 95, 66,
|
||||||
|
/* 0x16a0 */ 73, 78, 70, 79, 10
|
||||||
};
|
};
|
||||||
|
|||||||
Generated
+1136
-1125
File diff suppressed because it is too large
Load Diff
Generated
+272
-265
@@ -1,5 +1,5 @@
|
|||||||
/* i386-linux.elf-so_entry.h
|
/* i386-linux.elf-so_entry.h
|
||||||
created from i386-linux.elf-so_entry.bin, 5461 (0x1555) bytes
|
created from i386-linux.elf-so_entry.bin, 5575 (0x15c7) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -32,14 +32,14 @@
|
|||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
|
||||||
#define STUB_I386_LINUX_ELF_SO_ENTRY_SIZE 5461
|
#define STUB_I386_LINUX_ELF_SO_ENTRY_SIZE 5575
|
||||||
#define STUB_I386_LINUX_ELF_SO_ENTRY_ADLER32 0x8c26e90f
|
#define STUB_I386_LINUX_ELF_SO_ENTRY_ADLER32 0xcd9b0983
|
||||||
#define STUB_I386_LINUX_ELF_SO_ENTRY_CRC32 0x4d59693c
|
#define STUB_I386_LINUX_ELF_SO_ENTRY_CRC32 0x2f7643c5
|
||||||
|
|
||||||
unsigned char stub_i386_linux_elf_so_entry[5461] = {
|
unsigned char stub_i386_linux_elf_so_entry[5575] = {
|
||||||
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0010 */ 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0010 */ 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0020 */ 80, 8, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
|
/* 0x0020 */ 192, 8, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
|
||||||
/* 0x0030 */ 16, 0, 13, 0,233,252,255,255,255,233,252,255,255,255, 0, 0,
|
/* 0x0030 */ 16, 0, 13, 0,233,252,255,255,255,233,252,255,255,255, 0, 0,
|
||||||
/* 0x0040 */ 85,137,229, 87, 86, 83,129,236, 68, 16, 0, 0,186, 0, 0, 0,
|
/* 0x0040 */ 85,137,229, 87, 86, 83,129,236, 68, 16, 0, 0,186, 0, 0, 0,
|
||||||
/* 0x0050 */ 0,232, 4, 0, 0, 0,117,112,120, 0, 95,185, 16, 0, 0, 0,
|
/* 0x0050 */ 0,232, 4, 0, 0, 0,117,112,120, 0, 95,185, 16, 0, 0, 0,
|
||||||
@@ -117,266 +117,273 @@ unsigned char stub_i386_linux_elf_so_entry[5461] = {
|
|||||||
/* 0x04d0 */ 76, 36, 20, 73,131,249,255,116, 30,138, 22,131,202, 32, 15,190,
|
/* 0x04d0 */ 76, 36, 20, 73,131,249,255,116, 30,138, 22,131,202, 32, 15,190,
|
||||||
/* 0x04e0 */ 210,138, 3,131,200, 32, 15,190,192, 67, 70, 41,194,137,208,117,
|
/* 0x04e0 */ 210,138, 3,131,200, 32, 15,190,192, 67, 70, 41,194,137,208,117,
|
||||||
/* 0x04f0 */ 11, 73,131,249,255,117,226,184, 0, 0, 0, 0, 91, 94,195, 0,
|
/* 0x04f0 */ 11, 73,131,249,255,117,226,184, 0, 0, 0, 0, 91, 94,195, 0,
|
||||||
/* 0x0500 */ 85,137,229, 87, 86, 83,131,236, 20,139,125, 12,232, 4, 0, 0,
|
/* 0x0500 */ 85,137,229, 87, 86, 83,131,236, 24,139,125, 12,232, 4, 0, 0,
|
||||||
/* 0x0510 */ 0,117,112,120, 0, 90,185, 16, 0, 0, 0,184,100, 1, 0, 0,
|
/* 0x0510 */ 0,117,112,120, 0, 90,185, 16, 0, 0, 0,184,100, 1, 0, 0,
|
||||||
/* 0x0520 */ 137,211,205,128,137,198,131,248,234,117, 16,185, 0, 0, 0, 0,
|
/* 0x0520 */ 137,211,205,128,137,198,131,248,234,117, 16,185, 0, 0, 0, 0,
|
||||||
/* 0x0530 */ 184,100, 1, 0, 0,137,211,205,128,137,198,133,246,121, 40,232,
|
/* 0x0530 */ 184,100, 1, 0, 0,137,211,205,128,137,198,133,246, 15,137,148,
|
||||||
/* 0x0540 */ 9, 0, 0, 0, 47,100,101,118, 47,115,104,109, 0, 94,185, 2,
|
/* 0x0540 */ 0, 0, 0,232, 9, 0, 0, 0, 47,100,101,118, 47,115,104,109,
|
||||||
/* 0x0550 */ 0, 65, 0,186,192, 1, 0, 0,137,243,106, 5, 88,205,128,137,
|
/* 0x0550 */ 0, 94,185, 2, 0, 65, 0,186,192, 1, 0, 0,137,243,106, 5,
|
||||||
/* 0x0560 */ 198,137,194,133,192,120, 62,137,243,137,249,106, 93, 88,205,128,
|
/* 0x0560 */ 88,205,128,137,198,133,192,121,110,137,194,131,248,235, 15,133,
|
||||||
/* 0x0570 */ 137,194,133,192,120, 47,106, 0, 86,131,125, 8, 1, 25,192,131,
|
/* 0x0570 */ 161, 0, 0, 0,184, 2, 0, 0, 0,232, 62, 0, 0, 0, 85, 80,
|
||||||
/* 0x0580 */ 224,240,131,192, 17, 80,106, 3, 87,255,117, 8,232,252,255,255,
|
/* 0x0580 */ 88, 45, 53, 46, 48, 32,119, 97,110,116,115, 32,109,101,109,102,
|
||||||
/* 0x0590 */ 255,137,195,232,252,255,255,255,131,196, 24,137,218, 57,195,115,
|
/* 0x0590 */ 100, 95, 99,114,101, 97,116,101, 40, 41, 44, 32,111,114, 32,110,
|
||||||
/* 0x05a0 */ 4,141, 84, 30, 1,137,208,141,101,244, 91, 94, 95,201,195, 0,
|
/* 0x05a0 */ 101,101,100,115, 32, 47,100,101,118, 47,115,104,109, 40, 44, 79,
|
||||||
/* 0x05b0 */ 96,232,128, 0, 0, 0,243, 15, 30,251, 1,219,116, 2,243,195,
|
/* 0x05b0 */ 95, 84, 77, 80, 70, 73, 76, 69, 44, 41, 10, 0, 89,186, 61, 0,
|
||||||
/* 0x05c0 */ 139, 30,131,238,252, 17,219,195, 94,102,131,126, 8, 2,116, 1,
|
/* 0x05c0 */ 0, 0,137,195,106, 4, 88,205,128,184,127, 0, 0, 0,137,195,
|
||||||
/* 0x05d0 */ 244,139, 14,141,137, 24, 1, 0, 0, 81,106, 90, 87,141, 66,234,
|
/* 0x05d0 */ 106, 1, 88,205,128,235,254,137,243,137,249,106, 93, 88,205,128,
|
||||||
/* 0x05e0 */ 80, 82, 86,137,229,129,236, 24, 1, 0, 0,131,228,248,106, 0,
|
/* 0x05e0 */ 137,194,133,192,120, 47,106, 0, 86,131,125, 8, 1, 25,192,131,
|
||||||
/* 0x05f0 */ 137,231, 87, 81,106, 0,232,245, 0, 0, 0,131,196, 12,169, 0,
|
/* 0x05f0 */ 224,240,131,192, 17, 80,106, 3, 87,255,117, 8,232,252,255,255,
|
||||||
/* 0x0600 */ 8, 0, 0,116, 1,244,137,194,193,232, 12,193,224, 12, 41,194,
|
/* 0x0600 */ 255,137,195,232,252,255,255,255,131,196, 24,137,218, 57,195,115,
|
||||||
/* 0x0610 */ 74,139,117, 0,139, 62, 1,199,137,120, 8,137,230,185, 24, 1,
|
/* 0x0610 */ 4,141, 84, 30, 1,137,208,141,101,244, 91, 94, 95,201,195, 0,
|
||||||
/* 0x0620 */ 0, 0,243,164,137,236,137, 68, 36, 16, 94, 82,255, 54, 84,139,
|
/* 0x0620 */ 96,232,128, 0, 0, 0,243, 15, 30,251, 1,219,116, 2,243,195,
|
||||||
/* 0x0630 */ 78, 4,141,118, 12,137,199, 1,241, 81,139, 84, 36, 16, 49,219,
|
/* 0x0630 */ 139, 30,131,238,252, 17,219,195, 94,102,131,126, 8, 2,116, 1,
|
||||||
/* 0x0640 */ 49,201,131,205,255,252,168,164,255,210,114,251,141, 65, 1,255,
|
/* 0x0640 */ 244,139, 14,141,137, 24, 1, 0, 0, 81,106, 90, 87,141, 66,234,
|
||||||
/* 0x0650 */ 210, 17,192,255,210,115,248,131,232, 3,114, 11,193,224, 8,172,
|
/* 0x0650 */ 80, 82, 86,137,229,129,236, 24, 1, 0, 0,131,228,248,106, 0,
|
||||||
/* 0x0660 */ 131,240,255,116, 45,137,197,141, 65, 1,255,210, 17,201,255,210,
|
/* 0x0660 */ 137,231, 87, 81,106, 0,232,245, 0, 0, 0,131,196, 12,169, 0,
|
||||||
/* 0x0670 */ 17,201,117, 13,137,193,131,192, 2,255,210, 17,201,255,210,115,
|
/* 0x0670 */ 8, 0, 0,116, 1,244,137,194,193,232, 12,193,224, 12, 41,194,
|
||||||
/* 0x0680 */ 248,129,253, 0,243,255,255, 17,193, 86,141, 52, 47,243,164, 94,
|
/* 0x0680 */ 74,139,117, 0,139, 62, 1,199,137,120, 8,137,230,185, 24, 1,
|
||||||
/* 0x0690 */ 235,182, 89, 57,206,116, 1,244, 89,139,124, 36, 20,139, 68, 36,
|
/* 0x0690 */ 0, 0,243,164,137,236,137, 68, 36, 16, 94, 82,255, 54, 84,139,
|
||||||
/* 0x06a0 */ 16,137, 7, 88,137, 71, 8,139, 84, 36, 20,137,249, 91, 88,106,
|
/* 0x06a0 */ 78, 4,141,118, 12,137,199, 1,241, 81,139, 84, 36, 16, 49,219,
|
||||||
/* 0x06b0 */ 0, 83,106, 4, 88,205,128,106, 18,106, 5, 82, 87,137,227,106,
|
/* 0x06b0 */ 49,201,131,205,255,252,168,164,255,210,114,251,141, 65, 1,255,
|
||||||
/* 0x06c0 */ 90, 88,205,128,139, 92, 36, 16,131,196, 24,106, 6, 88,205,128,
|
/* 0x06c0 */ 210, 17,192,255,210,115,248,131,232, 3,114, 11,193,224, 8,172,
|
||||||
/* 0x06d0 */ 131,199, 12,255,231,141, 92, 36, 4,106, 90, 88,205,128, 61, 0,
|
/* 0x06d0 */ 131,240,255,116, 45,137,197,141, 65, 1,255,210, 17,201,255,210,
|
||||||
/* 0x06e0 */ 240,255,255,114, 1,244,194, 24, 0,184, 0,240,255,255,195, 0,
|
/* 0x06e0 */ 17,201,117, 13,137,193,131,192, 2,255,210, 17,201,255,210,115,
|
||||||
/* 0x06f0 */ 49,192,195,135, 92, 36, 4,139, 76, 36, 8,176,106,232, 98, 0,
|
/* 0x06f0 */ 248,129,253, 0,243,255,255, 17,193, 86,141, 52, 47,243,164, 94,
|
||||||
/* 0x0700 */ 0, 0,139, 92, 36, 4,195, 85,137,229, 83,139, 93, 8,176,122,
|
/* 0x0700 */ 235,182, 89, 57,206,116, 1,244, 89,139,124, 36, 20,139, 68, 36,
|
||||||
/* 0x0710 */ 232, 79, 0, 0, 0, 91, 93,195, 85,137,229, 83,139, 93, 8,139,
|
/* 0x0710 */ 16,137, 7, 88,137, 71, 8,139, 84, 36, 20,137,249, 91, 88,106,
|
||||||
/* 0x0720 */ 77, 12,176, 39,232, 59, 0, 0, 0, 91, 93,195, 85,137,229, 87,
|
/* 0x0720 */ 0, 83,106, 4, 88,205,128,106, 18,106, 5, 82, 87,137,227,106,
|
||||||
/* 0x0730 */ 139, 77, 16,139, 69, 12,139,125, 8,243,170, 95, 93,195, 85,137,
|
/* 0x0730 */ 90, 88,205,128,139, 92, 36, 16,131,196, 24,106, 6, 88,205,128,
|
||||||
/* 0x0740 */ 229, 87, 86,139, 77, 16,139,117, 12,139,125, 8,243,164,137,248,
|
/* 0x0740 */ 131,199, 12,255,231,141, 92, 36, 4,106, 90, 88,205,128, 61, 0,
|
||||||
/* 0x0750 */ 94, 95, 93,195,204,195, 83,141, 92, 36, 8,176, 90,232, 2, 0,
|
/* 0x0750 */ 240,255,255,114, 1,244,194, 24, 0,184, 0,240,255,255,195, 0,
|
||||||
/* 0x0760 */ 0, 0, 91,195, 15,182,192, 80,205,128, 90, 61, 0,240,255,255,
|
/* 0x0760 */ 49,192,195,135, 92, 36, 4,139, 76, 36, 8,176,106,232, 98, 0,
|
||||||
/* 0x0770 */ 115, 1,195,244,129,236, 0, 2, 0, 0, 49,210,232, 16, 0, 0,
|
/* 0x0770 */ 0, 0,139, 92, 36, 4,195, 85,137,229, 83,139, 93, 8,176,122,
|
||||||
/* 0x0780 */ 0, 47,112,114,111, 99, 47,115,101,108,102, 47, 97,117,120,118,
|
/* 0x0780 */ 232, 79, 0, 0, 0, 91, 93,195, 85,137,229, 83,139, 93, 8,139,
|
||||||
/* 0x0790 */ 0, 89,106,156, 91,184, 39, 1, 0, 0,205,128,133,192,124, 40,
|
/* 0x0790 */ 77, 12,176, 39,232, 59, 0, 0, 0, 91, 93,195, 85,137,229, 87,
|
||||||
/* 0x07a0 */ 137,197,186, 0, 2, 0, 0,137,225,137,195,106, 3, 88,205,128,
|
/* 0x07a0 */ 139, 77, 16,139, 69, 12,139,125, 8,243,170, 95, 93,195, 85,137,
|
||||||
/* 0x07b0 */ 133,192,124, 20,137,193,137,230,173,133,192,116, 11,131,248, 6,
|
/* 0x07b0 */ 229, 87, 86,139, 77, 16,139,117, 12,139,125, 8,243,164,137,248,
|
||||||
/* 0x07c0 */ 173,116, 10,131,233, 8,117,240,184, 0, 16, 0, 0,247,216,129,
|
/* 0x07c0 */ 94, 95, 93,195,204,195, 83,141, 92, 36, 8,176, 90,232, 2, 0,
|
||||||
/* 0x07d0 */ 196, 0, 2, 0, 0, 80,137,235,106, 6, 88,205,128, 95, 90,232,
|
/* 0x07d0 */ 0, 0, 91,195, 15,182,192, 80,205,128, 90, 61, 0,240,255,255,
|
||||||
/* 0x07e0 */ 20, 0, 0, 0, 0, 46,115,121,109,116, 97, 98, 0, 46,115,116,
|
/* 0x07e0 */ 115, 1,195,244,129,236, 0, 2, 0, 0, 49,210,232, 16, 0, 0,
|
||||||
/* 0x07f0 */ 114,116, 97, 98, 0, 46,115,104,115,116,114,116, 97, 98, 0, 46,
|
/* 0x07f0 */ 0, 47,112,114,111, 99, 47,115,101,108,102, 47, 97,117,120,118,
|
||||||
/* 0x0800 */ 114,101,108, 72, 85, 77, 70, 95, 65, 0, 46,114,101,108, 72, 85,
|
/* 0x0800 */ 0, 89,106,156, 91,184, 39, 1, 0, 0,205,128,133,192,124, 40,
|
||||||
/* 0x0810 */ 77, 70, 95, 76, 0, 46,114,101,108, 85, 77, 70, 95, 65, 78, 68,
|
/* 0x0810 */ 137,197,186, 0, 2, 0, 0,137,225,137,195,106, 3, 88,205,128,
|
||||||
/* 0x0820 */ 82, 79, 73, 68, 0, 46,114,101,108, 85, 77, 70, 95, 76, 73, 78,
|
/* 0x0820 */ 133,192,124, 20,137,193,137,230,173,133,192,116, 11,131,248, 6,
|
||||||
/* 0x0830 */ 85, 88, 0, 46,114,101,108, 69, 76, 70, 77, 65, 73, 78, 88, 0,
|
/* 0x0830 */ 173,116, 10,131,233, 8,117,240,184, 0, 16, 0, 0,247,216,129,
|
||||||
/* 0x0840 */ 46,114,101,108, 69, 76, 70, 77, 65, 73, 78, 90, 0, 0, 0, 0,
|
/* 0x0840 */ 196, 0, 2, 0, 0, 80,137,235,106, 6, 88,205,128, 95, 90,232,
|
||||||
/* 0x0850 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0850 */ 20, 0, 0, 0, 0, 46,115,121,109,116, 97, 98, 0, 46,115,116,
|
||||||
/* 0x0860 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0860 */ 114,116, 97, 98, 0, 46,115,104,115,116,114,116, 97, 98, 0, 46,
|
||||||
/* 0x0870 */ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x0870 */ 114,101,108, 72, 85, 77, 70, 95, 65, 0, 46,114,101,108, 72, 85,
|
||||||
/* 0x0880 */ 6, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 5, 0, 0, 0,
|
/* 0x0880 */ 77, 70, 95, 76, 0, 46,114,101,108, 85, 77, 70, 95, 65, 78, 68,
|
||||||
/* 0x0890 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0890 */ 82, 79, 73, 68, 0, 46,114,101,108, 85, 77, 70, 95, 76, 73, 78,
|
||||||
/* 0x08a0 */ 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x08a0 */ 85, 88, 0, 46,114,101,108, 69, 76, 70, 77, 65, 73, 78, 88, 0,
|
||||||
/* 0x08b0 */ 128, 12, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x08b0 */ 46,114,101,108, 69, 76, 70, 77, 65, 73, 78, 90, 0, 0, 0, 0,
|
||||||
/* 0x08c0 */ 4, 0, 0, 0, 8, 0, 0, 0, 42, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x08c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x08d0 */ 6, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 5, 0, 0, 0,
|
/* 0x08d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x08e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x08e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x08f0 */ 38, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x08f0 */ 6, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 5, 0, 0, 0,
|
||||||
/* 0x0900 */ 136, 12, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0,
|
/* 0x0900 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0910 */ 4, 0, 0, 0, 8, 0, 0, 0, 53, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x0910 */ 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0920 */ 6, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,191, 4, 0, 0,
|
/* 0x0920 */ 240, 12, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x0930 */ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0930 */ 4, 0, 0, 0, 8, 0, 0, 0, 42, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x0940 */ 49, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0940 */ 6, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 5, 0, 0, 0,
|
||||||
/* 0x0950 */ 144, 12, 0, 0, 80, 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0,
|
/* 0x0950 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0960 */ 4, 0, 0, 0, 8, 0, 0, 0, 69, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x0960 */ 38, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0970 */ 6, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,175, 0, 0, 0,
|
/* 0x0970 */ 248, 12, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0,
|
||||||
/* 0x0980 */ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0980 */ 4, 0, 0, 0, 8, 0, 0, 0, 53, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x0990 */ 65, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0990 */ 6, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,191, 4, 0, 0,
|
||||||
/* 0x09a0 */ 224, 12, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 7, 0, 0, 0,
|
/* 0x09a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x09b0 */ 4, 0, 0, 0, 8, 0, 0, 0, 83, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x09b0 */ 49, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x09c0 */ 6, 0, 0, 0, 0, 0, 0, 0,176, 5, 0, 0, 64, 1, 0, 0,
|
/* 0x09c0 */ 0, 13, 0, 0, 80, 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0,
|
||||||
/* 0x09d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x09d0 */ 4, 0, 0, 0, 8, 0, 0, 0, 69, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x09e0 */ 79, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x09e0 */ 6, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 31, 1, 0, 0,
|
||||||
/* 0x09f0 */ 240, 12, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 9, 0, 0, 0,
|
/* 0x09f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0a00 */ 4, 0, 0, 0, 8, 0, 0, 0, 96, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x0a00 */ 65, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0a10 */ 0, 0, 0, 0, 0, 0, 0, 0,240, 6, 0, 0,244, 0, 0, 0,
|
/* 0x0a10 */ 80, 13, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 7, 0, 0, 0,
|
||||||
/* 0x0a20 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0a20 */ 4, 0, 0, 0, 8, 0, 0, 0, 83, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x0a30 */ 92, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0a30 */ 6, 0, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0, 64, 1, 0, 0,
|
||||||
/* 0x0a40 */ 248, 12, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0,
|
/* 0x0a40 */ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0a50 */ 4, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0,
|
/* 0x0a50 */ 79, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0a60 */ 0, 0, 0, 0, 0, 0, 0, 0,228, 7, 0, 0,105, 0, 0, 0,
|
/* 0x0a60 */ 96, 13, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 9, 0, 0, 0,
|
||||||
/* 0x0a70 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0a70 */ 4, 0, 0, 0, 8, 0, 0, 0, 96, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x0a80 */ 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0a80 */ 0, 0, 0, 0, 0, 0, 0, 0, 96, 7, 0, 0,244, 0, 0, 0,
|
||||||
/* 0x0a90 */ 208, 10, 0, 0, 48, 1, 0, 0, 15, 0, 0, 0, 8, 0, 0, 0,
|
/* 0x0a90 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0aa0 */ 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0,
|
/* 0x0aa0 */ 92, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0ab0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0,128, 0, 0, 0,
|
/* 0x0ab0 */ 104, 13, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0,
|
||||||
/* 0x0ac0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0ac0 */ 4, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0,
|
||||||
/* 0x0ad0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0ad0 */ 0, 0, 0, 0, 0, 0, 0, 0, 84, 8, 0, 0,105, 0, 0, 0,
|
||||||
/* 0x0ae0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 9, 0,
|
/* 0x0ae0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0af0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 11, 0,
|
/* 0x0af0 */ 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0b00 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,
|
/* 0x0b00 */ 64, 11, 0, 0, 48, 1, 0, 0, 15, 0, 0, 0, 8, 0, 0, 0,
|
||||||
/* 0x0b10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0,
|
/* 0x0b10 */ 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0,
|
||||||
/* 0x0b20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0,
|
/* 0x0b20 */ 0, 0, 0, 0, 0, 0, 0, 0,112, 12, 0, 0,128, 0, 0, 0,
|
||||||
/* 0x0b30 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 5, 0,
|
/* 0x0b30 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0b40 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 7, 0,
|
/* 0x0b40 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0b50 */ 8, 0, 0, 0, 57, 1, 0, 0, 0, 0, 0, 0, 16, 0, 9, 0,
|
/* 0x0b50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 9, 0,
|
||||||
/* 0x0b60 */ 22, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
/* 0x0b60 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 11, 0,
|
||||||
/* 0x0b70 */ 30, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0, 18, 0, 5, 0,
|
/* 0x0b70 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,
|
||||||
/* 0x0b80 */ 54, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
/* 0x0b80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0,
|
||||||
/* 0x0b90 */ 59, 0, 0, 0, 0, 0, 0, 0,175, 0, 0, 0, 18, 0, 7, 0,
|
/* 0x0b90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0,
|
||||||
/* 0x0ba0 */ 81, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
/* 0x0ba0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 5, 0,
|
||||||
/* 0x0bb0 */ 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
/* 0x0bb0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 7, 0,
|
||||||
/* 0x0bc0 */ 102, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
/* 0x0bc0 */ 8, 0, 0, 0, 57, 1, 0, 0, 0, 0, 0, 0, 16, 0, 9, 0,
|
||||||
/* 0x0bd0 */ 109, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
/* 0x0bd0 */ 22, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
||||||
/* 0x0be0 */ 117, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
/* 0x0be0 */ 30, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0, 18, 0, 5, 0,
|
||||||
/* 0x0bf0 */ 122, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
/* 0x0bf0 */ 54, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
||||||
/* 0x0c00 */ 0, 95,115,116, 97,114,116, 0,103,101,116, 95,112, 97,103,101,
|
/* 0x0c00 */ 59, 0, 0, 0, 0, 0, 0, 0, 31, 1, 0, 0, 18, 0, 7, 0,
|
||||||
/* 0x0c10 */ 95,109, 97,115,107, 0,109,101,109,112, 99,112,121, 0,117,112,
|
/* 0x0c10 */ 81, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
||||||
/* 0x0c20 */ 120, 95,109,109, 97,112, 95, 97,110,100, 95,102,100, 95, 97,110,
|
/* 0x0c20 */ 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
||||||
/* 0x0c30 */ 100,114,111,105,100, 0,109,109, 97,112, 0,117,112,120, 95,109,
|
/* 0x0c30 */ 102, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
||||||
/* 0x0c40 */ 109, 97,112, 95, 97,110,100, 95,102,100, 95,108,105,110,117,120,
|
/* 0x0c40 */ 109, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
||||||
/* 0x0c50 */ 0,117,110, 97,109,101, 0,103,101,116, 95,117,112,120,102,110,
|
/* 0x0c50 */ 117, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
||||||
/* 0x0c60 */ 95,112, 97,116,104, 0,109,101,109,115,101,116, 0,109,121, 95,
|
/* 0x0c60 */ 122, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 16, 0, 11, 0,
|
||||||
/* 0x0c70 */ 98,107,112,116, 0,115,116, 97,116, 0,109,107,100,105,114, 0,
|
/* 0x0c70 */ 0, 95,115,116, 97,114,116, 0,103,101,116, 95,112, 97,103,101,
|
||||||
/* 0x0c80 */ 1, 0, 0, 0, 2, 10, 0, 0, 1, 0, 0, 0, 2, 12, 0, 0,
|
/* 0x0c80 */ 95,109, 97,115,107, 0,109,101,109,112, 99,112,121, 0,117,112,
|
||||||
/* 0x0c90 */ 124, 0, 0, 0, 2, 16, 0, 0,241, 0, 0, 0, 2, 14, 0, 0,
|
/* 0x0c90 */ 120, 95,109,109, 97,112, 95, 97,110,100, 95,102,100, 95, 97,110,
|
||||||
/* 0x0ca0 */ 111, 1, 0, 0, 2, 8, 0, 0,224, 1, 0, 0, 2, 8, 0, 0,
|
/* 0x0ca0 */ 100,114,111,105,100, 0,109,109, 97,112, 0,117,112,120, 95,109,
|
||||||
/* 0x0cb0 */ 18, 2, 0, 0, 2, 11, 0, 0, 73, 2, 0, 0, 2, 15, 0, 0,
|
/* 0x0cb0 */ 109, 97,112, 95, 97,110,100, 95,102,100, 95,108,105,110,117,120,
|
||||||
/* 0x0cc0 */ 152, 2, 0, 0, 2, 16, 0, 0, 94, 3, 0, 0, 2, 16, 0, 0,
|
/* 0x0cc0 */ 0,117,110, 97,109,101, 0,103,101,116, 95,117,112,120,102,110,
|
||||||
/* 0x0cd0 */ 146, 3, 0, 0, 2, 9, 0, 0,238, 3, 0, 0, 2, 9, 0, 0,
|
/* 0x0cd0 */ 95,112, 97,116,104, 0,109,101,109,115,101,116, 0,109,121, 95,
|
||||||
/* 0x0ce0 */ 141, 0, 0, 0, 2, 11, 0, 0,148, 0, 0, 0, 2, 8, 0, 0,
|
/* 0x0ce0 */ 98,107,112,116, 0,115,116, 97,116, 0,109,107,100,105,114, 0,
|
||||||
/* 0x0cf0 */ 2, 0, 0, 0, 2, 2, 0, 0,240, 0, 0, 0, 2, 1, 0, 0,
|
/* 0x0cf0 */ 1, 0, 0, 0, 2, 10, 0, 0, 1, 0, 0, 0, 2, 12, 0, 0,
|
||||||
/* 0x0d00 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51,
|
/* 0x0d00 */ 124, 0, 0, 0, 2, 16, 0, 0,241, 0, 0, 0, 2, 14, 0, 0,
|
||||||
/* 0x0d10 */ 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99,116,105,111,110,115,
|
/* 0x0d10 */ 111, 1, 0, 0, 2, 8, 0, 0,224, 1, 0, 0, 2, 8, 0, 0,
|
||||||
/* 0x0d20 */ 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32,
|
/* 0x0d20 */ 18, 2, 0, 0, 2, 11, 0, 0, 73, 2, 0, 0, 2, 15, 0, 0,
|
||||||
/* 0x0d30 */ 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77,
|
/* 0x0d30 */ 152, 2, 0, 0, 2, 16, 0, 0, 94, 3, 0, 0, 2, 16, 0, 0,
|
||||||
/* 0x0d40 */ 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32,
|
/* 0x0d40 */ 146, 3, 0, 0, 2, 9, 0, 0,238, 3, 0, 0, 2, 9, 0, 0,
|
||||||
/* 0x0d50 */ 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,110,
|
/* 0x0d50 */ 253, 0, 0, 0, 2, 11, 0, 0, 4, 1, 0, 0, 2, 8, 0, 0,
|
||||||
/* 0x0d60 */ 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 72, 85, 77, 70,
|
/* 0x0d60 */ 2, 0, 0, 0, 2, 2, 0, 0,240, 0, 0, 0, 2, 1, 0, 0,
|
||||||
/* 0x0d70 */ 95, 65, 32, 32, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, 48, 32,
|
/* 0x0d70 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51,
|
||||||
/* 0x0d80 */ 32, 48, 32, 32, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67,
|
/* 0x0d80 */ 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99,116,105,111,110,115,
|
||||||
/* 0x0d90 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 72, 85, 77, 70,
|
/* 0x0d90 */ 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x0da0 */ 95, 76, 32, 32, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, 48, 32,
|
/* 0x0da0 */ 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77,
|
||||||
/* 0x0db0 */ 32, 48, 32, 32, 48, 51, 57, 32, 32, 50, 42, 42, 48, 32, 32, 67,
|
/* 0x0db0 */ 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32,
|
||||||
/* 0x0dc0 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32, 85, 77, 70, 95,
|
/* 0x0dc0 */ 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,110,
|
||||||
/* 0x0dd0 */ 65, 78, 68, 82, 79, 73, 68, 32, 32, 32, 48, 52, 98,102, 32, 32,
|
/* 0x0dd0 */ 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 72, 85, 77, 70,
|
||||||
/* 0x0de0 */ 48, 32, 32, 48, 32, 32, 48, 52, 48, 32, 32, 50, 42, 42, 50, 32,
|
/* 0x0de0 */ 95, 65, 32, 32, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, 48, 32,
|
||||||
/* 0x0df0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 51, 32, 85, 77,
|
/* 0x0df0 */ 32, 48, 32, 32, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67,
|
||||||
/* 0x0e00 */ 70, 95, 76, 73, 78, 85, 88, 32, 32, 32, 32, 32, 48, 97,102, 32,
|
/* 0x0e00 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 72, 85, 77, 70,
|
||||||
/* 0x0e10 */ 32, 48, 32, 32, 48, 32, 32, 48, 53, 48, 48, 32, 32, 50, 42, 42,
|
/* 0x0e10 */ 95, 76, 32, 32, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, 48, 32,
|
||||||
/* 0x0e20 */ 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 52, 32,
|
/* 0x0e20 */ 32, 48, 32, 32, 48, 51, 57, 32, 32, 50, 42, 42, 48, 32, 32, 67,
|
||||||
/* 0x0e30 */ 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 49,
|
/* 0x0e30 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32, 85, 77, 70, 95,
|
||||||
/* 0x0e40 */ 52, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 53, 98, 48, 32, 32,
|
/* 0x0e40 */ 65, 78, 68, 82, 79, 73, 68, 32, 32, 32, 48, 52, 98,102, 32, 32,
|
||||||
/* 0x0e50 */ 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32,
|
/* 0x0e50 */ 48, 32, 32, 48, 32, 32, 48, 52, 48, 32, 32, 50, 42, 42, 50, 32,
|
||||||
/* 0x0e60 */ 32, 53, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32,
|
/* 0x0e60 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 51, 32, 85, 77,
|
||||||
/* 0x0e70 */ 32, 48,102, 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 54,102, 48,
|
/* 0x0e70 */ 70, 95, 76, 73, 78, 85, 88, 32, 32, 32, 32, 32, 48, 49, 49,102,
|
||||||
/* 0x0e80 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83,
|
/* 0x0e80 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 53, 48, 48, 32, 32, 50, 42,
|
||||||
/* 0x0e90 */ 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48,
|
/* 0x0e90 */ 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 52,
|
||||||
/* 0x0ea0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
|
/* 0x0ea0 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48,
|
||||||
/* 0x0eb0 */ 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70, 77, 65,
|
/* 0x0eb0 */ 49, 52, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 54, 50, 48, 32,
|
||||||
/* 0x0ec0 */ 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
|
/* 0x0ec0 */ 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10,
|
||||||
/* 0x0ed0 */ 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32,
|
/* 0x0ed0 */ 32, 32, 53, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32,
|
||||||
/* 0x0ee0 */ 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0ee0 */ 32, 32, 48,102, 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 55, 54,
|
||||||
/* 0x0ef0 */ 48, 32,108, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73,
|
/* 0x0ef0 */ 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84,
|
||||||
/* 0x0f00 */ 78, 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48,
|
/* 0x0f00 */ 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10,
|
||||||
/* 0x0f10 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 72, 85, 77,
|
/* 0x0f10 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
|
||||||
/* 0x0f20 */ 70, 95, 65, 32, 48, 32, 72, 85, 77, 70, 95, 65, 10, 48, 48, 48,
|
/* 0x0f20 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70, 77,
|
||||||
/* 0x0f30 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 72, 85,
|
/* 0x0f30 */ 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
|
||||||
/* 0x0f40 */ 77, 70, 95, 76, 32, 48, 32, 72, 85, 77, 70, 95, 76, 10, 48, 48,
|
/* 0x0f40 */ 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48,
|
||||||
/* 0x0f50 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 85,
|
/* 0x0f50 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x0f60 */ 77, 70, 95, 65, 78, 68, 82, 79, 73, 68, 32, 48, 32, 85, 77, 70,
|
/* 0x0f60 */ 48, 48, 32,108, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65,
|
||||||
/* 0x0f70 */ 95, 65, 78, 68, 82, 79, 73, 68, 10, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0f70 */ 73, 78, 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48,
|
||||||
/* 0x0f80 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 85, 77, 70, 95, 76, 73,
|
/* 0x0f80 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 72, 85,
|
||||||
/* 0x0f90 */ 78, 85, 88, 32, 48, 32, 85, 77, 70, 95, 76, 73, 78, 85, 88, 10,
|
/* 0x0f90 */ 77, 70, 95, 65, 32, 48, 32, 72, 85, 77, 70, 95, 65, 10, 48, 48,
|
||||||
/* 0x0fa0 */ 48, 48, 48, 48, 48, 49, 51, 57, 32,103, 32, 32, 32, 32, 32, 32,
|
/* 0x0fa0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 72,
|
||||||
/* 0x0fb0 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,103,101,116, 95,
|
/* 0x0fb0 */ 85, 77, 70, 95, 76, 32, 48, 32, 72, 85, 77, 70, 95, 76, 10, 48,
|
||||||
/* 0x0fc0 */ 112, 97,103,101, 95,109, 97,115,107, 10, 48, 48, 48, 48, 48, 48,
|
/* 0x0fc0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
|
||||||
/* 0x0fd0 */ 52,101, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65,
|
/* 0x0fd0 */ 85, 77, 70, 95, 65, 78, 68, 82, 79, 73, 68, 32, 48, 32, 85, 77,
|
||||||
/* 0x0fe0 */ 73, 78, 90, 32, 48, 32,109,101,109,112, 99,112,121, 10, 48, 48,
|
/* 0x0fe0 */ 70, 95, 65, 78, 68, 82, 79, 73, 68, 10, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x0ff0 */ 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 85,
|
/* 0x0ff0 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 85, 77, 70, 95, 76,
|
||||||
/* 0x1000 */ 77, 70, 95, 65, 78, 68, 82, 79, 73, 68, 32, 48, 50, 51, 53, 32,
|
/* 0x1000 */ 73, 78, 85, 88, 32, 48, 32, 85, 77, 70, 95, 76, 73, 78, 85, 88,
|
||||||
/* 0x1010 */ 117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,102,100, 95,
|
/* 0x1010 */ 10, 48, 48, 48, 48, 48, 49, 51, 57, 32,103, 32, 32, 32, 32, 32,
|
||||||
/* 0x1020 */ 97,110,100,114,111,105,100, 10, 48, 48, 48, 48, 48, 48, 54, 54,
|
/* 0x1020 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,103,101,116,
|
||||||
/* 0x1030 */ 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78,
|
/* 0x1030 */ 95,112, 97,103,101, 95,109, 97,115,107, 10, 48, 48, 48, 48, 48,
|
||||||
/* 0x1040 */ 90, 32, 48, 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x1040 */ 48, 52,101, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77,
|
||||||
/* 0x1050 */ 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 85, 77, 70, 95, 76, 73,
|
/* 0x1050 */ 65, 73, 78, 90, 32, 48, 32,109,101,109,112, 99,112,121, 10, 48,
|
||||||
/* 0x1060 */ 78, 85, 88, 32, 48, 97,102, 32,117,112,120, 95,109,109, 97,112,
|
/* 0x1060 */ 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32,
|
||||||
/* 0x1070 */ 95, 97,110,100, 95,102,100, 95,108,105,110,117,120, 10, 48, 48,
|
/* 0x1070 */ 85, 77, 70, 95, 65, 78, 68, 82, 79, 73, 68, 32, 48, 50, 51, 53,
|
||||||
/* 0x1080 */ 48, 48, 48, 48, 49, 55, 32,103, 32, 32, 32, 32, 32, 32, 32, 69,
|
/* 0x1080 */ 32,117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,102,100,
|
||||||
/* 0x1090 */ 76, 70, 77, 65, 73, 78, 90, 32, 48, 32,117,110, 97,109,101, 10,
|
/* 0x1090 */ 95, 97,110,100,114,111,105,100, 10, 48, 48, 48, 48, 48, 48, 54,
|
||||||
/* 0x10a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32,
|
/* 0x10a0 */ 54, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73,
|
||||||
/* 0x10b0 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32,103,101,116, 95,
|
/* 0x10b0 */ 78, 90, 32, 48, 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x10c0 */ 117,112,120,102,110, 95,112, 97,116,104, 10, 48, 48, 48, 48, 48,
|
/* 0x10c0 */ 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 85, 77, 70, 95, 76,
|
||||||
/* 0x10d0 */ 48, 51, 99, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77,
|
/* 0x10d0 */ 73, 78, 85, 88, 32, 48, 49, 49,102, 32,117,112,120, 95,109,109,
|
||||||
/* 0x10e0 */ 65, 73, 78, 90, 32, 48, 32,109,101,109,115,101,116, 10, 48, 48,
|
/* 0x10e0 */ 97,112, 95, 97,110,100, 95,102,100, 95,108,105,110,117,120, 10,
|
||||||
/* 0x10f0 */ 48, 48, 48, 48, 54, 52, 32,103, 32, 32, 32, 32, 32, 32, 32, 69,
|
/* 0x10f0 */ 48, 48, 48, 48, 48, 48, 49, 55, 32,103, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1100 */ 76, 70, 77, 65, 73, 78, 90, 32, 48, 32,109,121, 95, 98,107,112,
|
/* 0x1100 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32,117,110, 97,109,
|
||||||
/* 0x1110 */ 116, 10, 48, 48, 48, 48, 48, 48, 48, 51, 32,103, 32, 32, 32, 32,
|
/* 0x1110 */ 101, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32,
|
||||||
/* 0x1120 */ 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32,115,116,
|
/* 0x1120 */ 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32,103,101,
|
||||||
/* 0x1130 */ 97,116, 10, 48, 48, 48, 48, 48, 48, 50, 56, 32,103, 32, 32, 32,
|
/* 0x1130 */ 116, 95,117,112,120,102,110, 95,112, 97,116,104, 10, 48, 48, 48,
|
||||||
/* 0x1140 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32,109,
|
/* 0x1140 */ 48, 48, 48, 51, 99, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76,
|
||||||
/* 0x1150 */ 107,100,105,114, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
|
/* 0x1150 */ 70, 77, 65, 73, 78, 90, 32, 48, 32,109,101,109,115,101,116, 10,
|
||||||
/* 0x1160 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 72, 85,
|
/* 0x1160 */ 48, 48, 48, 48, 48, 48, 54, 52, 32,103, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1170 */ 77, 70, 95, 65, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32,
|
/* 0x1170 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32,109,121, 95, 98,
|
||||||
/* 0x1180 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x1180 */ 107,112,116, 10, 48, 48, 48, 48, 48, 48, 48, 51, 32,103, 32, 32,
|
||||||
/* 0x1190 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 49,
|
/* 0x1190 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32,
|
||||||
/* 0x11a0 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
/* 0x11a0 */ 115,116, 97,116, 10, 48, 48, 48, 48, 48, 48, 50, 56, 32,103, 32,
|
||||||
/* 0x11b0 */ 32, 32, 32,117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,
|
/* 0x11b0 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48,
|
||||||
/* 0x11c0 */ 102,100, 95, 97,110,100,114,111,105,100, 10, 10, 82, 69, 76, 79,
|
/* 0x11c0 */ 32,109,107,100,105,114, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
|
||||||
/* 0x11d0 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70,
|
/* 0x11d0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
|
||||||
/* 0x11e0 */ 79, 82, 32, 91, 72, 85, 77, 70, 95, 76, 93, 58, 10, 79, 70, 70,
|
/* 0x11e0 */ 72, 85, 77, 70, 95, 65, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
|
||||||
/* 0x11f0 */ 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
|
/* 0x11f0 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1200 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
|
/* 0x1200 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1210 */ 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51,
|
/* 0x1210 */ 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||||
/* 0x1220 */ 50, 32, 32, 32, 32, 32, 32, 32, 32,117,112,120, 95,109,109, 97,
|
/* 0x1220 */ 32, 32, 32, 32, 32,117,112,120, 95,109,109, 97,112, 95, 97,110,
|
||||||
/* 0x1230 */ 112, 95, 97,110,100, 95,102,100, 95,108,105,110,117,120, 10, 10,
|
/* 0x1230 */ 100, 95,102,100, 95, 97,110,100,114,111,105,100, 10, 10, 82, 69,
|
||||||
/* 0x1240 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82,
|
/* 0x1240 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
|
||||||
/* 0x1250 */ 68, 83, 32, 70, 79, 82, 32, 91, 85, 77, 70, 95, 65, 78, 68, 82,
|
/* 0x1250 */ 32, 70, 79, 82, 32, 91, 72, 85, 77, 70, 95, 76, 93, 58, 10, 79,
|
||||||
/* 0x1260 */ 79, 73, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84,
|
/* 0x1260 */ 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32,
|
||||||
/* 0x1270 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x1270 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10,
|
||||||
/* 0x1280 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 55, 99, 32,
|
/* 0x1280 */ 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80,
|
||||||
/* 0x1290 */ 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32,
|
/* 0x1290 */ 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,117,112,120, 95,109,
|
||||||
/* 0x12a0 */ 32, 32,109,121, 95, 98,107,112,116, 10, 48, 48, 48, 48, 48, 48,
|
/* 0x12a0 */ 109, 97,112, 95, 97,110,100, 95,102,100, 95,108,105,110,117,120,
|
||||||
/* 0x12b0 */ 102, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
/* 0x12b0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
|
||||||
/* 0x12c0 */ 32, 32, 32, 32, 32,103,101,116, 95,117,112,120,102,110, 95,112,
|
/* 0x12c0 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 85, 77, 70, 95, 65, 78,
|
||||||
/* 0x12d0 */ 97,116,104, 10, 48, 48, 48, 48, 48, 49, 54,102, 32, 82, 95, 51,
|
/* 0x12d0 */ 68, 82, 79, 73, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
|
||||||
/* 0x12e0 */ 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,103,
|
/* 0x12e0 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x12f0 */ 101,116, 95,112, 97,103,101, 95,109, 97,115,107, 10, 48, 48, 48,
|
/* 0x12f0 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 55,
|
||||||
/* 0x1300 */ 48, 48, 49,101, 48, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50,
|
/* 0x1300 */ 99, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32,
|
||||||
/* 0x1310 */ 32, 32, 32, 32, 32, 32, 32, 32,103,101,116, 95,112, 97,103,101,
|
/* 0x1310 */ 32, 32, 32, 32,109,121, 95, 98,107,112,116, 10, 48, 48, 48, 48,
|
||||||
/* 0x1320 */ 95,109, 97,115,107, 10, 48, 48, 48, 48, 48, 50, 49, 50, 32, 82,
|
/* 0x1320 */ 48, 48,102, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32,
|
||||||
/* 0x1330 */ 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x1330 */ 32, 32, 32, 32, 32, 32, 32,103,101,116, 95,117,112,120,102,110,
|
||||||
/* 0x1340 */ 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 50, 52, 57, 32, 82,
|
/* 0x1340 */ 95,112, 97,116,104, 10, 48, 48, 48, 48, 48, 49, 54,102, 32, 82,
|
||||||
/* 0x1350 */ 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x1350 */ 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1360 */ 32,109,101,109,115,101,116, 10, 48, 48, 48, 48, 48, 50, 57, 56,
|
/* 0x1360 */ 32,103,101,116, 95,112, 97,103,101, 95,109, 97,115,107, 10, 48,
|
||||||
/* 0x1370 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
/* 0x1370 */ 48, 48, 48, 48, 49,101, 48, 32, 82, 95, 51, 56, 54, 95, 80, 67,
|
||||||
/* 0x1380 */ 32, 32, 32,109,121, 95, 98,107,112,116, 10, 48, 48, 48, 48, 48,
|
/* 0x1380 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116, 95,112, 97,
|
||||||
/* 0x1390 */ 51, 53,101, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32,
|
/* 0x1390 */ 103,101, 95,109, 97,115,107, 10, 48, 48, 48, 48, 48, 50, 49, 50,
|
||||||
/* 0x13a0 */ 32, 32, 32, 32, 32, 32,109,121, 95, 98,107,112,116, 10, 48, 48,
|
/* 0x13a0 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
||||||
/* 0x13b0 */ 48, 48, 48, 51, 57, 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51,
|
/* 0x13b0 */ 32, 32, 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 50, 52, 57,
|
||||||
/* 0x13c0 */ 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,112, 99,112,121,
|
/* 0x13c0 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
||||||
/* 0x13d0 */ 10, 48, 48, 48, 48, 48, 51,101,101, 32, 82, 95, 51, 56, 54, 95,
|
/* 0x13d0 */ 32, 32, 32,109,101,109,115,101,116, 10, 48, 48, 48, 48, 48, 50,
|
||||||
/* 0x13e0 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,112,
|
/* 0x13e0 */ 57, 56, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||||
/* 0x13f0 */ 99,112,121, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
|
/* 0x13f0 */ 32, 32, 32, 32, 32,109,121, 95, 98,107,112,116, 10, 48, 48, 48,
|
||||||
/* 0x1400 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 85, 77, 70,
|
/* 0x1400 */ 48, 48, 51, 53,101, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50,
|
||||||
/* 0x1410 */ 95, 76, 73, 78, 85, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
|
/* 0x1410 */ 32, 32, 32, 32, 32, 32, 32, 32,109,121, 95, 98,107,112,116, 10,
|
||||||
/* 0x1420 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x1420 */ 48, 48, 48, 48, 48, 51, 57, 50, 32, 82, 95, 51, 56, 54, 95, 80,
|
||||||
/* 0x1430 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
|
/* 0x1430 */ 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,112, 99,
|
||||||
/* 0x1440 */ 56,100, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
/* 0x1440 */ 112,121, 10, 48, 48, 48, 48, 48, 51,101,101, 32, 82, 95, 51, 56,
|
||||||
/* 0x1450 */ 32, 32, 32, 32, 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 48,
|
/* 0x1450 */ 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,
|
||||||
/* 0x1460 */ 57, 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
/* 0x1460 */ 109,112, 99,112,121, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79,
|
||||||
/* 0x1470 */ 32, 32, 32, 32, 32,103,101,116, 95,112, 97,103,101, 95,109, 97,
|
/* 0x1470 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 85,
|
||||||
/* 0x1480 */ 115,107, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82,
|
/* 0x1480 */ 77, 70, 95, 76, 73, 78, 85, 88, 93, 58, 10, 79, 70, 70, 83, 69,
|
||||||
/* 0x1490 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77,
|
/* 0x1490 */ 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x14a0 */ 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32,
|
/* 0x14a0 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48,
|
||||||
/* 0x14b0 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x14b0 */ 48, 48,102,100, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32,
|
||||||
/* 0x14c0 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 50,
|
/* 0x14c0 */ 32, 32, 32, 32, 32, 32, 32,109,109, 97,112, 10, 48, 48, 48, 48,
|
||||||
/* 0x14d0 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
/* 0x14d0 */ 48, 49, 48, 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32,
|
||||||
/* 0x14e0 */ 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 10, 82, 69, 76,
|
/* 0x14e0 */ 32, 32, 32, 32, 32, 32, 32,103,101,116, 95,112, 97,103,101, 95,
|
||||||
/* 0x14f0 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32,
|
/* 0x14f0 */ 109, 97,115,107, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
|
||||||
/* 0x1500 */ 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10,
|
/* 0x1500 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76,
|
||||||
/* 0x1510 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
|
/* 0x1510 */ 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
|
||||||
/* 0x1520 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
|
/* 0x1520 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x1530 */ 10, 48, 48, 48, 48, 48, 48,102, 48, 32, 82, 95, 51, 56, 54, 95,
|
/* 0x1530 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x1540 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77,
|
/* 0x1540 */ 48, 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||||
/* 0x1550 */ 65, 73, 78, 88, 10
|
/* 0x1550 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 10, 82,
|
||||||
|
/* 0x1560 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68,
|
||||||
|
/* 0x1570 */ 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93,
|
||||||
|
/* 0x1580 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32,
|
||||||
|
/* 0x1590 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76,
|
||||||
|
/* 0x15a0 */ 85, 69, 10, 48, 48, 48, 48, 48, 48,102, 48, 32, 82, 95, 51, 56,
|
||||||
|
/* 0x15b0 */ 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 69, 76,
|
||||||
|
/* 0x15c0 */ 70, 77, 65, 73, 78, 88, 10
|
||||||
};
|
};
|
||||||
|
|||||||
Generated
+1091
-1084
File diff suppressed because it is too large
Load Diff
Generated
+92
-102
@@ -1,5 +1,5 @@
|
|||||||
/* mips.r3000-linux.elf-entry.h
|
/* mips.r3000-linux.elf-entry.h
|
||||||
created from mips.r3000-linux.elf-entry.bin, 2056 (0x808) bytes
|
created from mips.r3000-linux.elf-entry.bin, 1897 (0x769) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -32,15 +32,15 @@
|
|||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
|
||||||
#define STUB_MIPS_R3000_LINUX_ELF_ENTRY_SIZE 2056
|
#define STUB_MIPS_R3000_LINUX_ELF_ENTRY_SIZE 1897
|
||||||
#define STUB_MIPS_R3000_LINUX_ELF_ENTRY_ADLER32 0xfd6d93a2
|
#define STUB_MIPS_R3000_LINUX_ELF_ENTRY_ADLER32 0x3a347ddd
|
||||||
#define STUB_MIPS_R3000_LINUX_ELF_ENTRY_CRC32 0x743aa3e3
|
#define STUB_MIPS_R3000_LINUX_ELF_ENTRY_CRC32 0xddfc99bb
|
||||||
|
|
||||||
unsigned char stub_mips_r3000_linux_elf_entry[2056] = {
|
unsigned char stub_mips_r3000_linux_elf_entry[1897] = {
|
||||||
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0010 */ 0, 1, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0010 */ 0, 1, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0020 */ 0, 0, 3, 84, 0, 0, 0, 1, 0, 52, 0, 0, 0, 0, 0, 40,
|
/* 0x0020 */ 0, 0, 3, 60, 0, 0, 0, 1, 0, 52, 0, 0, 0, 0, 0, 40,
|
||||||
/* 0x0030 */ 0, 8, 0, 5, 4, 17, 0, 77, 39,254, 0, 0, 39,189,255,252,
|
/* 0x0030 */ 0, 8, 0, 5, 4, 17, 0, 71, 39,254, 0, 0, 39,189,255,252,
|
||||||
/* 0x0040 */ 175,191, 0, 0, 0,164, 40, 32,172,230, 0, 0, 60, 13,128, 0,
|
/* 0x0040 */ 175,191, 0, 0, 0,164, 40, 32,172,230, 0, 0, 60, 13,128, 0,
|
||||||
/* 0x0050 */ 1,160, 72, 33, 36, 11, 0, 1, 4, 17, 0, 66, 36, 15, 0, 1,
|
/* 0x0050 */ 1,160, 72, 33, 36, 11, 0, 1, 4, 17, 0, 66, 36, 15, 0, 1,
|
||||||
/* 0x0060 */ 17,192, 0, 5,144,142, 0, 0, 36,132, 0, 1, 36,198, 0, 1,
|
/* 0x0060 */ 17,192, 0, 5,144,142, 0, 0, 36,132, 0, 1, 36,198, 0, 1,
|
||||||
@@ -63,11 +63,11 @@ unsigned char stub_mips_r3000_linux_elf_entry[2056] = {
|
|||||||
/* 0x0170 */ 0, 9, 72, 64,140,227, 0, 0, 0,133,192, 35,143,191, 0, 0,
|
/* 0x0170 */ 0, 9, 72, 64,140,227, 0, 0, 0,133,192, 35,143,191, 0, 0,
|
||||||
/* 0x0180 */ 175,184, 0, 0, 0, 96, 32, 33, 0,195, 40, 35,172,229, 0, 0,
|
/* 0x0180 */ 175,184, 0, 0, 0, 96, 32, 33, 0,195, 40, 35,172,229, 0, 0,
|
||||||
/* 0x0190 */ 36, 6, 0, 3, 36, 2, 16, 51, 0, 0, 0, 12,143,162, 0, 0,
|
/* 0x0190 */ 36, 6, 0, 3, 36, 2, 16, 51, 0, 0, 0, 12,143,162, 0, 0,
|
||||||
/* 0x01a0 */ 3,224, 0, 8, 39,189, 0, 4, 36, 4, 0, 2, 36, 2, 15,164,
|
/* 0x01a0 */ 3,224, 0, 8, 39,189, 0, 4, 39,189,255,224,175,188, 0, 16,
|
||||||
/* 0x01b0 */ 0, 0, 0, 12, 36, 4, 0,127, 36, 2, 15,161, 0, 0, 0, 12,
|
/* 0x01b0 */ 143,209,255,244, 39,213,255,244, 2,177,168, 34, 36, 5, 0, 16,
|
||||||
/* 0x01c0 */ 39,189,255,224,175,188, 0, 16,143,209,255,244, 39,213,255,244,
|
/* 0x01c0 */ 4, 17, 0, 2, 3,224, 32, 33,117,112,120, 0, 36, 2, 17, 2,
|
||||||
/* 0x01d0 */ 2,177,168, 34, 4, 17, 0, 2, 3,224, 32, 33,117,112,120, 0,
|
/* 0x01d0 */ 0, 0, 0, 12, 16,224, 0, 6, 0, 64,184, 33, 16,160, 0, 3,
|
||||||
/* 0x01e0 */ 0, 0, 40, 33, 36, 2, 17, 2, 0, 0, 0, 12, 0, 64,184, 33,
|
/* 0x01e0 */ 36, 69,255,234, 16,160,255,246, 0, 0, 0, 0, 0, 0, 0, 13,
|
||||||
/* 0x01f0 */ 142,147, 0, 0, 3,160,240, 33,175,179, 0, 28, 36, 1,255,248,
|
/* 0x01f0 */ 142,147, 0, 0, 3,160,240, 33,175,179, 0, 28, 36, 1,255,248,
|
||||||
/* 0x0200 */ 3,179,232, 35, 3,161,232, 36,142,144,255,252, 36, 1,255,252,
|
/* 0x0200 */ 3,179,232, 35, 3,161,232, 36,142,144,255,252, 36, 1,255,252,
|
||||||
/* 0x0210 */ 2, 1,128, 36,130,136, 0, 8,175,211, 0, 24, 39,199, 0, 24,
|
/* 0x0210 */ 2, 1,128, 36,130,136, 0, 8,175,211, 0, 24, 39,199, 0, 24,
|
||||||
@@ -75,95 +75,85 @@ unsigned char stub_mips_r3000_linux_elf_entry[2056] = {
|
|||||||
/* 0x0230 */ 175,188, 0, 0,147,161, 0, 0,143,163, 0, 36, 16, 32, 0, 3,
|
/* 0x0230 */ 175,188, 0, 0,147,161, 0, 0,143,163, 0, 36, 16, 32, 0, 3,
|
||||||
/* 0x0240 */ 143,161, 0, 28,175,163, 0, 24,175,161, 0, 16, 2, 96, 48, 33,
|
/* 0x0240 */ 143,161, 0, 28,175,163, 0, 24,175,161, 0, 16, 2, 96, 48, 33,
|
||||||
/* 0x0250 */ 3,160, 40, 33, 2,224, 32, 33, 36, 2, 15,164, 0, 0, 0, 12,
|
/* 0x0250 */ 3,160, 40, 33, 2,224, 32, 33, 36, 2, 15,164, 0, 0, 0, 12,
|
||||||
/* 0x0260 */ 3,192,232, 33, 39,189,255,232,175,160, 0, 20,175,183, 0, 16,
|
/* 0x0260 */ 20,224,255,226, 3,192,232, 33, 39,189,255,232,175,160, 0, 20,
|
||||||
/* 0x0270 */ 36, 7, 0, 1, 36, 6, 0, 5,142,133, 0, 0, 0, 0, 32, 33,
|
/* 0x0270 */ 175,183, 0, 16, 36, 7, 0, 1, 36, 6, 0, 5,142,133, 0, 0,
|
||||||
/* 0x0280 */ 36, 2, 15,250, 0, 0, 0, 12, 39,189, 0, 24,175,162, 0, 24,
|
/* 0x0280 */ 0, 0, 32, 33, 36, 2, 15,250, 0, 0, 0, 12, 20,224,255,215,
|
||||||
/* 0x0290 */ 36, 95, 0, 8, 2,224, 32, 33, 36, 2, 15,166, 0, 0, 0, 12,
|
/* 0x0290 */ 39,189, 0, 24,175,162, 0, 24, 36, 95, 0, 8, 2,224, 32, 33,
|
||||||
/* 0x02a0 */ 3,224, 0, 8, 2,176,128, 33, 36, 2, 17, 2, 0, 0, 0, 12,
|
/* 0x02a0 */ 36, 2, 15,166, 0, 0, 0, 12, 3,224, 0, 8, 2,176,128, 33,
|
||||||
/* 0x02b0 */ 3,224, 0, 8, 0, 0, 0, 0, 36, 2, 15,253, 0, 0, 0, 12,
|
/* 0x02b0 */ 140,131, 0, 0, 36,132, 0, 4, 20, 96,255,253, 0,128,176, 33,
|
||||||
/* 0x02c0 */ 3,224, 0, 8, 0, 0, 0, 0,140,131, 0, 0, 36,132, 0, 4,
|
/* 0x02c0 */ 3,224, 0, 8, 36, 8, 0, 6, 4, 17,255,249, 39,164, 0, 4,
|
||||||
/* 0x02d0 */ 20, 96,255,253, 0,128,176, 33, 3,224, 0, 8, 36, 8, 0, 6,
|
/* 0x02d0 */ 4, 17,255,247, 2,192, 32, 33,140,131, 0, 0, 36,132, 0, 8,
|
||||||
/* 0x02e0 */ 4, 17,255,249, 39,164, 0, 4, 4, 17,255,247, 2,192, 32, 33,
|
/* 0x02e0 */ 16,104, 0, 3,140,130,255,252, 20, 96,255,251, 36, 2, 16, 0,
|
||||||
/* 0x02f0 */ 140,131, 0, 0, 36,132, 0, 8, 16,104, 0, 3,140,130,255,252,
|
/* 0x02f0 */ 0, 0, 0, 0, 0, 2,224, 34, 4, 17,255,171, 39,244, 0, 4,
|
||||||
/* 0x0300 */ 20, 96,255,251, 36, 2, 16, 0, 0, 0, 0, 0, 0, 2,224, 34,
|
/* 0x0300 */ 0, 0, 0, 0, 0, 46,115,121,109,116, 97, 98, 0, 46,115,116,
|
||||||
/* 0x0310 */ 4, 17,255,171, 39,244, 0, 4, 0, 0, 0, 0, 0, 46,115,121,
|
/* 0x0310 */ 114,116, 97, 98, 0, 46,115,104,115,116,114,116, 97, 98, 0, 46,
|
||||||
/* 0x0320 */ 109,116, 97, 98, 0, 46,115,116,114,116, 97, 98, 0, 46,115,104,
|
/* 0x0320 */ 114,101,108, 69, 76, 70, 77, 65, 73, 78, 88, 0, 46,114,101,108,
|
||||||
/* 0x0330 */ 115,116,114,116, 97, 98, 0, 46,114,101,108, 69, 76, 70, 77, 65,
|
/* 0x0330 */ 69, 76, 70, 77, 65, 73, 78, 90, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0340 */ 73, 78, 88, 0, 46,114,101,108, 69, 76, 70, 77, 65, 73, 78, 90,
|
/* 0x0340 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0350 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0350 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0360 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0360 */ 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 6,
|
||||||
/* 0x0370 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31,
|
/* 0x0370 */ 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 1,116, 0, 0, 0, 0,
|
||||||
/* 0x0380 */ 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 52,
|
/* 0x0380 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 27,
|
||||||
/* 0x0390 */ 0, 0, 1,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
|
/* 0x0390 */ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,240,
|
||||||
/* 0x03a0 */ 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, 0,
|
/* 0x03a0 */ 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 4,
|
||||||
/* 0x03b0 */ 0, 0, 0, 0, 0, 0, 5, 64, 0, 0, 0, 8, 0, 0, 0, 6,
|
/* 0x03b0 */ 0, 0, 0, 8, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0, 6,
|
||||||
/* 0x03c0 */ 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 44,
|
/* 0x03c0 */ 0, 0, 0, 0, 0, 0, 1,168, 0, 0, 1, 92, 0, 0, 0, 0,
|
||||||
/* 0x03d0 */ 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 1,168,
|
/* 0x03d0 */ 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 40,
|
||||||
/* 0x03e0 */ 0, 0, 1,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
|
/* 0x03e0 */ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,248,
|
||||||
/* 0x03f0 */ 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 9, 0, 0, 0, 0,
|
/* 0x03f0 */ 0, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 4,
|
||||||
/* 0x0400 */ 0, 0, 0, 0, 0, 0, 5, 72, 0, 0, 0, 16, 0, 0, 0, 6,
|
/* 0x0400 */ 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, 0,
|
||||||
/* 0x0410 */ 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 17,
|
/* 0x0410 */ 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 53, 0, 0, 0, 0,
|
||||||
/* 0x0420 */ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 28,
|
/* 0x0420 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,
|
||||||
/* 0x0430 */ 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
|
/* 0x0430 */ 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,124,
|
||||||
/* 0x0440 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0,
|
/* 0x0440 */ 0, 0, 0, 80, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 4,
|
||||||
/* 0x0450 */ 0, 0, 0, 0, 0, 0, 4,148, 0, 0, 0,112, 0, 0, 0, 7,
|
/* 0x0450 */ 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 0,
|
||||||
/* 0x0460 */ 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 9,
|
/* 0x0460 */ 0, 0, 0, 0, 0, 0, 4,204, 0, 0, 0, 34, 0, 0, 0, 0,
|
||||||
/* 0x0470 */ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4,
|
/* 0x0470 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0480 */ 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
|
/* 0x0480 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
|
||||||
/* 0x0490 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0490 */ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 10,
|
||||||
/* 0x04a0 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x04a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0, 19,
|
||||||
/* 0x04b0 */ 3, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x04b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 1, 0, 0, 0, 26,
|
||||||
/* 0x04c0 */ 3, 0, 0, 3, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x04c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 69, 76, 70,
|
||||||
/* 0x04d0 */ 17, 0, 0, 1, 0, 0, 0, 26, 0, 0, 1, 0, 0, 0, 0, 0,
|
/* 0x04d0 */ 77, 65, 73, 78, 88, 0, 69, 76, 70, 77, 65, 73, 78, 90, 0, 95,
|
||||||
/* 0x04e0 */ 17, 0, 0, 3, 0, 0, 0, 39, 0, 0, 1, 16, 0, 0, 0, 0,
|
/* 0x04e0 */ 115,116, 97,114,116, 0, 79, 95, 66, 73, 78, 70, 79, 0, 0, 0,
|
||||||
/* 0x04f0 */ 17, 0, 0, 3, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x04f0 */ 0, 0, 0, 0, 0, 0, 2, 10, 0, 0, 0,128, 0, 0, 1, 10,
|
||||||
/* 0x0500 */ 16, 0, 0, 0, 0, 69, 76, 70, 77, 65, 73, 78, 88, 0, 69, 76,
|
/* 0x0500 */ 0, 0, 1, 88, 0, 0, 4, 2,102,105,108,101, 32,102,111,114,
|
||||||
/* 0x0510 */ 70, 77, 65, 73, 78, 90, 0, 95,115,116, 97,114,116, 0,109,101,
|
/* 0x0510 */ 109, 97,116, 32,101,108,102, 51, 50, 45, 98,105,103,109,105,112,
|
||||||
/* 0x0520 */ 109,102,100, 95, 99,114,101, 97,116,101, 0,102,116,114,117,110,
|
/* 0x0520 */ 115, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120,
|
||||||
/* 0x0530 */ 99, 97,116,101, 0, 79, 95, 66, 73, 78, 70, 79, 0, 0, 0, 0,
|
/* 0x0530 */ 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,
|
||||||
/* 0x0540 */ 0, 0, 0, 0, 0, 0, 2, 10, 0, 0, 0,128, 0, 0, 1, 10,
|
/* 0x0540 */ 105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32,
|
||||||
/* 0x0550 */ 0, 0, 1,112, 0, 0, 6, 2,102,105,108,101, 32,102,111,114,
|
/* 0x0550 */ 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,
|
||||||
/* 0x0560 */ 109, 97,116, 32,101,108,102, 51, 50, 45, 98,105,103,109,105,112,
|
/* 0x0560 */ 101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,
|
||||||
/* 0x0570 */ 115, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120,
|
/* 0x0570 */ 103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32,
|
||||||
/* 0x0580 */ 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,
|
/* 0x0580 */ 32, 32, 32, 32, 32, 48, 49, 55, 52, 32, 32, 48, 32, 32, 48, 32,
|
||||||
/* 0x0590 */ 105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32,
|
/* 0x0590 */ 32, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84,
|
||||||
/* 0x05a0 */ 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,
|
/* 0x05a0 */ 69, 78, 84, 83, 10, 32, 32, 49, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||||
/* 0x05b0 */ 101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,
|
/* 0x05b0 */ 90, 32, 32, 32, 32, 32, 32, 48, 49, 53, 99, 32, 32, 48, 32, 32,
|
||||||
/* 0x05c0 */ 103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32,
|
/* 0x05c0 */ 48, 32, 32, 48, 49, 97, 56, 32, 32, 50, 42, 42, 50, 32, 32, 67,
|
||||||
/* 0x05d0 */ 32, 32, 32, 32, 32, 48, 49, 55, 52, 32, 32, 48, 32, 32, 48, 32,
|
/* 0x05d0 */ 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84,
|
||||||
/* 0x05e0 */ 32, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84,
|
/* 0x05e0 */ 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
|
||||||
/* 0x05f0 */ 69, 78, 84, 83, 10, 32, 32, 49, 32, 69, 76, 70, 77, 65, 73, 78,
|
/* 0x05f0 */ 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32,
|
||||||
/* 0x0600 */ 90, 32, 32, 32, 32, 32, 32, 48, 49, 55, 52, 32, 32, 48, 32, 32,
|
/* 0x0600 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48,
|
||||||
/* 0x0610 */ 48, 32, 32, 48, 49, 97, 56, 32, 32, 50, 42, 42, 50, 32, 32, 67,
|
/* 0x0610 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77,
|
||||||
/* 0x0620 */ 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84,
|
/* 0x0620 */ 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
|
||||||
/* 0x0630 */ 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
|
/* 0x0630 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 79,
|
||||||
/* 0x0640 */ 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32,
|
/* 0x0640 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 95,115,116, 97,
|
||||||
/* 0x0650 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48,
|
/* 0x0650 */ 114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32,
|
||||||
/* 0x0660 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77,
|
/* 0x0660 */ 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, 95, 66, 73,
|
||||||
/* 0x0670 */ 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
|
/* 0x0670 */ 78, 70, 79, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
|
||||||
/* 0x0680 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 79,
|
/* 0x0680 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70,
|
||||||
/* 0x0690 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 95,115,116, 97,
|
/* 0x0690 */ 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
|
||||||
/* 0x06a0 */ 114,116, 10, 48, 48, 48, 48, 48, 49, 48, 48, 32,103, 32, 32, 32,
|
/* 0x06a0 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x06b0 */ 32, 32, 79, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32,109,
|
/* 0x06b0 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48,
|
||||||
/* 0x06c0 */ 101,109,102,100, 95, 99,114,101, 97,116,101, 10, 48, 48, 48, 48,
|
/* 0x06c0 */ 48, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32,
|
||||||
/* 0x06d0 */ 48, 49, 49, 48, 32,103, 32, 32, 32, 32, 32, 79, 32, 69, 76, 70,
|
/* 0x06d0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 10, 82, 69,
|
||||||
/* 0x06e0 */ 77, 65, 73, 78, 90, 32, 48, 32,102,116,114,117,110, 99, 97,116,
|
/* 0x06e0 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
|
||||||
/* 0x06f0 */ 101, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32,
|
/* 0x06f0 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58,
|
||||||
/* 0x0700 */ 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, 95, 66, 73, 78,
|
/* 0x0700 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32,
|
||||||
/* 0x0710 */ 70, 79, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82,
|
/* 0x0710 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85,
|
||||||
/* 0x0720 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77,
|
/* 0x0720 */ 69, 10, 48, 48, 48, 48, 48, 48, 56, 48, 32, 82, 95, 77, 73, 80,
|
||||||
/* 0x0730 */ 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32,
|
/* 0x0730 */ 83, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70,
|
||||||
/* 0x0740 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x0740 */ 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 49, 53, 56, 32, 82,
|
||||||
/* 0x0750 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0750 */ 95, 77, 73, 80, 83, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x0760 */ 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, 32,
|
/* 0x0760 */ 32, 79, 95, 66, 73, 78, 70, 79, 10
|
||||||
/* 0x0770 */ 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 10, 82, 69, 76,
|
|
||||||
/* 0x0780 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32,
|
|
||||||
/* 0x0790 */ 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10,
|
|
||||||
/* 0x07a0 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
|
|
||||||
/* 0x07b0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
|
|
||||||
/* 0x07c0 */ 10, 48, 48, 48, 48, 48, 48, 56, 48, 32, 82, 95, 77, 73, 80, 83,
|
|
||||||
/* 0x07d0 */ 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77,
|
|
||||||
/* 0x07e0 */ 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 49, 55, 48, 32, 82, 95,
|
|
||||||
/* 0x07f0 */ 77, 73, 80, 83, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
|
||||||
/* 0x0800 */ 79, 95, 66, 73, 78, 70, 79, 10
|
|
||||||
};
|
};
|
||||||
|
|||||||
Generated
+1183
-1170
File diff suppressed because it is too large
Load Diff
Generated
+93
-103
@@ -1,5 +1,5 @@
|
|||||||
/* mipsel.r3000-linux.elf-entry.h
|
/* mipsel.r3000-linux.elf-entry.h
|
||||||
created from mipsel.r3000-linux.elf-entry.bin, 2019 (0x7e3) bytes
|
created from mipsel.r3000-linux.elf-entry.bin, 1860 (0x744) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -32,15 +32,15 @@
|
|||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
|
||||||
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_SIZE 2019
|
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_SIZE 1860
|
||||||
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_ADLER32 0xfb988e20
|
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_ADLER32 0x26f5775c
|
||||||
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_CRC32 0xe437900d
|
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_CRC32 0x15b536db
|
||||||
|
|
||||||
unsigned char stub_mipsel_r3000_linux_elf_entry[2019] = {
|
unsigned char stub_mipsel_r3000_linux_elf_entry[1860] = {
|
||||||
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0010 */ 1, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0010 */ 1, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0020 */ 44, 3, 0, 0, 1, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
|
/* 0x0020 */ 20, 3, 0, 0, 1, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
|
||||||
/* 0x0030 */ 8, 0, 5, 0, 77, 0, 17, 4, 0, 0,254, 39,252,255,189, 39,
|
/* 0x0030 */ 8, 0, 5, 0, 71, 0, 17, 4, 0, 0,254, 39,252,255,189, 39,
|
||||||
/* 0x0040 */ 0, 0,191,175, 32, 40,164, 0, 0, 0,230,172, 0,128, 13, 60,
|
/* 0x0040 */ 0, 0,191,175, 32, 40,164, 0, 0, 0,230,172, 0,128, 13, 60,
|
||||||
/* 0x0050 */ 33, 72,160, 1, 1, 0, 11, 36, 56, 0, 17, 4, 1, 0, 15, 36,
|
/* 0x0050 */ 33, 72,160, 1, 1, 0, 11, 36, 56, 0, 17, 4, 1, 0, 15, 36,
|
||||||
/* 0x0060 */ 5, 0,192, 17, 0, 0,142,144, 1, 0,132, 36, 1, 0,198, 36,
|
/* 0x0060 */ 5, 0,192, 17, 0, 0,142,144, 1, 0,132, 36, 1, 0,198, 36,
|
||||||
@@ -61,107 +61,97 @@ unsigned char stub_mipsel_r3000_linux_elf_entry[2019] = {
|
|||||||
/* 0x0150 */ 35,192,133, 0, 0, 0,191,143, 0, 0,184,175, 33, 32, 96, 0,
|
/* 0x0150 */ 35,192,133, 0, 0, 0,191,143, 0, 0,184,175, 33, 32, 96, 0,
|
||||||
/* 0x0160 */ 35, 40,195, 0, 0, 0,229,172, 3, 0, 6, 36, 51, 16, 2, 36,
|
/* 0x0160 */ 35, 40,195, 0, 0, 0,229,172, 3, 0, 6, 36, 51, 16, 2, 36,
|
||||||
/* 0x0170 */ 12, 0, 0, 0, 0, 0,162,143, 8, 0,224, 3, 4, 0,189, 39,
|
/* 0x0170 */ 12, 0, 0, 0, 0, 0,162,143, 8, 0,224, 3, 4, 0,189, 39,
|
||||||
/* 0x0180 */ 2, 0, 4, 36,164, 15, 2, 36, 12, 0, 0, 0,127, 0, 4, 36,
|
/* 0x0180 */ 224,255,189, 39, 16, 0,188,175,244,255,209,143,244,255,213, 39,
|
||||||
/* 0x0190 */ 161, 15, 2, 36, 12, 0, 0, 0,224,255,189, 39, 16, 0,188,175,
|
/* 0x0190 */ 34,168,177, 2, 16, 0, 5, 36, 2, 0, 17, 4, 33, 32,224, 3,
|
||||||
/* 0x01a0 */ 244,255,209,143,244,255,213, 39, 34,168,177, 2, 2, 0, 17, 4,
|
/* 0x01a0 */ 117,112,120, 0, 2, 17, 2, 36, 12, 0, 0, 0, 6, 0,224, 16,
|
||||||
/* 0x01b0 */ 33, 32,224, 3,117,112,120, 0, 33, 40, 0, 0, 2, 17, 2, 36,
|
/* 0x01b0 */ 33,184, 64, 0, 3, 0,160, 16,234,255, 69, 36,246,255,160, 16,
|
||||||
/* 0x01c0 */ 12, 0, 0, 0, 33,184, 64, 0, 0, 0,147,142, 33,240,160, 3,
|
/* 0x01c0 */ 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,147,142, 33,240,160, 3,
|
||||||
/* 0x01d0 */ 28, 0,179,175,248,255, 1, 36, 35,232,179, 3, 36,232,161, 3,
|
/* 0x01d0 */ 28, 0,179,175,248,255, 1, 36, 35,232,179, 3, 36,232,161, 3,
|
||||||
/* 0x01e0 */ 252,255,144,142,252,255, 1, 36, 36,128, 1, 2, 8, 0,136,130,
|
/* 0x01e0 */ 252,255,144,142,252,255, 1, 36, 36,128, 1, 2, 8, 0,136,130,
|
||||||
/* 0x01f0 */ 24, 0,211,175, 24, 0,199, 39, 33, 48,160, 3, 4, 0,133,142,
|
/* 0x01f0 */ 24, 0,211,175, 24, 0,199, 39, 33, 48,160, 3, 4, 0,133,142,
|
||||||
/* 0x0200 */ 1, 0, 17, 4, 12, 0,132, 38, 0, 0,188,175, 0, 0,161,147,
|
/* 0x0200 */ 1, 0, 17, 4, 12, 0,132, 38, 0, 0,188,175, 0, 0,161,147,
|
||||||
/* 0x0210 */ 36, 0,163,143, 3, 0, 32, 16, 28, 0,161,143, 24, 0,163,175,
|
/* 0x0210 */ 36, 0,163,143, 3, 0, 32, 16, 28, 0,161,143, 24, 0,163,175,
|
||||||
/* 0x0220 */ 16, 0,161,175, 33, 48, 96, 2, 33, 40,160, 3, 33, 32,224, 2,
|
/* 0x0220 */ 16, 0,161,175, 33, 48, 96, 2, 33, 40,160, 3, 33, 32,224, 2,
|
||||||
/* 0x0230 */ 164, 15, 2, 36, 12, 0, 0, 0, 33,232,192, 3,232,255,189, 39,
|
/* 0x0230 */ 164, 15, 2, 36, 12, 0, 0, 0,226,255,224, 20, 33,232,192, 3,
|
||||||
/* 0x0240 */ 20, 0,160,175, 16, 0,183,175, 1, 0, 7, 36, 5, 0, 6, 36,
|
/* 0x0240 */ 232,255,189, 39, 20, 0,160,175, 16, 0,183,175, 1, 0, 7, 36,
|
||||||
/* 0x0250 */ 0, 0,133,142, 33, 32, 0, 0,250, 15, 2, 36, 12, 0, 0, 0,
|
/* 0x0250 */ 5, 0, 6, 36, 0, 0,133,142, 33, 32, 0, 0,250, 15, 2, 36,
|
||||||
/* 0x0260 */ 24, 0,189, 39, 24, 0,162,175, 8, 0, 95, 36, 33, 32,224, 2,
|
/* 0x0260 */ 12, 0, 0, 0,215,255,224, 20, 24, 0,189, 39, 24, 0,162,175,
|
||||||
/* 0x0270 */ 166, 15, 2, 36, 12, 0, 0, 0, 8, 0,224, 3, 33,128,176, 2,
|
/* 0x0270 */ 8, 0, 95, 36, 33, 32,224, 2,166, 15, 2, 36, 12, 0, 0, 0,
|
||||||
/* 0x0280 */ 2, 17, 2, 36, 12, 0, 0, 0, 8, 0,224, 3, 0, 0, 0, 0,
|
/* 0x0280 */ 8, 0,224, 3, 33,128,176, 2, 0, 0,131,140, 4, 0,132, 36,
|
||||||
/* 0x0290 */ 253, 15, 2, 36, 12, 0, 0, 0, 8, 0,224, 3, 0, 0, 0, 0,
|
/* 0x0290 */ 253,255, 96, 20, 33,176,128, 0, 8, 0,224, 3, 6, 0, 8, 36,
|
||||||
/* 0x02a0 */ 0, 0,131,140, 4, 0,132, 36,253,255, 96, 20, 33,176,128, 0,
|
/* 0x02a0 */ 249,255, 17, 4, 4, 0,164, 39,247,255, 17, 4, 33, 32,192, 2,
|
||||||
/* 0x02b0 */ 8, 0,224, 3, 6, 0, 8, 36,249,255, 17, 4, 4, 0,164, 39,
|
/* 0x02b0 */ 0, 0,131,140, 8, 0,132, 36, 3, 0,104, 16,252,255,130,140,
|
||||||
/* 0x02c0 */ 247,255, 17, 4, 33, 32,192, 2, 0, 0,131,140, 8, 0,132, 36,
|
/* 0x02c0 */ 251,255, 96, 20, 0, 16, 2, 36, 0, 0, 0, 0, 34,224, 2, 0,
|
||||||
/* 0x02d0 */ 3, 0,104, 16,252,255,130,140,251,255, 96, 20, 0, 16, 2, 36,
|
/* 0x02d0 */ 171,255, 17, 4, 4, 0,244, 39, 0, 0, 0, 0, 0, 46,115,121,
|
||||||
/* 0x02e0 */ 0, 0, 0, 0, 34,224, 2, 0,171,255, 17, 4, 4, 0,244, 39,
|
/* 0x02e0 */ 109,116, 97, 98, 0, 46,115,116,114,116, 97, 98, 0, 46,115,104,
|
||||||
/* 0x02f0 */ 0, 0, 0, 0, 0, 46,115,121,109,116, 97, 98, 0, 46,115,116,
|
/* 0x02f0 */ 115,116,114,116, 97, 98, 0, 46,114,101,108, 69, 76, 70, 77, 65,
|
||||||
/* 0x0300 */ 114,116, 97, 98, 0, 46,115,104,115,116,114,116, 97, 98, 0, 46,
|
/* 0x0300 */ 73, 78, 88, 0, 46,114,101,108, 69, 76, 70, 77, 65, 73, 78, 90,
|
||||||
/* 0x0310 */ 114,101,108, 69, 76, 70, 77, 65, 73, 78, 88, 0, 46,114,101,108,
|
/* 0x0310 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0320 */ 69, 76, 70, 77, 65, 73, 78, 90, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0320 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0330 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0330 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
|
||||||
/* 0x0340 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0340 */ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
|
||||||
/* 0x0350 */ 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
|
/* 0x0350 */ 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x0360 */ 0, 0, 0, 0, 52, 0, 0, 0, 76, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x0360 */ 0, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0370 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0,
|
/* 0x0370 */ 0, 0, 0, 0,200, 4, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0,
|
||||||
/* 0x0380 */ 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 5, 0, 0,
|
/* 0x0380 */ 1, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 44, 0, 0, 0,
|
||||||
/* 0x0390 */ 8, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0,
|
/* 0x0390 */ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,128, 1, 0, 0,
|
||||||
/* 0x03a0 */ 8, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
|
/* 0x03a0 */ 92, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
|
||||||
/* 0x03b0 */ 0, 0, 0, 0,128, 1, 0, 0,116, 1, 0, 0, 0, 0, 0, 0,
|
/* 0x03b0 */ 0, 0, 0, 0, 40, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x03c0 */ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0,
|
/* 0x03c0 */ 0, 0, 0, 0,208, 4, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0,
|
||||||
/* 0x03d0 */ 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 5, 0, 0,
|
/* 0x03d0 */ 3, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0,
|
||||||
/* 0x03e0 */ 16, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0,
|
/* 0x03e0 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 2, 0, 0,
|
||||||
/* 0x03f0 */ 8, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x03f0 */ 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x0400 */ 0, 0, 0, 0,244, 2, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0400 */ 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0410 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x0410 */ 0, 0, 0, 0, 84, 4, 0, 0, 80, 0, 0, 0, 7, 0, 0, 0,
|
||||||
/* 0x0420 */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 4, 0, 0,
|
/* 0x0420 */ 3, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0,
|
||||||
/* 0x0430 */ 112, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0,
|
/* 0x0430 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164, 4, 0, 0,
|
||||||
/* 0x0440 */ 16, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0440 */ 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||||
/* 0x0450 */ 0, 0, 0, 0,220, 4, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0450 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0460 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0460 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0470 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
/* 0x0470 */ 3, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0480 */ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 10, 0, 0, 0,
|
/* 0x0480 */ 3, 0, 3, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0490 */ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 19, 0, 0, 0,
|
/* 0x0490 */ 17, 0, 1, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x04a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 1, 0, 26, 0, 0, 0,
|
/* 0x04a0 */ 16, 0, 0, 0, 0, 69, 76, 70, 77, 65, 73, 78, 88, 0, 69, 76,
|
||||||
/* 0x04b0 */ 0, 1, 0, 0, 0, 0, 0, 0, 17, 0, 3, 0, 39, 0, 0, 0,
|
/* 0x04b0 */ 70, 77, 65, 73, 78, 90, 0, 95,115,116, 97,114,116, 0, 79, 95,
|
||||||
/* 0x04c0 */ 16, 1, 0, 0, 0, 0, 0, 0, 17, 0, 3, 0, 49, 0, 0, 0,
|
/* 0x04c0 */ 66, 73, 78, 70, 79, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0,
|
||||||
/* 0x04d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 69, 76, 70,
|
/* 0x04d0 */ 128, 0, 0, 0, 10, 1, 0, 0, 88, 1, 0, 0, 2, 4, 0, 0,
|
||||||
/* 0x04e0 */ 77, 65, 73, 78, 88, 0, 69, 76, 70, 77, 65, 73, 78, 90, 0, 95,
|
/* 0x04e0 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51,
|
||||||
/* 0x04f0 */ 115,116, 97,114,116, 0,109,101,109,102,100, 95, 99,114,101, 97,
|
/* 0x04f0 */ 50, 45,108,105,116,116,108,101,109,105,112,115, 10, 10, 83,101,
|
||||||
/* 0x0500 */ 116,101, 0,102,116,114,117,110, 99, 97,116,101, 0, 79, 95, 66,
|
/* 0x0500 */ 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101,
|
||||||
/* 0x0510 */ 73, 78, 70, 79, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0,
|
/* 0x0510 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32,
|
||||||
/* 0x0520 */ 128, 0, 0, 0, 10, 1, 0, 0,112, 1, 0, 0, 2, 6, 0, 0,
|
/* 0x0520 */ 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77,
|
||||||
/* 0x0530 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51,
|
/* 0x0530 */ 65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102,
|
||||||
/* 0x0540 */ 50, 45,108,105,116,116,108,101,109,105,112,115, 10, 10, 83,101,
|
/* 0x0540 */ 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32,
|
||||||
/* 0x0550 */ 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101,
|
/* 0x0550 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x0560 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32,
|
/* 0x0560 */ 48, 49, 52, 99, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 52, 32,
|
||||||
/* 0x0570 */ 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77,
|
/* 0x0570 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10,
|
||||||
/* 0x0580 */ 65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102,
|
/* 0x0580 */ 32, 32, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32,
|
||||||
/* 0x0590 */ 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32,
|
/* 0x0590 */ 32, 32, 48, 49, 53, 99, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49,
|
||||||
/* 0x05a0 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32,
|
/* 0x05a0 */ 56, 48, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78,
|
||||||
/* 0x05b0 */ 48, 49, 52, 99, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 52, 32,
|
/* 0x05b0 */ 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58,
|
||||||
/* 0x05c0 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10,
|
/* 0x05c0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
|
||||||
/* 0x05d0 */ 32, 32, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32,
|
/* 0x05d0 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70,
|
||||||
/* 0x05e0 */ 32, 32, 48, 49, 55, 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49,
|
/* 0x05e0 */ 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
|
||||||
/* 0x05f0 */ 56, 48, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78,
|
/* 0x05f0 */ 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32,
|
||||||
/* 0x0600 */ 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58,
|
/* 0x0600 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48,
|
||||||
/* 0x0610 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
|
/* 0x0610 */ 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 79, 32, 69, 76, 70, 77,
|
||||||
/* 0x0620 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70,
|
/* 0x0620 */ 65, 73, 78, 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48, 48,
|
||||||
/* 0x0630 */ 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
|
/* 0x0630 */ 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42,
|
||||||
/* 0x0640 */ 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32,
|
/* 0x0640 */ 85, 78, 68, 42, 32, 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10,
|
||||||
/* 0x0650 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48,
|
/* 0x0650 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82,
|
||||||
/* 0x0660 */ 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 79, 32, 69, 76, 70, 77,
|
/* 0x0660 */ 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88,
|
||||||
/* 0x0670 */ 65, 73, 78, 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48, 48,
|
/* 0x0670 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69,
|
||||||
/* 0x0680 */ 48, 48, 48, 49, 48, 48, 32,103, 32, 32, 32, 32, 32, 79, 32, 69,
|
/* 0x0680 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65,
|
||||||
/* 0x0690 */ 76, 70, 77, 65, 73, 78, 90, 32, 48, 32,109,101,109,102,100, 95,
|
/* 0x0690 */ 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 77,
|
||||||
/* 0x06a0 */ 99,114,101, 97,116,101, 10, 48, 48, 48, 48, 48, 49, 49, 48, 32,
|
/* 0x06a0 */ 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 69,
|
||||||
/* 0x06b0 */ 103, 32, 32, 32, 32, 32, 79, 32, 69, 76, 70, 77, 65, 73, 78, 90,
|
/* 0x06b0 */ 76, 70, 77, 65, 73, 78, 90, 10, 10, 82, 69, 76, 79, 67, 65, 84,
|
||||||
/* 0x06c0 */ 32, 48, 32,102,116,114,117,110, 99, 97,116,101, 10, 48, 48, 48,
|
/* 0x06c0 */ 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32,
|
||||||
/* 0x06d0 */ 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85,
|
/* 0x06d0 */ 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83,
|
||||||
/* 0x06e0 */ 78, 68, 42, 32, 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, 82,
|
/* 0x06e0 */ 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x06f0 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68,
|
/* 0x06f0 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48,
|
||||||
/* 0x0700 */ 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93,
|
/* 0x0700 */ 48, 48, 48, 56, 48, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49,
|
||||||
/* 0x0710 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32,
|
/* 0x0710 */ 54, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88,
|
||||||
/* 0x0720 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76,
|
/* 0x0720 */ 10, 48, 48, 48, 48, 48, 49, 53, 56, 32, 82, 95, 77, 73, 80, 83,
|
||||||
/* 0x0730 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 77, 73,
|
/* 0x0730 */ 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 79, 95, 66, 73,
|
||||||
/* 0x0740 */ 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 69, 76,
|
/* 0x0740 */ 78, 70, 79, 10
|
||||||
/* 0x0750 */ 70, 77, 65, 73, 78, 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
|
|
||||||
/* 0x0760 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
|
|
||||||
/* 0x0770 */ 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69,
|
|
||||||
/* 0x0780 */ 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32,
|
|
||||||
/* 0x0790 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48,
|
|
||||||
/* 0x07a0 */ 48, 48, 56, 48, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, 54,
|
|
||||||
/* 0x07b0 */ 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10,
|
|
||||||
/* 0x07c0 */ 48, 48, 48, 48, 48, 49, 55, 48, 32, 82, 95, 77, 73, 80, 83, 95,
|
|
||||||
/* 0x07d0 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 79, 95, 66, 73, 78,
|
|
||||||
/* 0x07e0 */ 70, 79, 10
|
|
||||||
};
|
};
|
||||||
|
|||||||
Generated
+1175
-1162
File diff suppressed because it is too large
Load Diff
Generated
+1258
-1238
File diff suppressed because it is too large
Load Diff
Generated
+1289
-1275
File diff suppressed because it is too large
Load Diff
Generated
+1292
-1279
File diff suppressed because it is too large
Load Diff
@@ -157,7 +157,7 @@ def do_file(fn):
|
|||||||
# ELF64 LE
|
# ELF64 LE
|
||||||
eh, idata = idata[:64], idata[64:]
|
eh, idata = idata[:64], idata[64:]
|
||||||
e_shnum, e_shstrndx = struct.unpack("<HH", eh[60:64])
|
e_shnum, e_shstrndx = struct.unpack("<HH", eh[60:64])
|
||||||
assert e_shstrndx + 3 == e_shnum
|
assert e_shstrndx + 3 >= e_shnum
|
||||||
elif idata[4:7] == "\x02\x02\x01":
|
elif idata[4:7] == "\x02\x02\x01":
|
||||||
# ELF64 BE
|
# ELF64 BE
|
||||||
eh, idata = idata[:64], idata[64:]
|
eh, idata = idata[:64], idata[64:]
|
||||||
@@ -178,6 +178,8 @@ def do_file(fn):
|
|||||||
assert pos >= len(odata), ("unexpected strip_with_dump", pos, len(odata))
|
assert pos >= len(odata), ("unexpected strip_with_dump", pos, len(odata))
|
||||||
elif re.search(r"^arm64-", os.path.basename(fn)):
|
elif re.search(r"^arm64-", os.path.basename(fn)):
|
||||||
assert pos >= len(odata), ("unexpected strip_with_dump", pos, len(odata))
|
assert pos >= len(odata), ("unexpected strip_with_dump", pos, len(odata))
|
||||||
|
elif re.search(r"^riscv", os.path.basename(fn)):
|
||||||
|
assert pos >= len(odata), ("unexpected strip_with_dump", pos, len(odata))
|
||||||
else:
|
else:
|
||||||
assert pos == len(odata), ("unexpected strip_with_dump", pos, len(odata))
|
assert pos == len(odata), ("unexpected strip_with_dump", pos, len(odata))
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -94,7 +94,212 @@ _start: .globl _start
|
|||||||
push %rsp; pop %rdi // argv
|
push %rsp; pop %rdi // argv
|
||||||
push %rcx // argc
|
push %rcx // argc
|
||||||
push %rdx // param for atexit()
|
push %rdx // param for atexit()
|
||||||
|
lea cancel_dummy(%rip),%r15
|
||||||
|
|
||||||
|
section ELFSIGSEGV
|
||||||
|
// install SIGSEGV handler for debugging
|
||||||
|
SIGSEGV= 11
|
||||||
|
SA_SIGINFO= 4 // /usr/include/bits/sigaction.h
|
||||||
|
SA_RESTORER= 0x04000000
|
||||||
|
__NR_rt_sigaction= 13 // /usr/include/asm/unistd_64.h
|
||||||
|
push %rdi // save reg
|
||||||
|
sub %edx,%edx // arg3= 0 ==> do not save old sigaction
|
||||||
|
push %rdx // .sa_mask: 64 bits (8 bytes) of flags for signals
|
||||||
|
lea __restore_rt(%rip),%rax; push %rax // .sa_restorer
|
||||||
|
push $SA_RESTORER | SA_SIGINFO // .sa_flags
|
||||||
|
lea sigsegv_sigaction(%rip),%rax; push %rax // .sa_sigaction
|
||||||
|
lea cancel_sigsegv(%rip),%r15
|
||||||
|
push %rsp; pop %rsi // arg2= &new struct sigaction
|
||||||
|
push $SIGSEGV; pop %rdi // arg1= signum
|
||||||
|
push $8; pop %r10 // sys4= sizeof(__sigset_t) ==> 64 bits
|
||||||
|
push $__NR_rt_sigaction; pop %rax; syscall
|
||||||
|
add $(3 + 1) * NBPW,%rsp // toss struct sigaction
|
||||||
|
pop %rdi // restore reg
|
||||||
|
|
||||||
|
#if 0 //{ TEST ONLY
|
||||||
|
movl $0x18181818,%r8d
|
||||||
|
movl $0x19191919,%r9d
|
||||||
|
movl $0x1a1a1a1a,%r10d
|
||||||
|
movl $0x1b1b1b1b,%r11d
|
||||||
|
movl $0x1c1c1c1c,%r12d
|
||||||
|
movl $0x1d1d1d1d,%r13d
|
||||||
|
movl $0x1e1e1e1e,%r14d
|
||||||
|
movl $0x1f1f1f1f,%r15d
|
||||||
|
movl $0xaaaaaaaa,%eax
|
||||||
|
movl $0xbbbbbbbb,%ebx
|
||||||
|
movl $0xcccccccc,%ecx
|
||||||
|
movl $0xdddddddd,%edx
|
||||||
|
movl $0x55555555,%ebp
|
||||||
|
movl $0x66666666,%esi
|
||||||
|
movl $0x77777777,%edi
|
||||||
|
movl (%rdx),%edx // force SIGSEGV
|
||||||
|
#endif // TEST_ONLY}
|
||||||
|
|
||||||
|
jmp end_sigsegv
|
||||||
|
|
||||||
|
__NR_rt_sigreturn= 15
|
||||||
|
__restore_rt:
|
||||||
|
endbr64
|
||||||
|
mov $__NR_rt_sigreturn,%eax
|
||||||
|
syscall
|
||||||
|
|
||||||
|
sigsegv_sigaction:
|
||||||
|
endbr64
|
||||||
|
push %rdx // save &ucontext_t
|
||||||
|
|
||||||
|
// print /proc/self/maps of child (same as parent: the beauty of fork())
|
||||||
|
mov $end_announce_sigaction - announce_sigaction,%edx // arg3 len
|
||||||
|
lea announce_sigaction(%rip),%rsi // arg2 buf
|
||||||
|
push $2; pop %rdi // arg1 fd_stderr
|
||||||
|
push $__NR_write; pop %rax; syscall // ignore error on write()
|
||||||
|
|
||||||
|
xor %esi,%esi // arg2 O_RDONLY
|
||||||
|
lea proc_self_maps(%rip),%arg1
|
||||||
|
push $__NR_open; pop %rax; syscall
|
||||||
|
mov %rax,%r12 // fd_maps
|
||||||
|
BUFLEN= 4096
|
||||||
|
mov $BUFLEN,%ebx; sub %rbx,%rsp // allocate buffer
|
||||||
|
loop_maps:
|
||||||
|
mov %ebx,%edx // arg3 buflen
|
||||||
|
push %rsp; pop %rsi // arg2 buffer
|
||||||
|
mov %r12,%rdi // arg1 fd_maps
|
||||||
|
xor %eax,%eax; syscall // __NR_read
|
||||||
|
test %eax,%eax; jle done_maps // ignore error on read()
|
||||||
|
mov %eax,%edx // arg3 buflen
|
||||||
|
push %rsp; pop %rsi // arg2 buf
|
||||||
|
push $2; pop %rdi // arg1 fd_stderr
|
||||||
|
push $__NR_write; pop %rax; syscall // ignore error on write()
|
||||||
|
jmp loop_maps
|
||||||
|
done_maps:
|
||||||
|
mov %r12,%rdi //arg1 fd_maps
|
||||||
|
add %rbx,%rsp // discard buffer
|
||||||
|
push $__NR_close; pop %rax; syscall
|
||||||
|
// end printing of /proc/self/maps
|
||||||
|
|
||||||
|
pop %rdx // restore &ucontext_t
|
||||||
|
__NR_fork= 57
|
||||||
|
push $__NR_fork; pop %rax; call sys_check
|
||||||
|
test %eax,%eax; je child
|
||||||
|
parent:
|
||||||
|
jmp parent // spin; paused by gdb
|
||||||
|
|
||||||
|
proc_self_cmdline:
|
||||||
|
.asciz "/proc/self/cmdline"
|
||||||
|
announce_sigaction:
|
||||||
|
.asciz "\n\nSIGSEGV address space:\n"
|
||||||
|
end_announce_sigaction:
|
||||||
|
|
||||||
|
proc_self_maps:
|
||||||
|
.asciz "/proc/self/maps"
|
||||||
|
minus_q:
|
||||||
|
.asciz "-q"
|
||||||
|
path_gdb:
|
||||||
|
.asciz "/usr/bin/gdb"
|
||||||
|
commands_gdb:
|
||||||
|
.ascii "set prompt\n" // null string prompt
|
||||||
|
.ascii "info inferiors\n"
|
||||||
|
// ucontext_t, mcontext_t, gregset_t, gret_t, REG_xxx: <sys/ucontext.h>
|
||||||
|
// stack_t <bits/types/stack_t.h>
|
||||||
|
.ascii "print \"r8 - r15\"\n"
|
||||||
|
.ascii "x/8xg $rdx + 5*8\n"
|
||||||
|
|
||||||
|
.ascii "print \"rdi, rsi, rbp, rbx\"\n"
|
||||||
|
.ascii "x/4xg\n"
|
||||||
|
.ascii "print \"rdx, rax, rcx, rsp\"\n"
|
||||||
|
.ascii "x/4xg\n"
|
||||||
|
.ascii "print \"rip, efl\"\n"
|
||||||
|
.ascii "x/2xg\n"
|
||||||
|
|
||||||
|
.ascii "set $pc = *(long *)($rdx + 168)\n"
|
||||||
|
.ascii "print \"faulting instr\"\n"
|
||||||
|
.ascii "x/i $pc\n"
|
||||||
|
.ascii "print \"fault context\"\n"
|
||||||
|
.ascii "x/16i $pc - 0x20\n"
|
||||||
|
|
||||||
|
.ascii "print \"user stack\"\n"
|
||||||
|
.ascii "x/64xg *(long *)($rdx + 5*8 + 15*8)\n"
|
||||||
|
|
||||||
|
.ascii "kill\n"
|
||||||
|
.ascii "quit 1"
|
||||||
|
.byte 0
|
||||||
|
commands_gdb_end:
|
||||||
|
|
||||||
|
child:
|
||||||
|
PATH_MAX= 4096
|
||||||
|
sub $PATH_MAX,%rsp
|
||||||
|
lea proc_self_cmdline(%rip),%arg1
|
||||||
|
O_RDONLY= 0
|
||||||
|
push $O_RDONLY; pop %arg2
|
||||||
|
push $__NR_open; pop %rax; call sys_check
|
||||||
|
push %rax; pop %arg1 // fd
|
||||||
|
push %rsp; pop %arg2 // buffer
|
||||||
|
push $PATH_MAX; pop %arg3
|
||||||
|
__NR_read= 0
|
||||||
|
push $__NR_read; pop %rax; call sys_check
|
||||||
|
push $__NR_close; pop %rax; call sys_check
|
||||||
|
|
||||||
|
__NR_getppid= 110
|
||||||
|
push $__NR_getppid; pop %rax; syscall
|
||||||
|
push %rax; pop %rsi
|
||||||
|
xor %eax,%eax; push %rax; push %rax // decimal(pid) fits in 16 bytes
|
||||||
|
push %rsp; pop %rdi; call unsimal
|
||||||
|
// argv
|
||||||
|
push %rsp; pop %rsi // fence post: &pid.unsimal
|
||||||
|
push $0 // argv[4]
|
||||||
|
push %rsi // arg3 pid
|
||||||
|
add $16,%rsi; push %rsi // arg2 exename
|
||||||
|
lea minus_q(%rip),%rax; push %rax // arg1 "-q"
|
||||||
|
add $(path_gdb - minus_q),%rax; push %rax // arg[0] "/usr/bin/gdb"
|
||||||
|
|
||||||
|
#if 1 //{ pipe input to gdb
|
||||||
|
xor %edi,%edi; push $__NR_close; pop %rax; syscall
|
||||||
|
push %rax; push %rsp; pop %rdi // &fd_pipe[2]; 4 bytes each
|
||||||
|
__NR_pipe= 22
|
||||||
|
push $__NR_pipe; pop %rax; call sys_check
|
||||||
|
pop %rdi; shr $32,%rdi // arg1 write side of pipe
|
||||||
|
|
||||||
|
push $commands_gdb_end - commands_gdb; pop %arg3
|
||||||
|
lea commands_gdb(%rip),%arg2
|
||||||
|
__NR_write= 1
|
||||||
|
push $__NR_write; pop %rax; call sys_check
|
||||||
|
push $__NR_close; pop %rax; syscall
|
||||||
|
#endif //}
|
||||||
|
|
||||||
|
push $0; pop %arg3 // _environ BUG
|
||||||
|
push %rsp; pop %arg2 // argv
|
||||||
|
movq (%arg2),%arg1 // "/usr/bin/gdb"
|
||||||
|
__NR_execve= 59
|
||||||
|
push $__NR_execve; pop %rax; call sys_check
|
||||||
|
hlt
|
||||||
|
|
||||||
|
unsimal: // (dst, value)
|
||||||
|
push $10; pop %rcx // radix
|
||||||
|
mov %esi,%eax // value
|
||||||
|
call 0f
|
||||||
|
movb $0,(%rdi) // terminator
|
||||||
|
ret
|
||||||
|
0:
|
||||||
|
xor %edx,%edx; div %ecx; push %rdx // eax= quo(%edx:%eax / %ecx); edx= rem
|
||||||
|
// 'div' undefines all flags!
|
||||||
|
test %eax,%eax; je 1f; call 0b
|
||||||
|
1:
|
||||||
|
pop %rax; add $'0',%eax
|
||||||
|
stosb
|
||||||
|
ret
|
||||||
|
|
||||||
|
// Uninstall SIGSEGV handler
|
||||||
|
cancel_sigsegv:
|
||||||
|
endbr64
|
||||||
|
push $8; pop %sys4 // sys_arg4 minimal byte count
|
||||||
|
xor %edx,%edx // no old
|
||||||
|
xor %esi,%esi // no new
|
||||||
|
push $SIGSEGV; pop %rdi
|
||||||
|
push $__NR_rt_sigaction; pop %eax; syscall
|
||||||
|
ret
|
||||||
|
|
||||||
|
end_sigsegv:
|
||||||
|
|
||||||
|
section ELFMAINX2
|
||||||
#define old_sp %rbp
|
#define old_sp %rbp
|
||||||
F_FRAME= 7*NBPW
|
F_FRAME= 7*NBPW
|
||||||
F_ENTR= 6*NBPW; F_PMASK= F_ENTR
|
F_ENTR= 6*NBPW; F_PMASK= F_ENTR
|
||||||
@@ -105,8 +310,9 @@ F_ELFA= 2*NBPW
|
|||||||
F_LENX= 1*NBPW
|
F_LENX= 1*NBPW
|
||||||
F_ADRX= 0*NBPW
|
F_ADRX= 0*NBPW
|
||||||
|
|
||||||
D_FOLD= 1*NBPW // .data space at start of unfold
|
D_FOLD= 2*NBPW // .data space at start of unfold
|
||||||
D_PMASK= 0*NBPW
|
D_PMASK= 0*NBPW
|
||||||
|
D_XSIGSEGV= 1*NBPW
|
||||||
|
|
||||||
// find auxv
|
// find auxv
|
||||||
xor %eax,%eax // 0
|
xor %eax,%eax // 0
|
||||||
@@ -264,6 +470,7 @@ eof_n2b:
|
|||||||
|
|
||||||
// Write de-compressed 'fold' to file
|
// Write de-compressed 'fold' to file
|
||||||
mov F_PMASK(old_sp),%rax; mov %rax,/*D_PMASK*/(%rsp) // propagate PAGE_MASK
|
mov F_PMASK(old_sp),%rax; mov %rax,/*D_PMASK*/(%rsp) // propagate PAGE_MASK
|
||||||
|
mov %r15,D_XSIGSEGV(%rsp) // propagate cancel_sigsegv
|
||||||
mov F_LENU(old_sp),%arg3 // LENU
|
mov F_LENU(old_sp),%arg3 // LENU
|
||||||
sub $INSURANCE,%arg3 // memcheck limit
|
sub $INSURANCE,%arg3 // memcheck limit
|
||||||
push %rsp; pop %arg2 // buffer
|
push %rsp; pop %arg2 // buffer
|
||||||
@@ -295,6 +502,10 @@ eof_n2b:
|
|||||||
add $D_FOLD,%rax // beyond .data
|
add $D_FOLD,%rax // beyond .data
|
||||||
jmp *%rax // goto unfolded stub
|
jmp *%rax // goto unfolded stub
|
||||||
|
|
||||||
|
cancel_dummy:
|
||||||
|
endbr64
|
||||||
|
ret
|
||||||
|
|
||||||
sys_check:
|
sys_check:
|
||||||
push %rax // save __NR_ for debug
|
push %rax // save __NR_ for debug
|
||||||
syscall
|
syscall
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ is_ptinterp= (1<<0)
|
|||||||
|
|
||||||
.balign 8
|
.balign 8
|
||||||
PAGE_MASK: .quad -1<<12 // default
|
PAGE_MASK: .quad -1<<12 // default
|
||||||
|
cancel_sigsegv: .quad 0 // subroutine that cancels sigaction(SIGSEGV,)
|
||||||
|
|
||||||
// IN: [ADRX,+LENX): compressed data; [ADRU,+LENU): expanded fold (w/ upx_main2)
|
// IN: [ADRX,+LENX): compressed data; [ADRU,+LENU): expanded fold (w/ upx_main2)
|
||||||
// %rsp= %rbp= &F_ADRX; %r13= O_BINFO | is_ptinterp | unmap_all_pages
|
// %rsp= %rbp= &F_ADRX; %r13= O_BINFO | is_ptinterp | unmap_all_pages
|
||||||
@@ -174,9 +175,12 @@ no_env_pse:
|
|||||||
*/
|
*/
|
||||||
// rsp/ {OVERHEAD},ADRU,LENU,rdx,%entry, argc,argv,0,envp,0,auxv,0,strings
|
// rsp/ {OVERHEAD},ADRU,LENU,rdx,%entry, argc,argv,0,envp,0,auxv,0,strings
|
||||||
addq $OVERHEAD,%rsp # Elf64_Ehdr temporary space
|
addq $OVERHEAD,%rsp # Elf64_Ehdr temporary space
|
||||||
mov %ebp,%ebx # fd
|
#define r_fd ebx
|
||||||
|
mov %ebp,%r_fd
|
||||||
movq %rax,3*NBPW(%rsp) # entry
|
movq %rax,3*NBPW(%rsp) # entry
|
||||||
|
|
||||||
|
call *cancel_sigsegv(%rip)
|
||||||
|
|
||||||
sz_Ehdr= 8*NBPW
|
sz_Ehdr= 8*NBPW
|
||||||
e_type= 16
|
e_type= 16
|
||||||
ET_EXEC= 2
|
ET_EXEC= 2
|
||||||
@@ -190,22 +194,27 @@ p_memsz= 5*NBPW
|
|||||||
movq %r13,%arg1; call munmap # discard C_TEXT compressed data
|
movq %r13,%arg1; call munmap # discard C_TEXT compressed data
|
||||||
|
|
||||||
// Map 1 page of /proc/self/exe so that the symlink does not disappear.
|
// Map 1 page of /proc/self/exe so that the symlink does not disappear.
|
||||||
test %ebx,%ebx; js no_pse_map
|
test %r_fd,%r_fd; js no_pse_map
|
||||||
subq %arg6,%arg6 # 0 offset
|
subq %arg6,%arg6 # 0 offset
|
||||||
mov %ebx,%arg5l # fd
|
mov %r_fd,%arg5l # fd
|
||||||
push $MAP_PRIVATE; pop %arg4
|
push $MAP_PRIVATE; pop %arg4
|
||||||
push $PROT_READ; pop %arg3
|
push $PROT_READ; pop %arg3
|
||||||
mov $1<<12,%arg2l
|
mov $1<<12,%arg2l
|
||||||
subl %arg1l,%arg1l # 0
|
subl %arg1l,%arg1l # 0
|
||||||
call mmap
|
call mmap
|
||||||
|
|
||||||
mov %ebx,%edi # fd
|
mov %r_fd,%edi # fd
|
||||||
call close
|
call close
|
||||||
|
|
||||||
|
.macro NOTRACK
|
||||||
|
.byte 0x3e
|
||||||
|
.endm
|
||||||
|
|
||||||
no_pse_map:
|
no_pse_map:
|
||||||
pop %arg1 # ADRU: unfolded upx_main2 etc.
|
pop %arg1 # ADRU: unfolded upx_main2 etc.
|
||||||
pop %arg2 # LENU
|
pop %arg2 # LENU
|
||||||
push $__NR_munmap; pop %rax
|
push $__NR_munmap; pop %rax
|
||||||
/*notrack*/ jmp *(%r14) # goto: syscall; pop %rdx; ret
|
NOTRACK; jmp *(%r14) # goto: syscall; pop %rdx; ret
|
||||||
|
|
||||||
get_page_mask: .globl get_page_mask
|
get_page_mask: .globl get_page_mask
|
||||||
mov PAGE_MASK(%rip),%rax
|
mov PAGE_MASK(%rip),%rax
|
||||||
|
|||||||
@@ -77,6 +77,16 @@ extern void my_bkpt(void *, ...);
|
|||||||
/*und*/ : "x30"); \
|
/*und*/ : "x30"); \
|
||||||
str; \
|
str; \
|
||||||
})
|
})
|
||||||
|
#elif defined(__riscv) //}{
|
||||||
|
#define ANDROID_FRIEND 0
|
||||||
|
#define addr_string(string) ({ \
|
||||||
|
char const *str; \
|
||||||
|
asm("jal 0f; .string \"" string "\"; .balign 4; 0: mv %0,ra" \
|
||||||
|
/*out*/ : "=r"(str) \
|
||||||
|
/* in*/ : \
|
||||||
|
/*und*/ : "x30"); \
|
||||||
|
str; \
|
||||||
|
})
|
||||||
#else //}{
|
#else //}{
|
||||||
#error;
|
#error;
|
||||||
#endif //}
|
#endif //}
|
||||||
@@ -279,6 +289,36 @@ make_hatch(
|
|||||||
DPRINTF("hatch=%%p\\n", hatch);
|
DPRINTF("hatch=%%p\\n", hatch);
|
||||||
return hatch;
|
return hatch;
|
||||||
}
|
}
|
||||||
|
#elif defined(__riscv) //{
|
||||||
|
static void *
|
||||||
|
make_hatch(
|
||||||
|
ElfW(Phdr) const *const phdr,
|
||||||
|
char *next_unc,
|
||||||
|
unsigned const frag_mask
|
||||||
|
)
|
||||||
|
{
|
||||||
|
unsigned long a = (unsigned long)next_unc;
|
||||||
|
int *hatch = (int *)((3u & -a) + a);
|
||||||
|
int code[3] = {
|
||||||
|
0,0,0 //NYI illegal instruction
|
||||||
|
};
|
||||||
|
DPRINTF("make_hatch %%p %%p %%x\\n", phdr, next_unc, frag_mask);
|
||||||
|
if (phdr->p_type==PT_LOAD && phdr->p_flags & PF_X) {
|
||||||
|
if (sizeof(code) <= (unsigned)(frag_mask & -(long)hatch)) {
|
||||||
|
hatch[0] = code[0];
|
||||||
|
hatch[1] = code[1];
|
||||||
|
hatch[2] = code[2];
|
||||||
|
}
|
||||||
|
else { // Does not fit at hi end of .text, so must use a new page "permanently"
|
||||||
|
int mfd = upxfd_create(addr_string("upx"), MFD_EXEC); // the directory entry
|
||||||
|
write(mfd, &code, sizeof(code));
|
||||||
|
hatch = mmap(0, sizeof(code), PROT_READ|PROT_EXEC, MAP_SHARED, mfd, 0);
|
||||||
|
close(mfd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DPRINTF("hatch=%%p\\n", hatch);
|
||||||
|
return hatch;
|
||||||
|
}
|
||||||
#elif defined(__powerpc64__) //}{
|
#elif defined(__powerpc64__) //}{
|
||||||
static void *
|
static void *
|
||||||
make_hatch(
|
make_hatch(
|
||||||
@@ -502,18 +542,14 @@ do_xmap(
|
|||||||
ElfW(Addr) reloc = 0;
|
ElfW(Addr) reloc = 0;
|
||||||
if (xi) { // compressed main program:
|
if (xi) { // compressed main program:
|
||||||
// C_BASE space reservation, C_TEXT compressed data and stub
|
// C_BASE space reservation, C_TEXT compressed data and stub
|
||||||
ElfW(Addr) ehdr0 = *p_reloc; // the 'hi' copy!
|
ElfW(Addr) ehdr0 = *p_reloc;
|
||||||
ElfW(Phdr) *phdr0 = (ElfW(Phdr) *)(1+ (ElfW(Ehdr) *)ehdr0); // cheats .e_phoff
|
ElfW(Phdr) *phdr0 = (ElfW(Phdr) *)(1+ (ElfW(Ehdr) *)ehdr0); // cheats .e_phoff
|
||||||
// Clear the 'lo' space reservation for use by PT_LOADs
|
v_brk = ehdr0 + phdr0->p_vaddr + phdr0->p_memsz;
|
||||||
ehdr0 -= phdr0[1].p_vaddr; // the 'lo' copy
|
if (ET_DYN == ehdr->e_type) {
|
||||||
if (ET_EXEC == ehdr->e_type) {
|
reloc = ehdr0 - phdr0[1].p_vaddr;
|
||||||
ehdr0 = phdr0[0].p_vaddr;
|
|
||||||
}
|
}
|
||||||
else {
|
// paranoia: prevent "hangover" from VMA for C_BASE
|
||||||
reloc = ehdr0;
|
munmap((void *)(reloc + phdr0->p_vaddr), phdr0->p_memsz);
|
||||||
}
|
|
||||||
v_brk = phdr0->p_memsz + ehdr0;
|
|
||||||
munmap((void *)ehdr0, phdr0->p_memsz);
|
|
||||||
}
|
}
|
||||||
else { // PT_INTERP
|
else { // PT_INTERP
|
||||||
DPRINTF("INTERP\\n", 0);
|
DPRINTF("INTERP\\n", 0);
|
||||||
@@ -664,7 +700,7 @@ upx_main2( // returns entry address
|
|||||||
/*arg4*/ ElfW(auxv_t) *const av
|
/*arg4*/ ElfW(auxv_t) *const av
|
||||||
#if defined(__x86_64) //{
|
#if defined(__x86_64) //{
|
||||||
/*arg5*/ , ElfW(Addr) elfaddr // In: &ElfW(Ehdr) for stub
|
/*arg5*/ , ElfW(Addr) elfaddr // In: &ElfW(Ehdr) for stub
|
||||||
#elif defined(__aarch64__) //}{
|
#elif defined(__aarch64__) || defined(__riscv) //}{
|
||||||
/*arg5*/ , ElfW(Addr) elfaddr
|
/*arg5*/ , ElfW(Addr) elfaddr
|
||||||
#elif defined(__powerpc64__) //}{
|
#elif defined(__powerpc64__) //}{
|
||||||
/*arg5*/ , ElfW(Addr) *p_reloc // In: &ElfW(Ehdr) for stub; Out: 'slide' for PT_INTERP
|
/*arg5*/ , ElfW(Addr) *p_reloc // In: &ElfW(Ehdr) for stub; Out: 'slide' for PT_INTERP
|
||||||
@@ -685,7 +721,7 @@ upx_main2( // returns entry address
|
|||||||
// ehdr = Uncompress Ehdr and Phdrs
|
// ehdr = Uncompress Ehdr and Phdrs
|
||||||
unpackExtent(&xi2, &xo); // never filtered?
|
unpackExtent(&xi2, &xo); // never filtered?
|
||||||
|
|
||||||
#if defined(__x86_64) || defined(__aarch64__) //{
|
#if defined(__x86_64) || defined(__aarch64__) || defined(__riscv) //{
|
||||||
ElfW(Addr) *const p_reloc = &elfaddr;
|
ElfW(Addr) *const p_reloc = &elfaddr;
|
||||||
#endif //}
|
#endif //}
|
||||||
ElfW(Addr) page_mask = get_page_mask(); (void)page_mask;
|
ElfW(Addr) page_mask = get_page_mask(); (void)page_mask;
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ memcpy: .globl memcpy // void *memcpy(void *dst, void const *src, size_t n)
|
|||||||
/* 64-bit mode only! */
|
/* 64-bit mode only! */
|
||||||
__NR_read= 0
|
__NR_read= 0
|
||||||
__NR_write= 1
|
__NR_write= 1
|
||||||
//__NR_open= 2
|
__NR_open= 2
|
||||||
__NR_openat= 257
|
__NR_openat= 257
|
||||||
FD_CWD= -100
|
FD_CWD= -100
|
||||||
__NR_close= 3
|
__NR_close= 3
|
||||||
@@ -190,8 +190,6 @@ exit: .globl exit
|
|||||||
push $ __NR_exit; 5: jmp 5f
|
push $ __NR_exit; 5: jmp 5f
|
||||||
ftruncate: .globl ftruncate
|
ftruncate: .globl ftruncate
|
||||||
push $__NR_ftruncate; 5: jmp 5f
|
push $__NR_ftruncate; 5: jmp 5f
|
||||||
memfd_create: .globl memfd_create
|
|
||||||
push $__NR_memfd_create; 5: jmp 5f
|
|
||||||
close: .globl close
|
close: .globl close
|
||||||
push $ __NR_close; 5: jmp 5f
|
push $ __NR_close; 5: jmp 5f
|
||||||
openat: .globl openat
|
openat: .globl openat
|
||||||
@@ -202,4 +200,21 @@ write: .globl write
|
|||||||
read: .globl read
|
read: .globl read
|
||||||
push $ __NR_read; 5: jmp sysgo
|
push $ __NR_read; 5: jmp sysgo
|
||||||
|
|
||||||
|
memfd_create: .globl memfd_create
|
||||||
|
0:
|
||||||
|
movl $__NR_memfd_create,%eax; syscall
|
||||||
|
test %eax,%eax; js 1f; ret // success
|
||||||
|
1:
|
||||||
|
test %arg2l,%arg2l; jz no_memfd // memfd_create failed twice
|
||||||
|
xor %arg2l,%arg2l; jmp 0b // try again without MFD_EXEC
|
||||||
|
no_memfd: // so try /dev/shm
|
||||||
|
O_RDWR= 2
|
||||||
|
O_DIRECTORY= 0200000 // 0x010000
|
||||||
|
O_TMPFILE= 020000000 // 0x400000
|
||||||
|
call 0f; .int 0700, O_RDWR|O_DIRECTORY|O_TMPFILE; .asciz "/dev/shm"; 0: pop %rsi
|
||||||
|
lodsl; xchg %eax,%arg3l
|
||||||
|
lodsl; push %rsi; xchg %eax,%arg2l
|
||||||
|
pop %arg1
|
||||||
|
push $__NR_open; jmp sysgo
|
||||||
|
|
||||||
// section SO_MAIN inserted here
|
// section SO_MAIN inserted here
|
||||||
|
|||||||
@@ -34,7 +34,6 @@
|
|||||||
#undef x86_64
|
#undef x86_64
|
||||||
|
|
||||||
//.altmacro // not supported by x86_64-linux-as-2.15
|
//.altmacro // not supported by x86_64-linux-as-2.15
|
||||||
.code64
|
|
||||||
|
|
||||||
.macro section name
|
.macro section name
|
||||||
.section \name
|
.section \name
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# convenience Makefile
|
||||||
|
default %:
|
||||||
|
$(MAKE) -C ../../.. $@
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
MAKEFLAGS += -rR
|
||||||
|
.SUFFIXES:
|
||||||
|
.SECONDEXPANSION:
|
||||||
|
|
||||||
|
ifndef top_srcdir
|
||||||
|
__dir_list = . .. ../.. ../../.. ../../../.. ../../../../..
|
||||||
|
__dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
|
||||||
|
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
|
||||||
|
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
|
||||||
|
endif
|
||||||
|
include $(wildcard $(top_srcdir)/Makevars-global.mk ./Makevars-local.mk)
|
||||||
|
vpath %.c $(top_srcdir)/src/stub/src/c
|
||||||
|
|
||||||
|
STUBS =
|
||||||
|
include $(top_srcdir)/src/stub/src/c/Makevars-lzma.mk
|
||||||
|
ifneq ($(UPX_LZMA_VERSION),)
|
||||||
|
STUBS += lzma_d_cf.S lzma_d_cs.S lzma_d_cn.S
|
||||||
|
endif
|
||||||
|
|
||||||
|
default.targets = all
|
||||||
|
ifeq ($(strip $(STUBS)),)
|
||||||
|
STUBS = NO_STUBS
|
||||||
|
all.targets =
|
||||||
|
endif
|
||||||
|
include $(top_srcdir)/src/stub/Makefile
|
||||||
|
|
||||||
|
|
||||||
|
# /***********************************************************************
|
||||||
|
# // method-lzma
|
||||||
|
# ************************************************************************/
|
||||||
|
|
||||||
|
lzma_d_c%.S : tc_list = method-lzma riscv64-linux.elf default
|
||||||
|
lzma_d_c%.S : tc_bfdname = elf64-riscv64
|
||||||
|
|
||||||
|
c := tc.method-lzma.gcc
|
||||||
|
$c = $(tc.riscv64-linux.elf.gcc)
|
||||||
|
$c += -Os -fomit-frame-pointer
|
||||||
|
$c += -fno-unit-at-a-time
|
||||||
|
$c += -ffunction-sections
|
||||||
|
$c += -fwrapv
|
||||||
|
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
|
||||||
|
$c += -I$(UPX_LZMADIR)
|
||||||
|
$c += -I$(top_srcdir)/src
|
||||||
|
|
||||||
|
lzma_d_c%.S : lzma_d_c.c
|
||||||
|
$(call tc,gcc) $(PP_FLAGS) -c $< -o tmp/$T.o
|
||||||
|
$(call tc,f-objstrip,tmp/$T.o)
|
||||||
|
$(call tc,objcopy) -O binary --only-section .text.LzmaDecode tmp/$T.o tmp/$T.bin
|
||||||
|
head -c-1 tmp/$T.bin > tmp/$T.out
|
||||||
|
$(call tc,objdump) -b binary -m i386:x86-64 -D tmp/$T.out | $(RTRIM) > tmp/$T.out.disasm
|
||||||
|
$(call tc,bin2h) --mode=gas tmp/$T.out $@
|
||||||
|
|
||||||
|
lzma_d_cf.% : PP_FLAGS = -DFAST
|
||||||
|
lzma_d_cs.% : PP_FLAGS = -DSMALL
|
||||||
|
lzma_d_cn.% : PP_FLAGS = -DFAST -mno-red-zone
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
/*
|
||||||
|
; macros.S --
|
||||||
|
;
|
||||||
|
; This file is part of the UPX executable compressor.
|
||||||
|
;
|
||||||
|
; Copyright (C) 1996-2025 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
; Copyright (C) 1996-2025 Laszlo Molnar
|
||||||
|
; All Rights Reserved.
|
||||||
|
;
|
||||||
|
; UPX and the UCL library are free software; you can redistribute them
|
||||||
|
; and/or modify them under the terms of the GNU General Public License as
|
||||||
|
; published by the Free Software Foundation; either version 2 of
|
||||||
|
; the License, or (at your option) any later version.
|
||||||
|
;
|
||||||
|
; This program is distributed in the hope that it will be useful,
|
||||||
|
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
; GNU General Public License for more details.
|
||||||
|
;
|
||||||
|
; You should have received a copy of the GNU General Public License
|
||||||
|
; along with this program; see the file COPYING.
|
||||||
|
; If not, write to the Free Software Foundation, Inc.,
|
||||||
|
; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
;
|
||||||
|
; Markus F.X.J. Oberhumer Laszlo Molnar
|
||||||
|
; <markus@oberhumer.com> <ezerotven+github@gmail.com>
|
||||||
|
;
|
||||||
|
*/
|
||||||
|
|
||||||
|
.macro section name
|
||||||
|
.section \name
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro syscall num
|
||||||
|
li a7,\num; ecall
|
||||||
|
.endm
|
||||||
|
|
||||||
|
NBPW= 8
|
||||||
|
|
||||||
|
.macro PUSH4 a,b,c,d
|
||||||
|
addi sp,sp,-4*NBPW
|
||||||
|
sd \a,0*NBPW(sp)
|
||||||
|
sd \b,1*NBPW(sp)
|
||||||
|
sd \c,2*NBPW(sp)
|
||||||
|
sd \d,3*NBPW(sp)
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro POP4 a,b,c,d
|
||||||
|
ld \a,0*NBPW(sp)
|
||||||
|
ld \b,1*NBPW(sp)
|
||||||
|
ld \c,2*NBPW(sp)
|
||||||
|
ld \d,3*NBPW(sp)
|
||||||
|
addi sp,sp,4*NBPW
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro PUSH3 a,b,c
|
||||||
|
addi sp,sp,-4*NBPW
|
||||||
|
sd \a,0*NBPW(sp)
|
||||||
|
sd \b,1*NBPW(sp)
|
||||||
|
sd \c,2*NBPW(sp)
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro POP3 a,b,c
|
||||||
|
ld \a,0*NBPW(sp)
|
||||||
|
ld \b,1*NBPW(sp)
|
||||||
|
ld \c,2*NBPW(sp)
|
||||||
|
addi sp,sp,4*NBPW
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro PUSH2 a,b
|
||||||
|
addi sp,sp,-2*NBPW
|
||||||
|
sd \a,0*NBPW(sp)
|
||||||
|
sd \b,1*NBPW(sp)
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro POP2 a,b,c
|
||||||
|
ld \a,0*NBPW(sp)
|
||||||
|
ld \b,1*NBPW(sp)
|
||||||
|
addi sp,sp,2*NBPW
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro PUSH1 a
|
||||||
|
addi sp,sp,-2*NBPW
|
||||||
|
sd \a,0*NBPW(sp)
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro POP1 a
|
||||||
|
ld \a,0*NBPW(sp)
|
||||||
|
addi sp,sp,2*NBPW
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro SUB2 dst,src
|
||||||
|
sub \dst,\dst,\src
|
||||||
|
.endm
|
||||||
|
|
||||||
|
// vi:ts=8:et:nowrap
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
/* riscv64 nrv2b_d.S -- RISCV64 decompressor for NRV2B
|
||||||
|
|
||||||
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
|
Copyright (C) 1996-2025 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
Copyright (C) 1996-2025 Laszlo Molnar
|
||||||
|
Copyright (C) 2000-2025 John F. Reiser
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
and/or modify them under the terms of the GNU General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of
|
||||||
|
the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; see the file COPYING.
|
||||||
|
If not, write to the Free Software Foundation, Inc.,
|
||||||
|
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
Markus F.X.J. Oberhumer Laszlo Molnar
|
||||||
|
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
||||||
|
|
||||||
|
John F. Reiser
|
||||||
|
<jreiser@users.sourceforge.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
.text
|
||||||
|
#ifndef NO_METHOD_CHECK
|
||||||
|
cmpb $ M_NRV2B_LE32,methb; jne not_n2b
|
||||||
|
#endif
|
||||||
|
li bits,1<<31 // empty; force refill
|
||||||
|
li len,0
|
||||||
|
li disp,-1 // initial displacement
|
||||||
|
j top_n2b
|
||||||
|
|
||||||
|
#undef EOF
|
||||||
|
#define EOF eof_n2b
|
||||||
|
|
||||||
|
lit_n2b:
|
||||||
|
addi src,src,1; sb bytpre,(dst)
|
||||||
|
addi dst,dst,1
|
||||||
|
top_n2b:
|
||||||
|
lbu bytpre,(src) # prefetch: literal, or bottom 8 bits of offset
|
||||||
|
jnextb1yp lit_n2b
|
||||||
|
li off,1
|
||||||
|
offmore_n2b:
|
||||||
|
getnextbp(off)
|
||||||
|
jnextb0np offmore_n2b
|
||||||
|
|
||||||
|
addi off,off,-3; blt off,zero,len_n2b # use previous offset
|
||||||
|
slli off,off,8
|
||||||
|
or off,off,bytpre; addi src,src,1
|
||||||
|
xori disp,off,~0; beq disp,zero,EOF
|
||||||
|
len_n2b:
|
||||||
|
li off,1
|
||||||
|
getnextb(len); getnextb(len) # two bits; cc set on result
|
||||||
|
bne len,zero,gotlen_n2b # raw 1,2,3 ==> 2,3,4
|
||||||
|
mv len,off # len= 1, the msb
|
||||||
|
addi off,off,3-1 # raw 2.. ==> 5..
|
||||||
|
lenmore_n2b:
|
||||||
|
getnextb(len)
|
||||||
|
jnextb0n lenmore_n2b
|
||||||
|
gotlen_n2b:
|
||||||
|
li t0,0x300; lui t0,0xfffff # -0xd00
|
||||||
|
sltu retbit,t0,disp
|
||||||
|
add len,len,off; add len,len,retbit # len += off + (disp < -0xd00)
|
||||||
|
//NYI call copy@plt; .extern copy
|
||||||
|
bot_n2b: # In: 0==len
|
||||||
|
j top_n2b
|
||||||
|
|
||||||
|
#ifndef NO_METHOD_CHECK //{
|
||||||
|
not_n2b:
|
||||||
|
push %rdi; pop %rsi # src = arg1
|
||||||
|
#endif //}
|
||||||
|
|
||||||
|
# fall into daisy chain
|
||||||
|
/*
|
||||||
|
vi:ts=8:et:nowrap
|
||||||
|
*/
|
||||||
|
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
#if 0 //{ pre-defined
|
||||||
|
#define ra x1 /* return address */
|
||||||
|
#define sp x2 /* stack ptr */
|
||||||
|
#define gp x3 /* global ptr */
|
||||||
|
#define tp x4 /* thread ptr */
|
||||||
|
#endif //}
|
||||||
|
#define t0 x5
|
||||||
|
#define t1 x6
|
||||||
|
#define t2 x7
|
||||||
|
|
||||||
|
#define s0 x8
|
||||||
|
#define s1 x9
|
||||||
|
|
||||||
|
#define rv a0 /* return value */
|
||||||
|
|
||||||
|
/* NOTE: THE FIRST ARGUMENT IS arg1, NOT arg0. */
|
||||||
|
#define arg1 x10 /* same as rv */
|
||||||
|
#define arg2 x11
|
||||||
|
#define arg3 x12
|
||||||
|
#define arg4 x13
|
||||||
|
#define arg5 x14
|
||||||
|
#define arg6 x15
|
||||||
@@ -66,6 +66,8 @@ MAP_ANONYMOUS= 0x20
|
|||||||
MAP_FIXED= 0x10
|
MAP_FIXED= 0x10
|
||||||
MAP_PRIVATE= 0x02
|
MAP_PRIVATE= 0x02
|
||||||
|
|
||||||
|
FD_CWD= -1 // AT_CWD= -100
|
||||||
|
FD_stdin= 0
|
||||||
FD_stderr= 2
|
FD_stderr= 2
|
||||||
O_RDONLY= 0
|
O_RDONLY= 0
|
||||||
|
|
||||||
@@ -81,13 +83,15 @@ PAGE_SIZE = ( 1<<PAGE_SHIFT)
|
|||||||
|
|
||||||
__NR_SYSCALL_BASE = 0
|
__NR_SYSCALL_BASE = 0
|
||||||
|
|
||||||
__NR_exit= 1 + __NR_SYSCALL_BASE
|
|
||||||
__NR_open= 5 + __NR_SYSCALL_BASE
|
|
||||||
__NR_close= 6 + __NR_SYSCALL_BASE
|
__NR_close= 6 + __NR_SYSCALL_BASE
|
||||||
|
__NR_execve= 11 + __NR_SYSCALL_BASE
|
||||||
|
__NR_exit= 1 + __NR_SYSCALL_BASE
|
||||||
__NR_fdatasync=148 + __NR_SYSCALL_BASE
|
__NR_fdatasync=148 + __NR_SYSCALL_BASE
|
||||||
|
__NR_fork= 2 + __NR_SYSCALL_BASE
|
||||||
__NR_fsync= 118 + __NR_SYSCALL_BASE
|
__NR_fsync= 118 + __NR_SYSCALL_BASE
|
||||||
__NR_ftruncate=93 + __NR_SYSCALL_BASE
|
__NR_ftruncate=93 + __NR_SYSCALL_BASE
|
||||||
__NR_getpid= 20 + __NR_SYSCALL_BASE
|
__NR_getpid= 20 + __NR_SYSCALL_BASE
|
||||||
|
__NR_getppid= 64 + __NR_SYSCALL_BASE
|
||||||
__NR_lseek= 19 + __NR_SYSCALL_BASE
|
__NR_lseek= 19 + __NR_SYSCALL_BASE
|
||||||
__NR_memfd_create= 385 + __NR_SYSCALL_BASE
|
__NR_memfd_create= 385 + __NR_SYSCALL_BASE
|
||||||
__NR_mkdir= 39 + __NR_SYSCALL_BASE
|
__NR_mkdir= 39 + __NR_SYSCALL_BASE
|
||||||
@@ -95,12 +99,16 @@ __NR_mmap2= 192 + __NR_SYSCALL_BASE
|
|||||||
__NR_mprotect=125 + __NR_SYSCALL_BASE
|
__NR_mprotect=125 + __NR_SYSCALL_BASE
|
||||||
__NR_msync= 144 + __NR_SYSCALL_BASE // 0x90
|
__NR_msync= 144 + __NR_SYSCALL_BASE // 0x90
|
||||||
__NR_open= 5 + __NR_SYSCALL_BASE
|
__NR_open= 5 + __NR_SYSCALL_BASE
|
||||||
|
__NR_openat= 322 + __NR_SYSCALL_BASE
|
||||||
|
__NR_pipe= 42 + __NR_SYSCALL_BASE
|
||||||
__NR_read= 3 + __NR_SYSCALL_BASE
|
__NR_read= 3 + __NR_SYSCALL_BASE
|
||||||
|
__NR_sigaction=67 + __NR_SYSCALL_BASE
|
||||||
__NR_stat= 106 + __NR_SYSCALL_BASE
|
__NR_stat= 106 + __NR_SYSCALL_BASE
|
||||||
__NR_uname= 122 + __NR_SYSCALL_BASE
|
__NR_uname= 122 + __NR_SYSCALL_BASE
|
||||||
__NR_unlink= 10 + __NR_SYSCALL_BASE
|
__NR_unlink= 10 + __NR_SYSCALL_BASE
|
||||||
__NR_write= 4 + __NR_SYSCALL_BASE
|
__NR_write= 4 + __NR_SYSCALL_BASE
|
||||||
|
|
||||||
|
|
||||||
__ARM_NR_BASE= 0xf0000 + __NR_SYSCALL_BASE
|
__ARM_NR_BASE= 0xf0000 + __NR_SYSCALL_BASE
|
||||||
__ARM_NR_cacheflush= 2 + __ARM_NR_BASE
|
__ARM_NR_cacheflush= 2 + __ARM_NR_BASE
|
||||||
|
|
||||||
@@ -118,21 +126,24 @@ __ARM_NR_cacheflush= 2 + __ARM_NR_BASE
|
|||||||
|
|
||||||
section ELFMAINX
|
section ELFMAINX
|
||||||
F_ADRX= 0*NBPW
|
F_ADRX= 0*NBPW
|
||||||
|
F_obinfo= F_ADRX // unmap_all_pages in lo bits
|
||||||
F_LENX= 1*NBPW
|
F_LENX= 1*NBPW
|
||||||
F_ELFA= 2*NBPW
|
F_ELFA= 2*NBPW
|
||||||
F_ADRU= 3*NBPW
|
F_SEGV= 3*NBPW
|
||||||
F_LENU= 4*NBPW
|
F_ADRU= 4*NBPW
|
||||||
F_R0= 5*NBPW
|
F_LENU= 5*NBPW
|
||||||
F_R1= 6*NBPW
|
F_R0= 6*NBPW
|
||||||
F_ENTR= 7*NBPW
|
F_R1= 7*NBPW
|
||||||
F_QFLG= F_ENTR
|
F_ENTR= 8*NBPW
|
||||||
F_SIZE= 8*NBPW
|
F_qflg= F_ENTR // QNX mmap flags
|
||||||
|
F_SIZE= 9*NBPW
|
||||||
|
|
||||||
// (read-only) .data space at start of unfolded code
|
// (read-only) .data space at start of unfolded code
|
||||||
D_PMASK= 0*NBPW
|
D_PMASK= 0*NBPW
|
||||||
D_FNAME= 1*NBPW
|
D_QFLG= 1*NBPW
|
||||||
D_QFLG= 2*NBPW
|
D_FNAME= 2*NBPW
|
||||||
D_FOLD= 3*NBPW // start of code
|
D_XSEGV= 3*NBPW
|
||||||
|
D_FOLD= 4*NBPW // start of code
|
||||||
|
|
||||||
r_pack2 .req r9
|
r_pack2 .req r9
|
||||||
r_pmask .req r8
|
r_pmask .req r8
|
||||||
@@ -142,9 +153,58 @@ sz_pack2= . - NBPW
|
|||||||
mflg:
|
mflg:
|
||||||
.word MFLG // MAP_{PRIVATE|ANONYMOUS} // QNX vs linux
|
.word MFLG // MAP_{PRIVATE|ANONYMOUS} // QNX vs linux
|
||||||
_start: .globl _start
|
_start: .globl _start
|
||||||
//// nop; bkpt // DEBUG
|
//// nop; bkpt // DEBUG
|
||||||
stmdb sp!,{r0,r1,lr} // ABI crt0 -static may have data here
|
ldr r_pack2,sz_pack2
|
||||||
sub sp,sp,#-3*NBPW + F_SIZE // F_R0,F_R1 separately
|
ldr r2,mflg
|
||||||
|
adr r3,sz_pack2
|
||||||
|
sub r3,r3,r_pack2 @ elfaddr= &Elf_Ehdr of this program
|
||||||
|
call 0f; cancel_dummy: ret; 0:
|
||||||
|
stmdb sp!,{r0,r1,r2} // F_R0,F_R1,%F_ENTR(F_QFLG)
|
||||||
|
sub sp,sp,#2*NBPW // space for F_ADRU, F_LENU
|
||||||
|
stmdb sp!,{r0,r1,r3,lr} // %F_ADRX,%F_LENX,F_ELFA,F_SEGV
|
||||||
|
|
||||||
|
section ELFSIGSEGV
|
||||||
|
// install SIGSEGV handler for debugging
|
||||||
|
SIGSEGV= 11
|
||||||
|
SA_SIGINFO= 4 // /usr/include/bits/sigaction.h
|
||||||
|
SA_RESTORER= 0x04000000
|
||||||
|
sa_sigaction = 0 * NBPW
|
||||||
|
sa_flags = 1 * NBPW
|
||||||
|
sa_mask = 3 * NBPW // location of mask
|
||||||
|
sa_restorer = 4 * NBPW
|
||||||
|
sa_frame = 5 * NBPW
|
||||||
|
call adr_sigaction; mov r0,lr // .sa_sigaction
|
||||||
|
mov r1,#SA_SIGINFO // .sa_flags
|
||||||
|
mov r2,#0 // .sa_mask
|
||||||
|
mov r3,#0
|
||||||
|
mov r4,#0 // .sa_restorer
|
||||||
|
stmdb sp!,{r0,r1,r2,r3,r4}
|
||||||
|
|
||||||
|
mov arg4,#8 // 8 bytes ==> 64 bits
|
||||||
|
mov arg3,#0 // do not save old_sigaction
|
||||||
|
mov arg2,sp // &new_sigaction
|
||||||
|
mov arg1,#SIGSEGV
|
||||||
|
do_sys7t __NR_sigaction
|
||||||
|
add sp,sp,#sa_frame
|
||||||
|
|
||||||
|
call 0f
|
||||||
|
cancel_sigsegv:
|
||||||
|
mov r3,#8 // space for 8 bytes of signal flags
|
||||||
|
mov r2,#0 // no old
|
||||||
|
mov r1,#0 // no new
|
||||||
|
mov r0,#SIGSEGV
|
||||||
|
do_sys7t __NR_sigaction
|
||||||
|
ret
|
||||||
|
0:
|
||||||
|
str lr,[sp,#F_SEGV]
|
||||||
|
|
||||||
|
#if 0 //{ TEST ONLY
|
||||||
|
mov r0,#0xc0;mov r1,#0xc1;mov r2,#0xc2;mov r3,#0xc3;mov r4,#0xc4;mov r5,#0xc5;mov r6,#0xc6;mov r7,#0xc7
|
||||||
|
mov r8,#0xc8;mov r9,#0xc9;mov r10,#0xca;mov r11,#0xcb;mov r12,#0xcc
|
||||||
|
ldr r0,[r0] // cause SIGSEGV
|
||||||
|
#endif //}
|
||||||
|
|
||||||
|
section ELFMAINX2
|
||||||
add arg1,sp,#NBPW + F_SIZE // avoid feint of 0==argc
|
add arg1,sp,#NBPW + F_SIZE // avoid feint of 0==argc
|
||||||
call zfind // out: r0= &envp
|
call zfind // out: r0= &envp
|
||||||
call zfind
|
call zfind
|
||||||
@@ -159,14 +219,6 @@ _start: .globl _start
|
|||||||
mvn r2,r2; add r2,r2,#1 // neg
|
mvn r2,r2; add r2,r2,#1 // neg
|
||||||
mov r_pmask,r2
|
mov r_pmask,r2
|
||||||
|
|
||||||
ldr r1,sz_pack2
|
|
||||||
adr r0,sz_pack2
|
|
||||||
sub r0,r0,r1 @ elfaddr= &Elf_Ehdr of this program
|
|
||||||
str r0,[sp,#F_ELFA]
|
|
||||||
mov r_pack2,r1 @ save sz_pack2
|
|
||||||
|
|
||||||
ldr r0,mflg
|
|
||||||
str r0,[sp,#F_QFLG]
|
|
||||||
|
|
||||||
call get_data // cpr0 can be too far away
|
call get_data // cpr0 can be too far away
|
||||||
old_sp .req r11
|
old_sp .req r11
|
||||||
@@ -216,10 +268,11 @@ mfd .req old_sp
|
|||||||
mov mfd,r0
|
mov mfd,r0
|
||||||
//}{ r0 free, r1 busy
|
//}{ r0 free, r1 busy
|
||||||
add r4,r_unc,# 2*NBPW + D_FOLD
|
add r4,r_unc,# 2*NBPW + D_FOLD
|
||||||
|
ldr r5,[sp,#F_SEGV]
|
||||||
and r4,r4, #-2*NBPW // align displacement
|
and r4,r4, #-2*NBPW // align displacement
|
||||||
ldr r3,[sp,#F_QFLG]
|
ldr r3,[sp,#F_qflg]
|
||||||
mov r2,r_pmask
|
mov r2,r_pmask
|
||||||
stmia r1,{r2,r3,r4} // D_PMASK, D_QFLG, D_FNAME
|
stmia r1,{r2,r3,r4,r5} // F_ADRU: D_PMASK, D_QFLG, D_FNAME, D_SEGV
|
||||||
.unreq r_pmask
|
.unreq r_pmask
|
||||||
|
|
||||||
// De-compress folded stage of stub
|
// De-compress folded stage of stub
|
||||||
@@ -237,6 +290,13 @@ mfd .req old_sp
|
|||||||
call f_expand
|
call f_expand
|
||||||
add sp,sp,#2*NBPW @ P_02, P_01 remove 5th param
|
add sp,sp,#2*NBPW @ P_02, P_01 remove 5th param
|
||||||
|
|
||||||
|
|
||||||
|
// faster than clearcache + msync; also avoids msync() bug
|
||||||
|
ldr arg3,[sp,#F_LENU]
|
||||||
|
ldr arg2,[sp,#F_ADRU]
|
||||||
|
mov arg1,mfd
|
||||||
|
do_sys7t __NR_write
|
||||||
|
|
||||||
mov r5,#0
|
mov r5,#0
|
||||||
mov r4,mfd
|
mov r4,mfd
|
||||||
mov r3,#MAP_PRIVATE|MAP_FIXED
|
mov r3,#MAP_PRIVATE|MAP_FIXED
|
||||||
@@ -254,13 +314,182 @@ mfd .req old_sp
|
|||||||
add r4,r0,r1 @ ADRX= &b_info | unmap_all_pages
|
add r4,r0,r1 @ ADRX= &b_info | unmap_all_pages
|
||||||
bic r1,r1,#unmap_all_pages
|
bic r1,r1,#unmap_all_pages
|
||||||
sub r5,r_pack2,r1 @ LENX= sz_pack2 - O_BINFO
|
sub r5,r_pack2,r1 @ LENX= sz_pack2 - O_BINFO
|
||||||
stmia sp,{r4,r5} // F_ADRX, F_LENX
|
stmia sp,{r4,r5} // sp: F_ADRX, F_LENX; (sp no change)
|
||||||
#if DEBUG /*{*/
|
#if DEBUG /*{*/
|
||||||
stmdb sp!,{TRACE_REGS}; mov r0,#3; bl trace
|
stmdb sp!,{TRACE_REGS}; mov r0,#3; bl trace
|
||||||
#endif /*}*/
|
#endif /*}*/
|
||||||
ldr r12,[sp,#F_ADRU]
|
ldr r12,[sp,#F_ADRU]
|
||||||
add pc,r12,#D_FOLD // goto unfolded code
|
add pc,r12,#D_FOLD // goto unfolded code
|
||||||
|
|
||||||
|
proc_self_cmdline:
|
||||||
|
.asciz "/proc/self/cmdline"
|
||||||
|
.balign 4
|
||||||
|
|
||||||
|
#define r_fd r6
|
||||||
|
PATH_MAX= 4096
|
||||||
|
child:
|
||||||
|
#if 1 //{ pipe input to gdb
|
||||||
|
mov arg1,#FD_stdin; do_sys7t __NR_close
|
||||||
|
mov arg2,#0; mov arg1,#0; stmdb sp!,{arg1,arg2} // space for result of pipe()
|
||||||
|
mov arg1,sp
|
||||||
|
do_sys7t __NR_pipe // read side will be 0 (FD_stdin)
|
||||||
|
ldmia sp!,{r0,r_fd} // write side of pipe
|
||||||
|
|
||||||
|
mov arg3,#commands_gdb_end - commands_gdb // len
|
||||||
|
adr arg2,commands_gdb
|
||||||
|
mov arg1,r_fd
|
||||||
|
do_sys7t __NR_write
|
||||||
|
mov arg1,r_fd; do_sys7t __NR_close
|
||||||
|
#endif //}
|
||||||
|
|
||||||
|
sub sp,sp,#PATH_MAX
|
||||||
|
mov arg3,#O_RDONLY
|
||||||
|
adr arg2,proc_self_cmdline
|
||||||
|
mov arg1,#FD_CWD
|
||||||
|
do_sys7t2 __NR_openat; mov r_fd,r0 // fd
|
||||||
|
mov arg2,sp // buffer
|
||||||
|
mov arg3,#PATH_MAX
|
||||||
|
do_sys7t __NR_read
|
||||||
|
mov arg1,r_fd; do_sys7t __NR_close
|
||||||
|
|
||||||
|
do_sys7t __NR_getppid
|
||||||
|
sub sp,sp,#16 // decimal(pid) fits in 16 bytes
|
||||||
|
mov arg2,arg1; mov arg1,sp; call unsimal
|
||||||
|
|
||||||
|
mov arg5,#0 // terminator
|
||||||
|
mov arg4,sp // &"pid" (result of unsimal)
|
||||||
|
add arg3,sp,#16 // cmdline argv[0] [skip "pid"]
|
||||||
|
adr arg2,minus_q
|
||||||
|
adr arg1,path_gdb
|
||||||
|
stmdb sp!,{arg1,arg2,arg3,arg4,arg5} // argv
|
||||||
|
mov arg3,#0 // _envviron BUG
|
||||||
|
mov arg2,sp // &argv
|
||||||
|
do_sys7t __NR_execve
|
||||||
|
0:
|
||||||
|
b 0b
|
||||||
|
minus_q:
|
||||||
|
.asciz "-q"
|
||||||
|
path_gdb:
|
||||||
|
.asciz "/usr/bin/gdb"
|
||||||
|
commands_gdb:
|
||||||
|
.ascii "set prompt\n" // null string prompt
|
||||||
|
.ascii "info inferiors\n"
|
||||||
|
.ascii "print \"r0-r7\"\n"
|
||||||
|
.ascii "x/8xw $sp + 0x28\n"
|
||||||
|
.ascii "print \"r8-r15\"\n"
|
||||||
|
.ascii "x/8xw\n"
|
||||||
|
.ascii "set $pc = *(int *)($sp + 0x64)\n"
|
||||||
|
.ascii "print \"faulting instr\"\n"
|
||||||
|
.ascii "x/i $pc\n"
|
||||||
|
.ascii "print \"fault context\"\n"
|
||||||
|
.ascii "x/15i $pc - 7*4\n"
|
||||||
|
//.ascii "print \"intercept stack\"\n"
|
||||||
|
//.ascii "x/76xw $sp\n"
|
||||||
|
.ascii "set $sp = *(long *)($sp + 0x5c)\n"
|
||||||
|
.ascii "print \"user stack\"\n"
|
||||||
|
.ascii "x/64xw $sp\n"
|
||||||
|
.ascii "kill\n"
|
||||||
|
.ascii "quit 1"
|
||||||
|
.byte 0
|
||||||
|
commands_gdb_end:
|
||||||
|
.balign 4
|
||||||
|
|
||||||
|
// ucontext_t, mcontext_t, gregset_t, gret_t, REG_xxx: <sys/ucontext.h>
|
||||||
|
// stack_t <bits/types/stack_t.h>
|
||||||
|
__restore_rt:
|
||||||
|
nop
|
||||||
|
|
||||||
|
proc_self_maps:
|
||||||
|
.asciz "/proc/self/maps"
|
||||||
|
announce_sigaction:
|
||||||
|
.ascii "\n\nSIGSEGV address space:\n"
|
||||||
|
end_announce_sigaction:
|
||||||
|
.balign 4
|
||||||
|
|
||||||
|
adr_sigaction:
|
||||||
|
mov r12,lr; mov lr,pc; mov pc,r12 // blx lr
|
||||||
|
sigsegv_sigaction:
|
||||||
|
stmdb sp!,{arg2,arg3} // save siginfo *, ucontext *
|
||||||
|
// print /proc/self/maps of child (same as parent: the beauty of fork())
|
||||||
|
mov arg3,#end_announce_sigaction - announce_sigaction // arg3 len
|
||||||
|
adr arg2,announce_sigaction // buf
|
||||||
|
mov arg1,#FD_stderr
|
||||||
|
do_sys7t __NR_write
|
||||||
|
|
||||||
|
mov arg3,#O_RDONLY // flags
|
||||||
|
adr arg2,proc_self_maps // path
|
||||||
|
mov arg1,#FD_CWD
|
||||||
|
do_sys7t2 __NR_openat; mov r_fd,r0 // fd_maps
|
||||||
|
BUFLEN= 4096
|
||||||
|
sub sp,sp,#BUFLEN
|
||||||
|
loop_maps:
|
||||||
|
mov arg3,#BUFLEN // buflen
|
||||||
|
mov arg2,sp // buffer
|
||||||
|
mov arg1,r_fd // fd_maps
|
||||||
|
do_sys7t __NR_read
|
||||||
|
cmp r0,#0; beq done_maps
|
||||||
|
mov arg3,r0 // buflen
|
||||||
|
mov arg2,sp // buf
|
||||||
|
mov arg1,#FD_stderr
|
||||||
|
do_sys7t __NR_write
|
||||||
|
b loop_maps
|
||||||
|
done_maps:
|
||||||
|
add sp,sp,#BUFLEN // discard buffer
|
||||||
|
mov arg1,r_fd; do_sys7t __NR_close
|
||||||
|
// end printing of /proc/self/maps
|
||||||
|
|
||||||
|
mov arg1,#0; mov arg2,#0 // paranoia
|
||||||
|
do_sys7t __NR_fork
|
||||||
|
cmp r0,#0; beq child // fork()
|
||||||
|
parent:
|
||||||
|
NR_exit= 1
|
||||||
|
b parent // spin; paused by gdb
|
||||||
|
|
||||||
|
unsimal: // (dst, value)
|
||||||
|
mov r2,#0
|
||||||
|
stmdb sp!,{r2,lr}; call 0f
|
||||||
|
ldmia sp!,{r2,lr}
|
||||||
|
strb r2,[r0] // terminator
|
||||||
|
ret
|
||||||
|
0:
|
||||||
|
mov ip,r1 // extra copy used at end
|
||||||
|
mov r2,#0 // hi
|
||||||
|
|
||||||
|
mov r3,r1 // copy lo
|
||||||
|
adds r1,r1,r1,lsl #3 // 9*lo
|
||||||
|
adc r2,r2,r2,lsl #3 // 9*hi + C
|
||||||
|
add r2,r2,r3,lsr #(32 - 3) // bits shifted from lo to hi
|
||||||
|
|
||||||
|
mov r3,r1 // copy lo
|
||||||
|
adds r1,r1,r1,lsl #4
|
||||||
|
adc r2,r2,r2,lsl #4
|
||||||
|
add r2,r2,r3,lsr #(32 - 4) // * 0x99
|
||||||
|
|
||||||
|
mov r3,r1 // copy lo
|
||||||
|
adds r1,r1,r1,lsl #8
|
||||||
|
adc r2,r2,r2,lsl #8
|
||||||
|
add r2,r2,r3,lsr #(32 - 8) // * 0x9999
|
||||||
|
|
||||||
|
mov r3,r1 // copy lo
|
||||||
|
adds r1,r1,r1,lsl #16
|
||||||
|
adc r2,r2,r2,lsl #16
|
||||||
|
add r2,r2,r3,lsr #(32 - 16) // * 0x99999999
|
||||||
|
|
||||||
|
subs r1,r1,ip,lsl #(32 - 1) // - * 0x80000000
|
||||||
|
sbc r2,r2,ip,lsr #1 // * 0x19999999
|
||||||
|
|
||||||
|
adds r1,r1,ip
|
||||||
|
adcs r1,r2,#0 // * 0x0.1999999a; r1 = quo(ip, 10); set flags
|
||||||
|
add r2,r1,r1,lsl #2 // r2 = quo * 5
|
||||||
|
sub r2,ip,r2,lsl #1 // rem = ip - 10 * quo
|
||||||
|
|
||||||
|
stmdb sp!,{r2,lr} // save rem and retaddr
|
||||||
|
beq 1f; call 0b // stop if 0==quo; else recurse for next remainder
|
||||||
|
1:
|
||||||
|
ldmia sp!,{r1,lr}; add r1,r1,#'0'; strb r1,[r0],#1
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
zfind:
|
zfind:
|
||||||
ldr r1,[r0],#NBPW
|
ldr r1,[r0],#NBPW
|
||||||
cmp r1,#0; bne zfind
|
cmp r1,#0; bne zfind
|
||||||
@@ -315,7 +544,7 @@ L610: @ each word
|
|||||||
mov r0,#'\n'; strb r0,[r2],#1
|
mov r0,#'\n'; strb r0,[r2],#1
|
||||||
sub r2,r2,sp @ count
|
sub r2,r2,sp @ count
|
||||||
mov r1,sp @ buf
|
mov r1,sp @ buf
|
||||||
mov r0,#2 @ FD_STDERR
|
mov r0,#FD_stderr
|
||||||
#if defined(ARMEL_EABI4) /*{*/
|
#if defined(ARMEL_EABI4) /*{*/
|
||||||
mov r7,#__NR_write
|
mov r7,#__NR_write
|
||||||
swi 0
|
swi 0
|
||||||
|
|||||||
@@ -66,11 +66,6 @@ PATH_MAX= 4096
|
|||||||
#define call bl
|
#define call bl
|
||||||
#include "MAX_ELF_HDR.S"
|
#include "MAX_ELF_HDR.S"
|
||||||
|
|
||||||
ZERO= . - 3*NBPW
|
|
||||||
page_mask= . - 3*NBPW; .globl page_mask
|
|
||||||
qflg_data = . - 2*NBPW // QNX vs Linux: MAP_PRIVATE | MAP_ANONYMOUS
|
|
||||||
upxfn_path= . - 1*NBPW // displacement from "zero"
|
|
||||||
|
|
||||||
arg1 .req r0
|
arg1 .req r0
|
||||||
arg2 .req r1
|
arg2 .req r1
|
||||||
arg3 .req r2
|
arg3 .req r2
|
||||||
@@ -78,6 +73,12 @@ arg4 .req r3
|
|||||||
arg5 .req r4
|
arg5 .req r4
|
||||||
arg6 .req r5
|
arg6 .req r5
|
||||||
|
|
||||||
|
ZERO= . - 4*NBPW // 4 words initialized prior to unfolded code
|
||||||
|
page_mask= . - 4*NBPW
|
||||||
|
qflg_data = . - 3*NBPW // QNX vs Linux: MAP_PRIVATE | MAP_ANONYMOUS
|
||||||
|
upxfn_path= . - 2*NBPW // displacement from ZERO
|
||||||
|
cancel_sigsegv= . - 1*NBPW
|
||||||
|
|
||||||
fold_begin: // enter here
|
fold_begin: // enter here
|
||||||
b L05 // put page_mask and qflg_data within short-displacement of uses
|
b L05 // put page_mask and qflg_data within short-displacement of uses
|
||||||
|
|
||||||
@@ -107,6 +108,13 @@ Psync: .globl Psync
|
|||||||
bic r12,arg1,r12 // lo frag
|
bic r12,arg1,r12 // lo frag
|
||||||
sub arg1,arg1,r12 // page align lo end
|
sub arg1,arg1,r12 // page align lo end
|
||||||
add arg2,arg2,r12
|
add arg2,arg2,r12
|
||||||
|
|
||||||
|
stmdb sp!,{r0,r1,r2} // lo, len, ??
|
||||||
|
add r1,r1,r0 // hi
|
||||||
|
mov r2,#0 // might be CSSELR_DCACHE from linux/arch/arm/include/asm/cachetype.h
|
||||||
|
do_sys2 __ARM_NR_cacheflush
|
||||||
|
ldmia sp!,{r0,r1,r2}
|
||||||
|
|
||||||
do_sys __NR_msync; ret
|
do_sys __NR_msync; ret
|
||||||
|
|
||||||
mmap_privanon: .globl mmap_privanon
|
mmap_privanon: .globl mmap_privanon
|
||||||
@@ -134,20 +142,21 @@ mmap_do: // sp: saved r4,r5,lr
|
|||||||
|
|
||||||
proc_self_exe: .asciz "/proc/self/exe"; .balign 4
|
proc_self_exe: .asciz "/proc/self/exe"; .balign 4
|
||||||
|
|
||||||
// In: sp/ F_ADRX,F_LENX,F_ELFA,F_ADRU,F_LENU,F_R0,F_R1,%F_ENTR,F_argc
|
// In: sp/ F_ADRX,F_LENX,F_ELFA,f_SEGV,F_ADRU,F_LENU,F_R0,F_R1,%F_ENTR,F_argc
|
||||||
// [ADRX, +LENX) = extent of compressed program
|
// [ADRX, +LENX) = extent of compressed program
|
||||||
// [ADRU, +LENU) = params to munmap unfolded stub
|
// [ADRU, +LENU) = params to munmap unfolded stub
|
||||||
F_ADRX= 0*NBPW
|
F_ADRX= 0*NBPW
|
||||||
F_obinfo= F_ADRX // unmap_all_pages in lo bits
|
F_obinfo= F_ADRX // unmap_all_pages in lo bits
|
||||||
F_LENX= 1*NBPW
|
F_LENX= 1*NBPW
|
||||||
F_ELFA= 2*NBPW
|
F_ELFA= 2*NBPW
|
||||||
F_ADRU= 3*NBPW
|
F_SEGV= 3*NBPW
|
||||||
F_LENU= 4*NBPW
|
F_ADRU= 4*NBPW
|
||||||
F_R0= 5*NBPW
|
F_LENU= 5*NBPW
|
||||||
F_R1= 6*NBPW
|
F_R0= 6*NBPW
|
||||||
F_ENTR= 7*NBPW
|
F_R1= 7*NBPW
|
||||||
F_qflg = F_ENTR // QNX mmap flags
|
F_ENTR= 8*NBPW
|
||||||
F_ARGC= 8*NBPW
|
F_qflg= F_ENTR // QNX mmap flags
|
||||||
|
F_argc= 9*NBPW
|
||||||
|
|
||||||
is_ptinterp= (1<<0)
|
is_ptinterp= (1<<0)
|
||||||
unmap_all_pages= (1<<1)
|
unmap_all_pages= (1<<1)
|
||||||
@@ -155,17 +164,17 @@ unmap_all_pages= (1<<1)
|
|||||||
/* In:
|
/* In:
|
||||||
r4= ADRX | unmap_all_pages
|
r4= ADRX | unmap_all_pages
|
||||||
r5= LENX
|
r5= LENX
|
||||||
sp/ ADRX|uap,LENX,ELFA,ADRU,LENU,r0,r1,%entry, argc,argv,0,envp,0,auxv
|
sp/ ADRX|uap,LENX,ELFA,r0,r1,%entry,SEGV,ADRU,LENU, argc,argv,0,envp,0,auxv
|
||||||
(ADRX,LENX) = extent of compressed program
|
(ADRX,LENX) = extent of compressed program
|
||||||
(ADRU,LENU) = params to munmap unfolded stub
|
(ADRU,LENU) = params to munmap unfolded stub
|
||||||
*/
|
*/
|
||||||
|
|
||||||
L05:
|
L05:
|
||||||
ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12} // F_ADRX .. F_ARGC
|
ldmia sp!,{r3,r4,r5,r6,r7,r8,r9,r10,r11,r12} // F_ADRX .. F_ARGC
|
||||||
mov r1,sp @ src
|
mov r1,sp @ src
|
||||||
tst r4,#unmap_all_pages; bne 0f; sub sp,sp,#PATH_MAX; 0:
|
tst r3,#unmap_all_pages; bne 0f; sub sp,sp,#PATH_MAX; 0:
|
||||||
mov r0,sp @ dst
|
mov r0,sp @ dst
|
||||||
stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12}
|
stmdb sp!,{r3,r4,r5,r6,r7,r8,r9,r10,r11,r12}
|
||||||
|
|
||||||
0: // copy argv down
|
0: // copy argv down
|
||||||
ldr r3,[r1],#NBPW; cmp r3,#0
|
ldr r3,[r1],#NBPW; cmp r3,#0
|
||||||
@@ -199,7 +208,7 @@ r_pse .req r8
|
|||||||
sub arg3,arg3,#1 @ room for null terminator
|
sub arg3,arg3,#1 @ room for null terminator
|
||||||
do_sys7t __NR_readlink // ENOENT is OK
|
do_sys7t __NR_readlink // ENOENT is OK
|
||||||
cmn r0,#1<<12
|
cmn r0,#1<<12
|
||||||
movcs r1,arg1 @ FIXME? "/proc/self/exe"
|
adrcs r1,proc_self_exe
|
||||||
movcs r0,#14 @ strlen("/proc/self/exe")
|
movcs r0,#14 @ strlen("/proc/self/exe")
|
||||||
link_ok:
|
link_ok:
|
||||||
add r2,r1,r0 @ end
|
add r2,r1,r0 @ end
|
||||||
@@ -248,6 +257,9 @@ r_elfa .req r9
|
|||||||
add sp,sp,#MAX_ELF_HDR_32 + OVERHEAD @ un-alloca
|
add sp,sp,#MAX_ELF_HDR_32 + OVERHEAD @ un-alloca
|
||||||
str r0,[sp,#F_ENTR] @ entry address
|
str r0,[sp,#F_ENTR] @ entry address
|
||||||
|
|
||||||
|
adr lr,0f; ldr pc,[sp,#F_SEGV] // cancel_sigsegv
|
||||||
|
0:
|
||||||
|
|
||||||
// Map 1 page of /proc/self/exe so that it does not disappear
|
// Map 1 page of /proc/self/exe so that it does not disappear
|
||||||
ldr r0,[sp,#F_obinfo]; tst r0,#unmap_all_pages; bne no_map_pse
|
ldr r0,[sp,#F_obinfo]; tst r0,#unmap_all_pages; bne no_map_pse
|
||||||
mov arg6,#0 @ SEEK_SET offset
|
mov arg6,#0 @ SEEK_SET offset
|
||||||
@@ -283,7 +295,7 @@ sweep:
|
|||||||
add sp,sp,#(1<<18) @ pop stack
|
add sp,sp,#(1<<18) @ pop stack
|
||||||
#endif //}
|
#endif //}
|
||||||
|
|
||||||
add sp,sp,#3*NBPW // toss F_ADRX,F_LENX,F_ELFA
|
add sp,sp,#4*NBPW // toss F_ADRX,F_LENX,F_ELFA,F_SEGV
|
||||||
ldmia sp!,{arg1,arg2} @ F_ADRU,F_LENU
|
ldmia sp!,{arg1,arg2} @ F_ADRU,F_LENU
|
||||||
stmdb sp!,{r_auxe}
|
stmdb sp!,{r_auxe}
|
||||||
mov r3,#0 @ clear registers: paranoia
|
mov r3,#0 @ clear registers: paranoia
|
||||||
@@ -308,6 +320,9 @@ sweep:
|
|||||||
#endif /*}*/
|
#endif /*}*/
|
||||||
ldmia sp!,{r12} // r_auxe
|
ldmia sp!,{r12} // r_auxe
|
||||||
ldr pc,[r12,#NBPW -2*NBPW] @ hatch: Elf32_auxv_t[AT_NULL@.a_type].a_val
|
ldr pc,[r12,#NBPW -2*NBPW] @ hatch: Elf32_auxv_t[AT_NULL@.a_type].a_val
|
||||||
|
// hatch:
|
||||||
|
// svc 0 // In: r7= __NR_munmap; arg1= F_ADRU; arg2= F_LENU
|
||||||
|
// pop {r0,r1,pc} // F_R0, F_R1, F_ENTR
|
||||||
|
|
||||||
f_unfilter: @ (char *ptr, uint len, uint cto, uint fid)
|
f_unfilter: @ (char *ptr, uint len, uint cto, uint fid)
|
||||||
ptr .req r0
|
ptr .req r0
|
||||||
|
|||||||
@@ -30,6 +30,9 @@
|
|||||||
#define ARM_OLDABI 1
|
#define ARM_OLDABI 1
|
||||||
#include "arch/arm/v4a/macros.S"
|
#include "arch/arm/v4a/macros.S"
|
||||||
#include "MAX_ELF_HDR.S"
|
#include "MAX_ELF_HDR.S"
|
||||||
|
__NR_SYSCALL_BASE = 0
|
||||||
|
__ARM_NR_BASE= 0xf0000 + __NR_SYSCALL_BASE
|
||||||
|
__ARM_NR_cacheflush = 2 + __ARM_NR_BASE
|
||||||
NBPW= 4
|
NBPW= 4
|
||||||
|
|
||||||
sz_Elf32_Ehdr = 13*4
|
sz_Elf32_Ehdr = 13*4
|
||||||
@@ -139,6 +142,13 @@ Psync: .globl Psync
|
|||||||
bic r12,arg1,r12
|
bic r12,arg1,r12
|
||||||
sub arg1,arg1,r12
|
sub arg1,arg1,r12
|
||||||
add arg2,arg2,r12
|
add arg2,arg2,r12
|
||||||
|
|
||||||
|
stmdb sp!,{r0,r1,r2} // lo, len, ??
|
||||||
|
add r1,r1,r0 // hi
|
||||||
|
mov r2,#0 // might be CSSELR_DCACHE from linux/arch/arm/include/asm/cachetype.h
|
||||||
|
do_sys2 __ARM_NR_cacheflush
|
||||||
|
ldmia sp!,{r0,r1,r2}
|
||||||
|
|
||||||
b msync
|
b msync
|
||||||
|
|
||||||
L05:
|
L05:
|
||||||
|
|||||||
@@ -76,12 +76,18 @@ PAGE_SIZE = -(~0<<PAGE_SHIFT)
|
|||||||
|
|
||||||
// /usr/include/asm-generic/unistd.h
|
// /usr/include/asm-generic/unistd.h
|
||||||
__NR_close = 0x39 // 57
|
__NR_close = 0x39 // 57
|
||||||
|
__NR_execve = 0xdd // 221
|
||||||
__NR_exit = 0x5d // 93
|
__NR_exit = 0x5d // 93
|
||||||
|
__NR_fork = 0xdc // 220
|
||||||
|
__NR_getppid = 0xad // 173
|
||||||
__NR_memfd_create= 0x117 // 279
|
__NR_memfd_create= 0x117 // 279
|
||||||
__NR_mmap = 0xde // 222
|
__NR_mmap = 0xde // 222
|
||||||
__NR_mprotect = 0xe2 // 226
|
__NR_mprotect = 0xe2 // 226
|
||||||
__NR_munmap = 0xd7 // 215
|
__NR_munmap = 0xd7 // 215
|
||||||
__NR_openat = 0x38 // 56
|
__NR_openat = 0x38 // 56
|
||||||
|
__NR_pipe2 = 0x3b // 59
|
||||||
|
__NR_read = 0x3f // 63
|
||||||
|
__NR_sigaction = 0x86 // 134
|
||||||
AT_FDCWD= -100
|
AT_FDCWD= -100
|
||||||
__NR_write = 0x40 // 64
|
__NR_write = 0x40 // 64
|
||||||
|
|
||||||
@@ -134,6 +140,13 @@ wszuf .req w21
|
|||||||
xszuf .req x21
|
xszuf .req x21
|
||||||
xFOLD .req x20
|
xFOLD .req x20
|
||||||
wPrivAnon .req w19
|
wPrivAnon .req w19
|
||||||
|
cancel_SEGV .req x18
|
||||||
|
|
||||||
|
D_PMASK= 0*NBPW
|
||||||
|
D_XSIGSEGV= 1*NBPW
|
||||||
|
D_GETPM= 2*NBPW
|
||||||
|
D_PRIVANON= 2*NBPW + 2*4
|
||||||
|
D_FOLD= 2*NBPW + 3*4 // .data space at start of unfold
|
||||||
|
|
||||||
// http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055b/IHI0055B_aapcs64.pdf
|
// http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055b/IHI0055B_aapcs64.pdf
|
||||||
// x18 is CLOBBERED: "The platform register"
|
// x18 is CLOBBERED: "The platform register"
|
||||||
@@ -154,7 +167,198 @@ _start: .globl _start
|
|||||||
#endif /*}*/
|
#endif /*}*/
|
||||||
stp x0,x1,[sp,#-2*NBPW]! // ABI: -static crt0 might pass data in x0,x1
|
stp x0,x1,[sp,#-2*NBPW]! // ABI: -static crt0 might pass data in x0,x1
|
||||||
ldr wPrivAnon,mflg
|
ldr wPrivAnon,mflg
|
||||||
|
adr cancel_SEGV,cancel_dummy
|
||||||
|
|
||||||
|
section ELFSIGSEGV
|
||||||
|
// install SIGSEGV handler for debugging hardware and de-compressor
|
||||||
|
SIGSEGV= 11
|
||||||
|
SA_SIGINFO= 4 // /usr/include/bits/sigaction.h
|
||||||
|
SA_RESTORER= 0x04000000
|
||||||
|
sa_sigaction = 0 * NBPW
|
||||||
|
sa_flags = 1 * NBPW
|
||||||
|
sa_mask = 3 * NBPW // location of mask
|
||||||
|
sa_restorer = 4 * NBPW
|
||||||
|
sa_frame = 8 * NBPW
|
||||||
|
adr x0,sigsegv_sigaction // handler
|
||||||
|
mov x1,#SA_SIGINFO // flag bits
|
||||||
|
stp x0,x1,[sp,-sa_frame]! // .sa_sigaction, .sa_flags
|
||||||
|
str xzr,[sp,sa_mask] // .sa_mask
|
||||||
|
str xzr,[sp,sa_restorer]
|
||||||
|
|
||||||
|
mov x3,#8 // 8 bytes ==> 64 bits
|
||||||
|
mov x2,xzr // do not save old_sigaction
|
||||||
|
mov x1,sp // &new_sigaction
|
||||||
|
mov w0,#SIGSEGV
|
||||||
|
do_sys __NR_sigaction
|
||||||
|
add sp,sp,sa_frame
|
||||||
|
adr cancel_SEGV,cancel_sigsegv
|
||||||
|
b L300
|
||||||
|
|
||||||
|
#if 0 //{ TEST ONLY
|
||||||
|
mov x0,#0xc0;mov x1,#0xc1;mov x2,#0xc2;mov x3,#0xc3;mov x4,#0xc4;mov x5,#0xc5;mov x6,#0xc6;mov x7,#0xc7
|
||||||
|
mov x8,#0xc8;mov x9,#0xc9;mov x10,#0xca;mov x11,#0xcb;mov x12,#0xcc;mov x13,#0xcd;mov x14,#0xce;mov x15,#0xcf
|
||||||
|
mov x16,#0xd0;mov x17,#0xd1;mov x18,#0xd2;mov x19,#0xd3;mov x20,#0xd4;mov x21,#0xd5;mov x22,#0xd6;mov x23,#0xd7
|
||||||
|
mov x24,#0xd8;mov x25,#0xd9;mov x26,#0xda;mov x27,#0xdb;mov x28,#0xdc;mov x29,#0xdd;mov x30,#0xde
|
||||||
|
ldr x0,[x0] // cause SIGSEGV
|
||||||
|
#endif //}
|
||||||
|
|
||||||
|
proc_self_cmdline:
|
||||||
|
.asciz "/proc/self/cmdline"
|
||||||
|
announce_sigaction:
|
||||||
|
.asciz "\n\nSIGSEGV address space:\n"
|
||||||
|
end_announce_sigaction:
|
||||||
|
|
||||||
|
proc_self_maps:
|
||||||
|
.asciz "/proc/self/maps"
|
||||||
|
minus_q:
|
||||||
|
.asciz "-q"
|
||||||
|
path_gdb:
|
||||||
|
.asciz "/usr/bin/gdb"
|
||||||
|
commands_gdb:
|
||||||
|
.ascii "set prompt\n" // null string prompt
|
||||||
|
.ascii "info inferiors\n"
|
||||||
|
.ascii "print \"x0-x7\"\n"
|
||||||
|
.ascii "x/8xg $sp + 0x138\n"
|
||||||
|
.ascii "print \"x8-x15\"\n"
|
||||||
|
.ascii "x/8xg\n"
|
||||||
|
.ascii "print \"x16-x23\"\n"
|
||||||
|
.ascii "x/8xg\n"
|
||||||
|
.ascii "print \"x24-x30\"\n"
|
||||||
|
.ascii "x/7xg\n"
|
||||||
|
.ascii "set $pc = *(long *)($sp + 0x238)\n"
|
||||||
|
.ascii "print \"faulting instr\"\n"
|
||||||
|
.ascii "x/i $pc\n"
|
||||||
|
.ascii "print \"fault context\"\n"
|
||||||
|
.ascii "x/15i $pc - 7*4\n"
|
||||||
|
//.ascii "print \"intercept stack\"\n"
|
||||||
|
//.ascii "x/76xg $sp\n"
|
||||||
|
.ascii "set $sp = *(long *)($sp + 0x230)\n"
|
||||||
|
.ascii "print \"user stack\"\n"
|
||||||
|
.ascii "x/64xg $sp\n"
|
||||||
|
.ascii "kill\n"
|
||||||
|
.ascii "quit 1"
|
||||||
|
.byte 0
|
||||||
|
commands_gdb_end:
|
||||||
|
.balign 4
|
||||||
|
|
||||||
|
#define r_fd w19
|
||||||
|
PATH_MAX= 4096
|
||||||
|
child:
|
||||||
|
#if 1 //{ pipe input to gdb
|
||||||
|
mov arg1w,#0; do_sys __NR_close // fd_stdin
|
||||||
|
stp xzr,xzr,[sp,-2 * NBPW]! // &fd_pipe[2]; 4 bytes each; but stack align
|
||||||
|
mov arg2w,#0
|
||||||
|
mov arg1,sp
|
||||||
|
do_sys __NR_pipe2 // read size will be 0 (fd_stdin)
|
||||||
|
add x16,sp,#4
|
||||||
|
ldr r_fd,[x16] // write side of pipe
|
||||||
|
add sp,sp,#2*NBPW
|
||||||
|
|
||||||
|
mov w2,#commands_gdb_end - commands_gdb // arg3 len
|
||||||
|
adr x1,commands_gdb // arg2
|
||||||
|
mov w0,r_fd // arg1 fd
|
||||||
|
do_sys __NR_write
|
||||||
|
mov w0,r_fd; do_sys __NR_close
|
||||||
|
#endif //}
|
||||||
|
|
||||||
|
sub sp,sp,#PATH_MAX
|
||||||
|
mov arg3w,#O_RDONLY
|
||||||
|
adr arg2,proc_self_cmdline
|
||||||
|
mov arg1,#-1 // fake FD_CWD
|
||||||
|
do_sys __NR_openat; mov r_fd,w0
|
||||||
|
mov arg2,sp // buffer
|
||||||
|
mov arg3w,#PATH_MAX
|
||||||
|
do_sys __NR_read
|
||||||
|
mov arg1w,r_fd; do_sys __NR_close
|
||||||
|
|
||||||
|
do_sys __NR_getppid
|
||||||
|
stp xzr,xzr,[sp,-2 * NBPW]! // decimal(pid) fits in 16 bytes
|
||||||
|
mov w1,w0; mov x0,sp; call unsimal
|
||||||
|
|
||||||
|
mov arg4,sp // &"pid" (result of unsimal)
|
||||||
|
add arg3,sp,#2 * NBPW // cmdline argv[0] [skip "pid"]
|
||||||
|
adr arg2,minus_q
|
||||||
|
adr arg1,path_gdb // arg1 path
|
||||||
|
stp arg1,arg2,[sp,-6 *NBPW]! // path_gdb, "-q"
|
||||||
|
stp arg3,arg4,[sp,2 *NBPW] // argv[0], "pid"
|
||||||
|
str xzr,[sp,4 * NBPW] // NULL
|
||||||
|
mov arg3,#0 // _envviron BUG
|
||||||
|
mov arg2,sp // &argv
|
||||||
|
do_sys __NR_execve
|
||||||
|
0:
|
||||||
|
b 0b
|
||||||
|
|
||||||
|
// ucontext_t, mcontext_t, gregset_t, gret_t, REG_xxx: <sys/ucontext.h>
|
||||||
|
// stack_t <bits/types/stack_t.h>
|
||||||
|
__restore_rt:
|
||||||
|
nop
|
||||||
|
|
||||||
|
sigsegv_sigaction:
|
||||||
|
stp x1,x2,[sp,-2 * NBPW] // save siginfo *, ucontext *
|
||||||
|
// print /proc/self/maps of child (same as parent: the beauty of fork())
|
||||||
|
mov x2,#end_announce_sigaction - announce_sigaction // arg3 len
|
||||||
|
adr x1,announce_sigaction // arg2 buf
|
||||||
|
mov w0,#2 // arg1 fd_stderr
|
||||||
|
do_sys __NR_write
|
||||||
|
|
||||||
|
mov w2,#O_RDONLY // arg3 flags
|
||||||
|
adr x1,proc_self_maps // arg2 path
|
||||||
|
mov w0,#-1 // fake FD_CWD
|
||||||
|
do_sys __NR_openat
|
||||||
|
mov r_fd,w0 // fd_maps
|
||||||
|
BUFLEN= 4096
|
||||||
|
sub sp,sp,#BUFLEN
|
||||||
|
loop_maps:
|
||||||
|
mov x2,#BUFLEN // arg3 buflen
|
||||||
|
mov x1,sp // arg2 buffer
|
||||||
|
mov w0,r_fd // arg1 fd_maps
|
||||||
|
do_sys __NR_read
|
||||||
|
cbz w0,done_maps
|
||||||
|
mov x2,x0 // arg3 buflen
|
||||||
|
mov x1,sp // arg2 buf
|
||||||
|
mov w0,#2 // fd_stderr
|
||||||
|
do_sys __NR_write
|
||||||
|
b loop_maps
|
||||||
|
done_maps:
|
||||||
|
add sp,sp,#BUFLEN // discard buffer
|
||||||
|
mov x0,x16; do_sys __NR_close
|
||||||
|
// end printing of /proc/self/maps
|
||||||
|
|
||||||
|
mov arg1,#0; mov arg2,#0 // paranoia
|
||||||
|
do_sys __NR_fork; cbz x0,child
|
||||||
|
parent:
|
||||||
|
b parent // spin; paused by gdb
|
||||||
|
|
||||||
|
unsimal: // (dst, value)
|
||||||
|
stp lr,xzr,[sp,-2 * NBPW]!; call 0f
|
||||||
|
ldp lr,x1,[sp],#2 * NBPW
|
||||||
|
strb w1,[x0] // terminator
|
||||||
|
ret
|
||||||
|
0:
|
||||||
|
mov w2,#0xcccd
|
||||||
|
movk w2, 0xcccc, lsl 16 // 0xcccccccd ==> 4/5 as 32-bit fraction
|
||||||
|
umull x2,w1,w2
|
||||||
|
//add x2,x2,#0x1000 // BUG? unsimal(p, 730)
|
||||||
|
lsr x3,x2,35 // quo(value, 10)
|
||||||
|
add w2,w3,w3,lsl 2 // 5 * quo
|
||||||
|
sub w1,w1,w2,lsl 1 // rem = (val - (10 * quo))
|
||||||
|
stp lr,x1,[sp,-2 * NBPW]!
|
||||||
|
cbz x3,1f; mov w1,w3; call 0b
|
||||||
|
1:
|
||||||
|
ldp lr,x1,[sp],#2 * NBPW; add w1,w1,#'0'; strb w1,[x0],#1
|
||||||
|
ret
|
||||||
|
|
||||||
|
cancel_sigsegv:
|
||||||
|
mov x3,#8 // 8 bytes ==> 64 bits
|
||||||
|
mov x2,xzr // no old
|
||||||
|
mov x1,xzr // no new
|
||||||
|
mov w0,#SIGSEGV
|
||||||
|
do_sys __NR_sigaction
|
||||||
|
ret
|
||||||
|
|
||||||
|
L300:
|
||||||
|
|
||||||
|
section ELFMAINX2
|
||||||
add x0,sp,#(1+ 2)*NBPW
|
add x0,sp,#(1+ 2)*NBPW
|
||||||
call zfind // avoid feint of 0==argc; out: x0= &envp
|
call zfind // avoid feint of 0==argc; out: x0= &envp
|
||||||
call zfind; mov xauxv,x0 // &Elf64_auxv
|
call zfind; mov xauxv,x0 // &Elf64_auxv
|
||||||
@@ -175,8 +379,11 @@ F_LENU= 3 * NBPW
|
|||||||
neg xPMASK,x2 // save for folded code
|
neg xPMASK,x2 // save for folded code
|
||||||
str xPMASK,[sp,#F_PMASK]
|
str xPMASK,[sp,#F_PMASK]
|
||||||
|
|
||||||
|
adr xelfa,sz_pack2
|
||||||
|
ldr w0,[xelfa] // sz_pack2 causes unknown R_AARCH64_LD_PREL_LO19
|
||||||
|
str x0,[sp,#F_SZPK2]
|
||||||
|
sub xelfa,xelfa,w0,uxtw
|
||||||
call main
|
call main
|
||||||
L00:
|
|
||||||
mov xFOLD,lr
|
mov xFOLD,lr
|
||||||
|
|
||||||
mov w1,#MFD_EXEC // flags
|
mov w1,#MFD_EXEC // flags
|
||||||
@@ -188,7 +395,7 @@ L00:
|
|||||||
mov w1,wzr; b 0b // try again without MFD_EXEC
|
mov w1,wzr; b 0b // try again without MFD_EXEC
|
||||||
no_memfd: // so try /dev/shm
|
no_memfd: // so try /dev/shm
|
||||||
O_RDWR= 2
|
O_RDWR= 2
|
||||||
O_DIRECTORY= 0200000 // 0x010000
|
O_DIRECTORY= 040000 // 0x04000
|
||||||
O_TMPFILE= 020000000 // 0x400000
|
O_TMPFILE= 020000000 // 0x400000
|
||||||
call 0f; .int 0700, O_RDWR|O_DIRECTORY|O_TMPFILE; .asciz "/dev/shm"
|
call 0f; .int 0700, O_RDWR|O_DIRECTORY|O_TMPFILE; .asciz "/dev/shm"
|
||||||
.balign 4; 0:
|
.balign 4; 0:
|
||||||
@@ -231,7 +438,8 @@ wmeth .req w4
|
|||||||
.unreq xmeth
|
.unreq xmeth
|
||||||
.unreq wmeth
|
.unreq wmeth
|
||||||
|
|
||||||
str xPMASK,[sp] // propagate PAGE_MASK
|
str xPMASK,[sp] // propagate PAGE_MASK D_PMASK
|
||||||
|
str cancel_SEGV,[sp, #D_XSIGSEGV]
|
||||||
|
|
||||||
// Write de-compressed stub
|
// Write de-compressed stub
|
||||||
ldr w2,[xFOLD,#sz_unc + LBINFO - LxFOLD] // .sz_unc of fold
|
ldr w2,[xFOLD,#sz_unc + LBINFO - LxFOLD] // .sz_unc of fold
|
||||||
@@ -255,13 +463,16 @@ wmeth .req w4
|
|||||||
// Use the unfolded stub
|
// Use the unfolded stub
|
||||||
ldr wLENC,[sp,#F_SZPK2]
|
ldr wLENC,[sp,#F_SZPK2]
|
||||||
ldr w1,[xFOLD, #LOBINFO - LxFOLD] // O_BINFO
|
ldr w1,[xFOLD, #LOBINFO - LxFOLD] // O_BINFO
|
||||||
add lr,xADRU,#3*4 + NBPW // jmp to fold_begin
|
add lr,xADRU,#D_FOLD // jmp to fold_begin
|
||||||
sub wLENC,wLENC,w1
|
sub wLENC,wLENC,w1
|
||||||
str xLENC,[sp,#F_SZPK2]
|
str xLENC,[sp,#F_SZPK2]
|
||||||
bic w1,w1,#unmap_all_pages
|
bic w1,w1,#unmap_all_pages
|
||||||
add xADRC,xelfa,x1 // &b_info of compressed input data
|
add xADRC,xelfa,x1 // &b_info of compressed input data
|
||||||
jr lr // goto unfolded stub
|
jr lr // goto unfolded stub
|
||||||
|
|
||||||
|
cancel_dummy:
|
||||||
|
ret
|
||||||
|
|
||||||
zfind:
|
zfind:
|
||||||
ldr x1,[x0],#NBPW; cbnz x1,zfind
|
ldr x1,[x0],#NBPW; cbnz x1,zfind
|
||||||
ret
|
ret
|
||||||
@@ -383,12 +594,8 @@ strupx:
|
|||||||
.asciz "upx"
|
.asciz "upx"
|
||||||
.balign 4
|
.balign 4
|
||||||
|
|
||||||
main:
|
main: // In: w0= sz_pack2
|
||||||
lr .req x30
|
lr .req x30
|
||||||
add xelfa,lr,#sz_pack2 - L00 // &sz_pack2
|
|
||||||
ldr w0,[xelfa]
|
|
||||||
sub xelfa,xelfa,w0,uxtw
|
|
||||||
str x0,[sp,#F_SZPK2]
|
|
||||||
callr lr
|
callr lr
|
||||||
LxFOLD:
|
LxFOLD:
|
||||||
LOBINFO:
|
LOBINFO:
|
||||||
|
|||||||
@@ -84,16 +84,16 @@ PATH_MAX= 4096
|
|||||||
#define OVERHEAD 2048
|
#define OVERHEAD 2048
|
||||||
#include "MAX_ELF_HDR.S"
|
#include "MAX_ELF_HDR.S"
|
||||||
|
|
||||||
PAGE_MASK: .quad ~0<<12 // default
|
PAGE_MASK: .quad ~0<<12 // default D_PMASK
|
||||||
get_page_mask: .globl get_page_mask
|
cancel_sigsegv: .quad 0 // D_XSIGSEGV
|
||||||
|
|
||||||
|
get_page_mask: .globl get_page_mask // D_GETPM
|
||||||
ldr x0,PAGE_MASK
|
ldr x0,PAGE_MASK
|
||||||
ret
|
ret
|
||||||
|
bits_privanon: // known offset (2*NBPW + 2*4) D_PRIVANON
|
||||||
bits_privanon: // known offset (NBPW + 2*4)
|
|
||||||
.int MAP_PRIVATE | MAP_ANONYMOUS // Linux default; else QNX
|
.int MAP_PRIVATE | MAP_ANONYMOUS // Linux default; else QNX
|
||||||
|
|
||||||
fold_begin: // known offset (NBPW + 3*4)
|
fold_begin: // known offset D_FOLD = (2*NBPW + 3*4)
|
||||||
//// bkpt // DEBUG
|
|
||||||
b L10
|
b L10
|
||||||
|
|
||||||
// In: sp/ PMASK,LENC,ADRU,LENU, x0,x1, argc,argv,...
|
// In: sp/ PMASK,LENC,ADRU,LENU, x0,x1, argc,argv,...
|
||||||
@@ -128,6 +128,44 @@ Psync: .globl Psync
|
|||||||
bic x8,x0,x8
|
bic x8,x0,x8
|
||||||
sub x0,x0,x8
|
sub x0,x0,x8
|
||||||
add x1,x1,x8
|
add x1,x1,x8
|
||||||
|
|
||||||
|
// Sync contents of data cache into RAM.
|
||||||
|
// Linux should do this implicitly, but apparently not.
|
||||||
|
CTR_IDC_SHIFT= 28
|
||||||
|
CTR_DIC_SHIFT= 29
|
||||||
|
|
||||||
|
mov x3,x0 // lo
|
||||||
|
add x4,x0,x1 // hi
|
||||||
|
sync_cache_range: // (void *lo= x3, void *const hi= x4)
|
||||||
|
mrs x6,ctr_el0
|
||||||
|
tbnz w6,#CTR_IDC_SHIFT,dc_not_dirty
|
||||||
|
ubfx x5,x6,#16,#4 // -2+ log2(dline_size)
|
||||||
|
mov x8,#-4; lsl x8,x8,x5 // sz_dline mask
|
||||||
|
and x5,x8,x3 // round down to dc line
|
||||||
|
// cmp x5,x4; b.hs dc_done
|
||||||
|
dc_loop:
|
||||||
|
dc cvau,x5 // sync dline
|
||||||
|
sub x5,x5,x8 // next dline
|
||||||
|
cmp x5,x4; b.lo dc_loop
|
||||||
|
//dc_done:
|
||||||
|
dc_not_dirty:
|
||||||
|
dsb ish // why here if dc not dirty?
|
||||||
|
|
||||||
|
tbnz w6,#CTR_DIC_SHIFT,ic_not_dirty
|
||||||
|
and x6,x6,#0xf // -2+ log2(iline_size)
|
||||||
|
mov x8,#-4; lsl x8,x8,x6 // sz_iline mask
|
||||||
|
and x3,x8,x3 // round down to ic line
|
||||||
|
// cmp x3,x4; b.hs ic_done
|
||||||
|
ic_loop:
|
||||||
|
ic ivau,x3 // sync iline
|
||||||
|
sub x3,x3,x8 // next iline
|
||||||
|
cmp x3,x4; b.lo ic_loop
|
||||||
|
//ic_done:
|
||||||
|
dsb ish
|
||||||
|
ic_not_dirty:
|
||||||
|
isb
|
||||||
|
// fall into msync
|
||||||
|
|
||||||
msync: .globl msync
|
msync: .globl msync
|
||||||
do_sys __NR_msync; ret
|
do_sys __NR_msync; ret
|
||||||
|
|
||||||
@@ -233,6 +271,9 @@ no_env_pse:
|
|||||||
add sp,sp,#MAX_ELF_HDR_64 + OVERHEAD // un-alloca
|
add sp,sp,#MAX_ELF_HDR_64 + OVERHEAD // un-alloca
|
||||||
mov xfexp,x0 // entry address
|
mov xfexp,x0 // entry address
|
||||||
|
|
||||||
|
ldr x0,cancel_sigsegv
|
||||||
|
blr x0 // callr
|
||||||
|
|
||||||
// Discard pages of compressed input data (includes [ADRC,+LENC) )
|
// Discard pages of compressed input data (includes [ADRC,+LENC) )
|
||||||
ldr x1,[xelfa,#p_memsz+sz_Phdr+sz_Ehdr] // Phdr[C_TEXT= 1].p_memsz
|
ldr x1,[xelfa,#p_memsz+sz_Phdr+sz_Ehdr] // Phdr[C_TEXT= 1].p_memsz
|
||||||
mov x0,xelfa // hi &Elf64_Ehdr
|
mov x0,xelfa // hi &Elf64_Ehdr
|
||||||
@@ -509,7 +550,7 @@ brk: do_sys __NR_brk; ret
|
|||||||
munmap: do_sys __NR_munmap; ret
|
munmap: do_sys __NR_munmap; ret
|
||||||
|
|
||||||
O_RDWR= 2
|
O_RDWR= 2
|
||||||
O_DIRECTORY= 0200000 // 0x010000
|
O_DIRECTORY= 040000 // 0x04000
|
||||||
O_TMPFILE= 020000000 // 0x400000
|
O_TMPFILE= 020000000 // 0x400000
|
||||||
|
|
||||||
ufdc_bits: .int O_RDWR|O_DIRECTORY|O_TMPFILE
|
ufdc_bits: .int O_RDWR|O_DIRECTORY|O_TMPFILE
|
||||||
|
|||||||
@@ -91,6 +91,42 @@ Psync: .globl Psync
|
|||||||
bic x8,x0,x8
|
bic x8,x0,x8
|
||||||
sub x0,x0,x8
|
sub x0,x0,x8
|
||||||
add x1,x1,x8
|
add x1,x1,x8
|
||||||
|
// Sync contents of data cache into RAM.
|
||||||
|
// Linux should do this implicitly, but apparently not.
|
||||||
|
CTR_IDC_SHIFT= 28
|
||||||
|
CTR_DIC_SHIFT= 29
|
||||||
|
|
||||||
|
mov x3,x0 // lo
|
||||||
|
add x4,x0,x1 // hi
|
||||||
|
sync_cache_range: // (void *lo= x3, void *const hi= x4)
|
||||||
|
mrs x6,ctr_el0
|
||||||
|
tbnz w6,#CTR_IDC_SHIFT,dc_not_dirty
|
||||||
|
ubfx x5,x6,#16,#4 // -2+ log2(dline_size)
|
||||||
|
mov x8,#-4; lsl x8,x8,x5 // sz_dline mask
|
||||||
|
and x5,x8,x3 // round down to dc line
|
||||||
|
// cmp x5,x4; b.hs dc_done
|
||||||
|
dc_loop:
|
||||||
|
dc cvau,x5 // sync dline
|
||||||
|
sub x5,x5,x8 // next dline
|
||||||
|
cmp x5,x4; b.lo dc_loop
|
||||||
|
//dc_done:
|
||||||
|
dc_not_dirty:
|
||||||
|
dsb ish // why here if dc not dirty?
|
||||||
|
|
||||||
|
tbnz w6,#CTR_DIC_SHIFT,ic_not_dirty
|
||||||
|
and x6,x6,#0xf // -2+ log2(iline_size)
|
||||||
|
mov x8,#-4; lsl x8,x8,x6 // sz_iline mask
|
||||||
|
and x3,x8,x3 // round down to ic line
|
||||||
|
// cmp x3,x4; b.hs ic_done
|
||||||
|
ic_loop:
|
||||||
|
ic ivau,x3 // sync iline
|
||||||
|
sub x3,x3,x8 // next iline
|
||||||
|
cmp x3,x4; b.lo ic_loop
|
||||||
|
//ic_done:
|
||||||
|
dsb ish
|
||||||
|
ic_not_dirty:
|
||||||
|
isb
|
||||||
|
// fall into msync
|
||||||
do_sys __NR_msync; ret
|
do_sys __NR_msync; ret
|
||||||
|
|
||||||
fold: // enter here (x0= &so_info; x1= &{argc,argv,envp,lr}
|
fold: // enter here (x0= &so_info; x1= &{argc,argv,envp,lr}
|
||||||
@@ -206,11 +242,6 @@ brk:
|
|||||||
readlink:
|
readlink:
|
||||||
do_sys __NR_readlink; ret
|
do_sys __NR_readlink; ret
|
||||||
|
|
||||||
.globl __sync_cache_range
|
|
||||||
__sync_cache_range: // (void *lo, void *hi)
|
|
||||||
#include "arm64-sync-cache-range.S"
|
|
||||||
ret
|
|
||||||
|
|
||||||
get_sys_munmap: .globl get_sys_munmap // r0= system call instruction
|
get_sys_munmap: .globl get_sys_munmap // r0= system call instruction
|
||||||
#if defined(ARMEL_DARWIN) /*{*/
|
#if defined(ARMEL_DARWIN) /*{*/
|
||||||
ldr w0,4*1 + munmap
|
ldr w0,4*1 + munmap
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ AT_PAGESZ= 6 // /usr/include/elf.h
|
|||||||
pop %edx // MATCH_33 restore &getbit
|
pop %edx // MATCH_33 restore &getbit
|
||||||
mov %eax,%ecx
|
mov %eax,%ecx
|
||||||
shr $12,%eax; shl $12,%eax; mov %eax,F_ADRU(old_sp)
|
shr $12,%eax; shl $12,%eax; mov %eax,F_ADRU(old_sp)
|
||||||
sub %eax,%ecx; sub $1,%ecx; mov %ecx,F_MFD (old_sp)
|
sub %eax,%ecx; dec %ecx; mov %ecx,F_MFD (old_sp)
|
||||||
#undef r_unc
|
#undef r_unc
|
||||||
#undef u_len
|
#undef u_len
|
||||||
|
|
||||||
|
|||||||
@@ -285,8 +285,12 @@ L60:
|
|||||||
push eax
|
push eax
|
||||||
push eax // 32 bytes of zeroes now on stack, ready for 'popa'
|
push eax // 32 bytes of zeroes now on stack, ready for 'popa'
|
||||||
|
|
||||||
|
.macro NOTRACK
|
||||||
|
.byte 0x3e
|
||||||
|
.endm
|
||||||
mov al, __NR_munmap // eax was 0 from L60
|
mov al, __NR_munmap // eax was 0 from L60
|
||||||
/*notrack*/ jmp [edi] // unmap ourselves via escape hatch, then goto entry
|
// valgrind-3.24.0 has bug with NOTRACK on i386
|
||||||
|
/*NOTRACK;*/ jmp [edi] // unmap ourselves via escape hatch, then goto entry
|
||||||
|
|
||||||
section SYSCALLS
|
section SYSCALLS
|
||||||
// Sometimes linux enforces page-aligned address
|
// Sometimes linux enforces page-aligned address
|
||||||
|
|||||||
@@ -33,19 +33,6 @@
|
|||||||
#define DEBUG 0
|
#define DEBUG 0
|
||||||
#endif //}
|
#endif //}
|
||||||
|
|
||||||
#ifdef __mips__ //{
|
|
||||||
// We want to supersede in *.elf-fold.S, not use include/linux.h
|
|
||||||
#define NO_WANT_CLOSE 1
|
|
||||||
#define NO_WANT_EXIT 1
|
|
||||||
#define NO_WANT_MMAP 1
|
|
||||||
#define NO_WANT_MPROTECT 1
|
|
||||||
#define NO_WANT_MSYNC 1
|
|
||||||
#define NO_WANT_OPEN 1
|
|
||||||
#define NO_WANT_READ 1
|
|
||||||
#define NO_WANT_WRITE 1
|
|
||||||
extern int open(char const *pathname, int flags, unsigned mode);
|
|
||||||
extern int read(int fd, void *buf, unsigned count);
|
|
||||||
#endif //}
|
|
||||||
#include "include/linux.h"
|
#include "include/linux.h"
|
||||||
|
|
||||||
#define MFD_EXEC 0x0010
|
#define MFD_EXEC 0x0010
|
||||||
@@ -616,18 +603,14 @@ do_xmap(
|
|||||||
ElfW(Addr) reloc = 0;
|
ElfW(Addr) reloc = 0;
|
||||||
if (xi) { // compressed main program:
|
if (xi) { // compressed main program:
|
||||||
// C_BASE space reservation, C_TEXT compressed data and stub
|
// C_BASE space reservation, C_TEXT compressed data and stub
|
||||||
ElfW(Addr) ehdr0 = *p_reloc; // the 'hi' copy!
|
ElfW(Addr) ehdr0 = *p_reloc;
|
||||||
ElfW(Phdr) *phdr0 = (ElfW(Phdr) *)(1+ (ElfW(Ehdr) *)ehdr0); // cheats .e_phoff
|
ElfW(Phdr) *phdr0 = (ElfW(Phdr) *)(1+ (ElfW(Ehdr) *)ehdr0); // cheats .e_phoff
|
||||||
// Clear the 'lo' space reservation for use by PT_LOADs
|
v_brk = ehdr0 + phdr0->p_vaddr + phdr0->p_memsz;
|
||||||
ehdr0 -= phdr0[1].p_vaddr; // the 'lo' copy
|
if (ET_DYN == ehdr->e_type) {
|
||||||
if (ET_EXEC == ehdr->e_type) {
|
reloc = ehdr0 - phdr0[1].p_vaddr;
|
||||||
ehdr0 = phdr0[0].p_vaddr;
|
|
||||||
}
|
}
|
||||||
else {
|
// paranoia: prevent "hangover" from VMA for C_BASE
|
||||||
reloc = ehdr0;
|
munmap((void *)(reloc + phdr0->p_vaddr), phdr0->p_memsz);
|
||||||
}
|
|
||||||
v_brk = phdr0->p_memsz + ehdr0;
|
|
||||||
munmap((void *)ehdr0, phdr0->p_memsz);
|
|
||||||
}
|
}
|
||||||
else { // PT_INTERP
|
else { // PT_INTERP
|
||||||
DPRINTF("INTERP ehdr=%%p av=%%p\\n", ehdr, av);
|
DPRINTF("INTERP ehdr=%%p av=%%p\\n", ehdr, av);
|
||||||
@@ -675,8 +658,8 @@ do_xmap(
|
|||||||
DPRINTF(" mlen=%%p\\n", mlen);
|
DPRINTF(" mlen=%%p\\n", mlen);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
DPRINTF("mmap addr=%%p mlen=%%p offset=%%p frag=%%p prot=%%x\\n",
|
DPRINTF("mmap addr=%%p mlen=%%p phdr=%%p offset=%%p frag=%%p prot=%%x\\n",
|
||||||
addr, mlen, phdr->p_offset - frag, frag, prot);
|
addr, mlen, phdr, phdr->p_offset - frag, frag, prot);
|
||||||
int mfd = 0;
|
int mfd = 0;
|
||||||
if (xi && phdr->p_flags & PF_X) { // SELinux
|
if (xi && phdr->p_flags & PF_X) { // SELinux
|
||||||
// Cannot set PROT_EXEC except via mmap() into a region (Linux "vma")
|
// Cannot set PROT_EXEC except via mmap() into a region (Linux "vma")
|
||||||
@@ -757,6 +740,9 @@ ERR_LAB
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int open(char const *, int, int);
|
||||||
|
ssize_t read(int, void *, size_t);
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// upx_main - called by our entry code
|
// upx_main - called by our entry code
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -380,215 +380,8 @@ static inline _syscall2(int,link,const char *,src, const char *,dst)
|
|||||||
#undef Z1
|
#undef Z1
|
||||||
|
|
||||||
#elif defined(__mips__) /*}{*/
|
#elif defined(__mips__) /*}{*/
|
||||||
|
#undef MAP_ANONYMOUS
|
||||||
#undef MAP_ANONYMOUS
|
#define MAP_ANONYMOUS 0x800
|
||||||
#define MAP_ANONYMOUS 0x800
|
|
||||||
|
|
||||||
/* Cannot write an inline assembler constraint for a specific register.
|
|
||||||
http://gcc.gnu.org/ml/gcc-help/2007-02/msg00068.html
|
|
||||||
Workaround:
|
|
||||||
const register int num asm("v0") = 4;
|
|
||||||
const register char *const str asm("a0") = string;
|
|
||||||
asm volatile("syscall" : : "r"(num), "r"(str));
|
|
||||||
*/
|
|
||||||
#ifndef NO_WANT_MMAP /*{*/
|
|
||||||
static void *mmap(
|
|
||||||
void *addr, size_t len,
|
|
||||||
int prot, int flags,
|
|
||||||
int fd, off_t offset
|
|
||||||
)
|
|
||||||
{
|
|
||||||
#define __NR_mmap (90+ 4000)
|
|
||||||
register void * const a0 asm("a0") = addr;
|
|
||||||
register size_t const a1 asm("a1") = len;
|
|
||||||
register int const a2 asm("a2") = prot;
|
|
||||||
register int a3 asm("a3") = flags;
|
|
||||||
register int const t0 asm("t0") = fd;
|
|
||||||
register off_t const t1 asm("t1") = offset;
|
|
||||||
register int v0 asm("v0") = __NR_mmap;
|
|
||||||
__asm__ __volatile__(
|
|
||||||
/*"break\n"*/ /* debug only */
|
|
||||||
"addiu $29,$29,-0x20\n"
|
|
||||||
"\tsw $8,0x10($29)\n"
|
|
||||||
"\tsw $9,0x14($29)\n"
|
|
||||||
"\tsyscall\n"
|
|
||||||
".set noreorder\n"
|
|
||||||
"\tb sysret_incl\n"
|
|
||||||
"\t addiu $29,$29, 0x20\n"
|
|
||||||
".set reorder\n"
|
|
||||||
"sysgo_incl:"
|
|
||||||
/*"break\n"*/ /* debug only */
|
|
||||||
"\tsyscall\n"
|
|
||||||
"sysret_incl: .set noat\n"
|
|
||||||
"\tsltiu $1,$7,1\n" /* 1: no error; 0: error; $7 == a3 */
|
|
||||||
"\taddiu $1,$1,-1\n" /* 0: no error; -1: error */
|
|
||||||
"\tor $2,$2,$1\n" /* $2 == v0; good result, else -1 for error */
|
|
||||||
/*".set at\n"*/
|
|
||||||
: "+r"(v0), "+r"(a3) /* "+r" ==> both read and write */
|
|
||||||
: "r"(a0), "r"(a1), "r"(a2), "r"(t0), "r"(t1)
|
|
||||||
);
|
|
||||||
return (void *)v0;
|
|
||||||
}
|
|
||||||
#endif /* NO_WANT_MMAP }*/
|
|
||||||
|
|
||||||
#ifndef NO_WANT_READ /*{*/
|
|
||||||
static ssize_t read(int fd, void *buf, size_t len)
|
|
||||||
{
|
|
||||||
#define __NR_read (3+ 4000)
|
|
||||||
register int const a0 asm("a0") = fd;
|
|
||||||
register void * const a1 asm("a1") = buf;
|
|
||||||
register size_t const a2 asm("a2") = len;
|
|
||||||
register size_t v0 asm("v0") = __NR_read;
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"bal sysgo_incl"
|
|
||||||
: "+r"(v0)
|
|
||||||
: "r"(a0), "r"(a1), "r"(a2)
|
|
||||||
: "a3", "ra"
|
|
||||||
);
|
|
||||||
return v0;
|
|
||||||
}
|
|
||||||
#endif /* NO_WANT_READ }*/
|
|
||||||
|
|
||||||
#if 0 //{ UNUSED
|
|
||||||
static void *brk(void *addr)
|
|
||||||
{
|
|
||||||
#define __NR_brk (45+ 4000)
|
|
||||||
register void *const a0 asm("a0") = addr;
|
|
||||||
register void * v0 asm("v0") = (void *)__NR_brk;
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"bal sysgo_incl"
|
|
||||||
: "+r"(v0)
|
|
||||||
: "r"(a0)
|
|
||||||
: "a3", "ra"
|
|
||||||
);
|
|
||||||
return v0;
|
|
||||||
}
|
|
||||||
#endif //}
|
|
||||||
|
|
||||||
#ifndef NO_WANT_CLOSE /*{*/
|
|
||||||
static int close(int fd)
|
|
||||||
{
|
|
||||||
#define __NR_close (6+ 4000)
|
|
||||||
register int const a0 asm("a0") = fd;
|
|
||||||
register int v0 asm("v0") = __NR_close;
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"bal sysgo_incl"
|
|
||||||
: "+r"(v0)
|
|
||||||
: "r"(a0)
|
|
||||||
: "a3", "ra"
|
|
||||||
);
|
|
||||||
return v0;
|
|
||||||
}
|
|
||||||
#endif /* NO_WANT_CLOSE }*/
|
|
||||||
|
|
||||||
#ifndef NO_WANT_EXIT /*{*/
|
|
||||||
static void exit(int code) __attribute__ ((__noreturn__));
|
|
||||||
static void exit(int code)
|
|
||||||
{
|
|
||||||
#define __NR_exit (1+ 4000)
|
|
||||||
register int const a0 asm("a0") = code;
|
|
||||||
register int v0 asm("v0") = __NR_exit;
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"bal sysgo_incl"
|
|
||||||
:
|
|
||||||
: "r"(v0), "r"(a0)
|
|
||||||
: "a3", "ra"
|
|
||||||
);
|
|
||||||
for (;;) {}
|
|
||||||
}
|
|
||||||
#endif /* NO_WANT_EXIT }*/
|
|
||||||
|
|
||||||
#if 0 //{ unused?
|
|
||||||
static int munmap(void *addr, size_t len)
|
|
||||||
{
|
|
||||||
#define __NR_munmap (91+ 4000)
|
|
||||||
register void *const a0 asm("a0") = addr;
|
|
||||||
register size_t const a1 asm("a1") = len;
|
|
||||||
register size_t v0 asm("v0") = __NR_munmap;
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"bal sysgo_incl"
|
|
||||||
: "+r"(v0)
|
|
||||||
: "r"(a0), "r"(a1)
|
|
||||||
: "a3", "ra"
|
|
||||||
);
|
|
||||||
return v0;
|
|
||||||
}
|
|
||||||
#endif //}
|
|
||||||
|
|
||||||
#ifndef NO_WANT_MPROTECT /*{*/
|
|
||||||
static int mprotect(void const *addr, size_t len, int prot)
|
|
||||||
{
|
|
||||||
#define __NR_mprotect (125+ 4000)
|
|
||||||
register void const *const a0 asm("a0") = addr;
|
|
||||||
register size_t const a1 asm("a1") = len;
|
|
||||||
register int const a2 asm("a2") = prot;
|
|
||||||
register size_t v0 asm("v0") = __NR_mprotect;
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"bal sysgo_incl"
|
|
||||||
: "+r"(v0)
|
|
||||||
: "r"(a0), "r"(a1), "r"(a2)
|
|
||||||
: "a3", "ra"
|
|
||||||
);
|
|
||||||
return v0;
|
|
||||||
}
|
|
||||||
#endif /*} NO_WANT_MPROTECT */
|
|
||||||
|
|
||||||
#ifndef NO_WANT_MSYNC /*{*/
|
|
||||||
static int msync(void const *addr, size_t len, int prot)
|
|
||||||
{
|
|
||||||
#define __NR_msync (144+ 4000)
|
|
||||||
register void const *const a0 asm("a0") = addr;
|
|
||||||
register size_t const a1 asm("a1") = len;
|
|
||||||
register int const a2 asm("a2") = prot;
|
|
||||||
register size_t v0 asm("v0") = __NR_msync;
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"bal sysgo_incl"
|
|
||||||
: "+r"(v0)
|
|
||||||
: "r"(a0), "r"(a1), "r"(a2)
|
|
||||||
: "a3", "ra"
|
|
||||||
);
|
|
||||||
return v0;
|
|
||||||
}
|
|
||||||
#endif /*} NO_WANT_MSYNC */
|
|
||||||
|
|
||||||
#ifndef NO_WANT_OPEN /*{*/
|
|
||||||
static ssize_t open(char const *path, int kind, int mode)
|
|
||||||
{
|
|
||||||
#define __NR_open (5+ 4000)
|
|
||||||
register char const *const a0 asm("a0") = path;
|
|
||||||
register int const a1 asm("a1") = kind;
|
|
||||||
register int const a2 asm("a2") = mode;
|
|
||||||
register size_t v0 asm("v0") = __NR_open;
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"bal sysgo_incl"
|
|
||||||
: "+r"(v0)
|
|
||||||
: "r"(a0), "r"(a1), "r"(a2)
|
|
||||||
: "a3", "ra"
|
|
||||||
);
|
|
||||||
return v0;
|
|
||||||
}
|
|
||||||
#endif /* NO_WANT_OPEN }*/
|
|
||||||
|
|
||||||
#if DEBUG /*{*/
|
|
||||||
#ifndef NO_WANT_WRITE /*{*/
|
|
||||||
static ssize_t write(int fd, void const *buf, size_t len)
|
|
||||||
{
|
|
||||||
#define __NR_write (4+ 4000)
|
|
||||||
register int const a0 asm("a0") = fd;
|
|
||||||
register void const * const a1 asm("a1") = buf;
|
|
||||||
register size_t const a2 asm("a2") = len;
|
|
||||||
register size_t v0 asm("v0") = __NR_write;
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"bal sysgo_incl"
|
|
||||||
: "+r"(v0)
|
|
||||||
: "r"(a0), "r"(a1), "r"(a2)
|
|
||||||
: "a3", "ra"
|
|
||||||
);
|
|
||||||
return v0;
|
|
||||||
}
|
|
||||||
#endif /*}*/
|
|
||||||
#endif /*}*/
|
|
||||||
|
|
||||||
#else /*}{ generic */
|
#else /*}{ generic */
|
||||||
|
|
||||||
void *brk(void *);
|
void *brk(void *);
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ SZ_DLINE= 128 # size of data cache line in Apple G5
|
|||||||
|
|
||||||
#include "arch/mips/r3000/macros.ash"
|
#include "arch/mips/r3000/macros.ash"
|
||||||
#include "arch/mips/r3000/bits.ash"
|
#include "arch/mips/r3000/bits.ash"
|
||||||
#define NO_WANT_MMAP 1
|
|
||||||
|
|
||||||
/* These from /usr/include/asm/unistd.h */
|
/* These from /usr/include/asm/unistd.h */
|
||||||
__NR_cacheflush = 147+ __NR_Linux
|
__NR_cacheflush = 147+ __NR_Linux
|
||||||
|
|||||||
@@ -116,6 +116,8 @@ __NR_close = 6+ __NR_Linux
|
|||||||
__NR_exit = 1+ __NR_Linux
|
__NR_exit = 1+ __NR_Linux
|
||||||
__NR_ftruncate= 93+ __NR_Linux
|
__NR_ftruncate= 93+ __NR_Linux
|
||||||
__NR_memfd_create= 354+ __NR_Linux
|
__NR_memfd_create= 354+ __NR_Linux
|
||||||
|
MFD_EXEC= 0x10
|
||||||
|
EINVAL= 22
|
||||||
__NR_mmap = 90+ __NR_Linux
|
__NR_mmap = 90+ __NR_Linux
|
||||||
__NR_mprotect = 125+ __NR_Linux
|
__NR_mprotect = 125+ __NR_Linux
|
||||||
__NR_msync = 144+ __NR_LINUX
|
__NR_msync = 144+ __NR_LINUX
|
||||||
@@ -180,7 +182,7 @@ eof_n2b:
|
|||||||
subu a1,lxdst,v1 // actual length generated
|
subu a1,lxdst,v1 // actual length generated
|
||||||
sw a1,(lxdstlen)
|
sw a1,(lxdstlen)
|
||||||
li a2,ICACHE|DCACHE
|
li a2,ICACHE|DCACHE
|
||||||
li v0,__NR_cacheflush; syscall
|
li v0,__NR_cacheflush; syscall // ignore failure
|
||||||
|
|
||||||
lw v0,0(sp)
|
lw v0,0(sp)
|
||||||
jr ra
|
jr ra
|
||||||
@@ -192,13 +194,6 @@ eof_n2b:
|
|||||||
// // section UMF_LINUX or UMF_ANDROID goes here
|
// // section UMF_LINUX or UMF_ANDROID goes here
|
||||||
|
|
||||||
section ELFMAINZ; .set noreorder
|
section ELFMAINZ; .set noreorder
|
||||||
L72:
|
|
||||||
li a0,2 # fd stderr
|
|
||||||
li v0,__NR_write; syscall
|
|
||||||
die:
|
|
||||||
li a0,127
|
|
||||||
li v0,__NR_exit; syscall
|
|
||||||
|
|
||||||
unfold: # IN: $r_fexp,$r_auxv,$r_PMASK,$r_FOLD
|
unfold: # IN: $r_fexp,$r_auxv,$r_PMASK,$r_FOLD
|
||||||
addiu sp,sp,-sp_frame
|
addiu sp,sp,-sp_frame
|
||||||
sw $r_PMASK,F_PMASK(sp)
|
sw $r_PMASK,F_PMASK(sp)
|
||||||
@@ -206,10 +201,23 @@ unfold: # IN: $r_fexp,$r_auxv,$r_PMASK,$r_FOLD
|
|||||||
la $r_elfa,sz_pack2 - f_exp($r_fexp)
|
la $r_elfa,sz_pack2 - f_exp($r_fexp)
|
||||||
sub $r_elfa,$r_elfa,$r_LENX # $r_elfa= &Elf32_Ehdr of this stub
|
sub $r_elfa,$r_elfa,$r_LENX # $r_elfa= &Elf32_Ehdr of this stub
|
||||||
|
|
||||||
bal 0f; move a0,ra; .asciz "upx"; .balign 4
|
li a1,MFD_EXEC // modern
|
||||||
|
2:
|
||||||
|
bal 0f
|
||||||
|
move a0,ra
|
||||||
|
.asciz "upx"; .balign 4
|
||||||
0:
|
0:
|
||||||
move a1,zero
|
li v0,__NR_memfd_create; syscall // attempt recovery
|
||||||
li v0,__NR_memfd_create; syscall; move $r_mfd,v0
|
beqz a3,9f // success
|
||||||
|
move $r_mfd,v0 // return value
|
||||||
|
beqz a1,8f // failure if (, 0) already tried
|
||||||
|
addiu a1,v0,-EINVAL // MFD_EXEC appeared Linux 6.3 2023-04-23
|
||||||
|
beqz a1,2b // try old (, 0) if failure was EINVAL
|
||||||
|
nop
|
||||||
|
8:
|
||||||
|
HALT:
|
||||||
|
break // both (, MFD_EXEC) and (, 0) failed
|
||||||
|
9:
|
||||||
|
|
||||||
# alloca() for de-compressed stub
|
# alloca() for de-compressed stub
|
||||||
lw $r_szuf,sz_unc($r_FOLD) # sz_unc of fold
|
lw $r_szuf,sz_unc($r_FOLD) # sz_unc of fold
|
||||||
@@ -243,8 +251,8 @@ unfold: # IN: $r_fexp,$r_auxv,$r_PMASK,$r_FOLD
|
|||||||
move a2,$r_szuf # .sz_unc
|
move a2,$r_szuf # .sz_unc
|
||||||
move a1,sp
|
move a1,sp
|
||||||
move a0,$r_mfd
|
move a0,$r_mfd
|
||||||
li v0,__NR_write; syscall
|
li v0,__NR_write; syscall; bnez a3,HALT // faliure
|
||||||
move sp,fp
|
move sp,fp
|
||||||
|
|
||||||
# Map de-compressed stub
|
# Map de-compressed stub
|
||||||
addiu sp,-6*NBPW # space for all 6 args to mmap()
|
addiu sp,-6*NBPW # space for all 6 args to mmap()
|
||||||
@@ -254,25 +262,17 @@ unfold: # IN: $r_fexp,$r_auxv,$r_PMASK,$r_FOLD
|
|||||||
li a2,PROT_READ|PROT_EXEC # FIXME: PROT_WRITE is DEBUG only
|
li a2,PROT_READ|PROT_EXEC # FIXME: PROT_WRITE is DEBUG only
|
||||||
lw a1,sz_unc($r_FOLD)
|
lw a1,sz_unc($r_FOLD)
|
||||||
move a0,zero
|
move a0,zero
|
||||||
li v0,__NR_mmap; syscall; addiu sp,6*NBPW
|
li v0,__NR_mmap; syscall; bnez a3,HALT // failure
|
||||||
|
addiu sp,6*NBPW
|
||||||
sw v0,F_ADRU(sp)
|
sw v0,F_ADRU(sp)
|
||||||
addiu ra,v0,2*NBPW
|
addiu ra,v0,2*NBPW
|
||||||
|
|
||||||
move a0,$r_mfd; li v0,__NR_close; syscall
|
move a0,$r_mfd
|
||||||
|
li v0,__NR_close; syscall // ignore failure
|
||||||
|
|
||||||
jr ra
|
jr ra
|
||||||
addu $r_ADRX,$r_elfa,$r_ADRX # compressed data
|
addu $r_ADRX,$r_elfa,$r_ADRX # compressed data
|
||||||
|
|
||||||
memfd_create: .globl memfd_create
|
|
||||||
li v0,__NR_memfd_create; syscall
|
|
||||||
j ra
|
|
||||||
nop
|
|
||||||
|
|
||||||
ftruncate: .globl ftruncate
|
|
||||||
li v0,__NR_ftruncate; syscall
|
|
||||||
j ra
|
|
||||||
nop
|
|
||||||
|
|
||||||
zfind: # result in $r_auxv
|
zfind: # result in $r_auxv
|
||||||
lw v1,(a0); addiu a0,a0,NBPW
|
lw v1,(a0); addiu a0,a0,NBPW
|
||||||
bnez v1,zfind
|
bnez v1,zfind
|
||||||
|
|||||||
@@ -31,11 +31,11 @@ NBPW= 4
|
|||||||
#include "arch/mips/r3000/macros.ash"
|
#include "arch/mips/r3000/macros.ash"
|
||||||
#include "arch/mips/r3000/bits.ash"
|
#include "arch/mips/r3000/bits.ash"
|
||||||
|
|
||||||
#define NO_WANT_MMAP 1
|
/*
|
||||||
#define NO_WANT_CLOSE 1
|
eglibc-2.11.1/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h
|
||||||
#define NO_WANT_EXIT 1
|
#define __SYSCALL_CLOBBERS "$1", "$3", "$10", "$11", "$12", "$13", \
|
||||||
#define NO_WANT_MPROTECT 1
|
"$14", "$15", "$24", "$25", "hi", "lo", "memory"
|
||||||
#define NO_WANT_WRITE 1
|
*/
|
||||||
|
|
||||||
.set mips1
|
.set mips1
|
||||||
.set noreorder
|
.set noreorder
|
||||||
@@ -334,6 +334,14 @@ Psync: .globl Psync
|
|||||||
and TMP,a0,v0
|
and TMP,a0,v0
|
||||||
sub a0,TMP
|
sub a0,TMP
|
||||||
add a1,TMP
|
add a1,TMP
|
||||||
|
|
||||||
|
__NR_cacheflush = 147+ __NR_Linux
|
||||||
|
/* asm/cachectl.h */
|
||||||
|
ICACHE= 1<<0
|
||||||
|
DCACHE= 1<<1
|
||||||
|
li a2,DCACHE
|
||||||
|
li v0,__NR_cacheflush; syscall // ignore failure
|
||||||
|
|
||||||
li v0,__NR_msync; syscall
|
li v0,__NR_msync; syscall
|
||||||
jr ra
|
jr ra
|
||||||
addiu sp,2*NBPW
|
addiu sp,2*NBPW
|
||||||
@@ -405,12 +413,11 @@ mmap: .globl mmap
|
|||||||
addiu sp,sp,sp_frame
|
addiu sp,sp,sp_frame
|
||||||
|
|
||||||
sysgo: // src/mipsel.r3000-linux.elf-fold.S
|
sysgo: // src/mipsel.r3000-linux.elf-fold.S
|
||||||
sysgo2:
|
|
||||||
syscall
|
syscall
|
||||||
sysret:
|
sysret:
|
||||||
bgez a3,sysOK
|
beqz a3,sysOK // Linux MIPS convention
|
||||||
nop
|
nop
|
||||||
move v0,a3 // -errno: < 0, and > 0xfffff000
|
sub v0,zero,v0 // -errno: < 0, and > 0xfffff000
|
||||||
sysOK:
|
sysOK:
|
||||||
jr ra
|
jr ra
|
||||||
nop
|
nop
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ no_unf:
|
|||||||
|
|
||||||
POP2 a0,a1 // MATCH_81 dst, len
|
POP2 a0,a1 // MATCH_81 dst, len
|
||||||
add a1,a1,a0 // lo, hi
|
add a1,a1,a0 // lo, hi
|
||||||
|
addi a1,a1,-1 // highest covered addr
|
||||||
|
|
||||||
CACHELINE=32
|
CACHELINE=32
|
||||||
ori a0,a0,-1+ CACHELINE // highest addr on cache line
|
ori a0,a0,-1+ CACHELINE // highest addr on cache line
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ __NR_mprotect = 125
|
|||||||
__NR_munmap = 91
|
__NR_munmap = 91
|
||||||
__NR_open = 5
|
__NR_open = 5
|
||||||
__NR_write = 4
|
__NR_write = 4
|
||||||
|
__NR_openat = 286
|
||||||
|
|
||||||
EINVAL= 22
|
EINVAL= 22
|
||||||
|
|
||||||
|
|||||||
@@ -97,11 +97,31 @@ Pprotect: .globl Pprotect
|
|||||||
add a1,a1,r0
|
add a1,a1,r0
|
||||||
b mprotect
|
b mprotect
|
||||||
|
|
||||||
Psync: .globl Psync
|
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; lwz 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
|
||||||
|
|
||||||
|
// System calls write() and msync(,,MS_SYNC) should implicitly flush dcache
|
||||||
|
// over the covered region before doing the write().
|
||||||
|
// But strange errors were observed, so flush explicitly.
|
||||||
|
CACHELINE=32
|
||||||
|
sweep= a3 // temp addr
|
||||||
|
dlast= a4 // final addr
|
||||||
|
add dlast,a0,a1 // addr + len
|
||||||
|
addi dlast,dlast,-1 // highest covered addr
|
||||||
|
ori sweep,a0,-1+ CACHELINE // highest addr on initial cache line
|
||||||
|
fl_loop:
|
||||||
|
dcbst 0,sweep // initiate store (modified) cacheline to memory
|
||||||
|
cmpl cr0,sweep,dlast // did we cover the highest-addressed byte?
|
||||||
|
icbi 0,sweep // discard instructions from cacheline
|
||||||
|
addi sweep,sweep,CACHELINE // highest addr on next line
|
||||||
|
blt cr0,fl_loop // not done yet
|
||||||
|
|
||||||
|
sync // wait for all memory operations to finish
|
||||||
|
isync // discard prefetched instructions (if any)
|
||||||
|
|
||||||
b msync
|
b msync
|
||||||
|
|
||||||
Pmap: .globl Pmap
|
Pmap: .globl Pmap
|
||||||
@@ -290,6 +310,7 @@ SYS_munmap= 91
|
|||||||
SYS_ftruncate= 93
|
SYS_ftruncate= 93
|
||||||
SYS_mprotect= 125
|
SYS_mprotect= 125
|
||||||
SYS_msync= 144
|
SYS_msync= 144
|
||||||
|
SYS_openat= 286
|
||||||
SYS_memfd_create= 360
|
SYS_memfd_create= 360
|
||||||
|
|
||||||
exit: .globl exit
|
exit: .globl exit
|
||||||
@@ -308,6 +329,8 @@ read: .globl read
|
|||||||
li r0,SYS_read; 5: b 5f
|
li r0,SYS_read; 5: b 5f
|
||||||
open: .globl open
|
open: .globl open
|
||||||
li r0,SYS_open; 5: b 5f
|
li r0,SYS_open; 5: b 5f
|
||||||
|
openat: .globl openat
|
||||||
|
li r0,SYS_openat; 5: b 5f
|
||||||
mprotect: .globl mprotect
|
mprotect: .globl mprotect
|
||||||
li 0,SYS_mprotect; 5: b 5f
|
li 0,SYS_mprotect; 5: b 5f
|
||||||
msync: .globl msync
|
msync: .globl msync
|
||||||
@@ -317,33 +340,141 @@ munmap: .globl munmap
|
|||||||
mmap: .globl mmap
|
mmap: .globl mmap
|
||||||
li r0,SYS_mmap
|
li r0,SYS_mmap
|
||||||
sysgo:
|
sysgo:
|
||||||
|
#ifndef TRACE //{
|
||||||
|
#define TRACE 0
|
||||||
|
#endif //}
|
||||||
|
|
||||||
|
#if TRACE //{
|
||||||
|
FD_STDERR= 2
|
||||||
|
Tr1= 0*NBPW
|
||||||
|
Tr0= 1*NBPW
|
||||||
|
Tr3= 2*NBPW // a0
|
||||||
|
Tr4= 3*NBPW // a1
|
||||||
|
Tr5= 4*NBPW // a2
|
||||||
|
Tr6= 5*NBPW // a3
|
||||||
|
Tr7= 6*NBPW // a4
|
||||||
|
Tr8= 7*NBPW // a5
|
||||||
|
Tlr= 8*NBPW
|
||||||
|
Tctr= 9*NBPW
|
||||||
|
Tbuf= 10*NBPW
|
||||||
|
T_FRAME= 10*NBPW + 96
|
||||||
|
stwu sp,-T_FRAME(sp)
|
||||||
|
stw r0,Tr0(sp) // SYS_n
|
||||||
|
stw r3,Tr3(sp) // a0
|
||||||
|
stw r4,Tr4(sp) // a1
|
||||||
|
stw r5,Tr5(sp) // a2
|
||||||
|
stw r6,Tr6(sp) // a3
|
||||||
|
stw r7,Tr7(sp) // a4
|
||||||
|
stw r8,Tr8(sp) // a5
|
||||||
|
mflr r0; stw r0,Tlr(sp)
|
||||||
|
mfctr r0; stw r0,Tctr(sp)
|
||||||
|
outp= r3
|
||||||
|
p_word= r4
|
||||||
|
Tw= r5
|
||||||
|
Thex= r6
|
||||||
|
nib= r7
|
||||||
|
|
||||||
|
call get_Thex
|
||||||
|
la outp,-1+Tbuf(sp) // output ptr (for update)
|
||||||
|
la p_word,-NBPW+Tr1(sp)
|
||||||
|
Lword:
|
||||||
|
lwzu Tw,NBPW(p_word) // next word
|
||||||
|
call Tword
|
||||||
|
la r0,NBPW+Tr8(sp)
|
||||||
|
cmpw r0,p_word; bgt Lword
|
||||||
|
li r0,' '; call Tflush
|
||||||
|
|
||||||
|
lwz r0,Tlr(sp); mtlr r0
|
||||||
|
lwz r0,Tctr(sp); mtctr r0
|
||||||
|
lwz r0,Tr0(sp)
|
||||||
|
lwz a0,Tr3(sp)
|
||||||
|
lwz a1,Tr4(sp)
|
||||||
|
lwz a2,Tr5(sp)
|
||||||
|
lwz a3,Tr6(sp)
|
||||||
|
lwz a4,Tr7(sp)
|
||||||
|
lwz a5,Tr8(sp)
|
||||||
|
#endif //}
|
||||||
sc
|
sc
|
||||||
bns+ no_fail // 'bns': branch if No Summary[Overflow]
|
bns+ no_fail // 'bns': branch if No Summary[Overflow]
|
||||||
li a0,-1 // failure; IGNORE errno
|
neg a0,a0 // failure: return -errno (always >[unsigned] PAGE_MASK)
|
||||||
no_fail:
|
no_fail:
|
||||||
|
#if TRACE //{
|
||||||
|
stw r0,Tr0(sp) // SYS_n
|
||||||
|
stw r3,Tr3(sp) // a0
|
||||||
|
stw r4,Tr4(sp) // a1
|
||||||
|
stw r5,Tr5(sp) // a2
|
||||||
|
stw r6,Tr6(sp) // a3
|
||||||
|
stw r7,Tr7(sp) // a4
|
||||||
|
stw r8,Tr8(sp) // a5
|
||||||
|
mflr r0; stw r0,Tlr(sp)
|
||||||
|
mfctr r0; stw r0,Tctr(sp)
|
||||||
|
|
||||||
|
mr Tw,a0 // value from sc
|
||||||
|
call get_Thex
|
||||||
|
la outp,-1+Tbuf(sp) // output ptr (for update)
|
||||||
|
la p_word,NBPW+Tr8(sp); call Tword // one word only
|
||||||
|
li r0,'\n'; call Tflush
|
||||||
|
|
||||||
|
lwz r0, Tlr(sp); mtlr r0
|
||||||
|
lwz r0,Tctr(sp); mtctr r0
|
||||||
|
lwz r0,Tr0(sp)
|
||||||
|
lwz a0,Tr3(sp)
|
||||||
|
lwz a1,Tr4(sp)
|
||||||
|
lwz a2,Tr5(sp)
|
||||||
|
lwz a3,Tr6(sp)
|
||||||
|
lwz a4,Tr7(sp)
|
||||||
|
lwz a5,Tr8(sp)
|
||||||
|
addi sp,sp,T_FRAME
|
||||||
|
#endif //}
|
||||||
ret
|
ret
|
||||||
|
#if TRACE //{
|
||||||
|
Tword:
|
||||||
|
li r0,8; mtctr r0 // 8 nibbles per word
|
||||||
|
li r0,' '; stbu r0,1(outp) // leading punctuation for word
|
||||||
|
Tnib:
|
||||||
|
rotlwi Tw,Tw,4; andi. nib,Tw,0xF; add nib,nib,Thex
|
||||||
|
lbz r0,0(nib)
|
||||||
|
stbu r0,1(outp)
|
||||||
|
bdnz Tnib
|
||||||
|
ret
|
||||||
|
|
||||||
|
Tflush:
|
||||||
|
stbu r0,1(outp) // terminating punctuation
|
||||||
|
la outp,1(outp) // update adjust
|
||||||
|
la a1,Tbuf(sp) // in Tflush
|
||||||
|
subf a2,a1,outp
|
||||||
|
li a0,FD_STDERR; li r0,SYS_write; sc // write(FD_STDERR, ptr, size)
|
||||||
|
ret
|
||||||
|
|
||||||
|
get_Thex:
|
||||||
|
mflr r0
|
||||||
|
call 0f; .asciI "0123456789abcdef"; 0:
|
||||||
|
mflr Thex
|
||||||
|
mtlr r0; ret
|
||||||
|
#endif //}
|
||||||
|
|
||||||
__NR_memfd_create= 360
|
__NR_memfd_create= 360
|
||||||
MFD_EXEC= 0x10
|
MFD_EXEC= 0x10
|
||||||
EINVAL= 22
|
EINVAL= 22
|
||||||
|
|
||||||
memfd_create: .globl memfd_create
|
memfd_create: .globl memfd_create
|
||||||
mflr a3
|
mflr r0; stwu r0,-2*NBPW(sp)
|
||||||
li a1,MFD_EXEC // modern clue
|
li a1,MFD_EXEC // modern clue
|
||||||
mfd_try:
|
mfd_try:
|
||||||
call 0f; .asciz "upx"; 0:
|
call 0f; .asciz "upx"; 0:
|
||||||
mflr a0
|
mflr a0
|
||||||
SYS_memfd_create= __NR_memfd_create
|
SYS_memfd_create= __NR_memfd_create
|
||||||
li r0,SYS_memfd_create; sc; bns+ 0f // success
|
li r0,SYS_memfd_create; call sysgo
|
||||||
cmpi cr7,a1,0; bne cr7,1f // not 2nd time
|
cmpi cr7,a0,0; bge cr7,0f // success
|
||||||
|
cmpi cr6,a1,0; bne cr6,1f // not 2nd time
|
||||||
8:
|
8:
|
||||||
teq r0,r0 // 2nd error, or unexpected 1st error
|
teq r3,r3 // 2nd error, or unexpected 1st error
|
||||||
1:
|
1:
|
||||||
cmpi cr7,a0,EINVAL; bne cr7,8b // unexpected 1st error
|
cmpi cr7,a0,-EINVAL; bne cr7,8b // unexpected 1st error
|
||||||
li a1,0; b mfd_try // 2nd attempt
|
li a1,0; b mfd_try // 2nd attempt
|
||||||
0:
|
0:
|
||||||
mtlr a3
|
lwz r0,0(sp); la sp,2*NBPW(sp)
|
||||||
ret
|
mtlr r0; ret
|
||||||
|
|
||||||
memcpy: .globl memcpy // (dst, src, n)
|
memcpy: .globl memcpy // (dst, src, n)
|
||||||
cmpwi a2,0; beq- 9f
|
cmpwi a2,0; beq- 9f
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ no_unf:
|
|||||||
|
|
||||||
POP2 a0,a1 // MATCH_81 dst, len
|
POP2 a0,a1 // MATCH_81 dst, len
|
||||||
add a1,a1,a0 // lo, hi
|
add a1,a1,a0 // lo, hi
|
||||||
|
addi a1,a1,-1 // highest covered addr
|
||||||
|
|
||||||
CACHELINE=32
|
CACHELINE=32
|
||||||
ori a0,a0,-1+ CACHELINE // highest addr on cache line
|
ori a0,a0,-1+ CACHELINE // highest addr on cache line
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user