John Reiser
ee008acfbd
amd64 implements --is_ptinterp
...
https://github.com/upx/upx/issues/121
modified: ../.github/travis_testsuite_1.sh
modified: p_lx_elf.cpp
modified: stub/src/amd64-linux.elf-entry.S
modified: stub/src/amd64-linux.elf-fold.S
modified: stub/src/amd64-linux.elf-main.c
also .h, .map, .bin.dump
2017-10-18 13:10:49 -07:00
John Reiser
d149092ac0
Reference to external documentation only.
...
modified: stub/src/arch/mips/r3000/macros.ash
2017-10-17 14:11:06 -07:00
John Reiser
eafa136c69
Appease error C4146 unary minus operator applied to unsigned type, result still unsigned
...
Microsoft Optimizing Compiler 16.00.40219.01, 19.00.24215.1, 19.11.25507.1; others
modified: p_lx_elf.cpp
2017-10-17 08:44:08 -07:00
John Reiser
402c885987
Merge branch 'jreiser-elfstub' into devel
...
New stub strategy on Linux: Linux adds too many other segments
to the address space: [vdso], [sigpage], ...; and qemu might
arrange them differently. Thus the only reliable mappings
are the PT_LOAD of the compressed file itself; all other
address space is unknown! First, the compressed file uses
.bss to occupy all unused pages up to the original brk(0).
Then at run time, the stub gets another mapping of /proc/self/exe,
and uncompresses the user program on top of the original pages.
[*BSD unchanged for now?]
modified: stub/src/powerpc64le-linux.elf-fold.S
modified: stub/src/powerpc64le-linux.elf-entry.S
modified: stub/src/powerpc64le-darwin.macho-entry.S
modified: stub/src/powerpc64le-darwin.dylib-entry.S
modified: stub/src/powerpc-linux.elf-fold.S
modified: stub/src/powerpc-linux.elf-entry.S
modified: stub/src/mipsel.r3000-linux.elf-fold.S
modified: stub/src/mipsel.r3000-linux.elf-entry.S
modified: stub/src/i386-linux.elf-main.c
modified: stub/src/i386-linux.elf-fold.S
modified: stub/src/i386-linux.elf-entry.S
modified: stub/src/arm64-linux.elf-main.c
modified: stub/src/arm64-linux.elf-fold.S
modified: stub/src/arm64-linux.elf-entry.S
modified: stub/src/arm.v4a-linux.elf-fold.S
modified: stub/src/arm.v4a-linux.elf-entry.S
modified: stub/src/amd64-linux.elf-main.c
modified: stub/src/amd64-linux.elf-fold.S
modified: stub/src/amd64-linux.elf-entry.S
modified: p_unix.cpp
modified: p_mach.cpp
modified: p_lx_sh.cpp
modified: p_lx_interp.cpp
modified: p_lx_elf.cpp
modified: p_lx_elf.h
modified: p_lx_interp.h
modified: p_lx_sh.h
modified: p_mach.h
modified: p_unix.h
modified: stub/src/arch/mips/r3000/macros.ash
modified: stub/src/arch/powerpc/32/ppc_regs.h
modified: stub/src/arch/powerpc/64le/ppc_regs.h
modified: stub/src/include/linux.h
modified: stub/Makefile
modified: ../.github/travis_testsuite_1.sh
also .h .map .bin.dump
2017-10-14 14:26:11 -07:00
John Reiser
5e7e0508b9
sync stubs for "make run-testsuite"
...
modified: ../.github/travis_testsuite_1.sh
2017-10-14 14:19:24 -07:00
John Reiser
ff1d5fb794
stub for 64-bit little-endian PowerPC also uses TOC
...
modified: stub/src/arch/powerpc/64le/ppc_regs.h
modified: stub/src/powerpc64le-linux.elf-fold.S
2017-10-14 13:54:43 -07:00
John Reiser
ad3f63b5c4
stubs *.elf-main.c: tighten input to first decompress of ELF headers
...
modified: stub/src/amd64-linux.elf-main.c
modified: stub/src/i386-linux.elf-main.c
also .h, .map
2017-10-14 06:21:44 -07:00
John Reiser
a3e51e6dee
stub for PowerPC 64-bit big endian: accommodate musl bare .func as .e_entry
...
modified: stub/src/powerpc64le-linux.elf-fold.S
2017-10-14 06:18:00 -07:00
John Reiser
c1b9c79f54
arm,armeb stubs need endian-neutral code to set mflg_subr
...
modified: stub/src/arm.v4a-linux.elf-entry.S
also .h, .bin.dump
2017-10-13 12:27:07 -07:00
John Reiser
e0bc040b0a
mips stub uses new strategy
...
modified: p_lx_elf.cpp
modified: stub/src/arch/mips/r3000/macros.ash
modified: stub/src/arm64-linux.elf-entry.S
modified: stub/src/i386-linux.elf-main.c
modified: stub/src/mipsel.r3000-linux.elf-entry.S
modified: stub/src/mipsel.r3000-linux.elf-fold.S
also .h, .bin.dump, .map
2017-10-12 21:04:10 -07:00
John Reiser
85eb4c7537
powerpc stub: used wrong register
...
modified: stub/src/powerpc-linux.elf-entry.S
modified: stub/src/arch/powerpc/32/ppc_regs.h
2017-10-11 17:17:45 -07:00
John Reiser
1f929d47d0
x86_64 stub also needs make_hatch()
...
https://github.com/upx/upx/issues/133
modified: stub/src/amd64-linux.elf-main.c
modified: ../.github/travis_testsuite_1.sh
also .h and .map
2017-10-11 09:06:50 -07:00
John Reiser
608662d73b
x86_64 stub also needs make_hatch()
...
https://github.com/upx/upx/issues/133
modified: stub/src/amd64-linux.elf-main.c
2017-10-11 08:45:21 -07:00
John Reiser
7841d23e77
arm64: folded stub uses 64-bit TRACEing under DEBUG
...
modified: stub/src/amd64-linux.elf-main.c
modified: stub/src/arm64-linux.elf-entry.S
modified: stub/src/arm64-linux.elf-fold.S
2017-10-10 21:39:50 -07:00
John Reiser
b72dda4ada
arm64 spills a few registers because syscall can trash x18
...
modified: stub/src/arm64-linux.elf-entry.S
modified: stub/src/arm64-linux.elf-fold.S
2017-10-10 20:31:11 -07:00
John Reiser
c59c8a1ea2
readability; no functional change
...
modified: stub/src/powerpc64le-linux.elf-entry.S
2017-10-10 20:30:41 -07:00
John Reiser
1522293be0
arm64: stub uses new strategy
...
modified: p_lx_elf.cpp
modified: stub/src/powerpc64le-linux.elf-entry.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: stub/src/arm64-linux.elf-main.c
also .h, .map, .bin.dump
2017-10-10 14:51:03 -07:00
John Reiser
b37bc99330
PowerPC64: stub uses new strategy
...
Needed: expert on TOC for big-endian. glibc, musl, gcc disagree
on layout (is the .func first?) and usage for .e_entry.
modified: p_lx_elf.cpp
modified: stub/src/amd64-linux.elf-main.c
modified: stub/src/amd64-linux.elf-fold.S
modified: stub/src/arch/powerpc/64le/ppc_regs.h
modified: stub/src/i386-linux.elf-main.c
modified: stub/src/powerpc-linux.elf-entry.S
modified: stub/src/powerpc-linux.elf-fold.S
modified: stub/src/powerpc64le-darwin.dylib-entry.S
modified: stub/src/powerpc64le-darwin.macho-entry.S
modified: stub/src/powerpc64le-linux.elf-entry.S
modified: stub/src/powerpc64le-linux.elf-fold.S
modified: stub/Makefile
also .h, .bin.dump, .map
2017-10-07 13:43:12 -07:00
John Reiser
7f905724b1
amd64: stub uses new strategy
...
modified: stub/src/amd64-linux.elf-entry.S
modified: stub/src/amd64-linux.elf-fold.S
modified: p_lx_elf.cpp
also .h, .bin.dump, .map
2017-10-06 11:15:34 -07:00
John Reiser
2bf5bb1625
arm: stub uses new strategy
...
modified: stub/src/arm.v4a-linux.elf-entry.S
modified: stub/src/arm.v4a-linux.elf-fold.S
modified: p_lx_elf.cpp
plus .h, .bin.dump, .map
2017-10-05 17:07:30 -07:00
John Reiser
08d3376740
Elf i386 stub: get enough space when unfolded code requires another page
...
modified: src/i386-linux.elf-entry.S
2017-10-03 11:48:27 -07:00
John Reiser
7bace76176
Protect against bad crafted input.
...
https://github.com/upx/upx/issues/129
modified: p_lx_elf.cpp
2017-10-03 09:55:34 -07:00
John Reiser
ef336dbcc6
Protect against bad crafted input.
...
https://github.com/upx/upx/issues/128
modified: p_lx_elf.cpp
2017-10-02 21:47:40 -07:00
John Reiser
ca7217e717
powerpc: stub uses new strategy
...
First mmap must reserve enough space to decompress folded stub.
modified: stub/src/powerpc-linux.elf-entry.S
modified: stub/src/powerpc-linux.elf-fold.S
also .h, .map, .dump
2017-10-02 20:03:47 -07:00
John Reiser
3931cb7871
off_t is signed and long; keep the long when discarding the signed.
...
https://github.com/upx/upx/issues/127
modified: p_vmlinx.cpp
2017-10-01 16:14:09 -07:00
John Reiser
9e8de4abe5
i386: new stub strategy to avoid problems with early mmap layout
...
The stub occupies the same region that execve() would create
for the original progam. The stub copies everything to a new area,
erases the original region, replaces it with the de-compressed
program, and erases the copy of itself via the escape hatch.
The copy is inexpensive via mmap() of /proc/self/exe.
modified: stub/src/i386-linux.elf-entry.S
modified: stub/src/i386-linux.elf-fold.S
modified: stub/src/i386-linux.elf-main.c
modified: p_lx_elf.cpp
modified: p_lx_elf.h
modified: p_lx_interp.cpp
modified: p_lx_interp.h
modified: p_lx_sh.cpp
modified: p_lx_sh.h
modified: p_mach.cpp
modified: p_mach.h
modified: p_unix.cpp
modified: p_unix.h
modified: p_vmlinx.cpp
plus .h, .map, .dump
2017-10-01 15:56:34 -07:00
John Reiser
26be845563
mips stubs: implement ET_DYN (-pie).
...
modified: stub/src/mipsel.r3000-linux.elf-entry.S
modified: stub/src/mipsel.r3000-linux.elf-fold.S
plus associated *.h, *.bin.dump, and ../.github/travis_testsuite_1.sh
2017-09-26 10:05:22 -07:00
John Reiser
2f11a629fa
Fix flub: "git --amend" after "git push" is not a good idea.
...
https://github.com/upx/upx/issues/126# Please enter the commit message for your changes. Lines starting
modified: arm64-linux.shlib-init.S
2017-09-25 11:43:38 -07:00
John Reiser
a295437e11
Merge branch 'devel' of https://github.com/upx/upx into devel
2017-09-25 11:39:13 -07:00
John Reiser
04597fb804
Fix bug in unfilter for shlib on arm64.
...
https://github.com/upx/upx/issues/126
modified: stub/src/arm64-linux.shlib-init.S
and associated *.h, *.bin.dump
2017-09-25 11:38:33 -07:00
John Reiser
f2f002409b
Fix bug in unfilter for shlib on arm64.
...
https://github.com/upx/upx/issues/126
modified: stub/src/arm64-linux.shlib-init.S
and associated *.h, *.bin.dump
2017-09-25 11:31:44 -07:00
John Reiser
509de877ca
Cleanup powerpc64 aux stub files.
...
modified: stub/powerpc64-linux.elf-fold.h
modified: stub/powerpc64le-linux.elf-fold.h
modified: stub/tmp/powerpc64-linux.elf-fold.map
modified: stub/tmp/powerpc64le-linux.elf-fold.map
2017-09-24 20:30:07 -07:00
John Reiser
63aea4a7dc
64-bit Power PC linux uses 64KiB page size, but qemu-ppc64{,le} uses 4KiB.
...
modified: stub/src/amd64-linux.elf-main.c
modified: stub/src/include/linux.h
modified: stub/src/powerpc64le-linux.elf-fold.S
2017-09-24 20:24:46 -07:00
John Reiser
6470c748db
Flush ACC_UNUSED(adrc); and its predecessors from stub for MIPS.
...
modified: p_lx_elf.cpp
2017-09-24 20:07:31 -07:00
John Reiser
25a6429e6a
Merge branch 'devel' of https://github.com/upx/upx into devel
2017-09-23 10:43:14 -07:00
John Reiser
4fa1c2a97e
Avoid the stack in stub for PowerPC, especially under qemu-ppc.
...
modified: stub/src/powerpc-linux.elf-entry.S
also travis_testsuite_1.sh, -entry.h, -entry.bin.dump
2017-09-23 10:41:40 -07:00
Markus F.X.J. Oberhumer
9ad39d77cc
Update Travis.
2017-09-21 10:15:01 +02:00
John Reiser
92527126a8
Adapt around qemu-arm placement of ET_DYN and stack.
...
modified: stub/src/arm.v4a-linux.elf-entry.S
modified: ../.github/travis_testsuite_1.sh
plus arm*.elf-entry.h, arm*.elf-entry.bin.dump
2017-09-20 15:23:12 -07:00
John Reiser
02b4a4c974
Sync testsuite checksums.
...
modified: ../.github/travis_testsuite_1.sh
2017-09-20 13:37:38 -07:00
John Reiser
ede570be21
Spend 8 instructions to avoid modifying [0xf7000000, +) under qemu-arm.
...
modified: src/arm.v4a-linux.elf-entry.S
modified: src/arm.v4a-linux.elf-fold.S
plus arm*.h and tmp/arm*.{dump,map}
2017-09-20 13:31:38 -07:00
John Reiser
08627e9df5
Fix some AT_PHDR problems, at least on x86*.
...
modified: stub/src/amd64-linux.elf-main.c
modified: stub/src/i386-linux.elf-main.c
modified: ../.github/travis_testsuite_1.sh
plus many *.elf-fold.h and *.elf-fold.map
2017-09-18 19:54:27 -07:00
John Reiser
6d9f3adc86
Escape hatch for Thumb-mode shared library must reside at even address.
...
https://github.com/upx/upx/issues/122
modified: stub/src/arm.v4t-linux.shlib-init.S
modified: stub/arm.v5t-linux.shlib-init.h
modified: stub/tmp/arm.v5t-linux.shlib-init.bin.dump
2017-09-13 22:38:24 -07:00
John Reiser
96433b4e39
FILTER_ID was wrong for arm64-linux.shlib and arm64-darwin.macho.
...
https://github.com/upx/upx/issues/100 (partial)
modified: stub/src/arm64-darwin.macho-fold.S
modified: stub/src/arm64-linux.shlib-init.S
modified: p_mach.cpp
modified: stub/arm64-darwin.macho-fold.h
modified: stub/arm64-linux.shlib-init.h
2017-08-25 12:51:33 -07:00
John Reiser
f4947cc2ae
Work-around Ubuntu runtime bug loading shlib on ARM.
...
Use --android-shlib to activate the work-around.
https://bugs.launchpad.net/bugs/1712938
https://github.com/upx/upx/issues/116
modified: p_elf_enum.h
modified: p_lx_elf.cpp
2017-08-24 19:52:30 -07:00
John Reiser
7b554d4f72
ucl-1.03 needs help for recent gcc and for native on aarch64.
...
modified: README.SRC
2017-08-23 05:47:16 -07:00
John Reiser
5b54544438
Fix powerpc64 (BIG_ENDIAN and comments)
...
modified: stub/src/arch/powerpc/64/lzma_d.S
modified: stub/src/arch/powerpc/64le/lzma_d-common.S
modified: stub/src/powerpc64-linux.elf-main.c
modified: stub/src/powerpc64le-darwin.dylib-entry.S
modified: stub/src/powerpc64le-darwin.macho-entry.S
modified: stub/src/powerpc64le-linux.elf-entry.S
modified: stub/src/powerpc64le-linux.elf-fold.S
modified: stub/src/powerpc64le-linux.elf-main.c
modified: stub/src/powerpc64le-linux.kernel.vmlinux.S
plus stub/powerpc64*entry.h and .dump
2017-07-26 11:16:02 -07:00
Markus F.X.J. Oberhumer
ef78d23494
Update Travis and check_whitespace.sh.
2017-07-23 02:59:51 +02:00
Markus F.X.J. Oberhumer
ef8a7f330d
Silence some compiler warnings.
2017-07-23 02:59:51 +02:00
Markus F.X.J. Oberhumer
b72e0f3060
Disable debugging section.
2017-07-23 02:59:51 +02:00
Markus F.X.J. Oberhumer
2a0bab938b
Rebuild stubs.
2017-07-23 02:20:05 +02:00