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
This commit is contained in:
@@ -9,7 +9,7 @@ Linker script and memory map
|
||||
TARGET(elf32-littlearm)
|
||||
0x0000000000008080 . = ((0x8000 + SIZEOF_HEADERS) + 0xc)
|
||||
|
||||
.text 0x0000000000008080 0xa94
|
||||
.text 0x0000000000008080 0xa78
|
||||
*(.text)
|
||||
.text 0x0000000000008080 0x3a8 tmp/arm.v5a-linux.elf-fold.o
|
||||
0x0000000000008348 munmap
|
||||
@@ -29,18 +29,18 @@ TARGET(elf32-littlearm)
|
||||
0x00000000000083cc div10
|
||||
0x000000000000835c mprotect
|
||||
0x00000000000082e4 close
|
||||
.text 0x0000000000008428 0x6ec tmp/armel-linux.elf-main.o
|
||||
.text 0x0000000000008428 0x6d0 tmp/armel-linux.elf-main.o
|
||||
0x0000000000008448 get_page_mask
|
||||
0x00000000000089e0 upx_main
|
||||
0x00000000000089b8 upx_main
|
||||
*(.data)
|
||||
.data 0x0000000000008b14 0x0 tmp/arm.v5a-linux.elf-fold.o
|
||||
.data 0x0000000000008b14 0x0 tmp/armel-linux.elf-main.o
|
||||
.data 0x0000000000008af8 0x0 tmp/arm.v5a-linux.elf-fold.o
|
||||
.data 0x0000000000008af8 0x0 tmp/armel-linux.elf-main.o
|
||||
|
||||
.data
|
||||
|
||||
.bss 0x0000000000008b14 0x0
|
||||
.bss 0x0000000000008b14 0x0 tmp/arm.v5a-linux.elf-fold.o
|
||||
.bss 0x0000000000008b14 0x0 tmp/armel-linux.elf-main.o
|
||||
.bss 0x0000000000008af8 0x0
|
||||
.bss 0x0000000000008af8 0x0 tmp/arm.v5a-linux.elf-fold.o
|
||||
.bss 0x0000000000008af8 0x0 tmp/armel-linux.elf-main.o
|
||||
LOAD tmp/arm.v5a-linux.elf-fold.o
|
||||
LOAD tmp/armel-linux.elf-main.o
|
||||
OUTPUT(tmp/arm.v5a-linux.elf-fold.bin elf32-littlearm)
|
||||
|
||||
Reference in New Issue
Block a user