Fix upxfd_create for stubs on PowerPC64
https://github.com/upx/upx/issues/925 modified: misc/testsuite/upx_testsuite_1-expected_sha256sums.sh modified: src/stub/src/powerpc64-linux.elf-fold.S plus generated .h
This commit is contained in:
parent
1188d2933b
commit
4530e5c264
@ -66,7 +66,7 @@ f60bab42fe3914109ab1b9f5d00a5be753cd0a2c1a79a3998d58800efedbfff7 *mipsel-linux.e
|
||||
b6d8cc9e2023a3fc415166afc378ccf2eb505487df84c8d959ec74b3fb4f8256 *mipsel-linux.elf/upx-3.95
|
||||
acd3dc5ed3e4c4eeaa42e7cca71a79d687dd844ce5f384666ed6e78327b5a8e3 *powerpc-linux.elf/upx-3.91
|
||||
03600584c97fa466ef58239452baf9ec6ff2f06b79d97d45c8490953080de6e3 *powerpc-linux.elf/upx-3.95
|
||||
e615fc0e61d2bdd09f34275ec6c3de46fe5ce54da61cf5f5c94c40c6072bc1d6 *powerpc64le-linux.elf/upx-3.95
|
||||
3f02885d1e94e59062eb78c4c910cde042475a6cadb77a85a603de747a50f45c *powerpc64le-linux.elf/upx-3.95
|
||||
"
|
||||
expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
|
||||
c5bafac11df5a38c1b72fd070373a0e1d5a066527129937c5bc9a280e21ad656 *amd64-linux.elf/upx-3.91
|
||||
@ -89,7 +89,7 @@ c3b3e5b0a379022b26bae96432c3f5f946990f45b0b26afe056afe1170bf33c7 *armeb-linux.el
|
||||
b78d8cd3a3402fed266c737cc34a32cc21b2b67b573e9e9071d4faf9fca89b89 *mipsel-linux.elf/upx-3.95
|
||||
ea9cae1d1701db3a0c53e9a651766db5bdc30032f48913a4a9e99f193a800acc *powerpc-linux.elf/upx-3.91
|
||||
aea86bf87870a1e48a454ac1ea9a80d90d8abe5113d418a71d8a9c4a74bb2d0a *powerpc-linux.elf/upx-3.95
|
||||
5fbc114a7fec5ed8e098d8e918cdf7b446a8c9dc5496336fe077fe084dbea8ce *powerpc64le-linux.elf/upx-3.95
|
||||
62038c87489dc5cd3772e8e4051cf1d416edecf267d37f390a649f4ae657e0f9 *powerpc64le-linux.elf/upx-3.95
|
||||
"
|
||||
expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
|
||||
509bc9676a0f5f5ce6df118da8e792151db816fcce5490eadc87fc525aad5a35 *amd64-linux.elf/upx-3.91
|
||||
@ -112,7 +112,7 @@ cd9b3d3780a79cb416b261d622e8e86f2369fa8bb9bc49b529c50cac2980d528 *mipsel-linux.e
|
||||
5baf7db9e4335c0227106262efc9d18ad23b88c6d6bb636656aea67bb063b6ec *mipsel-linux.elf/upx-3.95
|
||||
aba8bd826ee52d533f9e1c4270d4f4194fe8d8747ea10a1d3ce59b6443f1a9f2 *powerpc-linux.elf/upx-3.91
|
||||
6f737ccbf8c830476bed9c4dd33dd7757ea25bf2f8fb03b44d03e9b77ada0f1b *powerpc-linux.elf/upx-3.95
|
||||
62eeb7b59d1eafa59cbb5ffa6572fd47560a8a8bf85274e711f29d2fe390c773 *powerpc64le-linux.elf/upx-3.95
|
||||
d313dd128a54189b9551a529b1ed21b222aa0394a30f9ba552cde96edcd4011e *powerpc64le-linux.elf/upx-3.95
|
||||
"
|
||||
expected_sha256sums__t140_compress_lzma_2_no_filter="\
|
||||
ed2849169a873bb4070e9d878126f7bc19fb326d1dc6e169901ff3a3026661c3 *amd64-linux.elf/upx-3.91
|
||||
@ -135,7 +135,7 @@ e268c98fdacfd04268d76644f2bb4746ae04b57801407aaa1867798840eeeea0 *m68k-atari.tos
|
||||
339d38602413d97d9bba113f39884815af10ebcdccf37e3f5e8d0879f262a048 *mipsel-linux.elf/upx-3.95
|
||||
6d4f9d4383ebc9d8411d06a7c219dcf3e8513ea8c989f2d31ab382602f873ba5 *powerpc-linux.elf/upx-3.91
|
||||
5dd727d8d5a35cc0ab86d629285d8ff450f52b538118679edaa886ce9c1fed7d *powerpc-linux.elf/upx-3.95
|
||||
7b9aeffda399143db878f24a9faecdc21fb8ec906fed80bc6636d82771090f2f *powerpc64le-linux.elf/upx-3.95
|
||||
efec1e5bbb9bcf11dbc7081adfc2020de18fae326ad86194551c44fba0d2148d *powerpc64le-linux.elf/upx-3.95
|
||||
"
|
||||
expected_sha256sums__t150_compress_ucl_2_all_filters="\
|
||||
fc30606d37c697f5c79742bf6e7d2afa8503e69fc87e52274d00b5210d03157a *amd64-linux.elf/upx-3.91
|
||||
@ -158,7 +158,7 @@ c5107a84d32de820c81401259a7dd23435ea625588d56c6c75ad6fa14b0dbf8b *mips-linux.elf
|
||||
fd9ea397a29b41a2143f9e02217e181d0075d7ad7d87bdbadc7fc94bfb1b0d76 *mipsel-linux.elf/upx-3.95
|
||||
c47d1299f6ecf86e62528fc54979117b2b2ddbb6c80f553689402399fc7eab28 *powerpc-linux.elf/upx-3.91
|
||||
77c3b4ba6909a4e20180bc13775e280086d67240519c323c2005f3fcee6e0b78 *powerpc-linux.elf/upx-3.95
|
||||
030a1ac080381a5ec7ad1e167f8809709620e555db792f43146c8c34e2cb37ec *powerpc64le-linux.elf/upx-3.95
|
||||
e3ce51b863905a4831958c72541b04e9f893f0d9827f32e615822db7aebd56bc *powerpc64le-linux.elf/upx-3.95
|
||||
"
|
||||
expected_sha256sums__t160_compress_all_methods_1_no_filter="\
|
||||
115046275f6bccbaa34b7aefbedeba8741aba4e4876340a3d7363bae86ee4209 *amd64-linux.elf/upx-3.91
|
||||
@ -181,7 +181,7 @@ f3d33c5c9809943a902133490bcf0cfbe39a5ef1635a0c29b3bdc4f35dfffa50 *i386-win32.pe/
|
||||
68f674d081d87e86e54f0051eee9e2bc85b566051992774ab28ff3173cbcb75a *mipsel-linux.elf/upx-3.95
|
||||
f569d8f49d7110bb8b262a48055b39d889e9977c40c5f1b21e74f8cbf93b27ae *powerpc-linux.elf/upx-3.91
|
||||
d8227a8a88c083760889acaf259e7da59eab75a23e341289bc8e3c60563ae344 *powerpc-linux.elf/upx-3.95
|
||||
8260862f104a23c2a3fa574e10d882204ed40a17702040edbbbc8d25f961163f *powerpc64le-linux.elf/upx-3.95
|
||||
e4b58ed65025b765953af02e80be9a171c49b6c707c835949b1c888fdbe8bba0 *powerpc64le-linux.elf/upx-3.95
|
||||
"
|
||||
expected_sha256sums__t170_compress_all_methods_no_lzma_5_no_filter="\
|
||||
09cee61e2a4e94455d75a76711078719c3ca7fab77f047c4c85c9424e651956d *amd64-linux.elf/upx-3.91
|
||||
@ -204,6 +204,6 @@ ad47c7522167f6f7e47d495e1fa119431386ca5ea9bc16b6a4b9cb38cf9cd29f *i386-win32.pe/
|
||||
1dcd626fc4566c608e987fd6999b695793c5cae7f78872e3d1a9a23942fea188 *mipsel-linux.elf/upx-3.95
|
||||
2047a4a880322bf41e8afbb4787f6103364de4a299b543808251a4144c4d990b *powerpc-linux.elf/upx-3.91
|
||||
63679bd238f30bfb14853246eb257536471fea10f942b2adfdd43cbef21dea30 *powerpc-linux.elf/upx-3.95
|
||||
bee0b9b5fa783550d3e7e5ba6e48d92776578dd82d6ac644e14191e0879d185b *powerpc64le-linux.elf/upx-3.95
|
||||
c75d1548db879ed589b55bc1319869b49d37595f4560a64b34016951dc02f997 *powerpc64le-linux.elf/upx-3.95
|
||||
"
|
||||
########## end .sha256sums.recreate
|
||||
|
||||
2119
src/stub/powerpc64-linux.elf-fold.h
generated
2119
src/stub/powerpc64-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
2105
src/stub/powerpc64le-linux.elf-fold.h
generated
2105
src/stub/powerpc64le-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
@ -418,21 +418,30 @@ close: .globl close
|
||||
li r0,SYS_close; 5: b sysgo
|
||||
|
||||
upxfd_create: .globl upxfd_create // (char *tag, unsigned flags)
|
||||
stdu a0,-AL_STK(sp) // push tag onto aligned stack
|
||||
0: // try memfd_create
|
||||
ld a0,0(sp) // get tag
|
||||
li r0,SYS_memfd_create; sc; bns+ ok_memfd
|
||||
cmpwi a2,0; beq no_memfd // memfd_create failed twice
|
||||
li a2,0; b 0b // try again without MFD_EXEC
|
||||
// failed syscall returns errno in a0
|
||||
cmpwi a0,EINVAL; bne 8f // unexpected error number
|
||||
cmpwi a1,0; beq no_memfd // memfd_create failed twice
|
||||
li a1,0; b 0b // try again without MFD_EXEC
|
||||
no_memfd: // so try /dev/shm
|
||||
O_RDWR= 2
|
||||
O_DIRECTORY= 040000 // 0x4000
|
||||
O_TMPFILE= 020000000 // 0x400000
|
||||
mflr r6; bl 0f; .asciz "/dev/shm"; .balign 4;
|
||||
0: mflr a1; mtlr r6
|
||||
li a2,0700
|
||||
lis a3,O_TMPFILE>>16
|
||||
ori a3,a3,O_RDWR | O_DIRECTORY
|
||||
li r0,SYS_open; sc; bns+ ok_memfd; teq r0,r0
|
||||
mflr r6
|
||||
bl 0f; .asciz "/dev/shm"; .balign 4
|
||||
0: mflr a0
|
||||
mtlr r6
|
||||
li a2,0700 // mode
|
||||
lis a1,O_TMPFILE>>16
|
||||
ori a1,a1,O_RDWR | O_DIRECTORY
|
||||
li r0,SYS_open; sc; bns+ ok_memfd // name, flags, mode
|
||||
8:
|
||||
teq r0,r0 // unexpected errno
|
||||
ok_memfd:
|
||||
addi sp,sp,AL_STK // toss tag
|
||||
ret
|
||||
|
||||
__NR_memfd_create= 360
|
||||
|
||||
10
src/stub/tmp/powerpc64-linux.elf-fold.map
generated
vendored
10
src/stub/tmp/powerpc64-linux.elf-fold.map
generated
vendored
@ -27,8 +27,8 @@ OUTPUT(tmp/powerpc64-linux.elf-fold.bin elf64-powerpc)
|
||||
.bss 0x0000000000000000 0x0
|
||||
.bss 0x0000000000000000 0x0 tmp/powerpc64-linux.elf-fold.o
|
||||
|
||||
SYSCALLS 0x0000000000000000 0x148
|
||||
SYSCALLS 0x0000000000000000 0x148 tmp/powerpc64-linux.elf-fold.o
|
||||
SYSCALLS 0x0000000000000000 0x15c
|
||||
SYSCALLS 0x0000000000000000 0x15c tmp/powerpc64-linux.elf-fold.o
|
||||
0x0000000000000008 mmap
|
||||
0x0000000000000020 munmap
|
||||
0x0000000000000028 mprotect
|
||||
@ -44,9 +44,9 @@ SYSCALLS 0x0000000000000000 0x148
|
||||
0x0000000000000070 openat
|
||||
0x0000000000000078 close
|
||||
0x0000000000000080 upxfd_create
|
||||
0x00000000000000d8 memfd_create
|
||||
0x000000000000011c memcpy
|
||||
0x0000000000000140 my_bkpt
|
||||
0x00000000000000ec memfd_create
|
||||
0x0000000000000130 memcpy
|
||||
0x0000000000000154 my_bkpt
|
||||
|
||||
.comment 0x0000000000000000 0x33
|
||||
.comment 0x0000000000000000 0x33 tmp/powerpc64-linux.elf-fold.o
|
||||
|
||||
10
src/stub/tmp/powerpc64le-linux.elf-fold.map
generated
vendored
10
src/stub/tmp/powerpc64le-linux.elf-fold.map
generated
vendored
@ -27,8 +27,8 @@ OUTPUT(tmp/powerpc64le-linux.elf-fold.bin elf64-powerpcle)
|
||||
.bss 0x0000000000000000 0x0
|
||||
.bss 0x0000000000000000 0x0 tmp/powerpc64le-linux.elf-fold.o
|
||||
|
||||
SYSCALLS 0x0000000000000000 0x148
|
||||
SYSCALLS 0x0000000000000000 0x148 tmp/powerpc64le-linux.elf-fold.o
|
||||
SYSCALLS 0x0000000000000000 0x15c
|
||||
SYSCALLS 0x0000000000000000 0x15c tmp/powerpc64le-linux.elf-fold.o
|
||||
0x0000000000000008 mmap
|
||||
0x0000000000000020 munmap
|
||||
0x0000000000000028 mprotect
|
||||
@ -44,9 +44,9 @@ SYSCALLS 0x0000000000000000 0x148
|
||||
0x0000000000000070 openat
|
||||
0x0000000000000078 close
|
||||
0x0000000000000080 upxfd_create
|
||||
0x00000000000000d8 memfd_create
|
||||
0x000000000000011c memcpy
|
||||
0x0000000000000140 my_bkpt
|
||||
0x00000000000000ec memfd_create
|
||||
0x0000000000000130 memcpy
|
||||
0x0000000000000154 my_bkpt
|
||||
|
||||
.comment 0x0000000000000000 0x33
|
||||
.comment 0x0000000000000000 0x33 tmp/powerpc64le-linux.elf-fold.o
|
||||
|
||||
Loading…
Reference in New Issue
Block a user