32-bit ELF escape hatch when no fit on last executable page

... about 1/1000 (4/PAGE_SIZE) chance
	modified:   src/stub/src/i386-linux.elf-main.c
	modified:   misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
   plus all 32-bit elf-fold.h, elf-fold.map
This commit is contained in:
John Reiser
2024-05-06 09:42:13 -07:00
parent 6fc0a00ac8
commit e5546bc8b0
17 changed files with 1047 additions and 1053 deletions
+5 -5
View File
@@ -8,7 +8,7 @@ Linker script and memory map
0x0000000000008040 . = ((0x8000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000008040 0xafc
.text 0x0000000000008040 0xaec
*(.text)
.text 0x0000000000008040 0x348 tmp/arm.v4a-linux.elf-fold.o
0x0000000000008260 my_bkpt
@@ -30,12 +30,12 @@ Linker script and memory map
0x0000000000008314 mmap_privanon
0x000000000000832c __udivsi3
0x000000000000832c div10
.text 0x0000000000008388 0x7b4 tmp/arm.v4a-linux.elf-main.o
.text 0x0000000000008388 0x7a4 tmp/arm.v4a-linux.elf-main.o
0x0000000000008388 get_page_mask
0x0000000000008a08 upx_main
0x00000000000089f8 upx_main
*(.data)
.data 0x0000000000008b3c 0x0 tmp/arm.v4a-linux.elf-fold.o
.data 0x0000000000008b3c 0x0 tmp/arm.v4a-linux.elf-main.o
.data 0x0000000000008b2c 0x0 tmp/arm.v4a-linux.elf-fold.o
.data 0x0000000000008b2c 0x0 tmp/arm.v4a-linux.elf-main.o
.data
LOAD tmp/arm.v4a-linux.elf-fold.o
+8 -8
View File
@@ -9,7 +9,7 @@ Linker script and memory map
TARGET(elf32-littlearm)
0x0000000000008080 . = ((0x8000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000008080 0xba8
.text 0x0000000000008080 0xb98
*(.text)
.text 0x0000000000008080 0x3fc tmp/arm.v5a-linux.elf-fold.o
0x0000000000008358 munmap
@@ -31,18 +31,18 @@ TARGET(elf32-littlearm)
0x0000000000008420 div10
0x000000000000836c mprotect
0x00000000000082f4 close
.text 0x000000000000847c 0x7ac tmp/armel-linux.elf-main.o
.text 0x000000000000847c 0x79c tmp/armel-linux.elf-main.o
0x000000000000847c get_page_mask
0x0000000000008af4 upx_main
0x0000000000008ae4 upx_main
*(.data)
.data 0x0000000000008c28 0x0 tmp/arm.v5a-linux.elf-fold.o
.data 0x0000000000008c28 0x0 tmp/armel-linux.elf-main.o
.data 0x0000000000008c18 0x0 tmp/arm.v5a-linux.elf-fold.o
.data 0x0000000000008c18 0x0 tmp/armel-linux.elf-main.o
.data
.bss 0x0000000000008c28 0x0
.bss 0x0000000000008c28 0x0 tmp/arm.v5a-linux.elf-fold.o
.bss 0x0000000000008c28 0x0 tmp/armel-linux.elf-main.o
.bss 0x0000000000008c18 0x0
.bss 0x0000000000008c18 0x0 tmp/arm.v5a-linux.elf-fold.o
.bss 0x0000000000008c18 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)
+8 -8
View File
@@ -9,7 +9,7 @@ Linker script and memory map
TARGET(elf32-bigarm)
0x0000000000008080 . = ((0x8000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000008080 0xafc
.text 0x0000000000008080 0xaec
*(.text)
.text 0x0000000000008080 0x348 tmp/armeb.v4a-linux.elf-fold.o
0x00000000000082ec munmap
@@ -31,18 +31,18 @@ TARGET(elf32-bigarm)
0x000000000000836c div10
0x00000000000082f4 mprotect
0x00000000000082c4 close
.text 0x00000000000083c8 0x7b4 tmp/armeb.v4a-linux.elf-main.o
.text 0x00000000000083c8 0x7a4 tmp/armeb.v4a-linux.elf-main.o
0x00000000000083c8 get_page_mask
0x0000000000008a48 upx_main
0x0000000000008a38 upx_main
*(.data)
.data 0x0000000000008b7c 0x0 tmp/armeb.v4a-linux.elf-fold.o
.data 0x0000000000008b7c 0x0 tmp/armeb.v4a-linux.elf-main.o
.data 0x0000000000008b6c 0x0 tmp/armeb.v4a-linux.elf-fold.o
.data 0x0000000000008b6c 0x0 tmp/armeb.v4a-linux.elf-main.o
.data
.bss 0x0000000000008b7c 0x0
.bss 0x0000000000008b7c 0x0 tmp/armeb.v4a-linux.elf-fold.o
.bss 0x0000000000008b7c 0x0 tmp/armeb.v4a-linux.elf-main.o
.bss 0x0000000000008b6c 0x0
.bss 0x0000000000008b6c 0x0 tmp/armeb.v4a-linux.elf-fold.o
.bss 0x0000000000008b6c 0x0 tmp/armeb.v4a-linux.elf-main.o
LOAD tmp/armeb.v4a-linux.elf-fold.o
LOAD tmp/armeb.v4a-linux.elf-main.o
OUTPUT(tmp/armeb.v4a-linux.elf-fold.bin elf32-bigarm)
+10 -9
View File
@@ -9,25 +9,26 @@ Linker script and memory map
TARGET(elf32-i386)
0x0000000000c01080 . = ((0xc01000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000c01080 0x798
.text 0x0000000000c01080 0x790
*(.text)
.text 0x0000000000c01080 0x194 tmp/i386-linux.elf-fold.o
0x0000000000c011e8 mmap
0x0000000000c011c0 Pprotect
.text 0x0000000000c01214 0x604 tmp/i386-linux.elf-main.o
.text 0x0000000000c01214 0x5fa tmp/i386-linux.elf-main.o
0x0000000000c0136f get_page_mask
0x0000000000c0170e upx_main
0x0000000000c01704 upx_main
*(.data)
.data 0x0000000000c01818 0x0 tmp/i386-linux.elf-fold.o
.data 0x0000000000c01818 0x0 tmp/i386-linux.elf-main.o
*fill* 0x0000000000c0180e 0x2 00
.data 0x0000000000c01810 0x0 tmp/i386-linux.elf-fold.o
.data 0x0000000000c01810 0x0 tmp/i386-linux.elf-main.o
.data
.bss 0x0000000000c01818 0x0
.bss 0x0000000000c01818 0x0 tmp/i386-linux.elf-fold.o
.bss 0x0000000000c01818 0x0 tmp/i386-linux.elf-main.o
.bss 0x0000000000c01810 0x0
.bss 0x0000000000c01810 0x0 tmp/i386-linux.elf-fold.o
.bss 0x0000000000c01810 0x0 tmp/i386-linux.elf-main.o
.rel.dyn 0x0000000000c01818 0x0
.rel.dyn 0x0000000000c01810 0x0
.rel.text 0x0000000000000000 0x0 tmp/i386-linux.elf-fold.o
LOAD tmp/i386-linux.elf-fold.o
LOAD tmp/i386-linux.elf-main.o
+8 -8
View File
@@ -9,21 +9,21 @@ Linker script and memory map
TARGET(elf32-bigmips)
0x0000000000100080 . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000100080 0xb40
.text 0x0000000000100080 0xb30
*(.text)
.text 0x0000000000100080 0x1c0 tmp/mips.r3000-linux.elf-fold.o
0x000000000010021c Pprotect
.text 0x0000000000100240 0x980 tmp/mips.r3000-linux.elf-main.o
0x0000000000100a28 upx_main
.text 0x0000000000100240 0x970 tmp/mips.r3000-linux.elf-main.o
0x0000000000100a0c upx_main
*(.data)
.data 0x0000000000100bc0 0x0 tmp/mips.r3000-linux.elf-fold.o
.data 0x0000000000100bc0 0x0 tmp/mips.r3000-linux.elf-main.o
.data 0x0000000000100bb0 0x0 tmp/mips.r3000-linux.elf-fold.o
.data 0x0000000000100bb0 0x0 tmp/mips.r3000-linux.elf-main.o
.data
.bss 0x0000000000100bc0 0x0
.bss 0x0000000000100bc0 0x0 tmp/mips.r3000-linux.elf-fold.o
.bss 0x0000000000100bc0 0x0 tmp/mips.r3000-linux.elf-main.o
.bss 0x0000000000100bb0 0x0
.bss 0x0000000000100bb0 0x0 tmp/mips.r3000-linux.elf-fold.o
.bss 0x0000000000100bb0 0x0 tmp/mips.r3000-linux.elf-main.o
LOAD tmp/mips.r3000-linux.elf-fold.o
LOAD tmp/mips.r3000-linux.elf-main.o
OUTPUT(tmp/mips.r3000-linux.elf-fold.bin elf32-bigmips)
+8 -8
View File
@@ -9,21 +9,21 @@ Linker script and memory map
TARGET(elf32-littlemips)
0x0000000000100080 . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000100080 0xb40
.text 0x0000000000100080 0xb30
*(.text)
.text 0x0000000000100080 0x1c0 tmp/mipsel.r3000-linux.elf-fold.o
0x000000000010021c Pprotect
.text 0x0000000000100240 0x980 tmp/mipsel.r3000-linux.elf-main.o
0x0000000000100a28 upx_main
.text 0x0000000000100240 0x970 tmp/mipsel.r3000-linux.elf-main.o
0x0000000000100a0c upx_main
*(.data)
.data 0x0000000000100bc0 0x0 tmp/mipsel.r3000-linux.elf-fold.o
.data 0x0000000000100bc0 0x0 tmp/mipsel.r3000-linux.elf-main.o
.data 0x0000000000100bb0 0x0 tmp/mipsel.r3000-linux.elf-fold.o
.data 0x0000000000100bb0 0x0 tmp/mipsel.r3000-linux.elf-main.o
.data
.bss 0x0000000000100bc0 0x0
.bss 0x0000000000100bc0 0x0 tmp/mipsel.r3000-linux.elf-fold.o
.bss 0x0000000000100bc0 0x0 tmp/mipsel.r3000-linux.elf-main.o
.bss 0x0000000000100bb0 0x0
.bss 0x0000000000100bb0 0x0 tmp/mipsel.r3000-linux.elf-fold.o
.bss 0x0000000000100bb0 0x0 tmp/mipsel.r3000-linux.elf-main.o
LOAD tmp/mipsel.r3000-linux.elf-fold.o
LOAD tmp/mipsel.r3000-linux.elf-main.o
OUTPUT(tmp/mipsel.r3000-linux.elf-fold.bin elf32-littlemips)
+9 -9
View File
@@ -9,7 +9,7 @@ Linker script and memory map
TARGET(elf32-powerpc)
0x0000000000100080 . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000100080 0x1100
.text 0x0000000000100080 0x10f0
*(.text)
.text 0x0000000000100080 0x2a4 tmp/powerpc-linux.elf-fold.o
0x0000000000100084 get_page_mask
@@ -25,19 +25,19 @@ TARGET(elf32-powerpc)
0x00000000001002fc open
0x000000000010030c mprotect
0x0000000000100304 close
.text 0x0000000000100324 0xe5c tmp/powerpc-linux.elf-main.o
0x0000000000100f80 upx_main
.text 0x0000000000100324 0xe4c tmp/powerpc-linux.elf-main.o
0x0000000000100f70 upx_main
*(.data)
.data 0x0000000000101180 0x0 tmp/powerpc-linux.elf-fold.o
.data 0x0000000000101180 0x0 tmp/powerpc-linux.elf-main.o
.data 0x0000000000101170 0x0 tmp/powerpc-linux.elf-fold.o
.data 0x0000000000101170 0x0 tmp/powerpc-linux.elf-main.o
.data
.bss 0x0000000000101180 0x0
.bss 0x0000000000101180 0x0 tmp/powerpc-linux.elf-fold.o
.bss 0x0000000000101180 0x0 tmp/powerpc-linux.elf-main.o
.bss 0x0000000000101170 0x0
.bss 0x0000000000101170 0x0 tmp/powerpc-linux.elf-fold.o
.bss 0x0000000000101170 0x0 tmp/powerpc-linux.elf-main.o
.rela.dyn 0x0000000000101180 0x0
.rela.dyn 0x0000000000101170 0x0
.rela.text 0x0000000000000000 0x0 tmp/powerpc-linux.elf-fold.o
LOAD tmp/powerpc-linux.elf-fold.o
LOAD tmp/powerpc-linux.elf-main.o