From a6bc271e0d76de97fa9298bba519404153de7faf Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Wed, 5 Oct 2016 19:05:03 +0200 Subject: [PATCH 1/2] Update testsuite. --- .github/travis_init.sh | 28 ++++++------ .github/travis_testsuite_1.sh | 83 ++++++++++++++++++++++++----------- .gitlab-ci.yml | 58 ++++++++++++++++++++++++ .travis.yml | 13 +++--- 4 files changed, 136 insertions(+), 46 deletions(-) create mode 100644 .gitlab-ci.yml diff --git a/.github/travis_init.sh b/.github/travis_init.sh index 19066f41..8b99cb82 100644 --- a/.github/travis_init.sh +++ b/.github/travis_init.sh @@ -54,15 +54,7 @@ if [[ -n $APPVEYOR_JOB_ID ]]; then AR="link -lib"; CC="cl"; CXX="cl" ;; # standard system compiler esac fi # APPVEYOR_JOB_ID -if [[ -n $CIRCLE_BUILD_NUM ]]; then - case $BM_C in - gcc | gcc-m??) - CC="gcc"; CXX="g++" ;; # standard system compiler - gcc-[34].[0-9]-m??) - v=${BM_C:4:3}; CC="gcc-$v"; CXX="g++-$v" ;; - esac -fi # $CIRCLE_BUILD_NUM -if [[ -n $TRAVIS_JOB_ID ]]; then +if [[ -n $TRAVIS_JOB_ID ]]; then # TODO: should check for Ubuntu and not for Travis if [[ -n $BM_CROSS ]]; then BUILD_LOCAL_ZLIB=1 case $BM_CROSS-$BM_C in @@ -107,9 +99,9 @@ case $BM_C in gcc*-m32) CC="$CC -m32"; CXX="$CXX -m32" ;; gcc*-m64) CC="$CC -m64"; CXX="$CXX -m64" ;; esac -case $BM_C in - clang* | gcc*) CC="$CC -std=gnu89" ;; -esac +if [[ $BM_C =~ (^|\-)(clang|gcc)($|\-) ]]; then + CC="$CC -std=gnu89" +fi export AR CC CXX fi # CC_OVERRIDE @@ -128,9 +120,16 @@ mkbuilddirs() { done } # search for an existing toptop builddir -for d in ./build/travis ./build ../build/travis ../build; do - [[ -z $toptop_builddir && -d $d ]] && toptop_builddir=$(readlink -mn -- "$d") +for d in . ..; do + for subdir in "local" appveyor circle gitlab travis .; do + dd=$d/build/$subdir + if [[ -z $toptop_builddir && -d $dd ]]; then + toptop_builddir=$(readlink -en -- "$dd") + break 2 + fi + done done +unset d subdir dd [[ -z $toptop_builddir ]] && toptop_builddir=$(readlink -mn -- ./build) [[ -z $toptop_bdir ]] && toptop_bdir=$(readlink -mn -- "$toptop_builddir/$BM_C/$BM_B") @@ -144,6 +143,7 @@ unset toptop_builddir toptop_bdir # ensure absolute directories make_absolute() { + local d while [[ $# -gt 0 ]]; do if [[ -n ${!1} ]]; then d=$(readlink -mn -- "${!1}") diff --git a/.github/travis_testsuite_1.sh b/.github/travis_testsuite_1.sh index f302d697..26d84a28 100644 --- a/.github/travis_testsuite_1.sh +++ b/.github/travis_testsuite_1.sh @@ -155,9 +155,39 @@ testsuite_check_sha $testdir # /*********************************************************************** # // compression tests +# // info: we use fast compression levels because we want to +# // test UPX and not the compression libraries # ************************************************************************/ -testdir=t02_compress_ucl_3_no_filter +testdir=t02_compress_ucl_nrv2b_3_no_filter +mkdir $testdir; echo -n "\ +aefe34311318ea210df73cc3c8fa8c7258673f2e27f8a511a3a8f2af135a918d *amd64-linux.elf/upx-3.91 +a22a5bf72d564887d4b77f2d4e578ffece6e71b2a60cc1050862e13a65bff7c8 *arm-wince.pe/upx-3.91.exe +9d0ccc7e39ef23845b858869bf9718c43de5fd0eee7c61edbd63565a55110032 *armeb-linux.elf/upx-3.91 +03988f039a5372125bf90b6658516656a8582dd1c46423cb12faeb82870348bb *i386-dos32.djgpp2.coff/upx-3.91.exe +91a9d980788c2974448c83a84af245cf22dbbe01d33850849c8b0ebcec79aab4 *i386-linux.elf/upx-3.91 +1f4fcebacc6898338445c921ccec7ae51f4e21009c82cac9f66b70f556ee102b *i386-win32.pe/upx-3.91.exe +08baacfa5d7e9339cd67263f41983e7c6f773fe9fce862f5daad58a2ac57ce28 *m68k-atari.tos/upx-3.91.ttp +6b33a055b2c85dddd5fa6d846939d114ee24a342205f5a23aad31b8873041592 *mipsel-linux.elf/upx-3.91 +611bde9c83fe28dd8f7119414724318c23ef532577bb404d618d100e3a801fe8 *powerpc-linux.elf/upx-3.91 +" > $testdir/.sha256sums.expected +time testsuite_run_compress --nrv2b -3 --no-filter + +testdir=t02_compress_ucl_nrv2d_3_no_filter +mkdir $testdir; echo -n "\ +6e9fd36871cf4afebf6609a39690565c933668ec6791e547916e93bbb32bbbd8 *amd64-linux.elf/upx-3.91 +45e86901dde8ef9ac9e9727110f629b57ca96d078e685f167b848e26a19a9693 *arm-wince.pe/upx-3.91.exe +5f1584a75584ef3421ba4aec8167422e78d33e2451ef9a925560d1112eacf88e *armeb-linux.elf/upx-3.91 +8d2938aa4c2b6ee3c50a2fce1041592a766d48c26605b50129b8a14697cc9694 *i386-dos32.djgpp2.coff/upx-3.91.exe +40ecb345f3094446b5035e058b3d2351c42cc9f108333e3e4d51a64142d8950c *i386-linux.elf/upx-3.91 +d96f0e8f42aff4c1b7b50d410498fd422852d9866338a12748f91488319a193f *i386-win32.pe/upx-3.91.exe +5abbe27c76c6f12fb560e68dbf56dd0f39bb089428374c42be7585d09f7df1fd *m68k-atari.tos/upx-3.91.ttp +ac552f23195dfebd82558e0523eaa6ece695c711f298ed9a3cdbb571f1df4f1d *mipsel-linux.elf/upx-3.91 +abd1d89deb62839e957089e636a1e53bfc7436f6fd2a210ac92907346c239562 *powerpc-linux.elf/upx-3.91 +" > $testdir/.sha256sums.expected +time testsuite_run_compress --nrv2d -3 --no-filter + +testdir=t02_compress_ucl_nrv2e_3_no_filter mkdir $testdir; echo -n "\ 86fcb3e1c6255511173ff9a86baf3407263677dfe73bff072b978da41c892bcb *amd64-linux.elf/upx-3.91 16c0493d4d89e6c581748826afd26d2b4caeeae6074b0bdcf55747a4bc9777a5 *arm-wince.pe/upx-3.91.exe @@ -169,21 +199,21 @@ a94d5ff62c061d60d64e838ea4bb7610a75cf26a0761b26f9da0efbd38e87ebe *i386-win32.pe/ b61aa58e493b3961646e5c0bcb7f19f74b439fe8f5c934db25b00f97f51a05d0 *mipsel-linux.elf/upx-3.91 21071b7dfa542a7e3d6c6a3586b4b844d28270a2beccdc5d03f608a2e71b787d *powerpc-linux.elf/upx-3.91 " > $testdir/.sha256sums.expected -time testsuite_run_compress -3 --no-filter +time testsuite_run_compress --nrv2e -3 --no-filter -testdir=t03_compress_lzma_1_no_filter +testdir=t03_compress_lzma_2_no_filter mkdir $testdir; echo -n "\ -9d5a98a9f2f17e4d7066e0b953dae94cdbb1ea28c6c792ce8f92e8b8d932b311 *amd64-linux.elf/upx-3.91 -99ad77f2280a5b4791ead800c7d4d5b29aa49ce40319616f682c1b29ddf20702 *arm-wince.pe/upx-3.91.exe -07ca9736f1cd478bde2c8da95a6ecb95bd865dcf8ea48a396b13050ac40d196e *armeb-linux.elf/upx-3.91 -9e852e95b38ca57319d1e911bf97226a82b60dd336e201496c30bf62943aecce *i386-dos32.djgpp2.coff/upx-3.91.exe -e408fbcbbe422c06fce0cfed5d28ea0f0ef7c1b9225bf1f5a7d789cc84fb93b8 *i386-linux.elf/upx-3.91 -e249633d550abe84953a15668e3d74660fd63e9e935bec8564d9df08116b015d *i386-win32.pe/upx-3.91.exe -dd561ff9c530711be0934db352cf40f606066c280e27b26e7f8fd6dd1a087e6a *m68k-atari.tos/upx-3.91.ttp -813536a8f1b8b8852ed52c560afce8b51612876ac5a3a9e51434d8677932ef7b *mipsel-linux.elf/upx-3.91 -5a3607a37534bab2a22c2e1dc3f1aa26144c2b75c261f092a3d9116d884edc1a *powerpc-linux.elf/upx-3.91 +2aee8c5a4d1fb9f7a84700b9880da1098544c110a188750a937e0c231cce664f *amd64-linux.elf/upx-3.91 +e6123d50ad24a10412ee97d9b440f5d5f9830f44a74aadd6ca20a7cee9a09d47 *arm-wince.pe/upx-3.91.exe +3e7446d8ac6d9b442d6c8e6a3c45aec97f54aa8e90bdc554dd39976495bfa36a *armeb-linux.elf/upx-3.91 +1ecd559c89d3995fa0e7ecfa8e60b7746f804fc74ddce87d2c6cbeac8e372a39 *i386-dos32.djgpp2.coff/upx-3.91.exe +8a9bde7a9b4a8f6c4efc4a28afe2b3cabe6c0b820dbc38c74c6abae73093b784 *i386-linux.elf/upx-3.91 +37f4f82c3de1ea3e444740b1112f42c8011129825bee011889beb4a592f5d9df *i386-win32.pe/upx-3.91.exe +35333e53bc2f8a4a8e346f4fba0d366f024bd63d0b8bb083967193ae6466b6ff *m68k-atari.tos/upx-3.91.ttp +20526efe085aee06bfde1952f90e9d0e1524e0cb56d582caa720934f55562b78 *mipsel-linux.elf/upx-3.91 +49c88eb39416858ac1a485dfd3bcee3825ef76ed5a16cb951f68f212a057c014 *powerpc-linux.elf/upx-3.91 " > $testdir/.sha256sums.expected -time testsuite_run_compress -1 --lzma --no-filter +time testsuite_run_compress --lzma -2 --no-filter testdir=t04_compress_ucl_2_all_filters mkdir $testdir; echo -n "\ @@ -211,21 +241,21 @@ dd561ff9c530711be0934db352cf40f606066c280e27b26e7f8fd6dd1a087e6a *m68k-atari.tos 813536a8f1b8b8852ed52c560afce8b51612876ac5a3a9e51434d8677932ef7b *mipsel-linux.elf/upx-3.91 5a3607a37534bab2a22c2e1dc3f1aa26144c2b75c261f092a3d9116d884edc1a *powerpc-linux.elf/upx-3.91 " > $testdir/.sha256sums.expected -time testsuite_run_compress -1 --all-methods --no-filter +time testsuite_run_compress --all-methods -1 --no-filter -testdir=t06_compress_all_methods_no_lzma_no_filter +testdir=t06_compress_all_methods_no_lzma_5_no_filter mkdir $testdir; echo -n "\ -7ff6b8f6f8ce5dfbe8dacd5f9e1ebc8c9af20059a00c52b5e3703d31718b4839 *amd64-linux.elf/upx-3.91 -63be06791e4caa5ea530bd58d0fe5af7830fe6907cebb4de6eec5a73ff57bf58 *arm-wince.pe/upx-3.91.exe -b95b5a9a1ba4577df41c135b0061a7282e633f006ce6a5c729d73a708f80c0f0 *armeb-linux.elf/upx-3.91 -bbf7d2290c2aff5c914f14aaa7a089895888f3e25b468ba406f9723c046b0ccb *i386-dos32.djgpp2.coff/upx-3.91.exe -b615ce3f45d7b727594c550cb2066fff154653ffd64a5329ee6723175224cc47 *i386-linux.elf/upx-3.91 -a647ed1aea16f58b544228279ad7159cd3ec5c3533efef1fd2df5a5a59b5d663 *i386-win32.pe/upx-3.91.exe -4ce409cc6c1a0e26b0d5e361cd6ef7b0198830a3244235eff3edb18099d1ad22 *m68k-atari.tos/upx-3.91.ttp -8b2b9f13dd613b62d9028d2c773a2633bb756a084e5620b3496449ffe1c2dc9e *mipsel-linux.elf/upx-3.91 -84e82cfffa594230ee44aa06937ccb088778c05d5d67985a314764385018f59d *powerpc-linux.elf/upx-3.91 +d2607801730ae28244a4ca310676f912131383d6126801df05ff54903c9ef18a *amd64-linux.elf/upx-3.91 +575df11d8450ce11fabc007b913a95977f6e131d0472c92e22ef3af12d325904 *arm-wince.pe/upx-3.91.exe +7ee87918e7473d44c3a5af014cad48298f0a99c4028880d0a87a5a1776b977c7 *armeb-linux.elf/upx-3.91 +dcdcad70f1b79290022041938957dccd4daa2f2fad166864cfb55f3400d5b03b *i386-dos32.djgpp2.coff/upx-3.91.exe +fece6171853a531cffdf264ae0ca9a47ee3b9b9a1416adc1ba2632e5da8a5d93 *i386-linux.elf/upx-3.91 +771416e8a06041ab15f5f45702328eae8db53fcf29aee90c93815e1fc5e819de *i386-win32.pe/upx-3.91.exe +73dc44603f0fbf3a2a9e470c1291671b2670fa7f2f0cb54a8a7cdb883d1783c9 *m68k-atari.tos/upx-3.91.ttp +48877f2e614d4697e0ebc6d3f69e59328e0942e48bb5e54b4d9b9fe3cb917d9f *mipsel-linux.elf/upx-3.91 +9c7f990bb0d322e5ac5131cb4180541b3d8918e1c81a730311e359e456ee92d0 *powerpc-linux.elf/upx-3.91 " > $testdir/.sha256sums.expected -time testsuite_run_compress --all-methods --no-lzma --no-filter +time testsuite_run_compress --all-methods --no-lzma -5 --no-filter testsuite_header "UPX testsuite summary" @@ -239,6 +269,9 @@ if [[ -f $upx_exe ]]; then fi echo "upx_testsuite_SRCDIR='$upx_testsuite_SRCDIR'" echo "upx_testsuite_BUILDDIR='$upx_testsuite_BUILDDIR'" +echo ".sha256sums.{expected,current}:" +cat */.sha256sums.expected | LC_ALL=C sort -u | wc +cat */.sha256sums.current | LC_ALL=C sort -u | wc echo if [[ $exit_code == 0 ]]; then echo "UPX testsuite passed. All done." diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..3c93e9f4 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,58 @@ +# Support for GibLab CI -- https://gitlab.com/ +# Copyright (C) Markus Franz Xaver Johannes Oberhumer + +.fedora_install_compilers: &fedora_install_compilers + time dnf install -y --best --allowerasing + coreutils curl diffutils grep gzip sed + bzip2 file findutils git perl tar wget which xz + clang gcc gcc-c++ lcov make valgrind + glibc-devel libasan libstdc++-devel libubsan zlib-devel + glibc-devel.i686 libasan.i686 libstdc++-devel.i686 libubsan.i686 zlib-devel.i686 + +before_script: + - uname -a; pwd; id; umask; env + - time rpm -qa | LC_ALL=C sort + - *fedora_install_compilers + - umask 022; mkdir -p ../deps ../build/gitlab + - git submodule update --init --recursive + - cd ../deps && time wget -q -O - https://github.com/upx/upx/releases/download/v3.00/ucl-1.03.tar.xz | tar -xJ + - cd ../deps && time wget -q -O - https://github.com/upx/upx/releases/download/v3.00/zlib-1.2.8.tar.xz | tar -xJ + - cd ../deps && time git clone https://github.com/upx/upx-testsuite + - cd $CI_PROJECT_DIR + - export TRAVIS_OS_NAME=linux + +Fedora23-clang+gcc-m32+m64: + image: fedora:23 + script: + - time C=clang-m32 bash ./.github/travis_build.sh + - time C=gcc-m32 bash ./.github/travis_build.sh + - time C=clang-m64 bash ./.github/travis_build.sh + - time C=gcc-m64 bash ./.github/travis_build.sh + - time C=gcc-m64 B=sanitize bash ./.github/travis_build.sh + - time C=clang-m32 bash ./.github/travis_testsuite_1.sh + - time C=gcc-m32 bash ./.github/travis_testsuite_1.sh + - time C=clang-m64 bash ./.github/travis_testsuite_1.sh + - time C=gcc-m64 bash ./.github/travis_testsuite_1.sh + - time C=gcc-m64 B=sanitize bash ./.github/travis_testsuite_1.sh + - time C=gcc-m64 T=valgrind bash ./.github/travis_testsuite_1.sh + tags: [ shared ] + except: [ tags ] + +Fedora24-clang+gcc-m32+m64: + image: fedora:24 + script: + - time C=clang-m32 bash ./.github/travis_build.sh + - time C=gcc-m32 bash ./.github/travis_build.sh + - time C=clang-m64 bash ./.github/travis_build.sh + - time C=gcc-m64 bash ./.github/travis_build.sh + - time C=gcc-m64 B=sanitize bash ./.github/travis_build.sh + - time C=clang-m32 bash ./.github/travis_testsuite_1.sh + - time C=gcc-m32 bash ./.github/travis_testsuite_1.sh + - time C=clang-m64 bash ./.github/travis_testsuite_1.sh + - time C=gcc-m64 bash ./.github/travis_testsuite_1.sh + - time C=gcc-m64 B=sanitize bash ./.github/travis_testsuite_1.sh + - time C=gcc-m64 T=valgrind bash ./.github/travis_testsuite_1.sh + tags: [ shared ] + except: [ tags ] + +# vim:set ts=2 sw=2 et: diff --git a/.travis.yml b/.travis.yml index adc80605..fde476dc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,13 +14,12 @@ branches: - devel - travis -addons: - sources: &S - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.5 - - llvm-toolchain-precise-3.6 - - llvm-toolchain-precise-3.7 - - llvm-toolchain-precise-3.8 +.ubuntu_toolchain_sources: &S + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.5 + - llvm-toolchain-precise-3.6 + - llvm-toolchain-precise-3.7 + - llvm-toolchain-precise-3.8 env: global: From ec082ee023cc9becbe0033c314fd38bc99b77078 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Thu, 6 Oct 2016 00:45:42 +0200 Subject: [PATCH 2/2] Cosmetic cleanup. --- src/bele.h | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/bele.h b/src/bele.h index f5f306c7..6b565728 100644 --- a/src/bele.h +++ b/src/bele.h @@ -325,7 +325,7 @@ __packed_struct(BE16) BE16& operator <<= (unsigned v) { set_be16(d, get_be16(d) << v); return *this; } BE16& operator >>= (unsigned v) { set_be16(d, get_be16(d) >> v); return *this; } - operator unsigned () const { return get_be16(d); } + operator unsigned () const { return get_be16(d); } __packed_struct_end() @@ -343,7 +343,7 @@ __packed_struct(BE32) BE32& operator <<= (unsigned v) { set_be32(d, get_be32(d) << v); return *this; } BE32& operator >>= (unsigned v) { set_be32(d, get_be32(d) >> v); return *this; } - operator unsigned () const { return get_be32(d); } + operator unsigned () const { return get_be32(d); } __packed_struct_end() @@ -361,7 +361,7 @@ __packed_struct(BE64) BE64& operator <<= (unsigned v) { set_be64(d, get_be64(d) << v); return *this; } BE64& operator >>= (unsigned v) { set_be64(d, get_be64(d) >> v); return *this; } - operator upx_uint64_t () const { return get_be64(d); } + operator upx_uint64_t () const { return get_be64(d); } __packed_struct_end() @@ -379,16 +379,13 @@ __packed_struct(LE16) LE16& operator <<= (unsigned v) { set_le16(d, get_le16(d) << v); return *this; } LE16& operator >>= (unsigned v) { set_le16(d, get_le16(d) >> v); return *this; } - operator unsigned () const { return get_le16(d); } + operator unsigned () const { return get_le16(d); } __packed_struct_end() __packed_struct(LE32) unsigned char d[4]; - //inline LE32() { } - //LE32(unsigned v) { set_le32(d, v); } - LE32& operator = (unsigned v) { set_le32(d, v); return *this; } LE32& operator += (unsigned v) { set_le32(d, get_le32(d) + v); return *this; } LE32& operator -= (unsigned v) { set_le32(d, get_le32(d) - v); return *this; } @@ -400,7 +397,7 @@ __packed_struct(LE32) LE32& operator <<= (unsigned v) { set_le32(d, get_le32(d) << v); return *this; } LE32& operator >>= (unsigned v) { set_le32(d, get_le32(d) >> v); return *this; } - operator unsigned () const { return get_le32(d); } + operator unsigned () const { return get_le32(d); } __packed_struct_end() @@ -418,7 +415,7 @@ __packed_struct(LE64) LE64& operator <<= (unsigned v) { set_le64(d, get_le64(d) << v); return *this; } LE64& operator >>= (unsigned v) { set_le64(d, get_le64(d) >> v); return *this; } - operator upx_uint64_t () const { return get_le64(d); } + operator upx_uint64_t () const { return get_le64(d); } __packed_struct_end()