Compare commits
46 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fdec47a83d | |||
| 7ff913bbd2 | |||
| 94775bef9f | |||
| 3cf102334f | |||
| 627e733a30 | |||
| d31b80da5b | |||
| eb231b65f3 | |||
| 59e3b1f98d | |||
| 8b174bb272 | |||
| 4199a44bef | |||
| 777392c0fe | |||
| ede1fec5e7 | |||
| 16de3e78a5 | |||
| d7508d8c09 | |||
| 2a136c1c1d | |||
| 2578102be9 | |||
| dadee7acfb | |||
| 28f0bb4e11 | |||
| 824c8a8efb | |||
| 37f27a1262 | |||
| 2b8a7a492a | |||
| db56bbb11b | |||
| 82d26f04a4 | |||
| 5045f7eb42 | |||
| 82a6ccac4d | |||
| 2d74298001 | |||
| ce21254ed2 | |||
| 874250fe49 | |||
| c8a3acbba8 | |||
| 81e11987a2 | |||
| 668cefec2f | |||
| 212bc04257 | |||
| db401fd05e | |||
| bebe72481c | |||
| 2b9e83256d | |||
| 5763518cce | |||
| 3e4c5bab72 | |||
| bce109ab54 | |||
| 69ca635c4c | |||
| e0bf460993 | |||
| 29762a8a96 | |||
| c7ef08dc2d | |||
| 50a6698715 | |||
| 7dd2cdea1e | |||
| af87f7f2bf | |||
| 295889023f |
@@ -16,6 +16,7 @@ StatementMacros: [
|
|||||||
ACCCHK_ASSERT_IS_SIGNED_T,
|
ACCCHK_ASSERT_IS_SIGNED_T,
|
||||||
ACCCHK_ASSERT_IS_UNSIGNED_T,
|
ACCCHK_ASSERT_IS_UNSIGNED_T,
|
||||||
ACCCHK_ASSERT_SIGN_T,
|
ACCCHK_ASSERT_SIGN_T,
|
||||||
|
ACC_BLOCK_BEGIN,
|
||||||
ACC_COMPILE_TIME_ASSERT,
|
ACC_COMPILE_TIME_ASSERT,
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER,
|
ACC_COMPILE_TIME_ASSERT_HEADER,
|
||||||
ACC_CXX_DISABLE_NEW_DELETE,
|
ACC_CXX_DISABLE_NEW_DELETE,
|
||||||
|
|||||||
@@ -241,7 +241,7 @@ make_absolute lcov_OUTPUTDIR
|
|||||||
unset var_prefix var_suffix
|
unset var_prefix var_suffix
|
||||||
|
|
||||||
print_header() {
|
print_header() {
|
||||||
local x="==========="; x="$x$x$x$x$x$x$x"
|
local x='==========='; x="$x$x$x$x$x$x$x"
|
||||||
echo -e "\n${x}\n${1}\n${x}\n"
|
echo -e "\n${x}\n${1}\n${x}\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,164 +46,164 @@ b8c35fa2956da17ca505956e9f5017bb5f3a746322647e24ccb8ff28059cafa4 *powerpc-linux.
|
|||||||
a0950546dc17fca9437219431d8ddb0249ce5b08e899e0c799a87ac982adee70 *powerpc64le-linux.elf/upx-3.95
|
a0950546dc17fca9437219431d8ddb0249ce5b08e899e0c799a87ac982adee70 *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t110_compress_ucl_nrv2b_3_no_filter="\
|
expected_sha256sums__t110_compress_ucl_nrv2b_3_no_filter="\
|
||||||
d8e9cb72d6d63b64b68c44a380b0f700a2c2a127bb128cf16bf003e5fe7b112f *amd64-linux.elf/upx-3.91
|
60cf1528ad264c8f4d766443fae02fd0a7bf46247c896c53a19bbd90b800e918 *amd64-linux.elf/upx-3.91
|
||||||
71c2a5e4b1fd131c7d94c646394228e577e33a90620e6f04ed8ce71bf9419dd6 *amd64-linux.elf/upx-3.95
|
a4aa078f2dbb381a6132b85ba53df5ac9ede069a43adc542aec25263ffb21ce0 *amd64-linux.elf/upx-3.95
|
||||||
7ef188bb0071bf5ad92edc0ff2cca7798ab2f084bad5d244162bafdd4dd99a03 *amd64-win64.pe/upx-3.95.exe
|
4af65a302afd863073401a11c37246965d7b4ba101edb57d6e3547216ac3c8f7 *amd64-win64.pe/upx-3.95.exe
|
||||||
cb458bf41edcac0b50648c15ac538048fd9e57da03c3588f0fa3e524d7e9b856 *arm-linux.elf/upx-3.95
|
fef37f59ada02f3d3555c2393fcd0fa12f644c4a57e98d0859fa4f919c243ce3 *arm-linux.elf/upx-3.95
|
||||||
5d86c92a039dbe374ff69d1ee160eee849ed7a43aabe21a427482d4f050b98be *arm-wince.pe/upx-3.91.exe
|
ee4878808c92fc90867775ed1fccb4da94097d8e493c771ed75dffab6da6b167 *arm-wince.pe/upx-3.91.exe
|
||||||
9436568081d9bb519cf0c7ad1f9497026e2e74fd29009d4829a05a742c649142 *arm64-linux.elf/upx-3.95
|
911f5f56fa4f208d047eb00f9b5686993e7011d5bc17c90fab06b42b470583b0 *arm64-linux.elf/upx-3.95
|
||||||
e68f0929566ff9a8c978c9203c07bde9bc9ecc57fb3b3664f7ce4cd84ca82d26 *armeb-linux.elf/upx-3.91
|
c0a2eb27fbd6507a047d2f08f668c07d54a277d16394e437105f2b27dde434c1 *armeb-linux.elf/upx-3.91
|
||||||
8fe7b9bcf5db78b3f5585555526ee9aa640e40e97052226431c2f4e2dcd8d26a *armeb-linux.elf/upx-3.95
|
e149178f6ce710ee151c2b11b8d2d6d8e99d65c1c640147f3e7aa1df60f0b438 *armeb-linux.elf/upx-3.95
|
||||||
899a2af496235848b333d49645c9b08638170fc05899b55673900e5962d70a2a *i386-dos32.djgpp2.coff/upx-3.91.exe
|
badd40b58323cf5825fbd6627fe27a1ee2f1e787ea59b28e7795aa3b2799b887 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
41048de2b63e0703a78c222efeca6b99225fad8e0c8758775f5fb6e63edde3e9 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
52b2d1bd52747bc14784dea187159c424ee58a02758fa4f7548cfb6dff80d699 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
4e7bb9e52a5f8085e9882eff1007b7f401a7fbdfc82e5342ef604e4feb4ccf15 *i386-linux.elf/upx-3.91
|
b4bbba7e71afc2986b6cb9f17a0e14929b68f83345045bf30dc2c5761b91bda8 *i386-linux.elf/upx-3.91
|
||||||
72fba7c493de49b2ee152629e9083b83d6e732c99eefc7d59641d091c64f171e *i386-linux.elf/upx-3.95
|
faa00110c0a70a7fe455e61cdb97a9483cf6e578cb13033e8995d887543db69b *i386-linux.elf/upx-3.95
|
||||||
38fbad083a8eaa4ed7cb379f21a5277a703baaa77d4e6d9e145d2bb4838513b5 *i386-win32.pe/upx-3.91.exe
|
055135feb800114b4c2bdd9de28e845611f1390a1668ef3e20897d23d1fa8614 *i386-win32.pe/upx-3.91.exe
|
||||||
a27abdb7d9888b7d1e79aa90cdb6a1500e0a3abdc64ee9fbe7db7ce4423ffc79 *i386-win32.pe/upx-3.95.exe
|
59748c9f0eb3eef2b54a54dbf274459cb28b5e9b12ba69993a6250c869f5ea89 *i386-win32.pe/upx-3.95.exe
|
||||||
a8e11176946ec68f4c2e40e0a585eb70f589560117bef2a98315c454b2fe1f13 *m68k-atari.tos/upx-3.91.ttp
|
84158c951fa65d6c53c9dcced158f8cd1b566e83f2109aeac7d6247338c48098 *m68k-atari.tos/upx-3.91.ttp
|
||||||
a80d40f6ae66effe0ce9dfcbcc306e59c61118a3653eba304b6120c3cb4bd951 *mips-linux.elf/upx-3.95
|
7522c07537da37c370c0dd925fc1b93eb53e329219dd6e21259281a871767779 *mips-linux.elf/upx-3.95
|
||||||
8aab2896c689c9b9eae5d205e8dbf3e9896989f212181f666dece91e893314e9 *mipsel-linux.elf/upx-3.91
|
7b9258b0c97f733ca602d8f4ea08619ee430fd8802d046051f10ae68576c7756 *mipsel-linux.elf/upx-3.91
|
||||||
00dbb8a83349fff83374b5a716ae953943b003991e1808e5d773f3e2aa3176bb *mipsel-linux.elf/upx-3.95
|
75c1c61ce3c53888525a9bf5b3e51b86f1fcbdc91151e6b4b19041b15dc1e5c8 *mipsel-linux.elf/upx-3.95
|
||||||
174a1e090a254cefff98bc23235a3feea9e23c3be0a4c007c44c89a999e62567 *powerpc-linux.elf/upx-3.91
|
782df126832daeba48f8c86f0ca12626e4257a57b0bdfaa7439f3607f3954b33 *powerpc-linux.elf/upx-3.91
|
||||||
f133e103c0d02927311593f6f25ea0c4803fe648919e154a5b2a527964b6a9fb *powerpc-linux.elf/upx-3.95
|
743a676ec7aac4d51e0473911a67b711987d0ec0fda8668a6f0808edcb906343 *powerpc-linux.elf/upx-3.95
|
||||||
996c63e6717ced59c7dfd4573482ef54d2715dc04bc106e6a86e0317443cb960 *powerpc64le-linux.elf/upx-3.95
|
b5dd587c58d013dcdf7551f8a2b8427cbd37f6e76c54e735baf68ee2a49fba9a *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
|
expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
|
||||||
e5fce664c1ed5e4d5ced5186c5b88be8ef14b378b911e2e70bc8e7a331f8e3ff *amd64-linux.elf/upx-3.91
|
b8185a6b0ec81e5e0a3f741fe49c5635934f45a84e2154147100410496c9a880 *amd64-linux.elf/upx-3.91
|
||||||
86437aa77c0c1c5f55ef8d15ae2ba69d9d48034330faccc025f03a2a7d54ef12 *amd64-linux.elf/upx-3.95
|
8977f05b4b52c5ce1bdf32dee5c5d790640d79ea42ad83401826c261d9249866 *amd64-linux.elf/upx-3.95
|
||||||
761629a404ac155b3f856ff6bedf66266e1c75dcf389b56aee7692f420872653 *amd64-win64.pe/upx-3.95.exe
|
bcd8749ba0c502fa7b21bcec9e531f3b7a178cb8757407d6b682d4ff1952d2a0 *amd64-win64.pe/upx-3.95.exe
|
||||||
7dc22a271fd568f2ec7db5360ae08d2ed0dc6ceb14901bf8d3a49f6a239506be *arm-linux.elf/upx-3.95
|
f32239666d98211182580a9badf1cab01197b51d8a3a358c26e3fa248a0ef776 *arm-linux.elf/upx-3.95
|
||||||
58259c38274532baf60932569a4006ceb762a381ac3b257e9af648af24422660 *arm-wince.pe/upx-3.91.exe
|
8261c22417294e3f0506d8f41154945e3f0b7d2a67e532af318d5795cd8f9c22 *arm-wince.pe/upx-3.91.exe
|
||||||
f626c4131c1b70a880e6431c41842093dad4a2fff921304727306e699c6e6ceb *arm64-linux.elf/upx-3.95
|
6e60054ace6510309426893dcf683b4c6da88f3fbd97e7149e23bc4bf8c88003 *arm64-linux.elf/upx-3.95
|
||||||
6f870fe4f7a92cd244bc0b209082264ffdf68d023dc1d697f5111ce5f4a168ca *armeb-linux.elf/upx-3.91
|
52496fee0654d4a46e778a01c3bc17f4f25f885291241f5237f0824f5b9a0cb3 *armeb-linux.elf/upx-3.91
|
||||||
ed554bbf0d531740a2cb408a5408b7fb67fef32173531bae21b15829e4465b92 *armeb-linux.elf/upx-3.95
|
48434abf0b96e57f421db5a9c45b04eebf105420a500656859d6fdbd3c5d99bf *armeb-linux.elf/upx-3.95
|
||||||
6e5b040dd59e0bf3491da6947fd3c576fd1b090b1fa7f278b147dd33b0a561a4 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
0d7c87e490dff9a41a9c3b317e2529f2d1b1926844a47c48b42ef8bd7d212a4d *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
f27ef0ce4ca0c7557dfd4c0c3a7e5443523f82dd9f4d354fb80ad0e001ede485 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
75f42a83bddfc1923e32a6725a153219b1a37ecf4fd30876599341fd77de321d *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
8e6d5979658e8a00b567ddd214abd5565fc4c356b3e84941038c16aff9b3fb23 *i386-linux.elf/upx-3.91
|
2c50b4a2649ea7d4c1ca7d5c541107b878942ab61ef850ce5bdbb7bc6da8d777 *i386-linux.elf/upx-3.91
|
||||||
7d7cc62ec7f8e71e526687cde53d5b49e5f688787c3aef533a8aa9f302e51bea *i386-linux.elf/upx-3.95
|
134dfa566532c1432be87a45d7d28333e79e7fbbe12b5c27fb02e24a550eb9c5 *i386-linux.elf/upx-3.95
|
||||||
f81ed2a88589df18a735bebc1b42d638d3eb0bebbaea70758c762348103adde1 *i386-win32.pe/upx-3.91.exe
|
3d04162e902e0f311493955df2dd60fa018b60003d4394d638abda22fa88a7fb *i386-win32.pe/upx-3.91.exe
|
||||||
d5533151370ea42679c94036b8d61239f90fd930fca5d3cedbbca9c959756294 *i386-win32.pe/upx-3.95.exe
|
1972dca6a741124271a291565d001af92cfb379d11a7efa54680a3f96d5f02b4 *i386-win32.pe/upx-3.95.exe
|
||||||
5361b1f369a4b42f9063f448bdcda31f97bd610c659d2fe3c89d3e479a84cbc9 *m68k-atari.tos/upx-3.91.ttp
|
9751dfa351aa5076523c6bac013cf48b34267947fd1f057109fe141ead815d52 *m68k-atari.tos/upx-3.91.ttp
|
||||||
ac4233c2d342375bd2fb5cf871cfd47b58863fbcac7693937e1d15d23f09f96e *mips-linux.elf/upx-3.95
|
b80bc9585ccb586c3adc6c712110838366e61cefaf41a36a54e4eef8351d43c4 *mips-linux.elf/upx-3.95
|
||||||
9bcae27b631736ff226d45fc143c61c55b1bbb127b77b9612ad2d123dc96d45d *mipsel-linux.elf/upx-3.91
|
4b87450050446b03f2d88c79efe2cf87e403f82e9f1f47cb3e99a82b1678f91a *mipsel-linux.elf/upx-3.91
|
||||||
bf735a042c3406897f1cba6a62f8f7ea631bd15f15f21a56165decfe39323c52 *mipsel-linux.elf/upx-3.95
|
0fcf1b3c72d4af95562dec2e2588816199b2a5086d848548bd9648456c64200d *mipsel-linux.elf/upx-3.95
|
||||||
215c0694962ab6f4ead91448722a6ddce8471abce0742e148a6626cdbdf904fa *powerpc-linux.elf/upx-3.91
|
7fc8fa7a67899917fbeffade2e7bfb32c6a395e781274901230cfca51ce33516 *powerpc-linux.elf/upx-3.91
|
||||||
82857404a03d2a21c4bff152c8da78ae3cdcdb71ad0c847256c370ce510a4f1b *powerpc-linux.elf/upx-3.95
|
ce6d87922a0d203fba0ff90e263e80237379dbf8daf3ae83d7d0cd9eb19c3360 *powerpc-linux.elf/upx-3.95
|
||||||
ee860ecf8fafb5ca6a7f9c6baf316dba1c3b55553aa02f4dc254d54b32e0a61a *powerpc64le-linux.elf/upx-3.95
|
204cf8575465fb406dfd0520cc6bc103988074676123c2255e36952ab8d5c82f *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
|
expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
|
||||||
d43e28f8724cdb76deaca6581b698bd77c06a94ea37c8cf730eb38f82ce62cce *amd64-linux.elf/upx-3.91
|
8a7ec7f638e95156177a29a32c5a6a3cad2e3e970ca031bc28a55991428bab46 *amd64-linux.elf/upx-3.91
|
||||||
05c7ced28df8fa967385aa85adb479a9d9928112cb28884e8382421ee7aed062 *amd64-linux.elf/upx-3.95
|
a1e9f15306809e6a65952d49163d50e11fc8dbe1094847e487c1509c5d642883 *amd64-linux.elf/upx-3.95
|
||||||
405399cb91cde3dfeed89bfe14ff65301fcb9a6925ffb55bdac8c60e164fec9f *amd64-win64.pe/upx-3.95.exe
|
6a557025f93fbf869be7cae692959f96f250a5675195c53f26c17ef0d95246e7 *amd64-win64.pe/upx-3.95.exe
|
||||||
48a0983b24a0dc0e29df24ee30470ce228f4c978a3e965e27a6b12d8977807bd *arm-linux.elf/upx-3.95
|
b2a5d5cd936205a1d2c87019cfd1ead7d22268acc8be08963b358c807f7b0b2d *arm-linux.elf/upx-3.95
|
||||||
9b460ce1edeb2557661526bdd0d195f5d4c7c5f261c2886fe47691ce5b2d20c5 *arm-wince.pe/upx-3.91.exe
|
3be544b1ae2bdd70c764eb6f3424e83e49dc70991f21cd1bbb4aa892a706dfcd *arm-wince.pe/upx-3.91.exe
|
||||||
391afe58edcbbedadde8c9ec4cd693c4c169bd6f6fefa9f63c41f4d7529246c9 *arm64-linux.elf/upx-3.95
|
046e3639cff25a8d5d9c817aa314f0885667ccd71eaf17ebc87574dfdd1e0020 *arm64-linux.elf/upx-3.95
|
||||||
05943cb6189f8230a6a6cc8ffb9ae9b6f3ecb1ef222181522833dc8373c77211 *armeb-linux.elf/upx-3.91
|
cc38f1ee23b97e107a2da9ec87358345b35e9bdb222791929b24f21838bffd03 *armeb-linux.elf/upx-3.91
|
||||||
0f1cdc18d24c03d3e56256721ba9fdddf7809eeaeefacf4f677120903c9544e4 *armeb-linux.elf/upx-3.95
|
1fa4a8c3eca8dfdc5464d1f020ea3eec75fedb037a3dd73a343655479464717b *armeb-linux.elf/upx-3.95
|
||||||
ee2918a9bf26aebcb5547684f2d4f9c24ac516597c208a478e5bc3f36b59291e *i386-dos32.djgpp2.coff/upx-3.91.exe
|
1c777079d1b35fa3ee68cb4e36822091fdbf4ea4c7ed149da1c34424b082b39d *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
f24770536216fa29a7d3624f6e676a54244be0a7ab1213d29d21a146639a1b83 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
d65c3d9c8850802bb66d51b26fdd905beaf1b72b7ba8550ec11788b7136b0204 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
2ea7702d4398d03ea46502f5179b2eaa209926ad0d105e81663b3c87c2e7acb7 *i386-linux.elf/upx-3.91
|
f2511747fac635a1d70b2364dfcdc91da517aec2c87d8d017557738e87d84061 *i386-linux.elf/upx-3.91
|
||||||
74df9d74515b51839272c5c84572880d58ea85a16cbed5549b2af182149dad24 *i386-linux.elf/upx-3.95
|
e74cdd10bf5f37249278634bf1055adaa0527bbe4735c4cdf7a54663b67db985 *i386-linux.elf/upx-3.95
|
||||||
11401986fe43ee57cb0170099d3a6228238e2eff8244ad81cc647420314c98ee *i386-win32.pe/upx-3.91.exe
|
4d21e45a321a78de433d96170a3e39daeee2ab18c646f2fca0ae1367b356ea63 *i386-win32.pe/upx-3.91.exe
|
||||||
3ee3b313f0cf6c891c5895343ff304aa34e3017aac45022f7bbd0cfd7d80dc25 *i386-win32.pe/upx-3.95.exe
|
3e1a705b3c6859d7812e4d8b42fd6201563356614b7f0ec16718cddb8bec1e82 *i386-win32.pe/upx-3.95.exe
|
||||||
e9659acb2dc14f60e8f3d71b6024ec9c768ee11233ec9dad5e1bd252cd259381 *m68k-atari.tos/upx-3.91.ttp
|
9a812916dfa09e821f9b3233b98b6740d39751ed0dc63e8edfd8b59f262b4218 *m68k-atari.tos/upx-3.91.ttp
|
||||||
0796aa39c6a069f5c940ee07442c22d864fdca7f6fe083d51debabab077c413f *mips-linux.elf/upx-3.95
|
eea25f8bec855536168c1e9f1b960c807ce46f9758878fdff2d23065d8007d14 *mips-linux.elf/upx-3.95
|
||||||
98d370c61692de7249aa51f3befc3ebefa705f172a1ebf0dd092ea07b9776158 *mipsel-linux.elf/upx-3.91
|
e37c0ce8513131e4e1ebeaaa999d258be95bde655b60fc9c575b3648a0b07c14 *mipsel-linux.elf/upx-3.91
|
||||||
7bb3afac05c13ef34721facf4c81621791a45a40cceab2cc1bb7306a747c5df5 *mipsel-linux.elf/upx-3.95
|
c46b272e068276601d8ebc3a7765f2e3cafd279b3f5aff6fb4af4d4869afd387 *mipsel-linux.elf/upx-3.95
|
||||||
eb292cd7c95fcd597431a8e6c9f13f0b64bbda3423611a43ceeca418a3979554 *powerpc-linux.elf/upx-3.91
|
390eba4b44e6e3e3e5b726ca7d087eee4a90af0c194d6cb7633da5e0e5d8dec5 *powerpc-linux.elf/upx-3.91
|
||||||
6a45c2734fc2aa82a0e2b9331c545e1bb04d02797c59ab00a8250d052603b8a2 *powerpc-linux.elf/upx-3.95
|
b21ed94586b7254c96fcd64034e73ce8cb8851c92bb27d4d5eb377cf16c56aa2 *powerpc-linux.elf/upx-3.95
|
||||||
9c6dc09daf5901983625e8f9f2f45f66a10fcf9841ae3e9788bb3ae075db5307 *powerpc64le-linux.elf/upx-3.95
|
52f53a9d7fa0b38ce1276101bb8be59d31f54a959ca0ae0a2708dd3083d0483c *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t140_compress_lzma_2_no_filter="\
|
expected_sha256sums__t140_compress_lzma_2_no_filter="\
|
||||||
8f08ea0a86c3f49c7b2a90aca17b5739a91e39ef6542365e7395d1325fdcfc2b *amd64-linux.elf/upx-3.91
|
804324e788c9cafe63899ec5a63d77e3a51cce3b0750b1c8b34998b67a748fe4 *amd64-linux.elf/upx-3.91
|
||||||
9f7c9d0432baaf21977ca4bd827f7cdf7c39296f77e122689cc57945856e7b39 *amd64-linux.elf/upx-3.95
|
289966c134b6a8205ab24985ece406825e752f585cde562dd89e5dfd6b85d685 *amd64-linux.elf/upx-3.95
|
||||||
86e277047c1b8c1884bf5ceb4f628410b011fae761e8cf7031f0b8b3058adac6 *amd64-win64.pe/upx-3.95.exe
|
85334ab36776fbc83d7f9b323e398045709a84227cc060ec1b11416e47b7d670 *amd64-win64.pe/upx-3.95.exe
|
||||||
80a8f4d0df27d32d8f20bfd838f6c876026f84d6c54bb5c1a920340031eb22e8 *arm-linux.elf/upx-3.95
|
662c325309248481d6badea5e1f029199e016805e71493f293b4cc1ddaaf7312 *arm-linux.elf/upx-3.95
|
||||||
c059993735be23726fd74a5d0c5165f4c6581cc90513b2a6f82cb0f8d113ca6a *arm-wince.pe/upx-3.91.exe
|
6702553672b3c82c5202568995e147ff0add3d313cf947c11715e28619e0d8a4 *arm-wince.pe/upx-3.91.exe
|
||||||
3b8298af00f656d071187fc219bbb9a131a412f7489dc7a164fa7c6a78c96c85 *arm64-linux.elf/upx-3.95
|
18911ee9b594bd26afc0e8613cf7b2ea1c94a7802e34f7cc8f73219ce073b549 *arm64-linux.elf/upx-3.95
|
||||||
83d0c4dc17bbb9391d904c85c6382fee5b8f76baf664f14c8f7c3c0b31bc8079 *armeb-linux.elf/upx-3.91
|
8406d036dbd9cdccaad665b6ef1a7c2dd19444e68cc22356862981f8bb887705 *armeb-linux.elf/upx-3.91
|
||||||
f939c8365f00d486573f9b969d42d1b43e49fc8c5f59b3a72eb229482de3938e *armeb-linux.elf/upx-3.95
|
88309cf1e9ced304ae7075a1936fe5ca36252b02778122b7c68a945552e5d985 *armeb-linux.elf/upx-3.95
|
||||||
467cead4f4418d1a581ac61cac5526afdbb6ebe8887749c3b8b25a45bb686e22 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
97333fc14e57dfa8e1e5253d5e1fef192be15ab244c8f8fcb085df6df84a6af9 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
c35eb28139afcea4b03e7fabf993e9927486b53e0ca20d78e61a274358934ad3 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
35695a112da8561ce23421e143a175b208cbfb111147d0d1b66076204eccb786 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
6898de07c4d250dfdd9be431a59562e87f49e2c69112d034352d1ec62c6e99dd *i386-linux.elf/upx-3.91
|
18573567330d45620d03eb4f429ef961237e699d4f3e6996b821a4b06b41cfaa *i386-linux.elf/upx-3.91
|
||||||
400f08c53c7b3d81e99c85f9aa86443616d884a366627f61dce3f1d0c46c67ba *i386-linux.elf/upx-3.95
|
e29d386a052212dec3c772afc82a082935c45f2082f534a703cac1a3df526624 *i386-linux.elf/upx-3.95
|
||||||
2530b702024091f71405e5a8b4b0ebc235a8e12bcb66867590d1a6741c905b9d *i386-win32.pe/upx-3.91.exe
|
41bdbc2c6a81afbd84bd76c0f86aefbe2910e9d134ad7f4d8546d75faf0bb9f2 *i386-win32.pe/upx-3.91.exe
|
||||||
2a854af2416d459b7bdf8345cae374800cf471d9e945a170fa38046221e7b462 *i386-win32.pe/upx-3.95.exe
|
86d64438184889bed06efcb58acb4474ca0a5f9e6f68b13454dc0c3769994953 *i386-win32.pe/upx-3.95.exe
|
||||||
74ac6483e4a98a4173330ad43203f04354af0bc1ce046e6c94e5759d68ce992f *m68k-atari.tos/upx-3.91.ttp
|
3a5d8cc9d5614d78739b1b3eaf2f5fce1607fb27c9229da88580faedd48a1e32 *m68k-atari.tos/upx-3.91.ttp
|
||||||
118fd0c794402cf96c4c97533c2a3292afdc87632bac6a25978f0baae248e375 *mips-linux.elf/upx-3.95
|
621d84c8fb8f51d97846d6db10b42cf761fffc33f5ed62a30a4c1ce12a7581ab *mips-linux.elf/upx-3.95
|
||||||
4b26db733fab84d8032dd4c6cc345f3da50ac3fe581706b1676ebe19d099c693 *mipsel-linux.elf/upx-3.91
|
9de8d51d185935276faa5aea301d6cb027acad0eb61061a0e9c21aacc931b045 *mipsel-linux.elf/upx-3.91
|
||||||
a016e09a4aa299dd176a6e5eccde98db8781c509e7605504c316a77bf55fe1a1 *mipsel-linux.elf/upx-3.95
|
0f8fb6ae0e8a62cc1d349ced9beb18be5eaf82fd90960250eea8c184d0cc8140 *mipsel-linux.elf/upx-3.95
|
||||||
db75012b5177ef021fb9365c3828aba39ea7feff0783e737a4625c0066de8ef1 *powerpc-linux.elf/upx-3.91
|
577584395dc5cc88a5302b69d5492a10da5eb2712bb22f4ad09b222af287f401 *powerpc-linux.elf/upx-3.91
|
||||||
168931dfcecc39019fa86eb2e27dfc2e8239160c3b826b76fd53f39f13f986da *powerpc-linux.elf/upx-3.95
|
1287341561dde2168d79165e0ebb15bfd5e404b28f2defd5163e7b658bb1b9eb *powerpc-linux.elf/upx-3.95
|
||||||
e58fb39928d60ec18add81e3dcc62b5a82cfa8c9c19f89ade0a7388ac88342f5 *powerpc64le-linux.elf/upx-3.95
|
132c287fa13771b9a251d02d007fb5606acc298afc8defb556eafe05c4a6eea5 *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t150_compress_ucl_2_all_filters="\
|
expected_sha256sums__t150_compress_ucl_2_all_filters="\
|
||||||
c329512f59d065b20698c49ff7d710c7bb0cf099b8a4b8fe5ecd1121a12eb175 *amd64-linux.elf/upx-3.91
|
c5bc7dc605b6d6fad71e796260d9b533a4a39ff2664bc1164d1e33a4f52bcd8d *amd64-linux.elf/upx-3.91
|
||||||
8cf09664da89c51453e23c4ac76e8d619814dbd576580f408ebf95078dc67474 *amd64-linux.elf/upx-3.95
|
543e5484080f84ca511d4d7a3ff86a6b06aeaefc17c5dd65dff859c1d15d5c1f *amd64-linux.elf/upx-3.95
|
||||||
8af657df3b6a0f7d586f38960a592827921a914f923db4ab87fbb93094f1096d *amd64-win64.pe/upx-3.95.exe
|
16b7f3c5b0aa1854edecc1519b9b8b9fb8869f7b8b295aa6a42f684750f641b9 *amd64-win64.pe/upx-3.95.exe
|
||||||
055f5fd681f872e2e308a59402196bb3f33fdb0ef34ddee4031f7d676e6ac364 *arm-linux.elf/upx-3.95
|
b4919e7441869d45b98454abd935cd5dbef06bb3a0382f852f3552e6f8ba9768 *arm-linux.elf/upx-3.95
|
||||||
eae07f1e169d0b89ec80fac5f61ce41af9c697d48ddb45495806f9e3103dd0ac *arm-wince.pe/upx-3.91.exe
|
32f7fd369c33f4c70fcb7e6ece14f3cb532845a2410af8fa9d6e23b380428a3a *arm-wince.pe/upx-3.91.exe
|
||||||
b1bfa0d71d8dfd3edd772d1d92f76695155ba9cbcdc572c68efa8cd6e500b0b6 *arm64-linux.elf/upx-3.95
|
6a91fb2df9366591530bd4d4e240e7cb0316de19bc437b93adb00dec26fa9227 *arm64-linux.elf/upx-3.95
|
||||||
12af497fbc9d06199fa623744a31778ee78fe142e5958162f0e683809ca58435 *armeb-linux.elf/upx-3.91
|
839dca66684e5fe8da1a81507c427b450d3af00014a06cf1e728091b412d4439 *armeb-linux.elf/upx-3.91
|
||||||
b497a7fb0b12fb75a4444f0c137e174fe059b973f5f2425b1eedb04855dfb130 *armeb-linux.elf/upx-3.95
|
98fc09fded3e4c4e377ad7b1cb109d0115ce34c215762ef85810841b2b1c6973 *armeb-linux.elf/upx-3.95
|
||||||
1c7d4abe5aa21da343399e2cff642f04bf0904bbac2df97d5e10b2e9087806fd *i386-dos32.djgpp2.coff/upx-3.91.exe
|
765d81de304b2e60ee51da124677ba3d762da34df2f0e7989c8e967aa130754c *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
70ae2c3a58b22dbf1aefb145705c00855be241e6b2cc45fe18cd90bf93fa3802 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
2d4429efc2161399e07e7bafd94b0e8631f8afdc2dc27f823b8983ad9cc74ffd *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
f332cba5e96fa04377a127c2c7f45822ccf1f12dd990fca5bf73499902082c3b *i386-linux.elf/upx-3.91
|
e9c041cdf4da72fabba9a402eaffe35a2ffd59caaa629580a6fdf61a3810ec01 *i386-linux.elf/upx-3.91
|
||||||
15f1238bd48835d850c4eb9bb51515738d69237b6c81bd7148aefb0a0e4556e6 *i386-linux.elf/upx-3.95
|
a6905f887a7f9c28657b9afe62121b2c2e4372594654b75fe3f6c77c2fe608dc *i386-linux.elf/upx-3.95
|
||||||
1c00860e202116b199fa76b4b508f27d7ec28510d8287557d04688c93be4e624 *i386-win32.pe/upx-3.91.exe
|
f0e2972e405a0d72c09fca7e63a56bb5c3658af558253151234431a7f7be4df0 *i386-win32.pe/upx-3.91.exe
|
||||||
12e1ac68a55bae0c2f82149b133e21224e37168e9915ef97bd40d38455723a53 *i386-win32.pe/upx-3.95.exe
|
1dd5519f77e84d824b97d480fcc3ce03c9302411af4bfedc720970f0da42511f *i386-win32.pe/upx-3.95.exe
|
||||||
ae43a71d76b0bc2f1af2e9b5ec90d6cc0337dbd603d124dfac8c68893bd8fb5f *m68k-atari.tos/upx-3.91.ttp
|
eb475239ee1e22b9fde001334f2e4b9198e69e5cbf1dad4799e9689ee3f4b4a3 *m68k-atari.tos/upx-3.91.ttp
|
||||||
e0c0dd0e41b3d0f059d373bbc81c35fdb843657d496614fd090aa2d89ed5da27 *mips-linux.elf/upx-3.95
|
c7b5aa7015d3aebfb26dbfc07cccaf27c95635eb3059bbe3b63ea4464d348ca0 *mips-linux.elf/upx-3.95
|
||||||
558780a870830f5fbb14f5cd00db576fa37c8fcd72f7f22491ca2279aaf85757 *mipsel-linux.elf/upx-3.91
|
1665df73de7d6295054a6586f36a3539d04970036ed589a13d15889bac0531dc *mipsel-linux.elf/upx-3.91
|
||||||
7d85974f25e3daa3f21c11496683bee6c22d1c6086f29ed5b410637cb9c66f2e *mipsel-linux.elf/upx-3.95
|
dd6725bcff72b27b292670eef5e165e5150916c11147a782b648e954cdfb0951 *mipsel-linux.elf/upx-3.95
|
||||||
cb3c36ee3ade39e4cb1c2d5bb20548f1f4560bf1853c315b5c2b3fca533c75ec *powerpc-linux.elf/upx-3.91
|
68fe23ad35bb80fe99d3d83ca5856aabe5816fe415f70ac9e94a241283972088 *powerpc-linux.elf/upx-3.91
|
||||||
faaf09644ef9eb51a5f48a34971bb6ab363cb85fb79fdba8ad9eb1aecd7d5a7e *powerpc-linux.elf/upx-3.95
|
bc2ae2af43c3e07b3877b0f9c569db3a11b4b5fe593bdd86702ff6e9e5bbf26a *powerpc-linux.elf/upx-3.95
|
||||||
c714496c2027d81cd16431cc27dc105761aae98d71099cecae84bd1d269e9dba *powerpc64le-linux.elf/upx-3.95
|
9081f42953e76c5c2985dc5ed4eb6db8569ac9cac1935181031d06251c9e2b75 *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t160_compress_all_methods_1_no_filter="\
|
expected_sha256sums__t160_compress_all_methods_1_no_filter="\
|
||||||
08a685a5869892597aa82264e8796a6d0e663f61426b683cfb47a51c5f4e1f37 *amd64-linux.elf/upx-3.91
|
31ebcdb8bc47adecd530ed4856fd980d2d1f9634223633e881c0bada9df5833e *amd64-linux.elf/upx-3.91
|
||||||
ea0ef4eed5ecfa14f5e713bae4a7559adcd8dc5bf26a6bc035d771063cf325eb *amd64-linux.elf/upx-3.95
|
f68db730964b5616e18166679e5f145f284153c3fb60ca6c5221565b73496fed *amd64-linux.elf/upx-3.95
|
||||||
d5cbc1908d75808afffaa503584588aa33ef3ce36692273c0d7ae628fe649fc6 *amd64-win64.pe/upx-3.95.exe
|
fb77031bf3378bf36f8e5578f613ef270469b45b3092115302cfa5f0263f3ea2 *amd64-win64.pe/upx-3.95.exe
|
||||||
a90a668fb46aa1ae1ebe875383930f016ea3ca9985f8a6d0d09bcef179cee7ab *arm-linux.elf/upx-3.95
|
51056aab220ba9f8d8e1cba1493d1ffb06276b6528a6ea17f6a53592c0e2b918 *arm-linux.elf/upx-3.95
|
||||||
ad3d1c557d82f8d4d54a462b5e720705b51df064141b0fd3f81d54de685f51d6 *arm-wince.pe/upx-3.91.exe
|
1cd0e34cd590faaad5e315b0a6b2005b1af4cbc198804ee985407cabe9593d5f *arm-wince.pe/upx-3.91.exe
|
||||||
1b2f673515ca9b67c7af0a9381d4e2b7f23b709e97ae969cf1dedcfda8b254ef *arm64-linux.elf/upx-3.95
|
80de1405d287740715346529a8d28110d79ad6ddac7d22e53b03f0b9e2b5b494 *arm64-linux.elf/upx-3.95
|
||||||
ef2ce0aace6ea8c6994232c93b73d2b0fda6ccc2b108bfca6a0f4d4dbacc36d0 *armeb-linux.elf/upx-3.91
|
8f6baca1ba513b7bcc0ddea296567955232deeee17033e4b556c742415aef820 *armeb-linux.elf/upx-3.91
|
||||||
2bfdc5e22932b32d405611d51940d7a79b851e3776b8cdb05db5112a195cc624 *armeb-linux.elf/upx-3.95
|
39e0c345678d189a792e4abbfda523c5447eb272a66744cade79981c146e9539 *armeb-linux.elf/upx-3.95
|
||||||
a9b09a6118386855e0b326e337f72c8dd369b3cadfb4e1d35a08c197a71ec0f6 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
98ef45954db27ffa8acbabb7a8abe8ecc61027e62dd0f7d94fb1af4c4a0fa8b8 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
4cedba26f462707805fef1810d720e09b25040f97344444d93c0af36923e8089 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
b0b518e4e34c87812550eae4aa19717a571337bae3839d132188ccb20f6f7752 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
7fdf110134d120d6cec0aea13c1a7b861770cecb4f516cd1ab595a4d3d26936f *i386-linux.elf/upx-3.91
|
5c4ca76139f3206c8f5902f2c5f02cd510df5275dbf857a6ad323316eea77ed4 *i386-linux.elf/upx-3.91
|
||||||
deb15af9198da2d8e2d95b5f5e64bd8639cb97d4cfe2484eabdcd6385288b964 *i386-linux.elf/upx-3.95
|
edf9302620e1c640dd7614305fbe8e897dbfa29805b674390448ee4d88f3f9ee *i386-linux.elf/upx-3.95
|
||||||
40fcff57d7859f37d349b907a4564bf3e9ba7223cc163e770f8353a8bfa51c73 *i386-win32.pe/upx-3.91.exe
|
4b766a3851c2452be06e937a85e8bcd482d8c57e929552abe7276f550f57009a *i386-win32.pe/upx-3.91.exe
|
||||||
fae3dc1dc8eac23f6e610a1e01c20d4779026511a091672f7c150c402ae1c552 *i386-win32.pe/upx-3.95.exe
|
71efdedb51745d68fa20b533dd5a19a21ec92a6a07fa9fcb8e052f474b513cc1 *i386-win32.pe/upx-3.95.exe
|
||||||
f9663e80b6d0f69cc916ae137f6df9cd8c10bfff9c1562959efd32e91b02e1a8 *m68k-atari.tos/upx-3.91.ttp
|
0a1bbeeac1a56ac01fe6528e36822793b723bed1b578a922a7ad37a16549fec6 *m68k-atari.tos/upx-3.91.ttp
|
||||||
50b71e6090c7964bb704849584c7c75d8ee5aaa5bfab26482d3879bc01d17841 *mips-linux.elf/upx-3.95
|
721a41418323ff67c2a90f61eab8c7f0ee45a5fa2a4a4d83d0240b487b045ea3 *mips-linux.elf/upx-3.95
|
||||||
cb7d16ae50a2eb464c1f864f1b9052cc66f52545b82d636e48b2105e797e31f7 *mipsel-linux.elf/upx-3.91
|
38c129ba9a0d7f8909070532901aa70dc19d58890ca1dbbd3ec7419a401cc9f0 *mipsel-linux.elf/upx-3.91
|
||||||
a1052f7425c434ce0f92dbb292d6511c8af1698a2e88352f7a463711ef8115c6 *mipsel-linux.elf/upx-3.95
|
1ec691975942533d9bb288948fc283cfe57e0e09853bd02149af63b9788b6be5 *mipsel-linux.elf/upx-3.95
|
||||||
5fcc6323a8cd37d83e9a9136d7d2511a3e5c59216ceab50d4f386a2ae1a6c842 *powerpc-linux.elf/upx-3.91
|
daee5df21ce65551309573a121db90255b6f034eac7988c4cb34bed6834086ce *powerpc-linux.elf/upx-3.91
|
||||||
a905cb39a96982ab08e2663be690cd400bd54646b50ee50790de51b322d09830 *powerpc-linux.elf/upx-3.95
|
d27dffec68b530d2a8ffb5d440ec9ebe3772d45aaa699329dbb4b0a850cbbfff *powerpc-linux.elf/upx-3.95
|
||||||
071b42a5ae7bf3d25f01e436473433470b97311ac2aff834884a0d3d240d0291 *powerpc64le-linux.elf/upx-3.95
|
b021e58ff550aa160c83c122e03b63c1baf28808a584a9aefac4268a77095bec *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t170_compress_all_methods_no_lzma_5_no_filter="\
|
expected_sha256sums__t170_compress_all_methods_no_lzma_5_no_filter="\
|
||||||
c5ed17847125467790aa635c926075768925ab88c3a6baa57b3bf2877c6b9001 *amd64-linux.elf/upx-3.91
|
0ad79f9b86da588e67877e59921cc501ca515dc50d27c077f73ef3fb2c303ecb *amd64-linux.elf/upx-3.91
|
||||||
a17594fae504de512492ef822675cf6faac74e48c7803ac119626148ea9adb89 *amd64-linux.elf/upx-3.95
|
5e46d16f080ce4f7b7f317cd3c76b513a70fab1fafb10fbdb72c01d3006b2369 *amd64-linux.elf/upx-3.95
|
||||||
1ea4c9aedd3591f62cd6902986c1df39d3ef7fc624abc78bde61300e87627d20 *amd64-win64.pe/upx-3.95.exe
|
8610b878784b51dfcab58e33536e9812cc69951a8d22c3fad9d4c2583f6bb6ac *amd64-win64.pe/upx-3.95.exe
|
||||||
319e96fc0a6dbaa3aa7214100176957d4d0e84b7d0ee849a1f60c34ba5a22947 *arm-linux.elf/upx-3.95
|
cd02bf210f1d183bdc53f4442a36114b7385b165130b74bcce830703f8c7d9d7 *arm-linux.elf/upx-3.95
|
||||||
a3f2144754b44700b4aacb39ab5f5b818fda7caa0a934090eeacee7dafb6ba7b *arm-wince.pe/upx-3.91.exe
|
d4a6895180ebaaecff91374a58101370db5a8817c1ad1f99876cec02aab6c561 *arm-wince.pe/upx-3.91.exe
|
||||||
5cb0a03d3305ddd5bc77990538b49ce3f14dcd03ad76d272d45005aa86dd5f7d *arm64-linux.elf/upx-3.95
|
1ea76b4fe1cb058d3e0fade6139fe3c5d2745eb3becf0eddf557194e500648e6 *arm64-linux.elf/upx-3.95
|
||||||
f5061f76060445a72edb898e9919400e81423bde6dad566a5bb5bdf1407ef6dc *armeb-linux.elf/upx-3.91
|
4f7d97f65cecd626654d3fc34201da60899905b826d395fc6dee7bd6d742363c *armeb-linux.elf/upx-3.91
|
||||||
337e4776b2f1afec7eb6d54c34d68f166af63ce5b4e2fb7ac48eeb5b83582c28 *armeb-linux.elf/upx-3.95
|
c5bbe69225f5d75e88ab176a91e148e9ed3733530d0ee9ed22a85aae201d7231 *armeb-linux.elf/upx-3.95
|
||||||
46223cc5aea67b275cc5621eec79f97d4f543edecfdac37a0f2407583f881fc9 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
11130e38b33a063737685110740a16f95f30661480c0f8bf582e4b7fa751f5b7 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
228c9007c5395fc9eef93a23d781e7daab01efa1ee86a4d4f6a46b9b7f7aeb8b *i386-dos32.djgpp2.coff/upx-3.95.exe
|
6f613b3b96147068eb8e1d577537cc8a16011600b79a80d3584c6c115de8b063 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
089693d8059d8580ea3bf326d038ffb51f258721833ad96c05f20c321ab8df13 *i386-linux.elf/upx-3.91
|
a1529b3e26fe8d101dbcb12338de0b9fc31324614fa5020e0807e3fdad5e9ad4 *i386-linux.elf/upx-3.91
|
||||||
d4995b5b5c46eef7f8f1673c629f427d19b5dbda495c2b3f157acf4046b72123 *i386-linux.elf/upx-3.95
|
d8e019fff654dcffc9c55bcf171dd932f166fb401dd5884cf69e7db253740a60 *i386-linux.elf/upx-3.95
|
||||||
dd70e8fde421a35692f26147c3eba392f57adb332d0e5025fa0039a2673c10cb *i386-win32.pe/upx-3.91.exe
|
264093035fbddf27a4e5c9d612ddc60fa7466c8b2254df56a28dded096afd438 *i386-win32.pe/upx-3.91.exe
|
||||||
3fa365f39199afc7a259ba8ad8ae50cd026ef3f0a37d3fd570d42cba8bc5e0e7 *i386-win32.pe/upx-3.95.exe
|
159918923abe10dd3a63aaf5c1c5a6a048a4a97a278587ec9ba6f72aa12b8d45 *i386-win32.pe/upx-3.95.exe
|
||||||
1b2f9a97731805dafef6961656bd29d7e983320a5626fe88ba987bf267bef32a *m68k-atari.tos/upx-3.91.ttp
|
38262d29ae5c51b6dc18d6b992f041ee602b0b8c601003ef423e4f8693eb1ad0 *m68k-atari.tos/upx-3.91.ttp
|
||||||
21febba6606d89c4a0f72a7f07f55d90268da48b97c65d23647c021c2e26b7c4 *mips-linux.elf/upx-3.95
|
6c543e309067db3bbd45d219b0d7c9ebc0df9c5db851530877031edc8a8b62dc *mips-linux.elf/upx-3.95
|
||||||
7a0892428e07493578d59f16adc0e6f5959f3d5a437e818375ff9fbf8ba42d2f *mipsel-linux.elf/upx-3.91
|
ba36e7b3566e666d3b381b8b52068a93525d411df7ef2ec8a8073c942c0a5d95 *mipsel-linux.elf/upx-3.91
|
||||||
ecf7d97388e48f2ad27a06ab8f4027e165e5a34f577f7b4fec3928a946557d60 *mipsel-linux.elf/upx-3.95
|
ada7b5da780d7ee3c0e5339dcdebb1d2cf989f19b2b5728f10685563061291de *mipsel-linux.elf/upx-3.95
|
||||||
171393e34d004f04040067080b4b48d08030708bd30bcea593f554ed13b4ddb8 *powerpc-linux.elf/upx-3.91
|
efdd95af6a52c517ec00d0f16555ed3b1fe96ab3156219c58b62a1259585efd8 *powerpc-linux.elf/upx-3.91
|
||||||
0b97ff1ed48d19e64120cd4fac5f4e76da6ea6f3ec1fda5cada11aa2142d045a *powerpc-linux.elf/upx-3.95
|
adbb1cecaa29295f2c1433fc95d2a0c610b62a5d3fe153a59c6b908597771014 *powerpc-linux.elf/upx-3.95
|
||||||
0c825675a076c7b9f73ae0292527e3d569b5c0b33298b9f48b7bdd3084115c69 *powerpc64le-linux.elf/upx-3.95
|
6201d061df42316e2550e0848343b595708e75cebcc8cd03c272a5b0def610c1 *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
########## end .sha256sums.recreate
|
########## end .sha256sums.recreate
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ cd / && cd "$upx_testsuite_BUILDDIR" || exit 1
|
|||||||
# ************************************************************************/
|
# ************************************************************************/
|
||||||
|
|
||||||
testsuite_header() {
|
testsuite_header() {
|
||||||
print_header "$1"
|
local x='==========='; x="$x$x$x$x$x$x$x"
|
||||||
|
echo -e "\n${x}\n${1}\n${x}\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
testsuite_split_f() {
|
testsuite_split_f() {
|
||||||
@@ -223,33 +224,52 @@ testsuite_check_sha $testdir
|
|||||||
# // test UPX and not the compression libraries
|
# // test UPX and not the compression libraries
|
||||||
# ************************************************************************/
|
# ************************************************************************/
|
||||||
|
|
||||||
|
case $UPX_TESTSUITE_FAST in
|
||||||
|
[0-7]) ;;
|
||||||
|
*) UPX_TESTSUITE_FAST=999 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ $UPX_TESTSUITE_FAST -ge 1 ]]; then
|
||||||
testdir=t110_compress_ucl_nrv2b_3_no_filter
|
testdir=t110_compress_ucl_nrv2b_3_no_filter
|
||||||
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
||||||
time testsuite_run_compress --nrv2b -3 --no-filter
|
time testsuite_run_compress --nrv2b -3 --no-filter
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $UPX_TESTSUITE_FAST -ge 2 ]]; then
|
||||||
testdir=t120_compress_ucl_nrv2d_3_no_filter
|
testdir=t120_compress_ucl_nrv2d_3_no_filter
|
||||||
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
||||||
time testsuite_run_compress --nrv2d -3 --no-filter
|
time testsuite_run_compress --nrv2d -3 --no-filter
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $UPX_TESTSUITE_FAST -ge 3 ]]; then
|
||||||
testdir=t130_compress_ucl_nrv2e_3_no_filter
|
testdir=t130_compress_ucl_nrv2e_3_no_filter
|
||||||
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
||||||
time testsuite_run_compress --nrv2e -3 --no-filter
|
time testsuite_run_compress --nrv2e -3 --no-filter
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $UPX_TESTSUITE_FAST -ge 4 ]]; then
|
||||||
testdir=t140_compress_lzma_2_no_filter
|
testdir=t140_compress_lzma_2_no_filter
|
||||||
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
||||||
time testsuite_run_compress --lzma -2 --no-filter
|
time testsuite_run_compress --lzma -2 --no-filter
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $UPX_TESTSUITE_FAST -ge 5 ]]; then
|
||||||
testdir=t150_compress_ucl_2_all_filters
|
testdir=t150_compress_ucl_2_all_filters
|
||||||
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
||||||
time testsuite_run_compress -2 --all-filters
|
time testsuite_run_compress -2 --all-filters
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $UPX_TESTSUITE_FAST -ge 6 ]]; then
|
||||||
testdir=t160_compress_all_methods_1_no_filter
|
testdir=t160_compress_all_methods_1_no_filter
|
||||||
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
||||||
time testsuite_run_compress --all-methods -1 --no-filter
|
time testsuite_run_compress --all-methods -1 --no-filter
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $UPX_TESTSUITE_FAST -ge 7 ]]; then
|
||||||
testdir=t170_compress_all_methods_no_lzma_5_no_filter
|
testdir=t170_compress_all_methods_no_lzma_5_no_filter
|
||||||
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
||||||
time testsuite_run_compress --all-methods --no-lzma -5 --no-filter
|
time testsuite_run_compress --all-methods --no-lzma -5 --no-filter
|
||||||
|
fi
|
||||||
|
|
||||||
# /***********************************************************************
|
# /***********************************************************************
|
||||||
# // summary
|
# // summary
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# see https://docs.github.com/en/actions/managing-issues-and-pull-requests/closing-inactive-issues
|
# see https://docs.github.com/en/actions/managing-issues-and-pull-requests/closing-inactive-issues
|
||||||
# see https://github.com/actions/stale
|
# see https://github.com/actions/stale
|
||||||
|
|
||||||
# Automatically closing issues is far from perfect, but then we only have
|
# Automatically closing issues is far from perfect, but then we only
|
||||||
# limited resources and this approach favors issues that people
|
# have limited resources and this approach favors issues that people
|
||||||
# actually care about.
|
# actually care about.
|
||||||
#
|
#
|
||||||
# also see:
|
# also see:
|
||||||
@@ -25,7 +25,9 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v6
|
- uses: actions/stale@v6
|
||||||
with:
|
with:
|
||||||
# operations-per-run: 300
|
operations-per-run: 300
|
||||||
|
exempt-all-milestones: true
|
||||||
|
exempt-issue-labels: 'blocker,enhancement'
|
||||||
days-before-stale: 60
|
days-before-stale: 60
|
||||||
days-before-close: 30
|
days-before-close: 30
|
||||||
stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Please remove the stale label or add a comment or this issue will be closed in 30 days.'
|
stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Please remove the stale label or add a comment or this issue will be closed in 30 days.'
|
||||||
|
|||||||
+63
-25
@@ -1,9 +1,11 @@
|
|||||||
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
|
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
|
||||||
|
|
||||||
# config options
|
# compilation config options
|
||||||
option(UPX_CONFIG_DISABLE_GITREV "Do not compile with default Git version info.")
|
option(UPX_CONFIG_DISABLE_GITREV "Do not compile with default Git version info.")
|
||||||
option(UPX_CONFIG_DISABLE_SANITIZE "Do not compile with default sanitize options.")
|
option(UPX_CONFIG_DISABLE_SANITIZE "Do not compile with default sanitize options.")
|
||||||
option(UPX_CONFIG_DISABLE_WERROR "Do not compile with default -Werror option.")
|
option(UPX_CONFIG_DISABLE_WERROR "Do not compile with default -Werror option.")
|
||||||
|
# test config options
|
||||||
|
option(UPX_CONFIG_DISABLE_SELF_PACK_TEST "Do not test packing UPX with itself") # see below
|
||||||
|
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
# init
|
# init
|
||||||
@@ -17,10 +19,13 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|||||||
if(",${CMAKE_SOURCE_DIR}," STREQUAL ",${CMAKE_BINARY_DIR},")
|
if(",${CMAKE_SOURCE_DIR}," STREQUAL ",${CMAKE_BINARY_DIR},")
|
||||||
message(FATAL_ERROR "ERROR: In-source builds are not allowed, please use an extra build dir.")
|
message(FATAL_ERROR "ERROR: In-source builds are not allowed, please use an extra build dir.")
|
||||||
endif()
|
endif()
|
||||||
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
# determine git revision
|
# determine git revision
|
||||||
set(GITREV_SHORT "")
|
set(GITREV_SHORT "")
|
||||||
set(GITREV_PLUS "")
|
set(GITREV_PLUS "")
|
||||||
|
set(GIT_DESCRIBE "")
|
||||||
find_package(Git)
|
find_package(Git)
|
||||||
if(GIT_FOUND AND NOT UPX_CONFIG_DISABLE_GITREV)
|
if(GIT_FOUND AND NOT UPX_CONFIG_DISABLE_GITREV)
|
||||||
execute_process(
|
execute_process(
|
||||||
@@ -39,17 +44,32 @@ if(GIT_FOUND AND NOT UPX_CONFIG_DISABLE_GITREV)
|
|||||||
else()
|
else()
|
||||||
set(GITREV_SHORT "")
|
set(GITREV_SHORT "")
|
||||||
endif()
|
endif()
|
||||||
|
execute_process(
|
||||||
|
RESULT_VARIABLE result
|
||||||
|
COMMAND "${GIT_EXECUTABLE}" describe --match "v*.*.*" --tags --dirty
|
||||||
|
ERROR_QUIET
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
OUTPUT_VARIABLE GIT_DESCRIBE
|
||||||
|
)
|
||||||
|
if(GIT_DESCRIBE MATCHES "^v?([0-9]+\\.[0-9]+\\.[0-9]+)-([0-9]+)-g(.+)$")
|
||||||
|
set(GIT_DESCRIBE "${CMAKE_MATCH_1}-devel.${CMAKE_MATCH_2}+git-${CMAKE_MATCH_3}")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
if(NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.git") # extra check
|
if(NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.git") # extra check
|
||||||
set(GITREV_SHORT "")
|
set(GITREV_SHORT "")
|
||||||
endif()
|
endif()
|
||||||
if(GITREV_SHORT)
|
if(GITREV_SHORT)
|
||||||
message(STATUS "UPX_VERSION_GITREV = \"${GITREV_SHORT}${GITREV_PLUS}\"")
|
message(STATUS "UPX_VERSION_GITREV = \"${GITREV_SHORT}${GITREV_PLUS}\"")
|
||||||
|
if(GIT_DESCRIBE)
|
||||||
|
message(STATUS "UPX_VERSION_GIT_DESCRIBE = \"${GIT_DESCRIBE}\"")
|
||||||
|
endif()
|
||||||
|
elseif(UPX_CONFIG_DISABLE_GITREV)
|
||||||
|
message(STATUS "UPX_VERSION_GITREV: disabled")
|
||||||
else()
|
else()
|
||||||
message(STATUS "UPX_VERSION_GITREV: not set")
|
message(STATUS "UPX_VERSION_GITREV: not set")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
project(upx VERSION 4.0.0 LANGUAGES C CXX)
|
project(upx VERSION 4.0.1 LANGUAGES C CXX)
|
||||||
|
|
||||||
# set default build type to "Release"
|
# set default build type to "Release"
|
||||||
get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||||
@@ -83,6 +103,7 @@ set_property(TARGET upx_vendor_zlib PROPERTY C_STANDARD 11)
|
|||||||
file(GLOB upx_SOURCES "src/*.cpp" "src/util/*.cpp")
|
file(GLOB upx_SOURCES "src/*.cpp" "src/util/*.cpp")
|
||||||
list(SORT upx_SOURCES)
|
list(SORT upx_SOURCES)
|
||||||
add_executable(upx ${upx_SOURCES})
|
add_executable(upx ${upx_SOURCES})
|
||||||
|
#target_compile_features(upx PRIVATE cxx_std_14)
|
||||||
set_property(TARGET upx PROPERTY CXX_STANDARD 14)
|
set_property(TARGET upx PROPERTY CXX_STANDARD 14)
|
||||||
target_link_libraries(upx upx_vendor_ucl upx_vendor_zlib)
|
target_link_libraries(upx upx_vendor_ucl upx_vendor_zlib)
|
||||||
|
|
||||||
@@ -118,8 +139,18 @@ else()
|
|||||||
add_definitions(-fno-tree-vectorize)
|
add_definitions(-fno-tree-vectorize)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
function(upx_sanitize_target t)
|
||||||
|
if(NOT UPX_CONFIG_DISABLE_SANITIZE AND NOT MSVC)
|
||||||
|
# default sanitizer for Debug builds
|
||||||
|
target_compile_options(${t} PRIVATE $<$<CONFIG:Debug>:-fsanitize=undefined -fsanitize-undefined-trap-on-error -fstack-protector-all>)
|
||||||
|
# default sanitizer for Release builds
|
||||||
|
target_compile_options(${t} PRIVATE $<$<CONFIG:Release>:-fstack-protector>)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
set(t upx_vendor_ucl)
|
set(t upx_vendor_ucl)
|
||||||
target_include_directories(${t} PRIVATE vendor/ucl/include vendor/ucl)
|
target_include_directories(${t} PRIVATE vendor/ucl/include vendor/ucl)
|
||||||
|
upx_sanitize_target(${t})
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
target_compile_options(${t} PRIVATE -J -W4 ${warn_WX})
|
target_compile_options(${t} PRIVATE -J -W4 ${warn_WX})
|
||||||
else()
|
else()
|
||||||
@@ -127,6 +158,7 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(t upx_vendor_zlib)
|
set(t upx_vendor_zlib)
|
||||||
|
upx_sanitize_target(${t})
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
target_compile_options(${t} PRIVATE -DHAVE_STDARG_H -DHAVE_VSNPRINTF -J -W3 ${warn_WX})
|
target_compile_options(${t} PRIVATE -DHAVE_STDARG_H -DHAVE_VSNPRINTF -J -W3 ${warn_WX})
|
||||||
else()
|
else()
|
||||||
@@ -140,13 +172,11 @@ target_include_directories(${t} PRIVATE vendor)
|
|||||||
target_compile_definitions(${t} PRIVATE $<$<CONFIG:Debug>:DEBUG=1>)
|
target_compile_definitions(${t} PRIVATE $<$<CONFIG:Debug>:DEBUG=1>)
|
||||||
if(GITREV_SHORT)
|
if(GITREV_SHORT)
|
||||||
target_compile_definitions(${t} PRIVATE UPX_VERSION_GITREV="${GITREV_SHORT}${GITREV_PLUS}")
|
target_compile_definitions(${t} PRIVATE UPX_VERSION_GITREV="${GITREV_SHORT}${GITREV_PLUS}")
|
||||||
|
if(GIT_DESCRIBE)
|
||||||
|
target_compile_definitions(${t} PRIVATE UPX_VERSION_GIT_DESCRIBE="${GIT_DESCRIBE}")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
if(NOT UPX_CONFIG_DISABLE_SANITIZE AND NOT MSVC)
|
upx_sanitize_target(${t})
|
||||||
# default sanitizer for Debug builds
|
|
||||||
target_compile_options(${t} PRIVATE $<$<CONFIG:Debug>:-fsanitize=undefined -fsanitize-undefined-trap-on-error -fstack-protector-all>)
|
|
||||||
# default sanitizer for Release builds
|
|
||||||
target_compile_options(${t} PRIVATE $<$<CONFIG:Release>:-fstack-protector>)
|
|
||||||
endif()
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
target_compile_options(${t} PRIVATE -EHsc -J -W4 ${warn_WX})
|
target_compile_options(${t} PRIVATE -EHsc -J -W4 ${warn_WX})
|
||||||
else()
|
else()
|
||||||
@@ -160,26 +190,34 @@ endif()
|
|||||||
# "make test"
|
# "make test"
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
|
|
||||||
|
include(CTest)
|
||||||
if(NOT CMAKE_CROSSCOMPILING)
|
if(NOT CMAKE_CROSSCOMPILING)
|
||||||
include(CTest)
|
|
||||||
set(exe ${CMAKE_EXECUTABLE_SUFFIX})
|
|
||||||
set(upx_self_exe "$<TARGET_FILE:upx>")
|
|
||||||
add_test(NAME upx-test-cleanup COMMAND rm -f ./upx.packed${exe} ./upx.unpacked${exe})
|
|
||||||
add_test(NAME upx-version COMMAND upx --version)
|
add_test(NAME upx-version COMMAND upx --version)
|
||||||
add_test(NAME upx-help COMMAND upx --help)
|
add_test(NAME upx-help COMMAND upx --help)
|
||||||
add_test(NAME upx-self-pack COMMAND upx -3 ${upx_self_exe} -o upx.packed${exe})
|
|
||||||
add_test(NAME upx-list COMMAND upx -l upx.packed${exe})
|
|
||||||
add_test(NAME upx-fileinfo COMMAND upx --fileinfo upx.packed${exe})
|
|
||||||
add_test(NAME upx-test COMMAND upx -t upx.packed${exe})
|
|
||||||
add_test(NAME upx-unpack COMMAND upx -d upx.packed${exe} -o upx.unpacked${exe})
|
|
||||||
add_test(NAME upx-run-unpacked COMMAND ./upx.unpacked${exe} --version)
|
|
||||||
add_test(NAME upx-run-packed COMMAND ./upx.packed${exe} --version)
|
|
||||||
endif()
|
endif()
|
||||||
|
if(NOT CMAKE_CROSSCOMPILING AND NOT UPX_CONFIG_DISABLE_SELF_PACK_TEST)
|
||||||
# TODO: could add some more explicit test programs; but then, the integrated
|
# NOTE: these tests can only work if the host executable format is supported by UPX!
|
||||||
# "doctest" is quite convenient and already covers a number of basic
|
function(upx_add_test)
|
||||||
# checks - and more complex cases better should be handled by an
|
set(name ${ARGV0})
|
||||||
# external test suite.
|
list(REMOVE_AT ARGV 0)
|
||||||
|
add_test(NAME ${name} COMMAND ${ARGV})
|
||||||
|
set_tests_properties(${name} PROPERTIES RUN_SERIAL TRUE) # run these tests sequentially
|
||||||
|
endfunction()
|
||||||
|
set(exe ${CMAKE_EXECUTABLE_SUFFIX})
|
||||||
|
set(upx_self_exe "$<TARGET_FILE:upx>")
|
||||||
|
set(fo "--force-overwrite")
|
||||||
|
upx_add_test(upx-self-pack upx -3 ${upx_self_exe} ${fo} -o upx-packed${exe})
|
||||||
|
upx_add_test(upx-self-pack-n2b upx -3 --nrv2b ${upx_self_exe} ${fo} -o upx-packed-n2b${exe})
|
||||||
|
upx_add_test(upx-self-pack-n2d upx -3 --nrv2d ${upx_self_exe} ${fo} -o upx-packed-n2d${exe})
|
||||||
|
upx_add_test(upx-self-pack-n2e upx -3 --nrv2e ${upx_self_exe} ${fo} -o upx-packed-n2e${exe})
|
||||||
|
upx_add_test(upx-self-pack-lzma upx -3 --lzma ${upx_self_exe} ${fo} -o upx-packed-lzma${exe})
|
||||||
|
upx_add_test(upx-list upx -l upx-packed${exe} upx-packed-n2b${exe} upx-packed-n2d${exe} upx-packed-n2e${exe} upx-packed-lzma${exe})
|
||||||
|
upx_add_test(upx-fileinfo upx --fileinfo upx-packed${exe} upx-packed-n2b${exe} upx-packed-n2d${exe} upx-packed-n2e${exe} upx-packed-lzma${exe})
|
||||||
|
upx_add_test(upx-test upx -t upx-packed${exe} upx-packed-n2b${exe} upx-packed-n2d${exe} upx-packed-n2e${exe} upx-packed-lzma${exe})
|
||||||
|
upx_add_test(upx-unpack upx -d upx-packed${exe} ${fo} -o upx-unpacked${exe})
|
||||||
|
upx_add_test(upx-run-unpacked ./upx-unpacked${exe} --version-short)
|
||||||
|
upx_add_test(upx-run-packed ./upx-packed${exe} --version-short)
|
||||||
|
endif()
|
||||||
|
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
# "make install"
|
# "make install"
|
||||||
@@ -194,7 +232,7 @@ include(GNUInstallDirs)
|
|||||||
if(DEFINED CMAKE_INSTALL_FULL_BINDIR)
|
if(DEFINED CMAKE_INSTALL_FULL_BINDIR)
|
||||||
install(TARGETS upx DESTINATION "${CMAKE_INSTALL_FULL_BINDIR}")
|
install(TARGETS upx DESTINATION "${CMAKE_INSTALL_FULL_BINDIR}")
|
||||||
install(FILES
|
install(FILES
|
||||||
COPYING LICENSE NEWS README doc/upx-doc.html doc/upx-doc.txt
|
COPYING LICENSE NEWS README THANKS doc/upx-doc.html doc/upx-doc.txt
|
||||||
DESTINATION "${CMAKE_INSTALL_FULL_DOCDIR}"
|
DESTINATION "${CMAKE_INSTALL_FULL_DOCDIR}"
|
||||||
)
|
)
|
||||||
install(FILES doc/upx.1 DESTINATION "${CMAKE_INSTALL_FULL_MANDIR}/man1")
|
install(FILES doc/upx.1 DESTINATION "${CMAKE_INSTALL_FULL_MANDIR}/man1")
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ __check_cache = $(if $(wildcard $1/CMakeCache.txt),@true,)
|
|||||||
run_config = $(call __check_cache,$1) $(CMAKE) -S . -B $1 $(UPX_CMAKE_CONFIG_FLAGS) -DCMAKE_BUILD_TYPE=$2
|
run_config = $(call __check_cache,$1) $(CMAKE) -S . -B $1 $(UPX_CMAKE_CONFIG_FLAGS) -DCMAKE_BUILD_TYPE=$2
|
||||||
run_build = $(CMAKE) --build $1 $(UPX_CMAKE_BUILD_FLAGS) --config $2
|
run_build = $(CMAKE) --build $1 $(UPX_CMAKE_BUILD_FLAGS) --config $2
|
||||||
|
|
||||||
default: build/release
|
.DEFAULT_GOAL = build/release
|
||||||
|
|
||||||
build/debug: PHONY
|
build/debug: PHONY
|
||||||
$(call run_config,$@,Debug)
|
$(call run_config,$@,Debug)
|
||||||
@@ -46,6 +46,10 @@ build/release: PHONY
|
|||||||
$(call run_config,$@,Release)
|
$(call run_config,$@,Release)
|
||||||
$(call run_build,$@,Release)
|
$(call run_build,$@,Release)
|
||||||
|
|
||||||
|
# shortcuts
|
||||||
|
debug: build/debug
|
||||||
|
release: build/release
|
||||||
|
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
# some pre-defined build configurations
|
# some pre-defined build configurations
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
@@ -82,4 +86,4 @@ build/release-cross-mingw64: PHONY
|
|||||||
$(call run_config,$@,Release)
|
$(call run_config,$@,Release)
|
||||||
$(call run_build,$@,Release)
|
$(call run_build,$@,Release)
|
||||||
|
|
||||||
.PHONY: default PHONY
|
.PHONY: PHONY
|
||||||
|
|||||||
@@ -2,15 +2,19 @@
|
|||||||
User visible changes for UPX
|
User visible changes for UPX
|
||||||
==================================================================
|
==================================================================
|
||||||
|
|
||||||
Changes in 3.99 (27 Oct 2022):
|
Changes in 4.0.1 (16 Nov 2022):
|
||||||
* NOTE: this is a pre-release with known regressions for some ELF formats;
|
* bug fixes - see https://github.com/upx/upx/milestone/8
|
||||||
please help testing and reporting bugs, and see our GitHub Actions CI
|
|
||||||
page for up-to-date pre-built binaries ("Artifacts")
|
Changes in 4.0.0 (28 Oct 2022):
|
||||||
https://github.com/upx/upx/actions/workflows/ci.yml
|
* Switch to semantic versioning
|
||||||
* SECURITY NOTES: emphasize the security context in the docs
|
* SECURITY NOTES: emphasize the security context in the docs
|
||||||
* Support easy building from source code with CMake
|
* Support easy building from source code with CMake
|
||||||
|
* Support easy rebuilding the stubs from source with Podman/Docker
|
||||||
|
* Add integrated doctest C++ testing framework
|
||||||
* Add support for EFI files (PE x86; Kornel Pal)
|
* Add support for EFI files (PE x86; Kornel Pal)
|
||||||
|
* win32/pe and win64/pe: set correct SizeOfHeaders in the PE header
|
||||||
* bug fixes - see https://github.com/upx/upx/milestone/6
|
* bug fixes - see https://github.com/upx/upx/milestone/6
|
||||||
|
* bug fixes - see https://github.com/upx/upx/milestone/7
|
||||||
|
|
||||||
Changes in 3.96 (23 Jan 2020):
|
Changes in 3.96 (23 Jan 2020):
|
||||||
* bug fixes - see https://github.com/upx/upx/milestone/5
|
* bug fixes - see https://github.com/upx/upx/milestone/5
|
||||||
@@ -364,6 +368,8 @@ Changes in 0.99 (25 Feb 2000)
|
|||||||
* dos/com and dos/sys: fixed a bad decompressor problem
|
* dos/com and dos/sys: fixed a bad decompressor problem
|
||||||
* linux/386: the counter for the progress indicator was off by one
|
* linux/386: the counter for the progress indicator was off by one
|
||||||
|
|
||||||
|
==================================================================
|
||||||
|
|
||||||
Changes in 0.94 (06 Dec 1999)
|
Changes in 0.94 (06 Dec 1999)
|
||||||
* win32/pe: the stub now calls ExitProcess in case of import errors
|
* win32/pe: the stub now calls ExitProcess in case of import errors
|
||||||
* under DOS and Windows, the environment variable UPX now accepts
|
* under DOS and Windows, the environment variable UPX now accepts
|
||||||
|
|||||||
@@ -68,9 +68,11 @@ NEWS and BUGS also contain various tidbits of information.
|
|||||||
THE FUTURE
|
THE FUTURE
|
||||||
==========
|
==========
|
||||||
|
|
||||||
- Stay up-to-date with ongoing OS and executable format changes.
|
- Stay up-to-date with ongoing OS and executable format changes
|
||||||
|
|
||||||
- RISC-V 64 for Linux.
|
- RISC-V 64 for Linux
|
||||||
|
|
||||||
|
- ARM64 for Windows (help wanted)
|
||||||
|
|
||||||
- We will *NOT* add any sort of protection and/or encryption.
|
- We will *NOT* add any sort of protection and/or encryption.
|
||||||
This only gives people a false feeling of security because
|
This only gives people a false feeling of security because
|
||||||
@@ -87,20 +89,16 @@ Copyright (C) 1996-2022 Markus Franz Xaver Johannes Oberhumer
|
|||||||
Copyright (C) 1996-2022 Laszlo Molnar
|
Copyright (C) 1996-2022 Laszlo Molnar
|
||||||
Copyright (C) 2000-2022 John F. Reiser
|
Copyright (C) 2000-2022 John F. Reiser
|
||||||
|
|
||||||
This program may be used freely, and you are welcome to
|
UPX is distributed with full source code under the terms of the
|
||||||
redistribute it under certain conditions.
|
GNU General Public License v2+; either under the pure GPLv2+ (see
|
||||||
|
the file COPYING), or (at your option) under the GPLv+2 with special
|
||||||
|
exceptions and restrictions granting the free usage for all binaries
|
||||||
|
including commercial programs (see the file LICENSE).
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
UPX is distributed with full source code under the terms of the
|
|
||||||
GNU General Public License v2+;
|
|
||||||
either under the pure GPLv2+ (see the file COPYING),
|
|
||||||
or (at your option) under the GPLv+2 with special exceptions and
|
|
||||||
restrictions granting the free usage for commercial
|
|
||||||
programs (see the file LICENSE).
|
|
||||||
|
|
||||||
You should have received a copy of the UPX License Agreements along
|
You should have received a copy of the UPX License Agreements along
|
||||||
with this program; see the files COPYING and LICENSE. If not,
|
with this program; see the files COPYING and LICENSE. If not,
|
||||||
visit the UPX home page.
|
visit the UPX home page.
|
||||||
|
|||||||
+24
-35
@@ -1,21 +1,8 @@
|
|||||||
#
|
#
|
||||||
# UPX doc Makefile - needs GNU make
|
# UPX doc Makefile - needs GNU make, pod2html, pod2man and pod2text
|
||||||
#
|
#
|
||||||
|
|
||||||
MAKEFLAGS += -rR
|
BUILT_SOURCES = upx.1 upx-doc.html upx-doc.txt
|
||||||
.SUFFIXES:
|
|
||||||
SHELL = /bin/sh
|
|
||||||
|
|
||||||
# internal make variables
|
|
||||||
comma := ,
|
|
||||||
empty :=
|
|
||||||
space := $(empty) $(empty)
|
|
||||||
tab := $(empty) $(empty)
|
|
||||||
|
|
||||||
|
|
||||||
# /***********************************************************************
|
|
||||||
# //
|
|
||||||
# ************************************************************************/
|
|
||||||
|
|
||||||
top_srcdir ?= ..
|
top_srcdir ?= ..
|
||||||
|
|
||||||
@@ -23,28 +10,31 @@ PACKAGE = upx
|
|||||||
VERSION_DATE := $(shell sed -n 's/^.*UPX_VERSION_DATE_ISO .*"\(.*\)".*/\1/p' $(top_srcdir)/src/version.h)
|
VERSION_DATE := $(shell sed -n 's/^.*UPX_VERSION_DATE_ISO .*"\(.*\)".*/\1/p' $(top_srcdir)/src/version.h)
|
||||||
VERSION := $(shell sed -n 's/^.*UPX_VERSION_STRING .*"\(.*\)".*/\1/p' $(top_srcdir)/src/version.h)
|
VERSION := $(shell sed -n 's/^.*UPX_VERSION_STRING .*"\(.*\)".*/\1/p' $(top_srcdir)/src/version.h)
|
||||||
|
|
||||||
|
# internal make variables
|
||||||
|
comma := ,
|
||||||
|
empty :=
|
||||||
|
space := $(empty) $(empty)
|
||||||
|
tab := $(empty) $(empty)
|
||||||
|
|
||||||
RTRIM := sed -e 's/[ $(tab)]*$$//'
|
RTRIM := sed -e 's/[ $(tab)]*$$//'
|
||||||
DETAB2 := sed -e 's/$(tab)/ /g'
|
DETAB2 := sed -e 's/$(tab)/ /g'
|
||||||
|
|
||||||
BUILT_SOURCES = upx.1 upx-doc.html upx-doc.txt
|
#***********************************************************************
|
||||||
|
# targets
|
||||||
|
#***********************************************************************
|
||||||
|
|
||||||
|
.DEFAULT_GOAL = all
|
||||||
|
|
||||||
###
|
all: $(BUILT_SOURCES) PHONY
|
||||||
### targets
|
|
||||||
###
|
|
||||||
|
|
||||||
all: $(BUILT_SOURCES)
|
mostlyclean clean distclean maintainer-clean: PHONY
|
||||||
|
rm -f $(BUILT_SOURCES) ./pod2htm*
|
||||||
|
|
||||||
mostlyclean clean distclean maintainer-clean:
|
#***********************************************************************
|
||||||
rm -f $(BUILT_SOURCES) pod2htm*
|
# rules
|
||||||
|
#***********************************************************************
|
||||||
.PHONY: all mostlyclean clean distclean maintainer-clean
|
|
||||||
|
|
||||||
|
|
||||||
###
|
|
||||||
### rules
|
|
||||||
###
|
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
.SUFFIXES: .1 .html .man .pod .ps .tex .txt
|
.SUFFIXES: .1 .html .man .pod .ps .tex .txt
|
||||||
|
|
||||||
%.1 : %.pod
|
%.1 : %.pod
|
||||||
@@ -53,7 +43,7 @@ mostlyclean clean distclean maintainer-clean:
|
|||||||
|
|
||||||
%-doc.html : %.pod
|
%-doc.html : %.pod
|
||||||
pod2html --noindex $< | $(RTRIM) | $(DETAB2) > $@
|
pod2html --noindex $< | $(RTRIM) | $(DETAB2) > $@
|
||||||
@rm -f pod2htm*
|
@rm -f ./pod2htm*
|
||||||
test -s $@
|
test -s $@
|
||||||
|
|
||||||
%.man : %.1
|
%.man : %.1
|
||||||
@@ -72,11 +62,10 @@ mostlyclean clean distclean maintainer-clean:
|
|||||||
pod2text < $< | $(RTRIM) > $@
|
pod2text < $< | $(RTRIM) > $@
|
||||||
test -s $@
|
test -s $@
|
||||||
|
|
||||||
|
#***********************************************************************
|
||||||
###
|
# dependencies
|
||||||
### dependencies
|
#***********************************************************************
|
||||||
###
|
|
||||||
|
|
||||||
$(BUILT_SOURCES): $(top_srcdir)/src/version.h $(MAKEFILE_LIST)
|
$(BUILT_SOURCES): $(top_srcdir)/src/version.h $(MAKEFILE_LIST)
|
||||||
.DELETE_ON_ERROR: $(BUILT_SOURCES)
|
.DELETE_ON_ERROR: $(BUILT_SOURCES)
|
||||||
|
.PHONY: PHONY
|
||||||
|
|||||||
+1
-3
@@ -793,12 +793,10 @@ Jens Medoch <jssg@users.sourceforge.net></code></pre>
|
|||||||
|
|
||||||
<p>Copyright (C) 2002-2022 Jens Medoch</p>
|
<p>Copyright (C) 2002-2022 Jens Medoch</p>
|
||||||
|
|
||||||
<p>This program may be used freely, and you are welcome to redistribute it under certain conditions.</p>
|
<p><b>UPX</b> is distributed with full source code under the terms of the GNU General Public License v2+; either under the pure GPLv2+ (see the file COPYING), or (at your option) under the GPLv+2 with special exceptions and restrictions granting the free usage for all binaries including commercial programs (see the file LICENSE).</p>
|
||||||
|
|
||||||
<p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p>
|
<p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p>
|
||||||
|
|
||||||
<p><b>UPX</b> is distributed with full source code under the terms of the GNU General Public License v2+; either under the pure GPLv2+ (see the file COPYING), or (at your option) under the GPLv+2 with special exceptions and restrictions granting the free usage for commercial programs (see the file LICENSE).</p>
|
|
||||||
|
|
||||||
<p>You should have received a copy of the UPX License Agreements along with this program; see the files COPYING and LICENSE. If not, visit the UPX home page.</p>
|
<p>You should have received a copy of the UPX License Agreements along with this program; see the files COPYING and LICENSE. If not, visit the UPX home page.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+5
-8
@@ -826,19 +826,16 @@ COPYRIGHT
|
|||||||
|
|
||||||
Copyright (C) 2002-2022 Jens Medoch
|
Copyright (C) 2002-2022 Jens Medoch
|
||||||
|
|
||||||
This program may be used freely, and you are welcome to redistribute it
|
UPX is distributed with full source code under the terms of the GNU
|
||||||
under certain conditions.
|
General Public License v2+; either under the pure GPLv2+ (see the file
|
||||||
|
COPYING), or (at your option) under the GPLv+2 with special exceptions
|
||||||
|
and restrictions granting the free usage for all binaries including
|
||||||
|
commercial programs (see the file LICENSE).
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, but
|
This program is distributed in the hope that it will be useful, but
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
UPX is distributed with full source code under the terms of the GNU
|
|
||||||
General Public License v2+; either under the pure GPLv2+ (see the file
|
|
||||||
COPYING), or (at your option) under the GPLv+2 with special exceptions
|
|
||||||
and restrictions granting the free usage for commercial programs (see
|
|
||||||
the file LICENSE).
|
|
||||||
|
|
||||||
You should have received a copy of the UPX License Agreements along with
|
You should have received a copy of the UPX License Agreements along with
|
||||||
this program; see the files COPYING and LICENSE. If not, visit the UPX
|
this program; see the files COPYING and LICENSE. If not, visit the UPX
|
||||||
home page.
|
home page.
|
||||||
|
|||||||
@@ -133,7 +133,7 @@
|
|||||||
.\" ========================================================================
|
.\" ========================================================================
|
||||||
.\"
|
.\"
|
||||||
.IX Title "UPX 1"
|
.IX Title "UPX 1"
|
||||||
.TH UPX 1 "2022-10-27" "upx 3.99" " "
|
.TH UPX 1 "2022-11-16" "upx 4.0.1" " "
|
||||||
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
||||||
.\" way too many mistakes in technical documents.
|
.\" way too many mistakes in technical documents.
|
||||||
.if n .ad l
|
.if n .ad l
|
||||||
@@ -1027,20 +1027,16 @@ Copyright (C) 2000\-2022 John F. Reiser
|
|||||||
.PP
|
.PP
|
||||||
Copyright (C) 2002\-2022 Jens Medoch
|
Copyright (C) 2002\-2022 Jens Medoch
|
||||||
.PP
|
.PP
|
||||||
This program may be used freely, and you are welcome to
|
\&\fB\s-1UPX\s0\fR is distributed with full source code under the terms of the
|
||||||
redistribute it under certain conditions.
|
\&\s-1GNU\s0 General Public License v2+; either under the pure GPLv2+ (see
|
||||||
|
the file \s-1COPYING\s0), or (at your option) under the GPLv+2 with special
|
||||||
|
exceptions and restrictions granting the free usage for all binaries
|
||||||
|
including commercial programs (see the file \s-1LICENSE\s0).
|
||||||
.PP
|
.PP
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but \s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of
|
but \s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of
|
||||||
\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE.\s0
|
\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE.\s0
|
||||||
.PP
|
.PP
|
||||||
\&\fB\s-1UPX\s0\fR is distributed with full source code under the terms of the
|
|
||||||
\&\s-1GNU\s0 General Public License v2+;
|
|
||||||
either under the pure GPLv2+ (see the file \s-1COPYING\s0),
|
|
||||||
or (at your option) under the GPLv+2 with special exceptions and
|
|
||||||
restrictions granting the free usage for commercial
|
|
||||||
programs (see the file \s-1LICENSE\s0).
|
|
||||||
.PP
|
|
||||||
You should have received a copy of the \s-1UPX\s0 License Agreements along
|
You should have received a copy of the \s-1UPX\s0 License Agreements along
|
||||||
with this program; see the files \s-1COPYING\s0 and \s-1LICENSE.\s0 If not,
|
with this program; see the files \s-1COPYING\s0 and \s-1LICENSE.\s0 If not,
|
||||||
visit the \s-1UPX\s0 home page.
|
visit the \s-1UPX\s0 home page.
|
||||||
|
|||||||
+5
-9
@@ -940,20 +940,16 @@ Copyright (C) 2000-2022 John F. Reiser
|
|||||||
|
|
||||||
Copyright (C) 2002-2022 Jens Medoch
|
Copyright (C) 2002-2022 Jens Medoch
|
||||||
|
|
||||||
This program may be used freely, and you are welcome to
|
B<UPX> is distributed with full source code under the terms of the
|
||||||
redistribute it under certain conditions.
|
GNU General Public License v2+; either under the pure GPLv2+ (see
|
||||||
|
the file COPYING), or (at your option) under the GPLv+2 with special
|
||||||
|
exceptions and restrictions granting the free usage for all binaries
|
||||||
|
including commercial programs (see the file LICENSE).
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
B<UPX> is distributed with full source code under the terms of the
|
|
||||||
GNU General Public License v2+;
|
|
||||||
either under the pure GPLv2+ (see the file COPYING),
|
|
||||||
or (at your option) under the GPLv+2 with special exceptions and
|
|
||||||
restrictions granting the free usage for commercial
|
|
||||||
programs (see the file LICENSE).
|
|
||||||
|
|
||||||
You should have received a copy of the UPX License Agreements along
|
You should have received a copy of the UPX License Agreements along
|
||||||
with this program; see the files COPYING and LICENSE. If not,
|
with this program; see the files COPYING and LICENSE. If not,
|
||||||
visit the UPX home page.
|
visit the UPX home page.
|
||||||
|
|||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
#! /usr/bin/env bash
|
||||||
|
## vim:set ts=4 sw=4 et:
|
||||||
|
set -e; set -o pipefail
|
||||||
|
argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")"
|
||||||
|
|
||||||
|
# create the image from Dockerfile
|
||||||
|
# using a rootless Podman container
|
||||||
|
|
||||||
|
# NOTE: this image is based on rebuild-stubs-with-upx/upx-stubtools-20210104-vX,
|
||||||
|
# so you have to create that image first
|
||||||
|
# WARNING: we install many packages, so the resulting image needs A LOT of disk space!
|
||||||
|
image=upx-cross-compile-20221108-v7
|
||||||
|
|
||||||
|
podman build -t "$image" -f "$argv0dir/Dockerfile" "$argv0dir"
|
||||||
|
|
||||||
|
podman image list "$image"
|
||||||
|
podman image tree "$image"
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
#! /usr/bin/env bash
|
||||||
|
## vim:set ts=4 sw=4 et:
|
||||||
|
set -e; set -o pipefail
|
||||||
|
argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")"
|
||||||
|
|
||||||
|
# run an interactive shell in the image
|
||||||
|
# using a rootless Podman container
|
||||||
|
|
||||||
|
image=upx-cross-compile-20221108-v7
|
||||||
|
|
||||||
|
flags=( -ti --read-only --rm )
|
||||||
|
flags+=( --cap-drop=all ) # drop all capabilities
|
||||||
|
flags+=( --network=none ) # no network needed
|
||||||
|
flags+=( -e TERM="$TERM" ) # pass $TERM
|
||||||
|
if [[ 1 == 1 ]]; then
|
||||||
|
# run as user upx 2000:2000
|
||||||
|
flags+=( --user 2000 )
|
||||||
|
# map container users 0..999 to subuid-users 1..1000, and map container user 2000 to current host user
|
||||||
|
flags+=( --uidmap=0:1:1000 --uidmap=2000:0:1 )
|
||||||
|
# map container groups 0..999 to subgid-groups 1..1000, and map container group 2000 to current host group
|
||||||
|
flags+=( --gidmap=0:1:1000 --gidmap=2000:0:1 )
|
||||||
|
# NOTE: we mount the upx top-level directory read-write under /home/upx/src/upx
|
||||||
|
# INFO: SELinux users *may* have to add ":z" to the volume mount flags; check the docs!
|
||||||
|
flags+=( -v "${argv0dir}/../..:/home/upx/src/upx" )
|
||||||
|
flags+=( -w /home/upx/src/upx ) # set working directory
|
||||||
|
else
|
||||||
|
# run as user root 0:0
|
||||||
|
# ONLY FOR DEBUGGING THE IMAGE
|
||||||
|
# map container user/group 0 to current host user/group
|
||||||
|
flags+=( --user 0 )
|
||||||
|
fi
|
||||||
|
|
||||||
|
podman run "${flags[@]}" "$image" bash -l
|
||||||
|
|
||||||
|
# now we can cross-compile UPX for Windows:
|
||||||
|
# cd /home/upx/src/upx
|
||||||
|
# rm -rf ./build/release-cross-mingw64
|
||||||
|
# make build/release-cross-mingw64
|
||||||
|
|
||||||
|
# lots of other cross-compilers are installed; see "ls /usr/bin/*g++*"
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
# NOTE: this image is based on rebuild-stubs-with-upx/upx-stubtools-20210104-vX,
|
||||||
|
# so you have to create that image first
|
||||||
|
# WARNING: we install many packages, so the resulting image needs A LOT of disk space!
|
||||||
|
FROM localhost/upx-stubtools-20210104-v7
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
USER root
|
||||||
|
|
||||||
|
# Ubuntu 22.04
|
||||||
|
RUN apt-get update && apt-get upgrade -y \
|
||||||
|
&& apt-get install -y \
|
||||||
|
# Linux cross compilers
|
||||||
|
g++-aarch64-linux-gnu \
|
||||||
|
g++-alpha-linux-gnu \
|
||||||
|
g++-arm-linux-gnueabi \
|
||||||
|
g++-arm-linux-gnueabihf \
|
||||||
|
g++-hppa-linux-gnu \
|
||||||
|
g++-i686-linux-gnu \
|
||||||
|
g++-m68k-linux-gnu \
|
||||||
|
g++-mips-linux-gnu \
|
||||||
|
g++-mipsel-linux-gnu \
|
||||||
|
g++-mips64-linux-gnuabi64 \
|
||||||
|
g++-mips64el-linux-gnuabi64 \
|
||||||
|
g++-powerpc-linux-gnu \
|
||||||
|
g++-powerpc64-linux-gnu \
|
||||||
|
g++-powerpc64le-linux-gnu \
|
||||||
|
g++-riscv64-linux-gnu \
|
||||||
|
g++-s390x-linux-gnu \
|
||||||
|
g++-sh4-linux-gnu \
|
||||||
|
g++-sparc64-linux-gnu \
|
||||||
|
# Linux cross compilers - ILP32 on 64-bit CPUs
|
||||||
|
g++-x86-64-linux-gnux32 \
|
||||||
|
# Windows cross compilers
|
||||||
|
g++-mingw-w64-i686 \
|
||||||
|
g++-mingw-w64-x86-64 \
|
||||||
|
&& true
|
||||||
|
RUN apt-get install -y \
|
||||||
|
# clang-14 and tools
|
||||||
|
clang-14 clang-format-14 clang-tidy-14 clang-tools-14 lldb-14 llvm-14 \
|
||||||
|
# QEMU and Wine
|
||||||
|
qemu-system qemu-user wine wine32 \
|
||||||
|
# misc
|
||||||
|
gdb lsb-release valgrind \
|
||||||
|
&& true
|
||||||
|
|
||||||
|
# switch back to default user upx 2000:2000
|
||||||
|
USER upx
|
||||||
@@ -6,7 +6,7 @@ argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")"
|
|||||||
# create the image from Dockerfile
|
# create the image from Dockerfile
|
||||||
# using a rootless Podman container
|
# using a rootless Podman container
|
||||||
|
|
||||||
image=upx-stubtools-20210104-v5
|
image=upx-stubtools-20210104-v7
|
||||||
|
|
||||||
podman build -t "$image" -f "$argv0dir/Dockerfile" "$argv0dir"
|
podman build -t "$image" -f "$argv0dir/Dockerfile" "$argv0dir"
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")"
|
|||||||
# run an interactive shell in the image
|
# run an interactive shell in the image
|
||||||
# using a rootless Podman container
|
# using a rootless Podman container
|
||||||
|
|
||||||
image=upx-stubtools-20210104-v5
|
image=upx-stubtools-20210104-v7
|
||||||
|
|
||||||
flags=( -ti --read-only --rm )
|
flags=( -ti --read-only --rm )
|
||||||
flags+=( --cap-drop=all ) # drop all capabilities
|
flags+=( --cap-drop=all ) # drop all capabilities
|
||||||
@@ -15,14 +15,14 @@ flags+=( -e TERM="$TERM" ) # pass $TERM
|
|||||||
if [[ 1 == 1 ]]; then
|
if [[ 1 == 1 ]]; then
|
||||||
# run as user upx 2000:2000
|
# run as user upx 2000:2000
|
||||||
flags+=( --user 2000 )
|
flags+=( --user 2000 )
|
||||||
# map container user 0 to subuid-user 1, and map container user 2000 to current host user
|
# map container users 0..999 to subuid-users 1..1000, and map container user 2000 to current host user
|
||||||
flags+=( --uidmap=0:1:1 --uidmap=2000:0:1 )
|
flags+=( --uidmap=0:1:1000 --uidmap=2000:0:1 )
|
||||||
# map container group 0 to subgid-group 1, and map container group 2000 to current host group
|
# map container groups 0..999 to subgid-groups 1..1000, and map container group 2000 to current host group
|
||||||
flags+=( --gidmap=0:1:1 --gidmap=2000:0:1 )
|
flags+=( --gidmap=0:1:1000 --gidmap=2000:0:1 )
|
||||||
# NOTE: we mount the upx top-level directory read-write under /home/upx/src/upx
|
# NOTE: we mount the upx top-level directory read-write under /home/upx/src/upx
|
||||||
# INFO: SELinux users *may* have to add ":z" to the volume mount flags; check the docs!
|
# INFO: SELinux users *may* have to add ":z" to the volume mount flags; check the docs!
|
||||||
flags+=( -v "${argv0dir}/../..:/home/upx/src/upx" )
|
flags+=( -v "${argv0dir}/../..:/home/upx/src/upx" )
|
||||||
flags+=( -w /home/upx/src/upx ) # working directory
|
flags+=( -w /home/upx/src/upx ) # set working directory
|
||||||
else
|
else
|
||||||
# run as user root 0:0
|
# run as user root 0:0
|
||||||
# ONLY FOR DEBUGGING THE IMAGE
|
# ONLY FOR DEBUGGING THE IMAGE
|
||||||
@@ -44,3 +44,17 @@ podman run "${flags[@]}" "$image" bash -l
|
|||||||
# # make sure that the stub files did rebuild correctly:
|
# # make sure that the stub files did rebuild correctly:
|
||||||
# git status .
|
# git status .
|
||||||
# git diff .
|
# git diff .
|
||||||
|
|
||||||
|
# we can also build UPX in the container:
|
||||||
|
# cd /home/upx/src/upx
|
||||||
|
# rm -rf ./build/release
|
||||||
|
# make build/release
|
||||||
|
# # run tests
|
||||||
|
# ./build/release/upx --version
|
||||||
|
# make -C build/release test
|
||||||
|
|
||||||
|
# and we can also rebuild the UPX docs the container:
|
||||||
|
# cd /home/upx/src/upx
|
||||||
|
# make -C doc clean all
|
||||||
|
# git status doc
|
||||||
|
# git diff doc
|
||||||
|
|||||||
@@ -9,14 +9,14 @@ RUN dpkg --add-architecture i386 \
|
|||||||
aria2 ca-certificates git less libmpc3 libncurses5 make \
|
aria2 ca-certificates git less libmpc3 libncurses5 make \
|
||||||
ncurses-term perl-base python2-minimal wget xz-utils \
|
ncurses-term perl-base python2-minimal wget xz-utils \
|
||||||
libc6:i386 zlib1g:i386 \
|
libc6:i386 zlib1g:i386 \
|
||||||
# the following packages are not required for rebuilding the stubs,
|
# the following packages are not required for rebuilding the stubs, but
|
||||||
# but they do make the image more convenient and also allow building
|
# they do make the image much more convenient and also allow building
|
||||||
# the full UPX binary inside the container via CMake:
|
# the full UPX binary inside the container via CMake:
|
||||||
bzip2 cmake elfutils file g++ libzstd-dev lzop ninja-build patch \
|
7zip bzip2 cmake elfutils file g++ htop libzstd-dev lzip lzop ninja-build \
|
||||||
patchelf pax-utils rsync unzip vim zip zlib1g-dev zsh zstd \
|
p7zip patch patchelf pax-utils rsync unzip vim zip zlib1g-dev zsh zstd \
|
||||||
&& true
|
&& true
|
||||||
|
|
||||||
# manually install compat libs from Ubuntu 16.04
|
# manually install compat libs from Ubuntu 16.04; REQUIRED
|
||||||
RUN cd /root \
|
RUN cd /root \
|
||||||
&& aria2c --checksum=sha-256=2605f43f8047fc972855bb909f1dd7af761bbfd35ae559ad689b0d55a4236d69 \
|
&& aria2c --checksum=sha-256=2605f43f8047fc972855bb909f1dd7af761bbfd35ae559ad689b0d55a4236d69 \
|
||||||
'http://mirror.enzu.com/ubuntu/pool/main/g/gmp/libgmp10_6.1.0+dfsg-2_amd64.deb' \
|
'http://mirror.enzu.com/ubuntu/pool/main/g/gmp/libgmp10_6.1.0+dfsg-2_amd64.deb' \
|
||||||
@@ -29,7 +29,7 @@ RUN cd /root \
|
|||||||
&& ldconfig \
|
&& ldconfig \
|
||||||
&& true
|
&& true
|
||||||
|
|
||||||
# install upx-stubtools into /usr/local/bin/bin-upx-20210104
|
# install upx-stubtools into /usr/local/bin/bin-upx-20210104; REQUIRED
|
||||||
RUN cd /root \
|
RUN cd /root \
|
||||||
&& aria2c --checksum=sha-256=abcd8337cc656fe68d7bbb2ffe0f1e5ddce618688aa0e18c1ebcc40072843884 \
|
&& aria2c --checksum=sha-256=abcd8337cc656fe68d7bbb2ffe0f1e5ddce618688aa0e18c1ebcc40072843884 \
|
||||||
'https://github.com/upx/upx-stubtools/releases/download/v20210104/bin-upx-20210104.tar.xz' \
|
'https://github.com/upx/upx-stubtools/releases/download/v20210104/bin-upx-20210104.tar.xz' \
|
||||||
@@ -38,7 +38,7 @@ RUN cd /root \
|
|||||||
&& rm /root/bin-upx-20210104.tar.xz \
|
&& rm /root/bin-upx-20210104.tar.xz \
|
||||||
&& true
|
&& true
|
||||||
|
|
||||||
# install previous UPX versions into /usr/local/bin
|
# install pre-built binary UPX versions into /usr/local/bin; not required but convenient for testing
|
||||||
RUN cd /root \
|
RUN cd /root \
|
||||||
&& wget -q https://github.com/upx/upx/releases/download/v3.91/upx-3.91-amd64_linux.tar.bz2 \
|
&& wget -q https://github.com/upx/upx/releases/download/v3.91/upx-3.91-amd64_linux.tar.bz2 \
|
||||||
&& wget -q https://github.com/upx/upx/releases/download/v3.92/upx-3.92-amd64_linux.tar.xz \
|
&& wget -q https://github.com/upx/upx/releases/download/v3.92/upx-3.92-amd64_linux.tar.xz \
|
||||||
@@ -46,6 +46,7 @@ RUN cd /root \
|
|||||||
&& wget -q https://github.com/upx/upx/releases/download/v3.94/upx-3.94-amd64_linux.tar.xz \
|
&& wget -q https://github.com/upx/upx/releases/download/v3.94/upx-3.94-amd64_linux.tar.xz \
|
||||||
&& wget -q https://github.com/upx/upx/releases/download/v3.95/upx-3.95-amd64_linux.tar.xz \
|
&& wget -q https://github.com/upx/upx/releases/download/v3.95/upx-3.95-amd64_linux.tar.xz \
|
||||||
&& wget -q https://github.com/upx/upx/releases/download/v3.96/upx-3.96-amd64_linux.tar.xz \
|
&& wget -q https://github.com/upx/upx/releases/download/v3.96/upx-3.96-amd64_linux.tar.xz \
|
||||||
|
&& wget -q https://github.com/upx/upx/releases/download/v4.0.0/upx-4.0.0-amd64_linux.tar.xz \
|
||||||
&& for f in ./upx-*.tar.*; do tar -xoaf $f; done \
|
&& for f in ./upx-*.tar.*; do tar -xoaf $f; done \
|
||||||
&& rm ./upx-*.tar.* \
|
&& rm ./upx-*.tar.* \
|
||||||
&& d=upx-3.91-amd64_linux; ./$d/upx -d $d/upx -o /usr/local/bin/upx-3.91 \
|
&& d=upx-3.91-amd64_linux; ./$d/upx -d $d/upx -o /usr/local/bin/upx-3.91 \
|
||||||
@@ -54,6 +55,7 @@ RUN cd /root \
|
|||||||
&& d=upx-3.94-amd64_linux; ./$d/upx -d $d/upx -o /usr/local/bin/upx-3.94 \
|
&& d=upx-3.94-amd64_linux; ./$d/upx -d $d/upx -o /usr/local/bin/upx-3.94 \
|
||||||
&& d=upx-3.95-amd64_linux; ./$d/upx -d $d/upx -o /usr/local/bin/upx-3.95 \
|
&& d=upx-3.95-amd64_linux; ./$d/upx -d $d/upx -o /usr/local/bin/upx-3.95 \
|
||||||
&& d=upx-3.96-amd64_linux; ./$d/upx -d $d/upx -o /usr/local/bin/upx-3.96 \
|
&& d=upx-3.96-amd64_linux; ./$d/upx -d $d/upx -o /usr/local/bin/upx-3.96 \
|
||||||
|
&& d=upx-4.0.0-amd64_linux; ./$d/upx -d $d/upx -o /usr/local/bin/upx-4.0.0 \
|
||||||
&& rm -rf ./upx-*linux \
|
&& rm -rf ./upx-*linux \
|
||||||
&& true
|
&& true
|
||||||
|
|
||||||
|
|||||||
+15
-15
@@ -21,19 +21,21 @@ endif
|
|||||||
# redirect to top-level CMake build
|
# redirect to top-level CMake build
|
||||||
#
|
#
|
||||||
|
|
||||||
default: debug
|
.DEFAULT_GOAL = build/debug
|
||||||
all: debug release
|
|
||||||
debug: $(top_srcdir)/build/debug/upx
|
|
||||||
release: $(top_srcdir)/build/release/upx
|
|
||||||
|
|
||||||
$(top_srcdir)/build/debug/upx:
|
build/debug: $(top_srcdir)/build/debug/upx
|
||||||
|
build/release: $(top_srcdir)/build/release/upx
|
||||||
|
# shortcuts
|
||||||
|
all: build/debug build/release
|
||||||
|
debug: build/debug
|
||||||
|
release: build/release
|
||||||
|
|
||||||
|
$(top_srcdir)/build/debug/upx: PHONY
|
||||||
$(MAKE) -C $(top_srcdir) build/debug
|
$(MAKE) -C $(top_srcdir) build/debug
|
||||||
$(top_srcdir)/build/release/upx:
|
$(top_srcdir)/build/release/upx: PHONY
|
||||||
$(MAKE) -C $(top_srcdir) build/release
|
$(MAKE) -C $(top_srcdir) build/release
|
||||||
|
|
||||||
.PHONY: default all debug release
|
.PHONY: PHONY
|
||||||
.PHONY: $(top_srcdir)/build/debug/upx
|
|
||||||
.PHONY: $(top_srcdir)/build/release/upx
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# "make run-testsuite"
|
# "make run-testsuite"
|
||||||
@@ -60,9 +62,8 @@ ifneq ($(wildcard $(top_srcdir)/.github/travis_testsuite_1.sh),)
|
|||||||
run-testsuite: export upx_exe := $(top_srcdir)/build/release/upx
|
run-testsuite: export upx_exe := $(top_srcdir)/build/release/upx
|
||||||
run-testsuite: export upx_testsuite_SRCDIR := $(upx_testsuite_SRCDIR)
|
run-testsuite: export upx_testsuite_SRCDIR := $(upx_testsuite_SRCDIR)
|
||||||
run-testsuite: export upx_testsuite_BUILDDIR := ./tmp-testsuite
|
run-testsuite: export upx_testsuite_BUILDDIR := ./tmp-testsuite
|
||||||
run-testsuite: $(top_srcdir)/build/release/upx
|
run-testsuite: $(top_srcdir)/build/release/upx PHONY
|
||||||
time -p bash $(top_srcdir)/.github/travis_testsuite_1.sh
|
time -p bash $(top_srcdir)/.github/travis_testsuite_1.sh
|
||||||
.PHONY: run-testsuite
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -73,6 +74,7 @@ endif
|
|||||||
# automatically format some C++ source code files
|
# automatically format some C++ source code files
|
||||||
ifeq ($(shell uname),Linux)
|
ifeq ($(shell uname),Linux)
|
||||||
CLANG_FORMAT_FILES += bele.h bele_policy.h
|
CLANG_FORMAT_FILES += bele.h bele_policy.h
|
||||||
|
CLANG_FORMAT_FILES += compress_lzma.cpp compress_ucl.cpp compress_zlib.cpp
|
||||||
CLANG_FORMAT_FILES += except.cpp except.h
|
CLANG_FORMAT_FILES += except.cpp except.h
|
||||||
CLANG_FORMAT_FILES += file.cpp file.h
|
CLANG_FORMAT_FILES += file.cpp file.h
|
||||||
CLANG_FORMAT_FILES += linker.cpp linker.h packhead.cpp packmast.cpp packmast.h
|
CLANG_FORMAT_FILES += linker.cpp linker.h packhead.cpp packmast.cpp packmast.h
|
||||||
@@ -81,9 +83,8 @@ CLANG_FORMAT_FILES += p_tos.cpp p_tos.h
|
|||||||
CLANG_FORMAT_FILES += s_djgpp2.cpp s_object.cpp s_vcsa.cpp s_win32.cpp screen.h
|
CLANG_FORMAT_FILES += s_djgpp2.cpp s_object.cpp s_vcsa.cpp s_win32.cpp screen.h
|
||||||
CLANG_FORMAT_FILES += ui.cpp ui.h work.cpp
|
CLANG_FORMAT_FILES += ui.cpp ui.h work.cpp
|
||||||
CLANG_FORMAT_FILES += $(wildcard util/[a-ln-z]*.[ch]* util/mem*.[ch]*)
|
CLANG_FORMAT_FILES += $(wildcard util/[a-ln-z]*.[ch]* util/mem*.[ch]*)
|
||||||
clang-format:
|
clang-format: PHONY
|
||||||
$(top_srcdir)/misc/scripts/upx-clang-format -i $(addprefix $(top_srcdir)/src/,$(sort $(CLANG_FORMAT_FILES)))
|
$(top_srcdir)/misc/scripts/upx-clang-format -i $(addprefix $(top_srcdir)/src/,$(sort $(CLANG_FORMAT_FILES)))
|
||||||
.PHONY: clang-format
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -96,8 +97,7 @@ CHECK_WHITESPACE = $(top_srcdir)/misc/scripts/check_whitespace.sh $(top_srcdir)
|
|||||||
ifneq ($(wildcard $(top_srcdir)/.git/.),)
|
ifneq ($(wildcard $(top_srcdir)/.git/.),)
|
||||||
CHECK_WHITESPACE = $(top_srcdir)/misc/scripts/check_whitespace_git.sh $(top_srcdir)
|
CHECK_WHITESPACE = $(top_srcdir)/misc/scripts/check_whitespace_git.sh $(top_srcdir)
|
||||||
endif
|
endif
|
||||||
check-whitespace : ; $(CHECK_WHITESPACE)
|
check-whitespace : PHONY ; $(CHECK_WHITESPACE)
|
||||||
endif
|
endif
|
||||||
.PHONY: check-whitespace
|
|
||||||
|
|
||||||
# vim:set ts=8 sw=8 noet:
|
# vim:set ts=8 sw=8 noet:
|
||||||
|
|||||||
+145
-133
@@ -25,30 +25,24 @@
|
|||||||
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
#include "compress.h"
|
#include "compress.h"
|
||||||
#include "util/membuffer.h"
|
#include "util/membuffer.h"
|
||||||
|
|
||||||
#if (ACC_CC_CLANG)
|
#if (ACC_CC_CLANG)
|
||||||
# pragma clang diagnostic ignored "-Wshadow"
|
#pragma clang diagnostic ignored "-Wshadow"
|
||||||
#endif
|
#endif
|
||||||
#if (ACC_CC_GNUC >= 0x040200)
|
#if (ACC_CC_GNUC >= 0x040200)
|
||||||
# pragma GCC diagnostic ignored "-Wshadow"
|
#pragma GCC diagnostic ignored "-Wshadow"
|
||||||
#endif
|
#endif
|
||||||
#if (ACC_CC_MSC)
|
#if (ACC_CC_MSC)
|
||||||
# pragma warning(disable: 4456) // -Wno-shadow
|
#pragma warning(disable : 4456) // -Wno-shadow
|
||||||
#endif
|
#endif
|
||||||
#if (ACC_CC_MSC && (_MSC_VER < 1900))
|
#if (ACC_CC_MSC && (_MSC_VER < 1900))
|
||||||
# pragma warning(disable: 4127) // warning C4127: conditional expression is constant
|
#pragma warning(disable : 4127) // warning C4127: conditional expression is constant
|
||||||
#endif
|
|
||||||
#if (ACC_CC_INTELC_GNUC)
|
|
||||||
# pragma warning(error: 424) // #424: extra ";" ignored
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void lzma_compress_config_t::reset() {
|
||||||
void lzma_compress_config_t::reset()
|
|
||||||
{
|
|
||||||
pos_bits.reset();
|
pos_bits.reset();
|
||||||
lit_pos_bits.reset();
|
lit_pos_bits.reset();
|
||||||
lit_context_bits.reset();
|
lit_context_bits.reset();
|
||||||
@@ -60,7 +54,6 @@ void lzma_compress_config_t::reset()
|
|||||||
max_num_probs = 0;
|
max_num_probs = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// INFO: the LZMA SDK is covered by a permissive license which allows
|
// INFO: the LZMA SDK is covered by a permissive license which allows
|
||||||
// using unmodified LZMA source code in UPX and the UPX stubs.
|
// using unmodified LZMA source code in UPX and the UPX stubs.
|
||||||
// See SPECIAL EXCEPTION below.
|
// See SPECIAL EXCEPTION below.
|
||||||
@@ -97,21 +90,18 @@ void lzma_compress_config_t::reset()
|
|||||||
// SPECIAL EXCEPTION allows you to use LZMA SDK in applications with closed code,
|
// SPECIAL EXCEPTION allows you to use LZMA SDK in applications with closed code,
|
||||||
// while you keep LZMA SDK code unmodified.
|
// while you keep LZMA SDK code unmodified.
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// compress defaults
|
// compress defaults
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
static int prepare(lzma_compress_result_t *res,
|
static bool prepare_result(lzma_compress_result_t *res, unsigned src_len, int method, int level,
|
||||||
unsigned src_len, int method, int level,
|
const lzma_compress_config_t *lcconf) {
|
||||||
const lzma_compress_config_t *lcconf)
|
|
||||||
{
|
|
||||||
// setup defaults
|
// setup defaults
|
||||||
res->pos_bits = 2; // 0 .. 4
|
res->pos_bits = 2; // 0 .. 4
|
||||||
res->lit_pos_bits = 0; // 0 .. 4
|
res->lit_pos_bits = 0; // 0 .. 4
|
||||||
res->lit_context_bits = 3; // 0 .. 8
|
res->lit_context_bits = 3; // 0 .. 8
|
||||||
res->dict_size = 4 * 1024 * 1024; // 1 .. 2**30
|
res->dict_size = 4 * 1024 * 1024; // 1 .. 2**30
|
||||||
res->fast_mode = 2;
|
res->fast_mode = 2; // 0 .. 2
|
||||||
res->num_fast_bytes = 64; // 5 .. 273
|
res->num_fast_bytes = 64; // 5 .. 273
|
||||||
res->match_finder_cycles = 0;
|
res->match_finder_cycles = 0;
|
||||||
// UPX overrides
|
// UPX overrides
|
||||||
@@ -135,8 +125,7 @@ static int prepare(lzma_compress_result_t *res,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// TODO: tune these settings according to level
|
// TODO: tune these settings according to level
|
||||||
switch (level)
|
switch (level) {
|
||||||
{
|
|
||||||
case 1:
|
case 1:
|
||||||
res->dict_size = 256 * 1024;
|
res->dict_size = 256 * 1024;
|
||||||
res->fast_mode = 0;
|
res->fast_mode = 0;
|
||||||
@@ -169,8 +158,7 @@ static int prepare(lzma_compress_result_t *res,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// cconf overrides
|
// cconf overrides
|
||||||
if (lcconf)
|
if (lcconf) {
|
||||||
{
|
|
||||||
oassign(res->pos_bits, lcconf->pos_bits);
|
oassign(res->pos_bits, lcconf->pos_bits);
|
||||||
oassign(res->lit_pos_bits, lcconf->lit_pos_bits);
|
oassign(res->lit_pos_bits, lcconf->lit_pos_bits);
|
||||||
oassign(res->lit_context_bits, lcconf->lit_context_bits);
|
oassign(res->lit_context_bits, lcconf->lit_context_bits);
|
||||||
@@ -183,21 +171,16 @@ static int prepare(lzma_compress_result_t *res,
|
|||||||
res->dict_size = src_len;
|
res->dict_size = src_len;
|
||||||
|
|
||||||
// limit num_probs
|
// limit num_probs
|
||||||
if (lcconf && lcconf->max_num_probs)
|
if (lcconf && lcconf->max_num_probs) {
|
||||||
{
|
for (;;) {
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
unsigned n = 1846 + (768u << (res->lit_context_bits + res->lit_pos_bits));
|
unsigned n = 1846 + (768u << (res->lit_context_bits + res->lit_pos_bits));
|
||||||
if (n <= lcconf->max_num_probs)
|
if (n <= lcconf->max_num_probs)
|
||||||
break;
|
break;
|
||||||
if (res->lit_pos_bits > res->lit_context_bits)
|
if (res->lit_pos_bits > res->lit_context_bits) {
|
||||||
{
|
|
||||||
if (res->lit_pos_bits == 0)
|
if (res->lit_pos_bits == 0)
|
||||||
goto error;
|
goto error;
|
||||||
res->lit_pos_bits -= 1;
|
res->lit_pos_bits -= 1;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
if (res->lit_context_bits == 0)
|
if (res->lit_context_bits == 0)
|
||||||
goto error;
|
goto error;
|
||||||
res->lit_context_bits -= 1;
|
res->lit_context_bits -= 1;
|
||||||
@@ -212,14 +195,14 @@ static int prepare(lzma_compress_result_t *res,
|
|||||||
lzma_compress_config_t::num_fast_bytes_t::assertValue(res->num_fast_bytes);
|
lzma_compress_config_t::num_fast_bytes_t::assertValue(res->num_fast_bytes);
|
||||||
|
|
||||||
res->num_probs = 1846 + (768u << (res->lit_context_bits + res->lit_pos_bits));
|
res->num_probs = 1846 + (768u << (res->lit_context_bits + res->lit_pos_bits));
|
||||||
//printf("\nlzma_compress config: %u %u %u %u %u\n", res->pos_bits, res->lit_pos_bits, res->lit_context_bits, res->dict_size, res->num_probs);
|
// printf("\nlzma_compress config: %u %u %u %u %u\n", res->pos_bits, res->lit_pos_bits,
|
||||||
return 0;
|
// res->lit_context_bits, res->dict_size, res->num_probs);
|
||||||
|
return true;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
return -1;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// compress - cruft because of pseudo-COM layer
|
// compress - cruft because of pseudo-COM layer
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
@@ -238,69 +221,80 @@ error:
|
|||||||
|
|
||||||
namespace MyLzma {
|
namespace MyLzma {
|
||||||
|
|
||||||
struct InStream: public ISequentialInStream, public CMyUnknownImp
|
struct InStream final : public ISequentialInStream, public CMyUnknownImp {
|
||||||
{
|
virtual ~InStream() {}
|
||||||
virtual ~InStream() { }
|
|
||||||
MY_UNKNOWN_IMP
|
MY_UNKNOWN_IMP
|
||||||
const Byte *b_buf; size_t b_size; size_t b_pos;
|
const Byte *b_buf = nullptr;
|
||||||
|
size_t b_size;
|
||||||
|
size_t b_pos;
|
||||||
void Init(const Byte *data, size_t size) {
|
void Init(const Byte *data, size_t size) {
|
||||||
b_buf = data; b_size = size; b_pos = 0;
|
b_buf = data;
|
||||||
|
b_size = size;
|
||||||
|
b_pos = 0;
|
||||||
}
|
}
|
||||||
STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize) override;
|
STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
STDMETHODIMP InStream::Read(void *data, UInt32 size, UInt32 *processedSize)
|
STDMETHODIMP InStream::Read(void *data, UInt32 size, UInt32 *processedSize) {
|
||||||
{
|
|
||||||
size_t remain = b_size - b_pos;
|
size_t remain = b_size - b_pos;
|
||||||
if (size > remain) size = (UInt32) remain;
|
if (size > remain)
|
||||||
|
size = (UInt32) remain;
|
||||||
memmove(data, b_buf + b_pos, size);
|
memmove(data, b_buf + b_pos, size);
|
||||||
b_pos += size;
|
b_pos += size;
|
||||||
if (processedSize != nullptr) *processedSize = size;
|
if (processedSize != nullptr)
|
||||||
|
*processedSize = size;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct OutStream : public ISequentialOutStream, public CMyUnknownImp
|
struct OutStream final : public ISequentialOutStream, public CMyUnknownImp {
|
||||||
{
|
virtual ~OutStream() {}
|
||||||
virtual ~OutStream() { }
|
|
||||||
MY_UNKNOWN_IMP
|
MY_UNKNOWN_IMP
|
||||||
Byte *b_buf; size_t b_size; size_t b_pos; bool overflow;
|
Byte *b_buf = nullptr;
|
||||||
|
size_t b_size;
|
||||||
|
size_t b_pos;
|
||||||
|
bool overflow;
|
||||||
void Init(Byte *data, size_t size) {
|
void Init(Byte *data, size_t size) {
|
||||||
b_buf = data; b_size = size; b_pos = 0; overflow = false;
|
b_buf = data;
|
||||||
|
b_size = size;
|
||||||
|
b_pos = 0;
|
||||||
|
overflow = false;
|
||||||
}
|
}
|
||||||
HRESULT WriteByte(Byte c) {
|
HRESULT WriteByte(Byte c) {
|
||||||
if (b_pos >= b_size) { overflow = true; return E_FAIL; }
|
if (b_pos >= b_size) {
|
||||||
|
overflow = true;
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
b_buf[b_pos++] = c;
|
b_buf[b_pos++] = c;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize) override;
|
STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
STDMETHODIMP OutStream::Write(const void *data, UInt32 size, UInt32 *processedSize)
|
STDMETHODIMP OutStream::Write(const void *data, UInt32 size, UInt32 *processedSize) {
|
||||||
{
|
|
||||||
size_t remain = b_size - b_pos;
|
size_t remain = b_size - b_pos;
|
||||||
if (size > remain) size = (UInt32) remain, overflow = true;
|
if (size > remain)
|
||||||
|
size = (UInt32) remain, overflow = true;
|
||||||
memmove(b_buf + b_pos, data, size);
|
memmove(b_buf + b_pos, data, size);
|
||||||
b_pos += size;
|
b_pos += size;
|
||||||
if (processedSize != nullptr) *processedSize = size;
|
if (processedSize != nullptr)
|
||||||
|
*processedSize = size;
|
||||||
return overflow ? E_FAIL : S_OK;
|
return overflow ? E_FAIL : S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ProgressInfo : public ICompressProgressInfo, public CMyUnknownImp
|
struct ProgressInfo final : public ICompressProgressInfo, public CMyUnknownImp {
|
||||||
{
|
virtual ~ProgressInfo() {}
|
||||||
virtual ~ProgressInfo() { }
|
|
||||||
MY_UNKNOWN_IMP
|
MY_UNKNOWN_IMP
|
||||||
STDMETHOD(SetRatioInfo)(const UInt64 *inSize, const UInt64 *outSize) override;
|
STDMETHOD(SetRatioInfo)(const UInt64 *inSize, const UInt64 *outSize) override;
|
||||||
upx_callback_p cb;
|
upx_callback_p cb = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
STDMETHODIMP ProgressInfo::SetRatioInfo(const UInt64 *inSize, const UInt64 *outSize)
|
STDMETHODIMP ProgressInfo::SetRatioInfo(const UInt64 *inSize, const UInt64 *outSize) {
|
||||||
{
|
|
||||||
if (cb && cb->nprogress)
|
if (cb && cb->nprogress)
|
||||||
cb->nprogress(cb, (unsigned) *inSize, (unsigned) *outSize);
|
cb->nprogress(cb, (unsigned) *inSize, (unsigned) *outSize);
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace MyLzma
|
||||||
|
|
||||||
#include <lzma-sdk/C/Common/Alloc.cpp>
|
#include <lzma-sdk/C/Common/Alloc.cpp>
|
||||||
#include <lzma-sdk/C/Common/CRC.cpp>
|
#include <lzma-sdk/C/Common/CRC.cpp>
|
||||||
@@ -314,29 +308,27 @@ STDMETHODIMP ProgressInfo::SetRatioInfo(const UInt64 *inSize, const UInt64 *outS
|
|||||||
#include <lzma-sdk/C/7zip/Compress/RangeCoder/RangeCoderBit.cpp>
|
#include <lzma-sdk/C/7zip/Compress/RangeCoder/RangeCoderBit.cpp>
|
||||||
#undef RC_NORMALIZE
|
#undef RC_NORMALIZE
|
||||||
|
|
||||||
|
int upx_lzma_compress(const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned *dst_len,
|
||||||
int upx_lzma_compress ( const upx_bytep src, unsigned src_len,
|
upx_callback_p cb, int method, int level,
|
||||||
upx_bytep dst, unsigned* dst_len,
|
const upx_compress_config_t *cconf_parm, upx_compress_result_t *cresult) {
|
||||||
upx_callback_p cb,
|
|
||||||
int method, int level,
|
|
||||||
const upx_compress_config_t *cconf_parm,
|
|
||||||
upx_compress_result_t *cresult )
|
|
||||||
{
|
|
||||||
assert(M_IS_LZMA(method));
|
assert(M_IS_LZMA(method));
|
||||||
assert(level > 0); assert(cresult != nullptr);
|
assert(level > 0);
|
||||||
|
assert(cresult != nullptr);
|
||||||
|
|
||||||
int r = UPX_E_ERROR;
|
int r = UPX_E_ERROR;
|
||||||
HRESULT rh;
|
HRESULT rh;
|
||||||
const lzma_compress_config_t *lcconf = cconf_parm ? &cconf_parm->conf_lzma : nullptr;
|
const lzma_compress_config_t *const lcconf = cconf_parm ? &cconf_parm->conf_lzma : nullptr;
|
||||||
lzma_compress_result_t *res = &cresult->result_lzma;
|
lzma_compress_result_t *const res = &cresult->result_lzma;
|
||||||
|
|
||||||
MyLzma::InStream is; is.AddRef();
|
MyLzma::InStream is;
|
||||||
MyLzma::OutStream os; os.AddRef();
|
is.AddRef();
|
||||||
is.Init(src, src_len);
|
is.Init(src, src_len);
|
||||||
|
MyLzma::OutStream os;
|
||||||
|
os.AddRef();
|
||||||
os.Init(dst, *dst_len);
|
os.Init(dst, *dst_len);
|
||||||
|
MyLzma::ProgressInfo progress;
|
||||||
MyLzma::ProgressInfo progress; progress.AddRef();
|
progress.AddRef();
|
||||||
progress.cb = cb;
|
progress.cb = cb; // progress.Init()
|
||||||
|
|
||||||
NCompress::NLZMA::CEncoder enc;
|
NCompress::NLZMA::CEncoder enc;
|
||||||
const PROPID propIDs[8] = {
|
const PROPID propIDs[8] = {
|
||||||
@@ -351,13 +343,10 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len,
|
|||||||
};
|
};
|
||||||
PROPVARIANT pr[8];
|
PROPVARIANT pr[8];
|
||||||
const unsigned nprops = 8;
|
const unsigned nprops = 8;
|
||||||
static const wchar_t matchfinder[] = L"BT4";
|
if (!prepare_result(res, src_len, method, level, lcconf))
|
||||||
assert(NCompress::NLZMA::FindMatchFinder(matchfinder) >= 0);
|
|
||||||
pr[7].vt = VT_BSTR; pr[7].bstrVal = ACC_PCAST(BSTR, ACC_UNCONST_CAST(wchar_t *, matchfinder));
|
|
||||||
pr[0].vt = pr[1].vt = pr[2].vt = pr[3].vt = VT_UI4;
|
|
||||||
pr[4].vt = pr[5].vt = pr[6].vt = VT_UI4;
|
|
||||||
if (prepare(res, src_len, method, level, lcconf) != 0)
|
|
||||||
goto error;
|
goto error;
|
||||||
|
pr[0].vt = pr[1].vt = pr[2].vt = pr[3].vt = pr[4].vt = pr[5].vt = pr[6].vt = VT_UI4;
|
||||||
|
pr[7].vt = VT_BSTR;
|
||||||
pr[0].uintVal = res->pos_bits;
|
pr[0].uintVal = res->pos_bits;
|
||||||
pr[1].uintVal = res->lit_pos_bits;
|
pr[1].uintVal = res->lit_pos_bits;
|
||||||
pr[2].uintVal = res->lit_context_bits;
|
pr[2].uintVal = res->lit_context_bits;
|
||||||
@@ -365,25 +354,31 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len,
|
|||||||
pr[4].uintVal = res->fast_mode;
|
pr[4].uintVal = res->fast_mode;
|
||||||
pr[5].uintVal = res->num_fast_bytes;
|
pr[5].uintVal = res->num_fast_bytes;
|
||||||
pr[6].uintVal = res->match_finder_cycles;
|
pr[6].uintVal = res->match_finder_cycles;
|
||||||
|
static const wchar_t matchfinder[] = L"BT4";
|
||||||
|
assert(NCompress::NLZMA::FindMatchFinder(matchfinder) >= 0);
|
||||||
|
pr[7].bstrVal = ACC_PCAST(BSTR, ACC_UNCONST_CAST(wchar_t *, matchfinder));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
if (enc.SetCoderProperties(propIDs, pr, nprops) != S_OK)
|
if (enc.SetCoderProperties(propIDs, pr, nprops) != S_OK)
|
||||||
goto error;
|
goto error;
|
||||||
|
// encode properties in LZMA-style (5 bytes)
|
||||||
if (enc.WriteCoderProperties(&os) != S_OK)
|
if (enc.WriteCoderProperties(&os) != S_OK)
|
||||||
goto error;
|
goto error;
|
||||||
if (os.overflow) {
|
if (os.overflow) {
|
||||||
//r = UPX_E_OUTPUT_OVERRUN;
|
// r = UPX_E_OUTPUT_OVERRUN;
|
||||||
r = UPX_E_NOT_COMPRESSIBLE;
|
r = UPX_E_NOT_COMPRESSIBLE;
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
assert(os.b_pos == 5);
|
assert(os.b_pos == 5);
|
||||||
|
|
||||||
|
// reset and encode properties in UPX-style (2 bytes)
|
||||||
os.b_pos = 0;
|
os.b_pos = 0;
|
||||||
// extra stuff in first byte: 5 high bits convenience for stub decompressor
|
// UPX extra stuff in first byte: 5 high bits convenience for stub decompressor
|
||||||
unsigned t = res->lit_context_bits + res->lit_pos_bits;
|
unsigned t = res->lit_context_bits + res->lit_pos_bits;
|
||||||
os.WriteByte(Byte((t << 3) | res->pos_bits));
|
os.WriteByte(Byte((t << 3) | res->pos_bits));
|
||||||
os.WriteByte(Byte((res->lit_pos_bits << 4) | (res->lit_context_bits)));
|
os.WriteByte(Byte((res->lit_pos_bits << 4) | (res->lit_context_bits)));
|
||||||
|
|
||||||
|
// compress
|
||||||
rh = enc.Code(&is, &os, nullptr, nullptr, &progress);
|
rh = enc.Code(&is, &os, nullptr, nullptr, &progress);
|
||||||
|
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -394,26 +389,24 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len,
|
|||||||
assert(os.b_pos <= *dst_len);
|
assert(os.b_pos <= *dst_len);
|
||||||
if (rh == E_OUTOFMEMORY)
|
if (rh == E_OUTOFMEMORY)
|
||||||
r = UPX_E_OUT_OF_MEMORY;
|
r = UPX_E_OUT_OF_MEMORY;
|
||||||
else if (os.overflow)
|
else if (os.overflow) {
|
||||||
{
|
|
||||||
assert(os.b_pos == *dst_len);
|
assert(os.b_pos == *dst_len);
|
||||||
//r = UPX_E_OUTPUT_OVERRUN;
|
// r = UPX_E_OUTPUT_OVERRUN;
|
||||||
r = UPX_E_NOT_COMPRESSIBLE;
|
r = UPX_E_NOT_COMPRESSIBLE;
|
||||||
}
|
} else if (rh == S_OK) {
|
||||||
else if (rh == S_OK)
|
|
||||||
{
|
|
||||||
assert(is.b_pos == src_len);
|
assert(is.b_pos == src_len);
|
||||||
r = UPX_E_OK;
|
r = UPX_E_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
error:
|
error:
|
||||||
*dst_len = (unsigned) os.b_pos;
|
*dst_len = (unsigned) os.b_pos;
|
||||||
//printf("\nlzma_compress: %d: %u %u %u %u %u, %u - > %u\n", r, res->pos_bits, res->lit_pos_bits, res->lit_context_bits, res->dict_size, res->num_probs, src_len, *dst_len);
|
// printf("\nlzma_compress: %d: %u %u %u %u %u, %u - > %u\n", r, res->pos_bits,
|
||||||
//printf("%u %u %u\n", is.__m_RefCount, os.__m_RefCount, progress.__m_RefCount);
|
// res->lit_pos_bits,
|
||||||
|
// res->lit_context_bits, res->dict_size, res->num_probs, src_len, *dst_len);
|
||||||
|
// printf("%u %u %u\n", is.__m_RefCount, os.__m_RefCount, progress.__m_RefCount);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// decompress
|
// decompress
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
@@ -425,60 +418,67 @@ error:
|
|||||||
#include <lzma-sdk/C/7zip/Compress/LZMA_C/LzmaDecode.h>
|
#include <lzma-sdk/C/7zip/Compress/LZMA_C/LzmaDecode.h>
|
||||||
#include <lzma-sdk/C/7zip/Compress/LZMA_C/LzmaDecode.c>
|
#include <lzma-sdk/C/7zip/Compress/LZMA_C/LzmaDecode.c>
|
||||||
|
|
||||||
int upx_lzma_decompress ( const upx_bytep src, unsigned src_len,
|
int upx_lzma_decompress(const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned *dst_len,
|
||||||
upx_bytep dst, unsigned* dst_len,
|
int method, const upx_compress_result_t *cresult) {
|
||||||
int method,
|
|
||||||
const upx_compress_result_t *cresult )
|
|
||||||
{
|
|
||||||
assert(M_IS_LZMA(method));
|
assert(M_IS_LZMA(method));
|
||||||
// see res->num_probs above
|
// see res->num_probs above
|
||||||
COMPILE_TIME_ASSERT(sizeof(CProb) == 2)
|
COMPILE_TIME_ASSERT(sizeof(CProb) == 2)
|
||||||
COMPILE_TIME_ASSERT(LZMA_BASE_SIZE == 1846)
|
COMPILE_TIME_ASSERT(LZMA_BASE_SIZE == 1846)
|
||||||
COMPILE_TIME_ASSERT(LZMA_LIT_SIZE == 768)
|
COMPILE_TIME_ASSERT(LZMA_LIT_SIZE == 768)
|
||||||
|
|
||||||
CLzmaDecoderState s; memset(&s, 0, sizeof(s));
|
CLzmaDecoderState s;
|
||||||
|
memset(&s, 0, sizeof(s));
|
||||||
SizeT src_out = 0, dst_out = 0;
|
SizeT src_out = 0, dst_out = 0;
|
||||||
int r = UPX_E_ERROR;
|
int r = UPX_E_ERROR;
|
||||||
int rh;
|
int rh;
|
||||||
|
|
||||||
if (src_len < 3)
|
// decode UPX-style properties (2 bytes)
|
||||||
|
if (src_len < 3) {
|
||||||
|
r = UPX_E_INPUT_OVERRUN;
|
||||||
goto error;
|
goto error;
|
||||||
|
}
|
||||||
s.Properties.pb = src[0] & 7;
|
s.Properties.pb = src[0] & 7;
|
||||||
s.Properties.lp = (src[1] >> 4);
|
s.Properties.lp = (src[1] >> 4);
|
||||||
s.Properties.lc = src[1] & 15;
|
s.Properties.lc = src[1] & 15;
|
||||||
if (s.Properties.pb >= 5) goto error;
|
if (s.Properties.pb >= 5)
|
||||||
if (s.Properties.lp >= 5) goto error;
|
goto error;
|
||||||
if (s.Properties.lc >= 9) goto error;
|
if (s.Properties.lp >= 5)
|
||||||
// extra
|
goto error;
|
||||||
if ((src[0] >> 3) != s.Properties.lc + s.Properties.lp) goto error;
|
if (s.Properties.lc >= 9)
|
||||||
src += 2; src_len -= 2;
|
goto error;
|
||||||
|
// UPX extra stuff in first byte: 5 high bits convenience for stub decompressor
|
||||||
|
if ((src[0] >> 3) != s.Properties.lc + s.Properties.lp)
|
||||||
|
goto error;
|
||||||
|
src += 2;
|
||||||
|
src_len -= 2;
|
||||||
|
|
||||||
if (cresult)
|
if (cresult) {
|
||||||
{
|
|
||||||
assert(cresult->method == method);
|
assert(cresult->method == method);
|
||||||
assert(cresult->result_lzma.pos_bits == (unsigned) s.Properties.pb);
|
assert(cresult->result_lzma.pos_bits == (unsigned) s.Properties.pb);
|
||||||
assert(cresult->result_lzma.lit_pos_bits == (unsigned) s.Properties.lp);
|
assert(cresult->result_lzma.lit_pos_bits == (unsigned) s.Properties.lp);
|
||||||
assert(cresult->result_lzma.lit_context_bits == (unsigned) s.Properties.lc);
|
assert(cresult->result_lzma.lit_context_bits == (unsigned) s.Properties.lc);
|
||||||
assert(cresult->result_lzma.num_probs == (unsigned) LzmaGetNumProbs(&s.Properties));
|
assert(cresult->result_lzma.num_probs == (unsigned) LzmaGetNumProbs(&s.Properties));
|
||||||
const lzma_compress_result_t *res = &cresult->result_lzma;
|
const lzma_compress_result_t *res = &cresult->result_lzma;
|
||||||
|
// printf("\nlzma_decompress config: %u %u %u %u %u\n", res->pos_bits, res->lit_pos_bits,
|
||||||
|
// res->lit_context_bits, res->dict_size, res->num_probs);
|
||||||
UNUSED(res);
|
UNUSED(res);
|
||||||
//printf("\nlzma_decompress config: %u %u %u %u %u\n", res->pos_bits, res->lit_pos_bits, res->lit_context_bits, res->dict_size, res->num_probs);
|
|
||||||
}
|
}
|
||||||
s.Probs = (CProb *) malloc(sizeof(CProb) * LzmaGetNumProbs(&s.Properties));
|
s.Probs = (CProb *) malloc(sizeof(CProb) * LzmaGetNumProbs(&s.Properties));
|
||||||
if (!s.Probs)
|
if (!s.Probs) {
|
||||||
{
|
|
||||||
r = UPX_E_OUT_OF_MEMORY;
|
r = UPX_E_OUT_OF_MEMORY;
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
rh = LzmaDecode(&s, src, src_len, &src_out, dst, *dst_len, &dst_out);
|
rh = LzmaDecode(&s, src, src_len, &src_out, dst, *dst_len, &dst_out);
|
||||||
assert(src_out <= src_len);
|
assert(src_out <= src_len);
|
||||||
assert(dst_out <= *dst_len);
|
assert(dst_out <= *dst_len);
|
||||||
if (rh == 0)
|
if (rh == 0) {
|
||||||
{
|
|
||||||
r = UPX_E_OK;
|
r = UPX_E_OK;
|
||||||
if (src_out != src_len)
|
if (src_out != src_len)
|
||||||
r = UPX_E_INPUT_NOT_CONSUMED;
|
r = UPX_E_INPUT_NOT_CONSUMED;
|
||||||
}
|
} else if (rh == LZMA_RESULT_INPUT_OVERRUN)
|
||||||
|
r = UPX_E_INPUT_OVERRUN;
|
||||||
|
else if (rh == LZMA_RESULT_OUTPUT_OVERRUN)
|
||||||
|
r = UPX_E_OUTPUT_OVERRUN;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
*dst_len = dst_out;
|
*dst_len = dst_out;
|
||||||
@@ -486,24 +486,20 @@ error:
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// test_overlap - see <ucl/ucl.h> for semantics
|
// test_overlap - see <ucl/ucl.h> for semantics
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
int upx_lzma_test_overlap ( const upx_bytep buf,
|
int upx_lzma_test_overlap(const upx_bytep buf, const upx_bytep tbuf, unsigned src_off,
|
||||||
const upx_bytep tbuf,
|
unsigned src_len, unsigned *dst_len, int method,
|
||||||
unsigned src_off, unsigned src_len,
|
const upx_compress_result_t *cresult) {
|
||||||
unsigned* dst_len,
|
|
||||||
int method,
|
|
||||||
const upx_compress_result_t *cresult )
|
|
||||||
{
|
|
||||||
assert(M_IS_LZMA(method));
|
assert(M_IS_LZMA(method));
|
||||||
|
|
||||||
MemBuffer b(src_off + src_len);
|
MemBuffer b(src_off + src_len);
|
||||||
memcpy(b + src_off, buf + src_off, src_len);
|
memcpy(b + src_off, buf + src_off, src_len);
|
||||||
unsigned saved_dst_len = *dst_len;
|
unsigned saved_dst_len = *dst_len;
|
||||||
int r = upx_lzma_decompress(b + src_off, src_len, b, dst_len, method, cresult);
|
int r = upx_lzma_decompress(raw_index_bytes(b, src_off, src_len), src_len,
|
||||||
|
raw_bytes(b, *dst_len), dst_len, method, cresult);
|
||||||
if (r != UPX_E_OK)
|
if (r != UPX_E_OK)
|
||||||
return r;
|
return r;
|
||||||
if (*dst_len != saved_dst_len)
|
if (*dst_len != saved_dst_len)
|
||||||
@@ -516,25 +512,41 @@ int upx_lzma_test_overlap ( const upx_bytep buf,
|
|||||||
return UPX_E_OK;
|
return UPX_E_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// misc
|
// misc
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
int upx_lzma_init(void)
|
int upx_lzma_init(void) { return 0; }
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *upx_lzma_version_string(void)
|
const char *upx_lzma_version_string(void) {
|
||||||
{
|
|
||||||
#if (WITH_LZMA == 0x443)
|
#if (WITH_LZMA == 0x443)
|
||||||
return "4.43";
|
return "4.43";
|
||||||
#else
|
#else
|
||||||
# error "unknown WITH_LZMA version"
|
#error "unknown WITH_LZMA version"
|
||||||
return nullptr;
|
return nullptr;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
// doctest checks
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
TEST_CASE("upx_lzma_decompress") {
|
||||||
|
typedef const upx_byte C;
|
||||||
|
C *c_data;
|
||||||
|
upx_byte d_buf[16];
|
||||||
|
unsigned d_len;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
c_data = (C *) "\x1a\x03\x00\x7f\xed\x3c\x00\x00\x00";
|
||||||
|
d_len = 16;
|
||||||
|
r = upx_lzma_decompress(c_data, 9, d_buf, &d_len, M_LZMA, nullptr);
|
||||||
|
CHECK((r == 0 && d_len == 16));
|
||||||
|
r = upx_lzma_decompress(c_data, 8, d_buf, &d_len, M_LZMA, nullptr);
|
||||||
|
CHECK(r == UPX_E_INPUT_OVERRUN);
|
||||||
|
d_len = 15;
|
||||||
|
r = upx_lzma_decompress(c_data, 9, d_buf, &d_len, M_LZMA, nullptr);
|
||||||
|
CHECK(r == UPX_E_OUTPUT_OVERRUN);
|
||||||
|
}
|
||||||
|
|
||||||
/* vim:set ts=4 sw=4 et: */
|
/* vim:set ts=4 sw=4 et: */
|
||||||
|
|||||||
+139
-111
@@ -25,60 +25,62 @@
|
|||||||
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
#include "compress.h"
|
#include "compress.h"
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
//
|
//
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
static int convert_errno_from_ucl(int r)
|
static int convert_errno_from_ucl(int r) {
|
||||||
{
|
switch (r) {
|
||||||
switch (r)
|
case UCL_E_OK:
|
||||||
{
|
return UPX_E_OK;
|
||||||
case UCL_E_OK: return UPX_E_OK;
|
case UCL_E_ERROR:
|
||||||
case UCL_E_ERROR: return UPX_E_ERROR;
|
return UPX_E_ERROR;
|
||||||
case UCL_E_OUT_OF_MEMORY: return UPX_E_OUT_OF_MEMORY;
|
case UCL_E_OUT_OF_MEMORY:
|
||||||
case UCL_E_NOT_COMPRESSIBLE: return UPX_E_NOT_COMPRESSIBLE;
|
return UPX_E_OUT_OF_MEMORY;
|
||||||
case UCL_E_INPUT_OVERRUN: return UPX_E_INPUT_OVERRUN;
|
case UCL_E_NOT_COMPRESSIBLE:
|
||||||
case UCL_E_OUTPUT_OVERRUN: return UPX_E_OUTPUT_OVERRUN;
|
return UPX_E_NOT_COMPRESSIBLE;
|
||||||
case UCL_E_LOOKBEHIND_OVERRUN: return UPX_E_LOOKBEHIND_OVERRUN;
|
case UCL_E_INPUT_OVERRUN:
|
||||||
case UCL_E_EOF_NOT_FOUND: return UPX_E_EOF_NOT_FOUND;
|
return UPX_E_INPUT_OVERRUN;
|
||||||
case UCL_E_INPUT_NOT_CONSUMED: return UPX_E_INPUT_NOT_CONSUMED;
|
case UCL_E_OUTPUT_OVERRUN:
|
||||||
// case UCL_E_NOT_YET_IMPLEMENTED: return UPX_E_NOT_YET_IMPLEMENTED;
|
return UPX_E_OUTPUT_OVERRUN;
|
||||||
case UCL_E_INVALID_ARGUMENT: return UPX_E_INVALID_ARGUMENT;
|
case UCL_E_LOOKBEHIND_OVERRUN:
|
||||||
|
return UPX_E_LOOKBEHIND_OVERRUN;
|
||||||
|
case UCL_E_EOF_NOT_FOUND:
|
||||||
|
return UPX_E_EOF_NOT_FOUND;
|
||||||
|
case UCL_E_INPUT_NOT_CONSUMED:
|
||||||
|
return UPX_E_INPUT_NOT_CONSUMED;
|
||||||
|
case UCL_E_INVALID_ARGUMENT:
|
||||||
|
return UPX_E_INVALID_ARGUMENT;
|
||||||
// UCL extra:
|
// UCL extra:
|
||||||
case UCL_E_OVERLAP_OVERRUN: return UPX_E_ERROR;
|
case UCL_E_OVERLAP_OVERRUN:
|
||||||
|
return UPX_E_ERROR;
|
||||||
}
|
}
|
||||||
return UPX_E_ERROR;
|
return UPX_E_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
static void __UCL_CDECL wrap_nprogress_ucl(ucl_uint a, ucl_uint b, int state, ucl_voidp user)
|
static void __UCL_CDECL wrap_nprogress_ucl(ucl_uint a, ucl_uint b, int state, ucl_voidp user) {
|
||||||
{
|
if (state != -1 && state != 3)
|
||||||
if (state != -1 && state != 3) return;
|
return;
|
||||||
upx_callback_p cb = (upx_callback_p) user;
|
upx_callback_p cb = (upx_callback_p) user;
|
||||||
if (cb && cb->nprogress)
|
if (cb && cb->nprogress)
|
||||||
cb->nprogress(cb, a, b);
|
cb->nprogress(cb, a, b);
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
//
|
//
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
int upx_ucl_compress ( const upx_bytep src, unsigned src_len,
|
int upx_ucl_compress(const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned *dst_len,
|
||||||
upx_bytep dst, unsigned* dst_len,
|
upx_callback_p cb_parm, int method, int level,
|
||||||
upx_callback_p cb_parm,
|
const upx_compress_config_t *cconf_parm, upx_compress_result_t *cresult) {
|
||||||
int method, int level,
|
|
||||||
const upx_compress_config_t *cconf_parm,
|
|
||||||
upx_compress_result_t *cresult )
|
|
||||||
{
|
|
||||||
int r;
|
int r;
|
||||||
assert(level > 0); assert(cresult != nullptr);
|
assert(level > 0);
|
||||||
|
assert(cresult != nullptr);
|
||||||
|
|
||||||
COMPILE_TIME_ASSERT(sizeof(ucl_compress_config_t) == sizeof(REAL_ucl_compress_config_t))
|
COMPILE_TIME_ASSERT(sizeof(ucl_compress_config_t) == sizeof(REAL_ucl_compress_config_t))
|
||||||
|
|
||||||
@@ -90,49 +92,47 @@ int upx_ucl_compress ( const upx_bytep src, unsigned src_len,
|
|||||||
cb.user = cb_parm;
|
cb.user = cb_parm;
|
||||||
}
|
}
|
||||||
|
|
||||||
ucl_compress_config_t cconf; cconf.reset();
|
ucl_compress_config_t cconf;
|
||||||
if (cconf_parm)
|
cconf.reset();
|
||||||
memcpy(&cconf, &cconf_parm->conf_ucl, sizeof(cconf)); // cconf = cconf_parm->conf_ucl; // struct copy
|
if (cconf_parm) {
|
||||||
|
// cconf = cconf_parm->conf_ucl; // struct copy
|
||||||
|
memcpy(&cconf, &cconf_parm->conf_ucl, sizeof(cconf));
|
||||||
|
}
|
||||||
|
|
||||||
ucl_uint *res = cresult->result_ucl.result;
|
ucl_uint *const res = cresult->result_ucl.result;
|
||||||
// assume no info available - fill in worst case results
|
// assume no info available - fill in worst case results
|
||||||
//res[0] = 1; // min_offset_found - NOT USED
|
// res[0] = 1; // min_offset_found - NOT USED
|
||||||
res[1] = src_len - 1; // max_offset_found
|
res[1] = src_len - 1; // max_offset_found
|
||||||
//res[2] = 2; // min_match_found - NOT USED
|
// res[2] = 2; // min_match_found - NOT USED
|
||||||
res[3] = src_len - 1; // max_match_found
|
res[3] = src_len - 1; // max_match_found
|
||||||
//res[4] = 1; // min_run_found - NOT USED
|
// res[4] = 1; // min_run_found - NOT USED
|
||||||
res[5] = src_len; // max_run_found
|
res[5] = src_len; // max_run_found
|
||||||
res[6] = 1; // first_offset_found
|
res[6] = 1; // first_offset_found
|
||||||
//res[7] = 999999; // same_match_offsets_found - NOT USED
|
// res[7] = 999999; // same_match_offsets_found - NOT USED
|
||||||
|
|
||||||
// prepare bit-buffer settings
|
// prepare bit-buffer settings
|
||||||
cconf.bb_endian = 0;
|
cconf.bb_endian = 0;
|
||||||
cconf.bb_size = 0;
|
cconf.bb_size = 0;
|
||||||
if (method >= M_NRV2B_LE32 && method <= M_NRV2E_LE16)
|
if (method >= M_NRV2B_LE32 && method <= M_NRV2E_LE16) {
|
||||||
{
|
|
||||||
static const unsigned char sizes[3] = {32, 8, 16};
|
static const unsigned char sizes[3] = {32, 8, 16};
|
||||||
cconf.bb_size = sizes[(method - M_NRV2B_LE32) % 3];
|
cconf.bb_size = sizes[(method - M_NRV2B_LE32) % 3];
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
throwInternalError("unknown compression method");
|
throwInternalError("unknown compression method");
|
||||||
return UPX_E_ERROR;
|
return UPX_E_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
// optimize compression parms
|
// optimize compression parms
|
||||||
if (level <= 3 && cconf.max_offset == UCL_UINT_MAX)
|
if (level <= 3 && cconf.max_offset == UCL_UINT_MAX)
|
||||||
cconf.max_offset = 8*1024-1;
|
cconf.max_offset = 8 * 1024 - 1;
|
||||||
else if (level == 4 && cconf.max_offset == UCL_UINT_MAX)
|
else if (level == 4 && cconf.max_offset == UCL_UINT_MAX)
|
||||||
cconf.max_offset = 32*1024-1;
|
cconf.max_offset = 32 * 1024 - 1;
|
||||||
|
|
||||||
if M_IS_NRV2B(method)
|
if M_IS_NRV2B (method)
|
||||||
r = ucl_nrv2b_99_compress(src, src_len, dst, dst_len,
|
r = ucl_nrv2b_99_compress(src, src_len, dst, dst_len, &cb, level, &cconf, res);
|
||||||
&cb, level, &cconf, res);
|
else if M_IS_NRV2D (method)
|
||||||
else if M_IS_NRV2D(method)
|
r = ucl_nrv2d_99_compress(src, src_len, dst, dst_len, &cb, level, &cconf, res);
|
||||||
r = ucl_nrv2d_99_compress(src, src_len, dst, dst_len,
|
else if M_IS_NRV2E (method)
|
||||||
&cb, level, &cconf, res);
|
r = ucl_nrv2e_99_compress(src, src_len, dst, dst_len, &cb, level, &cconf, res);
|
||||||
else if M_IS_NRV2E(method)
|
|
||||||
r = ucl_nrv2e_99_compress(src, src_len, dst, dst_len,
|
|
||||||
&cb, level, &cconf, res);
|
|
||||||
else {
|
else {
|
||||||
throwInternalError("unknown compression method");
|
throwInternalError("unknown compression method");
|
||||||
return UPX_E_ERROR;
|
return UPX_E_ERROR;
|
||||||
@@ -145,46 +145,41 @@ int upx_ucl_compress ( const upx_bytep src, unsigned src_len,
|
|||||||
return convert_errno_from_ucl(r);
|
return convert_errno_from_ucl(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
//
|
//
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
int upx_ucl_decompress ( const upx_bytep src, unsigned src_len,
|
int upx_ucl_decompress(const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned *dst_len,
|
||||||
upx_bytep dst, unsigned* dst_len,
|
int method, const upx_compress_result_t *cresult) {
|
||||||
int method,
|
|
||||||
const upx_compress_result_t *cresult )
|
|
||||||
{
|
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
switch (method)
|
switch (method) {
|
||||||
{
|
|
||||||
case M_NRV2B_8:
|
case M_NRV2B_8:
|
||||||
r = ucl_nrv2b_decompress_safe_8(src,src_len,dst,dst_len,nullptr);
|
r = ucl_nrv2b_decompress_safe_8(src, src_len, dst, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2B_LE16:
|
case M_NRV2B_LE16:
|
||||||
r = ucl_nrv2b_decompress_safe_le16(src,src_len,dst,dst_len,nullptr);
|
r = ucl_nrv2b_decompress_safe_le16(src, src_len, dst, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2B_LE32:
|
case M_NRV2B_LE32:
|
||||||
r = ucl_nrv2b_decompress_safe_le32(src,src_len,dst,dst_len,nullptr);
|
r = ucl_nrv2b_decompress_safe_le32(src, src_len, dst, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2D_8:
|
case M_NRV2D_8:
|
||||||
r = ucl_nrv2d_decompress_safe_8(src,src_len,dst,dst_len,nullptr);
|
r = ucl_nrv2d_decompress_safe_8(src, src_len, dst, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2D_LE16:
|
case M_NRV2D_LE16:
|
||||||
r = ucl_nrv2d_decompress_safe_le16(src,src_len,dst,dst_len,nullptr);
|
r = ucl_nrv2d_decompress_safe_le16(src, src_len, dst, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2D_LE32:
|
case M_NRV2D_LE32:
|
||||||
r = ucl_nrv2d_decompress_safe_le32(src,src_len,dst,dst_len,nullptr);
|
r = ucl_nrv2d_decompress_safe_le32(src, src_len, dst, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2E_8:
|
case M_NRV2E_8:
|
||||||
r = ucl_nrv2e_decompress_safe_8(src,src_len,dst,dst_len,nullptr);
|
r = ucl_nrv2e_decompress_safe_8(src, src_len, dst, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2E_LE16:
|
case M_NRV2E_LE16:
|
||||||
r = ucl_nrv2e_decompress_safe_le16(src,src_len,dst,dst_len,nullptr);
|
r = ucl_nrv2e_decompress_safe_le16(src, src_len, dst, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2E_LE32:
|
case M_NRV2E_LE32:
|
||||||
r = ucl_nrv2e_decompress_safe_le32(src,src_len,dst,dst_len,nullptr);
|
r = ucl_nrv2e_decompress_safe_le32(src, src_len, dst, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throwInternalError("unknown decompression method");
|
throwInternalError("unknown decompression method");
|
||||||
@@ -195,49 +190,43 @@ int upx_ucl_decompress ( const upx_bytep src, unsigned src_len,
|
|||||||
return convert_errno_from_ucl(r);
|
return convert_errno_from_ucl(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
//
|
//
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
int upx_ucl_test_overlap ( const upx_bytep buf,
|
int upx_ucl_test_overlap(const upx_bytep buf, const upx_bytep tbuf, unsigned src_off,
|
||||||
const upx_bytep tbuf,
|
unsigned src_len, unsigned *dst_len, int method,
|
||||||
unsigned src_off, unsigned src_len,
|
const upx_compress_result_t *cresult) {
|
||||||
unsigned* dst_len,
|
|
||||||
int method,
|
|
||||||
const upx_compress_result_t *cresult )
|
|
||||||
{
|
|
||||||
int r;
|
int r;
|
||||||
UNUSED(tbuf); // not needed for UCL
|
UNUSED(tbuf); // not needed for UCL
|
||||||
|
|
||||||
switch (method)
|
switch (method) {
|
||||||
{
|
|
||||||
case M_NRV2B_8:
|
case M_NRV2B_8:
|
||||||
r = ucl_nrv2b_test_overlap_8(buf,src_off,src_len,dst_len,nullptr);
|
r = ucl_nrv2b_test_overlap_8(buf, src_off, src_len, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2B_LE16:
|
case M_NRV2B_LE16:
|
||||||
r = ucl_nrv2b_test_overlap_le16(buf,src_off,src_len,dst_len,nullptr);
|
r = ucl_nrv2b_test_overlap_le16(buf, src_off, src_len, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2B_LE32:
|
case M_NRV2B_LE32:
|
||||||
r = ucl_nrv2b_test_overlap_le32(buf,src_off,src_len,dst_len,nullptr);
|
r = ucl_nrv2b_test_overlap_le32(buf, src_off, src_len, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2D_8:
|
case M_NRV2D_8:
|
||||||
r = ucl_nrv2d_test_overlap_8(buf,src_off,src_len,dst_len,nullptr);
|
r = ucl_nrv2d_test_overlap_8(buf, src_off, src_len, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2D_LE16:
|
case M_NRV2D_LE16:
|
||||||
r = ucl_nrv2d_test_overlap_le16(buf,src_off,src_len,dst_len,nullptr);
|
r = ucl_nrv2d_test_overlap_le16(buf, src_off, src_len, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2D_LE32:
|
case M_NRV2D_LE32:
|
||||||
r = ucl_nrv2d_test_overlap_le32(buf,src_off,src_len,dst_len,nullptr);
|
r = ucl_nrv2d_test_overlap_le32(buf, src_off, src_len, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2E_8:
|
case M_NRV2E_8:
|
||||||
r = ucl_nrv2e_test_overlap_8(buf,src_off,src_len,dst_len,nullptr);
|
r = ucl_nrv2e_test_overlap_8(buf, src_off, src_len, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2E_LE16:
|
case M_NRV2E_LE16:
|
||||||
r = ucl_nrv2e_test_overlap_le16(buf,src_off,src_len,dst_len,nullptr);
|
r = ucl_nrv2e_test_overlap_le16(buf, src_off, src_len, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
case M_NRV2E_LE32:
|
case M_NRV2E_LE32:
|
||||||
r = ucl_nrv2e_test_overlap_le32(buf,src_off,src_len,dst_len,nullptr);
|
r = ucl_nrv2e_test_overlap_le32(buf, src_off, src_len, dst_len, nullptr);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throwInternalError("unknown decompression method");
|
throwInternalError("unknown decompression method");
|
||||||
@@ -248,7 +237,6 @@ int upx_ucl_test_overlap ( const upx_bytep buf,
|
|||||||
return convert_errno_from_ucl(r);
|
return convert_errno_from_ucl(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// misc
|
// misc
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
@@ -258,8 +246,7 @@ static ucl_voidp __UCL_CDECL my_malloc(ucl_uint n) { return calloc(1, n); }
|
|||||||
static void __UCL_CDECL my_free(ucl_voidp p) { free(p); }
|
static void __UCL_CDECL my_free(ucl_voidp p) { free(p); }
|
||||||
}
|
}
|
||||||
|
|
||||||
int upx_ucl_init(void)
|
int upx_ucl_init(void) {
|
||||||
{
|
|
||||||
if (ucl_init() != UCL_E_OK)
|
if (ucl_init() != UCL_E_OK)
|
||||||
return -1;
|
return -1;
|
||||||
if (UCL_VERSION != ucl_version() || strcmp(UCL_VERSION_STRING, ucl_version_string()) != 0)
|
if (UCL_VERSION != ucl_version() || strcmp(UCL_VERSION_STRING, ucl_version_string()) != 0)
|
||||||
@@ -268,25 +255,20 @@ int upx_ucl_init(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *upx_ucl_version_string(void)
|
const char *upx_ucl_version_string(void) { return ucl_version_string(); }
|
||||||
{
|
|
||||||
return ucl_version_string();
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned upx_ucl_adler32(const void *buf, unsigned len, unsigned adler)
|
unsigned upx_ucl_adler32(const void *buf, unsigned len, unsigned adler) {
|
||||||
{
|
|
||||||
return ucl_adler32(adler, (const ucl_bytep) buf, len);
|
return ucl_adler32(adler, (const ucl_bytep) buf, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* UNUSED */
|
#if 0 /* UNUSED */
|
||||||
unsigned upx_ucl_crc32(const void *buf, unsigned len, unsigned crc)
|
unsigned upx_ucl_crc32(const void *buf, unsigned len, unsigned crc) {
|
||||||
{
|
|
||||||
return ucl_crc32(crc, (const ucl_bytep) buf, len);
|
return ucl_crc32(crc, (const ucl_bytep) buf, len);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// Debug checks
|
// doctest checks
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
#if DEBUG && 1
|
#if DEBUG && 1
|
||||||
@@ -305,20 +287,29 @@ static bool check_ucl(const int method, const unsigned expected_c_len) {
|
|||||||
u_buf.alloc(u_len);
|
u_buf.alloc(u_len);
|
||||||
memset(u_buf, 0, u_len);
|
memset(u_buf, 0, u_len);
|
||||||
c_buf.allocForCompression(u_len, c_extra);
|
c_buf.allocForCompression(u_len, c_extra);
|
||||||
d_buf.allocForUncompression(u_len);
|
d_buf.allocForDecompression(u_len);
|
||||||
|
|
||||||
c_len = c_buf.getSize() - c_extra;
|
c_len = c_buf.getSize() - c_extra;
|
||||||
r = upx_ucl_compress(u_buf, u_len, c_buf + c_extra, &c_len, nullptr, method, level, NULL_cconf, &cresult);
|
r = upx_ucl_compress(raw_bytes(u_buf, u_len), u_len, raw_index_bytes(c_buf, c_extra, c_len),
|
||||||
if (r != 0 || c_len != expected_c_len) return false;
|
&c_len, nullptr, method, level, NULL_cconf, &cresult);
|
||||||
|
if (r != 0 || c_len != expected_c_len)
|
||||||
|
return false;
|
||||||
|
|
||||||
d_len = d_buf.getSize();
|
d_len = d_buf.getSize();
|
||||||
r = upx_ucl_decompress(c_buf + c_extra, c_len, d_buf, &d_len, method, nullptr);
|
r = upx_ucl_decompress(raw_index_bytes(c_buf, c_extra, c_len), c_len, raw_bytes(d_buf, d_len),
|
||||||
if (r != 0 || d_len != u_len) return false;
|
&d_len, method, nullptr);
|
||||||
if (memcmp(u_buf, d_buf, u_len) != 0) return false;
|
if (r != 0 || d_len != u_len || memcmp(u_buf, d_buf, u_len) != 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
d_len = u_len - 1;
|
||||||
|
r = upx_ucl_decompress(raw_index_bytes(c_buf, c_extra, c_len), c_len, raw_bytes(d_buf, d_len),
|
||||||
|
&d_len, method, nullptr);
|
||||||
|
if (r == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
// TODO: rewrite Packer::findOverlapOverhead() so that we can test it here
|
// TODO: rewrite Packer::findOverlapOverhead() so that we can test it here
|
||||||
//unsigned x_len = d_len;
|
// unsigned x_len = d_len;
|
||||||
//r = upx_ucl_test_overlap(c_buf, u_buf, c_extra, c_len, &x_len, method, nullptr);
|
// r = upx_ucl_test_overlap(c_buf, u_buf, c_extra, c_len, &x_len, method, nullptr);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -336,5 +327,42 @@ TEST_CASE("compress_ucl") {
|
|||||||
|
|
||||||
#endif // DEBUG
|
#endif // DEBUG
|
||||||
|
|
||||||
|
TEST_CASE("upx_ucl_decompress") {
|
||||||
|
typedef const upx_byte C;
|
||||||
|
C *c_data;
|
||||||
|
upx_byte d_buf[16];
|
||||||
|
unsigned d_len;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
c_data = (C *) "\x92\xff\x10\x00\x00\x00\x00\x00\x48\xff";
|
||||||
|
d_len = 16;
|
||||||
|
r = upx_ucl_decompress(c_data, 10, d_buf, &d_len, M_NRV2B_8, nullptr);
|
||||||
|
CHECK((r == 0 && d_len == 16));
|
||||||
|
r = upx_ucl_decompress(c_data, 9, d_buf, &d_len, M_NRV2B_8, nullptr);
|
||||||
|
CHECK(r == UPX_E_INPUT_OVERRUN);
|
||||||
|
d_len = 15;
|
||||||
|
r = upx_ucl_decompress(c_data, 10, d_buf, &d_len, M_NRV2B_8, nullptr);
|
||||||
|
CHECK(r == UPX_E_OUTPUT_OVERRUN);
|
||||||
|
|
||||||
|
c_data = (C *) "\x92\xff\x10\x92\x49\x24\x92\xa0\xff";
|
||||||
|
d_len = 16;
|
||||||
|
r = upx_ucl_decompress(c_data, 9, d_buf, &d_len, M_NRV2D_8, nullptr);
|
||||||
|
CHECK((r == 0 && d_len == 16));
|
||||||
|
r = upx_ucl_decompress(c_data, 8, d_buf, &d_len, M_NRV2D_8, nullptr);
|
||||||
|
CHECK(r == UPX_E_INPUT_OVERRUN);
|
||||||
|
d_len = 15;
|
||||||
|
r = upx_ucl_decompress(c_data, 9, d_buf, &d_len, M_NRV2D_8, nullptr);
|
||||||
|
CHECK(r == UPX_E_OUTPUT_OVERRUN);
|
||||||
|
|
||||||
|
c_data = (C *) "\x90\xff\xb0\x92\x49\x24\x92\xa0\xff";
|
||||||
|
d_len = 16;
|
||||||
|
r = upx_ucl_decompress(c_data, 9, d_buf, &d_len, M_NRV2E_8, nullptr);
|
||||||
|
CHECK((r == 0 && d_len == 16));
|
||||||
|
r = upx_ucl_decompress(c_data, 8, d_buf, &d_len, M_NRV2E_8, nullptr);
|
||||||
|
CHECK(r == UPX_E_INPUT_OVERRUN);
|
||||||
|
d_len = 15;
|
||||||
|
r = upx_ucl_decompress(c_data, 9, d_buf, &d_len, M_NRV2E_8, nullptr);
|
||||||
|
CHECK(r == UPX_E_OUTPUT_OVERRUN);
|
||||||
|
}
|
||||||
|
|
||||||
/* vim:set ts=4 sw=4 et: */
|
/* vim:set ts=4 sw=4 et: */
|
||||||
|
|||||||
+86
-67
@@ -25,16 +25,13 @@
|
|||||||
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
#include "compress.h"
|
#include "compress.h"
|
||||||
#include "util/membuffer.h"
|
#include "util/membuffer.h"
|
||||||
#include <zlib/zlib.h>
|
#include <zlib/zlib.h>
|
||||||
#include <zlib/deflate.h>
|
#include <zlib/deflate.h>
|
||||||
|
|
||||||
|
void zlib_compress_config_t::reset() {
|
||||||
void zlib_compress_config_t::reset()
|
|
||||||
{
|
|
||||||
mem_clear(this, sizeof(*this));
|
mem_clear(this, sizeof(*this));
|
||||||
|
|
||||||
mem_level.reset();
|
mem_level.reset();
|
||||||
@@ -42,37 +39,49 @@ void zlib_compress_config_t::reset()
|
|||||||
strategy.reset();
|
strategy.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int convert_errno_from_zlib(int zr) {
|
||||||
static int convert_errno_from_zlib(int zr)
|
switch (zr) {
|
||||||
{
|
case Z_OK:
|
||||||
switch (zr)
|
return UPX_E_OK;
|
||||||
{
|
// positive values
|
||||||
case Z_OK: return UPX_E_OK;
|
case Z_STREAM_END:
|
||||||
case Z_DATA_ERROR: return UPX_E_ERROR;
|
return UPX_E_ERROR;
|
||||||
case Z_NEED_DICT: return UPX_E_ERROR;
|
case Z_NEED_DICT:
|
||||||
|
return UPX_E_ERROR;
|
||||||
|
// negative values
|
||||||
|
case Z_ERRNO:
|
||||||
|
return UPX_E_ERROR;
|
||||||
|
case Z_STREAM_ERROR:
|
||||||
|
return UPX_E_ERROR;
|
||||||
|
case Z_DATA_ERROR:
|
||||||
|
return UPX_E_ERROR;
|
||||||
|
case Z_MEM_ERROR:
|
||||||
|
return UPX_E_OUT_OF_MEMORY;
|
||||||
|
case Z_BUF_ERROR:
|
||||||
|
return UPX_E_OUTPUT_OVERRUN;
|
||||||
|
case Z_VERSION_ERROR:
|
||||||
|
return UPX_E_ERROR;
|
||||||
|
case -7: // UPX extra
|
||||||
|
return UPX_E_INPUT_OVERRUN;
|
||||||
}
|
}
|
||||||
return UPX_E_ERROR;
|
return UPX_E_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
//
|
//
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
int upx_zlib_compress ( const upx_bytep src, unsigned src_len,
|
int upx_zlib_compress(const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned *dst_len,
|
||||||
upx_bytep dst, unsigned* dst_len,
|
upx_callback_p cb_parm, int method, int level,
|
||||||
upx_callback_p cb_parm,
|
const upx_compress_config_t *cconf_parm, upx_compress_result_t *cresult) {
|
||||||
int method, int level,
|
|
||||||
const upx_compress_config_t *cconf_parm,
|
|
||||||
upx_compress_result_t *cresult )
|
|
||||||
{
|
|
||||||
assert(method == M_DEFLATE);
|
assert(method == M_DEFLATE);
|
||||||
assert(level > 0); assert(cresult != nullptr);
|
assert(level > 0);
|
||||||
|
assert(cresult != nullptr);
|
||||||
UNUSED(cb_parm);
|
UNUSED(cb_parm);
|
||||||
int r = UPX_E_ERROR;
|
int r = UPX_E_ERROR;
|
||||||
int zr;
|
int zr;
|
||||||
const zlib_compress_config_t *lcconf = cconf_parm ? &cconf_parm->conf_zlib : nullptr;
|
const zlib_compress_config_t *const lcconf = cconf_parm ? &cconf_parm->conf_zlib : nullptr;
|
||||||
zlib_compress_result_t *res = &cresult->result_zlib;
|
zlib_compress_result_t *const res = &cresult->result_zlib;
|
||||||
|
|
||||||
if (level == 10)
|
if (level == 10)
|
||||||
level = 9;
|
level = 9;
|
||||||
@@ -81,8 +90,7 @@ int upx_zlib_compress ( const upx_bytep src, unsigned src_len,
|
|||||||
zlib_compress_config_t::window_bits_t window_bits;
|
zlib_compress_config_t::window_bits_t window_bits;
|
||||||
zlib_compress_config_t::strategy_t strategy;
|
zlib_compress_config_t::strategy_t strategy;
|
||||||
// cconf overrides
|
// cconf overrides
|
||||||
if (lcconf)
|
if (lcconf) {
|
||||||
{
|
|
||||||
oassign(mem_level, lcconf->mem_level);
|
oassign(mem_level, lcconf->mem_level);
|
||||||
oassign(window_bits, lcconf->window_bits);
|
oassign(window_bits, lcconf->window_bits);
|
||||||
oassign(strategy, lcconf->strategy);
|
oassign(strategy, lcconf->strategy);
|
||||||
@@ -99,8 +107,7 @@ int upx_zlib_compress ( const upx_bytep src, unsigned src_len,
|
|||||||
s.avail_out = *dst_len;
|
s.avail_out = *dst_len;
|
||||||
s.total_in = s.total_out = 0;
|
s.total_in = s.total_out = 0;
|
||||||
|
|
||||||
zr = (int)deflateInit2(&s, level, Z_DEFLATED, 0 - (int)window_bits,
|
zr = (int) deflateInit2(&s, level, Z_DEFLATED, 0 - (int) window_bits, mem_level, strategy);
|
||||||
mem_level, strategy);
|
|
||||||
if (zr != Z_OK)
|
if (zr != Z_OK)
|
||||||
goto error;
|
goto error;
|
||||||
assert(s.state->level == level);
|
assert(s.state->level == level);
|
||||||
@@ -118,8 +125,7 @@ error:
|
|||||||
if (r == UPX_E_OK)
|
if (r == UPX_E_OK)
|
||||||
r = UPX_E_ERROR;
|
r = UPX_E_ERROR;
|
||||||
done:
|
done:
|
||||||
if (r == UPX_E_OK)
|
if (r == UPX_E_OK) {
|
||||||
{
|
|
||||||
if (s.avail_in != 0 || s.total_in != src_len)
|
if (s.avail_in != 0 || s.total_in != src_len)
|
||||||
r = UPX_E_ERROR;
|
r = UPX_E_ERROR;
|
||||||
}
|
}
|
||||||
@@ -129,16 +135,12 @@ done:
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
//
|
//
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
int upx_zlib_decompress ( const upx_bytep src, unsigned src_len,
|
int upx_zlib_decompress(const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned *dst_len,
|
||||||
upx_bytep dst, unsigned* dst_len,
|
int method, const upx_compress_result_t *cresult) {
|
||||||
int method,
|
|
||||||
const upx_compress_result_t *cresult )
|
|
||||||
{
|
|
||||||
assert(method == M_DEFLATE);
|
assert(method == M_DEFLATE);
|
||||||
UNUSED(method);
|
UNUSED(method);
|
||||||
UNUSED(cresult);
|
UNUSED(cresult);
|
||||||
@@ -158,8 +160,11 @@ int upx_zlib_decompress ( const upx_bytep src, unsigned src_len,
|
|||||||
if (zr != Z_OK)
|
if (zr != Z_OK)
|
||||||
goto error;
|
goto error;
|
||||||
zr = inflate(&s, Z_FINISH);
|
zr = inflate(&s, Z_FINISH);
|
||||||
if (zr != Z_STREAM_END)
|
if (zr != Z_STREAM_END) {
|
||||||
|
if (zr == Z_BUF_ERROR && s.avail_in == 0)
|
||||||
|
zr = -7; // UPX extra
|
||||||
goto error;
|
goto error;
|
||||||
|
}
|
||||||
zr = inflateEnd(&s);
|
zr = inflateEnd(&s);
|
||||||
if (zr != Z_OK)
|
if (zr != Z_OK)
|
||||||
goto error;
|
goto error;
|
||||||
@@ -171,8 +176,7 @@ error:
|
|||||||
if (r == UPX_E_OK)
|
if (r == UPX_E_OK)
|
||||||
r = UPX_E_ERROR;
|
r = UPX_E_ERROR;
|
||||||
done:
|
done:
|
||||||
if (r == UPX_E_OK)
|
if (r == UPX_E_OK) {
|
||||||
{
|
|
||||||
if (s.avail_in != 0 || s.total_in != src_len)
|
if (s.avail_in != 0 || s.total_in != src_len)
|
||||||
r = UPX_E_INPUT_NOT_CONSUMED;
|
r = UPX_E_INPUT_NOT_CONSUMED;
|
||||||
}
|
}
|
||||||
@@ -182,24 +186,20 @@ done:
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// test_overlap - see <ucl/ucl.h> for semantics
|
// test_overlap - see <ucl/ucl.h> for semantics
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
int upx_zlib_test_overlap ( const upx_bytep buf,
|
int upx_zlib_test_overlap(const upx_bytep buf, const upx_bytep tbuf, unsigned src_off,
|
||||||
const upx_bytep tbuf,
|
unsigned src_len, unsigned *dst_len, int method,
|
||||||
unsigned src_off, unsigned src_len,
|
const upx_compress_result_t *cresult) {
|
||||||
unsigned* dst_len,
|
|
||||||
int method,
|
|
||||||
const upx_compress_result_t *cresult )
|
|
||||||
{
|
|
||||||
assert(method == M_DEFLATE);
|
assert(method == M_DEFLATE);
|
||||||
|
|
||||||
MemBuffer b(src_off + src_len);
|
MemBuffer b(src_off + src_len);
|
||||||
memcpy(b + src_off, buf + src_off, src_len);
|
memcpy(b + src_off, buf + src_off, src_len);
|
||||||
unsigned saved_dst_len = *dst_len;
|
unsigned saved_dst_len = *dst_len;
|
||||||
int r = upx_zlib_decompress(b + src_off, src_len, b, dst_len, method, cresult);
|
int r = upx_zlib_decompress(raw_index_bytes(b, src_off, src_len), src_len,
|
||||||
|
raw_bytes(b, *dst_len), dst_len, method, cresult);
|
||||||
if (r != UPX_E_OK)
|
if (r != UPX_E_OK)
|
||||||
return r;
|
return r;
|
||||||
if (*dst_len != saved_dst_len)
|
if (*dst_len != saved_dst_len)
|
||||||
@@ -212,39 +212,32 @@ int upx_zlib_test_overlap ( const upx_bytep buf,
|
|||||||
return UPX_E_OK;
|
return UPX_E_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// misc
|
// misc
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
int upx_zlib_init(void)
|
int upx_zlib_init(void) {
|
||||||
{
|
|
||||||
if (strcmp(ZLIB_VERSION, zlibVersion()) != 0)
|
if (strcmp(ZLIB_VERSION, zlibVersion()) != 0)
|
||||||
return -2;
|
return -2;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *upx_zlib_version_string(void)
|
const char *upx_zlib_version_string(void) { return zlibVersion(); }
|
||||||
{
|
|
||||||
return zlibVersion();
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0 /* UNUSED */
|
#if 0 /* UNUSED */
|
||||||
unsigned upx_zlib_adler32(const void *buf, unsigned len, unsigned adler)
|
unsigned upx_zlib_adler32(const void *buf, unsigned len, unsigned adler) {
|
||||||
{
|
|
||||||
return adler32(adler, (const Bytef *) buf, len);
|
return adler32(adler, (const Bytef *) buf, len);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0 /* UNUSED */
|
#if 0 /* UNUSED */
|
||||||
unsigned upx_zlib_crc32(const void *buf, unsigned len, unsigned crc)
|
unsigned upx_zlib_crc32(const void *buf, unsigned len, unsigned crc) {
|
||||||
{
|
|
||||||
return crc32(crc, (const Bytef *) buf, len);
|
return crc32(crc, (const Bytef *) buf, len);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// Debug checks
|
// doctest checks
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
#if DEBUG && 1
|
#if DEBUG && 1
|
||||||
@@ -262,20 +255,29 @@ static bool check_zlib(const int method, const int level, const unsigned expecte
|
|||||||
u_buf.alloc(u_len);
|
u_buf.alloc(u_len);
|
||||||
memset(u_buf, 0, u_len);
|
memset(u_buf, 0, u_len);
|
||||||
c_buf.allocForCompression(u_len, c_extra);
|
c_buf.allocForCompression(u_len, c_extra);
|
||||||
d_buf.allocForUncompression(u_len);
|
d_buf.allocForDecompression(u_len);
|
||||||
|
|
||||||
c_len = c_buf.getSize() - c_extra;
|
c_len = c_buf.getSize() - c_extra;
|
||||||
r = upx_zlib_compress(u_buf, u_len, c_buf + c_extra, &c_len, nullptr, method, level, NULL_cconf, &cresult);
|
r = upx_zlib_compress(raw_bytes(u_buf, u_len), u_len, raw_index_bytes(c_buf, c_extra, c_len),
|
||||||
if (r != 0 || c_len != expected_c_len) return false;
|
&c_len, nullptr, method, level, NULL_cconf, &cresult);
|
||||||
|
if (r != 0 || c_len != expected_c_len)
|
||||||
|
return false;
|
||||||
|
|
||||||
d_len = d_buf.getSize();
|
d_len = d_buf.getSize();
|
||||||
r = upx_zlib_decompress(c_buf + c_extra, c_len, d_buf, &d_len, method, nullptr);
|
r = upx_zlib_decompress(raw_index_bytes(c_buf, c_extra, c_len), c_len, raw_bytes(d_buf, d_len),
|
||||||
if (r != 0 || d_len != u_len) return false;
|
&d_len, method, nullptr);
|
||||||
if (memcmp(u_buf, d_buf, u_len) != 0) return false;
|
if (r != 0 || d_len != u_len || memcmp(u_buf, d_buf, u_len) != 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
d_len = u_len - 1;
|
||||||
|
r = upx_zlib_decompress(raw_index_bytes(c_buf, c_extra, c_len), c_len, raw_bytes(d_buf, d_len),
|
||||||
|
&d_len, method, nullptr);
|
||||||
|
if (r == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
// TODO: rewrite Packer::findOverlapOverhead() so that we can test it here
|
// TODO: rewrite Packer::findOverlapOverhead() so that we can test it here
|
||||||
//unsigned x_len = d_len;
|
// unsigned x_len = d_len;
|
||||||
//r = upx_zlib_test_overlap(c_buf, u_buf, c_extra, c_len, &x_len, method, nullptr);
|
// r = upx_zlib_test_overlap(c_buf, u_buf, c_extra, c_len, &x_len, method, nullptr);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,5 +289,22 @@ TEST_CASE("compress_zlib") {
|
|||||||
|
|
||||||
#endif // DEBUG
|
#endif // DEBUG
|
||||||
|
|
||||||
|
TEST_CASE("upx_zlib_decompress") {
|
||||||
|
typedef const upx_byte C;
|
||||||
|
C *c_data;
|
||||||
|
upx_byte d_buf[16];
|
||||||
|
unsigned d_len;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
c_data = (C *) "\xfb\xff\x1f\x15\x00\x00";
|
||||||
|
d_len = 16;
|
||||||
|
r = upx_zlib_decompress(c_data, 6, d_buf, &d_len, M_DEFLATE, nullptr);
|
||||||
|
CHECK((r == 0 && d_len == 16));
|
||||||
|
r = upx_zlib_decompress(c_data, 5, d_buf, &d_len, M_DEFLATE, nullptr);
|
||||||
|
CHECK(r == UPX_E_INPUT_OVERRUN);
|
||||||
|
d_len = 15;
|
||||||
|
r = upx_zlib_decompress(c_data, 6, d_buf, &d_len, M_DEFLATE, nullptr);
|
||||||
|
CHECK(r == UPX_E_OUTPUT_OVERRUN);
|
||||||
|
}
|
||||||
|
|
||||||
/* vim:set ts=4 sw=4 et: */
|
/* vim:set ts=4 sw=4 et: */
|
||||||
|
|||||||
+12
-2
@@ -295,9 +295,9 @@ typedef upx_int64_t upx_off_t;
|
|||||||
#define CLANG_FORMAT_DUMMY_STATEMENT /*empty*/
|
#define CLANG_FORMAT_DUMMY_STATEMENT /*empty*/
|
||||||
|
|
||||||
#if defined(_WIN32) && defined(__MINGW32__) && defined(__GNUC__) && !defined(__clang__)
|
#if defined(_WIN32) && defined(__MINGW32__) && defined(__GNUC__) && !defined(__clang__)
|
||||||
# define attribute_format(a,b) __attribute__((__format__(__gnu_printf__,a,b)));
|
# define attribute_format(a,b) __attribute__((__format__(__gnu_printf__,a,b)))
|
||||||
#elif (ACC_CC_CLANG || ACC_CC_GNUC)
|
#elif (ACC_CC_CLANG || ACC_CC_GNUC)
|
||||||
# define attribute_format(a,b) __attribute__((__format__(__printf__,a,b)));
|
# define attribute_format(a,b) __attribute__((__format__(__printf__,a,b)))
|
||||||
#else
|
#else
|
||||||
# define attribute_format(a,b) /*empty*/
|
# define attribute_format(a,b) /*empty*/
|
||||||
#endif
|
#endif
|
||||||
@@ -377,6 +377,9 @@ private:
|
|||||||
|
|
||||||
|
|
||||||
namespace compile_time {
|
namespace compile_time {
|
||||||
|
constexpr size_t string_len(const char *a) {
|
||||||
|
return *a == '\0' ? 0 : 1 + string_len(a + 1);
|
||||||
|
}
|
||||||
constexpr bool string_eq(const char *a, const char *b) {
|
constexpr bool string_eq(const char *a, const char *b) {
|
||||||
return *a == *b && (*a == '\0' || string_eq(a + 1, b + 1));
|
return *a == *b && (*a == '\0' || string_eq(a + 1, b + 1));
|
||||||
}
|
}
|
||||||
@@ -816,6 +819,13 @@ inline T *raw_bytes(T *ptr, size_t size_in_bytes) {
|
|||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// default: for any regular pointer, raw_index_bytes() is just "pointer + index"
|
||||||
|
// NOTE: index == number of elements, *NOT* size in bytes!
|
||||||
|
template <class T>
|
||||||
|
inline T *raw_index_bytes(T *ptr, size_t index, size_t size_in_bytes) {
|
||||||
|
typedef T element_type;
|
||||||
|
return raw_bytes(ptr, mem_size(sizeof(element_type), index, size_in_bytes)) + index;
|
||||||
|
}
|
||||||
|
|
||||||
#if (ACC_OS_CYGWIN || ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_EMX || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64)
|
#if (ACC_OS_CYGWIN || ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_EMX || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64)
|
||||||
# if defined(INVALID_HANDLE_VALUE) || defined(MAKEWORD) || defined(RT_CURSOR)
|
# if defined(INVALID_HANDLE_VALUE) || defined(MAKEWORD) || defined(RT_CURSOR)
|
||||||
|
|||||||
+7
-4
@@ -38,6 +38,7 @@
|
|||||||
|
|
||||||
static bool head_done = 0;
|
static bool head_done = 0;
|
||||||
|
|
||||||
|
// also see UPX_CONFIG_DISABLE_GITREV in CMakeLists.txt
|
||||||
#if defined(UPX_VERSION_GITREV)
|
#if defined(UPX_VERSION_GITREV)
|
||||||
const char gitrev[] = UPX_VERSION_GITREV;
|
const char gitrev[] = UPX_VERSION_GITREV;
|
||||||
#else
|
#else
|
||||||
@@ -381,11 +382,13 @@ void show_version(bool one_line)
|
|||||||
FILE *fp = stdout;
|
FILE *fp = stdout;
|
||||||
const char *v;
|
const char *v;
|
||||||
|
|
||||||
fprintf(fp, "upx %s\n", UPX_VERSION_STRING
|
#if defined(UPX_VERSION_GIT_DESCRIBE)
|
||||||
#if defined(UPX_VERSION_GITREV)
|
fprintf(fp, "upx %s\n", UPX_VERSION_GIT_DESCRIBE);
|
||||||
"-git-" UPX_VERSION_GITREV
|
#elif defined(UPX_VERSION_GITREV)
|
||||||
|
fprintf(fp, "upx %s\n", UPX_VERSION_STRING "-git-" UPX_VERSION_GITREV);
|
||||||
|
#else
|
||||||
|
fprintf(fp, "upx %s\n", UPX_VERSION_STRING);
|
||||||
#endif
|
#endif
|
||||||
);
|
|
||||||
if (one_line)
|
if (one_line)
|
||||||
return;
|
return;
|
||||||
#if (WITH_NRV)
|
#if (WITH_NRV)
|
||||||
|
|||||||
+3
-3
@@ -36,9 +36,9 @@ LeFile::LeFile(InputFile *f) :
|
|||||||
fif(f), fof(nullptr),
|
fif(f), fof(nullptr),
|
||||||
le_offset(0), exe_offset(0)
|
le_offset(0), exe_offset(0)
|
||||||
{
|
{
|
||||||
COMPILE_TIME_ASSERT(sizeof(le_header_t) == 196);
|
COMPILE_TIME_ASSERT(sizeof(le_header_t) == 196)
|
||||||
COMPILE_TIME_ASSERT(sizeof(le_object_table_entry_t) == 24);
|
COMPILE_TIME_ASSERT(sizeof(le_object_table_entry_t) == 24)
|
||||||
COMPILE_TIME_ASSERT(sizeof(le_pagemap_entry_t) == 4);
|
COMPILE_TIME_ASSERT(sizeof(le_pagemap_entry_t) == 4)
|
||||||
memset(&ih,0,sizeof ih);
|
memset(&ih,0,sizeof ih);
|
||||||
memset(&oh,0,sizeof oh);
|
memset(&oh,0,sizeof oh);
|
||||||
iobject_table = oobject_table = nullptr;
|
iobject_table = oobject_table = nullptr;
|
||||||
|
|||||||
+10
-5
@@ -375,6 +375,9 @@ static int do_option(int optc, const char *arg) {
|
|||||||
case 'f':
|
case 'f':
|
||||||
opt->force++;
|
opt->force++;
|
||||||
break;
|
break;
|
||||||
|
case 529:
|
||||||
|
opt->force_overwrite = true;
|
||||||
|
break;
|
||||||
case 909:
|
case 909:
|
||||||
set_cmd(CMD_FILEINFO);
|
set_cmd(CMD_FILEINFO);
|
||||||
break;
|
break;
|
||||||
@@ -801,6 +804,7 @@ int main_get_options(int argc, char **argv) {
|
|||||||
// options
|
// options
|
||||||
{"force", 0, N, 'f'}, // force overwrite of output files
|
{"force", 0, N, 'f'}, // force overwrite of output files
|
||||||
{"force-compress", 0, N, 'f'}, // and compression of suspicious files
|
{"force-compress", 0, N, 'f'}, // and compression of suspicious files
|
||||||
|
{"force-overwrite", 0x90, N, 529}, // force overwrite of output files
|
||||||
{"info", 0, N, 'i'}, // info mode
|
{"info", 0, N, 'i'}, // info mode
|
||||||
{"no-env", 0x10, N, 519}, // no environment var
|
{"no-env", 0x10, N, 519}, // no environment var
|
||||||
{"no-mode", 0x10, N, 526}, // do not preserve mode (permissions)
|
{"no-mode", 0x10, N, 526}, // do not preserve mode (permissions)
|
||||||
@@ -897,7 +901,7 @@ int main_get_options(int argc, char **argv) {
|
|||||||
// dos/sys
|
// dos/sys
|
||||||
// unix
|
// unix
|
||||||
{"blocksize", 0x31, N, 660}, // --blocksize=
|
{"blocksize", 0x31, N, 660}, // --blocksize=
|
||||||
{"force-execve", 0x10, N, 661}, // force linux/386 execve format
|
{"force-execve", 0x90, N, 661}, // force linux/386 execve format
|
||||||
{"is_ptinterp", 0x10, N, 663}, // linux/elf386 PT_INTERP program
|
{"is_ptinterp", 0x10, N, 663}, // linux/elf386 PT_INTERP program
|
||||||
{"use_ptinterp", 0x10, N, 664}, // linux/elf386 PT_INTERP program
|
{"use_ptinterp", 0x10, N, 664}, // linux/elf386 PT_INTERP program
|
||||||
{"make_ptinterp", 0x10, N, 665}, // linux/elf386 PT_INTERP program
|
{"make_ptinterp", 0x10, N, 665}, // linux/elf386 PT_INTERP program
|
||||||
@@ -912,7 +916,7 @@ int main_get_options(int argc, char **argv) {
|
|||||||
{"unmap-all-pages", 0x10, N, 674}, // linux /proc/self/exe vanishes
|
{"unmap-all-pages", 0x10, N, 674}, // linux /proc/self/exe vanishes
|
||||||
{"preserve-build-id", 0, N, 675},
|
{"preserve-build-id", 0, N, 675},
|
||||||
{"android-shlib", 0, N, 676},
|
{"android-shlib", 0, N, 676},
|
||||||
{"force-pie", 0, N, 677},
|
{"force-pie", 0x90, N, 677},
|
||||||
// watcom/le
|
// watcom/le
|
||||||
{"le", 0x10, N, 620}, // produce LE output
|
{"le", 0x10, N, 620}, // produce LE output
|
||||||
// win32/pe
|
// win32/pe
|
||||||
@@ -1263,11 +1267,12 @@ int upx_main(int argc, char *argv[]) {
|
|||||||
return exit_code;
|
return exit_code;
|
||||||
|
|
||||||
if (gitrev[0]) {
|
if (gitrev[0]) {
|
||||||
bool warn = true;
|
// also see UPX_CONFIG_DISABLE_GITREV in CMakeLists.txt
|
||||||
|
bool warn_gitrev = true;
|
||||||
const char *ee = getenv("UPX_DEBUG_DISABLE_GITREV_WARNING");
|
const char *ee = getenv("UPX_DEBUG_DISABLE_GITREV_WARNING");
|
||||||
if (ee && ee[0] && strcmp(ee, "1") == 0)
|
if (ee && ee[0] && strcmp(ee, "1") == 0)
|
||||||
warn = false;
|
warn_gitrev = false;
|
||||||
if (warn) {
|
if (warn_gitrev) {
|
||||||
FILE *f = stdout;
|
FILE *f = stdout;
|
||||||
int fg = con_fg(f, FG_RED);
|
int fg = con_fg(f, FG_RED);
|
||||||
con_fprintf(
|
con_fprintf(
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ struct options_t {
|
|||||||
int backup;
|
int backup;
|
||||||
int console;
|
int console;
|
||||||
int force;
|
int force;
|
||||||
|
bool force_overwrite;
|
||||||
int info_mode;
|
int info_mode;
|
||||||
bool ignorewarn;
|
bool ignorewarn;
|
||||||
bool no_env;
|
bool no_env;
|
||||||
|
|||||||
+1
-1
@@ -236,7 +236,7 @@ int PackCom::canUnpack()
|
|||||||
void PackCom::unpack(OutputFile *fo)
|
void PackCom::unpack(OutputFile *fo)
|
||||||
{
|
{
|
||||||
ibuf.alloc(file_size);
|
ibuf.alloc(file_size);
|
||||||
obuf.allocForUncompression(ph.u_len);
|
obuf.allocForDecompression(ph.u_len);
|
||||||
|
|
||||||
// read whole file
|
// read whole file
|
||||||
fi->seek(0,SEEK_SET);
|
fi->seek(0,SEEK_SET);
|
||||||
|
|||||||
+1
-1
@@ -416,7 +416,7 @@ void PackDjgpp2::unpack(OutputFile *fo)
|
|||||||
handleStub(fo);
|
handleStub(fo);
|
||||||
|
|
||||||
ibuf.alloc(ph.c_len);
|
ibuf.alloc(ph.c_len);
|
||||||
obuf.allocForUncompression(ph.u_len);
|
obuf.allocForDecompression(ph.u_len);
|
||||||
|
|
||||||
fi->seek(coff_offset + ph.buf_offset + ph.getPackHeaderSize(), SEEK_SET);
|
fi->seek(coff_offset + ph.buf_offset + ph.getPackHeaderSize(), SEEK_SET);
|
||||||
fi->readx(ibuf, ph.c_len);
|
fi->readx(ibuf, ph.c_len);
|
||||||
|
|||||||
+1
-1
@@ -689,7 +689,7 @@ int PackExe::canUnpack()
|
|||||||
void PackExe::unpack(OutputFile *fo)
|
void PackExe::unpack(OutputFile *fo)
|
||||||
{
|
{
|
||||||
ibuf.alloc(file_size);
|
ibuf.alloc(file_size);
|
||||||
obuf.allocForUncompression(ph.u_len);
|
obuf.allocForDecompression(ph.u_len);
|
||||||
|
|
||||||
// read the file
|
// read the file
|
||||||
fi->seek(ih.headsize16*16,SEEK_SET);
|
fi->seek(ih.headsize16*16,SEEK_SET);
|
||||||
|
|||||||
+7
-4
@@ -1978,7 +1978,7 @@ bool PackLinuxElf32::calls_crt1(Elf32_Rel const *rel, int sz)
|
|||||||
#include "p_elf_enum.h"
|
#include "p_elf_enum.h"
|
||||||
#undef WANT_REL_ENUM
|
#undef WANT_REL_ENUM
|
||||||
|
|
||||||
int PackLinuxElf32::canUnpack() // really 'bool'
|
int PackLinuxElf32::canUnpack() // bool, except -1: format known, but not packed
|
||||||
{
|
{
|
||||||
if (checkEhdr(&ehdri)) {
|
if (checkEhdr(&ehdri)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -2409,7 +2409,7 @@ proceed: ;
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PackLinuxElf64::canUnpack() // really 'bool'
|
int PackLinuxElf64::canUnpack() // bool, except -1: format known, but not packed
|
||||||
{
|
{
|
||||||
if (checkEhdr(&ehdri)) {
|
if (checkEhdr(&ehdri)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -2497,6 +2497,9 @@ PackLinuxElf64::canPack()
|
|||||||
max_offset = UPX_MAX(max_offset, get_te64(&phdr->p_filesz) + get_te64(&phdr->p_offset));
|
max_offset = UPX_MAX(max_offset, get_te64(&phdr->p_filesz) + get_te64(&phdr->p_offset));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (canUnpack() > 0) {
|
||||||
|
throwAlreadyPacked();
|
||||||
|
}
|
||||||
// We want to compress position-independent executable (gcc -pie)
|
// We want to compress position-independent executable (gcc -pie)
|
||||||
// main programs, but compressing a shared library must be avoided
|
// main programs, but compressing a shared library must be avoided
|
||||||
// because the result is no longer usable. In theory, there is no way
|
// because the result is no longer usable. In theory, there is no way
|
||||||
@@ -4448,7 +4451,7 @@ int PackLinuxElf64::pack2(OutputFile *fo, Filter &ft)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // main program, not shared library
|
else // main program, not shared library
|
||||||
if (hdr_u_len < (u64_t)x.size) {
|
if (hdr_u_len <= (u64_t)x.size) {
|
||||||
if (0 == nx) { // 1st PT_LOAD64 must cover Ehdr at 0==p_offset
|
if (0 == nx) { // 1st PT_LOAD64 must cover Ehdr at 0==p_offset
|
||||||
unsigned const delta = hdr_u_len;
|
unsigned const delta = hdr_u_len;
|
||||||
if (ft.id < 0x40) {
|
if (ft.id < 0x40) {
|
||||||
@@ -5337,7 +5340,7 @@ PackLinuxElf32x86::~PackLinuxElf32x86()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
int PackLinuxElf32x86::canUnpack() // really 'bool'
|
int PackLinuxElf32x86::canUnpack() // bool, except -1: format known, but not packed
|
||||||
{
|
{
|
||||||
if (super::canUnpack()) {
|
if (super::canUnpack()) {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
+4
-4
@@ -42,7 +42,7 @@ public:
|
|||||||
/*virtual void buildLoader(const Filter *);*/
|
/*virtual void buildLoader(const Filter *);*/
|
||||||
virtual int getVersion() const override { return 14; } // upx-3.96 cannot upack, for instance
|
virtual int getVersion() const override { return 14; } // upx-3.96 cannot upack, for instance
|
||||||
virtual bool canUnpackVersion(int version) const override { return (version >= 11); }
|
virtual bool canUnpackVersion(int version) const override { return (version >= 11); }
|
||||||
virtual int canUnpack() override { return super::canUnpack(); } // really 'bool'
|
virtual int canUnpack() override { return super::canUnpack(); } // bool, except -1: format known, but not packed
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual const int *getCompressionMethods(int method, int level) const override;
|
virtual const int *getCompressionMethods(int method, int level) const override;
|
||||||
@@ -123,7 +123,7 @@ protected:
|
|||||||
virtual void PackLinuxElf32help1(InputFile *f);
|
virtual void PackLinuxElf32help1(InputFile *f);
|
||||||
virtual int checkEhdr(Elf32_Ehdr const *ehdr) const;
|
virtual int checkEhdr(Elf32_Ehdr const *ehdr) const;
|
||||||
virtual bool canPack() override;
|
virtual bool canPack() override;
|
||||||
virtual int canUnpack() override; // really 'bool'
|
virtual int canUnpack() override; // bool, except -1: format known, but not packed
|
||||||
|
|
||||||
// These ARM routines are essentially common to big/little endian,
|
// These ARM routines are essentially common to big/little endian,
|
||||||
// but the class hierarchy splits after this class.
|
// but the class hierarchy splits after this class.
|
||||||
@@ -266,7 +266,7 @@ protected:
|
|||||||
virtual void PackLinuxElf64help1(InputFile *f);
|
virtual void PackLinuxElf64help1(InputFile *f);
|
||||||
virtual int checkEhdr(Elf64_Ehdr const *ehdr) const;
|
virtual int checkEhdr(Elf64_Ehdr const *ehdr) const;
|
||||||
virtual bool canPack() override;
|
virtual bool canPack() override;
|
||||||
virtual int canUnpack() override; // really 'bool'
|
virtual int canUnpack() override; // bool, except -1: format known, but not packed
|
||||||
|
|
||||||
virtual void pack1(OutputFile *, Filter &) override; // generate executable header
|
virtual void pack1(OutputFile *, Filter &) override; // generate executable header
|
||||||
virtual void asl_pack2_Shdrs(OutputFile *); // AndroidSharedLibrary processes Shdrs
|
virtual void asl_pack2_Shdrs(OutputFile *); // AndroidSharedLibrary processes Shdrs
|
||||||
@@ -559,7 +559,7 @@ public:
|
|||||||
virtual const char *getName() const override { return "linux/i386"; }
|
virtual const char *getName() const override { return "linux/i386"; }
|
||||||
virtual const char *getFullName(const options_t *) const override { return "i386-linux.elf"; }
|
virtual const char *getFullName(const options_t *) const override { return "i386-linux.elf"; }
|
||||||
virtual const int *getFilters() const override;
|
virtual const int *getFilters() const override;
|
||||||
virtual int canUnpack() override; // reallly 'bool'
|
virtual int canUnpack() override; // bool, except -1: format known, but not packed
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void pack1(OutputFile *, Filter &) override; // generate executable header
|
virtual void pack1(OutputFile *, Filter &) override; // generate executable header
|
||||||
|
|||||||
+1
-1
@@ -111,7 +111,7 @@ __packed_struct(Mach_command) // generic prefix
|
|||||||
Word data[2]; // because cmdsize >= 16
|
Word data[2]; // because cmdsize >= 16
|
||||||
#define WANT_MACH_SEGMENT_ENUM 1
|
#define WANT_MACH_SEGMENT_ENUM 1
|
||||||
#include "p_mach_enum.h"
|
#include "p_mach_enum.h"
|
||||||
__packed_struct_end();
|
__packed_struct_end()
|
||||||
|
|
||||||
template <class TMachITypes>
|
template <class TMachITypes>
|
||||||
__packed_struct(Mach_segment_command)
|
__packed_struct(Mach_segment_command)
|
||||||
|
|||||||
+3
-3
@@ -151,7 +151,7 @@ bool PackPs1::readBkupHeader()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define INIT_BH_BKUP(p, l) {(p)->id = '1'; (p)->len = l;}
|
#define INIT_BH_BKUP(p, l) ACC_BLOCK_BEGIN {(p)->id = '1'; (p)->len = l;} ACC_BLOCK_END
|
||||||
#define ADLER16(a) (((a) >> 16) ^ ((a) & 0xffff))
|
#define ADLER16(a) (((a) >> 16) ^ ((a) & 0xffff))
|
||||||
|
|
||||||
void PackPs1::putBkupHeader(const unsigned char *src, unsigned char *dst, unsigned *len)
|
void PackPs1::putBkupHeader(const unsigned char *src, unsigned char *dst, unsigned *len)
|
||||||
@@ -189,7 +189,7 @@ bool PackPs1::getBkupHeader(unsigned char *p, unsigned char *dst)
|
|||||||
|
|
||||||
if (src && (src->id == '1' && src->len < SZ_IH_BKUP) && dst)
|
if (src && (src->id == '1' && src->len < SZ_IH_BKUP) && dst)
|
||||||
{
|
{
|
||||||
unsigned char *unc_bh = New(unsigned char, MemBuffer::getSizeForUncompression(SZ_IH_BKUP));
|
unsigned char *unc_bh = New(unsigned char, MemBuffer::getSizeForDecompression(SZ_IH_BKUP));
|
||||||
|
|
||||||
unsigned sz_bh = SZ_IH_BKUP;
|
unsigned sz_bh = SZ_IH_BKUP;
|
||||||
int r = upx_decompress((const unsigned char *)&src->ih_bkup, src->len,
|
int r = upx_decompress((const unsigned char *)&src->ih_bkup, src->len,
|
||||||
@@ -716,7 +716,7 @@ void PackPs1::unpack(OutputFile *fo)
|
|||||||
const unsigned pad = oh.tx_len - ph.u_len;
|
const unsigned pad = oh.tx_len - ph.u_len;
|
||||||
|
|
||||||
ibuf.alloc(fdata_size > PS_HDR_SIZE ? fdata_size : PS_HDR_SIZE);
|
ibuf.alloc(fdata_size > PS_HDR_SIZE ? fdata_size : PS_HDR_SIZE);
|
||||||
obuf.allocForUncompression(ph.u_len, pad);
|
obuf.allocForDecompression(ph.u_len, pad);
|
||||||
|
|
||||||
fi->seek(PS_HDR_SIZE, SEEK_SET);
|
fi->seek(PS_HDR_SIZE, SEEK_SET);
|
||||||
fi->readx(ibuf, fdata_size);
|
fi->readx(ibuf, fdata_size);
|
||||||
|
|||||||
+2
-2
@@ -46,7 +46,7 @@ static const
|
|||||||
PackTmt::PackTmt(InputFile *f) : super(f)
|
PackTmt::PackTmt(InputFile *f) : super(f)
|
||||||
{
|
{
|
||||||
bele = &N_BELE_RTP::le_policy;
|
bele = &N_BELE_RTP::le_policy;
|
||||||
COMPILE_TIME_ASSERT(sizeof(tmt_header_t) == 44);
|
COMPILE_TIME_ASSERT(sizeof(tmt_header_t) == 44)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -320,7 +320,7 @@ void PackTmt::unpack(OutputFile *fo)
|
|||||||
Packer::handleStub(fi,fo,adam_offset);
|
Packer::handleStub(fi,fo,adam_offset);
|
||||||
|
|
||||||
ibuf.alloc(ph.c_len);
|
ibuf.alloc(ph.c_len);
|
||||||
obuf.allocForUncompression(ph.u_len);
|
obuf.allocForDecompression(ph.u_len);
|
||||||
|
|
||||||
fi->seek(adam_offset + ph.buf_offset + ph.getPackHeaderSize(),SEEK_SET);
|
fi->seek(adam_offset + ph.buf_offset + ph.getPackHeaderSize(),SEEK_SET);
|
||||||
fi->readx(ibuf,ph.c_len);
|
fi->readx(ibuf,ph.c_len);
|
||||||
|
|||||||
+2
-2
@@ -46,7 +46,7 @@ static const CLANG_FORMAT_DUMMY_STATEMENT
|
|||||||
|
|
||||||
PackTos::PackTos(InputFile *f) : super(f) {
|
PackTos::PackTos(InputFile *f) : super(f) {
|
||||||
bele = &N_BELE_RTP::be_policy;
|
bele = &N_BELE_RTP::be_policy;
|
||||||
COMPILE_TIME_ASSERT(FH_SIZE == 28);
|
COMPILE_TIME_ASSERT(FH_SIZE == 28)
|
||||||
COMPILE_TIME_ASSERT_ALIGNED1(tos_header_t)
|
COMPILE_TIME_ASSERT_ALIGNED1(tos_header_t)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -694,7 +694,7 @@ int PackTos::canUnpack() {
|
|||||||
|
|
||||||
void PackTos::unpack(OutputFile *fo) {
|
void PackTos::unpack(OutputFile *fo) {
|
||||||
ibuf.alloc(ph.c_len);
|
ibuf.alloc(ph.c_len);
|
||||||
obuf.allocForUncompression(ph.u_len);
|
obuf.allocForDecompression(ph.u_len);
|
||||||
|
|
||||||
fi->seek(FH_SIZE + ph.buf_offset + ph.getPackHeaderSize(), SEEK_SET);
|
fi->seek(FH_SIZE + ph.buf_offset + ph.getPackHeaderSize(), SEEK_SET);
|
||||||
fi->readx(ibuf, ph.c_len);
|
fi->readx(ibuf, ph.c_len);
|
||||||
|
|||||||
+5
-5
@@ -49,11 +49,11 @@
|
|||||||
PackUnix::PackUnix(InputFile *f) :
|
PackUnix::PackUnix(InputFile *f) :
|
||||||
super(f), exetype(0), blocksize(0), overlay_offset(0), lsize(0)
|
super(f), exetype(0), blocksize(0), overlay_offset(0), lsize(0)
|
||||||
{
|
{
|
||||||
COMPILE_TIME_ASSERT(sizeof(Elf32_Ehdr) == 52);
|
COMPILE_TIME_ASSERT(sizeof(Elf32_Ehdr) == 52)
|
||||||
COMPILE_TIME_ASSERT(sizeof(Elf32_Phdr) == 32);
|
COMPILE_TIME_ASSERT(sizeof(Elf32_Phdr) == 32)
|
||||||
COMPILE_TIME_ASSERT(sizeof(b_info) == 12);
|
COMPILE_TIME_ASSERT(sizeof(b_info) == 12)
|
||||||
COMPILE_TIME_ASSERT(sizeof(l_info) == 12);
|
COMPILE_TIME_ASSERT(sizeof(l_info) == 12)
|
||||||
COMPILE_TIME_ASSERT(sizeof(p_info) == 12);
|
COMPILE_TIME_ASSERT(sizeof(p_info) == 12)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -49,7 +49,7 @@ public:
|
|||||||
virtual void unpack(OutputFile *fo) override;
|
virtual void unpack(OutputFile *fo) override;
|
||||||
|
|
||||||
virtual bool canPack() override;
|
virtual bool canPack() override;
|
||||||
virtual int canUnpack() override; // really 'bool'
|
virtual int canUnpack() override; // bool, except -1: format known, but not packed
|
||||||
int find_overlay_offset(MemBuffer const &buf);
|
int find_overlay_offset(MemBuffer const &buf);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
+9
-10
@@ -108,16 +108,16 @@ typename T::Shdr const *PackVmlinuxBase<T>::getElfSections()
|
|||||||
if (ehdri.e_shentsize != sizeof(*shdri)
|
if (ehdri.e_shentsize != sizeof(*shdri)
|
||||||
|| file_size_u < ehdri.e_shoff
|
|| file_size_u < ehdri.e_shoff
|
||||||
|| file_size_u < ehdri.e_shoff + mem_size(ehdri.e_shentsize, e_shnum)) {
|
|| file_size_u < ehdri.e_shoff + mem_size(ehdri.e_shentsize, e_shnum)) {
|
||||||
throwCantPack("bad ElfXX_Shdrs");
|
infoWarning("bad ElfXX_Shdrs");
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
shdri = new Shdr[(unsigned) e_shnum];
|
shdri = new Shdr[(unsigned) e_shnum];
|
||||||
fi->seek(ehdri.e_shoff, SEEK_SET);
|
fi->seek(ehdri.e_shoff, SEEK_SET);
|
||||||
fi->readx(shdri, e_shnum * sizeof(*shdri));
|
fi->readx(shdri, e_shnum * sizeof(*shdri));
|
||||||
unsigned const e_shstrndx = ehdri.e_shstrndx;
|
unsigned const e_shstrndx = ehdri.e_shstrndx;
|
||||||
if (e_shnum <= e_shstrndx) {
|
if (e_shnum <= e_shstrndx) {
|
||||||
char msg[50]; snprintf(msg, sizeof(msg),
|
infoWarning("bad .e_shstrndx %#x", e_shstrndx);
|
||||||
"bad .e_shstrndx %#x", e_shstrndx);
|
return nullptr;
|
||||||
throwCantPack(msg);
|
|
||||||
}
|
}
|
||||||
Shdr const *p = &shdri[e_shstrndx];
|
Shdr const *p = &shdri[e_shstrndx];
|
||||||
if (Shdr::SHT_STRTAB==p->sh_type
|
if (Shdr::SHT_STRTAB==p->sh_type
|
||||||
@@ -128,9 +128,8 @@ typename T::Shdr const *PackVmlinuxBase<T>::getElfSections()
|
|||||||
// 10 == (1+ strlen(".shstrtab"))
|
// 10 == (1+ strlen(".shstrtab"))
|
||||||
) {
|
) {
|
||||||
if (p->sh_size <= p->sh_name) {
|
if (p->sh_size <= p->sh_name) {
|
||||||
char msg[50]; snprintf(msg, sizeof(msg),
|
infoWarning("bad .shstrtab _Shdr[%u]", (unsigned)ehdri.e_shstrndx);
|
||||||
"bad .shstrtab _Shdr[%u]", (unsigned)ehdri.e_shstrndx);
|
return nullptr;
|
||||||
throwCantPack(msg);
|
|
||||||
}
|
}
|
||||||
shstrtab = new char[1+ p->sh_size];
|
shstrtab = new char[1+ p->sh_size];
|
||||||
fi->seek(p->sh_offset, SEEK_SET);
|
fi->seek(p->sh_offset, SEEK_SET);
|
||||||
@@ -632,7 +631,7 @@ void PackVmlinuxBase<T>::unpack(OutputFile *fo)
|
|||||||
ph.c_len = p_note0->sh_size - sizeof(word);
|
ph.c_len = p_note0->sh_size - sizeof(word);
|
||||||
ibuf.alloc(ph.c_len);
|
ibuf.alloc(ph.c_len);
|
||||||
fi->readx(ibuf, ph.c_len);
|
fi->readx(ibuf, ph.c_len);
|
||||||
obuf.allocForUncompression(ph.u_len);
|
obuf.allocForDecompression(ph.u_len);
|
||||||
decompress(ibuf, obuf, false);
|
decompress(ibuf, obuf, false);
|
||||||
fo->write(obuf, ph.u_len);
|
fo->write(obuf, ph.u_len);
|
||||||
obuf.dealloc();
|
obuf.dealloc();
|
||||||
@@ -644,7 +643,7 @@ void PackVmlinuxBase<T>::unpack(OutputFile *fo)
|
|||||||
}
|
}
|
||||||
ibuf.alloc(ph.c_len);
|
ibuf.alloc(ph.c_len);
|
||||||
fi->readx(ibuf, ph.c_len);
|
fi->readx(ibuf, ph.c_len);
|
||||||
obuf.allocForUncompression(ph.u_len);
|
obuf.allocForDecompression(ph.u_len);
|
||||||
decompress(ibuf, obuf);
|
decompress(ibuf, obuf);
|
||||||
|
|
||||||
Filter ft(ph.level);
|
Filter ft(ph.level);
|
||||||
@@ -661,7 +660,7 @@ void PackVmlinuxBase<T>::unpack(OutputFile *fo)
|
|||||||
ph.c_len = p_note1->sh_size - sizeof(word);
|
ph.c_len = p_note1->sh_size - sizeof(word);
|
||||||
ibuf.alloc(ph.c_len);
|
ibuf.alloc(ph.c_len);
|
||||||
fi->readx(ibuf, p_note1->sh_size - sizeof(ph.u_len));
|
fi->readx(ibuf, p_note1->sh_size - sizeof(ph.u_len));
|
||||||
obuf.allocForUncompression(ph.u_len);
|
obuf.allocForDecompression(ph.u_len);
|
||||||
decompress(ibuf, obuf, false);
|
decompress(ibuf, obuf, false);
|
||||||
fo->write(obuf, ph.u_len);
|
fo->write(obuf, ph.u_len);
|
||||||
obuf.dealloc();
|
obuf.dealloc();
|
||||||
|
|||||||
+3
-3
@@ -56,7 +56,7 @@ PackVmlinuzI386::PackVmlinuzI386(InputFile *f) :
|
|||||||
, filter_len(0)
|
, filter_len(0)
|
||||||
{
|
{
|
||||||
bele = &N_BELE_RTP::le_policy;
|
bele = &N_BELE_RTP::le_policy;
|
||||||
COMPILE_TIME_ASSERT(sizeof(boot_sect_t) == 0x250);
|
COMPILE_TIME_ASSERT(sizeof(boot_sect_t) == 0x250)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -687,7 +687,7 @@ void PackVmlinuzI386::unpack(OutputFile *fo)
|
|||||||
// FIXME: but we could write the uncompressed "vmlinux" image
|
// FIXME: but we could write the uncompressed "vmlinux" image
|
||||||
|
|
||||||
ibuf.alloc(ph.c_len);
|
ibuf.alloc(ph.c_len);
|
||||||
obuf.allocForUncompression(ph.u_len);
|
obuf.allocForDecompression(ph.u_len);
|
||||||
|
|
||||||
fi->seek(setup_size + ph.buf_offset + ph.getPackHeaderSize(), SEEK_SET);
|
fi->seek(setup_size + ph.buf_offset + ph.getPackHeaderSize(), SEEK_SET);
|
||||||
fi->readx(ibuf, ph.c_len);
|
fi->readx(ibuf, ph.c_len);
|
||||||
@@ -1044,7 +1044,7 @@ void PackVmlinuzARMEL::unpack(OutputFile *fo)
|
|||||||
// FIXME: but we could write the uncompressed "vmlinux" image
|
// FIXME: but we could write the uncompressed "vmlinux" image
|
||||||
|
|
||||||
ibuf.alloc(ph.c_len);
|
ibuf.alloc(ph.c_len);
|
||||||
obuf.allocForUncompression(ph.u_len);
|
obuf.allocForDecompression(ph.u_len);
|
||||||
|
|
||||||
fi->seek(setup_size + ph.buf_offset + ph.getPackHeaderSize(), SEEK_SET);
|
fi->seek(setup_size + ph.buf_offset + ph.getPackHeaderSize(), SEEK_SET);
|
||||||
fi->readx(ibuf, ph.c_len);
|
fi->readx(ibuf, ph.c_len);
|
||||||
|
|||||||
+1
-1
@@ -756,7 +756,7 @@ void PackWcle::decodeObjectTable()
|
|||||||
|
|
||||||
void PackWcle::decodeImage()
|
void PackWcle::decodeImage()
|
||||||
{
|
{
|
||||||
mb_oimage.allocForUncompression(ph.u_len);
|
mb_oimage.allocForDecompression(ph.u_len);
|
||||||
oimage = mb_oimage;
|
oimage = mb_oimage;
|
||||||
|
|
||||||
decompress(iimage + ph.buf_offset + ph.getPackHeaderSize(),oimage);
|
decompress(iimage + ph.buf_offset + ph.getPackHeaderSize(),oimage);
|
||||||
|
|||||||
+2
-4
@@ -155,12 +155,10 @@ protected:
|
|||||||
public:
|
public:
|
||||||
// canPack() should throw a cantPackException eplaining why it
|
// canPack() should throw a cantPackException eplaining why it
|
||||||
// cannot pack a recognized format.
|
// cannot pack a recognized format.
|
||||||
// canUnpack() can return -1 meaning "format recognized, but file
|
|
||||||
// is definitely not packed" (see packmast.cpp).
|
|
||||||
virtual bool canPack() = 0;
|
virtual bool canPack() = 0;
|
||||||
|
// canUnpack() can return -1 meaning "format recognized, but file
|
||||||
|
// is definitely not packed". See packmast.cpp try_unpack().
|
||||||
virtual int canUnpack() = 0;
|
virtual int canUnpack() = 0;
|
||||||
virtual int canTest() { return canUnpack(); }
|
|
||||||
virtual int canList() { return canUnpack(); }
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// main compression drivers
|
// main compression drivers
|
||||||
|
|||||||
+1
-3
@@ -217,10 +217,8 @@ Packer *PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
|
|||||||
D(PackSys);
|
D(PackSys);
|
||||||
D(PackCom);
|
D(PackCom);
|
||||||
|
|
||||||
// Mach (MacOS X PowerPC)
|
// Mach (macOS)
|
||||||
D(PackDylibAMD64);
|
D(PackDylibAMD64);
|
||||||
D(PackMachPPC32);
|
|
||||||
D(PackMachPPC64);
|
|
||||||
D(PackMachI386);
|
D(PackMachI386);
|
||||||
D(PackMachAMD64);
|
D(PackMachAMD64);
|
||||||
D(PackMachARMEL);
|
D(PackMachARMEL);
|
||||||
|
|||||||
+18
-17
@@ -39,7 +39,6 @@
|
|||||||
//
|
//
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
#include "util/bptr.h"
|
|
||||||
#if (WITH_SPAN >= 2) && 1
|
#if (WITH_SPAN >= 2) && 1
|
||||||
//#define IPTR(type, var) Span<type> var(ibuf, ibuf.getSize(), ibuf)
|
//#define IPTR(type, var) Span<type> var(ibuf, ibuf.getSize(), ibuf)
|
||||||
//#define OPTR(type, var) Span<type> var(obuf, obuf.getSize(), obuf)
|
//#define OPTR(type, var) Span<type> var(obuf, obuf.getSize(), obuf)
|
||||||
@@ -49,6 +48,7 @@
|
|||||||
#define IPTR_C(type, var, first) const Span<type> var(first, ibuf)
|
#define IPTR_C(type, var, first) const Span<type> var(first, ibuf)
|
||||||
#define OPTR_C(type, var, first) const Span<type> var(first, obuf)
|
#define OPTR_C(type, var, first) const Span<type> var(first, obuf)
|
||||||
#else
|
#else
|
||||||
|
#include "util/bptr.h"
|
||||||
//#define IPTR(type, var) BoundedPtr<type> var(ibuf, ibuf.getSize())
|
//#define IPTR(type, var) BoundedPtr<type> var(ibuf, ibuf.getSize())
|
||||||
//#define OPTR(type, var) BoundedPtr<type> var(obuf, obuf.getSize())
|
//#define OPTR(type, var) BoundedPtr<type> var(obuf, obuf.getSize())
|
||||||
#define IPTR_I_D(type, var, disp) BoundedPtr<type> var(ibuf + (disp), ibuf.getSize() - (disp), ibuf + (disp))
|
#define IPTR_I_D(type, var, disp) BoundedPtr<type> var(ibuf + (disp), ibuf.getSize() - (disp), ibuf + (disp))
|
||||||
@@ -873,7 +873,7 @@ void PeFile::addStubImports()
|
|||||||
|
|
||||||
void PeFile::processImports2(unsigned myimport, unsigned) // pass 2
|
void PeFile::processImports2(unsigned myimport, unsigned) // pass 2
|
||||||
{
|
{
|
||||||
COMPILE_TIME_ASSERT(sizeof(import_desc) == 20);
|
COMPILE_TIME_ASSERT(sizeof(import_desc) == 20)
|
||||||
|
|
||||||
if (!ilinker)
|
if (!ilinker)
|
||||||
return;
|
return;
|
||||||
@@ -1386,11 +1386,12 @@ void PeFile::processTls1(Interval *iv,
|
|||||||
// ... and those dwords should be correctly aligned
|
// ... and those dwords should be correctly aligned
|
||||||
if (use_tls_callbacks)
|
if (use_tls_callbacks)
|
||||||
sotls = ALIGN_UP(sotls, cb_size) + 2 * cb_size;
|
sotls = ALIGN_UP(sotls, cb_size) + 2 * cb_size;
|
||||||
|
const unsigned aligned_sotls = ALIGN_UP(sotls, (unsigned)sizeof(LEXX));
|
||||||
|
|
||||||
// the PE loader wants this stuff uncompressed
|
// the PE loader wants this stuff uncompressed
|
||||||
mb_otls.alloc(sotls);
|
mb_otls.alloc(aligned_sotls);
|
||||||
mb_otls.clear();
|
mb_otls.clear();
|
||||||
otls = mb_otls; // => SPAN_S
|
otls = mb_otls; // => otls now is a SPAN_S
|
||||||
unsigned const take1 = sizeof(tls);
|
unsigned const take1 = sizeof(tls);
|
||||||
unsigned const skip1 = IDADDR(PEDIR_TLS);
|
unsigned const skip1 = IDADDR(PEDIR_TLS);
|
||||||
memcpy(otls,ibuf.subref("bad tls %#x", skip1, take1), take1);
|
memcpy(otls,ibuf.subref("bad tls %#x", skip1, take1), take1);
|
||||||
@@ -2599,7 +2600,7 @@ void PeFile::pack0(OutputFile *fo, ht &ih, ht &oh,
|
|||||||
callProcessRelocs(rel, ic);
|
callProcessRelocs(rel, ic);
|
||||||
|
|
||||||
// when the resource is put alone into section 3
|
// when the resource is put alone into section 3
|
||||||
const unsigned res_start = (ic + oam1) &~ oam1;;
|
const unsigned res_start = (ic + oam1) &~ oam1;
|
||||||
if (last_section_rsrc_only)
|
if (last_section_rsrc_only)
|
||||||
callProcessResources(res, ic = res_start);
|
callProcessResources(res, ic = res_start);
|
||||||
|
|
||||||
@@ -2784,7 +2785,7 @@ void PeFile::rebuildRelocs(SPAN_S(upx_byte) & extrainfo, unsigned bits,
|
|||||||
|
|
||||||
if (ODSIZE(PEDIR_RELOC) == 8) // some tricky dlls use this
|
if (ODSIZE(PEDIR_RELOC) == 8) // some tricky dlls use this
|
||||||
{
|
{
|
||||||
omemcpy(obuf + ODADDR(PEDIR_RELOC) - rvamin, "\x0\x0\x0\x0\x8\x0\x0\x0", 8);
|
omemcpy(obuf + (ODADDR(PEDIR_RELOC) - rvamin), "\x0\x0\x0\x0\x8\x0\x0\x0", 8);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2830,7 +2831,7 @@ void PeFile::rebuildRelocs(SPAN_S(upx_byte) & extrainfo, unsigned bits,
|
|||||||
}
|
}
|
||||||
rel.finish (oxrelocs,soxrelocs);
|
rel.finish (oxrelocs,soxrelocs);
|
||||||
|
|
||||||
omemcpy(obuf + ODADDR(PEDIR_RELOC) - rvamin,oxrelocs,soxrelocs);
|
omemcpy(obuf + (ODADDR(PEDIR_RELOC) - rvamin), oxrelocs, soxrelocs);
|
||||||
delete [] oxrelocs; oxrelocs = nullptr;
|
delete [] oxrelocs; oxrelocs = nullptr;
|
||||||
mb_wrkmem.dealloc();
|
mb_wrkmem.dealloc();
|
||||||
|
|
||||||
@@ -2846,7 +2847,7 @@ void PeFile::rebuildExports()
|
|||||||
Export xport((char*)(unsigned char*) ibuf - isection[2].vaddr);
|
Export xport((char*)(unsigned char*) ibuf - isection[2].vaddr);
|
||||||
processExports(&xport);
|
processExports(&xport);
|
||||||
processExports(&xport,ODADDR(PEDIR_EXPORT));
|
processExports(&xport,ODADDR(PEDIR_EXPORT));
|
||||||
omemcpy(obuf + ODADDR(PEDIR_EXPORT) - rvamin, oexport, soexport);
|
omemcpy(obuf + (ODADDR(PEDIR_EXPORT) - rvamin), oexport, soexport);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PeFile::rebuildTls()
|
void PeFile::rebuildTls()
|
||||||
@@ -2876,19 +2877,19 @@ void PeFile::rebuildResources(SPAN_S(upx_byte) & extrainfo, unsigned lastvaddr)
|
|||||||
ICHECK(r + res.offs() - 4, 4);
|
ICHECK(r + res.offs() - 4, 4);
|
||||||
unsigned origoffs = get_le32(r + res.offs() - 4);
|
unsigned origoffs = get_le32(r + res.offs() - 4);
|
||||||
res.newoffs() = origoffs;
|
res.newoffs() = origoffs;
|
||||||
omemcpy(obuf + origoffs - rvamin,r + res.offs(),res.size());
|
omemcpy(obuf + (origoffs - rvamin), r + res.offs(), res.size());
|
||||||
if (icondir_count && res.itype() == RT_GROUP_ICON)
|
if (icondir_count && res.itype() == RT_GROUP_ICON)
|
||||||
{
|
{
|
||||||
set_le16(obuf + origoffs - rvamin + 4,icondir_count);
|
set_le16(obuf + (origoffs - rvamin + 4), icondir_count);
|
||||||
icondir_count = 0;
|
icondir_count = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (res.dirsize()) {
|
if (res.dirsize()) {
|
||||||
upx_byte *p = res.build();
|
upx_byte *p = res.build();
|
||||||
OCHECK(obuf + ODADDR(PEDIR_RESOURCE) - rvamin, 16);
|
OCHECK(obuf + (ODADDR(PEDIR_RESOURCE) - rvamin), 16);
|
||||||
// write back when the original is zeroed
|
// write back when the original is zeroed
|
||||||
if (get_le32(obuf + ODADDR(PEDIR_RESOURCE) - rvamin + 12) == 0)
|
if (get_le32(obuf + (ODADDR(PEDIR_RESOURCE) - rvamin + 12)) == 0)
|
||||||
omemcpy(obuf + ODADDR(PEDIR_RESOURCE) - rvamin, p, res.dirsize());
|
omemcpy(obuf + (ODADDR(PEDIR_RESOURCE) - rvamin), p, res.dirsize());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3024,7 +3025,7 @@ void PeFile::unpack0(OutputFile *fo, const ht &ih, ht &oh,
|
|||||||
checkOverlay(overlay);
|
checkOverlay(overlay);
|
||||||
|
|
||||||
ibuf.alloc(ph.c_len);
|
ibuf.alloc(ph.c_len);
|
||||||
obuf.allocForUncompression(ph.u_len);
|
obuf.allocForDecompression(ph.u_len);
|
||||||
fi->seek(isection[1].rawdataptr - 64 + ph.buf_offset + ph.getPackHeaderSize(),SEEK_SET);
|
fi->seek(isection[1].rawdataptr - 64 + ph.buf_offset + ph.getPackHeaderSize(),SEEK_SET);
|
||||||
fi->readx(ibuf, ibufgood= ph.c_len);
|
fi->readx(ibuf, ibufgood= ph.c_len);
|
||||||
|
|
||||||
@@ -3066,8 +3067,8 @@ void PeFile::unpack0(OutputFile *fo, const ht &ih, ht &oh,
|
|||||||
Filter ft(ph.level);
|
Filter ft(ph.level);
|
||||||
ft.init(ph.filter,oh.codebase - rvamin);
|
ft.init(ph.filter,oh.codebase - rvamin);
|
||||||
ft.cto = (unsigned char) ph.filter_cto;
|
ft.cto = (unsigned char) ph.filter_cto;
|
||||||
OCHECK(obuf + oh.codebase - rvamin, oh.codesize);
|
OCHECK(obuf + (oh.codebase - rvamin), oh.codesize);
|
||||||
ft.unfilter(obuf + oh.codebase - rvamin, oh.codesize);
|
ft.unfilter(obuf + (oh.codebase - rvamin), oh.codesize);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: ih.flags is checked here because of a bug in UPX 0.92
|
// FIXME: ih.flags is checked here because of a bug in UPX 0.92
|
||||||
@@ -3127,7 +3128,7 @@ void PeFile::unpack0(OutputFile *fo, const ht &ih, ht &oh,
|
|||||||
fo->write(ibuf,osection[ic].rawdataptr - fo->getBytesWritten());
|
fo->write(ibuf,osection[ic].rawdataptr - fo->getBytesWritten());
|
||||||
for (ic = 0; ic < objs; ic++)
|
for (ic = 0; ic < objs; ic++)
|
||||||
if (osection[ic].rawdataptr)
|
if (osection[ic].rawdataptr)
|
||||||
fo->write(obuf + osection[ic].vaddr - rvamin,ALIGN_UP(osection[ic].size,oh.filealign));
|
fo->write(obuf + (osection[ic].vaddr - rvamin), ALIGN_UP(osection[ic].size,oh.filealign));
|
||||||
copyOverlay(fo, overlay, obuf);
|
copyOverlay(fo, overlay, obuf);
|
||||||
}
|
}
|
||||||
ibuf.dealloc();
|
ibuf.dealloc();
|
||||||
|
|||||||
@@ -32,8 +32,8 @@
|
|||||||
|
|
||||||
|
|
||||||
#define STUB_AMD64_LINUX_ELF_FOLD_SIZE 2374
|
#define STUB_AMD64_LINUX_ELF_FOLD_SIZE 2374
|
||||||
#define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0xf07673f9
|
#define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0x003c800b
|
||||||
#define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0xc0f8639b
|
#define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0xfde01b27
|
||||||
|
|
||||||
unsigned char stub_amd64_linux_elf_fold[2374] = {
|
unsigned char stub_amd64_linux_elf_fold[2374] = {
|
||||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
@@ -98,16 +98,16 @@ unsigned char stub_amd64_linux_elf_fold[2374] = {
|
|||||||
/* 0x03b0 */ 139, 15, 65,137,240, 76, 57,193,116, 18, 72,131,249, 1, 15,148,
|
/* 0x03b0 */ 139, 15, 65,137,240, 76, 57,193,116, 18, 72,131,249, 1, 15,148,
|
||||||
/* 0x03c0 */ 194, 49,192,133,246, 15,149,192,133,194,116, 8, 76,137, 7, 76,
|
/* 0x03c0 */ 194, 49,192,133,246, 15,149,192,133,194,116, 8, 76,137, 7, 76,
|
||||||
/* 0x03d0 */ 137, 79, 8,195, 72,133,201,116, 6, 72,131,199, 16,235,208,195,
|
/* 0x03d0 */ 137, 79, 8,195, 72,133,201,116, 6, 72,131,199, 16,235,208,195,
|
||||||
/* 0x03e0 */ 65, 87, 65, 86, 73,137,254, 65, 85, 65, 84, 73,137,252, 85, 83,
|
/* 0x03e0 */ 65, 87, 73,137,255, 65, 86, 65, 85, 65, 84, 73,137,252, 85, 83,
|
||||||
/* 0x03f0 */ 72,131,236,104, 76, 3,103, 32, 72,133,246, 72,139,132, 36,160,
|
/* 0x03f0 */ 72,131,236,104, 76, 3,103, 32, 72,133,246, 72,139,132, 36,160,
|
||||||
/* 0x0400 */ 0, 0, 0,137, 84, 36, 60, 72,137,116, 36, 64, 72,137, 76, 36,
|
/* 0x0400 */ 0, 0, 0,137, 84, 36, 60, 72,137,116, 36, 64, 72,137, 76, 36,
|
||||||
/* 0x0410 */ 48, 76,137, 68, 36, 40, 76,137, 76, 36, 32, 72,139, 56, 65, 15,
|
/* 0x0410 */ 48, 76,137, 68, 36, 40, 76,137, 76, 36, 32, 72,139, 56, 65, 15,
|
||||||
/* 0x0420 */ 183, 86, 16,116, 76, 72,139, 71, 32, 72, 1,248, 72, 43,120, 72,
|
/* 0x0420 */ 183, 87, 16,116, 76, 72,139, 71, 32, 72, 1,248, 72, 43,120, 72,
|
||||||
/* 0x0430 */ 102,131,250, 2,117, 4, 72,139,120, 16, 72,139,112, 40, 69, 49,
|
/* 0x0430 */ 102,131,250, 2,117, 4, 72,139,120, 16, 72,139,112, 40, 69, 49,
|
||||||
/* 0x0440 */ 201, 65,131,200,255, 49,210,185, 50, 0, 0, 0, 72,141, 4, 62,
|
/* 0x0440 */ 201, 65,131,200,255, 49,210,185, 50, 0, 0, 0, 72,141, 4, 62,
|
||||||
/* 0x0450 */ 72,137, 68, 36, 72,232,196,253,255,255,102, 65,131,126, 16, 2,
|
/* 0x0450 */ 72,137, 68, 36, 72,232,196,253,255,255,102, 65,131,127, 16, 2,
|
||||||
/* 0x0460 */ 73,137,197, 15,133,172, 0, 0, 0, 69, 49,237,233,164, 0, 0,
|
/* 0x0460 */ 73,137,198, 15,133,172, 0, 0, 0, 69, 49,246,233,164, 0, 0,
|
||||||
/* 0x0470 */ 0,102,131,250, 3, 65, 15,183, 86, 56,185, 16, 0, 0, 0,184,
|
/* 0x0470 */ 0,102,131,250, 3, 65, 15,183, 87, 56,185, 16, 0, 0, 0,184,
|
||||||
/* 0x0480 */ 0, 0, 0, 0, 73,137,248, 76,137,230, 15, 68,200, 72,131,205,
|
/* 0x0480 */ 0, 0, 0, 0, 73,137,248, 76,137,230, 15, 68,200, 72,131,205,
|
||||||
/* 0x0490 */ 255, 49,219, 49,255,131,193, 34,255,202,120, 33,131, 62, 1,117,
|
/* 0x0490 */ 255, 49,219, 49,255,131,193, 34,255,202,120, 33,131, 62, 1,117,
|
||||||
/* 0x04a0 */ 22, 72,139, 70, 16, 72, 57,232, 72, 15, 66,232, 72, 3, 70, 40,
|
/* 0x04a0 */ 22, 72,139, 70, 16, 72, 57,232, 72, 15, 66,232, 72, 3, 70, 40,
|
||||||
@@ -116,54 +116,54 @@ unsigned char stub_amd64_linux_elf_fold[2374] = {
|
|||||||
/* 0x04d0 */ 227, 0,240,255,255,246,193, 16,116, 5, 72,137,239,235, 19, 72,
|
/* 0x04d0 */ 227, 0,240,255,255,246,193, 16,116, 5, 72,137,239,235, 19, 72,
|
||||||
/* 0x04e0 */ 133,237,117, 14,137,200, 76,137,199,131,200, 16, 77,133,192, 15,
|
/* 0x04e0 */ 133,237,117, 14,137,200, 76,137,199,131,200, 16, 77,133,192, 15,
|
||||||
/* 0x04f0 */ 69,200, 69, 49,201, 65,131,200,255, 49,210, 72,137,222,232, 27,
|
/* 0x04f0 */ 69,200, 69, 49,201, 65,131,200,255, 49,210, 72,137,222,232, 27,
|
||||||
/* 0x0500 */ 253,255,255, 72,137,199, 72,141, 4, 3, 73,137,253, 72,137, 68,
|
/* 0x0500 */ 253,255,255, 72,137,199, 72,141, 4, 3, 73,137,254, 72,137, 68,
|
||||||
/* 0x0510 */ 36, 72, 73, 41,237,102, 65,131,126, 56, 0,199, 68, 36, 28, 0,
|
/* 0x0510 */ 36, 72, 73, 41,238,102, 65,131,127, 56, 0,199, 68, 36, 28, 0,
|
||||||
/* 0x0520 */ 0, 0, 0, 15,132,180, 2, 0, 0, 72,131,124, 36, 64, 0,116,
|
/* 0x0520 */ 0, 0, 0, 15,132,180, 2, 0, 0, 72,131,124, 36, 64, 0,116,
|
||||||
/* 0x0530 */ 35, 65,131, 60, 36, 6,117, 28, 73,139, 84, 36, 16, 72,139,124,
|
/* 0x0530 */ 35, 65,131, 60, 36, 6,117, 28, 73,139, 84, 36, 16, 72,139,124,
|
||||||
/* 0x0540 */ 36, 48,190, 3, 0, 0, 0, 76, 1,234,232, 82,254,255,255,233,
|
/* 0x0540 */ 36, 48,190, 3, 0, 0, 0, 76, 1,242,232, 82,254,255,255,233,
|
||||||
/* 0x0550 */ 114, 2, 0, 0, 65,131, 60, 36, 1, 15,133,103, 2, 0, 0, 72,
|
/* 0x0550 */ 114, 2, 0, 0, 65,131, 60, 36, 1, 15,133,103, 2, 0, 0, 65,
|
||||||
/* 0x0560 */ 131,124, 36, 64, 0,116, 75, 73,131,124, 36, 8, 0,117, 67, 73,
|
/* 0x0560 */ 139, 76, 36, 4,199, 68, 36, 24, 64, 98, 81,115,131,225, 7,193,
|
||||||
/* 0x0570 */ 139, 84, 36, 16, 72,139,124, 36, 48,190, 3, 0, 0, 0, 76, 1,
|
/* 0x0570 */ 225, 2,211,108, 36, 24,131,100, 36, 24, 7, 72,131,124, 36, 64,
|
||||||
/* 0x0580 */ 234, 73, 3, 86, 32,232, 23,254,255,255, 73, 15,183, 86, 56, 72,
|
/* 0x0580 */ 0,116, 75, 73,131,124, 36, 8, 0,117, 67, 73,139, 84, 36, 16,
|
||||||
/* 0x0590 */ 139,124, 36, 48,190, 5, 0, 0, 0,232, 3,254,255,255, 73, 15,
|
/* 0x0590 */ 72,139,124, 36, 48,190, 3, 0, 0, 0, 76, 1,242, 73, 3, 87,
|
||||||
/* 0x05a0 */ 183, 86, 54, 72,139,124, 36, 48,190, 4, 0, 0, 0,232,239,253,
|
/* 0x05a0 */ 32,232,251,253,255,255, 73, 15,183, 87, 56, 72,139,124, 36, 48,
|
||||||
/* 0x05b0 */ 255,255, 73,139, 68, 36, 32, 73,139, 84, 36, 40, 65,131,200,255,
|
/* 0x05b0 */ 190, 5, 0, 0, 0,232,231,253,255,255, 73, 15,183, 87, 54, 72,
|
||||||
/* 0x05c0 */ 65,139, 76, 36, 4,199, 68, 36, 24, 64, 98, 81,115, 72,137, 68,
|
/* 0x05c0 */ 139,124, 36, 48,190, 4, 0, 0, 0,232,211,253,255,255, 73,139,
|
||||||
/* 0x05d0 */ 36, 16, 72,137, 68, 36, 80, 73,139, 68, 36, 16,131,225, 7,193,
|
/* 0x05d0 */ 124, 36, 16, 73,139, 68, 36, 40,185, 50, 0, 0, 0, 73,139,116,
|
||||||
/* 0x05e0 */ 225, 2,211,108, 36, 24,185, 50, 0, 0, 0,131,100, 36, 24, 7,
|
/* 0x05e0 */ 36, 32, 76, 1,247, 72, 1,248, 72,137,250, 72,137,253,129,226,
|
||||||
/* 0x05f0 */ 76, 1,232, 72, 1,194, 72,137,197, 72,137, 68, 36, 88, 37,255,
|
/* 0x05f0 */ 255, 15, 0, 0, 72,137, 68, 36, 8, 72,137,240, 72, 1,208, 72,
|
||||||
/* 0x0600 */ 15, 0, 0, 72,137, 84, 36, 8,137,195,139, 84, 36, 16, 72, 41,
|
/* 0x0600 */ 41,213, 72,137,116, 36, 80, 72,137, 68, 36, 16,139, 68, 36, 24,
|
||||||
/* 0x0610 */ 221, 72, 1, 92, 36, 16, 68,141, 60, 16, 73,139, 68, 36, 8, 65,
|
/* 0x0610 */ 76,141, 44, 55,139,116, 36, 24, 72,137,124, 36, 88,131,200, 2,
|
||||||
/* 0x0620 */ 247,223, 65,129,231,255, 15, 0, 0, 72, 41,216, 72,131,124, 36,
|
/* 0x0620 */ 72,131,124, 36, 64, 0, 15, 69,240,137,240,131,224,251, 72,131,
|
||||||
/* 0x0630 */ 64, 0,117, 7, 68,139, 68, 36, 60,177, 18,139, 84, 36, 24, 72,
|
/* 0x0630 */ 124, 36, 64, 0, 15, 69,240, 73,139, 68, 36, 8, 72, 41,208,131,
|
||||||
/* 0x0640 */ 139,116, 36, 16, 73,137,193, 72,137,239,131,202, 2, 72,131,124,
|
/* 0x0640 */ 202,255, 72,131,124, 36, 64, 0,117, 6,139, 84, 36, 60,177, 18,
|
||||||
/* 0x0650 */ 36, 64, 0, 15, 68, 84, 36, 24,232,193,251,255,255, 72, 57,197,
|
/* 0x0650 */ 65,137,208,137,242, 72,139,116, 36, 16, 73,137,193, 72,137,239,
|
||||||
/* 0x0660 */ 15,133, 29, 1, 0, 0, 72,131,124, 36, 64, 0,116, 25, 72,139,
|
/* 0x0660 */ 232,185,251,255,255, 72, 57,197, 15,133, 32, 1, 0, 0, 72,131,
|
||||||
/* 0x0670 */ 76, 36, 32, 72,139, 84, 36, 40, 72,141,116, 36, 80, 72,139,124,
|
/* 0x0670 */ 124, 36, 64, 0,116, 25, 72,139, 76, 36, 32, 72,139, 84, 36, 40,
|
||||||
/* 0x0680 */ 36, 64,232, 9,252,255,255,246, 68, 36, 24, 2,116, 19, 73,139,
|
/* 0x0680 */ 72,141,116, 36, 80, 72,139,124, 36, 64,232, 1,252,255,255,246,
|
||||||
/* 0x0690 */ 124, 36, 32, 68,137,249, 49,192,252, 72, 1,239, 72, 1,223,243,
|
/* 0x0690 */ 68, 36, 24, 2,116, 22, 68,137,233, 76,137,239, 49,192,247,217,
|
||||||
/* 0x06a0 */ 170, 72,131,124, 36, 64, 0, 15,132,224, 0, 0, 0,199, 68, 36,
|
/* 0x06a0 */ 252,129,225,255, 15, 0, 0,243,170, 73,137,253, 72,131,124, 36,
|
||||||
/* 0x06b0 */ 4, 0, 0, 0, 0, 72,184,255,255,255,255, 1, 0, 0, 0, 73,
|
/* 0x06b0 */ 64, 0, 15,132,224, 0, 0, 0,199, 68, 36, 4, 0, 0, 0, 0,
|
||||||
/* 0x06c0 */ 35, 4, 36, 72,186, 1, 0, 0, 0, 1, 0, 0, 0, 72, 57,208,
|
/* 0x06c0 */ 72,184,255,255,255,255, 1, 0, 0, 0, 73, 35, 4, 36, 72,186,
|
||||||
/* 0x06d0 */ 15,133,152, 0, 0, 0, 73,139, 84, 36, 40, 73,139, 76, 36, 16,
|
/* 0x06d0 */ 1, 0, 0, 0, 1, 0, 0, 0, 72, 57,208, 15,133,152, 0, 0,
|
||||||
/* 0x06e0 */ 73, 59, 84, 36, 32, 72,141, 4, 10, 74,141, 28, 40,117, 14,137,
|
/* 0x06e0 */ 0, 73,139, 84, 36, 40, 73,139, 76, 36, 16, 73, 59, 84, 36, 32,
|
||||||
/* 0x06f0 */ 216,247,216, 37,255, 15, 0, 0,131,248, 3,119, 58, 73,131,124,
|
/* 0x06f0 */ 72,141, 4, 10, 74,141, 28, 48,117, 14,137,216,247,216, 37,255,
|
||||||
/* 0x0700 */ 36, 8, 0, 74,141, 92, 41, 12,116, 45, 69, 49,201, 65,131,200,
|
/* 0x0700 */ 15, 0, 0,131,248, 3,119, 58, 73,131,124, 36, 8, 0, 74,141,
|
||||||
/* 0x0710 */ 255, 49,255,185, 34, 0, 0, 0,186, 3, 0, 0, 0,190, 0, 16,
|
/* 0x0710 */ 92, 49, 12,116, 45, 69, 49,201, 65,131,200,255, 49,255,185, 34,
|
||||||
/* 0x0720 */ 0, 0,199, 68, 36, 4, 1, 0, 0, 0,232,239,250,255,255, 72,
|
/* 0x0720 */ 0, 0, 0,186, 3, 0, 0, 0,190, 0, 16, 0, 0,199, 68, 36,
|
||||||
/* 0x0730 */ 133,192, 72,137,195,116, 55,131,124, 36, 4, 0,199, 3, 15, 5,
|
/* 0x0730 */ 4, 1, 0, 0, 0,232,228,250,255,255, 72,133,192, 72,137,195,
|
||||||
/* 0x0740 */ 90,195,116, 18,186, 5, 0, 0, 0,190, 4, 0, 0, 0, 72,137,
|
/* 0x0740 */ 116, 55,131,124, 36, 4, 0,199, 3, 15, 5, 90,195,116, 18,186,
|
||||||
/* 0x0750 */ 223,232,243,250,255,255, 72,133,219,116, 19, 72,139,124, 36, 48,
|
/* 0x0750 */ 5, 0, 0, 0,190, 4, 0, 0, 0, 72,137,223,232,232,250,255,
|
||||||
/* 0x0760 */ 72,137,218, 49,246, 72,131,231,254,232, 51,252,255,255,139, 84,
|
/* 0x0760 */ 255, 72,133,219,116, 19, 72,139,124, 36, 48, 72,137,218, 49,246,
|
||||||
/* 0x0770 */ 36, 24, 72,139,116, 36, 16, 72,137,239,232,202,250,255,255,133,
|
/* 0x0770 */ 72,131,231,254,232, 40,252,255,255,139, 84, 36, 24, 72,139,116,
|
||||||
/* 0x0780 */ 192,116, 10,191,127, 0, 0, 0,232,168,250,255,255, 68,137,248,
|
/* 0x0780 */ 36, 16, 72,137,239,232,191,250,255,255,133,192,116, 10,191,127,
|
||||||
/* 0x0790 */ 72, 3, 68, 36, 16, 72, 1,197, 72, 59,108, 36, 8,115, 39, 72,
|
/* 0x0790 */ 0, 0, 0,232,157,250,255,255, 76, 59,108, 36, 8,115, 39, 76,
|
||||||
/* 0x07a0 */ 41,108, 36, 8,139, 84, 36, 24, 69, 49,201, 72,139,116, 36, 8,
|
/* 0x07a0 */ 41,108, 36, 8,139, 84, 36, 24, 69, 49,201, 72,139,116, 36, 8,
|
||||||
/* 0x07b0 */ 65,131,200,255,185, 50, 0, 0, 0, 72,137,239,232, 93,250,255,
|
/* 0x07b0 */ 65,131,200,255,185, 50, 0, 0, 0, 76,137,239,232, 93,250,255,
|
||||||
/* 0x07c0 */ 255, 72, 57,197,117,189,255, 68, 36, 28, 65, 15,183, 70, 56, 73,
|
/* 0x07c0 */ 255, 73, 57,197,117,200,255, 68, 36, 28, 65, 15,183, 71, 56, 73,
|
||||||
/* 0x07d0 */ 131,196, 56, 57, 68, 36, 28, 15,140, 76,253,255,255, 72,139,132,
|
/* 0x07d0 */ 131,196, 56, 57, 68, 36, 28, 15,140, 76,253,255,255, 72,139,132,
|
||||||
/* 0x07e0 */ 36,160, 0, 0, 0, 76,137, 40, 77, 3,110, 24, 72,131,196,104,
|
/* 0x07e0 */ 36,160, 0, 0, 0, 76,137, 48, 77, 3,119, 24, 72,131,196,104,
|
||||||
/* 0x07f0 */ 91, 93, 65, 92, 76,137,232, 65, 93, 65, 94, 65, 95,195, 65, 87,
|
/* 0x07f0 */ 91, 93, 65, 92, 65, 93, 76,137,240, 65, 94, 65, 95,195, 65, 87,
|
||||||
/* 0x0800 */ 65, 86, 73,137,206, 49,201, 65, 85, 65, 84, 77,137,204, 85, 72,
|
/* 0x0800 */ 65, 86, 73,137,206, 49,201, 65, 85, 65, 84, 77,137,204, 85, 72,
|
||||||
/* 0x0810 */ 137,213, 76,141,109, 64, 83, 76,137,195, 72,131,236, 72,139, 7,
|
/* 0x0810 */ 137,213, 76,141,109, 64, 83, 76,137,195, 72,131,236, 72,139, 7,
|
||||||
/* 0x0820 */ 72,137,124, 36, 24, 72,137,124, 36, 40, 76,141,188, 36,128, 0,
|
/* 0x0820 */ 72,137,124, 36, 24, 72,137,124, 36, 40, 76,141,188, 36,128, 0,
|
||||||
|
|||||||
+846
-846
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+847
-846
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+922
-922
File diff suppressed because it is too large
Load Diff
+904
-904
File diff suppressed because it is too large
Load Diff
+158
-157
@@ -1,5 +1,5 @@
|
|||||||
/* arm64-linux.elf-fold.h
|
/* arm64-linux.elf-fold.h
|
||||||
created from arm64-linux.elf-fold.bin, 2764 (0xacc) bytes
|
created from arm64-linux.elf-fold.bin, 2776 (0xad8) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -31,20 +31,20 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define STUB_ARM64_LINUX_ELF_FOLD_SIZE 2764
|
#define STUB_ARM64_LINUX_ELF_FOLD_SIZE 2776
|
||||||
#define STUB_ARM64_LINUX_ELF_FOLD_ADLER32 0x9524bef3
|
#define STUB_ARM64_LINUX_ELF_FOLD_ADLER32 0x4a2bc8dc
|
||||||
#define STUB_ARM64_LINUX_ELF_FOLD_CRC32 0xc9bec8d6
|
#define STUB_ARM64_LINUX_ELF_FOLD_CRC32 0x29e40c30
|
||||||
|
|
||||||
unsigned char stub_arm64_linux_elf_fold[2764] = {
|
unsigned char stub_arm64_linux_elf_fold[2776] = {
|
||||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0010 */ 2, 0,183, 0, 1, 0, 0, 0,188, 0, 16, 0, 0, 0, 0, 0,
|
/* 0x0010 */ 2, 0,183, 0, 1, 0, 0, 0,188, 0, 16, 0, 0, 0, 0, 0,
|
||||||
/* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
|
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
|
||||||
/* 0x0060 */ 204, 10, 0, 0, 0, 0, 0, 0,204, 10, 0, 0, 0, 0, 0, 0,
|
/* 0x0060 */ 216, 10, 0, 0, 0, 0, 0, 0,216, 10, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0070 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0070 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0080 */ 204, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0080 */ 216, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0090 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0090 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
|
/* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
|
||||||
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,146,
|
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,146,
|
||||||
@@ -56,157 +56,158 @@ unsigned char stub_arm64_linux_elf_fold[2764] = {
|
|||||||
/* 0x0110 */ 2,132, 0,248,194,255,255,181, 34,132, 64,248, 2,132, 0,248,
|
/* 0x0110 */ 2,132, 0,248,194,255,255,181, 34,132, 64,248, 2,132, 0,248,
|
||||||
/* 0x0120 */ 194,255,255,181, 4, 32, 0,209, 31,132, 0,248,231, 3, 0,170,
|
/* 0x0120 */ 194,255,255,181, 4, 32, 0,209, 31,132, 0,248,231, 3, 0,170,
|
||||||
/* 0x0130 */ 246, 3, 0,170, 34, 12,193,168, 2, 12,129,168,194,255,255,181,
|
/* 0x0130 */ 246, 3, 0,170, 34, 12,193,168, 2, 12,129,168,194,255,255,181,
|
||||||
/* 0x0140 */ 247, 3, 0,170,225, 3, 6,170,129, 0, 0,249,194, 4, 0, 24,
|
/* 0x0140 */ 247, 3, 0,170,225, 3, 6,170,129, 0, 0,249,226, 5, 0, 24,
|
||||||
/* 0x0150 */ 34, 68, 0,184,226,255,129, 82,128, 4, 0, 16, 91, 0, 0,148,
|
/* 0x0150 */ 34, 68, 0,184,226,255,129, 82,160, 5, 0, 16,100, 0, 0,148,
|
||||||
/* 0x0160 */ 31, 4, 64,177, 66, 0, 0, 84, 95,104, 32, 56,231, 3, 20,170,
|
/* 0x0160 */ 31, 4, 64,177, 66, 0, 0, 84, 95,104, 32, 56,231, 3, 20,170,
|
||||||
/* 0x0170 */ 230, 3, 25,170,255, 3, 40,209, 5, 4, 0, 16,228, 3, 24,170,
|
/* 0x0170 */ 230, 3, 25,170,255, 3, 40,209, 37, 5, 0, 16,228, 3, 24,170,
|
||||||
/* 0x0180 */ 227, 3, 22,170,226, 3, 0,145,225, 3, 29, 42,224, 3, 28,170,
|
/* 0x0180 */ 227, 3, 22,170,226, 3, 0,145,225, 3, 29, 42,224, 3, 28,170,
|
||||||
/* 0x0190 */ 245, 1, 0,148,255, 3, 40,145,248, 3, 0,170, 33, 83, 64,249,
|
/* 0x0190 */ 248, 1, 0,148,255, 3, 40,145,248, 3, 0,170, 33, 83, 64,249,
|
||||||
/* 0x01a0 */ 224, 3, 25,170, 55, 0, 0,148, 5, 0,128,210,228, 3, 21, 42,
|
/* 0x01a0 */ 224, 3, 25,170, 64, 0, 0,148, 5, 0,128,210,228, 3, 21, 42,
|
||||||
/* 0x01b0 */ 67, 0,128, 82, 34, 0,128, 82, 1, 0,130,210, 0, 0,128,210,
|
/* 0x01b0 */ 67, 0,128, 82, 34, 0,128, 82, 1, 0,130,210, 0, 0,128,210,
|
||||||
/* 0x01c0 */ 58, 0, 0,148,224, 3, 21, 42, 37, 0, 0,148,254, 3, 24,170,
|
/* 0x01c0 */ 67, 0, 0,148,224, 3, 21, 42, 46, 0, 0,148,254, 3, 24,170,
|
||||||
/* 0x01d0 */ 224, 3, 26,170,225, 3, 27, 42,226,130, 95,248,232, 26,128, 82,
|
/* 0x01d0 */ 224, 3, 26,170,225, 3, 27, 42,226,130, 95,248,255,127,191,169,
|
||||||
/* 0x01e0 */ 64, 0, 31,214, 32, 32, 32, 61, 47,112,114,111, 99, 47,115,101,
|
/* 0x01e0 */ 240, 3, 31,170,227, 19, 64,169,230, 31, 64,169,232, 39, 64,169,
|
||||||
/* 0x01f0 */ 108,102, 47,101,120,101, 0, 0, 99, 28, 0, 18,127, 72, 1,113,
|
/* 0x01f0 */ 244, 87, 64,169,246, 95, 64,169,248,103, 64,169,250,111, 64,169,
|
||||||
/* 0x0200 */ 129, 1, 0, 84, 33,252, 66,211, 65, 1, 0,180, 33, 4, 0,209,
|
/* 0x0200 */ 252,119,193,168,192, 3, 95,214, 32, 32, 32, 61, 47,112,114,111,
|
||||||
/* 0x0210 */ 2,120, 97,184, 67,120, 26, 83,127, 20, 0,113,129, 0, 0, 84,
|
/* 0x0210 */ 99, 47,115,101,108,102, 47,101,120,101, 0, 0, 99, 28, 0, 18,
|
||||||
/* 0x0220 */ 67, 0, 1, 75, 98,100, 0, 51, 2,120, 33,184, 1,255,255,181,
|
/* 0x0220 */ 127, 72, 1,113,129, 1, 0, 84, 33,252, 66,211, 65, 1, 0,180,
|
||||||
/* 0x0230 */ 192, 3, 95,214, 0, 0, 32,212,192, 3, 95,214,168, 11,128, 82,
|
/* 0x0230 */ 33, 4, 0,209, 2,120, 97,184, 67,120, 26, 83,127, 20, 0,113,
|
||||||
/* 0x0240 */ 1, 0, 0,212,232, 7,128, 82, 1, 0, 0,212,192, 3, 95,214,
|
/* 0x0240 */ 129, 0, 0, 84, 67, 0, 1, 75, 98,100, 0, 51, 2,120, 33,184,
|
||||||
/* 0x0250 */ 8, 8,128, 82, 1, 0, 0,212,192, 3, 95,214, 40, 7,128, 82,
|
/* 0x0250 */ 1,255,255,181,192, 3, 95,214, 0, 0, 32,212,192, 3, 95,214,
|
||||||
/* 0x0260 */ 1, 0, 0,212,192, 3, 95,214,168, 21,128, 82, 1, 0, 0,212,
|
/* 0x0260 */ 168, 11,128, 82, 1, 0, 0,212,232, 7,128, 82, 1, 0, 0,212,
|
||||||
/* 0x0270 */ 192, 3, 95,214,200, 26,128, 82, 1, 0, 0,212,192, 3, 95,214,
|
/* 0x0270 */ 192, 3, 95,214, 8, 8,128, 82, 1, 0, 0,212,192, 3, 95,214,
|
||||||
/* 0x0280 */ 232, 26,128, 82, 1, 0, 0,212,192, 3, 95,214, 72, 28,128, 82,
|
/* 0x0280 */ 40, 7,128, 82, 1, 0, 0,212,192, 3, 95,214,168, 21,128, 82,
|
||||||
/* 0x0290 */ 1, 0, 0,212,192, 3, 95,214,134,241,255, 24, 5, 0,128,210,
|
/* 0x0290 */ 1, 0, 0,212,192, 3, 95,214,200, 26,128, 82, 1, 0, 0,212,
|
||||||
/* 0x02a0 */ 4, 0,128,146, 99, 0, 6, 42,200, 27,128, 82, 1, 0, 0,212,
|
/* 0x02a0 */ 192, 3, 95,214,232, 26,128, 82, 1, 0, 0,212,192, 3, 95,214,
|
||||||
/* 0x02b0 */ 192, 3, 95,214, 2, 0,128,210,225, 3, 0,170, 96, 12,128, 18,
|
/* 0x02b0 */ 72, 28,128, 82, 1, 0, 0,212,192, 3, 95,214,102,240,255, 24,
|
||||||
/* 0x02c0 */ 104, 4,128, 82, 4, 0, 0, 20,200, 9,128, 82, 2, 0, 0, 20,
|
/* 0x02c0 */ 5, 0,128,210, 4, 0,128,146, 99, 0, 6, 42,200, 27,128, 82,
|
||||||
/* 0x02d0 */ 8, 7,128, 82,227, 3, 2,170,226, 3, 1,170,225, 3, 0,170,
|
/* 0x02d0 */ 1, 0, 0,212,192, 3, 95,214, 2, 0,128,210,225, 3, 0,170,
|
||||||
/* 0x02e0 */ 96, 12,128,146, 1, 0, 0,212,192, 3, 95,214, 0, 0, 64,212,
|
/* 0x02e0 */ 96, 12,128, 18,104, 4,128, 82, 4, 0, 0, 20,200, 9,128, 82,
|
||||||
/* 0x02f0 */ 2, 0,128, 82, 8, 0,128, 82, 1, 0, 0,212,192, 3, 95,214,
|
/* 0x02f0 */ 2, 0, 0, 20, 8, 7,128, 82,227, 3, 2,170,226, 3, 1,170,
|
||||||
/* 0x0300 */ 253,123,191,169, 3, 0,128,210,253, 3, 0,145, 5, 0, 64,249,
|
/* 0x0300 */ 225, 3, 0,170, 96, 12,128,146, 1, 0, 0,212,192, 3, 95,214,
|
||||||
/* 0x0310 */ 4, 4, 64,249,191, 0, 2,235, 98, 0, 0, 84,224, 15,128, 82,
|
/* 0x0310 */ 0, 0, 64,212, 2, 0,128, 82, 8, 0,128, 82, 1, 0, 0,212,
|
||||||
/* 0x0320 */ 199,255,255,151,127, 0, 2,235,160, 0, 0, 84,133,104, 99, 56,
|
/* 0x0320 */ 192, 3, 95,214,253,123,191,169, 3, 0,128,210,253, 3, 0,145,
|
||||||
/* 0x0330 */ 37,104, 35, 56, 99, 4, 0,145,251,255,255, 23, 1, 4, 64,249,
|
/* 0x0330 */ 5, 0, 64,249, 4, 4, 64,249,191, 0, 2,235, 98, 0, 0, 84,
|
||||||
/* 0x0340 */ 33, 0, 3,139, 1, 4, 0,249, 1, 0, 64,249, 35, 0, 3,203,
|
/* 0x0340 */ 224, 15,128, 82,199,255,255,151,127, 0, 2,235,160, 0, 0, 84,
|
||||||
/* 0x0350 */ 3, 0, 0,249,253,123,193,168,192, 3, 95,214,253,123,187,169,
|
/* 0x0350 */ 133,104, 99, 56, 37,104, 35, 56, 99, 4, 0,145,251,255,255, 23,
|
||||||
/* 0x0360 */ 253, 3, 0,145,243, 83, 1,169,245, 91, 2,169,244, 3, 0,170,
|
/* 0x0360 */ 1, 4, 64,249, 33, 0, 3,139, 1, 4, 0,249, 1, 0, 64,249,
|
||||||
/* 0x0370 */ 243, 3, 1,170,246, 3, 2,170,245, 3, 3,170, 96, 2, 64,249,
|
/* 0x0370 */ 35, 0, 3,203, 3, 0, 0,249,253,123,193,168,192, 3, 95,214,
|
||||||
/* 0x0380 */ 160, 8, 0,180,224, 3, 20,170,130, 1,128,210,161, 3, 1,145,
|
/* 0x0380 */ 253,123,187,169,253, 3, 0,145,243, 83, 1,169,245, 91, 2,169,
|
||||||
/* 0x0390 */ 220,255,255,151,160, 67, 64,185,162, 71, 64,185, 0, 1, 0, 53,
|
/* 0x0390 */ 244, 3, 0,170,243, 3, 1,170,246, 3, 2,170,245, 3, 3,170,
|
||||||
/* 0x03a0 */ 160, 10,138, 82, 0, 43,164,114, 95, 0, 0,107,225, 0, 0, 84,
|
/* 0x03a0 */ 96, 2, 64,249,160, 8, 0,180,224, 3, 20,170,130, 1,128,210,
|
||||||
/* 0x03b0 */ 128, 2, 64,249, 0, 7, 0,180, 4, 0, 0, 20, 98, 0, 0, 52,
|
/* 0x03b0 */ 161, 3, 1,145,220,255,255,151,160, 67, 64,185,162, 71, 64,185,
|
||||||
/* 0x03c0 */ 95, 0, 0,107,105, 0, 0, 84,224, 15,128, 82,156,255,255,151,
|
/* 0x03c0 */ 0, 1, 0, 53,160, 10,138, 82, 0, 43,164,114, 95, 0, 0,107,
|
||||||
/* 0x03d0 */ 99, 2, 64,249,225, 3, 0, 42, 63, 0, 3,235,104,255,255, 84,
|
/* 0x03d0 */ 225, 0, 0, 84,128, 2, 64,249, 0, 7, 0,180, 4, 0, 0, 20,
|
||||||
/* 0x03e0 */ 95, 0, 0,107, 2, 4, 0, 84,161, 31, 0,249,225, 3, 2, 42,
|
/* 0x03e0 */ 98, 0, 0, 52, 95, 0, 0,107,105, 0, 0, 84,224, 15,128, 82,
|
||||||
/* 0x03f0 */ 128, 6, 64,249,163,227, 0,145, 98, 6, 64,249,164, 35, 65, 57,
|
/* 0x03f0 */ 156,255,255,151, 99, 2, 64,249,225, 3, 0, 42, 63, 0, 3,235,
|
||||||
/* 0x0400 */ 192, 2, 63,214, 32,254,255, 53,161, 31, 64,249,160, 67, 64,185,
|
/* 0x0400 */ 104,255,255, 84, 95, 0, 0,107, 2, 4, 0, 84,161, 31, 0,249,
|
||||||
/* 0x0410 */ 63, 0, 0,235,161,253,255, 84,163, 39, 65, 57, 85, 1, 0,180,
|
/* 0x0410 */ 225, 3, 2, 42,128, 6, 64,249,163,227, 0,145, 98, 6, 64,249,
|
||||||
/* 0x0420 */ 35, 1, 0, 52, 63, 0, 8,241,136, 0, 0, 84, 96, 2, 64,249,
|
/* 0x0420 */ 164, 35, 65, 57,192, 2, 63,214, 32,254,255, 53,161, 31, 64,249,
|
||||||
/* 0x0430 */ 31, 0, 1,235,129, 0, 0, 84, 96, 6, 64,249,162, 43, 65, 57,
|
/* 0x0430 */ 160, 67, 64,185, 63, 0, 0,235,161,253,255, 84,163, 39, 65, 57,
|
||||||
/* 0x0440 */ 160, 2, 63,214,163, 71, 64,185,129, 6, 64,249,128, 2, 64,249,
|
/* 0x0440 */ 85, 1, 0,180, 35, 1, 0, 52, 63, 0, 8,241,136, 0, 0, 84,
|
||||||
/* 0x0450 */ 33, 0, 3,139,129, 6, 0,249, 0, 0, 3,203,128, 2, 0,249,
|
/* 0x0450 */ 96, 2, 64,249, 31, 0, 1,235,129, 0, 0, 84, 96, 6, 64,249,
|
||||||
/* 0x0460 */ 5, 0, 0, 20, 97, 6, 64,249,224, 3, 20,170,226, 3, 2, 42,
|
/* 0x0460 */ 162, 43, 65, 57,160, 2, 63,214,163, 71, 64,185,129, 6, 64,249,
|
||||||
/* 0x0470 */ 164,255,255,151,163, 67, 64,185, 97, 6, 64,249, 96, 2, 64,249,
|
/* 0x0470 */ 128, 2, 64,249, 33, 0, 3,139,129, 6, 0,249, 0, 0, 3,203,
|
||||||
/* 0x0480 */ 33, 0, 3,139, 97, 6, 0,249, 0, 0, 3,203, 96, 2, 0,249,
|
/* 0x0480 */ 128, 2, 0,249, 5, 0, 0, 20, 97, 6, 64,249,224, 3, 20,170,
|
||||||
/* 0x0490 */ 187,255,255, 23,243, 83, 65,169,245, 91, 66,169,253,123,197,168,
|
/* 0x0490 */ 226, 3, 2, 42,164,255,255,151,163, 67, 64,185, 97, 6, 64,249,
|
||||||
/* 0x04a0 */ 192, 3, 95,214, 0, 2, 0,180,224, 1, 0, 55,228, 3, 1, 42,
|
/* 0x04a0 */ 96, 2, 64,249, 33, 0, 3,139, 97, 6, 0,249, 0, 0, 3,203,
|
||||||
/* 0x04b0 */ 3, 0, 64,249,127, 0, 4,235,129, 0, 0, 84, 4, 0, 0,249,
|
/* 0x04b0 */ 96, 2, 0,249,187,255,255, 23,243, 83, 65,169,245, 91, 66,169,
|
||||||
/* 0x04c0 */ 2, 4, 0,249, 8, 0, 0, 20,127, 4, 0,241, 97, 0, 0, 84,
|
/* 0x04c0 */ 253,123,197,168,192, 3, 95,214, 0, 2, 0,180,224, 1, 0, 55,
|
||||||
/* 0x04d0 */ 97, 0, 0, 52,250,255,255, 23, 99, 0, 0,180, 0, 64, 0,145,
|
/* 0x04d0 */ 228, 3, 1, 42, 3, 0, 64,249,127, 0, 4,235,129, 0, 0, 84,
|
||||||
/* 0x04e0 */ 244,255,255, 23,192, 3, 95,214,253,123,179,169,253, 3, 0,145,
|
/* 0x04e0 */ 4, 0, 0,249, 2, 4, 0,249, 8, 0, 0, 20,127, 4, 0,241,
|
||||||
/* 0x04f0 */ 232, 39, 6,109,200, 0,103,158, 6, 16, 64,249,238, 63, 9,109,
|
/* 0x04f0 */ 97, 0, 0, 84, 97, 0, 0, 52,250,255,255, 23, 99, 0, 0,180,
|
||||||
/* 0x0500 */ 245, 91, 2,169,236, 55, 8,109,246, 3, 0,170,234, 47, 7,109,
|
/* 0x0500 */ 0, 64, 0,145,244,255,255, 23,192, 3, 95,214,253,123,181,169,
|
||||||
/* 0x0510 */ 251,115, 5,169, 27, 0, 6,139, 0, 1,102,158,243, 83, 1,169,
|
/* 0x0510 */ 253, 3, 0,145,232, 39, 6,109,201, 0,103,158, 6, 16, 64,249,
|
||||||
/* 0x0520 */ 247, 99, 3,169,249,107, 4,169, 77, 0, 39, 30,249, 3, 3,170,
|
/* 0x0520 */ 236, 55, 8,109,245, 91, 2,169,238, 63, 9,109,246, 3, 0,170,
|
||||||
/* 0x0530 */ 247, 3, 1,170,244, 3, 7,170,142, 0,103,158, 2, 0, 64,249,
|
/* 0x0530 */ 234, 47, 7,109,251,115, 5,169, 28, 0, 6,139,245, 3, 1,170,
|
||||||
/* 0x0540 */ 175, 0,103,158,195, 34, 64,121, 65, 2, 0,180, 65, 16, 64,249,
|
/* 0x0540 */ 32, 1,102,158,249,107, 4,169,243, 83, 1,169,247, 99, 3,169,
|
||||||
/* 0x0550 */ 127, 8, 0,113, 65, 0, 1,139, 32, 36, 64,249, 64, 0, 0,203,
|
/* 0x0550 */ 76, 0, 39, 30,250, 3, 3,170,141, 0,103,158,249, 3, 7,170,
|
||||||
/* 0x0560 */ 65, 0, 0, 84, 32, 8, 64,249, 33, 20, 64,249, 2, 0,128, 82,
|
/* 0x0560 */ 174, 0,103,158, 2, 0, 64,249,195, 34, 64,121, 65, 2, 0,180,
|
||||||
/* 0x0570 */ 67, 6,128, 82, 4, 0,128, 18, 5, 0,128,210, 75,255,255,151,
|
/* 0x0570 */ 65, 16, 64,249,127, 8, 0,113, 65, 0, 1,139, 32, 36, 64,249,
|
||||||
/* 0x0580 */ 193, 34, 64,121, 63, 8, 0,113, 19, 16,159,154, 42, 0, 0, 20,
|
/* 0x0580 */ 64, 0, 0,203, 65, 0, 0, 84, 32, 8, 64,249, 33, 20, 64,249,
|
||||||
/* 0x0590 */ 127, 12, 0,113, 3, 2,128, 82, 99, 16,159, 26,200,114, 64,121,
|
/* 0x0590 */ 2, 0,128, 82, 67, 6,128, 82, 4, 0,128, 18, 5, 0,128,210,
|
||||||
/* 0x05a0 */ 224, 3, 2,170, 99,136, 0, 17,228, 3, 27,170, 19, 0,128,146,
|
/* 0x05a0 */ 75,255,255,151,193, 34, 64,121, 63, 8, 0,113, 19, 16,159,154,
|
||||||
/* 0x05b0 */ 8, 5, 0, 81, 31, 5, 0, 49,160, 1, 0, 84,133, 0, 64,185,
|
/* 0x05b0 */ 42, 0, 0, 20,127, 12, 0,113, 3, 2,128, 82, 99, 16,159, 26,
|
||||||
/* 0x05c0 */ 191, 4, 0,113, 1, 1, 0, 84,137, 8, 64,249,133, 20, 64,249,
|
/* 0x05c0 */ 199,114, 64,121,224, 3, 2,170, 99,136, 0, 17,228, 3, 28,170,
|
||||||
/* 0x05d0 */ 127, 2, 9,235, 37, 1, 5,139,115,146,137,154, 63, 0, 5,235,
|
/* 0x05d0 */ 19, 0,128,146,231, 4, 0, 81,255, 4, 0, 49,160, 1, 0, 84,
|
||||||
/* 0x05e0 */ 33, 32,133,154,132,224, 0,145,242,255,255, 23,228, 3, 52,170,
|
/* 0x05e0 */ 133, 0, 64,185,191, 4, 0,113, 1, 1, 0, 84,136, 8, 64,249,
|
||||||
/* 0x05f0 */ 115, 2, 20,138,129, 0, 1,139, 33, 0, 19,203, 33, 0, 20,138,
|
/* 0x05f0 */ 133, 20, 64,249,127, 2, 8,235, 5, 1, 5,139,115,146,136,154,
|
||||||
/* 0x0600 */ 163, 0, 32, 55, 83, 0, 0,181,162, 0, 0,181, 0, 0,128,210,
|
/* 0x0600 */ 63, 0, 5,235, 33, 32,133,154,132,224, 0,145,242,255,255, 23,
|
||||||
/* 0x0610 */ 4, 0, 0, 20,224, 3, 19,170, 2, 0, 0, 20, 67, 6,128, 82,
|
/* 0x0610 */ 228, 3, 57,170,115, 2, 25,138,129, 0, 1,139, 33, 0, 19,203,
|
||||||
/* 0x0620 */ 2, 0,128, 82, 4, 0,128, 18, 5, 0,128,210, 31,255,255,151,
|
/* 0x0620 */ 33, 0, 25,138,163, 0, 32, 55, 83, 0, 0,181,162, 0, 0,181,
|
||||||
/* 0x0630 */ 19, 0, 19,203,224, 3, 52, 42, 28, 0,128, 82, 9, 0, 39, 30,
|
/* 0x0630 */ 0, 0,128,210, 4, 0, 0, 20,224, 3, 19,170, 2, 0, 0, 20,
|
||||||
/* 0x0640 */ 224, 3, 52,170,160, 87, 0,249,192,114, 64,121,159, 3, 0,107,
|
/* 0x0640 */ 67, 6,128, 82, 2, 0,128, 82, 4, 0,128, 18, 5, 0,128,210,
|
||||||
/* 0x0650 */ 42, 22, 0, 84, 96, 3, 64,185, 55, 1, 0,180, 31, 24, 0,113,
|
/* 0x0650 */ 31,255,255,151, 19, 0, 19,203,224, 3, 57, 42,232, 3, 39, 30,
|
||||||
/* 0x0660 */ 225, 0, 0, 84, 98, 11, 64,249,224, 3, 25,170, 97, 0,128, 82,
|
/* 0x0660 */ 10, 0, 39, 30,224, 3, 57,170, 15, 0,103,158, 1, 1, 38, 30,
|
||||||
/* 0x0670 */ 98, 2, 2,139,140,255,255,151,164, 0, 0, 20, 31, 4, 0,113,
|
/* 0x0670 */ 192,114, 64,121, 63, 0, 0,107, 74, 21, 0, 84,128, 3, 64,185,
|
||||||
/* 0x0680 */ 65, 20, 0, 84, 87, 2, 0,180, 96, 7, 64,249, 0, 2, 0,181,
|
/* 0x0680 */ 53, 1, 0,180, 31, 24, 0,113,225, 0, 0, 84,130, 11, 64,249,
|
||||||
/* 0x0690 */ 194, 18, 64,249,224, 3, 25,170, 99, 11, 64,249, 97, 0,128, 82,
|
/* 0x0690 */ 224, 3, 26,170, 97, 0,128, 82, 98, 2, 2,139,139,255,255,151,
|
||||||
/* 0x06a0 */ 98, 2, 2,139, 66, 0, 3,139,127,255,255,151,194,114, 64,121,
|
/* 0x06a0 */ 155, 0, 0, 20, 31, 4, 0,113, 33, 19, 0, 84,155, 7, 64,185,
|
||||||
/* 0x06b0 */ 224, 3, 25,170,161, 0,128, 82,123,255,255,151,194,110, 64,121,
|
/* 0x06b0 */ 0, 72,140, 82, 32,106,174,114,123, 11, 30, 83, 27, 36,219, 26,
|
||||||
/* 0x06c0 */ 224, 3, 25,170,129, 0,128, 82,119,255,255,151,122, 7, 64,185,
|
/* 0x06c0 */ 121, 11, 0, 18, 85, 2, 0,180,128, 7, 64,249, 0, 2, 0,181,
|
||||||
/* 0x06d0 */ 0, 72,140, 82, 32,106,174,114,117, 11, 64,249, 90, 11, 30, 83,
|
/* 0x06d0 */ 194, 18, 64,249,224, 3, 26,170,131, 11, 64,249, 97, 0,128, 82,
|
||||||
/* 0x06e0 */ 116, 19, 64,249, 0, 36,218, 26,160,179, 0,185, 26, 8, 0, 18,
|
/* 0x06e0 */ 98, 2, 2,139, 66, 0, 3,139,120,255,255,151,194,114, 64,121,
|
||||||
/* 0x06f0 */ 96, 23, 64,249,117, 2, 21,139,180, 99, 0,249,160, 2, 0,139,
|
/* 0x06f0 */ 224, 3, 26,170,161, 0,128, 82,116,255,255,151,194,110, 64,121,
|
||||||
/* 0x0700 */ 181,103, 0,249,161, 87, 64,249,255, 2, 31,235, 10, 0,103,158,
|
/* 0x0700 */ 224, 3, 26,170,129, 0,128, 82,112,255,255,151,148, 11, 64,249,
|
||||||
/* 0x0710 */ 101, 7, 64,249, 32, 1, 38, 30, 72, 6,128, 82, 67, 2,128, 82,
|
/* 0x0710 */ 191, 2, 31,235,128, 23, 64,249,130, 0,128, 18,116, 2, 20,139,
|
||||||
/* 0x0720 */ 7, 0, 21, 10,248, 0, 20, 11,248, 3, 24, 75, 0, 3, 0, 10,
|
/* 0x0720 */ 151, 19, 64,249,128, 2, 0,139,183, 83, 0,249,225, 1,102,158,
|
||||||
/* 0x0730 */ 248, 3, 7, 42,181, 2, 24,203, 20, 3, 20,139, 11, 0, 39, 30,
|
/* 0x0730 */ 180, 87, 0,249, 11, 0,103,158,152, 2, 23,139, 64, 1, 38, 30,
|
||||||
/* 0x0740 */ 160, 2, 20,139,224, 3, 0,203,165, 0, 24,203, 0, 0, 1,138,
|
/* 0x0740 */ 135, 7, 64,249, 67, 6,128, 82, 5, 0, 20, 10,148, 2, 5,203,
|
||||||
/* 0x0750 */ 20, 0, 20,139, 64, 0,128, 82, 2, 16,159, 26,255, 2, 31,235,
|
/* 0x0750 */ 183, 0, 23,139,128, 2, 23,139,229, 0, 5,203,224, 3, 0,203,
|
||||||
/* 0x0760 */ 160, 1, 38, 30,225, 3, 20,170, 66, 0, 26, 42, 4, 0,159, 90,
|
/* 0x0760 */ 0, 0, 1,138, 23, 0, 23,139, 64, 0,128, 82, 4, 16,159, 26,
|
||||||
/* 0x0770 */ 255, 2, 31,235, 3, 17,131, 26,224, 3, 21,170,203,254,255,151,
|
/* 0x0770 */ 191, 2, 31,235,132, 0, 25, 42, 66, 16,159, 90, 66, 0, 4, 10,
|
||||||
/* 0x0780 */ 191, 2, 0,235, 96, 0, 0, 84,224, 15,128, 82,172,254,255,151,
|
/* 0x0780 */ 191, 2, 31,235,132, 1, 38, 30, 64, 2,128, 82, 3, 0,131, 26,
|
||||||
/* 0x0790 */ 215, 0, 0,180,194, 1,102,158,224, 3, 23,170,227, 1,102,158,
|
/* 0x0790 */ 191, 2, 31,235,224, 3, 20,170,225, 3, 23,170,132, 0,159, 90,
|
||||||
/* 0x07a0 */ 161, 3, 3,145,238,254,255,151, 96, 1, 38, 30,224, 3, 0, 42,
|
/* 0x07a0 */ 203,254,255,151,159, 2, 0,235, 96, 0, 0, 84,224, 15,128, 82,
|
||||||
/* 0x07b0 */ 12, 0,103,158,160, 91, 64,249, 96, 0, 8, 55,215, 1, 0,181,
|
/* 0x07b0 */ 172,254,255,151,213, 0, 0,180,162, 1,102,158,224, 3, 21,170,
|
||||||
/* 0x07c0 */ 66, 0, 0, 20, 97, 1, 38, 30, 96, 19, 64,249,129,255,255, 52,
|
/* 0x07c0 */ 195, 1,102,158,161,131, 2,145,238,254,255,151,187, 1, 8, 54,
|
||||||
/* 0x07d0 */ 7, 3, 0,139, 0, 0,128,210,167, 2, 7,139,129, 1,102,158,
|
/* 0x07d0 */ 64, 1, 38, 30,225, 3, 24, 75, 34, 0, 0, 10, 0, 0,128,210,
|
||||||
/* 0x07e0 */ 255,104, 32, 56, 0, 4, 0,145, 31, 0, 1,235,129,255,255, 84,
|
/* 0x07e0 */ 98, 0, 0, 53, 24, 3, 2,139, 6, 0, 0, 20, 31,107, 32, 56,
|
||||||
/* 0x07f0 */ 243,255,255, 23, 96, 3, 64,249,225, 3, 0,178, 0,128, 64,146,
|
/* 0x07f0 */ 0, 4, 0,145, 31, 0, 2,235,161,255,255, 84,250,255,255, 23,
|
||||||
/* 0x0800 */ 31, 0, 1,235,129, 5, 0, 84, 96, 23, 64,249, 98, 19, 64,249,
|
/* 0x0800 */ 213, 6, 0,180,128, 3, 64,249,225, 3, 0,178, 0,128, 64,146,
|
||||||
/* 0x0810 */ 97, 11, 64,249, 31, 0, 2,235,129, 1, 0, 84,120, 14, 0,145,
|
/* 0x0810 */ 31, 0, 1,235,129, 5, 0, 84,128, 23, 64,249,130, 19, 64,249,
|
||||||
/* 0x0820 */ 24, 3, 0,139, 34, 1, 38, 30, 24, 3, 1,139, 24,247,126,146,
|
/* 0x0820 */ 129, 11, 64,249, 31, 0, 2,235,129, 1, 0, 84,123, 14, 0,145,
|
||||||
/* 0x0830 */ 224, 3, 24, 75, 0, 0, 2, 10, 31, 28, 0,113,105, 0, 0, 84,
|
/* 0x0830 */ 123, 3, 0,139, 66, 1, 38, 30,123, 3, 1,139,123,247,126,146,
|
||||||
/* 0x0840 */ 0, 0,128, 82, 13, 0, 0, 20, 96, 7, 64,249,192, 6, 0,180,
|
/* 0x0840 */ 224, 3, 27, 75, 0, 0, 2, 10, 31, 28, 0,113,105, 0, 0, 84,
|
||||||
/* 0x0850 */ 0, 0,128,210, 1, 0,130,210, 98, 0,128, 82, 67, 4,128, 82,
|
/* 0x0850 */ 0, 0,128, 82, 13, 0, 0, 20,128, 7, 64,249,160, 6, 0,180,
|
||||||
/* 0x0860 */ 4, 0,128, 18,229, 3, 0,170,144,254,255,151,248, 3, 0,170,
|
/* 0x0860 */ 0, 0,128,210, 1, 0,130,210, 98, 0,128, 82, 67, 4,128, 82,
|
||||||
/* 0x0870 */ 32, 2, 0,180, 32, 0,128, 82, 33, 0,128, 82, 1,128,186,114,
|
/* 0x0870 */ 4, 0,128, 18,229, 3, 0,170,149,254,255,151,251, 3, 0,170,
|
||||||
/* 0x0880 */ 1, 3, 0,185, 1,120,128, 82,225,203,186,114, 1, 7, 0,185,
|
/* 0x0880 */ 32, 2, 0,180, 32, 0,128, 82, 33, 0,128, 82, 1,128,186,114,
|
||||||
/* 0x0890 */ 160, 0, 0, 52,224, 3, 24,170, 1, 1,128,210,162, 0,128, 82,
|
/* 0x0890 */ 97, 3, 0,185, 1,120,128, 82,225,203,186,114, 97, 7, 0,185,
|
||||||
/* 0x08a0 */ 123,254,255,151, 32,251,127,146, 1, 0,128, 82,226, 3, 24,170,
|
/* 0x08a0 */ 160, 0, 0, 52,224, 3, 27,170, 1, 1,128,210,162, 0,128, 82,
|
||||||
/* 0x08b0 */ 253,254,255,151,224, 3, 21,170,225, 3, 20,170,226, 3, 26, 42,
|
/* 0x08b0 */ 128,254,255,151, 64,251,127,146, 1, 0,128, 82,226, 3, 27,170,
|
||||||
/* 0x08c0 */ 115,254,255,151, 32,246,255, 53,128, 1,102,158,148, 2, 0,139,
|
/* 0x08c0 */ 2,255,255,151,224, 3, 20,170,225, 3, 23,170,226, 3, 25, 42,
|
||||||
/* 0x08d0 */ 64, 1,102,158,181, 2, 20,139,191, 2, 0,235, 98, 1, 0, 84,
|
/* 0x08d0 */ 120,254,255,151,192,246,255, 53, 96, 1,102,158, 31, 3, 0,235,
|
||||||
/* 0x08e0 */ 65, 1,102,158,224, 3, 21,170,226, 3, 26, 42, 67, 6,128, 82,
|
/* 0x08e0 */ 98, 1, 0, 84, 97, 1,102,158,224, 3, 24,170,226, 3, 25, 42,
|
||||||
/* 0x08f0 */ 4, 0,128, 18, 5, 0,128,210, 33, 0, 21,203,107,254,255,151,
|
/* 0x08f0 */ 67, 6,128, 82, 4, 0,128, 18, 5, 0,128,210, 33, 0, 24,203,
|
||||||
/* 0x0900 */ 191, 2, 0,235, 33,244,255, 84,123,227, 0,145,156, 7, 0, 17,
|
/* 0x0900 */ 115,254,255,151, 31, 3, 0,235, 33,245,255, 84, 0, 1, 38, 30,
|
||||||
/* 0x0910 */ 78,255,255, 23, 0, 1,102,158,192, 0, 0,180, 19, 0, 0,249,
|
/* 0x0910 */ 156,227, 0,145, 0, 4, 0, 17, 8, 0, 39, 30, 84,255,255, 23,
|
||||||
/* 0x0920 */ 4, 0, 0, 20, 56, 0, 19,139, 24, 35, 0,145,211,255,255, 23,
|
/* 0x0920 */ 32, 1,102,158,192, 0, 0,180, 19, 0, 0,249, 4, 0, 0, 20,
|
||||||
/* 0x0930 */ 192, 14, 64,249,232, 39, 70,109,245, 91, 66,169,234, 47, 71,109,
|
/* 0x0930 */ 59, 0, 19,139,123, 35, 0,145,212,255,255, 23,192, 14, 64,249,
|
||||||
/* 0x0940 */ 96, 2, 0,139,236, 55, 72,109,243, 83, 65,169,238, 63, 73,109,
|
/* 0x0940 */ 232, 39, 70,109,245, 91, 66,169,234, 47, 71,109, 96, 2, 0,139,
|
||||||
/* 0x0950 */ 247, 99, 67,169,249,107, 68,169,251,115, 69,169,253,123,205,168,
|
/* 0x0950 */ 236, 55, 72,109,243, 83, 65,169,238, 63, 73,109,247, 99, 67,169,
|
||||||
/* 0x0960 */ 192, 3, 95,214,253,123,182,169,253, 3, 0,145,247, 99, 3,169,
|
/* 0x0960 */ 249,107, 68,169,251,115, 69,169,253,123,203,168,192, 3, 95,214,
|
||||||
/* 0x0970 */ 247, 3, 3,170, 3, 4, 64,185,243, 83, 1,169,162, 63, 0,249,
|
/* 0x0970 */ 253,123,182,169,253, 3, 0,145,247, 99, 3,169,247, 3, 3,170,
|
||||||
/* 0x0980 */ 243, 3, 2,170, 99, 48, 0,145, 2, 0, 64,185,162, 59, 0,249,
|
/* 0x0980 */ 3, 4, 64,185,243, 83, 1,169,162, 63, 0,249,243, 3, 2,170,
|
||||||
/* 0x0990 */ 226, 3, 4,170,160, 79, 0,249,116, 2, 1,145,163, 75, 0,249,
|
/* 0x0990 */ 99, 48, 0,145, 2, 0, 64,185,162, 59, 0,249,226, 3, 4,170,
|
||||||
/* 0x09a0 */ 3, 0,128,210,160, 71, 0,249,160, 67, 2,145,161, 67, 0,249,
|
/* 0x09a0 */ 160, 79, 0,249,116, 2, 1,145,163, 75, 0,249, 3, 0,128,210,
|
||||||
/* 0x09b0 */ 161,195, 1,145,245, 91, 2,169,249, 35, 0,249,249, 3, 7,170,
|
/* 0x09b0 */ 160, 71, 0,249,160, 67, 2,145,161, 67, 0,249,161,195, 1,145,
|
||||||
/* 0x09c0 */ 165, 47, 0,249, 22, 0,128, 82,166, 55, 0,249,164, 51, 0,249,
|
/* 0x09c0 */ 245, 91, 2,169,249, 35, 0,249,249, 3, 7,170,165, 47, 0,249,
|
||||||
/* 0x09d0 */ 99,254,255,151,164, 51, 64,249,161, 3, 2,145,165, 47, 64,249,
|
/* 0x09d0 */ 22, 0,128, 82,166, 55, 0,249,164, 51, 0,249,105,254,255,151,
|
||||||
/* 0x09e0 */ 2, 0,128, 82,227, 3, 23,170,166,163, 1,145,231, 3, 25,170,
|
/* 0x09e0 */ 164, 51, 64,249,161, 3, 2,145,165, 47, 64,249, 2, 0,128, 82,
|
||||||
/* 0x09f0 */ 224, 3, 19,170,189,254,255,151,245, 3, 0,170, 33, 1,128, 82,
|
/* 0x09f0 */ 227, 3, 23,170,166,163, 1,145,231, 3, 25,170,224, 3, 19,170,
|
||||||
/* 0x0a00 */ 224, 3, 23,170,226, 3, 21,170,167,254,255,151, 96,114, 64,121,
|
/* 0x0a00 */ 195,254,255,151,245, 3, 0,170, 33, 1,128, 82,224, 3, 23,170,
|
||||||
/* 0x0a10 */ 223, 2, 0,107,226, 4, 0, 84,128, 2, 64,185, 31, 12, 0,113,
|
/* 0x0a10 */ 226, 3, 21,170,173,254,255,151, 96,114, 64,121,223, 2, 0,107,
|
||||||
/* 0x0a20 */ 33, 4, 0, 84,129, 10, 64,249,160, 55, 64,249, 32, 0, 0,139,
|
/* 0x0a20 */ 226, 4, 0, 84,128, 2, 64,185, 31, 12, 0,113, 33, 4, 0, 84,
|
||||||
/* 0x0a30 */ 1, 0,128, 82,226, 3, 1, 42, 38,254,255,151,248, 3, 0, 42,
|
/* 0x0a30 */ 129, 10, 64,249,160, 55, 64,249, 32, 0, 0,139, 1, 0,128, 82,
|
||||||
/* 0x0a40 */ 96, 0,248, 54,224, 15,128, 82,253,253,255,151,225, 3, 19,170,
|
/* 0x0a40 */ 226, 3, 1, 42, 44,254,255,151,248, 3, 0, 42, 96, 0,248, 54,
|
||||||
/* 0x0a50 */ 2,128,128,210,252,253,255,151, 31, 0, 16,241, 65,255,255, 84,
|
/* 0x0a50 */ 224, 15,128, 82, 3,254,255,151,225, 3, 19,170, 2,128,128,210,
|
||||||
/* 0x0a60 */ 1, 0,128,210,226, 3, 24, 42,227, 3, 1,170,228, 3, 1,170,
|
/* 0x0a60 */ 2,254,255,151, 31, 0, 16,241, 65,255,255, 84, 1, 0,128,210,
|
||||||
/* 0x0a70 */ 229, 3, 1,170,166,163, 1,145,231, 3, 25,170,224, 3, 19,170,
|
/* 0x0a70 */ 226, 3, 24, 42,227, 3, 1,170,228, 3, 1,170,229, 3, 1,170,
|
||||||
/* 0x0a80 */ 191, 55, 0,249,153,254,255,151,245, 3, 0,170,162, 55, 64,249,
|
/* 0x0a80 */ 166,163, 1,145,231, 3, 25,170,224, 3, 19,170,191, 55, 0,249,
|
||||||
/* 0x0a90 */ 224, 3, 23,170,225, 0,128, 82,131,254,255,151,224, 3, 24, 42,
|
/* 0x0a90 */ 159,254,255,151,245, 3, 0,170,162, 55, 64,249,224, 3, 23,170,
|
||||||
/* 0x0aa0 */ 239,253,255,151,148,226, 0,145,214, 6, 0, 17,216,255,255, 23,
|
/* 0x0aa0 */ 225, 0,128, 82,137,254,255,151,224, 3, 24, 42,245,253,255,151,
|
||||||
/* 0x0ab0 */ 224, 3, 21,170,249, 35, 64,249,243, 83, 65,169,245, 91, 66,169,
|
/* 0x0ab0 */ 148,226, 0,145,214, 6, 0, 17,216,255,255, 23,224, 3, 21,170,
|
||||||
/* 0x0ac0 */ 247, 99, 67,169,253,123,202,168,192, 3, 95,214
|
/* 0x0ac0 */ 249, 35, 64,249,243, 83, 65,169,245, 91, 66,169,247, 99, 67,169,
|
||||||
|
/* 0x0ad0 */ 253,123,202,168,192, 3, 95,214
|
||||||
};
|
};
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+117
-116
@@ -1,5 +1,5 @@
|
|||||||
/* powerpc64-linux.elf-fold.h
|
/* powerpc64-linux.elf-fold.h
|
||||||
created from powerpc64-linux.elf-fold.bin, 3440 (0xd70) bytes
|
created from powerpc64-linux.elf-fold.bin, 3448 (0xd78) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -31,21 +31,21 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define STUB_POWERPC64_LINUX_ELF_FOLD_SIZE 3440
|
#define STUB_POWERPC64_LINUX_ELF_FOLD_SIZE 3448
|
||||||
#define STUB_POWERPC64_LINUX_ELF_FOLD_ADLER32 0xa6faa6d1
|
#define STUB_POWERPC64_LINUX_ELF_FOLD_ADLER32 0xf41ca5e4
|
||||||
#define STUB_POWERPC64_LINUX_ELF_FOLD_CRC32 0xc9634fd1
|
#define STUB_POWERPC64_LINUX_ELF_FOLD_CRC32 0xc554fca1
|
||||||
|
|
||||||
unsigned char stub_powerpc64_linux_elf_fold[3440] = {
|
unsigned char stub_powerpc64_linux_elf_fold[3448] = {
|
||||||
/* 0x0000 */ 127, 69, 76, 70, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0000 */ 127, 69, 76, 70, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0010 */ 0, 2, 0, 21, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 13, 32,
|
/* 0x0010 */ 0, 2, 0, 21, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 13, 40,
|
||||||
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0030 */ 0, 0, 0, 1, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0,
|
/* 0x0030 */ 0, 0, 0, 1, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0040 */ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0040 */ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0050 */ 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,
|
/* 0x0050 */ 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,
|
||||||
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 13, 28, 0, 0, 0, 0, 0, 0, 13, 28,
|
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 13, 36, 0, 0, 0, 0, 0, 0, 13, 36,
|
||||||
/* 0x0070 */ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6,
|
/* 0x0070 */ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6,
|
||||||
/* 0x0080 */ 0, 0, 0, 0, 0, 0, 13, 32, 0, 0, 0, 0, 0, 16, 13, 32,
|
/* 0x0080 */ 0, 0, 0, 0, 0, 0, 13, 40, 0, 0, 0, 0, 0, 16, 13, 40,
|
||||||
/* 0x0090 */ 0, 0, 0, 0, 0, 16, 13, 32, 0, 0, 0, 0, 0, 0, 0, 80,
|
/* 0x0090 */ 0, 0, 0, 0, 0, 16, 13, 40, 0, 0, 0, 0, 0, 0, 0, 80,
|
||||||
/* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 1, 0, 0,
|
/* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 1, 0, 0,
|
||||||
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 96,255,248,
|
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 96,255,248,
|
||||||
/* 0x00c0 */ 120, 99, 77,164, 78,128, 0, 32, 96, 0, 0, 0, 72, 0, 0,125,
|
/* 0x00c0 */ 120, 99, 77,164, 78,128, 0, 32, 96, 0, 0, 0, 72, 0, 0,125,
|
||||||
@@ -76,7 +76,7 @@ unsigned char stub_powerpc64_linux_elf_fold[3440] = {
|
|||||||
/* 0x0250 */ 126,228,187,120, 56,161, 0,144,127, 70,211,120,127,231,251,120,
|
/* 0x0250 */ 126,228,187,120, 56,161, 0,144,127, 70,211,120,127,231,251,120,
|
||||||
/* 0x0260 */ 126,200,179,120, 56, 0, 0, 0,248,225, 0,112, 56,225, 0,112,
|
/* 0x0260 */ 126,200,179,120, 56, 0, 0, 0,248,225, 0,112, 56,225, 0,112,
|
||||||
/* 0x0270 */ 248, 1, 0,120,249, 1, 0,128, 57, 1, 0,128,248, 1, 0,136,
|
/* 0x0270 */ 248, 1, 0,120,249, 1, 0,128, 57, 1, 0,128,248, 1, 0,136,
|
||||||
/* 0x0280 */ 127,202,243,120, 72, 0, 8,129, 56, 33, 8,144,126,162,171,120,
|
/* 0x0280 */ 127,202,243,120, 72, 0, 8,137, 56, 33, 8,144,126,162,171,120,
|
||||||
/* 0x0290 */ 112, 96, 0, 7, 64,130, 0, 36,128, 3, 0, 0, 40, 0, 0, 0,
|
/* 0x0290 */ 112, 96, 0, 7, 64,130, 0, 36,128, 3, 0, 0, 40, 0, 0, 0,
|
||||||
/* 0x02a0 */ 64,130, 0, 24,232, 1, 1,136,232, 67, 0, 8,124, 66, 2, 20,
|
/* 0x02a0 */ 64,130, 0, 24,232, 1, 1,136,232, 67, 0, 8,124, 66, 2, 20,
|
||||||
/* 0x02b0 */ 232, 99, 0, 0,124, 99, 2, 20,248,117, 0, 0,124,127, 27,120,
|
/* 0x02b0 */ 232, 99, 0, 0,124, 99, 2, 20,248,117, 0, 0,124,127, 27,120,
|
||||||
@@ -106,7 +106,7 @@ unsigned char stub_powerpc64_linux_elf_fold[3440] = {
|
|||||||
/* 0x0430 */ 125, 74, 74, 20,249, 67, 0, 8,233, 67, 0, 0,125, 41, 80, 80,
|
/* 0x0430 */ 125, 74, 74, 20,249, 67, 0, 8,233, 67, 0, 0,125, 41, 80, 80,
|
||||||
/* 0x0440 */ 249, 35, 0, 0, 78,128, 0, 32, 0, 0, 0, 0, 0, 0, 0, 1,
|
/* 0x0440 */ 249, 35, 0, 0, 78,128, 0, 32, 0, 0, 0, 0, 0, 0, 0, 1,
|
||||||
/* 0x0450 */ 128, 0, 0, 0,125,128, 0, 38,124, 8, 2,166,145,129, 0, 8,
|
/* 0x0450 */ 128, 0, 0, 0,125,128, 0, 38,124, 8, 2,166,145,129, 0, 8,
|
||||||
/* 0x0460 */ 72, 0, 8, 81,248, 33,255, 81,124,126, 27,120,124,159, 35,120,
|
/* 0x0460 */ 72, 0, 8, 89,248, 33,255, 81,124,126, 27,120,124,159, 35,120,
|
||||||
/* 0x0470 */ 124,189, 43,120,124,220, 51,120, 46, 38, 0, 0,233, 63, 0, 0,
|
/* 0x0470 */ 124,189, 43,120,124,220, 51,120, 46, 38, 0, 0,233, 63, 0, 0,
|
||||||
/* 0x0480 */ 47,169, 0, 0, 65,158, 1, 84,127,195,243,120, 56,129, 0,112,
|
/* 0x0480 */ 47,169, 0, 0, 65,158, 1, 84,127,195,243,120, 56,129, 0,112,
|
||||||
/* 0x0490 */ 56,160, 0, 12, 75,255,255, 81,129, 65, 0,112,129, 33, 0,116,
|
/* 0x0490 */ 56,160, 0, 12, 75,255,255, 81,129, 65, 0,112,129, 33, 0,116,
|
||||||
@@ -130,125 +130,126 @@ unsigned char stub_powerpc64_linux_elf_fold[3440] = {
|
|||||||
/* 0x05b0 */ 125, 37, 75,120, 75,255,254, 49,129, 1, 0,112,233, 95, 0, 8,
|
/* 0x05b0 */ 125, 37, 75,120, 75,255,254, 49,129, 1, 0,112,233, 95, 0, 8,
|
||||||
/* 0x05c0 */ 233, 63, 0, 0,125, 74, 66, 20,125, 40, 72, 80,249, 95, 0, 8,
|
/* 0x05c0 */ 233, 63, 0, 0,125, 74, 66, 20,125, 40, 72, 80,249, 95, 0, 8,
|
||||||
/* 0x05d0 */ 249, 63, 0, 0, 75,255,254,168, 56, 33, 0,176,129,129, 0, 8,
|
/* 0x05d0 */ 249, 63, 0, 0, 75,255,254,168, 56, 33, 0,176,129,129, 0, 8,
|
||||||
/* 0x05e0 */ 125,144,129, 32, 72, 0, 7, 28, 0, 0, 0, 0, 0, 0, 0, 3,
|
/* 0x05e0 */ 125,144,129, 32, 72, 0, 7, 36, 0, 0, 0, 0, 0, 0, 0, 3,
|
||||||
/* 0x05f0 */ 128, 4, 0, 0, 44, 35, 0, 0, 77,130, 0, 32,120,105, 7,225,
|
/* 0x05f0 */ 128, 4, 0, 0, 44, 35, 0, 0, 77,130, 0, 32,120,105, 7,225,
|
||||||
/* 0x0600 */ 76,130, 0, 32, 47, 36, 0, 0,233, 67, 0, 0,127,170, 32, 64,
|
/* 0x0600 */ 76,130, 0, 32, 47, 36, 0, 0,233, 67, 0, 0,127,170, 32, 64,
|
||||||
/* 0x0610 */ 64,158, 0, 16,248,131, 0, 0,248,163, 0, 8, 78,128, 0, 32,
|
/* 0x0610 */ 64,158, 0, 16,248,131, 0, 0,248,163, 0, 8, 78,128, 0, 32,
|
||||||
/* 0x0620 */ 43,170, 0, 1, 64,158, 0, 12, 65,154, 0, 16, 75,255,255,232,
|
/* 0x0620 */ 43,170, 0, 1, 64,158, 0, 12, 65,154, 0, 16, 75,255,255,232,
|
||||||
/* 0x0630 */ 47,170, 0, 0, 77,158, 0, 32, 56, 99, 0, 16, 75,255,255,204,
|
/* 0x0630 */ 47,170, 0, 0, 77,158, 0, 32, 56, 99, 0, 16, 75,255,255,204,
|
||||||
/* 0x0640 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125,128, 0, 38,
|
/* 0x0640 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125,128, 0, 38,
|
||||||
/* 0x0650 */ 124, 8, 2,166,145,129, 0, 8, 72, 0, 6, 33,248, 33,254,209,
|
/* 0x0650 */ 124, 8, 2,166,145,129, 0, 8, 72, 0, 6, 41,125, 53, 75,120,
|
||||||
/* 0x0660 */ 125, 53, 75,120,233, 35, 0, 32, 46, 36, 0, 0,125, 15, 67,120,
|
/* 0x0660 */ 233, 35, 0, 32, 46, 36, 0, 0,248, 33,254,209,125, 15, 67,120,
|
||||||
/* 0x0670 */ 161, 3, 0, 16,125, 95, 83,120,124,123, 27,120,248,161, 1,112,
|
/* 0x0670 */ 161, 3, 0, 16,125, 94, 83,120,124,124, 27,120,124,177, 43,120,
|
||||||
/* 0x0680 */ 248,129, 0,128,124,216, 51,120,124,240, 59,120,126, 67, 74, 20,
|
/* 0x0680 */ 124,216, 51,120,233, 85, 0, 0,124,240, 59,120,126, 67, 74, 20,
|
||||||
/* 0x0690 */ 233, 85, 0, 0, 65,146, 0, 88,232,234, 0, 32, 85, 8, 4, 62,
|
/* 0x0690 */ 248,129, 0,128, 65,146, 0, 88,232,234, 0, 32, 85, 8, 4, 62,
|
||||||
/* 0x06a0 */ 47,136, 0, 2,124,234, 58, 20,232,103, 0, 72,124, 99, 80, 80,
|
/* 0x06a0 */ 47,136, 0, 2,124,234, 58, 20,232,103, 0, 72,124, 99, 80, 80,
|
||||||
/* 0x06b0 */ 64,158, 0, 8,232,103, 0, 16,232,135, 0, 40, 56,160, 0, 0,
|
/* 0x06b0 */ 64,158, 0, 8,232,103, 0, 16,232,135, 0, 40, 56,160, 0, 0,
|
||||||
/* 0x06c0 */ 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, 75,255,252,185,
|
/* 0x06c0 */ 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, 75,255,252,185,
|
||||||
/* 0x06d0 */ 96, 0, 0, 0,161, 91, 0, 16, 59,192, 0, 0, 47,138, 0, 2,
|
/* 0x06d0 */ 96, 0, 0, 0,161, 92, 0, 16, 59,224, 0, 0, 47,138, 0, 2,
|
||||||
/* 0x06e0 */ 65,158, 0,220,124,126, 27,120, 72, 0, 0,212, 85, 8, 4, 62,
|
/* 0x06e0 */ 65,158, 0,220,124,127, 27,120, 72, 0, 0,212, 85, 8, 4, 62,
|
||||||
/* 0x06f0 */ 56,224, 0, 16, 47,136, 0, 3, 64,158, 0, 8, 56,224, 0, 0,
|
/* 0x06f0 */ 56,224, 0, 16, 47,136, 0, 3, 64,158, 0, 8, 56,224, 0, 0,
|
||||||
/* 0x0700 */ 160,187, 0, 56, 56,231, 0, 34,125, 67, 83,120,120,230, 0, 32,
|
/* 0x0700 */ 160,188, 0, 56, 56,231, 0, 34,125, 67, 83,120,120,230, 0, 32,
|
||||||
/* 0x0710 */ 126, 68,147,120, 56,165, 0, 1, 57, 0, 0, 0,124,169, 3,166,
|
/* 0x0710 */ 126, 68,147,120, 56,165, 0, 1, 57, 0, 0, 0,124,169, 3,166,
|
||||||
/* 0x0720 */ 59,192,255,255, 66, 64, 0, 60,128,164, 0, 0, 47,133, 0, 1,
|
/* 0x0720 */ 59,224,255,255, 66, 64, 0, 60,128,164, 0, 0, 47,133, 0, 1,
|
||||||
/* 0x0730 */ 64,158, 0, 40,233,100, 0, 16,127,190, 88, 64, 64,157, 0, 8,
|
/* 0x0730 */ 64,158, 0, 40,233,100, 0, 16,127,191, 88, 64, 64,157, 0, 8,
|
||||||
/* 0x0740 */ 125,126, 91,120,232,164, 0, 40,124,171, 42, 20,127,168, 40, 64,
|
/* 0x0740 */ 125,127, 91,120,232,164, 0, 40,124,171, 42, 20,127,168, 40, 64,
|
||||||
/* 0x0750 */ 64,156, 0, 8,124,168, 43,120, 56,132, 0, 56, 75,255,255,200,
|
/* 0x0750 */ 64,156, 0, 8,124,168, 43,120, 56,132, 0, 56, 75,255,255,200,
|
||||||
/* 0x0760 */ 127,228,248,248,127,222,248, 56,125, 4, 66, 20,120,233,231,227,
|
/* 0x0760 */ 127,196,240,248,127,255,240, 56,125, 4, 66, 20,120,233,231,227,
|
||||||
/* 0x0770 */ 125, 30, 64, 80,125, 4,248, 56, 64,130, 0, 28, 47,190, 0, 0,
|
/* 0x0770 */ 125, 31, 64, 80,125, 4,240, 56, 64,130, 0, 28, 47,191, 0, 0,
|
||||||
/* 0x0780 */ 64,158, 0, 28, 47,170, 0, 0, 65,158, 0, 24, 56,192, 0, 50,
|
/* 0x0780 */ 64,158, 0, 28, 47,170, 0, 0, 65,158, 0, 24, 56,192, 0, 50,
|
||||||
/* 0x0790 */ 72, 0, 0, 16,127,195,243,120, 72, 0, 0, 8, 56, 96, 0, 0,
|
/* 0x0790 */ 72, 0, 0, 16,127,227,251,120, 72, 0, 0, 8, 56, 96, 0, 0,
|
||||||
/* 0x07a0 */ 56,160, 0, 0,124,198, 7,180, 56,224,255,255, 57, 0, 0, 0,
|
/* 0x07a0 */ 56,160, 0, 0,124,198, 7,180, 56,224,255,255, 57, 0, 0, 0,
|
||||||
/* 0x07b0 */ 75,255,251,213, 96, 0, 0, 0,127,222, 24, 80, 57, 62, 0,120,
|
/* 0x07b0 */ 75,255,251,213, 96, 0, 0, 0,127,255, 24, 80, 57, 63, 0,120,
|
||||||
/* 0x07c0 */ 127,243,248,248,249, 33, 0,144,127,255,248,248,123, 9, 7,164,
|
/* 0x07c0 */ 127,211,240,248,249, 33, 0,144,127,222,240,248,123, 9, 7,164,
|
||||||
/* 0x07d0 */ 251,225, 0,136,249, 33, 0,152, 62,224, 0, 1, 61,192, 78,128,
|
/* 0x07d0 */ 251,193, 0,136,249, 33, 0,152, 62,224, 0, 1, 61,192, 78,128,
|
||||||
/* 0x07e0 */ 122,247,131,228, 59, 32, 0, 0, 98,247, 0, 1, 97,206, 0, 32,
|
/* 0x07e0 */ 122,247,131,228, 59, 32, 0, 0, 98,247, 0, 1, 97,206, 0, 32,
|
||||||
/* 0x07f0 */ 161, 91, 0, 56,127,138,200, 0, 64,157, 2,204,129, 82, 0, 0,
|
/* 0x07f0 */ 161, 92, 0, 56,127,138,200, 0, 64,157, 2,212,129, 82, 0, 0,
|
||||||
/* 0x0800 */ 65,146, 0, 36, 47,138, 0, 6, 64,158, 0, 28,232,178, 0, 16,
|
/* 0x0800 */ 65,146, 0, 36, 47,138, 0, 6, 64,158, 0, 28,232,178, 0, 16,
|
||||||
/* 0x0810 */ 127, 3,195,120, 56,128, 0, 3,124,190, 42, 20, 75,255,253,217,
|
/* 0x0810 */ 127, 3,195,120, 56,128, 0, 3,124,191, 42, 20, 75,255,253,217,
|
||||||
/* 0x0820 */ 72, 0, 2,148, 47,138, 0, 1, 64,158, 2,140, 65,146, 0, 76,
|
/* 0x0820 */ 72, 0, 2,156, 47,138, 0, 1, 64,158, 2,148,131, 82, 0, 4,
|
||||||
/* 0x0830 */ 233, 82, 0, 8, 47,170, 0, 0, 64,158, 0, 64,233, 91, 0, 32,
|
/* 0x0830 */ 61, 32,115, 81, 97, 41, 98, 64, 87, 90, 22,250,125, 58,212, 48,
|
||||||
/* 0x0840 */ 232,178, 0, 16,127, 3,195,120, 56,128, 0, 3,125, 94, 82, 20,
|
/* 0x0840 */ 87, 84, 7,126, 65,146, 0, 76,233, 82, 0, 8, 47,170, 0, 0,
|
||||||
/* 0x0850 */ 124,170, 42, 20, 75,255,253,161,160,187, 0, 56,127, 3,195,120,
|
/* 0x0850 */ 64,158, 0, 64,233, 92, 0, 32,232,178, 0, 16,127, 3,195,120,
|
||||||
/* 0x0860 */ 56,128, 0, 5, 75,255,253,145,160,187, 0, 54,127, 3,195,120,
|
/* 0x0860 */ 56,128, 0, 3,125, 95, 82, 20,124,170, 42, 20, 75,255,253,137,
|
||||||
/* 0x0870 */ 56,128, 0, 4, 75,255,253,129,235,178, 0, 16,131, 82, 0, 4,
|
/* 0x0870 */ 160,188, 0, 56,127, 3,195,120, 56,128, 0, 5, 75,255,253,121,
|
||||||
/* 0x0880 */ 61, 32,115, 81,235,146, 0, 32,234,210, 0, 40, 97, 41, 98, 64,
|
/* 0x0880 */ 160,188, 0, 54,127, 3,195,120, 56,128, 0, 4, 75,255,253,105,
|
||||||
/* 0x0890 */ 127,190,234, 20, 87, 90, 22,250,251,129, 0,112,127,168,152, 56,
|
/* 0x0890 */ 235,210, 0, 16,235,114, 0, 32,234,210, 0, 40,233, 33, 0,136,
|
||||||
/* 0x08a0 */ 125, 58,212, 48,121, 17, 0, 32,127,232,226, 20,251,161, 0,120,
|
/* 0x08a0 */ 127,223,242, 20,251, 97, 0,112,127,200,152, 56,127,190,218, 20,
|
||||||
/* 0x08b0 */ 233, 33, 0,136,127,145,226, 20,126,221,178, 20,127,177,232, 80,
|
/* 0x08b0 */ 251,193, 0,120,121, 8, 0, 32,126,222,178, 20,127,104,218, 20,
|
||||||
/* 0x08c0 */ 127,255, 0,208,124,125,226, 20,127,255,152, 56,124, 99, 0,208,
|
/* 0x08c0 */ 127,200,240, 80,125, 94,218, 20,125, 74, 0,208,125, 74, 72, 56,
|
||||||
/* 0x08d0 */ 87, 84, 7,126,124, 99, 72, 56,123,255, 0, 32,127,131,226, 20,
|
/* 0x08d0 */ 127,106,218, 20, 64,146, 0, 12, 56,160, 0, 0, 72, 0, 0, 8,
|
||||||
/* 0x08e0 */ 64,146, 0, 12, 56,160, 0, 0, 72, 0, 0, 8, 56,160, 0, 2,
|
/* 0x08e0 */ 56,160, 0, 2,124,165,163,120, 64,146, 0, 16, 57, 64,255,255,
|
||||||
/* 0x08f0 */ 124,165,163,120,124,165, 7,180, 64,146, 0, 16,232,225, 1,112,
|
/* 0x08f0 */ 121, 74, 0, 32, 72, 0, 0, 16, 61, 64,255,255, 97, 74,255,251,
|
||||||
/* 0x0900 */ 56,192, 0, 18, 72, 0, 0, 12, 56,192, 0, 50, 56,224,255,255,
|
/* 0x0900 */ 121, 74, 0, 32,125, 69, 40, 56, 65,146, 0, 16, 56,192, 0, 50,
|
||||||
/* 0x0910 */ 233, 18, 0, 8,127,163,235,120,127,132,227,120,125, 17, 64, 80,
|
/* 0x0910 */ 56,224,255,255, 72, 0, 0, 12,126, 39,139,120, 56,192, 0, 18,
|
||||||
/* 0x0920 */ 75,255,250,101, 96, 0, 0, 0,127,189, 24, 0, 65,254, 0, 16,
|
/* 0x0920 */ 233, 82, 0, 8,127,195,243,120,127,100,219,120,125, 8, 80, 80,
|
||||||
/* 0x0930 */ 56, 96, 0,127, 75,255,250,105, 96, 0, 0, 0, 65,146, 0, 24,
|
/* 0x0930 */ 75,255,250, 85, 96, 0, 0, 0,127,190, 24, 0, 65,254, 0, 16,
|
||||||
/* 0x0940 */ 232, 97, 0,128, 56,129, 0,112,126, 5,131,120,125,230,123,120,
|
/* 0x0940 */ 56, 96, 0,127, 75,255,250, 89, 96, 0, 0, 0, 65,146, 0, 24,
|
||||||
/* 0x0950 */ 75,255,251, 5,123, 73,255,227, 64,130, 0, 12, 64,146, 0, 52,
|
/* 0x0950 */ 232, 97, 0,128, 56,129, 0,112,126, 5,131,120,125,230,123,120,
|
||||||
/* 0x0960 */ 72, 0, 1, 28, 47,191, 0, 0,233, 82, 0, 32, 65,158,255,240,
|
/* 0x0960 */ 75,255,250,245,123, 73,255,227, 65,130, 0, 52,125, 93, 0,208,
|
||||||
/* 0x0970 */ 125, 81, 82, 20, 57, 74,255,255,127,233, 3,166,125, 93, 82, 20,
|
/* 0x0970 */ 57, 29,255,255,125, 74,152, 56,121, 74, 0, 33, 64,130, 0, 12,
|
||||||
/* 0x0980 */ 57, 32, 0, 0,157, 42, 0, 1, 66, 0,255,248, 75,255,255,208,
|
/* 0x0980 */ 127,189, 82, 20, 72, 0, 0, 24,125, 73, 3,166, 56,224, 0, 0,
|
||||||
/* 0x0990 */ 233, 82, 0, 0,121, 74, 7,194,121, 74, 0, 2,127,170,184, 0,
|
/* 0x0990 */ 156,232, 0, 1, 66, 0,255,252, 75,255,255,232, 65,146, 0,240,
|
||||||
/* 0x09a0 */ 64,158, 0,192,235, 82, 0, 40,233, 82, 0, 32,233, 18, 0, 16,
|
/* 0x09a0 */ 233, 82, 0, 0,121, 74, 7,194,121, 74, 0, 2,127,170,184, 0,
|
||||||
/* 0x09b0 */ 127,186, 80, 0, 64,158, 0, 36,127, 90, 66, 20,127, 90,242, 20,
|
/* 0x09b0 */ 64,158, 0,192,235, 82, 0, 40,233, 82, 0, 32,233, 18, 0, 16,
|
||||||
/* 0x09c0 */ 125, 90, 0,208,125, 74,152, 56, 43,138, 0, 15, 64,157, 0, 12,
|
/* 0x09c0 */ 127,186, 80, 0, 64,158, 0, 36,127, 90, 66, 20,127, 90,250, 20,
|
||||||
/* 0x09d0 */ 57, 64, 0, 0, 72, 0, 0, 60,233, 82, 0, 8, 47,170, 0, 0,
|
/* 0x09d0 */ 125, 90, 0,208,125, 74,152, 56, 43,138, 0, 15, 64,157, 0, 12,
|
||||||
/* 0x09e0 */ 65,158, 1, 8, 56, 96, 0, 0, 56,128, 16, 0, 56,160, 0, 3,
|
/* 0x09e0 */ 57, 64, 0, 0, 72, 0, 0, 60,233, 82, 0, 8, 47,170, 0, 0,
|
||||||
/* 0x09f0 */ 56,192, 0, 34, 56,224,255,255, 57, 0, 0, 0, 75,255,249,137,
|
/* 0x09f0 */ 65,158, 1, 0, 56, 96, 0, 0, 56,128, 16, 0, 56,160, 0, 3,
|
||||||
/* 0x0a00 */ 96, 0, 0, 0,124,122, 27,121, 65,130, 0, 88, 57, 64, 0, 1,
|
/* 0x0a00 */ 56,192, 0, 34, 56,224,255,255, 57, 0, 0, 0, 75,255,249,121,
|
||||||
/* 0x0a10 */ 61, 32, 68, 0, 47,170, 0, 0,145,218, 0, 12, 97, 41, 0, 2,
|
/* 0x0a10 */ 96, 0, 0, 0,124,122, 27,121, 65,130, 0, 88, 57, 64, 0, 1,
|
||||||
/* 0x0a20 */ 145, 58, 0, 0, 61, 32,127,236, 97, 41,251,120,145, 58, 0, 4,
|
/* 0x0a20 */ 61, 32, 68, 0, 61, 0, 56,128,145,218, 0, 12, 97, 41, 0, 2,
|
||||||
/* 0x0a30 */ 61, 32, 56,128,145, 58, 0, 8, 65,158, 0, 24,127, 67,211,120,
|
/* 0x0a30 */ 47,170, 0, 0,145, 26, 0, 8,145, 58, 0, 0, 61, 32,127,236,
|
||||||
/* 0x0a40 */ 56,128, 0, 12, 56,160, 0, 5, 75,255,249,133, 96, 0, 0, 0,
|
/* 0x0a40 */ 97, 41,251,120,145, 58, 0, 4, 65,158, 0, 24,127, 67,211,120,
|
||||||
/* 0x0a50 */ 232, 97, 0,152, 56,128, 0, 0,127, 69,211,120, 75,255,251,153,
|
/* 0x0a50 */ 56,128, 0, 12, 56,160, 0, 5, 75,255,249,117, 96, 0, 0, 0,
|
||||||
/* 0x0a60 */ 127,163,235,120,127,132,227,120,126,133, 7,180, 75,255,249, 97,
|
/* 0x0a60 */ 232, 97, 0,152, 56,128, 0, 0,127, 69,211,120, 75,255,251,137,
|
||||||
/* 0x0a70 */ 96, 0, 0, 0, 47,163, 0, 0, 64,222,254,184,127,252,250, 20,
|
/* 0x0a70 */ 127,195,243,120,127,100,219,120,126,133, 7,180, 75,255,249, 81,
|
||||||
/* 0x0a80 */ 127,189,250, 20,127,189,176, 64, 64,156, 0, 44,127,163,235,120,
|
/* 0x0a80 */ 96, 0, 0, 0, 47,163, 0, 0, 64,222,254,184,127,189,176, 64,
|
||||||
/* 0x0a90 */ 124,157,176, 80,126,133, 7,180, 56,192, 0, 50, 56,224,255,255,
|
/* 0x0a90 */ 64,156, 0, 44,127,163,235,120,124,157,176, 80,126,133, 7,180,
|
||||||
/* 0x0aa0 */ 57, 0, 0, 0, 75,255,248,225, 96, 0, 0, 0,127,189, 24, 0,
|
/* 0x0aa0 */ 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, 75,255,248,217,
|
||||||
/* 0x0ab0 */ 64,222,254,128, 59, 57, 0, 1, 58, 82, 0, 56,127, 57, 7,180,
|
/* 0x0ab0 */ 96, 0, 0, 0,127,189, 24, 0, 64,222,254,136, 59, 57, 0, 1,
|
||||||
/* 0x0ac0 */ 75,255,253, 48, 47,181, 0, 0, 65,158, 0, 8,251,213, 0, 0,
|
/* 0x0ac0 */ 58, 82, 0, 56,127, 57, 7,180, 75,255,253, 40, 47,181, 0, 0,
|
||||||
/* 0x0ad0 */ 56, 33, 1, 48,232,123, 0, 24,124,126, 26, 20,129,129, 0, 8,
|
/* 0x0ad0 */ 65,158, 0, 8,251,245, 0, 0, 56, 33, 1, 48,232,124, 0, 24,
|
||||||
/* 0x0ae0 */ 125,144,129, 32, 72, 0, 1,228,233, 33, 0,144,127, 73, 66, 20,
|
/* 0x0ae0 */ 124,127, 26, 20,129,129, 0, 8,125,144,129, 32, 72, 0, 1,228,
|
||||||
/* 0x0af0 */ 59, 90, 0, 24, 75,255,255, 28, 0, 0, 0, 0, 0, 0, 0, 3,
|
/* 0x0af0 */ 233, 33, 0,144,127, 73, 66, 20, 59, 90, 0, 24, 75,255,255, 36,
|
||||||
/* 0x0b00 */ 128, 18, 0, 0,124, 8, 2,166, 72, 0, 1,153,248, 33,255, 17,
|
/* 0x0b00 */ 0, 0, 0, 0, 0, 0, 0, 3,128, 18, 0, 0,124, 8, 2,166,
|
||||||
/* 0x0b10 */ 125, 61, 75,120,129, 35, 0, 0,124,191, 43,120,124,218, 51,120,
|
/* 0x0b10 */ 72, 0, 1,153,248, 33,255, 17,125, 61, 75,120,129, 35, 0, 0,
|
||||||
/* 0x0b20 */ 56,192, 0, 0,125, 88, 83,120,249, 33, 0,144,248,161, 0,152,
|
/* 0x0b20 */ 124,191, 43,120,124,218, 51,120, 56,192, 0, 0,125, 88, 83,120,
|
||||||
/* 0x0b30 */ 124,229, 59,120, 59,159, 0, 64,129, 35, 0, 4,248, 97, 0,120,
|
/* 0x0b30 */ 249, 33, 0,144,248,161, 0,152,124,229, 59,120, 59,159, 0, 64,
|
||||||
/* 0x0b40 */ 59,192, 0, 0,248, 97, 0,136,248,129, 0,128, 57, 41, 0, 12,
|
/* 0x0b40 */ 129, 35, 0, 4,248, 97, 0,120, 59,192, 0, 0,248, 97, 0,136,
|
||||||
/* 0x0b50 */ 248,225, 0,160,249, 1, 0,168,249, 33, 0,112, 56, 97, 0,112,
|
/* 0x0b50 */ 248,129, 0,128, 57, 41, 0, 12,248,225, 0,160,249, 1, 0,168,
|
||||||
/* 0x0b60 */ 56,129, 0,144, 75,255,248,241,232,225, 0,160,233, 1, 0,168,
|
/* 0x0b60 */ 249, 33, 0,112, 56, 97, 0,112, 56,129, 0,144, 75,255,248,233,
|
||||||
/* 0x0b70 */ 56,129, 0,128, 56,160, 0, 0,127, 70,211,120,127,169,235,120,
|
/* 0x0b70 */ 232,225, 0,160,233, 1, 0,168, 56,129, 0,128, 56,160, 0, 0,
|
||||||
/* 0x0b80 */ 127, 10,195,120,127,227,251,120, 75,255,250,197, 56,128, 0, 9,
|
/* 0x0b80 */ 127, 70,211,120,127,169,235,120,127, 10,195,120,127,227,251,120,
|
||||||
/* 0x0b90 */ 124,123, 27,120,127, 67,211,120,127,101,219,120, 75,255,250, 89,
|
/* 0x0b90 */ 75,255,250,189, 56,128, 0, 9,124,123, 27,120,127, 67,211,120,
|
||||||
/* 0x0ba0 */ 161, 63, 0, 56,127,137,240, 64, 64,157, 0,184,129, 60, 0, 0,
|
/* 0x0ba0 */ 127,101,219,120, 75,255,250, 81,161, 63, 0, 56,127,137,240, 64,
|
||||||
/* 0x0bb0 */ 47,137, 0, 3, 64,158, 0,156,232,124, 0, 16,233, 61, 0, 0,
|
/* 0x0bb0 */ 64,157, 0,184,129, 60, 0, 0, 47,137, 0, 3, 64,158, 0,156,
|
||||||
/* 0x0bc0 */ 56,128, 0, 0, 56,160, 0, 0,124, 99, 74, 20, 75,255,247,241,
|
/* 0x0bc0 */ 232,124, 0, 16,233, 61, 0, 0, 56,128, 0, 0, 56,160, 0, 0,
|
||||||
/* 0x0bd0 */ 96, 0, 0, 0, 47,131, 0, 0,124,121, 27,120, 64,252, 0, 16,
|
/* 0x0bd0 */ 124, 99, 74, 20, 75,255,247,233, 96, 0, 0, 0, 47,131, 0, 0,
|
||||||
/* 0x0be0 */ 56, 96, 0,127, 75,255,247,185, 96, 0, 0, 0,127,228,251,120,
|
/* 0x0be0 */ 124,121, 27,120, 64,252, 0, 16, 56, 96, 0,127, 75,255,247,177,
|
||||||
/* 0x0bf0 */ 56,160, 4, 0, 75,255,247,193, 96, 0, 0, 0, 47,163, 4, 0,
|
/* 0x0bf0 */ 96, 0, 0, 0,127,228,251,120, 56,160, 4, 0, 75,255,247,185,
|
||||||
/* 0x0c00 */ 64,222,255,224, 57, 32, 0, 0, 56,128, 0, 0,249, 61, 0, 0,
|
/* 0x0c00 */ 96, 0, 0, 0, 47,163, 4, 0, 64,222,255,224, 57, 32, 0, 0,
|
||||||
/* 0x0c10 */ 127, 37,203,120, 56,192, 0, 0, 56,224, 0, 0, 57, 0, 0, 0,
|
/* 0x0c10 */ 56,128, 0, 0,249, 61, 0, 0,127, 37,203,120, 56,192, 0, 0,
|
||||||
/* 0x0c20 */ 127,169,235,120,127, 10,195,120,127,227,251,120, 75,255,250, 33,
|
/* 0x0c20 */ 56,224, 0, 0, 57, 0, 0, 0,127,169,235,120,127, 10,195,120,
|
||||||
/* 0x0c30 */ 232,189, 0, 0, 56,128, 0, 7,124,123, 27,120,127, 67,211,120,
|
/* 0x0c30 */ 127,227,251,120, 75,255,250, 25,232,189, 0, 0, 56,128, 0, 7,
|
||||||
/* 0x0c40 */ 75,255,249,181,127, 35,203,120, 75,255,247,125, 96, 0, 0, 0,
|
/* 0x0c40 */ 124,123, 27,120,127, 67,211,120, 75,255,249,173,127, 35,203,120,
|
||||||
/* 0x0c50 */ 59,222, 0, 1, 59,156, 0, 56,123,222, 0, 32, 75,255,255, 68,
|
/* 0x0c50 */ 75,255,247,117, 96, 0, 0, 0, 59,222, 0, 1, 59,156, 0, 56,
|
||||||
/* 0x0c60 */ 56, 33, 0,240,127, 99,219,120, 72, 0, 0,136, 0, 0, 0, 0,
|
/* 0x0c60 */ 123,222, 0, 32, 75,255,255, 68, 56, 33, 0,240,127, 99,219,120,
|
||||||
/* 0x0c70 */ 0, 0, 0, 1,128, 8, 0, 0,249,193,255,112,249,225,255,120,
|
/* 0x0c70 */ 72, 0, 0,136, 0, 0, 0, 0, 0, 0, 0, 1,128, 8, 0, 0,
|
||||||
/* 0x0c80 */ 250, 1,255,128,250, 33,255,136,250, 65,255,144,250, 97,255,152,
|
/* 0x0c80 */ 249,193,255,112,249,225,255,120,250, 1,255,128,250, 33,255,136,
|
||||||
/* 0x0c90 */ 250,129,255,160,250,161,255,168,250,193,255,176,250,225,255,184,
|
/* 0x0c90 */ 250, 65,255,144,250, 97,255,152,250,129,255,160,250,161,255,168,
|
||||||
/* 0x0ca0 */ 251, 1,255,192,251, 33,255,200,251, 65,255,208,251, 97,255,216,
|
/* 0x0ca0 */ 250,193,255,176,250,225,255,184,251, 1,255,192,251, 33,255,200,
|
||||||
/* 0x0cb0 */ 251,129,255,224,251,161,255,232,251,193,255,240,251,225,255,248,
|
/* 0x0cb0 */ 251, 65,255,208,251, 97,255,216,251,129,255,224,251,161,255,232,
|
||||||
/* 0x0cc0 */ 248, 1, 0, 16, 78,128, 0, 32,233,193,255,112,233,225,255,120,
|
/* 0x0cc0 */ 251,193,255,240,251,225,255,248,248, 1, 0, 16, 78,128, 0, 32,
|
||||||
/* 0x0cd0 */ 234, 1,255,128,234, 33,255,136,234, 65,255,144,234, 97,255,152,
|
/* 0x0cd0 */ 233,193,255,112,233,225,255,120,234, 1,255,128,234, 33,255,136,
|
||||||
/* 0x0ce0 */ 234,129,255,160,234,161,255,168,234,193,255,176,234,225,255,184,
|
/* 0x0ce0 */ 234, 65,255,144,234, 97,255,152,234,129,255,160,234,161,255,168,
|
||||||
/* 0x0cf0 */ 235, 1,255,192,235, 33,255,200,235, 65,255,208,235, 97,255,216,
|
/* 0x0cf0 */ 234,193,255,176,234,225,255,184,235, 1,255,192,235, 33,255,200,
|
||||||
/* 0x0d00 */ 235,129,255,224,232, 1, 0, 16,235,161,255,232,124, 8, 3,166,
|
/* 0x0d00 */ 235, 65,255,208,235, 97,255,216,235,129,255,224,232, 1, 0, 16,
|
||||||
/* 0x0d10 */ 235,193,255,240,235,225,255,248, 78,128, 0, 32, 0, 0, 0, 0,
|
/* 0x0d10 */ 235,161,255,232,124, 8, 3,166,235,193,255,240,235,225,255,248,
|
||||||
/* 0x0d20 */ 0, 0, 0, 0, 0, 16, 3,228, 0, 0, 0, 0, 0, 16,141, 32,
|
/* 0x0d20 */ 78,128, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3,228,
|
||||||
/* 0x0d30 */ 0, 0, 0, 0, 0, 16, 4, 84, 0, 0, 0, 0, 0, 16,141, 32,
|
/* 0x0d30 */ 0, 0, 0, 0, 0, 16,141, 40, 0, 0, 0, 0, 0, 16, 4, 84,
|
||||||
/* 0x0d40 */ 0, 0, 0, 0, 0, 16, 5,244, 0, 0, 0, 0, 0, 16,141, 32,
|
/* 0x0d40 */ 0, 0, 0, 0, 0, 16,141, 40, 0, 0, 0, 0, 0, 16, 5,244,
|
||||||
/* 0x0d50 */ 0, 0, 0, 0, 0, 16, 6, 76, 0, 0, 0, 0, 0, 16,141, 32,
|
/* 0x0d50 */ 0, 0, 0, 0, 0, 16,141, 40, 0, 0, 0, 0, 0, 16, 6, 76,
|
||||||
/* 0x0d60 */ 0, 0, 0, 0, 0, 16, 11, 4, 0, 0, 0, 0, 0, 16,141, 32
|
/* 0x0d60 */ 0, 0, 0, 0, 0, 16,141, 40, 0, 0, 0, 0, 0, 16, 11, 12,
|
||||||
|
/* 0x0d70 */ 0, 0, 0, 0, 0, 16,141, 40
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* powerpc64le-linux.elf-fold.h
|
/* powerpc64le-linux.elf-fold.h
|
||||||
created from powerpc64le-linux.elf-fold.bin, 3427 (0xd63) bytes
|
created from powerpc64le-linux.elf-fold.bin, 3435 (0xd6b) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -31,21 +31,21 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_SIZE 3427
|
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_SIZE 3435
|
||||||
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_ADLER32 0xf645a5d4
|
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_ADLER32 0x51c2a4e7
|
||||||
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_CRC32 0x0dddb645
|
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_CRC32 0x8f3b3508
|
||||||
|
|
||||||
unsigned char stub_powerpc64le_linux_elf_fold[3427] = {
|
unsigned char stub_powerpc64le_linux_elf_fold[3435] = {
|
||||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0010 */ 2, 0, 21, 0, 1, 0, 0, 0, 24, 13, 16, 0, 0, 0, 0, 0,
|
/* 0x0010 */ 2, 0, 21, 0, 1, 0, 0, 0, 32, 13, 16, 0, 0, 0, 0, 0,
|
||||||
/* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0030 */ 1, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0030 */ 1, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
|
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
|
||||||
/* 0x0060 */ 24, 13, 0, 0, 0, 0, 0, 0, 24, 13, 0, 0, 0, 0, 0, 0,
|
/* 0x0060 */ 32, 13, 0, 0, 0, 0, 0, 0, 32, 13, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0070 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
|
/* 0x0070 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
|
||||||
/* 0x0080 */ 24, 13, 0, 0, 0, 0, 0, 0, 24, 13, 16, 0, 0, 0, 0, 0,
|
/* 0x0080 */ 32, 13, 0, 0, 0, 0, 0, 0, 32, 13, 16, 0, 0, 0, 0, 0,
|
||||||
/* 0x0090 */ 24, 13, 16, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0090 */ 32, 13, 16, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x00a0 */ 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
|
/* 0x00a0 */ 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
|
||||||
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,255, 96, 56,
|
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,255, 96, 56,
|
||||||
/* 0x00c0 */ 164, 77, 99,120, 32, 0,128, 78, 0, 0, 0, 96,125, 0, 0, 72,
|
/* 0x00c0 */ 164, 77, 99,120, 32, 0,128, 78, 0, 0, 0, 96,125, 0, 0, 72,
|
||||||
@@ -76,7 +76,7 @@ unsigned char stub_powerpc64le_linux_elf_fold[3427] = {
|
|||||||
/* 0x0250 */ 120,187,228,126,144, 0,161, 56,120,211, 70,127,120,251,231,127,
|
/* 0x0250 */ 120,187,228,126,144, 0,161, 56,120,211, 70,127,120,251,231,127,
|
||||||
/* 0x0260 */ 120,179,200,126, 0, 0, 0, 56,112, 0,225,248,112, 0,225, 56,
|
/* 0x0260 */ 120,179,200,126, 0, 0, 0, 56,112, 0,225,248,112, 0,225, 56,
|
||||||
/* 0x0270 */ 120, 0, 1,248,128, 0, 1,249,128, 0, 1, 57,136, 0, 1,248,
|
/* 0x0270 */ 120, 0, 1,248,128, 0, 1,249,128, 0, 1, 57,136, 0, 1,248,
|
||||||
/* 0x0280 */ 120,243,202,127,125, 8, 0, 72,144, 8, 33, 56,120,171,162,126,
|
/* 0x0280 */ 120,243,202,127,133, 8, 0, 72,144, 8, 33, 56,120,171,162,126,
|
||||||
/* 0x0290 */ 7, 0, 96,112, 36, 0,130, 64, 0, 0, 3,128, 0, 0, 0, 40,
|
/* 0x0290 */ 7, 0, 96,112, 36, 0,130, 64, 0, 0, 3,128, 0, 0, 0, 40,
|
||||||
/* 0x02a0 */ 24, 0,130, 64,136, 1, 1,232, 8, 0, 67,232, 20, 2, 66,124,
|
/* 0x02a0 */ 24, 0,130, 64,136, 1, 1,232, 8, 0, 67,232, 20, 2, 66,124,
|
||||||
/* 0x02b0 */ 0, 0, 99,232, 20, 2, 99,124, 0, 0,117,248,120, 27,127,124,
|
/* 0x02b0 */ 0, 0, 99,232, 20, 2, 99,124, 0, 0,117,248,120, 27,127,124,
|
||||||
@@ -106,7 +106,7 @@ unsigned char stub_powerpc64le_linux_elf_fold[3427] = {
|
|||||||
/* 0x0430 */ 20, 74, 74,125, 8, 0, 67,249, 0, 0, 67,233, 80, 80, 41,125,
|
/* 0x0430 */ 20, 74, 74,125, 8, 0, 67,249, 0, 0, 67,233, 80, 80, 41,125,
|
||||||
/* 0x0440 */ 0, 0, 35,249, 32, 0,128, 78, 0, 0, 0, 0, 0, 0, 0, 1,
|
/* 0x0440 */ 0, 0, 35,249, 32, 0,128, 78, 0, 0, 0, 0, 0, 0, 0, 1,
|
||||||
/* 0x0450 */ 128, 0, 0, 0, 38, 0,128,125,166, 2, 8,124, 8, 0,129,145,
|
/* 0x0450 */ 128, 0, 0, 0, 38, 0,128,125,166, 2, 8,124, 8, 0,129,145,
|
||||||
/* 0x0460 */ 77, 8, 0, 72, 81,255, 33,248,120, 27,126,124,120, 35,159,124,
|
/* 0x0460 */ 85, 8, 0, 72, 81,255, 33,248,120, 27,126,124,120, 35,159,124,
|
||||||
/* 0x0470 */ 120, 43,189,124,120, 51,220,124, 0, 0, 38, 46, 0, 0, 63,233,
|
/* 0x0470 */ 120, 43,189,124,120, 51,220,124, 0, 0, 38, 46, 0, 0, 63,233,
|
||||||
/* 0x0480 */ 0, 0,169, 47, 84, 1,158, 65,120,243,195,127,112, 0,129, 56,
|
/* 0x0480 */ 0, 0,169, 47, 84, 1,158, 65,120,243,195,127,112, 0,129, 56,
|
||||||
/* 0x0490 */ 12, 0,160, 56, 81,255,255, 75,112, 0, 65,129,116, 0, 33,129,
|
/* 0x0490 */ 12, 0,160, 56, 81,255,255, 75,112, 0, 65,129,116, 0, 33,129,
|
||||||
@@ -130,125 +130,125 @@ unsigned char stub_powerpc64le_linux_elf_fold[3427] = {
|
|||||||
/* 0x05b0 */ 120, 75, 37,125, 49,254,255, 75,112, 0, 1,129, 8, 0, 95,233,
|
/* 0x05b0 */ 120, 75, 37,125, 49,254,255, 75,112, 0, 1,129, 8, 0, 95,233,
|
||||||
/* 0x05c0 */ 0, 0, 63,233, 20, 66, 74,125, 80, 72, 40,125, 8, 0, 95,249,
|
/* 0x05c0 */ 0, 0, 63,233, 20, 66, 74,125, 80, 72, 40,125, 8, 0, 95,249,
|
||||||
/* 0x05d0 */ 0, 0, 63,249,168,254,255, 75,176, 0, 33, 56, 8, 0,129,129,
|
/* 0x05d0 */ 0, 0, 63,249,168,254,255, 75,176, 0, 33, 56, 8, 0,129,129,
|
||||||
/* 0x05e0 */ 32,129,144,125, 24, 7, 0, 72, 0, 0, 0, 0, 0, 0, 0, 3,
|
/* 0x05e0 */ 32,129,144,125, 32, 7, 0, 72, 0, 0, 0, 0, 0, 0, 0, 3,
|
||||||
/* 0x05f0 */ 128, 4, 0, 0, 0, 0, 35, 44, 32, 0,130, 77,225, 7,105,120,
|
/* 0x05f0 */ 128, 4, 0, 0, 0, 0, 35, 44, 32, 0,130, 77,225, 7,105,120,
|
||||||
/* 0x0600 */ 32, 0,130, 76, 0, 0, 36, 47, 0, 0, 67,233, 64, 32,170,127,
|
/* 0x0600 */ 32, 0,130, 76, 0, 0, 36, 47, 0, 0, 67,233, 64, 32,170,127,
|
||||||
/* 0x0610 */ 16, 0,158, 64, 0, 0,131,248, 8, 0,163,248, 32, 0,128, 78,
|
/* 0x0610 */ 16, 0,158, 64, 0, 0,131,248, 8, 0,163,248, 32, 0,128, 78,
|
||||||
/* 0x0620 */ 1, 0,170, 43, 12, 0,158, 64, 16, 0,154, 65,232,255,255, 75,
|
/* 0x0620 */ 1, 0,170, 43, 12, 0,158, 64, 16, 0,154, 65,232,255,255, 75,
|
||||||
/* 0x0630 */ 0, 0,170, 47, 32, 0,158, 77, 16, 0, 99, 56,204,255,255, 75,
|
/* 0x0630 */ 0, 0,170, 47, 32, 0,158, 77, 16, 0, 99, 56,204,255,255, 75,
|
||||||
/* 0x0640 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0,128,125,
|
/* 0x0640 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0,128,125,
|
||||||
/* 0x0650 */ 166, 2, 8,124, 8, 0,129,145, 29, 6, 0, 72,209,254, 33,248,
|
/* 0x0650 */ 166, 2, 8,124, 8, 0,129,145, 37, 6, 0, 72,120, 75, 53,125,
|
||||||
/* 0x0660 */ 120, 75, 53,125, 32, 0, 35,233, 0, 0, 36, 46,120, 67, 15,125,
|
/* 0x0660 */ 32, 0, 35,233, 0, 0, 36, 46,209,254, 33,248,120, 67, 15,125,
|
||||||
/* 0x0670 */ 16, 0, 3,161,120, 83, 95,125,120, 27,123,124,112, 1,161,248,
|
/* 0x0670 */ 16, 0, 3,161,120, 83, 94,125,120, 27,124,124,120, 43,177,124,
|
||||||
/* 0x0680 */ 128, 0,129,248,120, 51,216,124,120, 59,240,124, 20, 74, 67,126,
|
/* 0x0680 */ 120, 51,216,124, 0, 0, 85,233,120, 59,240,124, 20, 74, 67,126,
|
||||||
/* 0x0690 */ 0, 0, 85,233, 88, 0,146, 65, 32, 0,234,232, 62, 4, 8, 85,
|
/* 0x0690 */ 128, 0,129,248, 88, 0,146, 65, 32, 0,234,232, 62, 4, 8, 85,
|
||||||
/* 0x06a0 */ 2, 0,136, 47, 20, 58,234,124, 72, 0,103,232, 80, 80, 99,124,
|
/* 0x06a0 */ 2, 0,136, 47, 20, 58,234,124, 72, 0,103,232, 80, 80, 99,124,
|
||||||
/* 0x06b0 */ 8, 0,158, 64, 16, 0,103,232, 40, 0,135,232, 0, 0,160, 56,
|
/* 0x06b0 */ 8, 0,158, 64, 16, 0,103,232, 40, 0,135,232, 0, 0,160, 56,
|
||||||
/* 0x06c0 */ 50, 0,192, 56,255,255,224, 56, 0, 0, 0, 57,185,252,255, 75,
|
/* 0x06c0 */ 50, 0,192, 56,255,255,224, 56, 0, 0, 0, 57,185,252,255, 75,
|
||||||
/* 0x06d0 */ 0, 0, 0, 96, 16, 0, 91,161, 0, 0,192, 59, 2, 0,138, 47,
|
/* 0x06d0 */ 0, 0, 0, 96, 16, 0, 92,161, 0, 0,224, 59, 2, 0,138, 47,
|
||||||
/* 0x06e0 */ 220, 0,158, 65,120, 27,126,124,212, 0, 0, 72, 62, 4, 8, 85,
|
/* 0x06e0 */ 220, 0,158, 65,120, 27,127,124,212, 0, 0, 72, 62, 4, 8, 85,
|
||||||
/* 0x06f0 */ 16, 0,224, 56, 3, 0,136, 47, 8, 0,158, 64, 0, 0,224, 56,
|
/* 0x06f0 */ 16, 0,224, 56, 3, 0,136, 47, 8, 0,158, 64, 0, 0,224, 56,
|
||||||
/* 0x0700 */ 56, 0,187,160, 34, 0,231, 56,120, 83, 67,125, 32, 0,230,120,
|
/* 0x0700 */ 56, 0,188,160, 34, 0,231, 56,120, 83, 67,125, 32, 0,230,120,
|
||||||
/* 0x0710 */ 120,147, 68,126, 1, 0,165, 56, 0, 0, 0, 57,166, 3,169,124,
|
/* 0x0710 */ 120,147, 68,126, 1, 0,165, 56, 0, 0, 0, 57,166, 3,169,124,
|
||||||
/* 0x0720 */ 255,255,192, 59, 60, 0, 64, 66, 0, 0,164,128, 1, 0,133, 47,
|
/* 0x0720 */ 255,255,224, 59, 60, 0, 64, 66, 0, 0,164,128, 1, 0,133, 47,
|
||||||
/* 0x0730 */ 40, 0,158, 64, 16, 0,100,233, 64, 88,190,127, 8, 0,157, 64,
|
/* 0x0730 */ 40, 0,158, 64, 16, 0,100,233, 64, 88,191,127, 8, 0,157, 64,
|
||||||
/* 0x0740 */ 120, 91,126,125, 40, 0,164,232, 20, 42,171,124, 64, 40,168,127,
|
/* 0x0740 */ 120, 91,127,125, 40, 0,164,232, 20, 42,171,124, 64, 40,168,127,
|
||||||
/* 0x0750 */ 8, 0,156, 64,120, 43,168,124, 56, 0,132, 56,200,255,255, 75,
|
/* 0x0750 */ 8, 0,156, 64,120, 43,168,124, 56, 0,132, 56,200,255,255, 75,
|
||||||
/* 0x0760 */ 248,248,228,127, 56,248,222,127, 20, 66, 4,125,227,231,233,120,
|
/* 0x0760 */ 248,240,196,127, 56,240,255,127, 20, 66, 4,125,227,231,233,120,
|
||||||
/* 0x0770 */ 80, 64, 30,125, 56,248, 4,125, 28, 0,130, 64, 0, 0,190, 47,
|
/* 0x0770 */ 80, 64, 31,125, 56,240, 4,125, 28, 0,130, 64, 0, 0,191, 47,
|
||||||
/* 0x0780 */ 28, 0,158, 64, 0, 0,170, 47, 24, 0,158, 65, 50, 0,192, 56,
|
/* 0x0780 */ 28, 0,158, 64, 0, 0,170, 47, 24, 0,158, 65, 50, 0,192, 56,
|
||||||
/* 0x0790 */ 16, 0, 0, 72,120,243,195,127, 8, 0, 0, 72, 0, 0, 96, 56,
|
/* 0x0790 */ 16, 0, 0, 72,120,251,227,127, 8, 0, 0, 72, 0, 0, 96, 56,
|
||||||
/* 0x07a0 */ 0, 0,160, 56,180, 7,198,124,255,255,224, 56, 0, 0, 0, 57,
|
/* 0x07a0 */ 0, 0,160, 56,180, 7,198,124,255,255,224, 56, 0, 0, 0, 57,
|
||||||
/* 0x07b0 */ 213,251,255, 75, 0, 0, 0, 96, 80, 24,222,127,120, 0, 62, 57,
|
/* 0x07b0 */ 213,251,255, 75, 0, 0, 0, 96, 80, 24,255,127,120, 0, 63, 57,
|
||||||
/* 0x07c0 */ 248,248,243,127,144, 0, 33,249,248,248,255,127,164, 7, 9,123,
|
/* 0x07c0 */ 248,240,211,127,144, 0, 33,249,248,240,222,127,164, 7, 9,123,
|
||||||
/* 0x07d0 */ 136, 0,225,251,152, 0, 33,249, 1, 0,224, 62,128, 78,192, 61,
|
/* 0x07d0 */ 136, 0,193,251,152, 0, 33,249, 1, 0,224, 62,128, 78,192, 61,
|
||||||
/* 0x07e0 */ 228,131,247,122, 0, 0, 32, 59, 1, 0,247, 98, 32, 0,206, 97,
|
/* 0x07e0 */ 228,131,247,122, 0, 0, 32, 59, 1, 0,247, 98, 32, 0,206, 97,
|
||||||
/* 0x07f0 */ 56, 0, 91,161, 0,200,138,127,200, 2,157, 64, 0, 0, 82,129,
|
/* 0x07f0 */ 56, 0, 92,161, 0,200,138,127,208, 2,157, 64, 0, 0, 82,129,
|
||||||
/* 0x0800 */ 36, 0,146, 65, 6, 0,138, 47, 28, 0,158, 64, 16, 0,178,232,
|
/* 0x0800 */ 36, 0,146, 65, 6, 0,138, 47, 28, 0,158, 64, 16, 0,178,232,
|
||||||
/* 0x0810 */ 120,195, 3,127, 3, 0,128, 56, 20, 42,190,124,217,253,255, 75,
|
/* 0x0810 */ 120,195, 3,127, 3, 0,128, 56, 20, 42,191,124,217,253,255, 75,
|
||||||
/* 0x0820 */ 144, 2, 0, 72, 1, 0,138, 47,136, 2,158, 64, 76, 0,146, 65,
|
/* 0x0820 */ 152, 2, 0, 72, 1, 0,138, 47,144, 2,158, 64, 4, 0, 82,131,
|
||||||
/* 0x0830 */ 8, 0, 82,233, 0, 0,170, 47, 64, 0,158, 64, 32, 0, 91,233,
|
/* 0x0830 */ 81,115, 32, 61, 64, 98, 41, 97,250, 22, 90, 87, 48,212, 58,125,
|
||||||
/* 0x0840 */ 16, 0,178,232,120,195, 3,127, 3, 0,128, 56, 20, 82, 94,125,
|
/* 0x0840 */ 126, 7, 84, 87, 76, 0,146, 65, 8, 0, 82,233, 0, 0,170, 47,
|
||||||
/* 0x0850 */ 20, 42,170,124,161,253,255, 75, 56, 0,187,160,120,195, 3,127,
|
/* 0x0850 */ 64, 0,158, 64, 32, 0, 92,233, 16, 0,178,232,120,195, 3,127,
|
||||||
/* 0x0860 */ 5, 0,128, 56,145,253,255, 75, 54, 0,187,160,120,195, 3,127,
|
/* 0x0860 */ 3, 0,128, 56, 20, 82, 95,125, 20, 42,170,124,137,253,255, 75,
|
||||||
/* 0x0870 */ 4, 0,128, 56,129,253,255, 75, 16, 0,178,235, 4, 0, 82,131,
|
/* 0x0870 */ 56, 0,188,160,120,195, 3,127, 5, 0,128, 56,121,253,255, 75,
|
||||||
/* 0x0880 */ 81,115, 32, 61, 32, 0,146,235, 40, 0,210,234, 64, 98, 41, 97,
|
/* 0x0880 */ 54, 0,188,160,120,195, 3,127, 4, 0,128, 56,105,253,255, 75,
|
||||||
/* 0x0890 */ 20,234,190,127,250, 22, 90, 87,112, 0,129,251, 56,152,168,127,
|
/* 0x0890 */ 16, 0,210,235, 32, 0,114,235, 40, 0,210,234,136, 0, 33,233,
|
||||||
/* 0x08a0 */ 48,212, 58,125, 32, 0, 17,121, 20,226,232,127,120, 0,161,251,
|
/* 0x08a0 */ 20,242,223,127,112, 0, 97,251, 56,152,200,127, 20,218,190,127,
|
||||||
/* 0x08b0 */ 136, 0, 33,233, 20,226,145,127, 20,178,221,126, 80,232,177,127,
|
/* 0x08b0 */ 120, 0,193,251, 32, 0, 8,121, 20,178,222,126, 20,218,104,127,
|
||||||
/* 0x08c0 */ 208, 0,255,127, 20,226,125,124, 56,152,255,127,208, 0, 99,124,
|
/* 0x08c0 */ 80,240,200,127, 20,218, 94,125,208, 0, 74,125, 56, 72, 74,125,
|
||||||
/* 0x08d0 */ 126, 7, 84, 87, 56, 72, 99,124, 32, 0,255,123, 20,226,131,127,
|
/* 0x08d0 */ 20,218,106,127, 12, 0,146, 64, 0, 0,160, 56, 8, 0, 0, 72,
|
||||||
/* 0x08e0 */ 12, 0,146, 64, 0, 0,160, 56, 8, 0, 0, 72, 2, 0,160, 56,
|
/* 0x08e0 */ 2, 0,160, 56,120,163,165,124, 16, 0,146, 64,255,255, 64, 57,
|
||||||
/* 0x08f0 */ 120,163,165,124,180, 7,165,124, 16, 0,146, 64,112, 1,225,232,
|
/* 0x08f0 */ 32, 0, 74,121, 16, 0, 0, 72,255,255, 64, 61,251,255, 74, 97,
|
||||||
/* 0x0900 */ 18, 0,192, 56, 12, 0, 0, 72, 50, 0,192, 56,255,255,224, 56,
|
/* 0x0900 */ 32, 0, 74,121, 56, 40, 69,125, 16, 0,146, 65, 50, 0,192, 56,
|
||||||
/* 0x0910 */ 8, 0, 18,233,120,235,163,127,120,227,132,127, 80, 64, 17,125,
|
/* 0x0910 */ 255,255,224, 56, 12, 0, 0, 72,120,139, 39,126, 18, 0,192, 56,
|
||||||
/* 0x0920 */ 101,250,255, 75, 0, 0, 0, 96, 0, 24,189,127, 16, 0,254, 65,
|
/* 0x0920 */ 8, 0, 82,233,120,243,195,127,120,219,100,127, 80, 80, 8,125,
|
||||||
/* 0x0930 */ 127, 0, 96, 56,105,250,255, 75, 0, 0, 0, 96, 24, 0,146, 65,
|
/* 0x0930 */ 85,250,255, 75, 0, 0, 0, 96, 0, 24,190,127, 16, 0,254, 65,
|
||||||
/* 0x0940 */ 128, 0, 97,232,112, 0,129, 56,120,131, 5,126,120,123,230,125,
|
/* 0x0940 */ 127, 0, 96, 56, 89,250,255, 75, 0, 0, 0, 96, 24, 0,146, 65,
|
||||||
/* 0x0950 */ 5,251,255, 75,227,255, 73,123, 12, 0,130, 64, 52, 0,146, 64,
|
/* 0x0950 */ 128, 0, 97,232,112, 0,129, 56,120,131, 5,126,120,123,230,125,
|
||||||
/* 0x0960 */ 24, 1, 0, 72, 0, 0,191, 47, 32, 0, 82,233,240,255,158, 65,
|
/* 0x0960 */ 245,250,255, 75,227,255, 73,123, 52, 0,130, 65,208, 0, 93,125,
|
||||||
/* 0x0970 */ 20, 82, 81,125,255,255, 74, 57,166, 3,233,127, 20, 82, 93,125,
|
/* 0x0970 */ 255,255, 29, 57, 56,152, 74,125, 33, 0, 74,121, 12, 0,130, 64,
|
||||||
/* 0x0980 */ 0, 0, 32, 57, 1, 0, 42,157,248,255, 0, 66,208,255,255, 75,
|
/* 0x0980 */ 20, 82,189,127, 24, 0, 0, 72,166, 3, 73,125, 0, 0,224, 56,
|
||||||
/* 0x0990 */ 0, 0, 82,233,192, 7, 74,121, 0,184,170,127,192, 0,158, 64,
|
/* 0x0990 */ 1, 0,232,156,252,255, 0, 66,232,255,255, 75,236, 0,146, 65,
|
||||||
/* 0x09a0 */ 40, 0, 82,235, 32, 0, 82,233, 16, 0, 18,233, 0, 80,186,127,
|
/* 0x09a0 */ 0, 0, 82,233,192, 7, 74,121, 0,184,170,127,192, 0,158, 64,
|
||||||
/* 0x09b0 */ 36, 0,158, 64, 20, 66, 90,127, 20,242, 90,127,208, 0, 90,125,
|
/* 0x09b0 */ 40, 0, 82,235, 32, 0, 82,233, 16, 0, 18,233, 0, 80,186,127,
|
||||||
/* 0x09c0 */ 56,152, 74,125, 15, 0,138, 43, 12, 0,157, 64, 0, 0, 64, 57,
|
/* 0x09c0 */ 36, 0,158, 64, 20, 66, 90,127, 20,250, 90,127,208, 0, 90,125,
|
||||||
/* 0x09d0 */ 60, 0, 0, 72, 8, 0, 82,233, 0, 0,170, 47, 8, 1,158, 65,
|
/* 0x09d0 */ 56,152, 74,125, 15, 0,138, 43, 12, 0,157, 64, 0, 0, 64, 57,
|
||||||
/* 0x09e0 */ 0, 0, 96, 56, 0, 16,128, 56, 3, 0,160, 56, 34, 0,192, 56,
|
/* 0x09e0 */ 60, 0, 0, 72, 8, 0, 82,233, 0, 0,170, 47, 0, 1,158, 65,
|
||||||
/* 0x09f0 */ 255,255,224, 56, 0, 0, 0, 57,141,249,255, 75, 0, 0, 0, 96,
|
/* 0x09f0 */ 0, 0, 96, 56, 0, 16,128, 56, 3, 0,160, 56, 34, 0,192, 56,
|
||||||
/* 0x0a00 */ 121, 27,122,124, 88, 0,130, 65, 1, 0, 64, 57, 0, 68, 32, 61,
|
/* 0x0a00 */ 255,255,224, 56, 0, 0, 0, 57,125,249,255, 75, 0, 0, 0, 96,
|
||||||
/* 0x0a10 */ 0, 0,170, 47, 12, 0,218,145, 2, 0, 41, 97, 0, 0, 58,145,
|
/* 0x0a10 */ 121, 27,122,124, 88, 0,130, 65, 1, 0, 64, 57, 0, 68, 32, 61,
|
||||||
/* 0x0a20 */ 236,127, 32, 61,120,251, 41, 97, 4, 0, 58,145,128, 56, 32, 61,
|
/* 0x0a20 */ 128, 56, 0, 61, 12, 0,218,145, 2, 0, 41, 97, 0, 0,170, 47,
|
||||||
/* 0x0a30 */ 8, 0, 58,145, 24, 0,158, 65,120,211, 67,127, 12, 0,128, 56,
|
/* 0x0a30 */ 8, 0, 26,145, 0, 0, 58,145,236,127, 32, 61,120,251, 41, 97,
|
||||||
/* 0x0a40 */ 5, 0,160, 56,137,249,255, 75, 0, 0, 0, 96,152, 0, 97,232,
|
/* 0x0a40 */ 4, 0, 58,145, 24, 0,158, 65,120,211, 67,127, 12, 0,128, 56,
|
||||||
/* 0x0a50 */ 0, 0,128, 56,120,211, 69,127,157,251,255, 75,120,235,163,127,
|
/* 0x0a50 */ 5, 0,160, 56,121,249,255, 75, 0, 0, 0, 96,152, 0, 97,232,
|
||||||
/* 0x0a60 */ 120,227,132,127,180, 7,133,126,101,249,255, 75, 0, 0, 0, 96,
|
/* 0x0a60 */ 0, 0,128, 56,120,211, 69,127,141,251,255, 75,120,243,195,127,
|
||||||
/* 0x0a70 */ 0, 0,163, 47,188,254,222, 64, 20,250,252,127, 20,250,189,127,
|
/* 0x0a70 */ 120,219,100,127,180, 7,133,126, 85,249,255, 75, 0, 0, 0, 96,
|
||||||
/* 0x0a80 */ 64,176,189,127, 44, 0,156, 64,120,235,163,127, 80,176,157,124,
|
/* 0x0a80 */ 0, 0,163, 47,188,254,222, 64, 64,176,189,127, 44, 0,156, 64,
|
||||||
/* 0x0a90 */ 180, 7,133,126, 50, 0,192, 56,255,255,224, 56, 0, 0, 0, 57,
|
/* 0x0a90 */ 120,235,163,127, 80,176,157,124,180, 7,133,126, 50, 0,192, 56,
|
||||||
/* 0x0aa0 */ 229,248,255, 75, 0, 0, 0, 96, 0, 24,189,127,132,254,222, 64,
|
/* 0x0aa0 */ 255,255,224, 56, 0, 0, 0, 57,221,248,255, 75, 0, 0, 0, 96,
|
||||||
/* 0x0ab0 */ 1, 0, 57, 59, 56, 0, 82, 58,180, 7, 57,127, 52,253,255, 75,
|
/* 0x0ab0 */ 0, 24,189,127,140,254,222, 64, 1, 0, 57, 59, 56, 0, 82, 58,
|
||||||
/* 0x0ac0 */ 0, 0,181, 47, 8, 0,158, 65, 0, 0,213,251, 48, 1, 33, 56,
|
/* 0x0ac0 */ 180, 7, 57,127, 44,253,255, 75, 0, 0,181, 47, 8, 0,158, 65,
|
||||||
/* 0x0ad0 */ 24, 0,123,232, 20, 26,126,124, 8, 0,129,129, 32,129,144,125,
|
/* 0x0ad0 */ 0, 0,245,251, 48, 1, 33, 56, 24, 0,124,232, 20, 26,127,124,
|
||||||
/* 0x0ae0 */ 228, 1, 0, 72,144, 0, 33,233, 20, 66, 73,127, 24, 0, 90, 59,
|
/* 0x0ae0 */ 8, 0,129,129, 32,129,144,125,228, 1, 0, 72,144, 0, 33,233,
|
||||||
/* 0x0af0 */ 28,255,255, 75, 0, 0, 0, 0, 0, 0, 0, 3,128, 18, 0, 0,
|
/* 0x0af0 */ 20, 66, 73,127, 24, 0, 90, 59, 36,255,255, 75, 0, 0, 0, 0,
|
||||||
/* 0x0b00 */ 166, 2, 8,124,153, 1, 0, 72, 17,255, 33,248,120, 75, 61,125,
|
/* 0x0b00 */ 0, 0, 0, 3,128, 18, 0, 0,166, 2, 8,124,153, 1, 0, 72,
|
||||||
/* 0x0b10 */ 0, 0, 35,129,120, 43,191,124,120, 51,218,124, 0, 0,192, 56,
|
/* 0x0b10 */ 17,255, 33,248,120, 75, 61,125, 0, 0, 35,129,120, 43,191,124,
|
||||||
/* 0x0b20 */ 120, 83, 88,125,144, 0, 33,249,152, 0,161,248,120, 59,229,124,
|
/* 0x0b20 */ 120, 51,218,124, 0, 0,192, 56,120, 83, 88,125,144, 0, 33,249,
|
||||||
/* 0x0b30 */ 64, 0,159, 59, 4, 0, 35,129,120, 0, 97,248, 0, 0,192, 59,
|
/* 0x0b30 */ 152, 0,161,248,120, 59,229,124, 64, 0,159, 59, 4, 0, 35,129,
|
||||||
/* 0x0b40 */ 136, 0, 97,248,128, 0,129,248, 12, 0, 41, 57,160, 0,225,248,
|
/* 0x0b40 */ 120, 0, 97,248, 0, 0,192, 59,136, 0, 97,248,128, 0,129,248,
|
||||||
/* 0x0b50 */ 168, 0, 1,249,112, 0, 33,249,112, 0, 97, 56,144, 0,129, 56,
|
/* 0x0b50 */ 12, 0, 41, 57,160, 0,225,248,168, 0, 1,249,112, 0, 33,249,
|
||||||
/* 0x0b60 */ 245,248,255, 75,160, 0,225,232,168, 0, 1,233,128, 0,129, 56,
|
/* 0x0b60 */ 112, 0, 97, 56,144, 0,129, 56,237,248,255, 75,160, 0,225,232,
|
||||||
/* 0x0b70 */ 0, 0,160, 56,120,211, 70,127,120,235,169,127,120,195, 10,127,
|
/* 0x0b70 */ 168, 0, 1,233,128, 0,129, 56, 0, 0,160, 56,120,211, 70,127,
|
||||||
/* 0x0b80 */ 120,251,227,127,201,250,255, 75, 9, 0,128, 56,120, 27,123,124,
|
/* 0x0b80 */ 120,235,169,127,120,195, 10,127,120,251,227,127,193,250,255, 75,
|
||||||
/* 0x0b90 */ 120,211, 67,127,120,219,101,127, 93,250,255, 75, 56, 0, 63,161,
|
/* 0x0b90 */ 9, 0,128, 56,120, 27,123,124,120,211, 67,127,120,219,101,127,
|
||||||
/* 0x0ba0 */ 64,240,137,127,184, 0,157, 64, 0, 0, 60,129, 3, 0,137, 47,
|
/* 0x0ba0 */ 85,250,255, 75, 56, 0, 63,161, 64,240,137,127,184, 0,157, 64,
|
||||||
/* 0x0bb0 */ 156, 0,158, 64, 16, 0,124,232, 0, 0, 61,233, 0, 0,128, 56,
|
/* 0x0bb0 */ 0, 0, 60,129, 3, 0,137, 47,156, 0,158, 64, 16, 0,124,232,
|
||||||
/* 0x0bc0 */ 0, 0,160, 56, 20, 74, 99,124,245,247,255, 75, 0, 0, 0, 96,
|
/* 0x0bc0 */ 0, 0, 61,233, 0, 0,128, 56, 0, 0,160, 56, 20, 74, 99,124,
|
||||||
/* 0x0bd0 */ 0, 0,131, 47,120, 27,121,124, 16, 0,252, 64,127, 0, 96, 56,
|
/* 0x0bd0 */ 237,247,255, 75, 0, 0, 0, 96, 0, 0,131, 47,120, 27,121,124,
|
||||||
/* 0x0be0 */ 189,247,255, 75, 0, 0, 0, 96,120,251,228,127, 0, 4,160, 56,
|
/* 0x0be0 */ 16, 0,252, 64,127, 0, 96, 56,181,247,255, 75, 0, 0, 0, 96,
|
||||||
/* 0x0bf0 */ 197,247,255, 75, 0, 0, 0, 96, 0, 4,163, 47,224,255,222, 64,
|
/* 0x0bf0 */ 120,251,228,127, 0, 4,160, 56,189,247,255, 75, 0, 0, 0, 96,
|
||||||
/* 0x0c00 */ 0, 0, 32, 57, 0, 0,128, 56, 0, 0, 61,249,120,203, 37,127,
|
/* 0x0c00 */ 0, 4,163, 47,224,255,222, 64, 0, 0, 32, 57, 0, 0,128, 56,
|
||||||
/* 0x0c10 */ 0, 0,192, 56, 0, 0,224, 56, 0, 0, 0, 57,120,235,169,127,
|
/* 0x0c10 */ 0, 0, 61,249,120,203, 37,127, 0, 0,192, 56, 0, 0,224, 56,
|
||||||
/* 0x0c20 */ 120,195, 10,127,120,251,227,127, 37,250,255, 75, 0, 0,189,232,
|
/* 0x0c20 */ 0, 0, 0, 57,120,235,169,127,120,195, 10,127,120,251,227,127,
|
||||||
/* 0x0c30 */ 7, 0,128, 56,120, 27,123,124,120,211, 67,127,185,249,255, 75,
|
/* 0x0c30 */ 29,250,255, 75, 0, 0,189,232, 7, 0,128, 56,120, 27,123,124,
|
||||||
/* 0x0c40 */ 120,203, 35,127,129,247,255, 75, 0, 0, 0, 96, 1, 0,222, 59,
|
/* 0x0c40 */ 120,211, 67,127,177,249,255, 75,120,203, 35,127,121,247,255, 75,
|
||||||
/* 0x0c50 */ 56, 0,156, 59, 32, 0,222,123, 68,255,255, 75,240, 0, 33, 56,
|
/* 0x0c50 */ 0, 0, 0, 96, 1, 0,222, 59, 56, 0,156, 59, 32, 0,222,123,
|
||||||
/* 0x0c60 */ 120,219, 99,127,136, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1,
|
/* 0x0c60 */ 68,255,255, 75,240, 0, 33, 56,120,219, 99,127,136, 0, 0, 72,
|
||||||
/* 0x0c70 */ 128, 8, 0, 0,112,255,193,249,120,255,225,249,128,255, 1,250,
|
/* 0x0c70 */ 0, 0, 0, 0, 0, 0, 0, 1,128, 8, 0, 0,112,255,193,249,
|
||||||
/* 0x0c80 */ 136,255, 33,250,144,255, 65,250,152,255, 97,250,160,255,129,250,
|
/* 0x0c80 */ 120,255,225,249,128,255, 1,250,136,255, 33,250,144,255, 65,250,
|
||||||
/* 0x0c90 */ 168,255,161,250,176,255,193,250,184,255,225,250,192,255, 1,251,
|
/* 0x0c90 */ 152,255, 97,250,160,255,129,250,168,255,161,250,176,255,193,250,
|
||||||
/* 0x0ca0 */ 200,255, 33,251,208,255, 65,251,216,255, 97,251,224,255,129,251,
|
/* 0x0ca0 */ 184,255,225,250,192,255, 1,251,200,255, 33,251,208,255, 65,251,
|
||||||
/* 0x0cb0 */ 232,255,161,251,240,255,193,251,248,255,225,251, 16, 0, 1,248,
|
/* 0x0cb0 */ 216,255, 97,251,224,255,129,251,232,255,161,251,240,255,193,251,
|
||||||
/* 0x0cc0 */ 32, 0,128, 78,112,255,193,233,120,255,225,233,128,255, 1,234,
|
/* 0x0cc0 */ 248,255,225,251, 16, 0, 1,248, 32, 0,128, 78,112,255,193,233,
|
||||||
/* 0x0cd0 */ 136,255, 33,234,144,255, 65,234,152,255, 97,234,160,255,129,234,
|
/* 0x0cd0 */ 120,255,225,233,128,255, 1,234,136,255, 33,234,144,255, 65,234,
|
||||||
/* 0x0ce0 */ 168,255,161,234,176,255,193,234,184,255,225,234,192,255, 1,235,
|
/* 0x0ce0 */ 152,255, 97,234,160,255,129,234,168,255,161,234,176,255,193,234,
|
||||||
/* 0x0cf0 */ 200,255, 33,235,208,255, 65,235,216,255, 97,235,224,255,129,235,
|
/* 0x0cf0 */ 184,255,225,234,192,255, 1,235,200,255, 33,235,208,255, 65,235,
|
||||||
/* 0x0d00 */ 16, 0, 1,232,232,255,161,235,166, 3, 8,124,240,255,193,235,
|
/* 0x0d00 */ 216,255, 97,235,224,255,129,235, 16, 0, 1,232,232,255,161,235,
|
||||||
/* 0x0d10 */ 248,255,225,235, 32, 0,128, 78,228, 3, 16, 0, 0, 0, 0, 0,
|
/* 0x0d10 */ 166, 3, 8,124,240,255,193,235,248,255,225,235, 32, 0,128, 78,
|
||||||
/* 0x0d20 */ 24,141, 16, 0, 0, 0, 0, 0, 84, 4, 16, 0, 0, 0, 0, 0,
|
/* 0x0d20 */ 228, 3, 16, 0, 0, 0, 0, 0, 32,141, 16, 0, 0, 0, 0, 0,
|
||||||
/* 0x0d30 */ 24,141, 16, 0, 0, 0, 0, 0,244, 5, 16, 0, 0, 0, 0, 0,
|
/* 0x0d30 */ 84, 4, 16, 0, 0, 0, 0, 0, 32,141, 16, 0, 0, 0, 0, 0,
|
||||||
/* 0x0d40 */ 24,141, 16, 0, 0, 0, 0, 0, 76, 6, 16, 0, 0, 0, 0, 0,
|
/* 0x0d40 */ 244, 5, 16, 0, 0, 0, 0, 0, 32,141, 16, 0, 0, 0, 0, 0,
|
||||||
/* 0x0d50 */ 24,141, 16, 0, 0, 0, 0, 0, 0, 11, 16, 0, 0, 0, 0, 0,
|
/* 0x0d50 */ 76, 6, 16, 0, 0, 0, 0, 0, 32,141, 16, 0, 0, 0, 0, 0,
|
||||||
/* 0x0d60 */ 24,141, 16
|
/* 0x0d60 */ 8, 11, 16, 0, 0, 0, 0, 0, 32,141, 16
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ make_hatch_x86_64(
|
|||||||
{
|
{
|
||||||
unsigned xprot = 0;
|
unsigned xprot = 0;
|
||||||
unsigned *hatch = 0;
|
unsigned *hatch = 0;
|
||||||
DPRINTF("make_hatch %%p %%x %%x\\n",phdr,reloc,frag_mask);
|
DPRINTF("make_hatch %%p %%x %%x %%x\\n",phdr,reloc,frag_mask, phdr->p_flags);
|
||||||
if (phdr->p_type==PT_LOAD && phdr->p_flags & PF_X) {
|
if (phdr->p_type==PT_LOAD && phdr->p_flags & PF_X) {
|
||||||
if (
|
if (
|
||||||
// Try page fragmentation just beyond .text .
|
// Try page fragmentation just beyond .text .
|
||||||
@@ -255,6 +255,7 @@ make_hatch_x86_64(
|
|||||||
hatch = 0;
|
hatch = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DPRINTF("hatch=%%p\n", hatch);
|
||||||
return hatch;
|
return hatch;
|
||||||
}
|
}
|
||||||
#elif defined(__powerpc64__) //}{
|
#elif defined(__powerpc64__) //}{
|
||||||
@@ -313,7 +314,7 @@ make_hatch_arm64(
|
|||||||
{
|
{
|
||||||
unsigned xprot = 0;
|
unsigned xprot = 0;
|
||||||
unsigned *hatch = 0;
|
unsigned *hatch = 0;
|
||||||
//DPRINTF((STR_make_hatch(),phdr,reloc));
|
DPRINTF("make_hatch %%p %%x %%x\\n",phdr,reloc,frag_mask);
|
||||||
if (phdr->p_type==PT_LOAD && phdr->p_flags & PF_X) {
|
if (phdr->p_type==PT_LOAD && phdr->p_flags & PF_X) {
|
||||||
// The format of the 'if' is
|
// The format of the 'if' is
|
||||||
// if ( ( (hatch = loc1), test_loc1 )
|
// if ( ( (hatch = loc1), test_loc1 )
|
||||||
@@ -346,6 +347,7 @@ make_hatch_arm64(
|
|||||||
hatch = 0;
|
hatch = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DPRINTF("hatch=%%p\n", hatch);
|
||||||
return hatch;
|
return hatch;
|
||||||
}
|
}
|
||||||
#endif //}
|
#endif //}
|
||||||
@@ -464,7 +466,8 @@ do_xmap(
|
|||||||
if (xi) { // compressed main program:
|
if (xi) { // compressed main program:
|
||||||
// C_BASE space reservation, C_TEXT compressed data and stub
|
// C_BASE space reservation, C_TEXT compressed data and stub
|
||||||
Elf64_Addr ehdr0 = *p_reloc; // the 'hi' copy!
|
Elf64_Addr ehdr0 = *p_reloc; // the 'hi' copy!
|
||||||
Elf64_Phdr *phdr0 = (Elf64_Phdr *)(((Elf64_Ehdr *)ehdr0)->e_phoff + ehdr0);
|
Elf64_Phdr const *phdr0 = (Elf64_Phdr const *)(
|
||||||
|
((Elf64_Ehdr *)ehdr0)->e_phoff + ehdr0);
|
||||||
// Clear the 'lo' space reservation for use by PT_LOADs
|
// Clear the 'lo' space reservation for use by PT_LOADs
|
||||||
ehdr0 -= phdr0[1].p_vaddr; // the 'lo' copy
|
ehdr0 -= phdr0[1].p_vaddr; // the 'lo' copy
|
||||||
if (ET_EXEC==ehdr->e_type) {
|
if (ET_EXEC==ehdr->e_type) {
|
||||||
@@ -493,8 +496,9 @@ do_xmap(
|
|||||||
auxv_up(av, AT_PHDR, phdr->p_vaddr + reloc);
|
auxv_up(av, AT_PHDR, phdr->p_vaddr + reloc);
|
||||||
} else
|
} else
|
||||||
if (PT_LOAD==phdr->p_type) {
|
if (PT_LOAD==phdr->p_type) {
|
||||||
DPRINTF("LOAD p_offset=%%p p_vaddr=%%p p_filesz=%%p p_memsz=%%p p_flags=%%x\\n",
|
unsigned const prot = PF_TO_PROT(phdr->p_flags);
|
||||||
phdr->p_offset, phdr->p_vaddr, phdr->p_filesz, phdr->p_memsz, phdr->p_flags);
|
DPRINTF("LOAD p_offset=%%p p_vaddr=%%p p_filesz=%%p p_memsz=%%p p_flags=%%x prot=%%x\\n",
|
||||||
|
phdr->p_offset, phdr->p_vaddr, phdr->p_filesz, phdr->p_memsz, phdr->p_flags, prot);
|
||||||
if (xi && !phdr->p_offset /*&& ET_EXEC==ehdr->e_type*/) { // 1st PT_LOAD
|
if (xi && !phdr->p_offset /*&& ET_EXEC==ehdr->e_type*/) { // 1st PT_LOAD
|
||||||
// ? Compressed PT_INTERP must not overwrite values from compressed a.out?
|
// ? Compressed PT_INTERP must not overwrite values from compressed a.out?
|
||||||
auxv_up(av, AT_PHDR, phdr->p_vaddr + reloc + ehdr->e_phoff);
|
auxv_up(av, AT_PHDR, phdr->p_vaddr + reloc + ehdr->e_phoff);
|
||||||
@@ -502,13 +506,12 @@ do_xmap(
|
|||||||
auxv_up(av, AT_PHENT, ehdr->e_phentsize); /* ancient kernels might omit! */
|
auxv_up(av, AT_PHENT, ehdr->e_phentsize); /* ancient kernels might omit! */
|
||||||
//auxv_up(av, AT_PAGESZ, PAGE_SIZE); /* ld-linux.so.2 does not need this */
|
//auxv_up(av, AT_PAGESZ, PAGE_SIZE); /* ld-linux.so.2 does not need this */
|
||||||
}
|
}
|
||||||
unsigned const prot = PF_TO_PROT(phdr->p_flags);
|
|
||||||
Extent xo;
|
Extent xo;
|
||||||
size_t mlen = xo.size = phdr->p_filesz;
|
size_t mlen = xo.size = phdr->p_filesz;
|
||||||
char *addr = xo.buf = reloc + (char *)phdr->p_vaddr;
|
char *addr = xo.buf = reloc + (char *)phdr->p_vaddr;
|
||||||
char *haddr = phdr->p_memsz + addr;
|
char *hi_addr = phdr->p_memsz + addr; // end of local .bss
|
||||||
|
char *addr2 = mlen + addr; // end of local .data
|
||||||
unsigned lo_frag = (unsigned)(long)addr &~ PAGE_MASK;
|
unsigned lo_frag = (unsigned)(long)addr &~ PAGE_MASK;
|
||||||
unsigned hi_frag = -(lo_frag + mlen) &~ PAGE_MASK; // distance to next page
|
|
||||||
mlen += lo_frag;
|
mlen += lo_frag;
|
||||||
addr -= lo_frag;
|
addr -= lo_frag;
|
||||||
#if defined(__powerpc64__) || defined(__aarch64__)
|
#if defined(__powerpc64__) || defined(__aarch64__)
|
||||||
@@ -518,9 +521,12 @@ do_xmap(
|
|||||||
DPRINTF(" mlen=%%p\\n", mlen);
|
DPRINTF(" mlen=%%p\\n", mlen);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
DPRINTF("mmap addr=%%p len=%%p offset=%%p lo_frag=%%p\\n",
|
DPRINTF("mmap addr=%%p mlen=%%p offset=%%p lo_frag=%%p prot=%%x\\n",
|
||||||
addr, mlen, phdr->p_offset - lo_frag, lo_frag);
|
addr, mlen, phdr->p_offset - lo_frag, lo_frag, prot);
|
||||||
if (addr != mmap(addr, mlen, prot | (xi ? PROT_WRITE : 0),
|
if (addr != mmap(addr, mlen,
|
||||||
|
// If compressed, then we need PROT_WRITE to de-compress;
|
||||||
|
// but then SELinux 'execmod' requires no PROT_EXEC for now.
|
||||||
|
(prot | (xi ? PROT_WRITE : 0)) &~ (xi ? PROT_EXEC : 0),
|
||||||
MAP_FIXED | MAP_PRIVATE | (xi ? MAP_ANONYMOUS : 0),
|
MAP_FIXED | MAP_PRIVATE | (xi ? MAP_ANONYMOUS : 0),
|
||||||
(xi ? -1 : fdi), phdr->p_offset - lo_frag) ) {
|
(xi ? -1 : fdi), phdr->p_offset - lo_frag) ) {
|
||||||
err_exit(8);
|
err_exit(8);
|
||||||
@@ -533,7 +539,10 @@ do_xmap(
|
|||||||
// bzero(addr, lo_frag); // fragment at lo end
|
// bzero(addr, lo_frag); // fragment at lo end
|
||||||
//}
|
//}
|
||||||
if (PROT_WRITE & prot) { // note: read-only .bss not supported here
|
if (PROT_WRITE & prot) { // note: read-only .bss not supported here
|
||||||
bzero(phdr->p_filesz + lo_frag + addr, hi_frag);
|
// Clear to end-of-page (first part of .bss or &_end)
|
||||||
|
unsigned hi_frag = -(long)addr2 &~ PAGE_MASK;
|
||||||
|
bzero(addr2, hi_frag);
|
||||||
|
addr2 += hi_frag; // will be page aligned
|
||||||
}
|
}
|
||||||
if (xi) {
|
if (xi) {
|
||||||
#if defined(__x86_64) //{
|
#if defined(__x86_64) //{
|
||||||
@@ -546,15 +555,15 @@ do_xmap(
|
|||||||
if (0!=hatch) {
|
if (0!=hatch) {
|
||||||
auxv_up((Elf64_auxv_t *)(~1 & (size_t)av), AT_NULL, (size_t)hatch);
|
auxv_up((Elf64_auxv_t *)(~1 & (size_t)av), AT_NULL, (size_t)hatch);
|
||||||
}
|
}
|
||||||
|
DPRINTF("mprotect addr=%%p len=%%p prot=%%x\\n", addr, mlen, prot);
|
||||||
if (0!=mprotect(addr, mlen, prot)) {
|
if (0!=mprotect(addr, mlen, prot)) {
|
||||||
err_exit(10);
|
err_exit(10);
|
||||||
ERR_LAB
|
ERR_LAB
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addr += mlen + hi_frag; /* page boundary on hi end */
|
if (addr2 < hi_addr) { // pages for .bss beyond last page for p_filesz
|
||||||
if (addr < haddr) { // need pages for .bss
|
DPRINTF("zmap addr2=%%p len=%%p prot=%%x\\n", addr2, hi_addr - addr2, prot);
|
||||||
DPRINTF("zmap addr=%%p len=%%p\\n", addr, haddr - addr);
|
if (addr2 != mmap(addr2, hi_addr - addr2, prot,
|
||||||
if (addr != mmap(addr, haddr - addr, prot,
|
|
||||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0 ) ) {
|
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0 ) ) {
|
||||||
err_exit(9);
|
err_exit(9);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,12 +38,12 @@
|
|||||||
#define lsrc r1
|
#define lsrc r1
|
||||||
#define dst r2
|
#define dst r2
|
||||||
#define ldst r3 /* Out: actually a reference: &len_dst */
|
#define ldst r3 /* Out: actually a reference: &len_dst */
|
||||||
#define meth [sp,#0]
|
#define meth [sp,#0] /* as arg5 to f_exp: 32-bit unsigned */
|
||||||
|
|
||||||
// bkpt // debugging
|
// bkpt // debugging
|
||||||
|
|
||||||
#define M_LZMA 14
|
#define M_LZMA 14
|
||||||
ldrb ip,meth; cmp ip,#M_LZMA; bne not_lzma
|
ldr ip,meth; cmp ip,#M_LZMA; bne not_lzma
|
||||||
|
|
||||||
#if defined(LINUX_ARM_CACHEFLUSH)||defined(DARWIN_ARM_CACHEFLUSH) /*{*/
|
#if defined(LINUX_ARM_CACHEFLUSH)||defined(DARWIN_ARM_CACHEFLUSH) /*{*/
|
||||||
PUSH {dst,ldst, fp,lr} // dst,ldst for cache flush
|
PUSH {dst,ldst, fp,lr} // dst,ldst for cache flush
|
||||||
@@ -125,8 +125,11 @@
|
|||||||
mov r0,r4 // result value
|
mov r0,r4 // result value
|
||||||
#endif /*}*/
|
#endif /*}*/
|
||||||
|
|
||||||
POP {fp,pc}
|
POP {fp,pc} // RETURN!
|
||||||
1:
|
not_lzma:
|
||||||
|
bkpt // we are lost
|
||||||
|
|
||||||
|
1: // fall through into lzma decoding subroutine
|
||||||
|
|
||||||
section LZMA_DEC20
|
section LZMA_DEC20
|
||||||
#include "lzma_d_cf.S"
|
#include "lzma_d_cf.S"
|
||||||
@@ -141,7 +144,5 @@
|
|||||||
|
|
||||||
section LZMA_DEC30
|
section LZMA_DEC30
|
||||||
|
|
||||||
not_lzma:
|
|
||||||
|
|
||||||
// vi:ts=8:et
|
// vi:ts=8:et
|
||||||
|
|
||||||
|
|||||||
@@ -193,13 +193,67 @@ xPMASK .req x20
|
|||||||
mov x0,xADRU
|
mov x0,xADRU
|
||||||
mov w1,wLENU
|
mov w1,wLENU
|
||||||
ldr x2,[xauxe,#NBPW - sz_auxv] // Elf64_auxv_t[AT_NULL@.a_type].a_val
|
ldr x2,[xauxe,#NBPW - sz_auxv] // Elf64_auxv_t[AT_NULL@.a_type].a_val
|
||||||
mov w8,#__NR_munmap // munmap(ADRU, LENU) unfolded stub
|
|
||||||
|
// paranoia: zero used registers except x0,x1,x2,x30(lr)
|
||||||
|
stp xzr,xzr,[sp,#-2*NBPW]!
|
||||||
|
mov x16,xzr
|
||||||
|
ldp x3,x4,[sp,#0]
|
||||||
|
ldp x6,x7,[sp,#0]
|
||||||
|
ldp x8,x9,[sp,#0]
|
||||||
|
ldp x20,x21,[sp,#0]
|
||||||
|
ldp x22,x23,[sp,#0]
|
||||||
|
ldp x24,x25,[sp,#0]
|
||||||
|
ldp x26,x27,[sp,#0]
|
||||||
|
ldp x28,x29,[sp],#2*NBPW
|
||||||
|
|
||||||
#if DEBUG //{
|
#if DEBUG //{
|
||||||
ldr w3,[x2,#0] // 1st instr
|
ldr w3,[x2,#0] // 1st instr
|
||||||
ldr w4,[x2,#4] // 2nd instr
|
ldr w4,[x2,#4] // 2nd instr
|
||||||
TRACE(4)
|
TRACE(4)
|
||||||
#endif //}
|
#endif //}
|
||||||
|
|
||||||
|
#if 1 //{
|
||||||
|
// This is a workaround for an intermittent problem. The "svc #0" in the escape hatch
|
||||||
|
// to invoke munmap() on the unfolded stub, sometimes (20% ?) gets SIGILL despite
|
||||||
|
// apparent good environment. So do not unmap, which will waste 1 page.
|
||||||
|
// Example:
|
||||||
|
// Program received signal SIGILL, Illegal instruction.
|
||||||
|
// 0x0000fffff7fde974 in ?? ()
|
||||||
|
// (gdb) info proc
|
||||||
|
// process 748
|
||||||
|
// cmdline = '/home/jreiser/611/hello.packed'
|
||||||
|
// (gdb) shell cat /proc/748/maps
|
||||||
|
// fffff7faa000-fffff7fcb000 r-xp 00000000 b3:02 8845 /usr/lib/aarch64-linux-gnu/ld-2.31.so
|
||||||
|
// fffff7fcb000-fffff7fdb000 ---p 00000000 00:00 0
|
||||||
|
// fffff7fdb000-fffff7fde000 rw-p 00021000 b3:02 8845 /usr/lib/aarch64-linux-gnu/ld-2.31.so
|
||||||
|
// fffff7fde000-fffff7fdf000 r-xp 00000000 00:00 0 ## pc in this page; has 'r-x' permission
|
||||||
|
// fffff7fdf000-fffff7fee000 ---p 00000000 00:00 0
|
||||||
|
// fffff7fee000-fffff7ff0000 rw-p 00000000 00:00 0
|
||||||
|
// fffff7ffa000-fffff7ffb000 r-xp 00000000 00:00 0 ## target of munmap [x0, +x1)
|
||||||
|
// fffff7ffb000-fffff7ffd000 r--p 00000000 00:00 0 [vvar]
|
||||||
|
// fffff7ffd000-fffff7ffe000 r-xp 00000000 00:00 0 [vdso]
|
||||||
|
// fffff7fff000-fffff8000000 r--p 00000000 b3:02 126504 /home/jreiser/611/hello.packed
|
||||||
|
// fffffffdf000-1000000000000 rw-p 00000000 00:00 0 [stack]
|
||||||
|
// (gdb) x/2i $pc
|
||||||
|
// => 0xfffff7fde974: svc #0x0
|
||||||
|
// 0xfffff7fde978: ret
|
||||||
|
// (gdb) info reg
|
||||||
|
// x0 0xfffff7ffa000 0xfffff7ffa000 ## address to unmap
|
||||||
|
// x1 0xa10 0xa10 # length to unmap
|
||||||
|
// x2 0xfffff7fde974 0xfffff7fde974 ## address of escape hatch
|
||||||
|
// x3 - x29 0x0 0x0
|
||||||
|
// x30 0xfffff7fab140 0xfffff7fab140 ## entry to ld-linux
|
||||||
|
// sp 0xffffffffd7b0 0xffffffffd7b0
|
||||||
|
// pc 0xfffff7fde974 0xfffff7fde974
|
||||||
|
// cpsr 0x60000000 [ EL=0 C Z ]
|
||||||
|
// fpsr 0x0 0x0
|
||||||
|
// fpcr 0x0 0x0
|
||||||
|
// (gdb)
|
||||||
|
ret // "br lr"; just enter ld-linux, omitting the munmap of unfolded stub
|
||||||
|
#else //}{ This should work, but fails intermittently
|
||||||
|
mov w8,#__NR_munmap // munmap(ADRU, LENU) unfolded stub
|
||||||
br x2 // goto escape hatch
|
br x2 // goto escape hatch
|
||||||
|
#endif //}
|
||||||
|
|
||||||
space3eq:
|
space3eq:
|
||||||
.ascii " ="
|
.ascii " ="
|
||||||
|
|||||||
+8
-8
@@ -8,12 +8,12 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||||||
3 NRV2E 0000012c 00000000 00000000 00000040 2**0 CONTENTS, RELOC, READONLY
|
3 NRV2E 0000012c 00000000 00000000 00000040 2**0 CONTENTS, RELOC, READONLY
|
||||||
4 NRV2D 00000118 00000000 00000000 0000016c 2**0 CONTENTS, RELOC, READONLY
|
4 NRV2D 00000118 00000000 00000000 0000016c 2**0 CONTENTS, RELOC, READONLY
|
||||||
5 NRV2B 000000dc 00000000 00000000 00000284 2**0 CONTENTS, RELOC, READONLY
|
5 NRV2B 000000dc 00000000 00000000 00000284 2**0 CONTENTS, RELOC, READONLY
|
||||||
6 LZMA_ELF00 000000a8 00000000 00000000 00000360 2**0 CONTENTS, RELOC, READONLY
|
6 LZMA_ELF00 000000ac 00000000 00000000 00000360 2**0 CONTENTS, RELOC, READONLY
|
||||||
7 LZMA_DEC20 00000938 00000000 00000000 00000408 2**0 CONTENTS, RELOC, READONLY
|
7 LZMA_DEC20 00000938 00000000 00000000 0000040c 2**0 CONTENTS, RELOC, READONLY
|
||||||
8 LZMA_DEC10 00000478 00000000 00000000 00000d40 2**0 CONTENTS, RELOC, READONLY
|
8 LZMA_DEC10 00000478 00000000 00000000 00000d44 2**0 CONTENTS, RELOC, READONLY
|
||||||
9 LZMA_DEC30 00000000 00000000 00000000 000011b8 2**0 CONTENTS, READONLY
|
9 LZMA_DEC30 00000000 00000000 00000000 000011bc 2**0 CONTENTS, READONLY
|
||||||
10 ELFMAINY 00000000 00000000 00000000 000011b8 2**0 CONTENTS, READONLY
|
10 ELFMAINY 00000000 00000000 00000000 000011bc 2**0 CONTENTS, READONLY
|
||||||
11 ELFMAINZ 000000f0 00000000 00000000 000011b8 2**2 CONTENTS, RELOC, READONLY
|
11 ELFMAINZ 000000f0 00000000 00000000 000011bc 2**2 CONTENTS, RELOC, READONLY
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l d NRV2E 00000000 NRV2E
|
00000000 l d NRV2E 00000000 NRV2E
|
||||||
00000000 l d NRV2D 00000000 NRV2D
|
00000000 l d NRV2D 00000000 NRV2D
|
||||||
@@ -21,11 +21,11 @@ SYMBOL TABLE:
|
|||||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
|
||||||
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
||||||
00000000 l d ELFMAINX 00000000 ELFMAINX
|
00000000 l d ELFMAINX 00000000 ELFMAINX
|
||||||
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
||||||
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
||||||
|
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||||
00000000 l d ELFMAINY 00000000 ELFMAINY
|
00000000 l d ELFMAINY 00000000 ELFMAINY
|
||||||
00000000 *UND* 00000000 MFLG
|
00000000 *UND* 00000000 MFLG
|
||||||
00000004 g ELFMAINX 00000000 _start
|
00000004 g ELFMAINX 00000000 _start
|
||||||
@@ -110,7 +110,7 @@ OFFSET TYPE VALUE
|
|||||||
|
|
||||||
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000008 R_ARM_PC24 LZMA_DEC30
|
00000008 R_ARM_PC24 LZMA_ELF00
|
||||||
0000004c R_ARM_PC24 LZMA_ELF00
|
0000004c R_ARM_PC24 LZMA_ELF00
|
||||||
00000080 R_ARM_PC24 LZMA_ELF00
|
00000080 R_ARM_PC24 LZMA_ELF00
|
||||||
|
|
||||||
|
|||||||
+8
-8
@@ -8,12 +8,12 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||||||
3 NRV2D 00000130 00000000 00000000 00000184 2**0 CONTENTS, RELOC, READONLY
|
3 NRV2D 00000130 00000000 00000000 00000184 2**0 CONTENTS, RELOC, READONLY
|
||||||
4 NRV2B 000000f4 00000000 00000000 000002b4 2**0 CONTENTS, RELOC, READONLY
|
4 NRV2B 000000f4 00000000 00000000 000002b4 2**0 CONTENTS, RELOC, READONLY
|
||||||
5 NRV_TAIL 00000000 00000000 00000000 000003a8 2**0 CONTENTS, READONLY
|
5 NRV_TAIL 00000000 00000000 00000000 000003a8 2**0 CONTENTS, READONLY
|
||||||
6 LZMA_ELF00 000000bc 00000000 00000000 000003a8 2**0 CONTENTS, RELOC, READONLY
|
6 LZMA_ELF00 000000c0 00000000 00000000 000003a8 2**0 CONTENTS, RELOC, READONLY
|
||||||
7 LZMA_DEC20 00000938 00000000 00000000 00000464 2**0 CONTENTS, RELOC, READONLY
|
7 LZMA_DEC20 00000938 00000000 00000000 00000468 2**0 CONTENTS, RELOC, READONLY
|
||||||
8 LZMA_DEC10 00000478 00000000 00000000 00000d9c 2**0 CONTENTS, RELOC, READONLY
|
8 LZMA_DEC10 00000478 00000000 00000000 00000da0 2**0 CONTENTS, RELOC, READONLY
|
||||||
9 LZMA_DEC30 00000000 00000000 00000000 00001214 2**0 CONTENTS, READONLY
|
9 LZMA_DEC30 00000000 00000000 00000000 00001218 2**0 CONTENTS, READONLY
|
||||||
10 MACHMAINY 00000000 00000000 00000000 00001214 2**0 CONTENTS, READONLY
|
10 MACHMAINY 00000000 00000000 00000000 00001218 2**0 CONTENTS, READONLY
|
||||||
11 MACHMAINZ 00000184 00000000 00000000 00001214 2**0 CONTENTS, RELOC, READONLY
|
11 MACHMAINZ 00000184 00000000 00000000 00001218 2**0 CONTENTS, RELOC, READONLY
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l d NRV2E 00000000 NRV2E
|
00000000 l d NRV2E 00000000 NRV2E
|
||||||
00000000 l d NRV2D 00000000 NRV2D
|
00000000 l d NRV2D 00000000 NRV2D
|
||||||
@@ -21,11 +21,11 @@ SYMBOL TABLE:
|
|||||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
|
||||||
00000000 l d MACHMAINZ 00000000 MACHMAINZ
|
00000000 l d MACHMAINZ 00000000 MACHMAINZ
|
||||||
00000000 l d MACHMAINX 00000000 MACHMAINX
|
00000000 l d MACHMAINX 00000000 MACHMAINX
|
||||||
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
||||||
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
||||||
|
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||||
00000000 l d MACHMAINY 00000000 MACHMAINY
|
00000000 l d MACHMAINY 00000000 MACHMAINY
|
||||||
00000000 g MACHMAINX 00000000 _start
|
00000000 g MACHMAINX 00000000 _start
|
||||||
00000000 g F NRV2E 00000144 ucl_nrv2e_decompress_8
|
00000000 g F NRV2E 00000144 ucl_nrv2e_decompress_8
|
||||||
@@ -106,7 +106,7 @@ OFFSET TYPE VALUE
|
|||||||
|
|
||||||
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000008 R_ARM_PC24 LZMA_DEC30
|
00000008 R_ARM_PC24 LZMA_ELF00
|
||||||
0000004c R_ARM_PC24 LZMA_ELF00
|
0000004c R_ARM_PC24 LZMA_ELF00
|
||||||
00000080 R_ARM_PC24 LZMA_ELF00
|
00000080 R_ARM_PC24 LZMA_ELF00
|
||||||
|
|
||||||
|
|||||||
+8
-8
@@ -8,12 +8,12 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||||||
3 NRV2E 0000013c 00000000 00000000 00000040 2**0 CONTENTS, RELOC, READONLY
|
3 NRV2E 0000013c 00000000 00000000 00000040 2**0 CONTENTS, RELOC, READONLY
|
||||||
4 NRV2D 00000128 00000000 00000000 0000017c 2**0 CONTENTS, RELOC, READONLY
|
4 NRV2D 00000128 00000000 00000000 0000017c 2**0 CONTENTS, RELOC, READONLY
|
||||||
5 NRV2B 000000ec 00000000 00000000 000002a4 2**0 CONTENTS, RELOC, READONLY
|
5 NRV2B 000000ec 00000000 00000000 000002a4 2**0 CONTENTS, RELOC, READONLY
|
||||||
6 LZMA_ELF00 000000b8 00000000 00000000 00000390 2**0 CONTENTS, RELOC, READONLY
|
6 LZMA_ELF00 000000bc 00000000 00000000 00000390 2**0 CONTENTS, RELOC, READONLY
|
||||||
7 LZMA_DEC20 00000938 00000000 00000000 00000448 2**0 CONTENTS, RELOC, READONLY
|
7 LZMA_DEC20 00000938 00000000 00000000 0000044c 2**0 CONTENTS, RELOC, READONLY
|
||||||
8 LZMA_DEC10 00000478 00000000 00000000 00000d80 2**0 CONTENTS, RELOC, READONLY
|
8 LZMA_DEC10 00000478 00000000 00000000 00000d84 2**0 CONTENTS, RELOC, READONLY
|
||||||
9 LZMA_DEC30 00000000 00000000 00000000 000011f8 2**0 CONTENTS, READONLY
|
9 LZMA_DEC30 00000000 00000000 00000000 000011fc 2**0 CONTENTS, READONLY
|
||||||
10 ELFMAINY 00000000 00000000 00000000 000011f8 2**0 CONTENTS, READONLY
|
10 ELFMAINY 00000000 00000000 00000000 000011fc 2**0 CONTENTS, READONLY
|
||||||
11 ELFMAINZ 00000104 00000000 00000000 000011f8 2**2 CONTENTS, RELOC, READONLY
|
11 ELFMAINZ 00000104 00000000 00000000 000011fc 2**2 CONTENTS, RELOC, READONLY
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l d NRV2E 00000000 NRV2E
|
00000000 l d NRV2E 00000000 NRV2E
|
||||||
00000000 l d NRV2D 00000000 NRV2D
|
00000000 l d NRV2D 00000000 NRV2D
|
||||||
@@ -21,11 +21,11 @@ SYMBOL TABLE:
|
|||||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
|
||||||
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
||||||
00000000 l d ELFMAINX 00000000 ELFMAINX
|
00000000 l d ELFMAINX 00000000 ELFMAINX
|
||||||
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
||||||
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
||||||
|
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||||
00000000 l d ELFMAINY 00000000 ELFMAINY
|
00000000 l d ELFMAINY 00000000 ELFMAINY
|
||||||
00000000 *UND* 00000000 MFLG
|
00000000 *UND* 00000000 MFLG
|
||||||
00000004 g ELFMAINX 00000000 _start
|
00000004 g ELFMAINX 00000000 _start
|
||||||
@@ -110,7 +110,7 @@ OFFSET TYPE VALUE
|
|||||||
|
|
||||||
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000008 R_ARM_PC24 LZMA_DEC30
|
00000008 R_ARM_PC24 LZMA_ELF00
|
||||||
0000004c R_ARM_PC24 LZMA_ELF00
|
0000004c R_ARM_PC24 LZMA_ELF00
|
||||||
00000080 R_ARM_PC24 LZMA_ELF00
|
00000080 R_ARM_PC24 LZMA_ELF00
|
||||||
|
|
||||||
|
|||||||
+7
-7
@@ -13,11 +13,11 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||||||
8 NRV2B 000000c4 00000000 00000000 000000ec 2**0 CONTENTS, RELOC, READONLY
|
8 NRV2B 000000c4 00000000 00000000 000000ec 2**0 CONTENTS, RELOC, READONLY
|
||||||
9 NRV2D 00000100 00000000 00000000 000001b0 2**0 CONTENTS, RELOC, READONLY
|
9 NRV2D 00000100 00000000 00000000 000001b0 2**0 CONTENTS, RELOC, READONLY
|
||||||
10 NRV2E 00000114 00000000 00000000 000002b0 2**0 CONTENTS, RELOC, READONLY
|
10 NRV2E 00000114 00000000 00000000 000002b0 2**0 CONTENTS, RELOC, READONLY
|
||||||
11 LZMA_ELF00 0000008c 00000000 00000000 000003c4 2**0 CONTENTS, RELOC, READONLY
|
11 LZMA_ELF00 00000090 00000000 00000000 000003c4 2**0 CONTENTS, RELOC, READONLY
|
||||||
12 LZMA_DEC20 00000938 00000000 00000000 00000450 2**0 CONTENTS, RELOC, READONLY
|
12 LZMA_DEC20 00000938 00000000 00000000 00000454 2**0 CONTENTS, RELOC, READONLY
|
||||||
13 LZMA_DEC10 00000478 00000000 00000000 00000d88 2**0 CONTENTS, RELOC, READONLY
|
13 LZMA_DEC10 00000478 00000000 00000000 00000d8c 2**0 CONTENTS, RELOC, READONLY
|
||||||
14 LZMA_DEC30 00000000 00000000 00000000 00001200 2**0 CONTENTS, READONLY
|
14 LZMA_DEC30 00000000 00000000 00000000 00001204 2**0 CONTENTS, READONLY
|
||||||
15 UPX1HEAD 00000020 00000000 00000000 00001200 2**0 CONTENTS, READONLY
|
15 UPX1HEAD 00000020 00000000 00000000 00001204 2**0 CONTENTS, READONLY
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l d LINUX000 00000000 LINUX000
|
00000000 l d LINUX000 00000000 LINUX000
|
||||||
00000000 l d ctok32.00 00000000 ctok32.00
|
00000000 l d ctok32.00 00000000 ctok32.00
|
||||||
@@ -29,11 +29,11 @@ SYMBOL TABLE:
|
|||||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
|
||||||
00000000 l d LINUX010 00000000 LINUX010
|
00000000 l d LINUX010 00000000 LINUX010
|
||||||
00000000 l d LINUX020 00000000 LINUX020
|
00000000 l d LINUX020 00000000 LINUX020
|
||||||
00000000 l d ctok32.50 00000000 ctok32.50
|
00000000 l d ctok32.50 00000000 ctok32.50
|
||||||
00000000 l d ctok32.51 00000000 ctok32.51
|
00000000 l d ctok32.51 00000000 ctok32.51
|
||||||
|
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||||
00000000 l d UPX1HEAD 00000000 UPX1HEAD
|
00000000 l d UPX1HEAD 00000000 UPX1HEAD
|
||||||
00000000 *UND* 00000000 METHOD
|
00000000 *UND* 00000000 METHOD
|
||||||
00000000 *UND* 00000000 COMPRESSED_LENGTH
|
00000000 *UND* 00000000 COMPRESSED_LENGTH
|
||||||
@@ -133,7 +133,7 @@ OFFSET TYPE VALUE
|
|||||||
|
|
||||||
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000008 R_ARM_PC24 LZMA_DEC30
|
00000008 R_ARM_PC24 LZMA_ELF00
|
||||||
0000004c R_ARM_PC24 LZMA_ELF00
|
0000004c R_ARM_PC24 LZMA_ELF00
|
||||||
00000080 R_ARM_PC24 LZMA_ELF00
|
00000080 R_ARM_PC24 LZMA_ELF00
|
||||||
|
|
||||||
|
|||||||
+7
-7
@@ -13,11 +13,11 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||||||
8 NRV2B 000000c4 00000000 00000000 000000ec 2**0 CONTENTS, RELOC, READONLY
|
8 NRV2B 000000c4 00000000 00000000 000000ec 2**0 CONTENTS, RELOC, READONLY
|
||||||
9 NRV2D 00000100 00000000 00000000 000001b0 2**0 CONTENTS, RELOC, READONLY
|
9 NRV2D 00000100 00000000 00000000 000001b0 2**0 CONTENTS, RELOC, READONLY
|
||||||
10 NRV2E 00000114 00000000 00000000 000002b0 2**0 CONTENTS, RELOC, READONLY
|
10 NRV2E 00000114 00000000 00000000 000002b0 2**0 CONTENTS, RELOC, READONLY
|
||||||
11 LZMA_ELF00 0000008c 00000000 00000000 000003c4 2**0 CONTENTS, RELOC, READONLY
|
11 LZMA_ELF00 00000090 00000000 00000000 000003c4 2**0 CONTENTS, RELOC, READONLY
|
||||||
12 LZMA_DEC20 00000938 00000000 00000000 00000450 2**0 CONTENTS, RELOC, READONLY
|
12 LZMA_DEC20 00000938 00000000 00000000 00000454 2**0 CONTENTS, RELOC, READONLY
|
||||||
13 LZMA_DEC10 00000478 00000000 00000000 00000d88 2**0 CONTENTS, RELOC, READONLY
|
13 LZMA_DEC10 00000478 00000000 00000000 00000d8c 2**0 CONTENTS, RELOC, READONLY
|
||||||
14 LZMA_DEC30 00000000 00000000 00000000 00001200 2**0 CONTENTS, READONLY
|
14 LZMA_DEC30 00000000 00000000 00000000 00001204 2**0 CONTENTS, READONLY
|
||||||
15 UPX1HEAD 00000020 00000000 00000000 00001200 2**0 CONTENTS, READONLY
|
15 UPX1HEAD 00000020 00000000 00000000 00001204 2**0 CONTENTS, READONLY
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l d LINUX000 00000000 LINUX000
|
00000000 l d LINUX000 00000000 LINUX000
|
||||||
00000000 l d ctok32.00 00000000 ctok32.00
|
00000000 l d ctok32.00 00000000 ctok32.00
|
||||||
@@ -29,11 +29,11 @@ SYMBOL TABLE:
|
|||||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
|
||||||
00000000 l d LINUX010 00000000 LINUX010
|
00000000 l d LINUX010 00000000 LINUX010
|
||||||
00000000 l d LINUX020 00000000 LINUX020
|
00000000 l d LINUX020 00000000 LINUX020
|
||||||
00000000 l d ctok32.50 00000000 ctok32.50
|
00000000 l d ctok32.50 00000000 ctok32.50
|
||||||
00000000 l d ctok32.51 00000000 ctok32.51
|
00000000 l d ctok32.51 00000000 ctok32.51
|
||||||
|
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||||
00000000 l d UPX1HEAD 00000000 UPX1HEAD
|
00000000 l d UPX1HEAD 00000000 UPX1HEAD
|
||||||
00000000 *UND* 00000000 METHOD
|
00000000 *UND* 00000000 METHOD
|
||||||
00000000 *UND* 00000000 COMPRESSED_LENGTH
|
00000000 *UND* 00000000 COMPRESSED_LENGTH
|
||||||
@@ -133,7 +133,7 @@ OFFSET TYPE VALUE
|
|||||||
|
|
||||||
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000008 R_ARM_PC24 LZMA_DEC30
|
00000008 R_ARM_PC24 LZMA_ELF00
|
||||||
0000004c R_ARM_PC24 LZMA_ELF00
|
0000004c R_ARM_PC24 LZMA_ELF00
|
||||||
00000080 R_ARM_PC24 LZMA_ELF00
|
00000080 R_ARM_PC24 LZMA_ELF00
|
||||||
|
|
||||||
|
|||||||
+8
-8
@@ -8,12 +8,12 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||||||
3 NRV2E 0000013c 00000000 00000000 00000048 2**0 CONTENTS, RELOC, READONLY
|
3 NRV2E 0000013c 00000000 00000000 00000048 2**0 CONTENTS, RELOC, READONLY
|
||||||
4 NRV2D 00000128 00000000 00000000 00000184 2**0 CONTENTS, RELOC, READONLY
|
4 NRV2D 00000128 00000000 00000000 00000184 2**0 CONTENTS, RELOC, READONLY
|
||||||
5 NRV2B 000000ec 00000000 00000000 000002ac 2**0 CONTENTS, RELOC, READONLY
|
5 NRV2B 000000ec 00000000 00000000 000002ac 2**0 CONTENTS, RELOC, READONLY
|
||||||
6 LZMA_ELF00 000000b8 00000000 00000000 00000398 2**0 CONTENTS, RELOC, READONLY
|
6 LZMA_ELF00 000000bc 00000000 00000000 00000398 2**0 CONTENTS, RELOC, READONLY
|
||||||
7 LZMA_DEC20 00000938 00000000 00000000 00000450 2**0 CONTENTS, RELOC, READONLY
|
7 LZMA_DEC20 00000938 00000000 00000000 00000454 2**0 CONTENTS, RELOC, READONLY
|
||||||
8 LZMA_DEC10 00000478 00000000 00000000 00000d88 2**0 CONTENTS, RELOC, READONLY
|
8 LZMA_DEC10 00000478 00000000 00000000 00000d8c 2**0 CONTENTS, RELOC, READONLY
|
||||||
9 LZMA_DEC30 00000000 00000000 00000000 00001200 2**0 CONTENTS, READONLY
|
9 LZMA_DEC30 00000000 00000000 00000000 00001204 2**0 CONTENTS, READONLY
|
||||||
10 ELFMAINY 0000003e 00000000 00000000 00001200 2**0 CONTENTS, READONLY
|
10 ELFMAINY 0000003e 00000000 00000000 00001204 2**0 CONTENTS, READONLY
|
||||||
11 ELFMAINZ 00000310 00000000 00000000 0000123e 2**0 CONTENTS, RELOC, READONLY
|
11 ELFMAINZ 00000310 00000000 00000000 00001242 2**0 CONTENTS, RELOC, READONLY
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l d NRV2E 00000000 NRV2E
|
00000000 l d NRV2E 00000000 NRV2E
|
||||||
00000000 l d NRV2D 00000000 NRV2D
|
00000000 l d NRV2D 00000000 NRV2D
|
||||||
@@ -21,11 +21,11 @@ SYMBOL TABLE:
|
|||||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
|
||||||
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
||||||
00000000 l d ELFMAINX 00000000 ELFMAINX
|
00000000 l d ELFMAINX 00000000 ELFMAINX
|
||||||
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
||||||
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
||||||
|
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||||
00000000 l d ELFMAINY 00000000 ELFMAINY
|
00000000 l d ELFMAINY 00000000 ELFMAINY
|
||||||
00000000 g ELFMAINX 00000000 _start
|
00000000 g ELFMAINX 00000000 _start
|
||||||
00000000 g F NRV2E 0000013c ucl_nrv2e_decompress_8
|
00000000 g F NRV2E 0000013c ucl_nrv2e_decompress_8
|
||||||
@@ -106,7 +106,7 @@ OFFSET TYPE VALUE
|
|||||||
|
|
||||||
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000008 R_ARM_PC24 LZMA_DEC30
|
00000008 R_ARM_PC24 LZMA_ELF00
|
||||||
0000004c R_ARM_PC24 LZMA_ELF00
|
0000004c R_ARM_PC24 LZMA_ELF00
|
||||||
00000080 R_ARM_PC24 LZMA_ELF00
|
00000080 R_ARM_PC24 LZMA_ELF00
|
||||||
|
|
||||||
|
|||||||
+8
-8
@@ -8,12 +8,12 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||||||
3 NRV2E 0000013c 00000000 00000000 000000d4 2**0 CONTENTS, RELOC, READONLY
|
3 NRV2E 0000013c 00000000 00000000 000000d4 2**0 CONTENTS, RELOC, READONLY
|
||||||
4 NRV2D 00000128 00000000 00000000 00000210 2**0 CONTENTS, RELOC, READONLY
|
4 NRV2D 00000128 00000000 00000000 00000210 2**0 CONTENTS, RELOC, READONLY
|
||||||
5 NRV2B 000000ec 00000000 00000000 00000338 2**0 CONTENTS, RELOC, READONLY
|
5 NRV2B 000000ec 00000000 00000000 00000338 2**0 CONTENTS, RELOC, READONLY
|
||||||
6 LZMA_ELF00 000000b8 00000000 00000000 00000424 2**0 CONTENTS, RELOC, READONLY
|
6 LZMA_ELF00 000000bc 00000000 00000000 00000424 2**0 CONTENTS, RELOC, READONLY
|
||||||
7 LZMA_DEC20 00000938 00000000 00000000 000004dc 2**0 CONTENTS, RELOC, READONLY
|
7 LZMA_DEC20 00000938 00000000 00000000 000004e0 2**0 CONTENTS, RELOC, READONLY
|
||||||
8 LZMA_DEC10 00000478 00000000 00000000 00000e14 2**0 CONTENTS, RELOC, READONLY
|
8 LZMA_DEC10 00000478 00000000 00000000 00000e18 2**0 CONTENTS, RELOC, READONLY
|
||||||
9 LZMA_DEC30 00000000 00000000 00000000 0000128c 2**0 CONTENTS, READONLY
|
9 LZMA_DEC30 00000000 00000000 00000000 00001290 2**0 CONTENTS, READONLY
|
||||||
10 ELFMAINY 0000003e 00000000 00000000 0000128c 2**0 CONTENTS, READONLY
|
10 ELFMAINY 0000003e 00000000 00000000 00001290 2**0 CONTENTS, READONLY
|
||||||
11 ELFMAINZ 00000184 00000000 00000000 000012cc 2**2 CONTENTS, RELOC, READONLY
|
11 ELFMAINZ 00000184 00000000 00000000 000012d0 2**2 CONTENTS, RELOC, READONLY
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l ELFMAINX 00000000 .real_start_ofELFMAINX
|
00000000 l ELFMAINX 00000000 .real_start_ofELFMAINX
|
||||||
00000000 l d NRV2E 00000000 NRV2E
|
00000000 l d NRV2E 00000000 NRV2E
|
||||||
@@ -22,12 +22,12 @@ SYMBOL TABLE:
|
|||||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
|
||||||
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
||||||
00000000 l ELFMAINZ 00000000 .real_start_ofELFMAINZ
|
00000000 l ELFMAINZ 00000000 .real_start_ofELFMAINZ
|
||||||
00000000 l d ELFMAINX 00000000 ELFMAINX
|
00000000 l d ELFMAINX 00000000 ELFMAINX
|
||||||
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
||||||
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
||||||
|
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||||
00000000 l d ELFMAINY 00000000 ELFMAINY
|
00000000 l d ELFMAINY 00000000 ELFMAINY
|
||||||
00000000 g ELFMAINX 00000000 _start
|
00000000 g ELFMAINX 00000000 _start
|
||||||
00000000 g F NRV2E 0000013c ucl_nrv2e_decompress_8
|
00000000 g F NRV2E 0000013c ucl_nrv2e_decompress_8
|
||||||
@@ -112,7 +112,7 @@ OFFSET TYPE VALUE
|
|||||||
|
|
||||||
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000008 R_ARM_PC24 LZMA_DEC30
|
00000008 R_ARM_PC24 LZMA_ELF00
|
||||||
0000004c R_ARM_PC24 LZMA_ELF00
|
0000004c R_ARM_PC24 LZMA_ELF00
|
||||||
00000080 R_ARM_PC24 LZMA_ELF00
|
00000080 R_ARM_PC24 LZMA_ELF00
|
||||||
|
|
||||||
|
|||||||
+30
-30
@@ -8,44 +8,44 @@ Linker script and memory map
|
|||||||
|
|
||||||
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
|
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
|
||||||
|
|
||||||
.text 0x00000000001000bc 0xa10
|
.text 0x00000000001000bc 0xa1c
|
||||||
*(.text)
|
*(.text)
|
||||||
.text 0x00000000001000bc 0x244 tmp/arm64-linux.elf-fold.o
|
.text 0x00000000001000bc 0x268 tmp/arm64-linux.elf-fold.o
|
||||||
0x0000000000100234 my_bkpt
|
0x0000000000100258 my_bkpt
|
||||||
0x000000000010023c exit
|
0x0000000000100260 exit
|
||||||
0x0000000000100244 read
|
0x0000000000100268 read
|
||||||
0x0000000000100250 write
|
0x0000000000100274 write
|
||||||
0x000000000010025c close
|
0x0000000000100280 close
|
||||||
0x0000000000100268 getpid
|
0x000000000010028c getpid
|
||||||
0x0000000000100274 brk
|
0x0000000000100298 brk
|
||||||
0x0000000000100280 munmap
|
0x00000000001002a4 munmap
|
||||||
0x000000000010028c mprotect
|
0x00000000001002b0 mprotect
|
||||||
0x0000000000100298 mmap_privanon
|
0x00000000001002bc mmap_privanon
|
||||||
0x00000000001002a8 mmap
|
0x00000000001002cc mmap
|
||||||
0x00000000001002b4 unlink
|
0x00000000001002d8 unlink
|
||||||
0x00000000001002c8 readlink
|
0x00000000001002ec readlink
|
||||||
0x00000000001002d0 open
|
0x00000000001002f4 open
|
||||||
0x00000000001002ec __clear_cache
|
0x0000000000100310 __clear_cache
|
||||||
.text 0x0000000000100300 0x7cc tmp/arm64-linux.elf-main.o
|
.text 0x0000000000100324 0x7b4 tmp/arm64-linux.elf-main.o
|
||||||
0x0000000000100964 upx_main
|
0x0000000000100970 upx_main
|
||||||
*(.data)
|
*(.data)
|
||||||
.data 0x0000000000100acc 0x0 tmp/arm64-linux.elf-fold.o
|
.data 0x0000000000100ad8 0x0 tmp/arm64-linux.elf-fold.o
|
||||||
.data 0x0000000000100acc 0x0 tmp/arm64-linux.elf-main.o
|
.data 0x0000000000100ad8 0x0 tmp/arm64-linux.elf-main.o
|
||||||
|
|
||||||
.iplt 0x0000000000100acc 0x0
|
.iplt 0x0000000000100ad8 0x0
|
||||||
.iplt 0x0000000000100acc 0x0 tmp/arm64-linux.elf-fold.o
|
.iplt 0x0000000000100ad8 0x0 tmp/arm64-linux.elf-fold.o
|
||||||
|
|
||||||
.rela.dyn 0x0000000000100ad0 0x0
|
.rela.dyn 0x0000000000100ad8 0x0
|
||||||
.rela.iplt 0x0000000000100ad0 0x0 tmp/arm64-linux.elf-fold.o
|
.rela.iplt 0x0000000000100ad8 0x0 tmp/arm64-linux.elf-fold.o
|
||||||
|
|
||||||
.data
|
.data
|
||||||
LOAD tmp/arm64-linux.elf-fold.o
|
LOAD tmp/arm64-linux.elf-fold.o
|
||||||
LOAD tmp/arm64-linux.elf-main.o
|
LOAD tmp/arm64-linux.elf-main.o
|
||||||
OUTPUT(tmp/arm64-linux.elf-fold.bin elf64-littleaarch64)
|
OUTPUT(tmp/arm64-linux.elf-fold.bin elf64-littleaarch64)
|
||||||
|
|
||||||
.igot.plt 0x0000000000100ad0 0x0
|
.igot.plt 0x0000000000100ad8 0x0
|
||||||
.igot.plt 0x0000000000100ad0 0x0 tmp/arm64-linux.elf-fold.o
|
.igot.plt 0x0000000000100ad8 0x0 tmp/arm64-linux.elf-fold.o
|
||||||
|
|
||||||
.bss 0x0000000000100acc 0x0
|
.bss 0x0000000000100ad8 0x0
|
||||||
.bss 0x0000000000100acc 0x0 tmp/arm64-linux.elf-fold.o
|
.bss 0x0000000000100ad8 0x0 tmp/arm64-linux.elf-fold.o
|
||||||
.bss 0x0000000000100acc 0x0 tmp/arm64-linux.elf-main.o
|
.bss 0x0000000000100ad8 0x0 tmp/arm64-linux.elf-main.o
|
||||||
|
|||||||
+8
-8
@@ -8,12 +8,12 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||||||
3 NRV2E 0000012c 00000000 00000000 00000040 2**0 CONTENTS, RELOC, READONLY
|
3 NRV2E 0000012c 00000000 00000000 00000040 2**0 CONTENTS, RELOC, READONLY
|
||||||
4 NRV2D 00000118 00000000 00000000 0000016c 2**0 CONTENTS, RELOC, READONLY
|
4 NRV2D 00000118 00000000 00000000 0000016c 2**0 CONTENTS, RELOC, READONLY
|
||||||
5 NRV2B 000000dc 00000000 00000000 00000284 2**0 CONTENTS, RELOC, READONLY
|
5 NRV2B 000000dc 00000000 00000000 00000284 2**0 CONTENTS, RELOC, READONLY
|
||||||
6 LZMA_ELF00 000000a8 00000000 00000000 00000360 2**0 CONTENTS, RELOC, READONLY
|
6 LZMA_ELF00 000000ac 00000000 00000000 00000360 2**0 CONTENTS, RELOC, READONLY
|
||||||
7 LZMA_DEC20 00000938 00000000 00000000 00000408 2**0 CONTENTS, RELOC, READONLY
|
7 LZMA_DEC20 00000938 00000000 00000000 0000040c 2**0 CONTENTS, RELOC, READONLY
|
||||||
8 LZMA_DEC10 00000478 00000000 00000000 00000d40 2**0 CONTENTS, RELOC, READONLY
|
8 LZMA_DEC10 00000478 00000000 00000000 00000d44 2**0 CONTENTS, RELOC, READONLY
|
||||||
9 LZMA_DEC30 00000000 00000000 00000000 000011b8 2**0 CONTENTS, READONLY
|
9 LZMA_DEC30 00000000 00000000 00000000 000011bc 2**0 CONTENTS, READONLY
|
||||||
10 ELFMAINY 00000000 00000000 00000000 000011b8 2**0 CONTENTS, READONLY
|
10 ELFMAINY 00000000 00000000 00000000 000011bc 2**0 CONTENTS, READONLY
|
||||||
11 ELFMAINZ 000000f0 00000000 00000000 000011b8 2**2 CONTENTS, RELOC, READONLY
|
11 ELFMAINZ 000000f0 00000000 00000000 000011bc 2**2 CONTENTS, RELOC, READONLY
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l d NRV2E 00000000 NRV2E
|
00000000 l d NRV2E 00000000 NRV2E
|
||||||
00000000 l d NRV2D 00000000 NRV2D
|
00000000 l d NRV2D 00000000 NRV2D
|
||||||
@@ -21,11 +21,11 @@ SYMBOL TABLE:
|
|||||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
|
||||||
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
||||||
00000000 l d ELFMAINX 00000000 ELFMAINX
|
00000000 l d ELFMAINX 00000000 ELFMAINX
|
||||||
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
||||||
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
||||||
|
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||||
00000000 l d ELFMAINY 00000000 ELFMAINY
|
00000000 l d ELFMAINY 00000000 ELFMAINY
|
||||||
00000000 *UND* 00000000 MFLG
|
00000000 *UND* 00000000 MFLG
|
||||||
00000004 g ELFMAINX 00000000 _start
|
00000004 g ELFMAINX 00000000 _start
|
||||||
@@ -110,7 +110,7 @@ OFFSET TYPE VALUE
|
|||||||
|
|
||||||
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000008 R_ARM_PC24 LZMA_DEC30
|
00000008 R_ARM_PC24 LZMA_ELF00
|
||||||
0000004c R_ARM_PC24 LZMA_ELF00
|
0000004c R_ARM_PC24 LZMA_ELF00
|
||||||
00000080 R_ARM_PC24 LZMA_ELF00
|
00000080 R_ARM_PC24 LZMA_ELF00
|
||||||
|
|
||||||
|
|||||||
+7
-7
@@ -13,11 +13,11 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||||||
8 NRV2B 000000c4 00000000 00000000 000000ec 2**0 CONTENTS, RELOC, READONLY
|
8 NRV2B 000000c4 00000000 00000000 000000ec 2**0 CONTENTS, RELOC, READONLY
|
||||||
9 NRV2D 00000100 00000000 00000000 000001b0 2**0 CONTENTS, RELOC, READONLY
|
9 NRV2D 00000100 00000000 00000000 000001b0 2**0 CONTENTS, RELOC, READONLY
|
||||||
10 NRV2E 00000114 00000000 00000000 000002b0 2**0 CONTENTS, RELOC, READONLY
|
10 NRV2E 00000114 00000000 00000000 000002b0 2**0 CONTENTS, RELOC, READONLY
|
||||||
11 LZMA_ELF00 0000008c 00000000 00000000 000003c4 2**0 CONTENTS, RELOC, READONLY
|
11 LZMA_ELF00 00000090 00000000 00000000 000003c4 2**0 CONTENTS, RELOC, READONLY
|
||||||
12 LZMA_DEC20 00000938 00000000 00000000 00000450 2**0 CONTENTS, RELOC, READONLY
|
12 LZMA_DEC20 00000938 00000000 00000000 00000454 2**0 CONTENTS, RELOC, READONLY
|
||||||
13 LZMA_DEC10 00000478 00000000 00000000 00000d88 2**0 CONTENTS, RELOC, READONLY
|
13 LZMA_DEC10 00000478 00000000 00000000 00000d8c 2**0 CONTENTS, RELOC, READONLY
|
||||||
14 LZMA_DEC30 00000000 00000000 00000000 00001200 2**0 CONTENTS, READONLY
|
14 LZMA_DEC30 00000000 00000000 00000000 00001204 2**0 CONTENTS, READONLY
|
||||||
15 UPX1HEAD 00000020 00000000 00000000 00001200 2**0 CONTENTS, READONLY
|
15 UPX1HEAD 00000020 00000000 00000000 00001204 2**0 CONTENTS, READONLY
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l d LINUX000 00000000 LINUX000
|
00000000 l d LINUX000 00000000 LINUX000
|
||||||
00000000 l d ctok32.00 00000000 ctok32.00
|
00000000 l d ctok32.00 00000000 ctok32.00
|
||||||
@@ -29,11 +29,11 @@ SYMBOL TABLE:
|
|||||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
|
||||||
00000000 l d LINUX010 00000000 LINUX010
|
00000000 l d LINUX010 00000000 LINUX010
|
||||||
00000000 l d LINUX020 00000000 LINUX020
|
00000000 l d LINUX020 00000000 LINUX020
|
||||||
00000000 l d ctok32.50 00000000 ctok32.50
|
00000000 l d ctok32.50 00000000 ctok32.50
|
||||||
00000000 l d ctok32.51 00000000 ctok32.51
|
00000000 l d ctok32.51 00000000 ctok32.51
|
||||||
|
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||||
00000000 l d UPX1HEAD 00000000 UPX1HEAD
|
00000000 l d UPX1HEAD 00000000 UPX1HEAD
|
||||||
00000000 *UND* 00000000 METHOD
|
00000000 *UND* 00000000 METHOD
|
||||||
00000000 *UND* 00000000 COMPRESSED_LENGTH
|
00000000 *UND* 00000000 COMPRESSED_LENGTH
|
||||||
@@ -133,7 +133,7 @@ OFFSET TYPE VALUE
|
|||||||
|
|
||||||
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000008 R_ARM_PC24 LZMA_DEC30
|
00000008 R_ARM_PC24 LZMA_ELF00
|
||||||
0000004c R_ARM_PC24 LZMA_ELF00
|
0000004c R_ARM_PC24 LZMA_ELF00
|
||||||
00000080 R_ARM_PC24 LZMA_ELF00
|
00000080 R_ARM_PC24 LZMA_ELF00
|
||||||
|
|
||||||
|
|||||||
+30
-30
@@ -9,7 +9,7 @@ Linker script and memory map
|
|||||||
TARGET(elf64-powerpc)
|
TARGET(elf64-powerpc)
|
||||||
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
|
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
|
||||||
|
|
||||||
.text 0x00000000001000bc 0xbbc
|
.text 0x00000000001000bc 0xbc4
|
||||||
*(.text)
|
*(.text)
|
||||||
.text 0x00000000001000bc 0x328 tmp/powerpc64-linux.elf-fold.o
|
.text 0x00000000001000bc 0x328 tmp/powerpc64-linux.elf-fold.o
|
||||||
0x00000000001000bc get_page_mask
|
0x00000000001000bc get_page_mask
|
||||||
@@ -23,47 +23,47 @@ TARGET(elf64-powerpc)
|
|||||||
0x00000000001003cc mprotect
|
0x00000000001003cc mprotect
|
||||||
0x00000000001003d4 munmap
|
0x00000000001003d4 munmap
|
||||||
0x00000000001003dc my_bkpt
|
0x00000000001003dc my_bkpt
|
||||||
.text 0x00000000001003e4 0x894 tmp/powerpc64-linux.elf-main.o
|
.text 0x00000000001003e4 0x89c tmp/powerpc64-linux.elf-main.o
|
||||||
*(.data)
|
*(.data)
|
||||||
.data 0x0000000000100c78 0x0 tmp/powerpc64-linux.elf-fold.o
|
.data 0x0000000000100c80 0x0 tmp/powerpc64-linux.elf-fold.o
|
||||||
.data 0x0000000000100c78 0x0 tmp/powerpc64-linux.elf-main.o
|
.data 0x0000000000100c80 0x0 tmp/powerpc64-linux.elf-main.o
|
||||||
|
|
||||||
.sfpr 0x0000000000100c78 0xa4
|
.sfpr 0x0000000000100c80 0xa4
|
||||||
.sfpr 0x0000000000100c78 0xa4 linker stubs
|
.sfpr 0x0000000000100c80 0xa4 linker stubs
|
||||||
0x0000000000100c78 _savegpr0_14
|
0x0000000000100c80 _savegpr0_14
|
||||||
0x0000000000100ca0 _savegpr0_24
|
0x0000000000100ca8 _savegpr0_24
|
||||||
0x0000000000100cb0 _savegpr0_28
|
0x0000000000100cb8 _savegpr0_28
|
||||||
0x0000000000100cc8 _restgpr0_14
|
0x0000000000100cd0 _restgpr0_14
|
||||||
0x0000000000100cf0 _restgpr0_24
|
0x0000000000100cf8 _restgpr0_24
|
||||||
0x0000000000100d00 _restgpr0_28
|
0x0000000000100d08 _restgpr0_28
|
||||||
|
|
||||||
.glink 0x0000000000100d20 0x0
|
.glink 0x0000000000100d28 0x0
|
||||||
.glink 0x0000000000100d20 0x0 linker stubs
|
.glink 0x0000000000100d28 0x0 linker stubs
|
||||||
|
|
||||||
.eh_frame 0x0000000000100d1c 0x0
|
.eh_frame 0x0000000000100d24 0x0
|
||||||
.eh_frame 0x0000000000100d1c 0x0 linker stubs
|
.eh_frame 0x0000000000100d24 0x0 linker stubs
|
||||||
|
|
||||||
.rela.dyn 0x0000000000100d20 0x0
|
.rela.dyn 0x0000000000100d28 0x0
|
||||||
.rela.iplt 0x0000000000100d20 0x0 linker stubs
|
.rela.iplt 0x0000000000100d28 0x0 linker stubs
|
||||||
|
|
||||||
.data
|
.data
|
||||||
LOAD tmp/powerpc64-linux.elf-fold.o
|
LOAD tmp/powerpc64-linux.elf-fold.o
|
||||||
LOAD tmp/powerpc64-linux.elf-main.o
|
LOAD tmp/powerpc64-linux.elf-main.o
|
||||||
OUTPUT(tmp/powerpc64-linux.elf-fold.bin elf64-powerpc)
|
OUTPUT(tmp/powerpc64-linux.elf-fold.bin elf64-powerpc)
|
||||||
|
|
||||||
.branch_lt 0x0000000000100d20 0x0
|
.branch_lt 0x0000000000100d28 0x0
|
||||||
.branch_lt 0x0000000000100d20 0x0 linker stubs
|
.branch_lt 0x0000000000100d28 0x0 linker stubs
|
||||||
|
|
||||||
.toc 0x0000000000100d20 0x0
|
.toc 0x0000000000100d28 0x0
|
||||||
.toc 0x0000000000100d20 0x0 tmp/powerpc64-linux.elf-main.o
|
.toc 0x0000000000100d28 0x0 tmp/powerpc64-linux.elf-main.o
|
||||||
|
|
||||||
.opd 0x0000000000100d20 0x58
|
.opd 0x0000000000100d28 0x58
|
||||||
.opd 0x0000000000100d20 0x58 tmp/powerpc64-linux.elf-main.o
|
.opd 0x0000000000100d28 0x58 tmp/powerpc64-linux.elf-main.o
|
||||||
0x0000000000100d60 upx_main
|
0x0000000000100d68 upx_main
|
||||||
|
|
||||||
.iplt 0x0000000000100d78 0x0
|
.iplt 0x0000000000100d80 0x0
|
||||||
.iplt 0x0000000000100d78 0x0 linker stubs
|
.iplt 0x0000000000100d80 0x0 linker stubs
|
||||||
|
|
||||||
.bss 0x0000000000100d78 0x0
|
.bss 0x0000000000100d80 0x0
|
||||||
.bss 0x0000000000100d78 0x0 tmp/powerpc64-linux.elf-fold.o
|
.bss 0x0000000000100d80 0x0 tmp/powerpc64-linux.elf-fold.o
|
||||||
.bss 0x0000000000100d78 0x0 tmp/powerpc64-linux.elf-main.o
|
.bss 0x0000000000100d80 0x0 tmp/powerpc64-linux.elf-main.o
|
||||||
|
|||||||
+30
-30
@@ -9,7 +9,7 @@ Linker script and memory map
|
|||||||
TARGET(elf64-powerpcle)
|
TARGET(elf64-powerpcle)
|
||||||
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
|
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
|
||||||
|
|
||||||
.text 0x00000000001000bc 0xbb8
|
.text 0x00000000001000bc 0xbc0
|
||||||
*(.text)
|
*(.text)
|
||||||
.text 0x00000000001000bc 0x328 tmp/powerpc64le-linux.elf-fold.o
|
.text 0x00000000001000bc 0x328 tmp/powerpc64le-linux.elf-fold.o
|
||||||
0x00000000001000bc get_page_mask
|
0x00000000001000bc get_page_mask
|
||||||
@@ -23,47 +23,47 @@ TARGET(elf64-powerpcle)
|
|||||||
0x00000000001003cc mprotect
|
0x00000000001003cc mprotect
|
||||||
0x00000000001003d4 munmap
|
0x00000000001003d4 munmap
|
||||||
0x00000000001003dc my_bkpt
|
0x00000000001003dc my_bkpt
|
||||||
.text 0x00000000001003e4 0x890 tmp/powerpc64le-linux.elf-main.o
|
.text 0x00000000001003e4 0x898 tmp/powerpc64le-linux.elf-main.o
|
||||||
*(.data)
|
*(.data)
|
||||||
.data 0x0000000000100c74 0x0 tmp/powerpc64le-linux.elf-fold.o
|
.data 0x0000000000100c7c 0x0 tmp/powerpc64le-linux.elf-fold.o
|
||||||
.data 0x0000000000100c74 0x0 tmp/powerpc64le-linux.elf-main.o
|
.data 0x0000000000100c7c 0x0 tmp/powerpc64le-linux.elf-main.o
|
||||||
|
|
||||||
.sfpr 0x0000000000100c74 0xa4
|
.sfpr 0x0000000000100c7c 0xa4
|
||||||
.sfpr 0x0000000000100c74 0xa4 linker stubs
|
.sfpr 0x0000000000100c7c 0xa4 linker stubs
|
||||||
0x0000000000100c74 _savegpr0_14
|
0x0000000000100c7c _savegpr0_14
|
||||||
0x0000000000100c9c _savegpr0_24
|
0x0000000000100ca4 _savegpr0_24
|
||||||
0x0000000000100cac _savegpr0_28
|
0x0000000000100cb4 _savegpr0_28
|
||||||
0x0000000000100cc4 _restgpr0_14
|
0x0000000000100ccc _restgpr0_14
|
||||||
0x0000000000100cec _restgpr0_24
|
0x0000000000100cf4 _restgpr0_24
|
||||||
0x0000000000100cfc _restgpr0_28
|
0x0000000000100d04 _restgpr0_28
|
||||||
|
|
||||||
.glink 0x0000000000100d18 0x0
|
.glink 0x0000000000100d20 0x0
|
||||||
.glink 0x0000000000100d18 0x0 linker stubs
|
.glink 0x0000000000100d20 0x0 linker stubs
|
||||||
|
|
||||||
.eh_frame 0x0000000000100d18 0x0
|
.eh_frame 0x0000000000100d20 0x0
|
||||||
.eh_frame 0x0000000000100d18 0x0 linker stubs
|
.eh_frame 0x0000000000100d20 0x0 linker stubs
|
||||||
|
|
||||||
.rela.dyn 0x0000000000100d18 0x0
|
.rela.dyn 0x0000000000100d20 0x0
|
||||||
.rela.iplt 0x0000000000100d18 0x0 linker stubs
|
.rela.iplt 0x0000000000100d20 0x0 linker stubs
|
||||||
|
|
||||||
.data
|
.data
|
||||||
LOAD tmp/powerpc64le-linux.elf-fold.o
|
LOAD tmp/powerpc64le-linux.elf-fold.o
|
||||||
LOAD tmp/powerpc64le-linux.elf-main.o
|
LOAD tmp/powerpc64le-linux.elf-main.o
|
||||||
OUTPUT(tmp/powerpc64le-linux.elf-fold.bin elf64-powerpcle)
|
OUTPUT(tmp/powerpc64le-linux.elf-fold.bin elf64-powerpcle)
|
||||||
|
|
||||||
.branch_lt 0x0000000000100d18 0x0
|
.branch_lt 0x0000000000100d20 0x0
|
||||||
.branch_lt 0x0000000000100d18 0x0 linker stubs
|
.branch_lt 0x0000000000100d20 0x0 linker stubs
|
||||||
|
|
||||||
.toc 0x0000000000100d18 0x0
|
.toc 0x0000000000100d20 0x0
|
||||||
.toc 0x0000000000100d18 0x0 tmp/powerpc64le-linux.elf-main.o
|
.toc 0x0000000000100d20 0x0 tmp/powerpc64le-linux.elf-main.o
|
||||||
|
|
||||||
.opd 0x0000000000100d18 0x58
|
.opd 0x0000000000100d20 0x58
|
||||||
.opd 0x0000000000100d18 0x58 tmp/powerpc64le-linux.elf-main.o
|
.opd 0x0000000000100d20 0x58 tmp/powerpc64le-linux.elf-main.o
|
||||||
0x0000000000100d58 upx_main
|
0x0000000000100d60 upx_main
|
||||||
|
|
||||||
.iplt 0x0000000000100d70 0x0
|
.iplt 0x0000000000100d78 0x0
|
||||||
.iplt 0x0000000000100d70 0x0 linker stubs
|
.iplt 0x0000000000100d78 0x0 linker stubs
|
||||||
|
|
||||||
.bss 0x0000000000100d70 0x0
|
.bss 0x0000000000100d78 0x0
|
||||||
.bss 0x0000000000100d70 0x0 tmp/powerpc64le-linux.elf-fold.o
|
.bss 0x0000000000100d78 0x0 tmp/powerpc64le-linux.elf-fold.o
|
||||||
.bss 0x0000000000100d70 0x0 tmp/powerpc64le-linux.elf-main.o
|
.bss 0x0000000000100d78 0x0 tmp/powerpc64le-linux.elf-main.o
|
||||||
|
|||||||
+14
-2
@@ -29,14 +29,20 @@
|
|||||||
#ifndef UPX_BPTR_H__
|
#ifndef UPX_BPTR_H__
|
||||||
#define UPX_BPTR_H__ 1
|
#define UPX_BPTR_H__ 1
|
||||||
|
|
||||||
|
#if WITH_SPAN >= 2
|
||||||
|
#error "this file is deprecated, please use xspan.h instead"
|
||||||
|
#endif
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// BoundedPtr
|
// BoundedPtr
|
||||||
// (deprecated, use xspan.h instead)
|
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
class BoundedPtr {
|
class BoundedPtr {
|
||||||
public:
|
public:
|
||||||
|
typedef T element_type;
|
||||||
|
typedef typename std::add_pointer<T>::type pointer;
|
||||||
|
|
||||||
~BoundedPtr() {}
|
~BoundedPtr() {}
|
||||||
|
|
||||||
BoundedPtr(void *base, size_t size_in_bytes, T *ptr = nullptr)
|
BoundedPtr(void *base, size_t size_in_bytes, T *ptr = nullptr)
|
||||||
@@ -134,9 +140,15 @@ private:
|
|||||||
|
|
||||||
// raw_bytes overload
|
// raw_bytes overload
|
||||||
template <class T>
|
template <class T>
|
||||||
inline T *raw_bytes(const BoundedPtr<T> &a, size_t size_in_bytes) {
|
inline typename BoundedPtr<T>::pointer raw_bytes(const BoundedPtr<T> &a, size_t size_in_bytes) {
|
||||||
return a.raw_bytes(size_in_bytes);
|
return a.raw_bytes(size_in_bytes);
|
||||||
}
|
}
|
||||||
|
template <class T>
|
||||||
|
inline typename BoundedPtr<T>::pointer raw_index_bytes(const BoundedPtr<T> &a, size_t index,
|
||||||
|
size_t size_in_bytes) {
|
||||||
|
typedef typename BoundedPtr<T>::element_type element_type;
|
||||||
|
return raw_bytes(a, mem_size(sizeof(element_type), index, size_in_bytes)) + index;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* already included */
|
#endif /* already included */
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ int upx_doctest_check(int argc, char **argv) {
|
|||||||
#if defined(DOCTEST_CONFIG_DISABLE)
|
#if defined(DOCTEST_CONFIG_DISABLE)
|
||||||
UNUSED(argc);
|
UNUSED(argc);
|
||||||
UNUSED(argv);
|
UNUSED(argv);
|
||||||
|
return 0;
|
||||||
#else
|
#else
|
||||||
const char *e = getenv("UPX_DEBUG_DOCTEST_DISABLE");
|
const char *e = getenv("UPX_DEBUG_DOCTEST_DISABLE");
|
||||||
if (e && e[0] && strcmp(e, "0") != 0)
|
if (e && e[0] && strcmp(e, "0") != 0)
|
||||||
@@ -72,8 +73,8 @@ int upx_doctest_check(int argc, char **argv) {
|
|||||||
return 1;
|
return 1;
|
||||||
if (context.shouldExit())
|
if (context.shouldExit())
|
||||||
return 2;
|
return 2;
|
||||||
#endif // DOCTEST_CONFIG_DISABLE
|
|
||||||
return 0;
|
return 0;
|
||||||
|
#endif // DOCTEST_CONFIG_DISABLE
|
||||||
}
|
}
|
||||||
|
|
||||||
int upx_doctest_check() { return upx_doctest_check(0, nullptr); }
|
int upx_doctest_check() { return upx_doctest_check(0, nullptr); }
|
||||||
@@ -98,6 +99,9 @@ ACC_COMPILE_TIME_ASSERT_HEADER(bswap32(0x04030201) == 0x01020304)
|
|||||||
ACC_COMPILE_TIME_ASSERT_HEADER(bswap64(0x0807060504030201ull) == 0x0102030405060708ull)
|
ACC_COMPILE_TIME_ASSERT_HEADER(bswap64(0x0807060504030201ull) == 0x0102030405060708ull)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
ACC_COMPILE_TIME_ASSERT_HEADER(compile_time::string_len("") == 0)
|
||||||
|
ACC_COMPILE_TIME_ASSERT_HEADER(compile_time::string_len("a") == 1)
|
||||||
|
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER(compile_time::string_eq("", ""))
|
ACC_COMPILE_TIME_ASSERT_HEADER(compile_time::string_eq("", ""))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER(!compile_time::string_eq("a", ""))
|
ACC_COMPILE_TIME_ASSERT_HEADER(!compile_time::string_eq("a", ""))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER(!compile_time::string_eq("", "a"))
|
ACC_COMPILE_TIME_ASSERT_HEADER(!compile_time::string_eq("", "a"))
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ unsigned MemBuffer::getSizeForCompression(unsigned uncompressed_size, unsigned e
|
|||||||
return bytes;
|
return bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned MemBuffer::getSizeForUncompression(unsigned uncompressed_size, unsigned extra) {
|
unsigned MemBuffer::getSizeForDecompression(unsigned uncompressed_size, unsigned extra) {
|
||||||
size_t bytes = mem_size(1, uncompressed_size, extra); // check
|
size_t bytes = mem_size(1, uncompressed_size, extra); // check
|
||||||
return ACC_ICONV(unsigned, bytes);
|
return ACC_ICONV(unsigned, bytes);
|
||||||
}
|
}
|
||||||
@@ -132,8 +132,8 @@ void MemBuffer::allocForCompression(unsigned uncompressed_size, unsigned extra)
|
|||||||
alloc(size);
|
alloc(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MemBuffer::allocForUncompression(unsigned uncompressed_size, unsigned extra) {
|
void MemBuffer::allocForDecompression(unsigned uncompressed_size, unsigned extra) {
|
||||||
unsigned size = getSizeForUncompression(uncompressed_size, extra);
|
unsigned size = getSizeForDecompression(uncompressed_size, extra);
|
||||||
alloc(size);
|
alloc(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -78,11 +78,11 @@ public:
|
|||||||
~MemBuffer();
|
~MemBuffer();
|
||||||
|
|
||||||
static unsigned getSizeForCompression(unsigned uncompressed_size, unsigned extra = 0);
|
static unsigned getSizeForCompression(unsigned uncompressed_size, unsigned extra = 0);
|
||||||
static unsigned getSizeForUncompression(unsigned uncompressed_size, unsigned extra = 0);
|
static unsigned getSizeForDecompression(unsigned uncompressed_size, unsigned extra = 0);
|
||||||
|
|
||||||
void alloc(upx_uint64_t size);
|
void alloc(upx_uint64_t size);
|
||||||
void allocForCompression(unsigned uncompressed_size, unsigned extra = 0);
|
void allocForCompression(unsigned uncompressed_size, unsigned extra = 0);
|
||||||
void allocForUncompression(unsigned uncompressed_size, unsigned extra = 0);
|
void allocForDecompression(unsigned uncompressed_size, unsigned extra = 0);
|
||||||
|
|
||||||
void dealloc();
|
void dealloc();
|
||||||
void checkState() const;
|
void checkState() const;
|
||||||
@@ -128,6 +128,12 @@ inline typename MemBufferBase<T>::pointer raw_bytes(const MemBufferBase<T> &mbb,
|
|||||||
size_t size_in_bytes) {
|
size_t size_in_bytes) {
|
||||||
return mbb.raw_bytes(size_in_bytes);
|
return mbb.raw_bytes(size_in_bytes);
|
||||||
}
|
}
|
||||||
|
template <class T>
|
||||||
|
inline typename MemBufferBase<T>::pointer raw_index_bytes(const MemBufferBase<T> &mbb, size_t index,
|
||||||
|
size_t size_in_bytes) {
|
||||||
|
typedef typename MemBufferBase<T>::element_type element_type;
|
||||||
|
return raw_bytes(mbb, mem_size(sizeof(element_type), index, size_in_bytes)) + index;
|
||||||
|
}
|
||||||
|
|
||||||
// global operators
|
// global operators
|
||||||
// rewrite "n + membuffer" to "membuffer + n" so that this will get checked above
|
// rewrite "n + membuffer" to "membuffer + n" so that this will get checked above
|
||||||
|
|||||||
@@ -96,6 +96,15 @@ TEST_CASE("basic xspan usage") {
|
|||||||
CHECK(cs == bp);
|
CHECK(cs == bp);
|
||||||
CHECK(x0 == z0p);
|
CHECK(x0 == z0p);
|
||||||
CHECK(xp == z0s);
|
CHECK(xp == z0s);
|
||||||
|
|
||||||
|
CHECK(raw_bytes(c0, 4) == buf);
|
||||||
|
CHECK(raw_index_bytes(c0, 1, 3) == buf + 1);
|
||||||
|
CHECK(raw_bytes(cp, 4) == buf);
|
||||||
|
CHECK(raw_index_bytes(cp, 1, 3) == buf + 1);
|
||||||
|
CHECK(raw_bytes(cs, 4) == buf);
|
||||||
|
CHECK(raw_index_bytes(cs, 1, 3) == buf + 1);
|
||||||
|
CHECK_THROWS(raw_bytes(cs, 5));
|
||||||
|
CHECK_THROWS(raw_index_bytes(cs, 1, 4));
|
||||||
}
|
}
|
||||||
|
|
||||||
SUBCASE("SPAN_x_VAR") {
|
SUBCASE("SPAN_x_VAR") {
|
||||||
@@ -127,6 +136,15 @@ TEST_CASE("basic xspan usage") {
|
|||||||
CHECK(d0 == ds);
|
CHECK(d0 == ds);
|
||||||
CHECK(x0 == z0p);
|
CHECK(x0 == z0p);
|
||||||
CHECK(xp == z0s);
|
CHECK(xp == z0s);
|
||||||
|
|
||||||
|
CHECK(raw_bytes(c0, 4) == buf);
|
||||||
|
CHECK(raw_index_bytes(c0, 1, 3) == buf + 1);
|
||||||
|
CHECK(raw_bytes(cp, 4) == buf);
|
||||||
|
CHECK(raw_index_bytes(cp, 1, 3) == buf + 1);
|
||||||
|
CHECK(raw_bytes(cs, 4) == buf);
|
||||||
|
CHECK(raw_index_bytes(cs, 1, 3) == buf + 1);
|
||||||
|
CHECK_THROWS(raw_bytes(cs, 5));
|
||||||
|
CHECK_THROWS(raw_index_bytes(cs, 1, 4));
|
||||||
}
|
}
|
||||||
|
|
||||||
SUBCASE("xspan in class") {
|
SUBCASE("xspan in class") {
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ using SPAN_NAMESPACE_NAME::PtrOrSpanOrNull;
|
|||||||
using SPAN_NAMESPACE_NAME::Span;
|
using SPAN_NAMESPACE_NAME::Span;
|
||||||
// util
|
// util
|
||||||
using SPAN_NAMESPACE_NAME::raw_bytes; // overloaded for all classes
|
using SPAN_NAMESPACE_NAME::raw_bytes; // overloaded for all classes
|
||||||
|
using SPAN_NAMESPACE_NAME::raw_index_bytes; // overloaded for all classes
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // WITH_SPAN
|
#endif // WITH_SPAN
|
||||||
|
|||||||
@@ -110,6 +110,11 @@ SPAN_FWD_TU(void *) memmove(const C<T> &a, const E<U> &b, size_t n) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
inline void *memset(const C<T> &a, int c, size_t n) {
|
||||||
|
return memset(a.raw_bytes(n), c, n);
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// overloads for UPX extras
|
// overloads for UPX extras
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
+20
-30
@@ -143,34 +143,34 @@ struct Span_is_convertible
|
|||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
// char => char
|
// char => char
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<char, char>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<char, char>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<char, const char>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<char, const char>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<const char, const char>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<const char, const char>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<const char, char>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<const char, char>::value))
|
||||||
|
|
||||||
// void => void
|
// void => void
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<void, void>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<void, void>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<void, const void>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<void, const void>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<const void, const void>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<const void, const void>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<const void, void>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<const void, void>::value))
|
||||||
|
|
||||||
// char => void
|
// char => void
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<char, void>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<char, void>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<char, const void>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<char, const void>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<const char, const void>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((Span_is_convertible<const char, const void>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<const char, void>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<const char, void>::value))
|
||||||
|
|
||||||
// void => char
|
// void => char
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<void, char>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<void, char>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<void, const char>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<void, const char>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<const void, const char>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<const void, const char>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<const void, char>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<const void, char>::value))
|
||||||
|
|
||||||
// char => int
|
// char => int
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER(!(Span_is_convertible<char, int>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER(!(Span_is_convertible<char, int>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER(!(Span_is_convertible<char, const int>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER(!(Span_is_convertible<char, const int>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER(!(Span_is_convertible<const char, const int>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER(!(Span_is_convertible<const char, const int>::value))
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<const char, int>::value));
|
ACC_COMPILE_TIME_ASSERT_HEADER((!Span_is_convertible<const char, int>::value))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
@@ -191,16 +191,6 @@ struct Span;
|
|||||||
template <class T>
|
template <class T>
|
||||||
struct Ptr;
|
struct Ptr;
|
||||||
|
|
||||||
template <class T>
|
|
||||||
inline typename PtrOrSpanOrNull<T>::pointer raw_bytes(const PtrOrSpanOrNull<T> &a,
|
|
||||||
size_t size_in_bytes);
|
|
||||||
template <class T>
|
|
||||||
inline typename PtrOrSpan<T>::pointer raw_bytes(const PtrOrSpan<T> &a, size_t size_in_bytes);
|
|
||||||
template <class T>
|
|
||||||
inline typename Span<T>::pointer raw_bytes(const Span<T> &a, size_t size_in_bytes);
|
|
||||||
template <class T>
|
|
||||||
inline typename Ptr<T>::pointer raw_bytes(const Ptr<T> &a, size_t size_in_bytes);
|
|
||||||
|
|
||||||
class SpanInternalDummyArg; // not implemented
|
class SpanInternalDummyArg; // not implemented
|
||||||
|
|
||||||
SPAN_NAMESPACE_END
|
SPAN_NAMESPACE_END
|
||||||
|
|||||||
@@ -196,6 +196,12 @@ template <class T>
|
|||||||
inline typename Ptr<T>::pointer raw_bytes(const Ptr<T> &a, size_t size_in_bytes) {
|
inline typename Ptr<T>::pointer raw_bytes(const Ptr<T> &a, size_t size_in_bytes) {
|
||||||
return a.raw_bytes(size_in_bytes);
|
return a.raw_bytes(size_in_bytes);
|
||||||
}
|
}
|
||||||
|
template <class T>
|
||||||
|
inline typename Ptr<T>::pointer raw_index_bytes(const Ptr<T> &a, size_t index,
|
||||||
|
size_t size_in_bytes) {
|
||||||
|
typedef typename Ptr<T>::element_type element_type;
|
||||||
|
return raw_bytes(a, mem_size(sizeof(element_type), index, size_in_bytes)) + index;
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -96,6 +96,12 @@ inline typename PtrOrSpanOrNull<T>::pointer raw_bytes(const PtrOrSpanOrNull<T> &
|
|||||||
size_t size_in_bytes) {
|
size_t size_in_bytes) {
|
||||||
return a.raw_bytes(size_in_bytes);
|
return a.raw_bytes(size_in_bytes);
|
||||||
}
|
}
|
||||||
|
template <class T>
|
||||||
|
inline typename PtrOrSpanOrNull<T>::pointer raw_index_bytes(const PtrOrSpanOrNull<T> &a,
|
||||||
|
size_t index, size_t size_in_bytes) {
|
||||||
|
typedef typename PtrOrSpanOrNull<T>::element_type element_type;
|
||||||
|
return raw_bytes(a, mem_size(sizeof(element_type), index, size_in_bytes)) + index;
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -122,6 +122,12 @@ template <class T>
|
|||||||
inline typename PtrOrSpan<T>::pointer raw_bytes(const PtrOrSpan<T> &a, size_t size_in_bytes) {
|
inline typename PtrOrSpan<T>::pointer raw_bytes(const PtrOrSpan<T> &a, size_t size_in_bytes) {
|
||||||
return a.raw_bytes(size_in_bytes);
|
return a.raw_bytes(size_in_bytes);
|
||||||
}
|
}
|
||||||
|
template <class T>
|
||||||
|
inline typename PtrOrSpan<T>::pointer raw_index_bytes(const PtrOrSpan<T> &a, size_t index,
|
||||||
|
size_t size_in_bytes) {
|
||||||
|
typedef typename PtrOrSpan<T>::element_type element_type;
|
||||||
|
return raw_bytes(a, mem_size(sizeof(element_type), index, size_in_bytes)) + index;
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -122,6 +122,12 @@ template <class T>
|
|||||||
inline typename Span<T>::pointer raw_bytes(const Span<T> &a, size_t size_in_bytes) {
|
inline typename Span<T>::pointer raw_bytes(const Span<T> &a, size_t size_in_bytes) {
|
||||||
return a.raw_bytes(size_in_bytes);
|
return a.raw_bytes(size_in_bytes);
|
||||||
}
|
}
|
||||||
|
template <class T>
|
||||||
|
inline typename Span<T>::pointer raw_index_bytes(const Span<T> &a, size_t index,
|
||||||
|
size_t size_in_bytes) {
|
||||||
|
typedef typename Span<T>::element_type element_type;
|
||||||
|
return raw_bytes(a, mem_size(sizeof(element_type), index, size_in_bytes)) + index;
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
//
|
//
|
||||||
|
|||||||
+5
-5
@@ -1,8 +1,8 @@
|
|||||||
#define UPX_VERSION_HEX 0x036300 /* 03.99.00 */
|
#define UPX_VERSION_HEX 0x040001 /* 04.00.01 */
|
||||||
#define UPX_VERSION_STRING "3.99"
|
#define UPX_VERSION_STRING "4.0.1"
|
||||||
#define UPX_VERSION_STRING4 "3.99"
|
#define UPX_VERSION_STRING4 "4.01"
|
||||||
#define UPX_VERSION_DATE "Oct 27th 2022"
|
#define UPX_VERSION_DATE "Nov 16th 2022"
|
||||||
#define UPX_VERSION_DATE_ISO "2022-10-27"
|
#define UPX_VERSION_DATE_ISO "2022-11-16"
|
||||||
#define UPX_VERSION_YEAR "2022"
|
#define UPX_VERSION_YEAR "2022"
|
||||||
|
|
||||||
/* vim:set ts=4 sw=4 et: */
|
/* vim:set ts=4 sw=4 et: */
|
||||||
|
|||||||
+9
-7
@@ -68,6 +68,8 @@ void do_one_file(const char *iname, char *oname) {
|
|||||||
else
|
else
|
||||||
throwIOException(iname, errno);
|
throwIOException(iname, errno);
|
||||||
}
|
}
|
||||||
|
if (S_ISDIR(st.st_mode))
|
||||||
|
throwIOException("is a directory -- skipped");
|
||||||
if (!(S_ISREG(st.st_mode)))
|
if (!(S_ISREG(st.st_mode)))
|
||||||
throwIOException("not a regular file -- skipped");
|
throwIOException("not a regular file -- skipped");
|
||||||
#if defined(__unix__)
|
#if defined(__unix__)
|
||||||
@@ -114,13 +116,9 @@ void do_one_file(const char *iname, char *oname) {
|
|||||||
throwIOException("data not written to a terminal; Use '-f' to force.");
|
throwIOException("data not written to a terminal; Use '-f' to force.");
|
||||||
} else {
|
} else {
|
||||||
char tname[ACC_FN_PATH_MAX + 1];
|
char tname[ACC_FN_PATH_MAX + 1];
|
||||||
if (opt->output_name)
|
if (opt->output_name) {
|
||||||
strcpy(tname, opt->output_name);
|
strcpy(tname, opt->output_name);
|
||||||
else {
|
if (opt->force_overwrite || opt->force >= 2) {
|
||||||
if (!maketempname(tname, sizeof(tname), iname, ".upx"))
|
|
||||||
throwIOException("could not create a temporary file name");
|
|
||||||
}
|
|
||||||
if (opt->force >= 2) {
|
|
||||||
#if (HAVE_CHMOD)
|
#if (HAVE_CHMOD)
|
||||||
r = chmod(tname, 0777);
|
r = chmod(tname, 0777);
|
||||||
IGNORE_ERROR(r);
|
IGNORE_ERROR(r);
|
||||||
@@ -128,8 +126,12 @@ void do_one_file(const char *iname, char *oname) {
|
|||||||
r = unlink(tname);
|
r = unlink(tname);
|
||||||
IGNORE_ERROR(r);
|
IGNORE_ERROR(r);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (!maketempname(tname, sizeof(tname), iname, ".upx"))
|
||||||
|
throwIOException("could not create a temporary file name");
|
||||||
|
}
|
||||||
int flags = O_CREAT | O_WRONLY | O_BINARY;
|
int flags = O_CREAT | O_WRONLY | O_BINARY;
|
||||||
if (opt->force)
|
if (opt->force_overwrite || opt->force)
|
||||||
flags |= O_TRUNC;
|
flags |= O_TRUNC;
|
||||||
else
|
else
|
||||||
flags |= O_EXCL;
|
flags |= O_EXCL;
|
||||||
|
|||||||
Vendored
+1
-1
Submodule vendor/doctest updated: a2b8de69f6...666e648b68
Vendored
+1
-1
Submodule vendor/lzma-sdk updated: a0fe54d99f...9ebf8f468c
Vendored
+1
-1
Submodule vendor/ucl updated: 7c71ac7c54...4b58d59219
Vendored
+1
-1
Submodule vendor/zlib updated: 0e4b7f0c73...2a5b338eb1
Reference in New Issue
Block a user