CI updates and minor cleanups.

This commit is contained in:
Markus F.X.J. Oberhumer 2023-12-02 01:48:26 +01:00
parent 67564513d2
commit 1e6e4043ed
11 changed files with 39 additions and 34 deletions

View File

@ -78,7 +78,7 @@ jobs:
sudo dpkg --add-architecture i386 sudo dpkg --add-architecture i386
sudo apt-get update sudo apt-get update
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 (pthreads) 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
if test -f /usr/bin/$f-posix; then sudo update-alternatives --set $f /usr/bin/$f-posix; fi if test -f /usr/bin/$f-posix; then sudo update-alternatives --set $f /usr/bin/$f-posix; fi
done done

View File

@ -27,12 +27,12 @@ jobs:
- name: llvm-mingw-20230614-ucrt - name: llvm-mingw-20230614-ucrt
llvm_version: 16.0.6 llvm_version: 16.0.6
url: 'https://github.com/mstorsjo/llvm-mingw/releases/download/20230614/llvm-mingw-20230614-ucrt-ubuntu-20.04-x86_64.tar.xz' url: 'https://github.com/mstorsjo/llvm-mingw/releases/download/20230614/llvm-mingw-20230614-ucrt-ubuntu-20.04-x86_64.tar.xz'
- name: llvm-mingw-20231114-msvcrt - name: llvm-mingw-20231128-msvcrt
llvm_version: 17.0.5 llvm_version: 17.0.6
url: 'https://github.com/mstorsjo/llvm-mingw/releases/download/20231114/llvm-mingw-20231114-msvcrt-ubuntu-20.04-x86_64.tar.xz' url: 'https://github.com/mstorsjo/llvm-mingw/releases/download/20231128/llvm-mingw-20231128-msvcrt-ubuntu-20.04-x86_64.tar.xz'
- name: llvm-mingw-20231114-ucrt - name: llvm-mingw-20231128-ucrt
llvm_version: 17.0.5 llvm_version: 17.0.6
url: 'https://github.com/mstorsjo/llvm-mingw/releases/download/20231114/llvm-mingw-20231114-ucrt-ubuntu-20.04-x86_64.tar.xz' url: 'https://github.com/mstorsjo/llvm-mingw/releases/download/20231128/llvm-mingw-20231128-ucrt-ubuntu-20.04-x86_64.tar.xz'
name: ${{ format('{0} {1}', matrix.name, matrix.llvm_version) }} name: ${{ format('{0} {1}', matrix.name, matrix.llvm_version) }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:

View File

@ -29,6 +29,7 @@ macro(upx_cmake_include_hook section)
include("${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/hooks/CMakeLists.${section}.txt" OPTIONAL) include("${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/hooks/CMakeLists.${section}.txt" OPTIONAL)
include("${CMAKE_CURRENT_SOURCE_DIR}/maint/make/CMakeLists.${section}.txt" OPTIONAL) include("${CMAKE_CURRENT_SOURCE_DIR}/maint/make/CMakeLists.${section}.txt" OPTIONAL)
endmacro() endmacro()
file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/.upx_cmake_config_done.txt")
#*********************************************************************** #***********************************************************************
# options # options
@ -711,5 +712,6 @@ endif()
endif() # UPX_CONFIG_CMAKE_DISABLE_PLATFORM_CHECK endif() # UPX_CONFIG_CMAKE_DISABLE_PLATFORM_CHECK
upx_cmake_include_hook(9_finish) upx_cmake_include_hook(9_finish)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/.upx_cmake_config_done.txt" "")
# vim:set ft=cmake ts=4 sw=4 tw=0 et: # vim:set ft=cmake ts=4 sw=4 tw=0 et:

View File

@ -26,8 +26,8 @@ endif
run_cmake_config = $(CMAKE) -S . -B $1 $(UPX_CMAKE_CONFIG_FLAGS) -DCMAKE_BUILD_TYPE=$2 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 run_cmake_build = $(CMAKE) --build $1 $(UPX_CMAKE_BUILD_FLAGS) --config $2
# avoid re-running run_cmake_config if CMakeCache.txt already exists # avoid re-running run_cmake_config if .upx_cmake_config_done.txt already exists
run_config = $(if $(wildcard $1/CMakeCache.txt),,$(call run_cmake_config,$1,$2)) run_config = $(if $(wildcard $1/CMakeFiles/.upx_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)
.DEFAULT_GOAL = build/release .DEFAULT_GOAL = build/release

View File

@ -207,7 +207,7 @@ build/extra/scan-build/debug: build/analyze/clang-analyzer/debug
build/extra/scan-build/release: build/analyze/clang-analyzer/release build/extra/scan-build/release: build/analyze/clang-analyzer/release
#*********************************************************************** #***********************************************************************
# advanced: generic extra target # advanced: generic eXtra target
#*********************************************************************** #***********************************************************************
# usage: # usage:

View File

@ -34,7 +34,7 @@ RUN apt-get update && apt-get upgrade -y \
# Windows cross compilers # Windows cross compilers
g++-mingw-w64-i686 \ g++-mingw-w64-i686 \
g++-mingw-w64-x86-64 \ g++-mingw-w64-x86-64 \
# make sure that we use posix-threads (pthreads) 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 update-alternatives --set $f /usr/bin/$f-posix; done \ && for f in i686-w64-mingw32-g++ i686-w64-mingw32-gcc x86_64-w64-mingw32-g++ x86_64-w64-mingw32-gcc; do update-alternatives --set $f /usr/bin/$f-posix; done \
&& true && true
RUN apt-get install -y \ RUN apt-get install -y \

View File

@ -753,6 +753,24 @@ inline unsigned UPX_MIN(const LE32 &a, unsigned b) { return UPX_MIN(unsigned(a),
// misc support // misc support
**************************************************************************/ **************************************************************************/
// <type_traits> upx_is_integral; see conf.h
#define TT_UPX_IS_INTEGRAL(T) \
template <> \
struct upx_is_integral<T> : public std::true_type {}; \
template <> \
struct upx_is_integral<const T> : public std::true_type {}; \
template <> \
struct upx_is_integral<volatile T> : public std::true_type {}; \
template <> \
struct upx_is_integral<const volatile T> : public std::true_type {}
TT_UPX_IS_INTEGRAL(BE16);
TT_UPX_IS_INTEGRAL(BE32);
TT_UPX_IS_INTEGRAL(BE64);
TT_UPX_IS_INTEGRAL(LE16);
TT_UPX_IS_INTEGRAL(LE32);
TT_UPX_IS_INTEGRAL(LE64);
#undef TT_UPX_IS_INTEGRAL
// native types // native types
#if (ACC_ABI_BIG_ENDIAN) #if (ACC_ABI_BIG_ENDIAN)
typedef BE16 NE16; typedef BE16 NE16;
@ -776,24 +794,6 @@ typedef LE64 NE64;
#define ne64_compare_signed le64_compare_signed #define ne64_compare_signed le64_compare_signed
#endif #endif
// <type_traits> upx_is_integral
#define TT_IS_INTEGRAL(T) \
template <> \
struct upx_is_integral<T> : public std::true_type {}; \
template <> \
struct upx_is_integral<const T> : public std::true_type {}; \
template <> \
struct upx_is_integral<volatile T> : public std::true_type {}; \
template <> \
struct upx_is_integral<const volatile T> : public std::true_type {}
TT_IS_INTEGRAL(BE16);
TT_IS_INTEGRAL(BE32);
TT_IS_INTEGRAL(BE64);
TT_IS_INTEGRAL(LE16);
TT_IS_INTEGRAL(LE32);
TT_IS_INTEGRAL(LE64);
#undef TT_IS_INTEGRAL
// for use with qsort() // for use with qsort()
extern "C" { extern "C" {
int __acc_cdecl_qsort be16_compare(const void *, const void *); int __acc_cdecl_qsort be16_compare(const void *, const void *);

View File

@ -138,7 +138,8 @@ PackerBase *PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const O
void *user) may_throw { void *user) may_throw {
#define D(Klass) \ #define D(Klass) \
do { \ do { \
COMPILE_TIME_ASSERT(std::is_nothrow_destructible_v<Klass>) \ static_assert(std::is_class_v<Klass>); \
static_assert(std::is_nothrow_destructible_v<Klass>); \
auto pb = std::unique_ptr<PackerBase>(new Klass(f)); \ auto pb = std::unique_ptr<PackerBase>(new Klass(f)); \
if (o->debug.debug_level) \ if (o->debug.debug_level) \
fprintf(stderr, "visitAllPackers: (ver=%d, fmt=%3d) %s\n", pb->getVersion(), \ fprintf(stderr, "visitAllPackers: (ver=%d, fmt=%3d) %s\n", pb->getVersion(), \

View File

@ -686,7 +686,8 @@ const LE32 &PeFile::IDADDR(unsigned x) const { return iddirs[x].vaddr; }
*/ */
class PeFile::ImportLinker final : public ElfLinkerAMD64 { class PeFile::ImportLinker final : public ElfLinkerAMD64 {
struct TStr final : private ::noncopyable { // temporary string owner, deletes on destruction // temporary string owner, deletes on destruction
struct TStr final : private upx::noncopyable {
explicit TStr(char *str) noexcept : s(str) {} explicit TStr(char *str) noexcept : s(str) {}
~TStr() noexcept { delete[] s; } // delete! ~TStr() noexcept { delete[] s; } // delete!
operator char *() noexcept { return s; } operator char *() noexcept { return s; }

View File

@ -383,7 +383,7 @@ protected:
}; };
class Reloc final : private noncopyable { class Reloc final : private noncopyable {
// these are set in constructor // these are set in the constructor:
byte *start = nullptr; byte *start = nullptr;
unsigned start_size_in_bytes = 0; unsigned start_size_in_bytes = 0;
bool start_did_alloc = false; bool start_did_alloc = false;

View File

@ -67,7 +67,7 @@
namespace { namespace {
struct XStat { struct XStat final {
struct stat st; struct stat st;
#if USE_SETFILETIME #if USE_SETFILETIME
FILETIME ft_atime; FILETIME ft_atime;
@ -307,8 +307,9 @@ void do_one_file(const char *const iname, char *const oname) may_throw {
flags = get_open_flags(WO_MUST_EXIST_TRUNCATE); flags = get_open_flags(WO_MUST_EXIST_TRUNCATE);
copy_timestamp_only = true; copy_timestamp_only = true;
} }
} else if (opt->force_overwrite || opt->force) } else if (opt->force_overwrite || opt->force) {
flags = get_open_flags(WO_CREATE_OR_TRUNCATE); flags = get_open_flags(WO_CREATE_OR_TRUNCATE);
}
int shmode = SH_DENYWR; int shmode = SH_DENYWR;
#if (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC) && defined(__MINT__) #if (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC) && defined(__MINT__)
// TODO later: check current mintlib if this hack is still needed // TODO later: check current mintlib if this hack is still needed