John Reiser
eaa0f33473
Fix call to unfilter from amd64-expand
...
modified: stub/src/amd64-expand.S
modified: stub/amd64-linux.elf-fold.h
modified: stub/amd64-linux.elf-so_fold.h
modified: stub/tmp/amd64-linux.elf-fold.map
modified: stub/tmp/amd64-linux.elf-so_fold.bin.dump
2023-04-21 08:57:10 -07:00
Markus F.X.J. Oberhumer
c03b382d61
src: some more "noexcept"
2023-04-20 20:58:19 +02:00
Markus F.X.J. Oberhumer
f89f0838dc
src: change UPX_CONFIG logic to permissive defaults
2023-04-20 14:13:36 +02:00
Markus F.X.J. Oberhumer
b1729e3bcf
src: cleanup MAX_ELF_HDR
2023-04-19 23:23:46 +02:00
Markus F.X.J. Oberhumer
d1ab85a1a6
src: cleanup linker.h
2023-04-19 23:19:45 +02:00
John Reiser
7f5b64c91a
Merge branch 'devel4' of https://github.com/upx/upx into devel4
2023-04-19 14:00:43 -07:00
John Reiser
78b68283c4
Fix .e_entry for PowerPC64
...
https://github.com/upx/upx/issues/668
modified: p_lx_elf.cpp
2023-04-19 13:58:52 -07:00
Markus F.X.J. Oberhumer
9e3b1c9f8a
src: enable TE checks in packer.h; add some "noexcept"
2023-04-18 17:56:28 +02:00
Markus F.X.J. Oberhumer
5dc54c7adc
Merge branch 'devel' into devel4
2023-04-18 17:15:57 +02:00
Markus F.X.J. Oberhumer
320e5b850f
all: yet more cleanups
...
Changes include:
- use standard names for PE constants
- add some more "noexcept"
- improve upx_is_integral type-trait
- introduce is_same_all and is_same_any type-traits
- prepare TE-size checks in packer.h
- CI updates
2023-04-18 17:02:13 +02:00
John Reiser
d8395d8c42
Fix usage of _te32/_te64/_te16 for Elf classes
...
How did it ever work? UPX_RSIZE_MAX_MEM of 768MiB, Elf32_Off of only
32-bits, and preponderance of little-endian and small positive integers
hides many mis-uses of _te64/_te32.
ELF does not help: e_phnum, e_shnum, Elf32_Section, Elf64_Section are all
16-bit, but sh_info and sh_link are 32-bit.
Templatizing p_elf.h (following the example of p_mach.h) failed
because of complexity. (Plus too many special cases of ELF where 32-bit
and 64-bit are not parallel.)
modified: p_lx_elf.cpp
modified: p_lx_sh.cpp
modified: p_mach.cpp
2023-04-17 13:19:06 -07:00
John Reiser
a20c5a1e7f
Align 64-bit forward_Shdr
...
//github.com/upx/upx/issues/220
modified: p_lx_elf.cpp
2023-04-12 14:54:49 -07:00
John Reiser
3bdfcaa541
Try to placate Android crapware, which cannot deal with null strings
...
From https://github.com/upx/upx/issues/220 :
Phone:
04-10 16:07:52.862 E/AndroidRuntime( 5178): java.lang.UnsatisfiedLinkError: dlopen failed: \
"/data/app/~~Nwb-iR6LHpHyrT37xe8HNg==/com.android.support-y0YbcwLn1b4sBRD09JGVAw==/lib/arm64/libMyLibName.so" \
has unsupported e_shentsize: 0x0 (expected 0x40)
Emulator:
04-10 09:57:38.746 E/AndroidRuntime( 6403): java.lang.UnsatisfiedLinkError: dlopen failed: \
"/data/app/~~sBBMDvh36TxwO4muxOJ3Bg==/com.android.support-8Lc6r2dLzTIW7SEHXLI0XQ==/lib/arm64/libMyLibName.so" \
has no section headers
modified: p_lx_elf.cpp
2023-04-11 13:41:54 -07:00
John Reiser
7b2faf2016
Elf64_Rela for shlib DT_INIT_ARRAY
...
Also allow PT_PHDR in shlibs.
Also page align lo end of mmap, like mprotect.
https://github.com/upx/upx/issues/664
modified: p_lx_elf.cpp
modified: stub/src/amd64-linux.elf-so_main.c
modified: stub/src/i386-linux.elf-so_main.c
modified: stub/src/amd64-linux.elf-so_fold.S
modified: stub/src/arm.v4a-linux.elf-fold.S
modified: stub/src/arm.v4a-linux.elf-so_fold.S
modified: stub/src/arm64-linux.elf-fold.S
modified: stub/src/arm64-linux.elf-so_fold.S
modified: stub/src/i386-linux.elf-so_fold.S
modified: stub/amd64-linux.elf-so_fold.h
modified: stub/arm.v4a-linux.elf-fold.h
modified: stub/arm.v4a-linux.elf-so_fold.h
modified: stub/arm.v5a-linux.elf-fold.h
modified: stub/arm.v5a-linux.elf-so_fold.h
modified: stub/arm64-linux.elf-fold.h
modified: stub/arm64-linux.elf-so_fold.h
modified: stub/armeb.v4a-linux.elf-fold.h
modified: stub/i386-linux.elf-so_fold.h
modified: stub/tmp/amd64-linux.elf-so_fold.bin.dump
modified: stub/tmp/arm.v4a-linux.elf-fold.map
modified: stub/tmp/arm.v5a-linux.elf-fold.map
modified: stub/tmp/arm64-linux.elf-fold.map
modified: stub/tmp/armeb.v4a-linux.elf-fold.map
modified: stub/src/arch/mips/r3000/macros.ash
modified: ../.github/travis_testsuite_1-expected_sha256sums.sh
2023-04-11 11:00:48 -07:00
John Reiser
42902dabac
64-bit shlib with DT_INIT_ARRAY but no DT_INIT
...
https://github.com/upx/upx/issues/664
modified: p_elf_enum.h
modified: p_lx_elf.cpp
2023-04-10 18:01:39 -07:00
John Reiser
14521eb6dd
Allow pre-linking when compressing shared libraries
...
Such as Wine kernel32.dll etc.
https://github.com/upx/upx/issues/660
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/src/amd64-linux.elf-so_main.c
modified: stub/src/i386-linux.elf-so_main.c
modified: stub/tmp/amd64-linux.elf-so_fold.bin.dump
2023-04-03 13:18:21 -07:00
John Reiser
4df68aafd2
Pprotect: mprotect but enlarge the interval to start on page boundary
...
https://github.com/upx/upx/issues/609
modified: src/stub/src/amd64-linux.elf-fold.S
modified: src/stub/src/amd64-linux.elf-main.c
modified: src/stub/src/amd64-linux.elf-so_fold.S
modified: src/stub/src/amd64-linux.elf-so_main.c
modified: src/stub/src/arm.v4a-linux.elf-fold.S
modified: src/stub/src/arm.v4a-linux.elf-so_fold.S
modified: src/stub/src/arm64-linux.elf-fold.S
modified: src/stub/src/arm64-linux.elf-so_fold.S
modified: src/stub/src/i386-linux.elf-fold.S
modified: src/stub/src/i386-linux.elf-main.c
modified: src/stub/src/i386-linux.elf-so_fold.S
modified: src/stub/src/i386-linux.elf-so_main.c
modified: src/stub/src/mipsel.r3000-linux.elf-fold.S
modified: src/stub/src/powerpc-linux.elf-fold.S
modified: src/stub/src/powerpc64le-linux.elf-fold.S
modified: src/stub/amd64-linux.elf-fold.h
modified: src/stub/amd64-linux.elf-so_fold.h
modified: src/stub/arm.v4a-linux.elf-fold.h
modified: src/stub/arm.v4a-linux.elf-so_fold.h
modified: src/stub/arm.v5a-linux.elf-fold.h
modified: src/stub/arm.v5a-linux.elf-so_fold.h
modified: src/stub/arm64-linux.elf-fold.h
modified: src/stub/arm64-linux.elf-so_fold.h
modified: src/stub/armeb.v4a-linux.elf-fold.h
modified: src/stub/i386-linux.elf-fold.h
modified: src/stub/i386-linux.elf-so_fold.h
modified: src/stub/mips.r3000-linux.elf-fold.h
modified: src/stub/mipsel.r3000-linux.elf-fold.h
modified: src/stub/powerpc-linux.elf-fold.h
modified: src/stub/powerpc64-linux.elf-fold.h
modified: src/stub/powerpc64le-linux.elf-fold.h
modified: src/stub/tmp/amd64-linux.elf-fold.map
modified: src/stub/tmp/amd64-linux.elf-so_fold.bin.dump
modified: src/stub/tmp/arm.v4a-linux.elf-fold.map
modified: src/stub/tmp/arm.v5a-linux.elf-fold.map
modified: src/stub/tmp/arm64-linux.elf-fold.map
modified: src/stub/tmp/armeb.v4a-linux.elf-fold.map
modified: src/stub/tmp/i386-linux.elf-fold.map
modified: src/stub/tmp/mips.r3000-linux.elf-fold.map
modified: src/stub/tmp/mipsel.r3000-linux.elf-fold.map
modified: src/stub/tmp/powerpc-linux.elf-fold.map
modified: src/stub/tmp/powerpc64-linux.elf-fold.map
modified: src/stub/tmp/powerpc64le-linux.elf-fold.map
2023-03-29 15:46:58 -07:00
John Reiser
c72ceaa979
MSVC
...
modified: p_lx_elf.cpp
2023-03-26 11:29:19 -07:00
John Reiser
8ac79ca0ad
whitespce
...
modified: p_lx_elf.cpp
2023-03-26 11:16:36 -07:00
John Reiser
e0bfaf1028
Merge branch 'devel4' of https://github.com/upx/upx into devel4
2023-03-26 11:06:22 -07:00
John Reiser
b361b91ec7
Try to appease Android runtime loader; _Shdr vs _Phdr offsets
...
JNI FalalError called: Unable to load library:
[dlopen failed: "/lib/arm/libunity.so"
.dynamic section has invalid offset: 0x6d3e58,
expected to match PT_DYNAMIC offset: 0x441e58]
https://github.com/upx/upx/issues/609
modified: p_elf_enum.h
modified: p_lx_elf.cpp
2023-03-26 10:53:30 -07:00
John Reiser
b5d1eba4c1
mprotect() requires page-aligned address
...
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/src/amd64-linux.elf-so_fold.S
modified: stub/src/arm.v4a-linux.elf-so_entry.S
modified: stub/src/arm.v4a-linux.elf-so_fold.S
modified: stub/src/arm64-linux.elf-so_fold.S
modified: stub/src/i386-linux.elf-so_fold.S
modified: stub/tmp/amd64-linux.elf-so_fold.bin.dump
2023-03-26 07:26:53 -07:00
John Reiser
ba447344d6
New strategy for de-compression stub for shared libraries
...
modified: stub/src/amd64-linux.elf-so_main.c
modified: stub/src/i386-linux.elf-so_main.c
2023-03-26 07:25:32 -07:00
John Reiser
7b68aa7bdc
Fix de-comression of shared libraries
...
modified: p_elf_enum.h
modified: p_lx_elf.cpp
modified: p_lx_elf.h
2023-03-26 07:23:08 -07:00
John Reiser
5d15e57294
De-compression for 32-bit shared libraries on i686, ARM
...
https://github.com/upx/upx/issues/609
modified: p_lx_elf.cpp
modified: p_lx_elf.h
2023-03-23 16:29:25 -07:00
John Reiser
0bf8ff151e
Un-debug stubs for 32-bit shared libraries
...
modified: stub/arm.v4a-linux.elf-so_fold.h
modified: stub/arm.v5a-linux.elf-so_fold.h
modified: stub/i386-linux.elf-so_fold.h
modified: stub/src/arm.v4a-linux.elf-so_entry.S
2023-03-23 16:27:44 -07:00
John Reiser
06fae05910
32-bit ARM Android shlib: DT_INIT_ARRAY without DT_INIT
...
De-compressor needs to catch up.
modified: p_elf_enum.h
modified: p_lx_elf.cpp
modified: p_lx_elf.h
modified: stub/src/i386-linux.elf-so_main.c
2023-03-22 10:44:17 -07:00
Markus F.X.J. Oberhumer
f68ac8155b
Merge branch 'devel' into devel4
2023-03-18 21:52:17 +01:00
Markus F.X.J. Oberhumer
15484aa296
all: more cleanups
...
Changes include:
- extract headers.h from conf.h
- use "byte" in some more places
- unify "const" coding style
- pefile.cpp: make sort order deterministic
- simplify some other pefile.cpp code
- CI updates
2023-03-18 21:27:34 +01:00
John Reiser
5b113a5041
Merge branch 'devel4' of https://github.com/upx/upx into devel4
2023-03-16 08:51:29 -07:00
John Reiser
1320e3efdb
PackLinuxElf32::canPackOSABI() isolates canPack() from OSABI weirdness
...
modified: p_lx_elf.cpp
modified: p_lx_elf.h
2023-03-16 08:30:06 -07:00
Markus F.X.J. Oberhumer
d32f447bda
Merge branch 'devel' into devel4
2023-03-15 22:34:05 +01:00
John Reiser
b74c4e4ac1
Picky, picky static analyzer
...
https://github.com/upx/upx/actions/runs/4422867763/jobs/7755057541
modified: p_lx_elf.cpp
2023-03-15 09:05:02 -07:00
John Reiser
35333403ef
Zero ElfXX_Ehdr.e_sh* info when removing ElfXX_Shdr
...
The aim is less confusion by static linkers: the _Shdr are gone!
https://github.com/upx/upx/issues/659
modified: p_lx_elf.cpp
2023-03-15 08:44:59 -07:00
Markus F.X.J. Oberhumer
a627648249
all: assorted cleanups and updates
...
Changes include:
- add a bunch of "noexcept", mostly to operators and forceinline
- use "uchar"
- use "charptr"
- rename options_t to Options
- add ptr_check_no_overlap()
- rewrite p_exe.cpp, NFCI
- clang-format help.cpp
- spelling fixes
2023-03-15 00:19:55 +01:00
John Reiser
f8934c09ff
F*ck MSVC
...
warning C4245: 'return': conversion from 'int' to 'unsigned int', signed/unsigned mismatch
return ~0; // in function declared as returning 'unsigned'. The bits are the same!
modified: p_lx_elf.cpp
2023-03-09 12:00:56 -08:00
John Reiser
7a09c88e30
CI convention sucks
...
renamed: MAX_ELF_HDR.cpp -> MAX_ELF_HDR.h
modified: p_lx_elf.cpp
2023-03-09 11:44:22 -08:00
John Reiser
17526d1132
Make it easier to change MAX_ELF_HDR consistently
...
https://github.com/upx/upx/issues/655
new file: MAX_ELF_HDR.cpp
new file: stub/src/MAX_ELF_HDR.S
new file: stub/src/MAX_ELF_HDR.c
modified: p_lx_elf.cpp
modified: stub/arm.v4a-linux.elf-fold.h
modified: stub/arm64-linux.elf-fold.h
modified: stub/src/amd64-linux.elf-fold.S
modified: stub/src/amd64-linux.elf-main.c
modified: stub/src/amd64-linux.elf-so_main.c
modified: stub/src/arm.v4a-linux.elf-fold.S
modified: stub/src/arm.v4a-linux.elf-so_fold.S
modified: stub/src/arm64-linux.elf-fold.S
modified: stub/src/arm64-linux.elf-so_fold.S
modified: stub/src/i386-bsd.elf-fold.S
modified: stub/src/i386-bsd.elf-main.c
modified: stub/src/i386-linux.elf-fold.S
modified: stub/src/i386-linux.elf-main.c
modified: stub/src/i386-linux.elf-so_main.c
modified: stub/src/i386-linux.elf.interp-fold.S
modified: stub/src/i386-linux.elf.interp-main.c
modified: stub/src/i386-linux.elf.shell-fold.S
modified: stub/src/i386-linux.elf.shell-main.c
modified: stub/src/i386-openbsd.elf-fold.S
modified: stub/src/i386-openbsd.elf-main.c
modified: stub/src/mipsel.r3000-linux.elf-fold.S
modified: ../.github/travis_testsuite_1-expected_sha256sums.sh
2023-03-09 10:06:13 -08:00
John Reiser
ff7939c1c0
invert_pt_dynamic, sort_DTxx_offsets, elf_find_table_size
...
https://github.com/upx/upx/issues/655
modified: p_lx_elf.cpp
modified: p_lx_elf.h
2023-03-09 09:24:35 -08:00
John Reiser
96c196b1be
Final ph.u_len and ph.c_len reflect multiple compressed extents
...
https://github.com/upx/upx/issues/655
modified: ../.github/travis_testsuite_1-expected_sha256sums.sh
modified: p_lx_elf.cpp
2023-03-09 09:06:06 -08:00
John Reiser
adb0ca8250
Many changes for ELF shared libraries on Linux and Android
...
Handling more than 2 PT_LOAD (and thus more than 1 executable PT_LOAD)
required extensive changes. But the bonus is the infrastructure
to support a different (de-)compression algorithm for each PT_LOAD.
https://github.com/upx/upx/issues/341 i386 .so decompression
https://github.com/upx/upx/issues/609 armv7 .so on Android
https://github.com/upx/upx/issues/625 amd64 .so execution
https://github.com/upx/upx/issues/654 armv7 .exe
Not yet: .so on MIPS, PowerPC, PowerPC64
2023-03-04 17:37:25 -08:00
Markus F.X.J. Oberhumer
3d691645a4
src: pefile: add checkMachine()
2023-02-21 20:33:40 +01:00
Markus F.X.J. Oberhumer
e1edc5f50a
src: use 'byte' instead of 'upx_byte'; NFCI
2023-02-21 19:27:23 +01:00
Markus F.X.J. Oberhumer
4a8efd2e2f
src: rework optimizeReloc handling; cleanups
2023-02-21 15:19:24 +01:00
Markus F.X.J. Oberhumer
8d364c82e2
CI: add build for windows arm64ec
2023-02-12 19:27:56 +01:00
Markus F.X.J. Oberhumer
c5059231dc
all: rename win32/arm back to wince/arm
2023-02-12 18:58:11 +01:00
Markus F.X.J. Oberhumer
f584c91386
all: canonicalize win32 and win64 file names
2023-02-10 09:49:29 +01:00
Markus F.X.J. Oberhumer
b8d9c2b755
all: assorted updates and cleanups
2023-02-05 17:20:32 +01:00
Markus F.X.J. Oberhumer
8944e90175
all: post-release version bump
2023-01-30 13:39:49 +01:00
Markus F.X.J. Oberhumer
33cdcb0e82
all: prepare for release
2023-01-30 11:18:06 +01:00
Markus F.X.J. Oberhumer
0653bb5a72
src: some xspan cleanups
2023-01-30 11:03:11 +01:00
Markus F.X.J. Oberhumer
43b6ff29e3
all: bump tentative release date
2023-01-29 15:39:35 +01:00
Markus F.X.J. Oberhumer
a444a8a704
src: pefile: fix overly tricky canUnpack0 logic
2023-01-29 12:40:00 +01:00
Markus F.X.J. Oberhumer
3fa18c1799
src: clang-format pefile
2023-01-29 12:34:05 +01:00
Markus F.X.J. Oberhumer
19147963b9
src: pefile: try to work-around a scan-build warning
2023-01-29 12:21:15 +01:00
Markus F.X.J. Oberhumer
5056215a1f
all: more assorted cleanups
2023-01-29 11:39:57 +01:00
Markus F.X.J. Oberhumer
8a1bd67a20
src: more valgrind integration
2023-01-26 08:50:30 +01:00
Markus F.X.J. Oberhumer
a094df7b55
all: more cleanups; NFCI
2023-01-24 21:52:10 +01:00
Markus F.X.J. Oberhumer
cc893dfc11
CI: add zigcc and scan-build
2023-01-22 22:07:35 +01:00
Markus F.X.J. Oberhumer
8ef17da082
all: cleanups
2023-01-22 18:44:31 +01:00
Markus F.X.J. Oberhumer
7993e619cd
src: even more outstanding util/xspan renaming; NFC
2023-01-21 19:15:38 +01:00
Markus F.X.J. Oberhumer
1ab8d5fb3f
src: remove currently unused submodules
2023-01-21 18:57:23 +01:00
Markus F.X.J. Oberhumer
f37a3bb9bb
src: new ACC version
2023-01-19 06:26:06 +01:00
Markus F.X.J. Oberhumer
2632342f44
all: remove currently unused submodules
2023-01-19 03:32:49 +01:00
Markus F.X.J. Oberhumer
8efcf6f099
src: move console files into a subdir; NFC
2023-01-18 14:19:15 +01:00
Markus F.X.J. Oberhumer
58343fc78d
src: more outstanding util/xspan renaming; NFC
2023-01-18 10:11:29 +01:00
Markus F.X.J. Oberhumer
6c41a4c9c8
src: move compress files into a subdir; clang-format some more files; NFC
2023-01-18 09:28:12 +01:00
Markus F.X.J. Oberhumer
cc994326a0
all: cleanups
2023-01-15 13:49:27 +01:00
Markus F.X.J. Oberhumer
9f830e0c41
all: add zstd compression library
2023-01-13 22:25:15 +01:00
Markus F.X.J. Oberhumer
44049ecf30
all: enable WITH_VALGRIND by default
2023-01-13 22:25:15 +01:00
Markus F.X.J. Oberhumer
f00667ad7d
all: minor cleanups, update some comments
2023-01-13 05:37:28 +01:00
Markus F.X.J. Oberhumer
513b00a30e
cmake: update for MSVC_IDE
2023-01-05 14:26:17 +01:00
Markus F.X.J. Oberhumer
0cb0dbf6d8
src: cleanup conf.h
2023-01-05 14:26:12 +01:00
Markus F.X.J. Oberhumer
9f00515da4
CI: fix windows build
2023-01-05 02:29:12 +01:00
Markus F.X.J. Oberhumer
cd686cb1d9
src: add boost-pfr
2023-01-05 00:57:05 +01:00
Markus F.X.J. Oberhumer
72f3e9b25a
all: require C++17
2023-01-03 15:11:11 +01:00
John Reiser
811b15a5b3
Fix crash with TLS init in i386 dll
...
https://github.com/upx/upx/issues/643
modified: .github/travis_testsuite_1-expected_sha256sums.sh
modified: src/stub/i386-win32.pe.h
modified: src/stub/src/i386-win32.pe.S
modified: src/stub/tmp/i386-win32.pe.bin.dump
2023-01-12 18:35:04 -08:00
John Reiser
ab00825f37
i386 shared library TLS init
...
https://github.com/upx/upx/issues/643
modified: .github/travis_testsuite_1-expected_sha256sums.sh
modified: src/p_w32pe.cpp
modified: src/stub/i386-win32.pe.h
modified: src/stub/src/i386-win32.pe.S
modified: src/stub/tmp/i386-win32.pe.bin.dump
2023-01-12 14:34:06 -08:00
John Reiser
e86d9179aa
Sync testsuite
...
modified: .github/travis_testsuite_1-expected_sha256sums.sh
modified: src/p_lx_elf.cpp
2023-01-09 10:51:47 -08:00
John Reiser
26d8e9c4c5
amd64-linux revamp for compressing shared libraries
...
Major changes: p_lx_elf.cpp and stub/src/amd64-linux.elf-so*.
(Includes run-time infrastructure for multiple de-compressors.)
modified: linker.cpp
modified: p_lx_elf.cpp
modified: p_lx_elf.h
modified: p_unix.cpp
modified: p_unix.h
modified: stub/Makefile
modified: stub/src/amd64-darwin.dylib-entry.S
modified: stub/src/amd64-darwin.macho-entry.S
new file: stub/src/amd64-expand.S
modified: stub/src/amd64-linux.elf-entry.S
new file: stub/src/amd64-linux.elf-so_entry.S
new file: stub/src/amd64-linux.elf-so_fold.S
new file: stub/src/amd64-linux.elf-so_fold.lds
new file: stub/src/amd64-linux.elf-so_main.c
modified: stub/src/amd64-linux.shlib-init.S
modified: stub/src/amd64-win64.pep.S
modified: stub/src/arch/amd64/nrv2b_d.S
modified: stub/src/arch/amd64/nrv2d_d.S
modified: stub/src/arch/amd64/nrv2e_d.S
plus many generated stub/*.h and stub/tmp/*.bin.dump
2023-01-09 09:39:25 -08:00
John Reiser
5f3ebc8a7f
clang-format
...
modified: linker.cpp
2023-01-09 09:33:34 -08:00
John Reiser
425b1b44bc
Initialize output_capacity for loader
...
modified: pefile.cpp
2023-01-09 09:20:43 -08:00
John Reiser
39442e6282
initLoader() 4th parameter allows larger output size
...
modified: packer.cpp
modified: packer.h
2023-01-05 15:28:12 -08:00
John Reiser
99575e1010
ElfLinker::output_capacity
...
modified: linker.cpp
modified: linker.h
2023-01-05 15:25:34 -08:00
John Reiser
64aa7540e2
Sync copyright year 2023
...
modified: p_lx_elf.cpp
modified: p_lx_elf.h
modified: p_unix.cpp
modified: p_unix.h
2023-01-02 08:28:41 -08:00
Markus F.X.J. Oberhumer
e25d04fb12
all: bump version date
2023-01-01 19:53:28 +01:00
Markus F.X.J. Oberhumer
dd1d5a92d2
all: welcome 2023
2023-01-01 19:49:30 +01:00
Markus F.X.J. Oberhumer
33dc60df26
all: minor cleanups
2022-12-31 21:08:58 +01:00
John Reiser
619aeb54ff
Pesky "upx -t" mode
...
https://github.com/upx/upx/issues/599
modified: p_lx_elf.cpp
2022-12-30 10:29:25 -08:00
John Reiser
77ba43328b
Use my_page_size, which is 0x4000 (16KiB) on arm64
...
https://github.com/upx/upx/issues/628
modified: p_mach.cpp
2022-12-31 20:55:34 +01:00
John Reiser
01a30752c7
Mach-O: allow 256 ncmds and 32768 sizeofcmds
...
https://github.com/upx/upx/issues/642
modified: p_mach.cpp
modified: stub/src/i386-darwin.macho-upxmain.c
modified: stub/src/powerpc-darwin.macho-upxmain.c
2022-12-29 14:02:42 -08:00
John Reiser
e56b748435
WIP fixing "upx -t" of shared library
...
modified: p_lx_elf.cpp
2022-12-23 11:23:41 -08:00
Markus F.X.J. Oberhumer
bb4cbdff44
src: fix m68k-atari build, prepare for std::atomic, port John's MemBuffer debug
2022-12-22 16:06:25 +01:00
Markus F.X.J. Oberhumer
0b47e474a7
make: update src/Makefile
2022-12-22 15:52:50 +01:00
John Reiser
fefce0d5c4
Cleanup "PT_LOAD gap recovery" during upx -d
...
https://github.com/upx/upx/issues/635
modified: p_lx_elf.cpp
2022-12-21 06:53:37 -08:00
Markus F.X.J. Oberhumer
708ab1dcd7
src: p_xxx_enum.h: trailing commas in enums are allowed since C++11
2022-12-20 23:34:36 +01:00
Markus F.X.J. Oberhumer
6cf85cee6e
src: minor compatibility fix
2022-12-20 11:40:22 +01:00
Markus F.X.J. Oberhumer
1eb6a40fdd
src: restore lseek() error check in file.cpp
2022-12-20 11:51:31 +01:00
John Reiser
1bed77e4d3
'sizeof' returns size_t, which on i386 is not as wide as off_t
...
https://github.com/upx/upx/issues/629
https://github.com/upx/upx/issues/635
modified: p_lx_elf.cpp
2022-12-20 07:21:02 -08:00
John Reiser
f2a68023fa
MSVC error C4146: unary minus operator applied to unsigned type, result still unsigned
...
modified: p_lx_elf.cpp
2022-12-19 16:14:48 -08:00
John Reiser
8ccffc40e3
A real typo that caused an error in "upx -d" de-compressing
...
modified: p_lx_elf.cpp
modified: ../.github/travis_testsuite_1-expected_sha256sums.sh
2022-12-19 15:45:27 -08:00
John Reiser
dd8c1d0441
clang alignment
...
modified: p_lx_elf.cpp
2022-12-19 14:31:26 -08:00
John Reiser
f9f28ff176
More work on "upx -d" de-compression
...
https://github.com/upx/upx/issues/629
https://github.com/upx/upx/issues/635
modified: p_elf_enum.h
modified: p_lx_elf.cpp
modified: p_lx_elf.h
modified: p_unix.cpp
2022-12-19 13:49:43 -08:00
John Reiser
3649041195
Return value of FileBase::seek(, SEEK_CUR) was not FileBase::tell()
...
modified: file.cpp
2022-12-19 13:37:24 -08:00
Markus F.X.J. Oberhumer
c23c7a9379
all: minor updates
2022-12-15 16:20:22 +01:00
Markus F.X.J. Oberhumer
9934e33b99
src: pacify a clang scan-build warning in p_mach.cpp
2022-12-12 21:27:34 +01:00
Markus F.X.J. Oberhumer
9e75fdda66
src: pacify a -Wcast-align warning
2022-12-12 20:07:27 +01:00
Markus F.X.J. Oberhumer
d873a26f41
all: clang-format-15.0.6
2022-12-12 19:25:31 +01:00
Markus F.X.J. Oberhumer
91aa5b55ab
all: upgrade to upx-stubtools v20221212
2022-12-12 19:25:28 +01:00
Markus F.X.J. Oberhumer
3f460a76ce
src: fix typo in options.cpp
2022-12-12 05:38:51 +01:00
John Reiser
4cdf77e16f
Stupid MSVC 14.2, 14.3; obtuse clang 14.0.5 (and MemBuffer vs alignment)
...
MSVC: cannot say "if (0)" to get "check symtax+semantics, but do not emit code"
clang+MemBuffer: must fight too much to get pointer to wider-than-char
modified: src/p_lx_elf.cpp
2022-12-11 14:41:38 -08:00
John Reiser
d89813e911
Implement de-compress of --android-shlib
...
64-bit (arm64, aarch64) only for now. NYI: 32-bit (armv7).
(Also: implied catch-up with all changes by Markus in the meantime.)
https://github.com/upx/upx/issues/599
modified: src/p_lx_elf.cpp
modified: src/p_lx_elf.h
2022-12-11 13:46:44 -08:00
Markus F.X.J. Oberhumer
7c57b10cae
all: minor cleanups
2022-12-02 16:46:16 +01:00
Markus F.X.J. Oberhumer
65a2da4b40
src: more clang-format
2022-11-27 22:03:20 +01:00
Markus F.X.J. Oberhumer
02f6786b2a
src: new ACC version
2022-11-27 21:56:30 +01:00
Markus F.X.J. Oberhumer
9da4f7a6dc
src: clang-format more files; cleanups; NFCI
2022-11-27 12:34:15 +01:00
John Reiser
510505a85c
p_tmt: more sanity of input, cleanup MemBuffer usage
...
https://github.com/upx/upx/issues/632
modified: src/p_tmt.cpp
2022-11-24 10:28:03 -08:00
Markus F.X.J. Oberhumer
9f5d67e27c
src: clang-format various packers
2022-11-26 17:45:25 +01:00
Markus F.X.J. Oberhumer
93c6496ba8
src: add a xspan check to p_tmt.cpp and clang-format
2022-11-24 09:11:25 +01:00
John Reiser
779b648c5f
invert_pt_dynamic: fix thinko; PackLinuxElf64help1 insist on ELF
...
https://github.com/upx/upx/issues/631
modified: src/p_lx_elf.cpp
2022-11-23 19:49:28 -08:00
Markus F.X.J. Oberhumer
b221c44466
src: re-add non-working PackMachPPC32 to PackMaster
2022-11-22 21:24:33 +01:00
Markus F.X.J. Oberhumer
665296f7cf
src/util: minor xspan improvements
2022-11-22 21:21:26 +01:00
Markus F.X.J. Oberhumer
0af9bbb623
all: post-release version bump
2022-11-22 20:51:56 +01:00
Markus F.X.J. Oberhumer
fdec47a83d
all: prepare for release
2022-11-16 23:15:38 +01:00
Markus F.X.J. Oberhumer
7ff913bbd2
src: remove non-working PackMachPPC32 from PackMaster
2022-11-16 22:24:39 +01:00
Markus F.X.J. Oberhumer
94775bef9f
src: remove non-working PackMachPPC64 from PackMaster; see issue #626
2022-11-16 20:41:31 +01:00
Markus F.X.J. Oberhumer
3cf102334f
src: add option '--force-overwrite'
2022-11-16 12:52:53 +01:00
Markus F.X.J. Oberhumer
627e733a30
src: minor compress_lzma.cpp cleanups
2022-11-15 11:59:22 +01:00
Markus F.X.J. Oberhumer
eb231b65f3
src: clang-format compress_*.cpp; minor cleanup
2022-11-14 11:35:13 +01:00
John Reiser
4199a44bef
armeb stub: b_method as arg5 is 32-bit unsigned
...
https://github.com/upx/upx/issues/618
modified: src/stub/src/arch/arm/v4a/lzma_d.S
modified: .github/travis_testsuite_1-expected_sha256sums.sh
also src/stub/arm*-linux*.h, src/stub/tmp/*.bin.dump
2022-11-10 08:04:35 -08:00
Markus F.X.J. Oberhumer
777392c0fe
src: add some compress doctest checks
2022-11-10 16:26:36 +01:00
Markus F.X.J. Oberhumer
16de3e78a5
src: try to fix canUnpack() confusion - see packer.h
2022-11-10 06:00:53 +01:00
Markus F.X.J. Oberhumer
d7508d8c09
src: pefile.cpp: replace "membuffer + x - y" with "membuffer + (x - y)"
...
This is needed because "membuffer + x" is now bounds-checked, and
the temporary addition would trigger an exception.
2022-11-10 00:40:41 +01:00
John Reiser
2a136c1c1d
End users wish to avoid "double packing".
...
https://github.com/upx/upx/issues/622
modified: src/p_lx_elf.cpp
2022-11-09 15:39:16 -08:00
Markus F.X.J. Oberhumer
2578102be9
src: misc cleanups
2022-11-09 22:15:11 +01:00
Markus F.X.J. Oberhumer
28f0bb4e11
src: fix pefile.cpp otls allocation not accounting for alignment. Closes #621 .
2022-11-09 19:29:16 +01:00
Markus F.X.J. Oberhumer
824c8a8efb
src: introduce raw_index_bytes()
2022-11-08 23:05:34 +01:00
John Reiser
37f27a1262
"gcc -Werror=format-security" is small-minded
...
... and does not perform constant propagation
modified: src/p_vmlinx.cpp
2022-11-08 13:36:28 -08:00
Markus F.X.J. Oberhumer
2b8a7a492a
src/util: fix compilation when not using xspan
2022-11-08 20:38:52 +01:00
Markus F.X.J. Oberhumer
db56bbb11b
src/util: forward memset() in xspan_fwd.h
2022-11-08 20:34:44 +01:00
John Reiser
82d26f04a4
p_vmlinx was too eager
...
https://github.com/upx/upx/issues/622
modified: src/p_vmlinx.cpp
2022-11-08 10:30:48 -08:00
Markus F.X.J. Oberhumer
2d74298001
make: update Makefiles
2022-11-08 03:52:43 +01:00
Markus F.X.J. Oberhumer
ce21254ed2
all: misc cleanups
2022-11-06 08:35:00 +01:00
John Reiser
c8a3acbba8
Static executable with 4 PT_LOAD has only ELF headers in first PT_LOAD
...
https://github.com/upx/upx/issues/615
2022-11-02 10:03:25 -07:00
Markus F.X.J. Oberhumer
81e11987a2
all: add UPX_VERSION_GIT_DESCRIBE
2022-11-02 10:35:40 +01:00
Markus F.X.J. Oberhumer
668cefec2f
src: mention UPX_CONFIG_DISABLE_GITREV build config
2022-11-02 02:52:20 +01:00
John Reiser
2b9e83256d
SELinux execmod requires no PROT_EXEC when PROT_WRITE
...
modified: src/stub/src/amd64-linux.elf-main.c
modified: src/stub/amd64-linux.elf-fold.h
modified: src/stub/arm64-linux.elf-fold.h
modified: src/stub/powerpc64-linux.elf-fold.h
modified: src/stub/powerpc64le-linux.elf-fold.h
modified: src/stub/tmp/amd64-linux.elf-fold.map
modified: src/stub/tmp/arm64-linux.elf-fold.map
modified: src/stub/tmp/powerpc64-linux.elf-fold.map
modified: src/stub/tmp/powerpc64le-linux.elf-fold.map
2022-10-28 13:04:17 -07:00
Markus F.X.J. Oberhumer
bce109ab54
all: post-release version bump
2022-10-28 17:10:52 +02:00
Markus F.X.J. Oberhumer
69ca635c4c
all: prepare for 4.0.0 release
2022-10-28 10:38:03 +02:00
Markus F.X.J. Oberhumer
e0bf460993
src: rename membuffer "Uncompression" to "Decompression"
2022-10-28 10:34:31 +02:00
John Reiser
50a6698715
Each PROT_WRITE segment has implicit .bss on end of last page (64-bit only for now);
...
Also workaround kernel bug invoking the escape hatch on arm64 (aarch64).
https://github.com/upx/upx/issues/611
2022-10-27 11:01:37 -07:00
Markus F.X.J. Oberhumer
7dd2cdea1e
src: deprecate util/bptr.h
2022-10-27 17:52:15 +02:00
Markus F.X.J. Oberhumer
295889023f
all: set next version back to 4.0.0, bump tentative release date, update
...
docs
2022-10-27 17:36:02 +02:00
Markus F.X.J. Oberhumer
feef2e38cf
all: final tweaks for release
2022-10-27 16:53:16 +02:00
Markus F.X.J. Oberhumer
e910a9dc3e
all: change version back to 3.99; docs: warn about know regressions and
...
clarify GPLv2+ COPYING
2022-10-27 16:00:25 +02:00
Markus F.X.J. Oberhumer
e5c0d998b7
src: fully deprecate src/Makefile; minor doc and CI cleanups
2022-10-25 01:48:45 +02:00
Markus F.X.J. Oberhumer
63f6fef964
all: don't use egrep or fgrep
2022-10-25 01:47:42 +02:00
Markus F.X.J. Oberhumer
983eb6d676
src: improve error message when using doctest options like '--dt-help'; add
...
doctest info to help.cpp
2022-10-25 01:47:38 +02:00
Markus F.X.J. Oberhumer
75a769759d
src/stub: sync stubs
2022-10-24 12:56:49 +02:00
John Reiser
2354b01bad
Adapt to libbfd: "no Shdrs" requires 0==.e_shentsize and 0==.e_shnum
...
modified: p_lx_elf.cpp
2022-10-24 12:56:49 +02:00
John Reiser
c331b9f1e2
Zero the tail of last RW page, even when variable page size
...
https://github.com/upx/upx/issues/611
modified: stub/src/amd64-linux.elf-main.c
2022-10-24 12:56:49 +02:00
John Reiser
afeaeeddec
munmap(, Phdr[C_TEXT=1].p_memsz); // not .p_vaddr
...
modified: stub/src/arm64-linux.elf-fold.S
modified: stub/src/powerpc64le-linux.elf-fold.S
2022-10-24 12:56:49 +02:00
John Reiser
ab7ef9f511
Document the value of "brk #0 " instruction
...
modified: stub/src/arm64-linux.elf-entry.S
2022-10-24 12:56:49 +02:00
John Reiser
d3ad6d25d8
PackLinuxElf64::asl_pack2_Shdrs() for better fit in logical flow
...
modified: p_lx_elf.cpp
modified: p_lx_elf.h
2022-10-24 12:56:49 +02:00
John Reiser
2e29f9fa5f
pack2() fixes for --android-shlib
...
WIP for https://github.com/upx/upx/issues/599
modified: p_lx_elf.cpp
2022-10-24 12:56:49 +02:00
John Reiser
5d9f71bb13
asl_pack1_Shdrs()
...
modified: p_lx_elf.cpp
modified: p_lx_elf.h
2022-10-24 12:56:49 +02:00
John Reiser
82ed25bb44
Major fix 64-bit un_shlib_1() and unpack(), but not --android-shlib
...
Also canUnpack() is really a 'bool' which sets overlay_offset
when 'true'; confusing!
https://github.com/upx/upx/issues/599 (partial)
modified: p_lx_elf.cpp
modified: p_lx_elf.h
modified: p_unix.h
2022-10-24 12:56:49 +02:00
Markus F.X.J. Oberhumer
f57393c0e8
all: simplify include path handling; update src/Makefile
2022-10-24 12:56:35 +02:00
Markus F.X.J. Oberhumer
b54cced19c
src: add some tests for compress_zlib
2022-10-24 12:18:25 +02:00
Markus F.X.J. Oberhumer
60a0544314
all: bump tentative release date
2022-10-23 23:15:00 +02:00
Markus F.X.J. Oberhumer
283c1cf931
src: add --version-short option; support doctest --dt-XXX options; cleanups
2022-10-23 23:09:13 +02:00
Markus F.X.J. Oberhumer
fff53efc05
src: add some more xspan tests
2022-10-20 14:06:20 +02:00
Markus F.X.J. Oberhumer
07d368adca
all: misc cleanups
2022-10-20 02:09:05 +02:00
Markus F.X.J. Oberhumer
13276d93fa
all: bump tentative release date
2022-10-18 21:07:48 +02:00
John Reiser
72613d06a5
Look for PackHeader in the right place.
...
https://github.com/upx/upx/issues/606
modified: p_mach.cpp
2022-10-11 08:08:55 -07:00
John Reiser
48ad5513ff
un_shlib_1() allows test mode ("-t") which has (nullptr == fo)
...
modified: p_lx_elf.cpp
2022-10-07 12:52:21 -07:00
John Reiser
201d9f1346
Fix length when stub unmaps compressed input for main program
...
https://github.com/upx/upx/issues/606
modified: ../.github/travis_testsuite_1-expected_sha256sums.sh
modified: stub/amd64-linux.elf-fold.h
modified: stub/src/amd64-linux.elf-fold.S
modified: stub/tmp/amd64-linux.elf-fold.map
2022-10-07 09:53:29 +02:00
John Reiser
1e8f1f49d0
is_bad_linker_command() ignores LC_REQ_DYLD
...
https://github.com/upx/upx/issues/606
modified: p_mach.cpp
2022-10-06 10:15:10 -07:00
Markus F.X.J. Oberhumer
65707900bc
src: remove more traces of fictional powerpc64le-darwin
2022-10-06 15:53:50 +02:00
Markus F.X.J. Oberhumer
c4437cb293
all: add support for a basic "make test"
2022-10-06 14:10:35 +02:00
Markus F.X.J. Oberhumer
e2b86a49db
src: fix recently introduced bug in unoptimzeReloc
2022-10-06 14:09:45 +02:00
John Reiser
05ff7e35a1
Warn for big shell scripts, and send them to --force-execve.
...
Also propagte error code when execve() fails for compressed shell,
to avoid confusion of `hlt` ==> SIGSEGV.
https://github.com/upx/upx/issues/604
2022-10-05 01:30:32 +02:00
Markus F.X.J. Oberhumer
f67cec4752
submodules: update for new version
2022-10-04 15:33:27 +02:00
Markus F.X.J. Oberhumer
0f42579e68
src: fix djgpp and musl builds
2022-10-02 20:00:30 +02:00
Markus F.X.J. Oberhumer
7398d8f68f
src: enable -Wsuggest-override in src/conf.h
2022-09-27 18:17:28 +02:00
John Reiser
ec33109b22
clang-10 requires the use of 'override'
...
Discovered during gitlab auto-build for https://github.com/upx/upx/issues/595
modified: Makefile
modified: p_armpe.h
modified: p_djgpp2.h
modified: p_lx_elf.h
modified: p_lx_exc.h
modified: p_lx_interp.h
modified: p_lx_sh.h
modified: p_mach.h
modified: p_ps1.h
modified: p_tmt.h
modified: p_unix.h
modified: p_vmlinx.h
modified: p_vmlinz.h
modified: p_w32pe.h
modified: p_w64pep.h
modified: pefile.h
2022-09-27 18:15:48 +02:00
John Reiser
a13b4d10d9
After upx-3.96, the de-compressing stub for ELF moved
...
... so unpack() of newly-compressed ELF by upx-3.96 now says
"CantUnpackException: need a newer version of UPX"
https://github.com/upx/upx/issues/595
modified: p_lx_elf.h
modified: packer.h
2022-09-27 18:09:20 +02:00
Markus F.X.J. Oberhumer
36e94e58d0
stub: add mising powerpc64-darwin tmp dump files
2022-09-27 18:09:20 +02:00
John Reiser
d0a52bd483
More cleanup of stubs for powerpc64le-darwin* which does not exist.
...
Only powerpc64-darwin (BigEndian, no suffix) exists.
https://github.com/upx/upx/issues/596
2022-09-27 15:58:35 +02:00
Markus F.X.J. Oberhumer
4256057c27
src: add a mem_size() call hinted by GitHub CodeQL
2022-09-21 19:28:46 +02:00
John Reiser
55e4a4f086
Assembler local symbol ("1:") clobbered by code in .macro
...
https://github.com/upx/upx/issues/534
modified: stub/arm64-darwin.macho-entry.h
modified: stub/arm64-linux.elf-entry.h
modified: stub/arm64-linux.shlib-init.h
modified: stub/src/arch/arm64/v8/lzma_d.S
modified: stub/src/arch/arm64/v8/macros.S
2022-09-20 13:08:14 -07:00
Markus F.X.J. Oberhumer
b4cb9f8b2f
src: silence some bogus GitHub CodeQL warnings; add MemBuffer "+" overload
2022-09-17 07:53:14 +02:00
Markus F.X.J. Oberhumer
63298ebd6d
src: silence clang-15 compiler warnings
2022-09-16 16:31:34 +02:00
Markus F.X.J. Oberhumer
73c816e468
doc: work on improving docs; add generated files to Git repo
2022-09-16 13:26:13 +02:00
Markus F.X.J. Oberhumer
b8b94ee89e
src: more cleanups; NFCI
2022-09-16 13:26:13 +02:00
Markus F.X.J. Oberhumer
81176716d5
src: linker: fix a minor printf format issue detected by codeql
2022-09-16 13:26:13 +02:00
Markus F.X.J. Oberhumer
c75d7a685d
src: major cleanups, introduce new eXtended Span class
...
- initial minimally invasive eXtended Span implementation
- rename ptr_diff to ptr_diff_bytes
- move some files to util subdir
- lots of cleanups
- start using the new checked pointers - this needs some real-world testing
2022-09-16 13:26:13 +02:00
Markus F.X.J. Oberhumer
4318cc22ee
src: cleanup option handling, add testcases; fixes #587
2022-09-16 13:26:13 +02:00
Markus F.X.J. Oberhumer
5db34fbf92
src: new ACC version
2022-09-16 13:26:13 +02:00
Markus F.X.J. Oberhumer
4603f1df4b
src: bump tentative release date
2022-09-16 13:26:13 +02:00