Markus F.X.J. Oberhumer
1bcf709fcf
all: bump version date
2024-01-03 17:54:43 +01:00
Markus F.X.J. Oberhumer
47fc230893
all: welcome 2024
2024-01-03 17:47:25 +01:00
Markus F.X.J. Oberhumer
f598fa13a9
clang-format
2024-01-03 17:36:43 +01:00
Markus F.X.J. Oberhumer
0500e7d016
CI updates; cxxlib.h cleanups
2023-12-28 04:42:41 +01:00
Markus F.X.J. Oberhumer
778663ae69
CI updates
2023-12-21 23:01:52 +01:00
Markus F.X.J. Oberhumer
51a6a5cca5
src: rename ptr_reinterpret_cast to ptr_static_cast; misc cleanups
2023-12-20 11:44:01 +01:00
Markus F.X.J. Oberhumer
3326c86e91
cmake update
2023-12-19 16:11:23 +01:00
Markus F.X.J. Oberhumer
decc1efb74
CI updates
2023-12-17 07:35:39 +01:00
Markus F.X.J. Oberhumer
fc6e3840b7
CI updates
2023-12-09 08:52:25 +01:00
Markus F.X.J. Oberhumer
1e6e4043ed
CI updates and minor cleanups.
2023-12-02 01:48:26 +01:00
John Reiser
ed2633bf95
Honor .p_align <= 64K; else assume 4K is also available
...
https://github.com/upx/upx/issues/737
modified: p_lx_elf.cpp
2023-11-26 11:46:12 -08:00
Markus F.X.J. Oberhumer
3e70021406
all: more minor cleanups
2023-11-26 18:30:47 +01:00
Markus F.X.J. Oberhumer
bf8dd31914
all: minor cleanups
2023-11-21 20:29:54 +01:00
John Reiser
d4e94f5086
Fix varying page size on arm64
...
https://github.com/upx/upx/issues/734
modified: stub/src/amd64-linux.elf-fold.S
modified: stub/src/amd64-linux.elf-main.c
modified: stub/src/arm64-linux.elf-entry.S
modified: stub/src/arm64-linux.elf-fold.S
modified: ../misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
... plus associated stub/*.h etc
2023-11-17 15:10:31 -08:00
John Reiser
ae77fd60bb
initial headway is limited by both file_size and mhcmdi.sizeofcmds
...
https://github.com/upx/upx/issues/732
modified: p_mach.cpp
2023-11-17 07:28:21 -08:00
Markus F.X.J. Oberhumer
e79c790264
CI updates
2023-11-17 11:50:52 +01:00
Markus F.X.J. Oberhumer
46029bb8a0
CI updates
2023-11-15 13:06:29 +01:00
Markus F.X.J. Oberhumer
f74c225338
CI updates
2023-11-14 19:15:34 +01:00
Markus F.X.J. Oberhumer
c479fe32b3
cmake update
2023-11-13 11:29:17 +01:00
Markus F.X.J. Oberhumer
d7142312c9
CI updates
2023-11-08 10:08:19 +01:00
Markus F.X.J. Oberhumer
283ab0e7ea
CI updates and assorted cleanups
2023-11-06 19:29:40 +01:00
Markus F.X.J. Oberhumer
11970d276d
CI updates
2023-11-04 06:30:07 +01:00
Markus F.X.J. Oberhumer
4f0f977f04
CI updates and cleanups
2023-11-03 17:52:46 +01:00
Markus F.X.J. Oberhumer
ceb2b56b71
all: post-release version bump
2023-11-01 15:07:18 +01:00
Markus F.X.J. Oberhumer
d14fa5f8a4
all: prepare for release
2023-11-01 12:00:03 +01:00
Markus F.X.J. Oberhumer
ecb3f83e83
CI updates
2023-11-01 11:28:35 +01:00
Markus F.X.J. Oberhumer
3b7d25ac49
CI updates
2023-11-01 08:48:27 +01:00
Markus F.X.J. Oberhumer
e964d4acf3
src/util: change TriBool logic to use a bool template parameter
2023-10-31 12:24:44 +01:00
Markus F.X.J. Oberhumer
b094ad4f2b
CI updates
2023-10-31 10:34:55 +01:00
Markus F.X.J. Oberhumer
19c6b969ab
src/options: fix bad TriBool ThirdValue for pefile compress_resources
2023-10-30 21:36:36 +01:00
Markus F.X.J. Oberhumer
acfda848cd
src/check: add some more tribool checks
2023-10-30 20:29:05 +01:00
John Reiser
52400e2561
/proc/self/exe now is optional
...
... for the benefit of 'unshare', 'chroot', etc.
If not present, then upx run-time stub unmaps all pages of original main program.
https://github.com/upx/upx/issues/721
modified: stub/src/amd64-linux.elf-entry.S
modified: stub/src/amd64-linux.elf-fold.S
modified: stub/src/arm.v4a-linux.elf-entry.S
modified: stub/src/arm.v4a-linux.elf-fold.S
modified: stub/src/arm64-linux.elf-entry.S
modified: stub/src/arm64-linux.elf-fold.S
modified: stub/src/i386-linux.elf-fold.S
modified: stub/src/mipsel.r3000-linux.elf-fold.S
modified: stub/src/powerpc-linux.elf-fold.S
modified: stub/src/powerpc64le-linux.elf-fold.S
modified: ../misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
... plus all associaed *.h, *.map, *.dump in stub/
2023-10-30 08:23:52 -07:00
Markus F.X.J. Oberhumer
f62576a2be
CI updates and minor cleanups
2023-10-30 14:15:35 +01:00
Markus F.X.J. Oberhumer
19bf9f59e9
src: clang-format stub/tools/armpe/armpe_tester.c
2023-10-30 13:07:20 +01:00
Markus F.X.J. Oberhumer
fadf7cfc7b
src: work on packed_struct cleanup
2023-10-30 12:55:07 +01:00
Markus F.X.J. Oberhumer
ec0c9399fa
src: clang-format conf.h
2023-10-30 12:30:58 +01:00
Markus F.X.J. Oberhumer
37b923245d
all: various cleanups
2023-10-30 12:17:51 +01:00
Markus F.X.J. Oberhumer
38a676f6f7
src: introduce upx::ptr_reinterpret_cast
2023-10-29 16:52:24 +01:00
Markus F.X.J. Oberhumer
cd1df6f6b1
all: update version
2023-10-29 15:37:13 +01:00
Markus F.X.J. Oberhumer
4a24fe8c53
CI updates and cleanups
2023-10-29 15:12:33 +01:00
Markus F.X.J. Oberhumer
6dac3dd248
CI updates
2023-10-27 09:24:06 +02:00
Markus F.X.J. Oberhumer
37d393cbc8
src: prefer using SetFileTime() on Windows
2023-10-27 06:58:14 +02:00
Markus F.X.J. Oberhumer
8102137ad7
all: post-release version bump
2023-10-26 12:25:13 +02:00
Markus F.X.J. Oberhumer
9c46f4653f
all: prepare for release
2023-10-26 11:09:48 +02:00
Markus F.X.J. Oberhumer
29b4752d0e
src: add some noexcept
2023-10-26 00:28:36 +02:00
Markus F.X.J. Oberhumer
facabd68d7
all: more minor cleanups
2023-10-24 23:56:55 +02:00
Markus F.X.J. Oberhumer
18f043015e
all: minor cleanups
2023-10-24 22:54:54 +02:00
Markus F.X.J. Oberhumer
ab259a1af9
src/pefile: try to clean up reloc handling
2023-10-24 11:47:23 +02:00
Markus F.X.J. Oberhumer
1dd96a7628
src/pefile: stricter reloc checks; cleanups
2023-10-23 14:26:37 +02:00
Markus F.X.J. Oberhumer
1ee7ecb1f0
all: prefer using utimensat()
2023-10-22 13:29:26 +02:00
Markus F.X.J. Oberhumer
67548a4d9a
src: minor cleanups
2023-10-22 00:45:06 +02:00
Markus F.X.J. Oberhumer
9fbe95ad48
all: cleanups
2023-10-21 11:22:18 +02:00
Markus F.X.J. Oberhumer
a1d090a6fd
src/stub: add a "clang-format off" directive
2023-10-15 10:55:15 +02:00
Markus F.X.J. Oberhumer
4870765e1b
all: disable packing macOS binaries for now
2023-10-15 10:15:46 +02:00
Markus F.X.J. Oberhumer
d8be2ed276
src/pefile.cpp: cleanup reloc handling and add more checks
2023-10-14 19:24:44 +02:00
Markus F.X.J. Oberhumer
2b371e99bd
src/util: minor xspan enhancements
2023-10-14 05:58:47 +02:00
John Reiser
65b06f6046
More LZMA inSize (srclen) defense
...
https://github.com/upx/upx/issues/717
modified: stub/src/amd64-darwin.dylib-entry.S fixed
modified: stub/src/amd64-darwin.macho-entry.S fixed
modified: stub/src/amd64-linux.elf-so_entry.S comment-only
modified: stub/src/i386-linux.elf-so_entry.S comment-only
modified: stub/amd64-darwin.dylib-entry.h
modified: stub/amd64-darwin.macho-entry.h
modified: stub/amd64-linux.elf-so_entry.h
modified: stub/tmp/amd64-darwin.dylib-entry.bin.dump
modified: stub/tmp/amd64-darwin.macho-entry.bin.dump
modified: stub/tmp/amd64-linux.elf-so_entry.bin.dump
Find+fix steps that were performed:
1. Find all 'add' instructions that compute "eof".
NRV run-time decompressors ignore srclen, so 'add' can be ignored for them.
$ cd upx-devel4/src/stub
$ grep -sr 'add.*eof' src | grep -v 'nrv2._d.*.S' | sort
src/amd64-darwin.dylib-entry.S: addq src,lsrc; push lsrc // &input_eof
src/amd64-darwin.macho-entry.S: addq src,lsrc; push lsrc // &input_eof
src/amd64-linux.elf-entry.S: addq src,lsrc; push lsrc // &input_eof
src/amd64-linux.elf-so_entry.S: addq src,lsrc; push lsrc // MATCH_05 &input_eof
src/amd64-linux.elf-so_main.c: void *mfd_addr = Pmap(0, sizeof(code), PROT_READ|PROT_EXEC, MAP_PRIVATE, mfd, 0);
src/amd64-linux.shlib-init.S: addq src,lsrc; push lsrc // &input_eof
src/arch/amd64/lzma_d.S:// addq src,lsrc; push lsrc // &input_eof
src/i386-expand.S: add src,%ecx; push %ecx // MATCH_52 eof_src
src/i386-linux.elf-so_entry.S: add src,lsrc; push lsrc // MATCH_05 &input_eof
2. Case-by-case inspection
src/amd64-darwin.dylib-entry.S: addq src,lsrc; push lsrc // &input_eof
restoring 'subq' is added in this commit
src/amd64-darwin.macho-entry.S: addq src,lsrc; push lsrc // &input_eof
restoring 'subq' is added in this commit
src/amd64-linux.elf-entry.S: addq src,lsrc; push lsrc // &input_eof
a restoring 'subq' is already next
src/amd64-linux.elf-so_entry.S: addq src,lsrc; push lsrc // MATCH_05 &input_eof
lsrc is dead for inlined nrv2b
src/amd64-linux.elf-so_main.c: void *mfd_addr = Pmap(0, sizeof(code), PROT_READ|PROT_EXEC, MAP_PRIVATE, mfd, 0);
.c code
src/amd64-linux.shlib-init.S: addq src,lsrc; push lsrc // &input_eof
restoring 'subq' is already next
src/arch/amd64/lzma_d.S:// addq src,lsrc; push lsrc // &input_eof
comment that explains preceding actions in ELFMAINX; a restoring 'subq' is already next
src/i386-expand.S: add src,%ecx; push %ecx // MATCH_52 eof_src
%ecx is dead
src/i386-linux.elf-so_entry.S: add src,lsrc; push lsrc // MATCH_05 &input_eof
lsrc is dead for inlined nrv2b
2023-10-12 10:41:13 -07:00
John Reiser
0515be4334
LZMA on AMD64 had bug in calling sequence, leading to random exit(127)
...
LzmaDecode randomly decided that the input had ended in the middle,
because of error in interface between ELFMAINX and the decoder.
Thanks to Kevin Gosse!
https://github.com/upx/upx/pull/716
https://github.com/MichalStrehovsky/PublishAotCompressed/issues/11
2023-10-06 14:14:32 -07:00
Markus F.X.J. Oberhumer
e32de83758
CI updates
2023-10-05 12:23:17 +02:00
Markus F.X.J. Oberhumer
e767461f65
src: more clang-format
2023-10-05 11:53:02 +02:00
Markus F.X.J. Oberhumer
632c7c4826
all: assorted cleanups; introduce undocumented '--sysinfo' option
2023-10-05 03:51:27 +02:00
Markus F.X.J. Oberhumer
7f9d381c7b
CI updates
2023-09-30 10:46:39 +02:00
John Reiser
b0b87eda02
check-whitespace
...
modified: stub/src/upxfd_android.c
2023-09-28 12:49:14 -07:00
John Reiser
f63a673a8b
Prepare to emulate memfd_create() on 32-bit Android (ARM and i386)
...
modified: stub/src/include/linux.h
new file: stub/src/upxfd_android.c
new file: stub/src/upxfd_create.c
2023-09-28 12:44:49 -07:00
John Reiser
290dd0c5d2
Git straggler
...
modified: src/stub/tmp/i386-linux.elf-entry.bin.dump
2023-09-28 12:09:32 -07:00
John Reiser
194bf2b852
Common prototypes for mmap and ftruncate
...
modified: src/stub/src/include/linux.h
modified: src/stub/src/amd64-linux.elf-so_main.c
modified: src/stub/src/i386-linux.elf-so_main.c
modified: src/stub/src/i386-linux.elf.execve-main.c
modified: src/stub/src/i386-linux.elf.interp-main.c
modified: src/stub/src/i386-linux.elf.shell-main.c
2023-09-28 12:07:04 -07:00
John Reiser
d6d5e7ae3d
For Android emulator: align i386 LEXEC020 binfo
...
modified: src/stub/src/i386-linux.elf-entry.S
modified: src/p_lx_elf.cpp
modified: src/stub/i386-linux.elf-entry.h
modified: misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
2023-09-28 12:02:28 -07:00
Markus F.X.J. Oberhumer
39a6cc4b5f
src: improve memory sanitizer handling
2023-09-26 15:15:55 +02:00
Markus F.X.J. Oberhumer
eb021accd1
CI updates
2023-09-25 13:47:43 +02:00
John Reiser
854988bc5f
Detect AlreadyPacked even when trailing PackHeader has been lopped.
...
This is heuristic, but strong.
https://github.com/upx/upx/issues/712
modified: p_lx_elf.cpp
modified: p_unix.h
2023-09-21 14:12:18 -07:00
John Reiser
bfeed2ab9a
MAP_PRIVATE to capture memfd pages before closing the fd
...
https://github.com/upx/upx/issues/710
modified: stub/src/amd64-linux.elf-so_main.c
modified: stub/src/i386-linux.elf-so_main.c
modified: stub/amd64-linux.elf-so_fold.h
modified: stub/arm.v4a-linux.elf-so_fold.h
modified: stub/arm.v5a-linux.elf-so_fold.h
modified: stub/arm64-linux.elf-so_fold.h
modified: stub/i386-linux.elf-so_fold.h
2023-09-20 13:12:04 -07:00
Markus F.X.J. Oberhumer
d11fc71e79
CI updates
2023-09-20 11:24:55 +02:00
Markus F.X.J. Oberhumer
06675acc67
all: cosmetic cleanups
2023-09-18 15:19:37 +02:00
Markus F.X.J. Oberhumer
57ad6bc37d
CI updates
2023-09-11 06:52:57 +02:00
Markus F.X.J. Oberhumer
92dfb9c83c
testsuite: add file system test suite test_symlinks.sh
2023-09-06 00:09:44 +02:00
Markus F.X.J. Oberhumer
38d6cb090c
src/packer.cpp: fix bug in constructor introduced during cleanup
...
Introduced in 10e759f1f1
2023-09-05 21:09:17 +02:00
Markus F.X.J. Oberhumer
e93172bd33
src/work.cpp: clean up get_open_flags()
2023-09-05 06:09:13 +02:00
Markus F.X.J. Oberhumer
30fcca4b64
src: optimize preserve_link: only if the file has actual link-count >= 2
2023-09-05 05:50:47 +02:00
Markus F.X.J. Oberhumer
4f6320d3aa
src: add new option --link to preserve hard links; use with care
2023-09-04 22:34:21 +02:00
Markus F.X.J. Oberhumer
62dbf8485f
src: sort cleanups
2023-09-04 07:28:48 +02:00
John Reiser
9331ed39d4
32-bit Android lacks memfd_create, and has varying __NR_ftruncate
...
https://github.com/upx/upx/issues/700
modified: stub/src/i386-linux.elf-so_main.c
modified: stub/src/arm.v4a-linux.elf-so_entry.S
modified: stub/src/arm.v4a-linux.elf-so_fold.S
modified: stub/arm.v4a-linux.elf-so_entry.h
modified: stub/arm.v4a-linux.elf-so_fold.h
modified: stub/arm.v5a-linux.elf-so_entry.h
modified: stub/arm.v5a-linux.elf-so_fold.h
2023-09-02 15:31:32 -07:00
Markus F.X.J. Oberhumer
35dd9cfd22
src: retract libc qsort() requirements
2023-09-02 16:15:57 +02:00
Markus F.X.J. Oberhumer
0ac6c36af2
src: add a check for libc qsort(); cleanups
2023-09-01 11:59:29 +02:00
Markus F.X.J. Oberhumer
3c4b959f78
all: update clang-format settings
2023-09-01 11:29:51 +02:00
Markus F.X.J. Oberhumer
a00687b092
src/p_mach.cpp: make sort order deterministic
2023-09-01 11:11:00 +02:00
Markus F.X.J. Oberhumer
bb6b087862
src: implement upx_shellsort()
2023-09-01 10:49:47 +02:00
John Reiser
bfb438dc89
Sync stubs
...
modified: stub/amd64-linux.elf-so_fold.h
modified: stub/arm.v4a-linux.elf-so_fold.h
modified: stub/arm.v5a-linux.elf-so_fold.h
modified: stub/arm64-linux.elf-so_fold.h
modified: stub/i386-linux.elf-so_fold.h
modified: stub/tmp/amd64-linux.elf-so_fold.bin.dump
2023-08-31 13:34:49 -07:00
John Reiser
cd3f69c290
Explicit write() can subsume ftruncate()
...
modified: stub/src/amd64-linux.elf-so_main.c
modified: stub/src/i386-linux.elf-so_main.c
2023-08-31 13:25:53 -07:00
Markus F.X.J. Oberhumer
d54315392e
src: add support for NO_COLOR environment variable
2023-08-31 12:31:31 +02:00
Markus F.X.J. Oberhumer
cfa8107ab9
src: make sort order deterministic, next try
...
We cannot compare pointers as they may point to qsort-local objects.
And we must make sure that cmp(a,b) always agrees with cmp(b,a).
2023-08-30 16:41:59 +02:00
Markus F.X.J. Oberhumer
f4e5b29708
src: make sort order deterministic
2023-08-28 02:08:34 +02:00
Markus F.X.J. Oberhumer
d65fea1147
src/bele.h: try to detect possible size-mismatches
2023-08-28 00:23:53 +02:00
Markus F.X.J. Oberhumer
25a3c109c1
CI updates
2023-08-27 13:30:51 +02:00
John Reiser
b526eed346
Detect "no Shdrs" earlier when already packed
...
https://github.com/upx/upx/issues/699
modified: p_lx_elf.cpp
2023-08-23 19:52:35 +02:00
John Reiser
59c6a71b72
More use of ph_forced_method()
...
modified: p_lx_elf.cpp
2023-08-23 19:52:35 +02:00
John Reiser
c7a2a0faa1
Document path to mach-o/loader.h on Apple CommandLineTools
...
modified: p_mach_enum.h
2023-08-23 19:52:35 +02:00
John Reiser
bfb5ea50a9
Temporary
...
modified: p_lx_elf.cpp
2023-08-23 19:52:35 +02:00
John Reiser
149d84edca
--brute versus forced_method(ph.method)
...
https://github.com/upx/upx/issues/694 (partial)
modified: p_lx_elf.cpp
2023-08-23 19:52:35 +02:00
Markus F.X.J. Oberhumer
6eace187e7
src: add a famous quote
2023-08-22 00:37:45 +02:00
Markus F.X.J. Oberhumer
dd1838a7eb
src: minor cleanups
2023-08-21 22:41:42 +02:00