CI updates

This commit is contained in:
Markus F.X.J. Oberhumer 2024-06-26 11:45:35 +02:00
parent 17cf73001c
commit 261609f706
8 changed files with 89 additions and 30 deletions

View File

@ -166,13 +166,13 @@ jobs:
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
fi
- name: Run file system test suite
- name: Run file system 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/test_symlinks.sh' ::: $jobs
- name: Run file system test suite with Valgrind
- name: Run file system tests with Valgrind
if: false # note: valgrind is SLOW
run: |
if command -v valgrind >/dev/null; then
@ -237,6 +237,7 @@ jobs:
- name: Check out test suite
if: ${{ matrix.testsuite }}
run: git clone --depth=1 https://github.com/upx/upx-testsuite ../deps/upx-testsuite
- run: set -x; xcode-select -p || true; xcodebuild -version || true
- run: set -x; clang --version; clang++ --version
- run: clang -E -x c -dM /dev/null # list predefined macros for C
- run: clang++ -E -x c++ -dM /dev/null # list predefined macros for C++
@ -283,7 +284,7 @@ jobs:
test -n "${{ matrix.gcc }}" && jobs="$jobs gcc/debug gcc/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
- name: Run file system test suite
- name: Run file system tests
if: ${{ matrix.testsuite }} # for coreutils readlink
run: |
export PATH="$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH"
@ -615,7 +616,7 @@ jobs:
jobs="${ZIG_TARGET}${ZIG_PIC}/debug ${ZIG_TARGET}${ZIG_PIC}/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/zig/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
- name: Run file system test suite
- 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' }}
run: |
apk add coreutils sudo

View File

@ -49,7 +49,7 @@
#if defined(BELE_RTP)
struct AbstractPolicy {
explicit inline AbstractPolicy() noexcept {}
explicit inline AbstractPolicy() noexcept = default;
virtual inline ~AbstractPolicy() noexcept {}
V bool isBE() C = 0;
V bool isLE() C = 0;
@ -97,7 +97,7 @@ struct BEPolicy final
: public AbstractPolicy
#endif
{
explicit inline BEPolicy() noexcept {}
explicit inline BEPolicy() noexcept = default;
#if defined(BELE_CTP)
typedef N_BELE_RTP::BEPolicy RTP_Policy;
#elif defined(BELE_RTP)
@ -156,7 +156,7 @@ struct LEPolicy final
: public AbstractPolicy
#endif
{
explicit inline LEPolicy() noexcept {}
explicit inline LEPolicy() noexcept = default;
#if defined(BELE_CTP)
typedef N_BELE_RTP::LEPolicy RTP_Policy;
#elif defined(BELE_RTP)

View File

@ -59,6 +59,10 @@
// warning: comparison with NaN always evaluates to false in fast floating point modes
#pragma clang diagnostic ignored "-Wtautological-constant-compare"
#endif
#if defined(__FAST_MATH__) && defined(__clang__) && (__clang_major__ + 0 >= 18)
// warning: use of NaN is undefined behavior due to the currently enabled floating-point options
#pragma clang diagnostic ignored "-Wnan-infinity-disabled"
#endif
#include <doctest/doctest/parts/doctest.cpp>

View File

@ -1,4 +1,4 @@
/* conf.h --
/* conf.h -- primary configuration
This file is part of the UPX executable compressor.
@ -32,6 +32,7 @@
**************************************************************************/
#include "util/system_headers.h"
#include "util/system_undefs.h"
#include "version.h"
#if !defined(__has_attribute)
@ -47,6 +48,7 @@
// reserve name "upx" for namespace
namespace upx {}
// check compiler core
static_assert(CHAR_BIT == 8);
static_assert(sizeof(short) == 2);
static_assert(sizeof(int) == 4);
@ -58,7 +60,7 @@ static_assert((1u << 31) << 1 == 0);
static_assert(((int) (1u << 31)) >> 31 == -1); // arithmetic right shift
static_assert((-1) >> 31 == -1); // arithmetic right shift
static_assert(CHAR_MAX == 255); // -funsigned-char
static_assert((char) (-1) == 255);
static_assert((char) (-1) == 255); // -funsigned-char
// enable some more strict warnings for Git developer builds
#if defined(UPX_CONFIG_DISABLE_WSTRICT) && (UPX_CONFIG_DISABLE_WSTRICT + 0 == 0)
@ -215,20 +217,6 @@ typedef upx_int64_t upx_off_t;
// portab
**************************************************************************/
// some platform system headers may pre-define these, so undef to avoid conflicts
#undef _
#undef __
#undef ___
#undef dos
#undef large
#undef linux
#undef PAGE_MASK
#undef PAGE_SIZE
#undef small
#undef SP
#undef SS
#undef tos
#undef unix
#if (ACC_OS_POSIX) && !defined(__unix__)
#define __unix__ 1
#endif

View File

@ -1,4 +1,4 @@
/* main.cpp --
/* main.cpp -- main entry
This file is part of the UPX executable compressor.

View File

@ -40,8 +40,15 @@
#if defined(__CYGWIN64__) && !defined(__CYGWIN__)
#error "missing __CYGWIN__"
#endif
#if defined(__clang__) || defined(__GNUC__)
#if defined(__MINGW64__) && !defined(__MINGW32__)
#error "missing __MINGW32__"
#endif
#if defined(_WIN64) && !defined(_WIN32)
#error "missing _WIN32"
#endif
// byte order - these are pre-defined since gcc-4.6 (2011) and clang-3.2 (2012)
#if defined(__clang__) || defined(__GNUC__)
#if !defined(__ORDER_BIG_ENDIAN__) || (__ORDER_BIG_ENDIAN__ + 0 == 0)
#error "missing __ORDER_BIG_ENDIAN__"
#endif
@ -61,6 +68,7 @@
#error "unexpected __BYTE_ORDER__"
#endif
#endif
// pic and pie
#if defined(__PIC__) && defined(__pic__)
static_assert((__PIC__) == (__pic__));

58
src/util/system_undefs.h Normal file
View File

@ -0,0 +1,58 @@
/* system_undefs.h -- undef system pre-defines
This file is part of the UPX executable compressor.
Copyright (C) 1996-2024 Markus Franz Xaver Johannes Oberhumer
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
<markus@oberhumer.com>
*/
// some platform system headers may pre-define these, so undef to avoid conflicts
#undef _
#undef __
#undef ___
#undef ____
#undef _____
#undef MIPSEB
#undef MIPSEL
#undef PAGE_MASK
#undef PAGE_SIZE
#undef PPC
#undef R3000
#undef R4000
#undef SP
#undef SS
#undef WIN32
#undef WIN64
#undef WINNT
#undef dos
#undef far
#undef huge
#undef i386
#undef large
#undef linux
#undef mips
#undef near
#undef powerpc
#undef small
#undef tos
#undef unix
/* vim:set ts=4 sw=4 et: */

View File

@ -1,4 +1,4 @@
/* work.cpp -- main driver
/* work.cpp -- main work driver
This file is part of the UPX executable compressor.
@ -26,12 +26,12 @@
*/
// This file implements the central loop, and it uses class PackMaster to
// dispatch. PackMaster by itself will instantiate a concrete subclass
// of class PackerBase which then does the actual work.
// dispatch. PackMaster by itself will instantiate a concrete subclass of
// class PackerBase which then does the actual work; search for "HERE".
// And see p_com.cpp for a simple executable format.
//
// And this file also has the burden to deal with all those pesky low-level
// file handling issues.
// Additionally this file also has the burden to deal with all those pesky
// low-level file handling issues.
#define WANT_WINDOWS_LEAN_H 1 // _get_osfhandle, GetFileTime, SetFileTime
#include "util/system_headers.h"