CI updates and minor cleanups.
This commit is contained in:
parent
67564513d2
commit
1e6e4043ed
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -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
|
||||||
|
|||||||
12
.github/workflows/weekly-ci-cc-llvm-mingw.yml
vendored
12
.github/workflows/weekly-ci-cc-llvm-mingw.yml
vendored
@ -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:
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
4
Makefile
4
Makefile
@ -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
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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 \
|
||||||
|
|||||||
36
src/bele.h
36
src/bele.h
@ -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 *);
|
||||||
|
|||||||
@ -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(), \
|
||||||
|
|||||||
@ -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; }
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user