Compare commits
504 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d7ba31cab8 | |||
| 342b1b7d6c | |||
| 936013f60c | |||
| fdf2eddc73 | |||
| 4409753014 | |||
| 9172ae3d19 | |||
| e2f60adc95 | |||
| 1bb93d4fce | |||
| eb90eab632 | |||
| 0f4975fd7f | |||
| b5b1f06a11 | |||
| 86f8eb0930 | |||
| 91ad0e7572 | |||
| b034ee98fe | |||
| ded07f8781 | |||
| 849bdd87e1 | |||
| 643e48efd7 | |||
| 92f072cf70 | |||
| 95bf2e2e41 | |||
| 6a6c6d84eb | |||
| 08a689c81e | |||
| d1174385ef | |||
| cb5f590e10 | |||
| 5ed9c66ed9 | |||
| b8f52d14f4 | |||
| 5d295c24f0 | |||
| 8be9da8280 | |||
| 819c33fee2 | |||
| 75a2cc4ecb | |||
| e2833cf303 | |||
| 801de73dbe | |||
| 6a53c0b3d4 | |||
| 58b122d97d | |||
| 276b748aa6 | |||
| 23570097cf | |||
| 62a07df45e | |||
| 593a69ce25 | |||
| c33603e324 | |||
| 29fa358077 | |||
| 49766388bc | |||
| f23267bddd | |||
| 4484acf9d6 | |||
| 47ddace96a | |||
| 8aadbcd786 | |||
| 517bc9db0b | |||
| 16bfa7b846 | |||
| 570b2d0e88 | |||
| 2653a0749a | |||
| 3de0008543 | |||
| d4e2d7e8a8 | |||
| a9c08c6f52 | |||
| c2aa5c35f7 | |||
| 423f1a8758 | |||
| cc5f684e33 | |||
| b6646d319a | |||
| 3667fa4e44 | |||
| d1c80154f6 | |||
| 3c2bfc742e | |||
| d60fef753f | |||
| 70ed2d0d03 | |||
| 716d203a78 | |||
| 9719a7dd56 | |||
| c097233bf3 | |||
| 69a583281f | |||
| 8e90c9af2b | |||
| a784284b7f | |||
| 0509edf08d | |||
| 7ca20f424f | |||
| b74d51c2a8 | |||
| 58061cd121 | |||
| b8f6be5389 | |||
| 7c766b3313 | |||
| 91b81b587b | |||
| 780a4347b8 | |||
| 606ad08dd1 | |||
| 75c31dff1d | |||
| 473b90419f | |||
| f88b85e126 | |||
| b122f8e9d0 | |||
| cb8b1595a1 | |||
| 1bee919276 | |||
| 78b1da5c00 | |||
| bb8239ccda | |||
| 2a594ad0a7 | |||
| b05073550c | |||
| 37d6a34e58 | |||
| 4f0cba9bb6 | |||
| 4d1c754af9 | |||
| c1cfde21d7 | |||
| bb1f9cdecd | |||
| b259b0ca28 | |||
| 0051dfc84f | |||
| 9f294e6ce5 | |||
| 153ea8be03 | |||
| f3f7f97f8d | |||
| 9bb6854e64 | |||
| 4bba1e6cb7 | |||
| 597e8fe407 | |||
| 556c541ffb | |||
| 5963f18f7c | |||
| 0dac6b7be3 | |||
| 296ede780b | |||
| faaa19331a | |||
| 88cb5886f3 | |||
| 2fcc3f86c0 | |||
| 9362fde9eb | |||
| 56f4d781c1 | |||
| 7a3637ff5a | |||
| 2923c0968e | |||
| 98cfe99d65 | |||
| bdd97fe0b2 | |||
| 6b500bc83b | |||
| 92a12a2ec1 | |||
| 04d79040f9 | |||
| 3201ddc680 | |||
| 2f06de54c5 | |||
| 6489ec9bba | |||
| 1a5ba22fe7 | |||
| 8f9713ed53 | |||
| 90eb68b3b9 | |||
| 95fcbcb4f2 | |||
| b97688d119 | |||
| 5ea3627cab | |||
| d9288213ec | |||
| 614c86fb7d | |||
| 9f651ee40f | |||
| 774c8c3fd4 | |||
| b711d2f750 | |||
| 8a793d5942 | |||
| 99f52c60ed | |||
| 2c2e108301 | |||
| 563165e6ae | |||
| f1a31b4793 | |||
| 5e9b6bd69d | |||
| 9b990c4eae | |||
| 7a625a449a | |||
| c2b62359d5 | |||
| 6722e8972e | |||
| fefe7a3452 | |||
| 90a1322929 | |||
| d698eb69e2 | |||
| 0ef00e9b82 | |||
| 95cedb6640 | |||
| d736da4208 | |||
| be83788666 | |||
| 5a28a51abc | |||
| 8a84df752c | |||
| 85f53b210d | |||
| 5d13c6cd01 | |||
| 98a0d381e9 | |||
| e1d20fd0b5 | |||
| d1035ecd8f | |||
| 0e651facdd | |||
| 9fdddfc332 | |||
| 7d2913709c | |||
| 3623199e8d | |||
| e4b23f7a47 | |||
| f056ecdcd5 | |||
| 857a03a074 | |||
| a34deee4f5 | |||
| fc9c8ae482 | |||
| 08c63f06eb | |||
| bbff510ef1 | |||
| f747435952 | |||
| e6edad8f46 | |||
| 05e44b9644 | |||
| 16bb7ab841 | |||
| 9248f02557 | |||
| 9485a56af1 | |||
| 021c8db58a | |||
| 8ab180edf8 | |||
| ab35b685d4 | |||
| 86745721ee | |||
| c34fe09a79 | |||
| 1fa9ff2c05 | |||
| e8ef0cf63f | |||
| 8c84efb8fb | |||
| f3a7620ae8 | |||
| c7969ed5a5 | |||
| 900926c0ed | |||
| df94f4288a | |||
| 969efe687d | |||
| ee3f1292d0 | |||
| cacb239040 | |||
| 28d1789783 | |||
| 633eb98e34 | |||
| 4854c03096 | |||
| e853119c77 | |||
| 161a58bafb | |||
| f5fd94e815 | |||
| edde6210f1 | |||
| 507e19945e | |||
| 4a35bf32ea | |||
| e04bf9e4bc | |||
| c384d224c0 | |||
| 35427f998e | |||
| 1174da2bc3 | |||
| 11e8a47030 | |||
| 8c4e9bcf0d | |||
| 9dfd624901 | |||
| 79e65503a9 | |||
| 59f18b9d9f | |||
| fb3699fb89 | |||
| 9d2d59b5d2 | |||
| aefb2fa3c3 | |||
| e8aa80f904 | |||
| 990988f920 | |||
| 576d9a4e7e | |||
| 1d462ee424 | |||
| c9b09555c4 | |||
| 860b5bf967 | |||
| 5063480a38 | |||
| 3400ae9dbe | |||
| 3385264eb2 | |||
| 34646f1c6a | |||
| 50aa63a5a0 | |||
| 64557bee43 | |||
| 7c21c4513e | |||
| c6d6378005 | |||
| 4f6979967d | |||
| e633c51b50 | |||
| 143f0accef | |||
| b413f3da26 | |||
| 6eafa552bb | |||
| 7a0514d9b4 | |||
| 7e7565299e | |||
| ed34a089c6 | |||
| d14a2c5282 | |||
| f014406b65 | |||
| 58771ecca6 | |||
| 5d9dcb634b | |||
| 19c2c1edcf | |||
| 0430e7931e | |||
| bb8e607442 | |||
| e61ada944d | |||
| 46730315e3 | |||
| 4869142034 | |||
| 8e42e17bbf | |||
| 38c8b84a26 | |||
| c652626a37 | |||
| 06f6e47ebf | |||
| 403b180b1d | |||
| ee008acfbd | |||
| d149092ac0 | |||
| eafa136c69 | |||
| 402c885987 | |||
| 5e7e0508b9 | |||
| ff1d5fb794 | |||
| ad3f63b5c4 | |||
| a3e51e6dee | |||
| c1b9c79f54 | |||
| e0bc040b0a | |||
| 85eb4c7537 | |||
| 1f929d47d0 | |||
| 608662d73b | |||
| 7841d23e77 | |||
| b72dda4ada | |||
| c59c8a1ea2 | |||
| 1522293be0 | |||
| b37bc99330 | |||
| 7f905724b1 | |||
| 2bf5bb1625 | |||
| 08d3376740 | |||
| 7bace76176 | |||
| ef336dbcc6 | |||
| ca7217e717 | |||
| 3931cb7871 | |||
| 9e8de4abe5 | |||
| 26be845563 | |||
| 2f11a629fa | |||
| a295437e11 | |||
| 04597fb804 | |||
| f2f002409b | |||
| 509de877ca | |||
| 63aea4a7dc | |||
| 6470c748db | |||
| 25a6429e6a | |||
| 4fa1c2a97e | |||
| 9ad39d77cc | |||
| 92527126a8 | |||
| 02b4a4c974 | |||
| ede570be21 | |||
| 08627e9df5 | |||
| 6d9f3adc86 | |||
| 96433b4e39 | |||
| f4947cc2ae | |||
| 7b554d4f72 | |||
| 5b54544438 | |||
| ef78d23494 | |||
| ef8a7f330d | |||
| b72e0f3060 | |||
| 2a0bab938b | |||
| cd637629c4 | |||
| b9adfd801d | |||
| 69355514c9 | |||
| 33dc947c21 | |||
| 6de021d8d8 | |||
| 9be86621bf | |||
| a7a0876298 | |||
| 31b42345c3 | |||
| 1b172e729e | |||
| 3bf387a2d4 | |||
| 9f20bbb046 | |||
| 82af555974 | |||
| 50638b5213 | |||
| 650df95b72 | |||
| b2115a4162 | |||
| d67bf16a08 | |||
| a4c9b64224 | |||
| 8f572e5fe6 | |||
| e58873044b | |||
| 8ada92a69f | |||
| 3c8ed5c000 | |||
| c127d5b64a | |||
| 2d3bd0809a | |||
| eef955a9dd | |||
| e59ce39dc6 | |||
| 62815f5c3c | |||
| f496010273 | |||
| 143c4e3322 | |||
| e7f1e99a5e | |||
| 140a031515 | |||
| b7c91941b8 | |||
| 33f0b6da67 | |||
| ee18fe9bba | |||
| a51330cf07 | |||
| a67aed2744 | |||
| d979e19315 | |||
| 4c74d16795 | |||
| 6e541a432f | |||
| d8f47e248a | |||
| d1a869496b | |||
| f42a37555d | |||
| d9e019bd87 | |||
| ce194fa5d8 | |||
| b5bdf57636 | |||
| a3a81ce7c6 | |||
| 61f347401c | |||
| d985a4c250 | |||
| d31947e1f0 | |||
| e4659b7d7c | |||
| 8827a534db | |||
| ddf48b45a5 | |||
| 8eabb9b02f | |||
| 8a195a0b35 | |||
| 955206aaf0 | |||
| 082dd7d5ee | |||
| 90714cf624 | |||
| 61798d33f0 | |||
| 6e2a41cb26 | |||
| 515897e180 | |||
| fe4a8f33b1 | |||
| 304d848f53 | |||
| b5f738abf3 | |||
| 7ebed06393 | |||
| 2e56fe82bb | |||
| 32019c61aa | |||
| f7ffae565c | |||
| cd11bb1606 | |||
| 24c924d668 | |||
| 9be94e4b58 | |||
| 15e9d8c99d | |||
| 391f511094 | |||
| 5b53c11a6b | |||
| 9df4b6ea24 | |||
| a440564ba4 | |||
| 9583cfcc93 | |||
| c4a921283a | |||
| 4e05f087f9 | |||
| 40b506d2e0 | |||
| 263f384810 | |||
| d80c145a18 | |||
| 8848fe35f6 | |||
| 7a681bd20d | |||
| ed31fb184b | |||
| 360b94dd6c | |||
| 8524e73f59 | |||
| 940514e5ca | |||
| a4e47625ac | |||
| 7c16872a6e | |||
| 994c3c3552 | |||
| c34f496600 | |||
| 8bca8629be | |||
| 85fdd579d6 | |||
| e88d2ff88c | |||
| bdf08baebd | |||
| 3dcdd25177 | |||
| 491e8640b2 | |||
| b23b7ef85e | |||
| b167374f13 | |||
| cd1f6e733f | |||
| d3fc7687b8 | |||
| 17a83d58da | |||
| 18a8e1b6d6 | |||
| 2c23cbb359 | |||
| cdd58cf757 | |||
| a0df325659 | |||
| a59005e836 | |||
| 5da6a27e6b | |||
| ef97af71e3 | |||
| 6ed67f4532 | |||
| 1278d663b4 | |||
| 0395c7b407 | |||
| df3d15ffb3 | |||
| 6f673310d2 | |||
| 978c3eca23 | |||
| 20bc848bd6 | |||
| ce7f1292dc | |||
| d97ff8bb40 | |||
| 8a9b46d82f | |||
| 12e5703541 | |||
| 1b87fc2ee6 | |||
| ebd0c780a1 | |||
| bd976cd562 | |||
| 0e511c3e07 | |||
| 300d489408 | |||
| 024d081167 | |||
| 348173d3f1 | |||
| 23e3814f8a | |||
| b818e2c4b8 | |||
| 6adb3dc142 | |||
| 0e154cc759 | |||
| 9dce8d9bce | |||
| 0aa3b9c487 | |||
| dc7ab3ed30 | |||
| 254259b354 | |||
| 9651c70efd | |||
| 5840190ed5 | |||
| a807b88694 | |||
| 0db82e09e9 | |||
| e5865f171a | |||
| 166d198dcb | |||
| 445795f2ec | |||
| 6be4a87dac | |||
| 17c47053d6 | |||
| b4e18f7521 | |||
| fbe4d287c7 | |||
| 543fa3ae79 | |||
| 7cf855413c | |||
| f5d65dc0bc | |||
| 2f6211a1d9 | |||
| 513a57330a | |||
| 715ddf0620 | |||
| 6bb31e276e | |||
| b10f1df49f | |||
| f999519b13 | |||
| aedbf02830 | |||
| bd5479b250 | |||
| 9d14715652 | |||
| 72156fcf1b | |||
| 1c6eab00d1 | |||
| f9738c5b55 | |||
| 3b63083619 | |||
| d5d7d8bc84 | |||
| f26118cf5a | |||
| 5d6c4b475c | |||
| 2c4ef392f6 | |||
| 2a128fe772 | |||
| bb7d3ca3a1 | |||
| a2bdba7eda | |||
| e8aabc9980 | |||
| 9f554a14fd | |||
| 68a2b91ccb | |||
| 4089cc6e6f | |||
| 4e8848eeca | |||
| 8c6133c115 | |||
| 483db31acd | |||
| 35dae3dab7 | |||
| 8232aedf78 | |||
| d30a0a2e67 | |||
| d913fe508f | |||
| 4029903301 | |||
| 5db7e826d3 | |||
| 7f3e7da7c7 | |||
| 93cefde8fc | |||
| 02e7981e10 | |||
| 0ecec10af0 | |||
| 00b8cba987 | |||
| 8486bff918 | |||
| 5305eb5b8a | |||
| 377a3bb7de | |||
| 5a47e8d2c6 | |||
| 71f4cd7c85 | |||
| f7751684af | |||
| 59df1d39b2 | |||
| 7e5933e6a0 | |||
| 2cefd34bb7 | |||
| eac891dc3a | |||
| abd3599408 | |||
| 1bcd259c00 | |||
| c4e835266c | |||
| 685953f6a5 | |||
| 03fffbc724 | |||
| e1a8c932ee | |||
| 1aa2a6b054 | |||
| 1ad96c9c81 | |||
| f69199909f | |||
| d063e77040 | |||
| bf3ddeb1eb | |||
| fc261ad8cd | |||
| 90fc018295 | |||
| cdc01d9a69 | |||
| da7e76c07d | |||
| ba9118aa58 |
+17
-11
@@ -3,6 +3,11 @@
|
|||||||
|
|
||||||
os: Visual Studio 2015
|
os: Visual Studio 2015
|
||||||
|
|
||||||
|
branches:
|
||||||
|
except:
|
||||||
|
- /^gitlab.*/
|
||||||
|
- /^travis.*/
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
global: { TRAVIS_OS_NAME: windows, CROSS: "", C: "", B: release, T: "", X: "" }
|
global: { TRAVIS_OS_NAME: windows, CROSS: "", C: "", B: release, T: "", X: "" }
|
||||||
matrix:
|
matrix:
|
||||||
@@ -14,8 +19,10 @@ environment:
|
|||||||
- { C: msvc-12.0-x64, CL_VERSION: 18.00, VS_VERSION: 2013 }
|
- { C: msvc-12.0-x64, CL_VERSION: 18.00, VS_VERSION: 2013 }
|
||||||
- { C: msvc-14.0-x86, CL_VERSION: 19.00, VS_VERSION: 2015 }
|
- { C: msvc-14.0-x86, CL_VERSION: 19.00, VS_VERSION: 2015 }
|
||||||
- { C: msvc-14.0-x64, CL_VERSION: 19.00, VS_VERSION: 2015 }
|
- { C: msvc-14.0-x64, CL_VERSION: 19.00, VS_VERSION: 2015 }
|
||||||
# - { C: gcc-4.9-m32, T: SKIP }
|
- { C: msvc-14.1-x86, CL_VERSION: 19.16, VS_VERSION: 2017, APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 }
|
||||||
# - { C: gcc-4.9-m64, T: SKIP }
|
- { C: msvc-14.1-x64, CL_VERSION: 19.16, VS_VERSION: 2017, APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 }
|
||||||
|
- { C: msvc-14.2-x86, CL_VERSION: 19.24, VS_VERSION: 2019, APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 }
|
||||||
|
- { C: msvc-14.2-x64, CL_VERSION: 19.24, VS_VERSION: 2019, APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 }
|
||||||
UPX_AUTOMATIC_BUILDS_SSL_KEY:
|
UPX_AUTOMATIC_BUILDS_SSL_KEY:
|
||||||
secure: PZMpVeqnEYe39kK+Zu2/fnmZ6/HG6Lvls0hh9GMVU9vCWsr8xaU7kIbHBS01puUkb4bEWPILKYvSEDuhOhguDjd/P4QdXWipvV/F2GaVax0=
|
secure: PZMpVeqnEYe39kK+Zu2/fnmZ6/HG6Lvls0hh9GMVU9vCWsr8xaU7kIbHBS01puUkb4bEWPILKYvSEDuhOhguDjd/P4QdXWipvV/F2GaVax0=
|
||||||
UPX_AUTOMATIC_BUILDS_SSL_IV:
|
UPX_AUTOMATIC_BUILDS_SSL_IV:
|
||||||
@@ -23,7 +30,7 @@ environment:
|
|||||||
|
|
||||||
init:
|
init:
|
||||||
- git config --global core.autocrlf input
|
- git config --global core.autocrlf input
|
||||||
- where bash & where cat & where chmod & where cp & where curl & where date & where file & where git & where gzip & where mkdir & where mv & where openssl & where readlink & where rm & where rmdir & where sed & where sha256sum & where sort & where ssh & where ssh-add & where ssh-agent & where ssh-keyscan & where tar
|
- where bash & where cat & where chmod & where cmp & where cp & where curl & where date & where file & where git & where gzip & where mkdir & where mv & where openssl & where readlink & where rm & where rmdir & where sed & where sha256sum & where sort & where ssh & where ssh-add & where ssh-agent & where ssh-keyscan & where tar & where touch
|
||||||
# - bash --version & git --version & sed --version & tar --version
|
# - bash --version & git --version & sed --version & tar --version
|
||||||
- git --version & bash --version
|
- git --version & bash --version
|
||||||
# - dir "c:\Program Files\Git\usr\bin"
|
# - dir "c:\Program Files\Git\usr\bin"
|
||||||
@@ -56,15 +63,13 @@ install:
|
|||||||
- if "%C%"=="msvc-12.0-x64" ( call "c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" amd64 )
|
- if "%C%"=="msvc-12.0-x64" ( call "c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" amd64 )
|
||||||
- if "%C%"=="msvc-14.0-x86" ( call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 )
|
- if "%C%"=="msvc-14.0-x86" ( call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 )
|
||||||
- if "%C%"=="msvc-14.0-x64" ( call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 )
|
- if "%C%"=="msvc-14.0-x64" ( call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 )
|
||||||
|
- if "%C%"=="msvc-14.1-x86" ( call "c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86 )
|
||||||
|
- if "%C%"=="msvc-14.1-x64" ( call "c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 )
|
||||||
|
- if "%C%"=="msvc-14.2-x86" ( call "c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x86 )
|
||||||
|
- if "%C%"=="msvc-14.2-x64" ( call "c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 )
|
||||||
|
|
||||||
build_script:
|
build_script:
|
||||||
- cd c:\projects\upx
|
- cd c:\projects\upx
|
||||||
- if "%C%"=="gcc-4.9-m32" set PATH=c:\cygwin\bin;%PATH%
|
|
||||||
- if "%C%"=="gcc-4.9-m32" bash -x ./.github/travis_build.sh
|
|
||||||
- if "%C%"=="gcc-4.9-m32" exit
|
|
||||||
- if "%C%"=="gcc-4.9-m64" set PATH=c:\cygwin\bin;%PATH%
|
|
||||||
- if "%C%"=="gcc-4.9-m64" bash -x ./.github/travis_build.sh
|
|
||||||
- if "%C%"=="gcc-4.9-m64" exit
|
|
||||||
# setup directories following the VPATH build in travis_build.sh
|
# setup directories following the VPATH build in travis_build.sh
|
||||||
- where cl & where link
|
- where cl & where link
|
||||||
- set BDIR=c:\projects\build\%C%\%B%
|
- set BDIR=c:\projects\build\%C%\%B%
|
||||||
@@ -85,7 +90,7 @@ build_script:
|
|||||||
- set s=c:\projects\upx\src
|
- set s=c:\projects\upx\src
|
||||||
- cat .GITREV.txt
|
- cat .GITREV.txt
|
||||||
- set /p GITREV=<.GITREV.txt
|
- set /p GITREV=<.GITREV.txt
|
||||||
- cl -MT -EHsc -J -O2 -W4 -DUPX_VERSION_GITREV="""%GITREV%""" %DEFS% -DWITH_LZMA=0x443 -DUCL_NO_ASM -I%s%\lzma-sdk -Ic:\projects\deps\ucl-1.03\include -Ic:\projects\deps\zlib-1.2.8 -Feupx.exe %s%\*.cpp %BDIR%\ucl-1.03\ucl.lib %BDIR%\zlib-1.2.8\zlib.lib
|
- cl -MT -EHsc -J -O2 -W4 -WX -DUPX_VERSION_GITREV="""%GITREV%""" %DEFS% -DUCL_NO_ASM -I%s%\lzma-sdk -Ic:\projects\deps\ucl-1.03\include -Ic:\projects\deps\zlib-1.2.8 -Feupx.exe %s%\*.cpp %BDIR%\ucl-1.03\ucl.lib %BDIR%\zlib-1.2.8\zlib.lib
|
||||||
|
|
||||||
test_script:
|
test_script:
|
||||||
- set UPX=--no-color --no-progress
|
- set UPX=--no-color --no-progress
|
||||||
@@ -100,6 +105,7 @@ test_script:
|
|||||||
# now run the UPX testsuite using bash
|
# now run the UPX testsuite using bash
|
||||||
- cd c:\projects\upx
|
- cd c:\projects\upx
|
||||||
- bash ./.github/travis_testsuite_1.sh
|
- bash ./.github/travis_testsuite_1.sh
|
||||||
- bash ./.github/travis_deploy.sh
|
# info: it seems that ssh is not properly installed/started on the 2019 worker image
|
||||||
|
- if NOT "%VS_VERSION%"=="2019" ( bash ./.github/travis_deploy.sh )
|
||||||
|
|
||||||
# vim:set ts=2 sw=2 et:
|
# vim:set ts=2 sw=2 et:
|
||||||
|
|||||||
-31
@@ -1,31 +0,0 @@
|
|||||||
# Support for Circle CI -- https://circleci.com/gh/upx/upx
|
|
||||||
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
|
|
||||||
|
|
||||||
machine:
|
|
||||||
environment:
|
|
||||||
TRAVIS_OS_NAME: linux
|
|
||||||
CROSS:
|
|
||||||
C: gcc-4.8-m64
|
|
||||||
B: release
|
|
||||||
T:
|
|
||||||
X:
|
|
||||||
|
|
||||||
checkout:
|
|
||||||
post:
|
|
||||||
- git submodule update --init --recursive
|
|
||||||
|
|
||||||
dependencies:
|
|
||||||
pre:
|
|
||||||
- mkdir -p ../deps
|
|
||||||
- cd ../deps && wget -q -O - https://github.com/upx/upx/releases/download/v3.00/ucl-1.03.tar.xz | tar -xJ
|
|
||||||
- cd ../deps && wget -q -O - https://github.com/upx/upx/releases/download/v3.00/zlib-1.2.8.tar.xz | tar -xJ
|
|
||||||
- cd ../deps && git clone https://github.com/upx/upx-testsuite
|
|
||||||
override:
|
|
||||||
- mkdir -p ../build/travis
|
|
||||||
- bash ./.github/travis_build.sh
|
|
||||||
|
|
||||||
test:
|
|
||||||
override:
|
|
||||||
- bash ./.github/travis_testsuite_1.sh
|
|
||||||
|
|
||||||
# vim:set ts=2 sw=2 et:
|
|
||||||
+3
-1
@@ -1,7 +1,9 @@
|
|||||||
#
|
#
|
||||||
# see http://editorconfig.org/
|
# see https://editorconfig.org/
|
||||||
#
|
#
|
||||||
|
|
||||||
|
root = true
|
||||||
|
|
||||||
[*]
|
[*]
|
||||||
charset = utf-8
|
charset = utf-8
|
||||||
end_of_line = lf
|
end_of_line = lf
|
||||||
|
|||||||
@@ -27,5 +27,7 @@ Just read it and fill in the details we're asking, it saves so much of our time.
|
|||||||
## Please tell us details about your environment.
|
## Please tell us details about your environment.
|
||||||
<!--- Include as many relevant details about the environment you experienced the bug in -->
|
<!--- Include as many relevant details about the environment you experienced the bug in -->
|
||||||
* UPX version used (`upx --version`):
|
* UPX version used (`upx --version`):
|
||||||
* Operating System and version:
|
* Host Operating System and version:
|
||||||
* CPU architecture:
|
* Host CPU architecture:
|
||||||
|
* Target Operating System and version:
|
||||||
|
* Target CPU architecture:
|
||||||
|
|||||||
+33
-2
@@ -39,10 +39,37 @@ set -x
|
|||||||
#
|
#
|
||||||
|
|
||||||
if [[ $BM_X =~ (^|\+)rebuild-stubs($|\+) ]]; then
|
if [[ $BM_X =~ (^|\+)rebuild-stubs($|\+) ]]; then
|
||||||
|
if [[ -f "$HOME/local/bin/bin-upx/upx-stubtools-check-version" ]]; then
|
||||||
|
bin_upx=$(readlink -en -- "$HOME/local/bin/bin-upx")
|
||||||
|
elif [[ -f "$HOME/.local/bin/bin-upx/upx-stubtools-check-version" ]]; then
|
||||||
|
bin_upx=$(readlink -en -- "$HOME/.local/bin/bin-upx")
|
||||||
|
else
|
||||||
bin_upx=$(readlink -en -- "$upx_SRCDIR/../deps/bin-upx-20160918")
|
bin_upx=$(readlink -en -- "$upx_SRCDIR/../deps/bin-upx-20160918")
|
||||||
|
fi
|
||||||
cd / && cd $upx_SRCDIR || exit 1
|
cd / && cd $upx_SRCDIR || exit 1
|
||||||
|
extra_subdirs=()
|
||||||
|
extra_subdirs+=( src/stub/src/arch/amd64 )
|
||||||
|
extra_subdirs+=( src/stub/src/arch/arm/v4a )
|
||||||
|
extra_subdirs+=( src/stub/src/arch/arm/v4t )
|
||||||
|
extra_subdirs+=( src/stub/src/arch/arm64/v8 )
|
||||||
|
extra_subdirs+=( src/stub/src/arch/i386 )
|
||||||
|
extra_subdirs+=( src/stub/src/arch/m68k/m68000 )
|
||||||
|
extra_subdirs+=( src/stub/src/arch/m68k/m68020 )
|
||||||
|
extra_subdirs+=( src/stub/src/arch/mips/r3000 )
|
||||||
|
extra_subdirs+=( src/stub/src/arch/powerpc/32 )
|
||||||
|
extra_subdirs+=( src/stub/src/arch/powerpc/64 )
|
||||||
|
extra_subdirs+=( src/stub/src/arch/powerpc/64le )
|
||||||
make -C src/stub maintainer-clean
|
make -C src/stub maintainer-clean
|
||||||
|
for d in ${extra_subdirs[@]}; do
|
||||||
|
make -C $d -f Makefile.extra maintainer-clean
|
||||||
|
git status $d || true
|
||||||
|
done
|
||||||
|
git status src/stub/src || true
|
||||||
|
git status || true
|
||||||
failed=0
|
failed=0
|
||||||
|
for d in ${extra_subdirs[@]}; do
|
||||||
|
PATH="$bin_upx:$PATH" make -C $d -f Makefile.extra || failed=1
|
||||||
|
done
|
||||||
PATH="$bin_upx:$PATH" make -C src/stub all || failed=1
|
PATH="$bin_upx:$PATH" make -C src/stub all || failed=1
|
||||||
if [[ $failed != 0 ]]; then
|
if [[ $failed != 0 ]]; then
|
||||||
echo "UPX-ERROR: FATAL: rebuild-stubs failed"
|
echo "UPX-ERROR: FATAL: rebuild-stubs failed"
|
||||||
@@ -54,11 +81,12 @@ if [[ $BM_X =~ (^|\+)rebuild-stubs($|\+) ]]; then
|
|||||||
echo "UPX-ERROR: FATAL: rebuild-stubs git status mismatch. See log file."
|
echo "UPX-ERROR: FATAL: rebuild-stubs git status mismatch. See log file."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
git status
|
||||||
if [[ $BM_X == rebuild-stubs ]]; then
|
if [[ $BM_X == rebuild-stubs ]]; then
|
||||||
echo "X=rebuild-stubs done. Exiting."
|
echo "X=rebuild-stubs done. Exiting."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
unset bin_upx failed
|
unset bin_upx extra_subdirs d failed
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -66,7 +94,10 @@ fi
|
|||||||
#
|
#
|
||||||
|
|
||||||
cd / && cd $ucl_BUILDDIR || exit 1
|
cd / && cd $ucl_BUILDDIR || exit 1
|
||||||
if [[ -n $BM_CROSS || $TRAVIS_OS_NAME == windows ]]; then
|
# patch UCL
|
||||||
|
sed 's/^#elif (ACC_ARCH_AMD64 || ACC_ARCH_IA64)$/& \&\& !defined(__ILP32__)/' $ucl_SRCDIR/acc/acc_chk.ch > a.tmp
|
||||||
|
if cmp -s a.tmp $ucl_SRCDIR/acc/acc_chk.ch; then rm a.tmp; else mv a.tmp $ucl_SRCDIR/acc/acc_chk.ch; fi
|
||||||
|
if [[ $BUILD_LOCAL_UCL == 1 ]]; then
|
||||||
# ucl-1.03/configure is too old - build manually
|
# ucl-1.03/configure is too old - build manually
|
||||||
rm -f ./*.o libucl.a
|
rm -f ./*.o libucl.a
|
||||||
$CC -O2 -I$ucl_SRCDIR/include -I$ucl_SRCDIR -c $ucl_SRCDIR/src/*.c
|
$CC -O2 -I$ucl_SRCDIR/include -I$ucl_SRCDIR -c $ucl_SRCDIR/src/*.c
|
||||||
|
|||||||
+42
-11
@@ -15,7 +15,7 @@ source "$argv0dir/travis_init.sh" || exit 1
|
|||||||
set -x # debug
|
set -x # debug
|
||||||
|
|
||||||
if [[ $BM_X == rebuild-stubs ]]; then exit 0; fi
|
if [[ $BM_X == rebuild-stubs ]]; then exit 0; fi
|
||||||
# save space
|
# save space and do not deploy debug builds
|
||||||
if [[ $BM_B =~ (^|\+)coverage($|\+) ]]; then exit 0; fi
|
if [[ $BM_B =~ (^|\+)coverage($|\+) ]]; then exit 0; fi
|
||||||
if [[ $BM_B =~ (^|\+)debug($|\+) ]]; then exit 0; fi
|
if [[ $BM_B =~ (^|\+)debug($|\+) ]]; then exit 0; fi
|
||||||
if [[ $BM_B =~ (^|\+)sanitize($|\+) ]]; then exit 0; fi
|
if [[ $BM_B =~ (^|\+)sanitize($|\+) ]]; then exit 0; fi
|
||||||
@@ -35,9 +35,11 @@ else
|
|||||||
branch=$TRAVIS_BRANCH
|
branch=$TRAVIS_BRANCH
|
||||||
if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then exit 0; fi
|
if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then exit 0; fi
|
||||||
fi
|
fi
|
||||||
subdir=${subdir%%:*}; subdir=${subdir%%/*}; subdir=${subdir%%-*}
|
subdir=${subdir%%:*}; subdir=${subdir%%/*}; subdir=${subdir%%--*}
|
||||||
case $branch in
|
case $branch in
|
||||||
|
appveyor*) ;;
|
||||||
devel*) ;;
|
devel*) ;;
|
||||||
|
gitlab*) ;;
|
||||||
master*) ;;
|
master*) ;;
|
||||||
travis*) ;;
|
travis*) ;;
|
||||||
*) exit 0;;
|
*) exit 0;;
|
||||||
@@ -46,7 +48,13 @@ esac
|
|||||||
# get $rev, $branch and $git_user
|
# get $rev, $branch and $git_user
|
||||||
cd / && cd $upx_SRCDIR || exit 1
|
cd / && cd $upx_SRCDIR || exit 1
|
||||||
rev=$(git rev-parse --verify HEAD)
|
rev=$(git rev-parse --verify HEAD)
|
||||||
timestamp=$(git log -n1 --format='%at' HEAD)
|
if [[ "$branch" == gitlab* ]]; then
|
||||||
|
if git fetch -v origin devel; then
|
||||||
|
git branch -a -v
|
||||||
|
rev=$(git merge-base origin/devel $rev || echo $rev)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
timestamp=$(git log -n1 --format='%at' $rev)
|
||||||
date=$(TZ=UTC0 date -d "@$timestamp" '+%Y%m%d-%H%M%S')
|
date=$(TZ=UTC0 date -d "@$timestamp" '+%Y%m%d-%H%M%S')
|
||||||
#branch="$branch-$date-${rev:0:6}"
|
#branch="$branch-$date-${rev:0:6}"
|
||||||
# make the branch name a little bit shorter so that it looks nice on GitHub
|
# make the branch name a little bit shorter so that it looks nice on GitHub
|
||||||
@@ -92,9 +100,24 @@ else
|
|||||||
[[ $cpu == amd64 ]] && os=win64
|
[[ $cpu == amd64 ]] && os=win64
|
||||||
fi
|
fi
|
||||||
d=$cpu-$os
|
d=$cpu-$os
|
||||||
|
unset cpu os
|
||||||
fi
|
fi
|
||||||
d=$d-$BM_C-$BM_B
|
d=$d-$BM_C-$BM_B
|
||||||
|
|
||||||
|
# remove redundant -m32/-m64/-x86/-x64 from directory name
|
||||||
|
if [[ $d =~ ^((i386-darwin|i386-linux|i386-win32).*)(-m32|-x86)(-.+)?$ ]]; then
|
||||||
|
d="${BASH_REMATCH[1]}${BASH_REMATCH[4]}"
|
||||||
|
fi
|
||||||
|
if [[ $d =~ ^((amd64-darwin|amd64-linux|amd64-win64).*)(-m64|-x64)(-.+)?$ ]]; then
|
||||||
|
d="${BASH_REMATCH[1]}${BASH_REMATCH[4]}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n $subdir ]]; then
|
||||||
|
print_header "DEPLOY $subdir/$d"
|
||||||
|
else
|
||||||
|
print_header "DEPLOY $d"
|
||||||
|
fi
|
||||||
|
|
||||||
mkdir $d || exit 1
|
mkdir $d || exit 1
|
||||||
for exeext in .exe .out; do
|
for exeext in .exe .out; do
|
||||||
f=$upx_BUILDDIR/upx$exeext
|
f=$upx_BUILDDIR/upx$exeext
|
||||||
@@ -102,6 +125,7 @@ for exeext in .exe .out; do
|
|||||||
cp -p -i $f $d/upx-git-${rev:0:12}$exeext
|
cp -p -i $f $d/upx-git-${rev:0:12}$exeext
|
||||||
sha256sum -b $d/upx-git-${rev:0:12}$exeext
|
sha256sum -b $d/upx-git-${rev:0:12}$exeext
|
||||||
fi
|
fi
|
||||||
|
unset f
|
||||||
done
|
done
|
||||||
|
|
||||||
# /***********************************************************************
|
# /***********************************************************************
|
||||||
@@ -109,7 +133,7 @@ done
|
|||||||
# ************************************************************************/
|
# ************************************************************************/
|
||||||
|
|
||||||
new_branch=0
|
new_branch=0
|
||||||
if ! git clone -b $branch --single-branch https://github.com/upx/upx-automatic-builds.git; then
|
if ! git clone -b "$branch" --single-branch https://github.com/upx/upx-automatic-builds.git; then
|
||||||
git clone -b master --single-branch https://github.com/upx/upx-automatic-builds.git
|
git clone -b master --single-branch https://github.com/upx/upx-automatic-builds.git
|
||||||
new_branch=1
|
new_branch=1
|
||||||
fi
|
fi
|
||||||
@@ -118,9 +142,10 @@ chmod 700 .git
|
|||||||
git config user.name "$git_user"
|
git config user.name "$git_user"
|
||||||
git config user.email "none@none"
|
git config user.email "none@none"
|
||||||
if [[ $new_branch == 1 ]]; then
|
if [[ $new_branch == 1 ]]; then
|
||||||
git checkout --orphan $branch
|
git checkout --orphan "$branch"
|
||||||
git reset --hard
|
git reset --hard || true
|
||||||
fi
|
fi
|
||||||
|
git ls-files -v
|
||||||
|
|
||||||
if [[ -n $subdir ]]; then
|
if [[ -n $subdir ]]; then
|
||||||
[[ -d $subdir ]] || mkdir $subdir
|
[[ -d $subdir ]] || mkdir $subdir
|
||||||
@@ -139,11 +164,12 @@ fi
|
|||||||
now=$(date '+%s')
|
now=$(date '+%s')
|
||||||
##date=$(TZ=UTC0 date -d "@$now" '+%Y-%m-%d %H:%M:%S')
|
##date=$(TZ=UTC0 date -d "@$now" '+%Y-%m-%d %H:%M:%S')
|
||||||
git commit --date="$now" -m "Automatic build $d"
|
git commit --date="$now" -m "Automatic build $d"
|
||||||
git ls-files
|
git ls-files -v
|
||||||
#git log --pretty=fuller
|
#git log --pretty=fuller
|
||||||
|
|
||||||
umask 077
|
umask 077
|
||||||
[[ -d ~/.ssh ]] || mkdir ~/.ssh
|
[[ -d ~/.ssh ]] || mkdir ~/.ssh
|
||||||
|
fix_home_ssh_perms
|
||||||
repo=$(git config remote.origin.url)
|
repo=$(git config remote.origin.url)
|
||||||
ssh_repo=${repo/https:\/\/github.com\//git@github.com:}
|
ssh_repo=${repo/https:\/\/github.com\//git@github.com:}
|
||||||
eval $(ssh-agent -s)
|
eval $(ssh-agent -s)
|
||||||
@@ -152,7 +178,9 @@ openssl aes-256-cbc -d -a -K "$UPX_AUTOMATIC_BUILDS_SSL_KEY" -iv "$UPX_AUTOMATIC
|
|||||||
set -x
|
set -x
|
||||||
chmod 600 .git/deploy.key
|
chmod 600 .git/deploy.key
|
||||||
ssh-add .git/deploy.key
|
ssh-add .git/deploy.key
|
||||||
|
fix_home_ssh_perms
|
||||||
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
|
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
|
||||||
|
fix_home_ssh_perms
|
||||||
|
|
||||||
let i=0 || true
|
let i=0 || true
|
||||||
while true; do
|
while true; do
|
||||||
@@ -161,12 +189,15 @@ while true; do
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [[ $new_branch == 1 ]]; then
|
if [[ $new_branch == 1 ]]; then
|
||||||
if git push -u $ssh_repo $branch; then break; fi
|
if git push -u $ssh_repo "$branch"; then break; fi
|
||||||
else
|
else
|
||||||
if git push $ssh_repo $branch; then break; fi
|
if git push $ssh_repo "$branch"; then break; fi
|
||||||
fi
|
fi
|
||||||
git fetch -v origin $branch
|
git branch -a -v
|
||||||
git rebase origin/$branch
|
git fetch -v origin "$branch"
|
||||||
|
git branch -a -v
|
||||||
|
git rebase FETCH_HEAD
|
||||||
|
git branch -a -v
|
||||||
sleep $((RANDOM % 5 + 1))
|
sleep $((RANDOM % 5 + 1))
|
||||||
let i+=1
|
let i+=1
|
||||||
done
|
done
|
||||||
|
|||||||
+32
-4
@@ -25,6 +25,9 @@ declare +x UPX_AUTOMATIC_BUILDS_SSL_KEY UPX_AUTOMATIC_BUILDS_SSL_IV
|
|||||||
# compatibility wrappers
|
# compatibility wrappers
|
||||||
if [[ $TRAVIS_OS_NAME == osx ]]; then
|
if [[ $TRAVIS_OS_NAME == osx ]]; then
|
||||||
# use GNU coreutils ("brew install coreutils")
|
# use GNU coreutils ("brew install coreutils")
|
||||||
|
chmod() {
|
||||||
|
gchmod "$@"
|
||||||
|
}
|
||||||
date() {
|
date() {
|
||||||
gdate "$@"
|
gdate "$@"
|
||||||
}
|
}
|
||||||
@@ -49,6 +52,7 @@ if [[ -z $CC_OVERRIDE ]]; then
|
|||||||
CC=false CXX=false SCAN_BUILD=false
|
CC=false CXX=false SCAN_BUILD=false
|
||||||
AR=ar SIZE=size
|
AR=ar SIZE=size
|
||||||
if [[ -n $APPVEYOR_JOB_ID ]]; then
|
if [[ -n $APPVEYOR_JOB_ID ]]; then
|
||||||
|
BUILD_LOCAL_UCL=1
|
||||||
BUILD_LOCAL_ZLIB=1
|
BUILD_LOCAL_ZLIB=1
|
||||||
if [[ $BM_C =~ (^|\-)(clang|gcc)($|\-) ]]; then
|
if [[ $BM_C =~ (^|\-)(clang|gcc)($|\-) ]]; then
|
||||||
export upx_EXTRA_LDFLAGS="-static-libgcc -static-libstdc++"
|
export upx_EXTRA_LDFLAGS="-static-libgcc -static-libstdc++"
|
||||||
@@ -65,6 +69,7 @@ if [[ -n $APPVEYOR_JOB_ID ]]; then
|
|||||||
esac
|
esac
|
||||||
fi # APPVEYOR_JOB_ID
|
fi # APPVEYOR_JOB_ID
|
||||||
if [[ -n $BM_CROSS ]]; then
|
if [[ -n $BM_CROSS ]]; then
|
||||||
|
BUILD_LOCAL_UCL=1
|
||||||
BUILD_LOCAL_ZLIB=1
|
BUILD_LOCAL_ZLIB=1
|
||||||
if [[ $BM_C =~ (^|\-)(clang|gcc)($|\-) ]]; then
|
if [[ $BM_C =~ (^|\-)(clang|gcc)($|\-) ]]; then
|
||||||
export upx_EXTRA_LDFLAGS="-static-libgcc -static-libstdc++"
|
export upx_EXTRA_LDFLAGS="-static-libgcc -static-libstdc++"
|
||||||
@@ -129,26 +134,35 @@ if [[ -n $BM_CROSS ]]; then
|
|||||||
fi # BM_CROSS
|
fi # BM_CROSS
|
||||||
if [[ "$CC" == "false" ]]; then # generic
|
if [[ "$CC" == "false" ]]; then # generic
|
||||||
if [[ -z $BM_CROSS ]]; then
|
if [[ -z $BM_CROSS ]]; then
|
||||||
|
if [[ $TRAVIS_OS_NAME == osx ]]; then
|
||||||
case $BM_C in
|
case $BM_C in
|
||||||
clang | clang-m?? | clang-3.4-m?? | clang-[678][0-9][0-9]-m??)
|
clang | clang-m?? | clang-[6789][0-9][0-9]-m?? | clang-1[0-1][0-9][0-9]-m??)
|
||||||
CC="clang"; CXX="clang++" ;; # standard system compiler
|
CC="clang"; CXX="clang++" ;; # standard system compiler
|
||||||
clang-[3].[0-9]-m??)
|
esac
|
||||||
|
else
|
||||||
|
case $BM_C in
|
||||||
|
clang | clang-m?? | clang-3.4-m??)
|
||||||
|
CC="clang"; CXX="clang++" ;; # standard system compiler
|
||||||
|
clang-[3456].[0-9]-m??)
|
||||||
v=${BM_C:6:3}; CC="clang-$v"; CXX="clang++-$v"; SCAN_BUILD="scan-build-$v" ;;
|
v=${BM_C:6:3}; CC="clang-$v"; CXX="clang++-$v"; SCAN_BUILD="scan-build-$v" ;;
|
||||||
|
clang-[789]-m??)
|
||||||
|
v=${BM_C:6:1}; CC="clang-$v"; CXX="clang++-$v"; SCAN_BUILD="scan-build-$v" ;;
|
||||||
gcc | gcc-m?? | gcc-mx32)
|
gcc | gcc-m?? | gcc-mx32)
|
||||||
CC="gcc"; CXX="g++" ;; # standard system compiler
|
CC="gcc"; CXX="g++" ;; # standard system compiler
|
||||||
gcc-[34].[0-9]-m?? | gcc-[34].[0-9]-mx32)
|
gcc-[34].[0-9]-m?? | gcc-[34].[0-9]-mx32)
|
||||||
v=${BM_C:4:3}; CC="gcc-$v"; CXX="g++-$v" ;;
|
v=${BM_C:4:3}; CC="gcc-$v"; CXX="g++-$v" ;;
|
||||||
gcc-[56]-m?? | gcc-[56]-mx32)
|
gcc-[56789]-m?? | gcc-[56789]-mx32)
|
||||||
v=${BM_C:4:1}; CC="gcc-$v"; CXX="g++-$v" ;;
|
v=${BM_C:4:1}; CC="gcc-$v"; CXX="g++-$v" ;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
fi # generic
|
fi # generic
|
||||||
case $BM_C in
|
case $BM_C in
|
||||||
clang*-m32) CC="$CC -m32"; CXX="$CXX -m32" ;;
|
clang*-m32) CC="$CC -m32"; CXX="$CXX -m32" ;;
|
||||||
clang*-m64) CC="$CC -m64"; CXX="$CXX -m64" ;;
|
clang*-m64) CC="$CC -m64"; CXX="$CXX -m64" ;;
|
||||||
gcc*-m32) CC="$CC -m32"; CXX="$CXX -m32" ;;
|
gcc*-m32) CC="$CC -m32"; CXX="$CXX -m32" ;;
|
||||||
gcc*-m64) CC="$CC -m64"; CXX="$CXX -m64" ;;
|
gcc*-m64) CC="$CC -m64"; CXX="$CXX -m64" ;;
|
||||||
gcc*-mx32) CC="$CC -mx32"; CXX="$CXX -mx32" ;;
|
gcc*-mx32) CC="$CC -mx32"; CXX="$CXX -mx32"; BUILD_LOCAL_UCL=1; BUILD_LOCAL_ZLIB=1 ;;
|
||||||
esac
|
esac
|
||||||
if [[ $BM_C =~ (^|\-)(clang|gcc)($|\-) ]]; then
|
if [[ $BM_C =~ (^|\-)(clang|gcc)($|\-) ]]; then
|
||||||
CC="$CC -std=gnu89"
|
CC="$CC -std=gnu89"
|
||||||
@@ -212,6 +226,11 @@ done
|
|||||||
make_absolute lcov_OUTPUTDIR
|
make_absolute lcov_OUTPUTDIR
|
||||||
unset var_prefix var_suffix
|
unset var_prefix var_suffix
|
||||||
|
|
||||||
|
print_header() {
|
||||||
|
local x="==========="; x="$x$x$x$x$x$x$x"
|
||||||
|
echo -e "\n${x}\n${1}\n${x}\n"
|
||||||
|
}
|
||||||
|
|
||||||
print_settings() {
|
print_settings() {
|
||||||
local v var_prefix var_suffix
|
local v var_prefix var_suffix
|
||||||
# Build Matrix
|
# Build Matrix
|
||||||
@@ -237,4 +256,13 @@ print_settings() {
|
|||||||
##env | LC_ALL=C sort
|
##env | LC_ALL=C sort
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fix_home_ssh_perms() {
|
||||||
|
if [[ -d ~/.ssh ]]; then
|
||||||
|
if [[ -x /usr/sbin/restorecon ]]; then
|
||||||
|
/usr/sbin/restorecon -v -R ~/.ssh || true
|
||||||
|
fi
|
||||||
|
chmod -c -R go-rwx ~/.ssh || true
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
true
|
true
|
||||||
|
|||||||
@@ -0,0 +1,210 @@
|
|||||||
|
########## begin .sha256sums.recreate
|
||||||
|
expected_sha256sums__t010_decompressed="\
|
||||||
|
24158f78c34c4ef94bb7773a6dda7231d289be76c2f5f60e8b9ddb3f800c100e *amd64-linux.elf/upx-3.91
|
||||||
|
24808d572483f4cd713d66894b3da406755038737007a78b076528e6407e3132 *amd64-linux.elf/upx-3.95
|
||||||
|
c5007328ffcec842bb808329470afd71c9f7bf6416f5f5c978be1f942fe72618 *amd64-win64.pe/upx-3.95.exe
|
||||||
|
f7279729eb975e4238f8b8ee56fefa41ccbeb35ef0ffe4c34f8047baab78fff5 *arm-linux.elf/upx-3.95
|
||||||
|
28d7ca8f0dfca8159e637eaf2057230b6e6719e07751aca1d19a45b5efed817c *arm-wince.pe/upx-3.91.exe
|
||||||
|
ce81113f8a4ff1cd806811cb80ab8bea5c9c6fbced47451c7f07e50700f9817b *arm64-linux.elf/upx-3.95
|
||||||
|
b1c1c38d50007616aaf8e942839648c80a6111023e0b411e5fa7a06c543aeb4a *armeb-linux.elf/upx-3.91
|
||||||
|
84b90eb0d617571fe4885639925b35ca6a61060cb2616bb5bf729b4d701653e4 *armeb-linux.elf/upx-3.95
|
||||||
|
bcac77a287289301a45fde9a75e4e6c9ad7f8d57856bae6eafaae12ae4445a34 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
|
7d331e508449497f64cd47abdd3f00f70307f508ad3fd692d333feb97beccead *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
|
730a513b72a094697f827e4ac1a4f8ef58a614fc7a7ad448fa58d60cd89af7ed *i386-linux.elf/upx-3.91
|
||||||
|
a1f3e5ffa7b2cfebe1e475ac1f4c7683b1b8b4e292aa0d04386cc0314dd162c9 *i386-linux.elf/upx-3.95
|
||||||
|
0dbc3c267ca8cd35ee3ea138b59c8b1ae35872c918be6d17df1a892b75710f9b *i386-win32.pe/upx-3.91.exe
|
||||||
|
e0dfcb440bb43d53cf68f0178429a5136f8f7f13544499ad17699a98a6f8ffc0 *i386-win32.pe/upx-3.95.exe
|
||||||
|
8e5333ea040f5594d3e67d5b09e005d52b3a52ef55099a7c11d7e39ead38e66d *m68k-atari.tos/upx-3.91.ttp
|
||||||
|
8902f38ec3d95d8e077e3ab5fdbb5bad408859913a35deb87041f4f053cd6605 *mips-linux.elf/upx-3.95
|
||||||
|
c3f44b4d00a87384c03a6f9e7aec809c1addfe3e271244d38a474f296603088c *mipsel-linux.elf/upx-3.91
|
||||||
|
dd1496bc4e9c32a5d5dd47e3eaabf7b134ca001d48807eebfd3d5e28c8a2ab58 *mipsel-linux.elf/upx-3.95
|
||||||
|
b8c35fa2956da17ca505956e9f5017bb5f3a746322647e24ccb8ff28059cafa4 *powerpc-linux.elf/upx-3.91
|
||||||
|
2bc00a51daa0bada19a8fa1bd2c227a8596844fa1b0aa3611087f195072700e2 *powerpc-linux.elf/upx-3.95
|
||||||
|
a0950546dc17fca9437219431d8ddb0249ce5b08e899e0c799a87ac982adee70 *powerpc64le-linux.elf/upx-3.95
|
||||||
|
"
|
||||||
|
expected_sha256sums__t020_canonicalized="\
|
||||||
|
24158f78c34c4ef94bb7773a6dda7231d289be76c2f5f60e8b9ddb3f800c100e *amd64-linux.elf/upx-3.91
|
||||||
|
24808d572483f4cd713d66894b3da406755038737007a78b076528e6407e3132 *amd64-linux.elf/upx-3.95
|
||||||
|
c5007328ffcec842bb808329470afd71c9f7bf6416f5f5c978be1f942fe72618 *amd64-win64.pe/upx-3.95.exe
|
||||||
|
f7279729eb975e4238f8b8ee56fefa41ccbeb35ef0ffe4c34f8047baab78fff5 *arm-linux.elf/upx-3.95
|
||||||
|
28d7ca8f0dfca8159e637eaf2057230b6e6719e07751aca1d19a45b5efed817c *arm-wince.pe/upx-3.91.exe
|
||||||
|
ce81113f8a4ff1cd806811cb80ab8bea5c9c6fbced47451c7f07e50700f9817b *arm64-linux.elf/upx-3.95
|
||||||
|
b1c1c38d50007616aaf8e942839648c80a6111023e0b411e5fa7a06c543aeb4a *armeb-linux.elf/upx-3.91
|
||||||
|
84b90eb0d617571fe4885639925b35ca6a61060cb2616bb5bf729b4d701653e4 *armeb-linux.elf/upx-3.95
|
||||||
|
bcac77a287289301a45fde9a75e4e6c9ad7f8d57856bae6eafaae12ae4445a34 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
|
7d331e508449497f64cd47abdd3f00f70307f508ad3fd692d333feb97beccead *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
|
730a513b72a094697f827e4ac1a4f8ef58a614fc7a7ad448fa58d60cd89af7ed *i386-linux.elf/upx-3.91
|
||||||
|
a1f3e5ffa7b2cfebe1e475ac1f4c7683b1b8b4e292aa0d04386cc0314dd162c9 *i386-linux.elf/upx-3.95
|
||||||
|
0dbc3c267ca8cd35ee3ea138b59c8b1ae35872c918be6d17df1a892b75710f9b *i386-win32.pe/upx-3.91.exe
|
||||||
|
e0dfcb440bb43d53cf68f0178429a5136f8f7f13544499ad17699a98a6f8ffc0 *i386-win32.pe/upx-3.95.exe
|
||||||
|
8e5333ea040f5594d3e67d5b09e005d52b3a52ef55099a7c11d7e39ead38e66d *m68k-atari.tos/upx-3.91.ttp
|
||||||
|
8902f38ec3d95d8e077e3ab5fdbb5bad408859913a35deb87041f4f053cd6605 *mips-linux.elf/upx-3.95
|
||||||
|
c3f44b4d00a87384c03a6f9e7aec809c1addfe3e271244d38a474f296603088c *mipsel-linux.elf/upx-3.91
|
||||||
|
dd1496bc4e9c32a5d5dd47e3eaabf7b134ca001d48807eebfd3d5e28c8a2ab58 *mipsel-linux.elf/upx-3.95
|
||||||
|
b8c35fa2956da17ca505956e9f5017bb5f3a746322647e24ccb8ff28059cafa4 *powerpc-linux.elf/upx-3.91
|
||||||
|
2bc00a51daa0bada19a8fa1bd2c227a8596844fa1b0aa3611087f195072700e2 *powerpc-linux.elf/upx-3.95
|
||||||
|
a0950546dc17fca9437219431d8ddb0249ce5b08e899e0c799a87ac982adee70 *powerpc64le-linux.elf/upx-3.95
|
||||||
|
"
|
||||||
|
expected_sha256sums__t110_compress_ucl_nrv2b_3_no_filter="\
|
||||||
|
82a3c42af2aae745b6b233fb4c0d3b60c3a2b224ada7af4b81d062d913503bac *amd64-linux.elf/upx-3.91
|
||||||
|
8959e46212b736476f517f911b7740038da882b30788efebf71d0108a01cecf8 *amd64-linux.elf/upx-3.95
|
||||||
|
099a690a01bb8e08bb88a09919241c499aae1fa282f3fa49588f1240b1fdd3e8 *amd64-win64.pe/upx-3.95.exe
|
||||||
|
39f86a05b5a7065e13e028638d324d9ddbf72fc537f0a62ad4637364722249f2 *arm-linux.elf/upx-3.95
|
||||||
|
a6d50d99a37ed7d52ea6b53be1d2ce57550139276d450be0ccfc0c61eac99498 *arm-wince.pe/upx-3.91.exe
|
||||||
|
7cfb366a6ed04c6a2706a7cc28411c6f190dfde56403fc52eb1677130dd4307f *arm64-linux.elf/upx-3.95
|
||||||
|
9532ef921b3bfb02deaeb59cb33aaa499132af689fa1df51499790f26e99a790 *armeb-linux.elf/upx-3.91
|
||||||
|
b076ac9531bee0fbcf44824c2baf83284e747bb381325076c0a1466b9002581c *armeb-linux.elf/upx-3.95
|
||||||
|
5c365ab8f4c5811a55cceab8d6bfa59ee56c89a966d423e1f734cd27745e7191 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
|
70c13950a28362bf4d5f49b496f683e2ed2d28875891cff283e11f2916163956 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
|
32649cd041f5bee83d02b065c486ac8f26dd29d28a05c36503d42edd62ce7767 *i386-linux.elf/upx-3.91
|
||||||
|
f8dc23edc677f99075746f5f722ceb1642a82e3f38e5041fa1bf232016bdfc6e *i386-linux.elf/upx-3.95
|
||||||
|
1ab486ab59e331a811b7b16880b0673443a378442d875067377d4427075e124c *i386-win32.pe/upx-3.91.exe
|
||||||
|
f0416ec4793a0eed79858feaec6e5f9e04e8cdd7f7fe8bdef9c25fffbef6d358 *i386-win32.pe/upx-3.95.exe
|
||||||
|
2139848afeae725b6d7d95786a7ac5f07bf7116a76dfee169f99b3444cfca277 *m68k-atari.tos/upx-3.91.ttp
|
||||||
|
45c6f581807c0382462911899d30957d10ff58e6f2c4fde15d2187a0affa7785 *mips-linux.elf/upx-3.95
|
||||||
|
bc1ab2df1985aec60f78b1ee7adf52c6bc30d207dc4aca5f7f3b2cc187cc98ed *mipsel-linux.elf/upx-3.91
|
||||||
|
29d67983278a5149d122eb98b2f73f8abb648bc88cfcaae7ad468d69d5dbe3c4 *mipsel-linux.elf/upx-3.95
|
||||||
|
0a652f004aac31d2baa4610561ecd8210841f366b2f210953212a9e0750c301f *powerpc-linux.elf/upx-3.91
|
||||||
|
2bfc2e143736f378904f0f1322aaaf4086877fb37fd783ab4d0789825d59e6d5 *powerpc-linux.elf/upx-3.95
|
||||||
|
2c8657627f2247963d0187d6e5cf02fbe3bd84f2475908c234ecc1ae081b9ba7 *powerpc64le-linux.elf/upx-3.95
|
||||||
|
"
|
||||||
|
expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
|
||||||
|
fcbe8cf92e76268950bd09e1285ce4cd9756d5505784e1e495a54623a88de8c5 *amd64-linux.elf/upx-3.91
|
||||||
|
272dbd7aa6eba2202008b9d5853fe8e24e894e7df66bf988690d96f428aeb93d *amd64-linux.elf/upx-3.95
|
||||||
|
7b7bd8e5c0d4e29ef9f3b97eb76dfe0afbe711172e25ee9c3079d656c5d036dd *amd64-win64.pe/upx-3.95.exe
|
||||||
|
21af84a819e789fad98534cb973c4ad3806cf7676caf546c9e4ace33d559e7e0 *arm-linux.elf/upx-3.95
|
||||||
|
74060375496ef1450252c9b30547ef3235b79e2b57666500dd44c61fedc0539e *arm-wince.pe/upx-3.91.exe
|
||||||
|
efb6240ce6a2be00906a4a3ba7652160e5aee43ed968961c1bc55ea370f6cd93 *arm64-linux.elf/upx-3.95
|
||||||
|
dc24337091e85595bf9ce259a702c52e9cc10e31d759df8f1ad26e65c148ed04 *armeb-linux.elf/upx-3.91
|
||||||
|
cde5cc6967cbee06c260a25eef3d7cdaf430bf8a63db5a6dfc8a9079ec895c52 *armeb-linux.elf/upx-3.95
|
||||||
|
217f050aecd01f04ef9eba37fed518c4380f170d3cdb483ae019312fad827490 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
|
5a909066dd5aac865e36a26f7d002a8ddf6ae57e93a1dc1f6582b922388e9489 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
|
909650339b3a93360b622a4ab2c9a2e489206ddbd4af2556101ff68a1082cf0f *i386-linux.elf/upx-3.91
|
||||||
|
d778256d361ab72ea9629a45a8c8ea501007978f64df6a003024f7a07efaf8e4 *i386-linux.elf/upx-3.95
|
||||||
|
8217b20bac36090189a7415196e96df93e0110f5d716d15ed84d0c1ac4b001e5 *i386-win32.pe/upx-3.91.exe
|
||||||
|
eb6a8c4e3652c75f4b054cc36933a4c9853ca23e4f2790ad6505368dc1ba82b7 *i386-win32.pe/upx-3.95.exe
|
||||||
|
29bf5c38da5cf33aecf6c48c55acdb0d73a3878790786f48815cbd8ad1819037 *m68k-atari.tos/upx-3.91.ttp
|
||||||
|
5163bf81989cf96127e833eacafa605248b3139ade256512122a8d56a00d8475 *mips-linux.elf/upx-3.95
|
||||||
|
6da6103fb68113c930f59455a504a5fbb1b982971d488f6cb34e6e19154eb812 *mipsel-linux.elf/upx-3.91
|
||||||
|
98c5ea01aeabb9d3d54b47dbce13b5884e3ff2b856598d191fe50eb026da48b4 *mipsel-linux.elf/upx-3.95
|
||||||
|
35458012d9e90013c6ff6442b9a5b2a5dc90ea1451c7653b0d144ea8be9b8fd5 *powerpc-linux.elf/upx-3.91
|
||||||
|
a61669951a13a530fa06d9e0286c4c9ff18e47be836ccdde4c24acc5d0e7dda0 *powerpc-linux.elf/upx-3.95
|
||||||
|
852844b06078a5c820936e31cd52f4edc44b42ee9aa0edca9a21ee41b4442af5 *powerpc64le-linux.elf/upx-3.95
|
||||||
|
"
|
||||||
|
expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
|
||||||
|
24d0578ee2a83d40de7740c7141c1b102961c505a04155ca3b66c73c493eee64 *amd64-linux.elf/upx-3.91
|
||||||
|
4253f580fa8bb00db0a093c3826350f759f096098fcb43195eb71f4213479d85 *amd64-linux.elf/upx-3.95
|
||||||
|
626ac9e02a60c25ab26bfd96120ef728abd3c7ed56b23b81cf22f439a8673e5f *amd64-win64.pe/upx-3.95.exe
|
||||||
|
40d1f54eb707b51223a36e939caabd7a4df81c87edd12f36c40f525bcf59f919 *arm-linux.elf/upx-3.95
|
||||||
|
8f29c06b3eb3770eae267e6adad6bbaf3c03e12a1649e085d044d7ea03638d3b *arm-wince.pe/upx-3.91.exe
|
||||||
|
bebb9c6327d88eb92bad9b1182d4f8f732caaed4e6aff169057ad108016a6f72 *arm64-linux.elf/upx-3.95
|
||||||
|
94010dc973ce886131b6ecd9775e0a3e9ed421503bfc74954f31a154e4a60d39 *armeb-linux.elf/upx-3.91
|
||||||
|
49b3c157b56c2cf2b206447b981d7e74561fde02569ccb73814a187163a1e05a *armeb-linux.elf/upx-3.95
|
||||||
|
12fd7e4e4e5c4067880e7e3db0526601f67d1456e7fa2c77e46beb3c10234bb1 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
|
3771f947c9ce27221c3c647aa6814cc990734cd4f5ec8b4a1e4fb890e8352130 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
|
27141ee7a92c81461233e0f7ef2dd22bf9d086c6b006af9a7a63906ea998a8b3 *i386-linux.elf/upx-3.91
|
||||||
|
bdeda6183b13f14b389829be4c23e8aeb202ff16b9b5f6644ec98ef448529780 *i386-linux.elf/upx-3.95
|
||||||
|
37871a1a85954ced4211b3930d4f27acd51f77e999ea8801c01667f221ccde4a *i386-win32.pe/upx-3.91.exe
|
||||||
|
27a77ed9d8243e1f1ccf2051f80977c8727790823dcdfd33d788b97ee32482eb *i386-win32.pe/upx-3.95.exe
|
||||||
|
bd45c11476def67a48cd8c8b79fde0bcc10da4a4811fd1cd87acb4b8cb317f7c *m68k-atari.tos/upx-3.91.ttp
|
||||||
|
b2d63e1a494f9ad8296f7c5b90c22d67c4e554c6bd2d0a9685c8d45bf2b4cba4 *mips-linux.elf/upx-3.95
|
||||||
|
48772c5cc502e503978da73d6f72eea2cafa55c06726c3b61f8b80e17f523b18 *mipsel-linux.elf/upx-3.91
|
||||||
|
e7499fb50da2a7000e5ccb9d8b0d022c71ec449c81e2edf27e48e413f0258c1e *mipsel-linux.elf/upx-3.95
|
||||||
|
fdf8a7484ca0771d11509183639610fa0dcdb36d195013a8f4f754094545a259 *powerpc-linux.elf/upx-3.91
|
||||||
|
839de35bcc7e7beb185055c60ad8728731a0456c7a32bb69e30faee5646dfdbc *powerpc-linux.elf/upx-3.95
|
||||||
|
dccd1b5296c1a70533332e9eec2788f74abcebf223fb6e44642148bdcc63b195 *powerpc64le-linux.elf/upx-3.95
|
||||||
|
"
|
||||||
|
expected_sha256sums__t140_compress_lzma_2_no_filter="\
|
||||||
|
8bdcd33cb7073de57e3b72fcdfd52693d80e063c8f18c146fcbcb93feaa57438 *amd64-linux.elf/upx-3.91
|
||||||
|
c0cc9f01d4c74c003df410070f19181275650c96d6267b5af6d2029f72ecc2d5 *amd64-linux.elf/upx-3.95
|
||||||
|
32df633b40027b08da5a0cb4845294c971c2e133ee2506684979a3532c5fc685 *amd64-win64.pe/upx-3.95.exe
|
||||||
|
91474e9a68d5225916b2582ffbcae23d2644ece6f823686b1692edba0d909066 *arm-linux.elf/upx-3.95
|
||||||
|
19455d55f642e610df5f9071d59cde24d5db013ae8215a9946b3a995c6cb123a *arm-wince.pe/upx-3.91.exe
|
||||||
|
abd540824d65696fbb0aa45e1935f286435fc9c53049ac66d916cf53c39278b5 *arm64-linux.elf/upx-3.95
|
||||||
|
832db37f9c05d6e80e44d26974bc8368dcc02eadeeb37f4f79513855dc5e8ffb *armeb-linux.elf/upx-3.91
|
||||||
|
339086e40ae660fec688995a1fdb3b89487859891521a8dd03b44aaba9372331 *armeb-linux.elf/upx-3.95
|
||||||
|
3b4466fb3defcff86d7679b7c35929f959eba2e8d64f08099e3fbc5e7fd5aab9 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
|
6a722037156b5b75e6622f4ac8187d163a73f7e090c0b6374d0c745f84ba197c *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
|
b67cc7eaee651c5ee41b02ae1894c3740274a1dd258e734c7933c48edf81ed06 *i386-linux.elf/upx-3.91
|
||||||
|
68eb9861137a5d0c05367f671343556f145d40aac49c6f7455d081b263d3e1ff *i386-linux.elf/upx-3.95
|
||||||
|
906fbf9f6c1e3483f6e9f003c602f20c584b013cf89c51cd17c8095c514a1d1d *i386-win32.pe/upx-3.91.exe
|
||||||
|
ca1e4f751677eab4e24d73d04e69c4c7f645798fa6bb416468bddde9c5dda61c *i386-win32.pe/upx-3.95.exe
|
||||||
|
11fbc05a27d6e2468baa64efc58bf23693e90d3a374b267d4a72a866af56e284 *m68k-atari.tos/upx-3.91.ttp
|
||||||
|
a81d82d7606f1735889dbfa1a5de1c6d35209c31e6e56c48cc40c9470d07da54 *mips-linux.elf/upx-3.95
|
||||||
|
3ce5b8a9b36a71c33a644a8cd4fc9e5cb1009f5133d1df181c18c175b94143e4 *mipsel-linux.elf/upx-3.91
|
||||||
|
f2e03dad0165c3adb683c3bd8f26117dca53a577c8603441abeda911af07204f *mipsel-linux.elf/upx-3.95
|
||||||
|
174eb63cf809b0a105fccfa5318a754da6685610c3ffa3d81ba41ced4a040984 *powerpc-linux.elf/upx-3.91
|
||||||
|
01d6aa378efda299ade377d1bcd04611a467cb903efb82545205ed439c566c26 *powerpc-linux.elf/upx-3.95
|
||||||
|
e9b32f705ea249cfafcd3e6181f7632f38b304dcba0ab39690e8a5ffbcc2504f *powerpc64le-linux.elf/upx-3.95
|
||||||
|
"
|
||||||
|
expected_sha256sums__t150_compress_ucl_2_all_filters="\
|
||||||
|
9d2d9449ff3cd62389337d76d419306b18be18c48dc23c89b9048ab13856999d *amd64-linux.elf/upx-3.91
|
||||||
|
f221da0c79fa1a59de5becf341126b1a41f19c9860ce66676e927b0546956d16 *amd64-linux.elf/upx-3.95
|
||||||
|
a0c35f620eb4f5c49cc7c0ae591c9bc1ff39fe3b5a084a7038c37ac4242172be *amd64-win64.pe/upx-3.95.exe
|
||||||
|
a09b27147773e2288dc0a7075097bd76d86d0fdd6fb9d0726c4b928bc8b74b1b *arm-linux.elf/upx-3.95
|
||||||
|
ff5abf994119a68584d752f5d3ab120ec9f28b2a719efede55e6c71cb4d82b57 *arm-wince.pe/upx-3.91.exe
|
||||||
|
6801a06892b7d1a3534410bfb4a03aed6195dbc5012801a987f0a635f6b3af7a *arm64-linux.elf/upx-3.95
|
||||||
|
69587df298a09ccf3a1c147cec28942fb0419478163f75f61cf7b72538abeefe *armeb-linux.elf/upx-3.91
|
||||||
|
985f238569e6aa2c3973a281bfcfd13cfc9e638c10ebb5a3ff07c4051c97c488 *armeb-linux.elf/upx-3.95
|
||||||
|
fe14d316c0dc98bc49e6c0f5888a83b1fa8e58caea6d211301726fee0cdd020e *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
|
e4dd0a9565f7a501520997a48227d027e37fa3becf3b84e839c5f96aa169e601 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
|
301a0b90694809ad0be9d354a7a9d6baa3fa9b4ccd62264166c95d86142df164 *i386-linux.elf/upx-3.91
|
||||||
|
3a6c56ba29940b4ac3b42d23cdfd21d0331036b082e50f4d2d87e1508567591f *i386-linux.elf/upx-3.95
|
||||||
|
91d816d5ecee3ffa48bc624283a600758776790fe928c2dc1846a72cd4d9d14d *i386-win32.pe/upx-3.91.exe
|
||||||
|
1930f3a09c0ec1a12056be6469f12d048a572bcdd7a62dc2c006a1c46f09fcf6 *i386-win32.pe/upx-3.95.exe
|
||||||
|
9024f8d52cf40726f27c0782fe63eb15b6aa33789c97a343fb80b901df8a7468 *m68k-atari.tos/upx-3.91.ttp
|
||||||
|
4dbfb026a0e10ffb43b8053c1f32b20c1632f8963c93a3170230c0a7dbc3e805 *mips-linux.elf/upx-3.95
|
||||||
|
aaca5c6fdadb4f735b1f5ff99e1394ba711db28b1e22f1df9119ee2693c419b3 *mipsel-linux.elf/upx-3.91
|
||||||
|
9edd1d514102ed0955f9a333b1de41ca3550ec34d075dbd69dc09a7f6325b68e *mipsel-linux.elf/upx-3.95
|
||||||
|
1ffcbc5041300c223ef03dbbed131560f942033d3df55b317099d1a8ad2ced69 *powerpc-linux.elf/upx-3.91
|
||||||
|
9884be7a7d0a459e8d90ecdb663d2dfb166199e3ae614ef2478aa8d7dab215ef *powerpc-linux.elf/upx-3.95
|
||||||
|
7847d39cc94308d7509b1515eef2daee0fcca48678ec2540570a05d6d461e76c *powerpc64le-linux.elf/upx-3.95
|
||||||
|
"
|
||||||
|
expected_sha256sums__t160_compress_all_methods_1_no_filter="\
|
||||||
|
5f9e96872c68df382efb48502d5d81b8afe3240d4eba9f81643863b0c4db4c56 *amd64-linux.elf/upx-3.91
|
||||||
|
e9eeb7710b3e2d54c7cbabf7cb4de2c40c30efdf1dccbe5324bb58cfd665fbc8 *amd64-linux.elf/upx-3.95
|
||||||
|
46043947b045c1e7bb5a1e29b369a61609c5a7e7b5c89e029d3606e38703da4f *amd64-win64.pe/upx-3.95.exe
|
||||||
|
2b801d5b4f61ed2c90fd54648b1aad3f346f7539f4f8047c6d6585eafa443800 *arm-linux.elf/upx-3.95
|
||||||
|
6b5f6961874812665512518792cb5a21a7c013e5fb6e2da30e72591625983a13 *arm-wince.pe/upx-3.91.exe
|
||||||
|
444850947143d981137eb825225c2a09e9a67da186812d0c0b25304b9cefcca5 *arm64-linux.elf/upx-3.95
|
||||||
|
950e6cbae17f14cb53da024d814790aa006c019060cbc0a11a277eb5e0722cbb *armeb-linux.elf/upx-3.91
|
||||||
|
2a0e7f240ee8cabfa026a58aae0e9763eb4d21bb0ce59c538cb4a8bd0734c422 *armeb-linux.elf/upx-3.95
|
||||||
|
3094ac645a70cd5316e777208eb2af00116cab03b0924fed9f6f2f4d1335d975 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
|
97e1f9535799fb58b7814d20fc18ce78fabef669b7467da4ec0da952dc003597 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
|
6614ffb7d8f742a9407a99515608399e370732bcdf041b13280de5ecb83d6e35 *i386-linux.elf/upx-3.91
|
||||||
|
323c3943a677fe84d526da7707d865e57d28d9e24b5d7055e71bf3e9ffc924a8 *i386-linux.elf/upx-3.95
|
||||||
|
7a2deccab37f364e650df63ed3719433b38ee53193e29e7737bc352998a27281 *i386-win32.pe/upx-3.91.exe
|
||||||
|
0accf03fe46774a170710f5477f6e7095ba9ace0850bb3a1c697c1b1ec570be3 *i386-win32.pe/upx-3.95.exe
|
||||||
|
efb22c80605d58fb96a302c58fcc5c1bdf143f90a6874004fae6549df2a224c8 *m68k-atari.tos/upx-3.91.ttp
|
||||||
|
754295165a9c08364e9754322868c6f4df7c2772746d844a04fda3287907f362 *mips-linux.elf/upx-3.95
|
||||||
|
bf63ab0df4b2d45f3f156ebf9fd7e60e6cb175f688f68bd14b5e699e6b95872b *mipsel-linux.elf/upx-3.91
|
||||||
|
4a2894fb946d684d370f7d252abc43afcff0a339ef2aeaeaa23767ff3e6b15fd *mipsel-linux.elf/upx-3.95
|
||||||
|
fcb40e252de5e3a7f495d338ad6bf6dc73aee7d10513e06b07a270161fe449d8 *powerpc-linux.elf/upx-3.91
|
||||||
|
e282ca41f508ae63defc249aa2e4318540362ae8b3c40f31bf46946a6a1bf5f6 *powerpc-linux.elf/upx-3.95
|
||||||
|
8b67e3e700f6d5afb99bc561e5d2e5850b2eea4b5a854cab0c84766e6df2a4a6 *powerpc64le-linux.elf/upx-3.95
|
||||||
|
"
|
||||||
|
expected_sha256sums__t170_compress_all_methods_no_lzma_5_no_filter="\
|
||||||
|
42c2358cc7a6a1252c1fb8bb29562e3047d839a506720ef0dff098cbd6cd08c3 *amd64-linux.elf/upx-3.91
|
||||||
|
e11f33fa80dda7e2b547cc375c1802f5f075a80f12033c123c97b2d572ad8757 *amd64-linux.elf/upx-3.95
|
||||||
|
77230816a4ebc51a430e8304ea331399491c548d182aa001b8d653e2d7b6ea9a *amd64-win64.pe/upx-3.95.exe
|
||||||
|
54cb369bf7b8e1e55380a2a97bd7e644cb0da79982d1678eea7a668362d93610 *arm-linux.elf/upx-3.95
|
||||||
|
7818cd3cbc877d3781ae1ce0abbaf4a19186af55cb675229f406943d552694dd *arm-wince.pe/upx-3.91.exe
|
||||||
|
3186b21f336cae305bbcadcddc5691969752b4a97094f27344361d49037a9b48 *arm64-linux.elf/upx-3.95
|
||||||
|
1ff49ccf438feefb7a8c9467c6fa3d6ad218cf9abdf12870522a1b24fd26f0c6 *armeb-linux.elf/upx-3.91
|
||||||
|
b43bb20b5e372dd877015e0fffd18e908ed3d53ffa057624ab4242f07515e11a *armeb-linux.elf/upx-3.95
|
||||||
|
ce60084e86b17798e34e59c21b6cea28702d850f786f9e35e41a2bc873178f53 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
|
aa3f9f5742e5f7aa87a7578d92b54425da6eb4b173200408f3e30384c4089370 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
|
d63d34bffb7864f1af6c76edb85820b01f3ccb053528b075b81b1425feabe797 *i386-linux.elf/upx-3.91
|
||||||
|
e42f1febc0ca7f54adf7b2fd721aac2f9e72680e0e010ed2368f669f8d341071 *i386-linux.elf/upx-3.95
|
||||||
|
21d932deff36167a2f030773e8f68f952fc4fb67bf1864c515f3930f572fb624 *i386-win32.pe/upx-3.91.exe
|
||||||
|
7665c75c47fc3b7913e0849187070e8ddf73f584f1e2495f51d3ebb32cf0ad21 *i386-win32.pe/upx-3.95.exe
|
||||||
|
17420ed467a4f326c79c13d0b89b6d3a4dd6a2d3b96f199d7e9dd31528439f2f *m68k-atari.tos/upx-3.91.ttp
|
||||||
|
d93f08394e03b17044be5f22ff496913aeaf0a6927d2b926452aadc32af2a479 *mips-linux.elf/upx-3.95
|
||||||
|
b0d689013481cc7f668a2559a7d696356ab7adafe68ae49f9e7e68ced1d6a8ff *mipsel-linux.elf/upx-3.91
|
||||||
|
2593ca7f7609a44ae87c22a2d72e0470737253967eb82f9a8ceda9496b195503 *mipsel-linux.elf/upx-3.95
|
||||||
|
236f784979481ed09b875fb7302bb31beb151140752ea62ef9ad4aa0ec073a4f *powerpc-linux.elf/upx-3.91
|
||||||
|
70d0da07e4ac2e249864644fdf29935352452416f70b7362d0e62ab87ec05653 *powerpc-linux.elf/upx-3.95
|
||||||
|
f98e35412b9fda2aaa58c6f84b843b3d9493781b6510ac4ec0af9ccb9327a141 *powerpc64le-linux.elf/upx-3.95
|
||||||
|
"
|
||||||
|
########## end .sha256sums.recreate
|
||||||
|
|
||||||
@@ -36,8 +36,7 @@ if [[ ! -d $upx_testsuite_SRCDIR/files/packed ]]; then exit 1; fi
|
|||||||
# ************************************************************************/
|
# ************************************************************************/
|
||||||
|
|
||||||
testsuite_header() {
|
testsuite_header() {
|
||||||
local x="==========="; x="$x$x$x$x$x$x$x"
|
print_header "$1"
|
||||||
echo -e "\n${x}\n${1}\n${x}\n"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
testsuite_split_f() {
|
testsuite_split_f() {
|
||||||
@@ -45,7 +44,7 @@ testsuite_split_f() {
|
|||||||
fb=$(basename "$1")
|
fb=$(basename "$1")
|
||||||
fsubdir=$(basename "$fd")
|
fsubdir=$(basename "$fd")
|
||||||
# sanity checks
|
# sanity checks
|
||||||
if [[ ! -f $f || -z $fsubdir || -z $fb ]]; then
|
if [[ ! -f "$1" || -z "$fsubdir" || -z "$fb" ]]; then
|
||||||
fd= fb= fsubdir=
|
fd= fb= fsubdir=
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -126,107 +125,7 @@ recreate_expected_sha256sums() {
|
|||||||
echo "########## end .sha256sums.recreate" >> "$o"
|
echo "########## end .sha256sums.recreate" >> "$o"
|
||||||
}
|
}
|
||||||
|
|
||||||
########## begin .sha256sums.recreate
|
source "$argv0dir/travis_testsuite_1-expected_sha256sums.sh" || exit 1
|
||||||
expected_sha256sums__t010_decompressed="\
|
|
||||||
24158f78c34c4ef94bb7773a6dda7231d289be76c2f5f60e8b9ddb3f800c100e *amd64-linux.elf/upx-3.91
|
|
||||||
28d7ca8f0dfca8159e637eaf2057230b6e6719e07751aca1d19a45b5efed817c *arm-wince.pe/upx-3.91.exe
|
|
||||||
b1c1c38d50007616aaf8e942839648c80a6111023e0b411e5fa7a06c543aeb4a *armeb-linux.elf/upx-3.91
|
|
||||||
bcac77a287289301a45fde9a75e4e6c9ad7f8d57856bae6eafaae12ae4445a34 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
|
||||||
730a513b72a094697f827e4ac1a4f8ef58a614fc7a7ad448fa58d60cd89af7ed *i386-linux.elf/upx-3.91
|
|
||||||
0dbc3c267ca8cd35ee3ea138b59c8b1ae35872c918be6d17df1a892b75710f9b *i386-win32.pe/upx-3.91.exe
|
|
||||||
8e5333ea040f5594d3e67d5b09e005d52b3a52ef55099a7c11d7e39ead38e66d *m68k-atari.tos/upx-3.91.ttp
|
|
||||||
c3f44b4d00a87384c03a6f9e7aec809c1addfe3e271244d38a474f296603088c *mipsel-linux.elf/upx-3.91
|
|
||||||
b8c35fa2956da17ca505956e9f5017bb5f3a746322647e24ccb8ff28059cafa4 *powerpc-linux.elf/upx-3.91
|
|
||||||
"
|
|
||||||
expected_sha256sums__t020_canonicalized="\
|
|
||||||
24158f78c34c4ef94bb7773a6dda7231d289be76c2f5f60e8b9ddb3f800c100e *amd64-linux.elf/upx-3.91
|
|
||||||
28d7ca8f0dfca8159e637eaf2057230b6e6719e07751aca1d19a45b5efed817c *arm-wince.pe/upx-3.91.exe
|
|
||||||
b1c1c38d50007616aaf8e942839648c80a6111023e0b411e5fa7a06c543aeb4a *armeb-linux.elf/upx-3.91
|
|
||||||
bcac77a287289301a45fde9a75e4e6c9ad7f8d57856bae6eafaae12ae4445a34 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
|
||||||
730a513b72a094697f827e4ac1a4f8ef58a614fc7a7ad448fa58d60cd89af7ed *i386-linux.elf/upx-3.91
|
|
||||||
0dbc3c267ca8cd35ee3ea138b59c8b1ae35872c918be6d17df1a892b75710f9b *i386-win32.pe/upx-3.91.exe
|
|
||||||
8e5333ea040f5594d3e67d5b09e005d52b3a52ef55099a7c11d7e39ead38e66d *m68k-atari.tos/upx-3.91.ttp
|
|
||||||
c3f44b4d00a87384c03a6f9e7aec809c1addfe3e271244d38a474f296603088c *mipsel-linux.elf/upx-3.91
|
|
||||||
b8c35fa2956da17ca505956e9f5017bb5f3a746322647e24ccb8ff28059cafa4 *powerpc-linux.elf/upx-3.91
|
|
||||||
"
|
|
||||||
expected_sha256sums__t110_compress_ucl_nrv2b_3_no_filter="\
|
|
||||||
52d0189f9ed16162332fbe359d723753ca1b7d7374a249d6b16144e363073384 *amd64-linux.elf/upx-3.91
|
|
||||||
0af0b3df9ca5b34ebc8ed06b3bf46807e585032961f053abfeefcb60bd63907e *arm-wince.pe/upx-3.91.exe
|
|
||||||
851ea686cc1d6ef7c63978829f0bfe40c761d00e9f07c3d4f9ce59201da4409c *armeb-linux.elf/upx-3.91
|
|
||||||
3345fda466927211ed3291ea1255fa09937fcfad974ffb1120deeefe6f655a9e *i386-dos32.djgpp2.coff/upx-3.91.exe
|
|
||||||
8631629945812b6766da0187390b4d26e830f39a79d80aacda196e678a4be10c *i386-linux.elf/upx-3.91
|
|
||||||
06794bdb9a8085ca5ef577648bf39402868a507f2a0bd02285c807929499aba4 *i386-win32.pe/upx-3.91.exe
|
|
||||||
6c9e164baa12c45ca8d55788b34e8fabdddb52374200444d42ff48c1d84103eb *m68k-atari.tos/upx-3.91.ttp
|
|
||||||
1f3ae2bde7c72e60d3c12fccf572c5aa5dbee566d1d28029e62a8b921c6d77bd *mipsel-linux.elf/upx-3.91
|
|
||||||
181345ff1dd1c35944ec79d1197ee223913617cdd148a576cd3b9b776b8e86c2 *powerpc-linux.elf/upx-3.91
|
|
||||||
"
|
|
||||||
expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
|
|
||||||
d90f1e94fb8a1d5c123e1c13b30db148870c36ff6f00fc5677bd9f05bae1fc02 *amd64-linux.elf/upx-3.91
|
|
||||||
e09a089e642f33502a35ab9a416142d3db4dbb67930366054e25c390678c3f7c *arm-wince.pe/upx-3.91.exe
|
|
||||||
b794cc520ab507887324fe04e1c36e1ed0b63ecdb29241213a3a3cf980e16cc2 *armeb-linux.elf/upx-3.91
|
|
||||||
ea5df377a14457fc4a4791e67859f77f8fe8b94ed81fd13666618fc690d70987 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
|
||||||
5f0876049576446707270baa651eaa724891cccbee268e18450812d5be5e9990 *i386-linux.elf/upx-3.91
|
|
||||||
4a65a19b430d50b9f15786342e3de86feb3627af07743b50a9ebfedb10c59a08 *i386-win32.pe/upx-3.91.exe
|
|
||||||
d7514121a811a36112cb2f3e42c3284e03a7807e972778229c62c075656d796f *m68k-atari.tos/upx-3.91.ttp
|
|
||||||
0effcd336be6dcb092e37bafc9611c99c1d19c1c53a8ca6a26834d9f5f9eb56c *mipsel-linux.elf/upx-3.91
|
|
||||||
dfe218814633aa9ed47477bf021ac0bae0b491ebf9d4ff44194f3d7195e5a200 *powerpc-linux.elf/upx-3.91
|
|
||||||
"
|
|
||||||
expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
|
|
||||||
00b67a1cc766b13a6167e0f672cf46b62f0879b6318ed9f548f670b011b3f185 *amd64-linux.elf/upx-3.91
|
|
||||||
a377c263a3d981af1ec278a418fcdd09298d76cece0e7c7c9af63f20ccba769d *arm-wince.pe/upx-3.91.exe
|
|
||||||
dbf2fa9b4fa5319c52b25d34aa6f57577b2a63e7241b6d4600915de0f3400190 *armeb-linux.elf/upx-3.91
|
|
||||||
4d925cff00b8959324c0838284f4619831b8080136cef05131906149fdec5bbc *i386-dos32.djgpp2.coff/upx-3.91.exe
|
|
||||||
b114b257ff5de11b75eb4489d2cb2bd3be6cf9cf141e36f02b0ab781d0f9a3ff *i386-linux.elf/upx-3.91
|
|
||||||
ce874eafe18c0f09928992a3aa1f5fe9f0be9d89b87b39ecbcf1c460e4b8e0f7 *i386-win32.pe/upx-3.91.exe
|
|
||||||
c60b3faccc59ff37c2e1e3c908d4fe01a2532e7ac1abd4c4ec4ecee974a0e8bd *m68k-atari.tos/upx-3.91.ttp
|
|
||||||
2b74a6a831c7f9f4df22c65f8a5748a2b6cf6fd68232b0d250737938de27efc6 *mipsel-linux.elf/upx-3.91
|
|
||||||
47ddad5acc39e21d66e471c8af8d9b52e8dd8d7ad89631f771c2ea4d218f441e *powerpc-linux.elf/upx-3.91
|
|
||||||
"
|
|
||||||
expected_sha256sums__t140_compress_lzma_2_no_filter="\
|
|
||||||
f67ce2b6d4d36367a249faeb802df51dbc56019754c0f4606b5a6f97b72a54d1 *amd64-linux.elf/upx-3.91
|
|
||||||
57be6aa4f1e5ee6ef6f5eb8694b22eb07c3ea5cc9b9ebfde75db4c9a04a71a5a *arm-wince.pe/upx-3.91.exe
|
|
||||||
ef18c1ae56a037d15f0494f4b835c1336a43745edba87c783f62745488008783 *armeb-linux.elf/upx-3.91
|
|
||||||
54a6158bc6bd8cc28d3abc53cc5cf9b63c3c63ae884e96fb6d6ea974c7426206 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
|
||||||
801d1761289f94d7f51effb88e100832d14ae96398844084b9d10852886c4731 *i386-linux.elf/upx-3.91
|
|
||||||
f828953a66d7b3394dd2514b5972680a0cc651bd198b7607f6d3f6f6cc390a0e *i386-win32.pe/upx-3.91.exe
|
|
||||||
587b5f1f529da60f5820b8f811743aaad59e3fa9407930de1ab433863f7262a4 *m68k-atari.tos/upx-3.91.ttp
|
|
||||||
84c811f5d27bac393610bfad4180258494c43d691c13eb57394ab95d4736e621 *mipsel-linux.elf/upx-3.91
|
|
||||||
ed83830ab5e1753a742cf4981401fd8d5bdaabcfdeb385a2e8087aeb46f93512 *powerpc-linux.elf/upx-3.91
|
|
||||||
"
|
|
||||||
expected_sha256sums__t150_compress_ucl_2_all_filters="\
|
|
||||||
2849771c8799d7a446b54ad9914d679e315a9f0d9440f9728c6d5ab6541ed494 *amd64-linux.elf/upx-3.91
|
|
||||||
7ccbe7d7822cd9fed9b3c902c2bcb80f85df4f5bbb4e9e850257435ffa375a38 *arm-wince.pe/upx-3.91.exe
|
|
||||||
c6849deffc7bb1976c18a4815bca0b8fd0b6d19e4136965108daa6382efae2d5 *armeb-linux.elf/upx-3.91
|
|
||||||
c04818c54d68c99f345ee7995634dffbe7f1c2f2db8f2b510bba461d9125f5a9 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
|
||||||
a3758350a0454fb78060b6d6e48d8f000e17a628b6041e8c82e3990e0b3aabe9 *i386-linux.elf/upx-3.91
|
|
||||||
b4f27ba234a5c9b4f68e2067602a180c02f95fb044830f54a45267fe1c50bb83 *i386-win32.pe/upx-3.91.exe
|
|
||||||
dd9fb59d57a7157af1a44559f6ebd8a293b0988c66b4d0951c949f88f814bf8f *m68k-atari.tos/upx-3.91.ttp
|
|
||||||
c0bc81487114b9d158ffe1dbd4081b9e3636695c63f11b3e204033b56fc69706 *mipsel-linux.elf/upx-3.91
|
|
||||||
0a700713f0c7ff19a534963f5ab95a63d2f185f82d0c42ce8c1a485aba4c1147 *powerpc-linux.elf/upx-3.91
|
|
||||||
"
|
|
||||||
expected_sha256sums__t160_compress_all_methods_1_no_filter="\
|
|
||||||
831b0dd82d2c8fb058e8300bda5dd51657a709e76c45e0c372d9cf83c2e06f31 *amd64-linux.elf/upx-3.91
|
|
||||||
057b08389af5a31a0bf4baf03d09eb07f4698f8ddec615ae35795cec62132966 *arm-wince.pe/upx-3.91.exe
|
|
||||||
49b6b8d4f04d9078686372a315e7768fc882ad66bebb67225fa0b2255b5dd1c9 *armeb-linux.elf/upx-3.91
|
|
||||||
aef085cb86ef29d7aa380a3daea403f53659af1615ceeaa76e609dc793f50cfd *i386-dos32.djgpp2.coff/upx-3.91.exe
|
|
||||||
52087d4a2c17445b0e8d5238ec3abd2ca5cd909513cff76bf42232f33d93903f *i386-linux.elf/upx-3.91
|
|
||||||
e669d7c4fec901130dd387dc8f95e3b3f5e739d6ef0bfac10080dbd257084ae6 *i386-win32.pe/upx-3.91.exe
|
|
||||||
40cd5a94039a1703986a68dd404290aa7c27fd8c184fa4c651467b8c2d621a5d *m68k-atari.tos/upx-3.91.ttp
|
|
||||||
b1db1d04e350972aa06216ec43d12a451abf5c928c885b0c442f9436c804e84e *mipsel-linux.elf/upx-3.91
|
|
||||||
65602c3e1e3e152d44d9f803281d4021bfd91aab825b72d8901faf4d7d9b593e *powerpc-linux.elf/upx-3.91
|
|
||||||
"
|
|
||||||
expected_sha256sums__t170_compress_all_methods_no_lzma_5_no_filter="\
|
|
||||||
bce397f12372437802d887d203bb2f8e4755dbe1a0e3c6bb9fa9cccd3306eef7 *amd64-linux.elf/upx-3.91
|
|
||||||
84b1fe14dbff7d4e2f1bcfee9b6e3c73f68eb5b95b37cbf2c655340bd959bfa3 *arm-wince.pe/upx-3.91.exe
|
|
||||||
1b6ac9c0893b3093d47e403a14a5d346ae3a0f135ecdbe3bb04fc0542abd469b *armeb-linux.elf/upx-3.91
|
|
||||||
d27237cd4b55c80d2b6c7da8d70ffc4f390290fcc550eec06c795e92d934b72a *i386-dos32.djgpp2.coff/upx-3.91.exe
|
|
||||||
2032623990d22b2cf8df5f2c0b581de5fd53869869b65818ea023a6857c4eff0 *i386-linux.elf/upx-3.91
|
|
||||||
51e91ff8226517ad8cd06d240e2c6c2f3d3e4033af1e593a5b294356d1bb5d33 *i386-win32.pe/upx-3.91.exe
|
|
||||||
b371684bbb2693797dd1164159de3bff9618bf6b99536542f57da07093dbb649 *m68k-atari.tos/upx-3.91.ttp
|
|
||||||
7c1fa54b86f3e5f3410216aa627bd32680d7bd8210776a14762566cb2ea37d52 *mipsel-linux.elf/upx-3.91
|
|
||||||
5c60d0817feeb4dde55be90e552ccddc81591fbaecb899c3a21afc91c0ceb3b9 *powerpc-linux.elf/upx-3.91
|
|
||||||
"
|
|
||||||
########## end .sha256sums.recreate
|
|
||||||
|
|
||||||
# /***********************************************************************
|
# /***********************************************************************
|
||||||
# // init
|
# // init
|
||||||
@@ -269,6 +168,7 @@ if [[ $BM_B =~ (^|\+)coverage($|\+) ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
export UPX="--prefer-ucl --no-color --no-progress"
|
export UPX="--prefer-ucl --no-color --no-progress"
|
||||||
|
export UPX_DISABLE_GITREV_WARNING=1
|
||||||
|
|
||||||
# let's go
|
# let's go
|
||||||
if ! $upx_run --version; then echo "UPX-ERROR: FATAL: upx --version FAILED"; exit 1; fi
|
if ! $upx_run --version; then echo "UPX-ERROR: FATAL: upx --version FAILED"; exit 1; fi
|
||||||
@@ -286,7 +186,7 @@ testdir=t010_decompressed
|
|||||||
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
mkdir $testdir; v=expected_sha256sums__$testdir; echo -n "${!v}" >$testdir/.sha256sums.expected
|
||||||
|
|
||||||
testsuite_header $testdir
|
testsuite_header $testdir
|
||||||
for f in $upx_testsuite_SRCDIR/files/packed/*/upx-3.91*; do
|
for f in $upx_testsuite_SRCDIR/files/packed/*/upx-3.9[15]*; do
|
||||||
testsuite_split_f $f
|
testsuite_split_f $f
|
||||||
[[ -z $fb ]] && continue
|
[[ -z $fb ]] && continue
|
||||||
echo "# $f"
|
echo "# $f"
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,6 @@
|
|||||||
/.bzr*
|
/.bzr*
|
||||||
/.hg*
|
/.hg*
|
||||||
|
/.vscode*
|
||||||
/Makevars.global*
|
/Makevars.global*
|
||||||
/build*
|
/build*
|
||||||
/maint*
|
/maint*
|
||||||
@@ -43,7 +44,6 @@ src/stub/tmp*/*.bin
|
|||||||
src/stub/tmp*/*.bin.bindump
|
src/stub/tmp*/*.bin.bindump
|
||||||
src/stub/tmp*/*.bin.disasm
|
src/stub/tmp*/*.bin.disasm
|
||||||
src/stub/tmp*/*.d
|
src/stub/tmp*/*.d
|
||||||
src/stub/tmp*/*.map
|
|
||||||
src/stub/tmp*/*.o
|
src/stub/tmp*/*.o
|
||||||
src/stub/tmp*/*.o.disasm
|
src/stub/tmp*/*.o.disasm
|
||||||
src/stub/tmp*/mips.r3000-*.[is]
|
src/stub/tmp*/mips.r3000-*.[is]
|
||||||
|
|||||||
-295
@@ -1,295 +0,0 @@
|
|||||||
# Support for GibLab CI -- https://gitlab.com/
|
|
||||||
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
|
|
||||||
|
|
||||||
before_script:
|
|
||||||
- export TRAVIS_OS_NAME=linux
|
|
||||||
- unset CROSS C B T X
|
|
||||||
- uname -a; pwd; id; umask
|
|
||||||
- cat /etc/os-release || true
|
|
||||||
- |
|
|
||||||
if [[ $CI_BUILD_NAME =~ ^(CentOS|Fedora|OpenSUSE) ]]; then
|
|
||||||
time rpm -qa | LC_ALL=C sort
|
|
||||||
fi
|
|
||||||
- |
|
|
||||||
if [[ $CI_BUILD_NAME =~ ^(Debian|Ubuntu) ]]; then
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
|
||||||
time dpkg -l
|
|
||||||
if [[ $CI_BUILD_NAME =~ ^Ubuntu1604- ]]; then
|
|
||||||
dpkg --add-architecture i386
|
|
||||||
fi;
|
|
||||||
time apt-get -yq update
|
|
||||||
fi
|
|
||||||
-
|
|
||||||
if [[ $CI_BUILD_NAME =~ ^CentOS5- ]]; then
|
|
||||||
time rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm;
|
|
||||||
time yum install -y
|
|
||||||
coreutils curl diffutils grep gzip sed
|
|
||||||
bzip2 file findutils git openssh-clients openssl perl tar wget which xz
|
|
||||||
gcc gcc-c++ make valgrind
|
|
||||||
glibc-devel libstdc++-devel zlib-devel
|
|
||||||
glibc-devel.i386 libstdc++-devel.i386 zlib-devel.i386;
|
|
||||||
fi
|
|
||||||
-
|
|
||||||
if [[ $CI_BUILD_NAME =~ ^CentOS6- ]]; then
|
|
||||||
time yum install -y
|
|
||||||
coreutils curl diffutils grep gzip sed
|
|
||||||
bzip2 file findutils git openssh-clients openssl perl tar wget which xz
|
|
||||||
gcc gcc-c++ make valgrind
|
|
||||||
glibc-devel libstdc++-devel zlib-devel
|
|
||||||
glibc-devel.i686 libstdc++-devel.i686 zlib-devel.i686;
|
|
||||||
fi
|
|
||||||
-
|
|
||||||
if [[ $CI_BUILD_NAME =~ ^CentOS7- ]]; then
|
|
||||||
time yum install -y
|
|
||||||
coreutils curl diffutils grep gzip sed
|
|
||||||
bzip2 file findutils git openssh-clients openssl perl tar wget which xz
|
|
||||||
clang gcc gcc-c++ make valgrind
|
|
||||||
glibc-devel libasan libstdc++-devel zlib-devel
|
|
||||||
glibc-devel.i686 libasan.i686 libstdc++-devel.i686 zlib-devel.i686;
|
|
||||||
fi
|
|
||||||
-
|
|
||||||
if [[ $CI_BUILD_NAME =~ ^Fedora ]]; then
|
|
||||||
time dnf install -y --best --allowerasing
|
|
||||||
coreutils curl diffutils grep gzip sed
|
|
||||||
bzip2 file findutils git openssh-clients openssl perl tar wget which xz
|
|
||||||
clang gcc gcc-c++ lcov make valgrind
|
|
||||||
glibc-devel libasan libstdc++-devel libubsan zlib-devel
|
|
||||||
glibc-devel.i686 libasan.i686 libstdc++-devel.i686 libubsan.i686 zlib-devel.i686;
|
|
||||||
fi
|
|
||||||
-
|
|
||||||
if [[ $CI_BUILD_NAME =~ ^OpenSUSE42.2- ]]; then
|
|
||||||
time zypper update -y;
|
|
||||||
time zypper install -y
|
|
||||||
coreutils curl diffutils grep gzip sed
|
|
||||||
bzip2 file findutils git openssh openssl perl tar wget which xz
|
|
||||||
llvm-clang gcc gcc-32bit gcc-c++ gcc-c++-32bit lcov make valgrind
|
|
||||||
glibc-devel libstdc++-devel libz1 zlib-devel
|
|
||||||
glibc-devel-32bit libstdc++-devel-32bit libz1-32bit zlib-devel-32bit;
|
|
||||||
fi
|
|
||||||
-
|
|
||||||
if [[ $CI_BUILD_NAME =~ ^(Debian|Ubuntu) ]]; then
|
|
||||||
time apt-get -yq --no-install-suggests --no-install-recommends --force-yes upgrade;
|
|
||||||
time apt-get -yq --no-install-suggests --no-install-recommends --force-yes install
|
|
||||||
build-essential ca-certificates curl file git openssh-client openssl wget xz-utils zlib1g-dev;
|
|
||||||
fi
|
|
||||||
-
|
|
||||||
if [[ $CI_BUILD_NAME =~ ^Ubuntu1604- ]]; then
|
|
||||||
time apt-get -yq --no-install-suggests --no-install-recommends --force-yes install
|
|
||||||
g++-multilib
|
|
||||||
libstdc++-5-dev:i386 zlib1g-dev:i386
|
|
||||||
libx32stdc++-5-dev libx32z1-dev;
|
|
||||||
fi
|
|
||||||
-
|
|
||||||
if [[ $CI_BUILD_NAME =~ ^Ubuntu1604-cross ]]; then
|
|
||||||
time apt-get -yq --no-install-suggests --no-install-recommends --force-yes install
|
|
||||||
crossbuild-essential-arm64 crossbuild-essential-armel crossbuild-essential-armhf
|
|
||||||
crossbuild-essential-powerpc crossbuild-essential-ppc64el crossbuild-essential-s390x
|
|
||||||
binutils-mingw-w64-i686 g++-mingw-w64-i686
|
|
||||||
binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64
|
|
||||||
binutils-mips-linux-gnu g++-mips-linux-gnu
|
|
||||||
binutils-mipsel-linux-gnu g++-mipsel-linux-gnu
|
|
||||||
binutils-powerpc-linux-gnu g++-powerpc-linux-gnu
|
|
||||||
binutils-powerpc64-linux-gnu g++-powerpc64-linux-gnu
|
|
||||||
qemu-user qemu-utils wine;
|
|
||||||
fi
|
|
||||||
- git --version && bash --version
|
|
||||||
- umask 022; mkdir -p ../deps ../build/gitlab
|
|
||||||
- time git submodule update --init --recursive
|
|
||||||
- cd ../deps && time wget -q -O - https://github.com/upx/upx/releases/download/v3.00/ucl-1.03.tar.xz | tar -x --use-compress-program=xz
|
|
||||||
- cd ../deps && time wget -q -O - https://github.com/upx/upx/releases/download/v3.00/zlib-1.2.8.tar.xz | tar -x --use-compress-program=xz
|
|
||||||
- cd ../deps && time git clone https://github.com/upx/upx-testsuite
|
|
||||||
- |
|
|
||||||
if [[ $CI_BUILD_NAME =~ ^Fedora ]]; then
|
|
||||||
time dnf install -y --best --allowerasing python
|
|
||||||
cd ../deps && time wget -q -O - https://github.com/upx/upx-stubtools/releases/download/v20160918/bin-upx-20160918.tar.xz | tar -x --use-compress-program=xz
|
|
||||||
fi
|
|
||||||
- cd $CI_PROJECT_DIR; pwd
|
|
||||||
|
|
||||||
CentOS5-gcc-m32+m64: # gcc-4.1
|
|
||||||
image: centos:5
|
|
||||||
script:
|
|
||||||
# patch src/Makefile for gcc-4.1
|
|
||||||
- perl -i -p -e 's/ -Wmissing-declarations / /; s/ -Wvla / /;' src/Makefile
|
|
||||||
- time C=gcc-m32 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m32 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
tags: [ shared ]
|
|
||||||
except: [ tags ]
|
|
||||||
|
|
||||||
CentOS6-gcc-m32+m64: # gcc-4.4
|
|
||||||
image: centos:6
|
|
||||||
script:
|
|
||||||
- time C=gcc-m32 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m32 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
tags: [ shared ]
|
|
||||||
except: [ tags ]
|
|
||||||
|
|
||||||
CentOS7-clang+gcc-m32+m64: # clang-3.4, gcc-4.8
|
|
||||||
image: centos:7
|
|
||||||
script:
|
|
||||||
- time C=clang-m32 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m32 bash ./.github/travis_build.sh
|
|
||||||
- time C=clang-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=clang-m32 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m32 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=clang-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
tags: [ shared ]
|
|
||||||
except: [ tags ]
|
|
||||||
|
|
||||||
Debian7-gcc-m64: # gcc-4.7
|
|
||||||
image: debian:7
|
|
||||||
script:
|
|
||||||
- time C=gcc-4.7-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-4.7-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
tags: [ shared ]
|
|
||||||
except: [ tags ]
|
|
||||||
|
|
||||||
Debian8-gcc-m64: # gcc-4.9
|
|
||||||
image: debian:8
|
|
||||||
script:
|
|
||||||
- time C=gcc-4.9-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-4.9-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-4.9-m64 bash ./.github/travis_deploy.sh
|
|
||||||
tags: [ shared ]
|
|
||||||
except: [ tags ]
|
|
||||||
|
|
||||||
Fedora23-clang+gcc-m32+m64: # clang-3.7, gcc-5
|
|
||||||
image: fedora:23
|
|
||||||
script:
|
|
||||||
- time X=rebuild-stubs bash ./.github/travis_build.sh
|
|
||||||
- time C=clang-m32 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m32 bash ./.github/travis_build.sh
|
|
||||||
- time C=clang-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m64 B=sanitize bash ./.github/travis_build.sh
|
|
||||||
- time C=clang-m32 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m32 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=clang-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m64 B=sanitize bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m64 T=valgrind bash ./.github/travis_testsuite_1.sh
|
|
||||||
tags: [ shared ]
|
|
||||||
except: [ tags ]
|
|
||||||
|
|
||||||
Fedora24-clang+gcc-m32+m64: # clang-3.8, gcc-6
|
|
||||||
image: fedora:24
|
|
||||||
script:
|
|
||||||
- time X=rebuild-stubs bash ./.github/travis_build.sh
|
|
||||||
- time C=clang-m32 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m32 bash ./.github/travis_build.sh
|
|
||||||
- time C=clang-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m64 B=sanitize bash ./.github/travis_build.sh
|
|
||||||
- time C=clang-m32 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m32 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=clang-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m64 B=sanitize bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m64 T=valgrind bash ./.github/travis_testsuite_1.sh
|
|
||||||
tags: [ shared ]
|
|
||||||
except: [ tags ]
|
|
||||||
|
|
||||||
Fedora25-clang+gcc-m32+m64: # clang-3.8, gcc-6
|
|
||||||
image: fedora:25
|
|
||||||
script:
|
|
||||||
- time X=rebuild-stubs bash ./.github/travis_build.sh
|
|
||||||
- time C=clang-m32 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m32 bash ./.github/travis_build.sh
|
|
||||||
- time C=clang-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-m64 B=sanitize bash ./.github/travis_build.sh
|
|
||||||
- time C=clang-m32 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m32 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=clang-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m64 B=sanitize bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-m64 T=valgrind bash ./.github/travis_testsuite_1.sh
|
|
||||||
tags: [ shared ]
|
|
||||||
except: [ tags ]
|
|
||||||
|
|
||||||
OpenSUSE42.2-clang+gcc-m32+m64: # clang-3.8, gcc-4.8
|
|
||||||
image: opensuse:42.2
|
|
||||||
script:
|
|
||||||
- time C=clang-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-4.8-m32 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-4.8-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=clang-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-4.8-m32 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-4.8-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
tags: [ shared ]
|
|
||||||
except: [ tags ]
|
|
||||||
|
|
||||||
Ubuntu1204-gcc-m64: # gcc-4.6
|
|
||||||
image: ubuntu:12.04
|
|
||||||
script:
|
|
||||||
- time C=gcc-4.6-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-4.6-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
tags: [ shared ]
|
|
||||||
except: [ tags ]
|
|
||||||
|
|
||||||
Ubuntu1404-gcc-m64: # gcc-4.8
|
|
||||||
image: ubuntu:14.04
|
|
||||||
script:
|
|
||||||
- time C=gcc-4.8-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-4.8-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-4.8-m64 bash ./.github/travis_deploy.sh
|
|
||||||
tags: [ shared ]
|
|
||||||
except: [ tags ]
|
|
||||||
|
|
||||||
Ubuntu1604-gcc-m32+m64: # gcc-5
|
|
||||||
image: ubuntu:16.04
|
|
||||||
script:
|
|
||||||
- time C=gcc-5-m32 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-5-m64 bash ./.github/travis_build.sh
|
|
||||||
- time C=gcc-5-m32 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-5-m64 bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time C=gcc-5-m32 bash ./.github/travis_deploy.sh
|
|
||||||
- time C=gcc-5-m64 bash ./.github/travis_deploy.sh
|
|
||||||
tags: [ shared ]
|
|
||||||
except: [ tags ]
|
|
||||||
|
|
||||||
Ubuntu1604-cross: # gcc-5
|
|
||||||
image: ubuntu:16.04
|
|
||||||
script:
|
|
||||||
- time CROSS=aarch64-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_build.sh
|
|
||||||
- time CROSS=arm-linux-gnueabi C=gcc-5 T=qemu bash ./.github/travis_build.sh
|
|
||||||
- time CROSS=arm-linux-gnueabihf C=gcc-5 T=qemu bash ./.github/travis_build.sh
|
|
||||||
- time CROSS=i686-w64-mingw32 C=gcc-5 T=wine bash ./.github/travis_build.sh
|
|
||||||
- time CROSS=mips-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_build.sh
|
|
||||||
- time CROSS=mipsel-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_build.sh
|
|
||||||
- time CROSS=powerpc-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_build.sh
|
|
||||||
- time CROSS=powerpc64-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_build.sh
|
|
||||||
- time CROSS=powerpc64le-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_build.sh
|
|
||||||
- time CROSS=s390x-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_build.sh
|
|
||||||
- time CROSS=x86_64-w64-mingw32 C=gcc-5 T=wine bash ./.github/travis_build.sh
|
|
||||||
- time CROSS=aarch64-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time CROSS=arm-linux-gnueabi C=gcc-5 T=qemu bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time CROSS=arm-linux-gnueabihf C=gcc-5 T=qemu bash ./.github/travis_testsuite_1.sh
|
|
||||||
# - time CROSS=i686-w64-mingw32 C=gcc-5 T=wine bash ./.github/travis_testsuite_1.sh
|
|
||||||
# - time CROSS=mips-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time CROSS=mipsel-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_testsuite_1.sh
|
|
||||||
# - time CROSS=powerpc-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_testsuite_1.sh
|
|
||||||
# - time CROSS=powerpc64-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_testsuite_1.sh
|
|
||||||
# - time CROSS=powerpc64le-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_testsuite_1.sh
|
|
||||||
# - time CROSS=s390x-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_testsuite_1.sh
|
|
||||||
# - time CROSS=x86_64-w64-mingw32 C=gcc-5 T=wine bash ./.github/travis_testsuite_1.sh
|
|
||||||
- time CROSS=aarch64-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_deploy.sh
|
|
||||||
- time CROSS=arm-linux-gnueabi C=gcc-5 T=qemu bash ./.github/travis_deploy.sh
|
|
||||||
- time CROSS=arm-linux-gnueabihf C=gcc-5 T=qemu bash ./.github/travis_deploy.sh
|
|
||||||
- time CROSS=i686-w64-mingw32 C=gcc-5 T=wine bash ./.github/travis_deploy.sh
|
|
||||||
- time CROSS=mips-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_deploy.sh
|
|
||||||
- time CROSS=mipsel-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_deploy.sh
|
|
||||||
- time CROSS=powerpc-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_deploy.sh
|
|
||||||
- time CROSS=powerpc64-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_deploy.sh
|
|
||||||
- time CROSS=powerpc64le-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_deploy.sh
|
|
||||||
- time CROSS=s390x-linux-gnu C=gcc-5 T=qemu bash ./.github/travis_deploy.sh
|
|
||||||
- time CROSS=x86_64-w64-mingw32 C=gcc-5 T=wine bash ./.github/travis_deploy.sh
|
|
||||||
tags: [ shared ]
|
|
||||||
except: [ tags ]
|
|
||||||
|
|
||||||
# vim:set ts=2 sw=2 et:
|
|
||||||
+414
-113
@@ -2,225 +2,524 @@
|
|||||||
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
|
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
|
||||||
|
|
||||||
sudo: false
|
sudo: false
|
||||||
|
os: linux
|
||||||
|
dist: xenial
|
||||||
language: cpp
|
language: cpp
|
||||||
|
|
||||||
notifications:
|
notifications: { email: { on_success: never, on_failure: change } }
|
||||||
email:
|
|
||||||
on_success: never
|
|
||||||
on_failure: change
|
|
||||||
|
|
||||||
.ubuntu_toolchain_sources: &S
|
branches:
|
||||||
|
except:
|
||||||
|
- /^appveyor.*/
|
||||||
|
- /^gitlab.*/
|
||||||
|
|
||||||
|
# Ubuntu 12.04 LTS "Precise"
|
||||||
|
# also see TB_OS_linux_precise_llvm below
|
||||||
|
.ubuntu_precise_toolchain_sources: &PS
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
- llvm-toolchain-precise-3.5
|
- llvm-toolchain-precise-3.5
|
||||||
- llvm-toolchain-precise-3.6
|
- llvm-toolchain-precise-3.6
|
||||||
- llvm-toolchain-precise-3.7
|
- llvm-toolchain-precise-3.7
|
||||||
- llvm-toolchain-precise-3.8
|
- llvm-toolchain-precise-3.8
|
||||||
|
- llvm-toolchain-precise-3.9
|
||||||
|
|
||||||
|
# Ubuntu 14.04 LTS "Trusty"
|
||||||
|
.ubuntu_trusty_toolchain_sources: &TS
|
||||||
|
- ubuntu-toolchain-r-test
|
||||||
|
- llvm-toolchain-trusty-3.9
|
||||||
|
- llvm-toolchain-trusty-4.0
|
||||||
|
- llvm-toolchain-trusty-5.0
|
||||||
|
- llvm-toolchain-trusty-6.0
|
||||||
|
- llvm-toolchain-trusty-7
|
||||||
|
- llvm-toolchain-trusty-8
|
||||||
|
|
||||||
|
# Ubuntu 16.04 LTS "Xenial"
|
||||||
|
.ubuntu_xenial_toolchain_sources: &XS
|
||||||
|
- ubuntu-toolchain-r-test
|
||||||
|
- llvm-toolchain-xenial-6.0
|
||||||
|
- llvm-toolchain-xenial-7
|
||||||
|
- llvm-toolchain-xenial-8
|
||||||
|
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
|
# TB_LEVEL >= 1: gcc-7, gcc-8, gcc-9, clang-8, xcode11
|
||||||
|
# TB_LEVEL >= 2: gcc-4.4, gcc-4.8, gcc-6, clang-3.4, clang-7
|
||||||
|
# TB_LEVEL >= 3: gcc-4.6, gcc-5, clang-3.9, clang-6, xcode9, xcode10
|
||||||
|
# TB_LEVEL >= 4: include sanitize/scan-build/valgrind builds
|
||||||
|
# TB_LEVEL >= 5: cross-compilers running testsuite under qemu/wine
|
||||||
|
# TB_LEVEL >= 6: all other compilers & builds
|
||||||
|
- TB_LEVEL=5
|
||||||
|
- TB_OS_linux=1 TB_OS_osx=1
|
||||||
|
- TB_OS_linux_precise_llvm=1
|
||||||
- CROSS= C= B= T= X=
|
- CROSS= C= B= T= X=
|
||||||
- secure: "YXHLXK+CM5d8yELIUSSs+P0/CoefClO7/AUX1oBj5W75g+YzR5uS2doVsB8UH8S8/GdNxk4P9Jgn4EiEVnjfGgn2eAD9MVpDPIxyJs5vI+5G77asq3QNdSl6QFv3O9I/6yBoVCewgPFPqsMd7Yvs/Ea3LcQkqalVhrC8ybYtmfs6VL2w33gn2J3b3TCn/s21L0ijklM0xvP1GNMDtuUpTSish5wvGOHE/91rwtdUDbJR8u31QY7fTASDiNnL/7ihgEIZ5XxpDYXviX1GC+nemhX1fWpmVmuT8m30Ruodi0yJVGASw9i2SaKv/VX/fJ/w2vlCfspL5LMZKkVLlfpIo3mQGqmMHFxv7mNy+hRu50ptoWNSkWArcqifwveh2liHUpl4jTvWaVll5Tw5VUGJhAUdzCTnqLIbWFnKIgCedL3iRFi4+EbyWNxel8lFESMOTDZFfJG5yEiDJbgbLsUaT2GmrsOphwAG7zDcZzvYTdjg/lF4Wh0MUnQJ+0MhDpii8Ahjp49lAPdw8uRQyyY7d7ksYKXVIkbgl6dRCC5vZSPucJiFjq2BClqIoEmzZPvHveDbovzFkNhJX9tFLrHLcXbPPcegww1FGoQ3wBM6JwJ+TvSD6N4OdCmou05aDuuQeznHi3GxOScjGwxdMIU28fdJDCTDg2rOihm22kHVajo="
|
- secure: "YXHLXK+CM5d8yELIUSSs+P0/CoefClO7/AUX1oBj5W75g+YzR5uS2doVsB8UH8S8/GdNxk4P9Jgn4EiEVnjfGgn2eAD9MVpDPIxyJs5vI+5G77asq3QNdSl6QFv3O9I/6yBoVCewgPFPqsMd7Yvs/Ea3LcQkqalVhrC8ybYtmfs6VL2w33gn2J3b3TCn/s21L0ijklM0xvP1GNMDtuUpTSish5wvGOHE/91rwtdUDbJR8u31QY7fTASDiNnL/7ihgEIZ5XxpDYXviX1GC+nemhX1fWpmVmuT8m30Ruodi0yJVGASw9i2SaKv/VX/fJ/w2vlCfspL5LMZKkVLlfpIo3mQGqmMHFxv7mNy+hRu50ptoWNSkWArcqifwveh2liHUpl4jTvWaVll5Tw5VUGJhAUdzCTnqLIbWFnKIgCedL3iRFi4+EbyWNxel8lFESMOTDZFfJG5yEiDJbgbLsUaT2GmrsOphwAG7zDcZzvYTdjg/lF4Wh0MUnQJ+0MhDpii8Ahjp49lAPdw8uRQyyY7d7ksYKXVIkbgl6dRCC5vZSPucJiFjq2BClqIoEmzZPvHveDbovzFkNhJX9tFLrHLcXbPPcegww1FGoQ3wBM6JwJ+TvSD6N4OdCmou05aDuuQeznHi3GxOScjGwxdMIU28fdJDCTDg2rOihm22kHVajo="
|
||||||
- secure: "JpSv3+QRmHcfN/bmT3mVkqET44NCPhM/qpcUssCVXnd2GW0qWURoyPHzVMn/gbeAkUjR6djtN3OzJ+M181QmlmTmE26pZC9Q6r1buNDWdkIH1FcpMCa67BBAjmq+yDwulDtvCMv0lbz60v57lzHBOLczF3yMxBVTjXxt1RsrzDLHzzVaDR5lEe+sQUNeRL7Vaq8crimPNTr4ZhMe59eweTO/3AWovuSPf250k1flfv7I8audZgrVZdbVKvj5C3Sziy1AGXcu8mDfET9/Ya2XBCQHWODjiKlnhSxqthhP3gQuacaLjpS2FjvQlamd+I9x6BBoLSeNbiXD9vgCydDUKvmUrU+zQs64U1hHk9WZWVC19kG7lTtTdanGDIUlIUtFZgqE4AQpJaIUWkUmHGyHi61JMvduzX21eL5c5j9DoJteX42FPb1n3xK/JSnUkLMpbFdQuy5inhzefhDfeNzaYxt8nPwHnJqrF73SW4PLDKeRyzvg/P+zqcou8nXrHfA1z9/FlnYzf7Qc9meai9Q/JARX3Q1ZKu5uyG+RuBLe2POq0192w6pflTr1ZlLJsKNSc1147PviKfmpla1lg3/6uVzMp5tgwbve/hx9SDXiRueGttKw/ymsY662+8G24NRKo4fxNklWFHaB4owM84edDzXDckPXbPgue8/HQT8BFio="
|
- secure: "JpSv3+QRmHcfN/bmT3mVkqET44NCPhM/qpcUssCVXnd2GW0qWURoyPHzVMn/gbeAkUjR6djtN3OzJ+M181QmlmTmE26pZC9Q6r1buNDWdkIH1FcpMCa67BBAjmq+yDwulDtvCMv0lbz60v57lzHBOLczF3yMxBVTjXxt1RsrzDLHzzVaDR5lEe+sQUNeRL7Vaq8crimPNTr4ZhMe59eweTO/3AWovuSPf250k1flfv7I8audZgrVZdbVKvj5C3Sziy1AGXcu8mDfET9/Ya2XBCQHWODjiKlnhSxqthhP3gQuacaLjpS2FjvQlamd+I9x6BBoLSeNbiXD9vgCydDUKvmUrU+zQs64U1hHk9WZWVC19kG7lTtTdanGDIUlIUtFZgqE4AQpJaIUWkUmHGyHi61JMvduzX21eL5c5j9DoJteX42FPb1n3xK/JSnUkLMpbFdQuy5inhzefhDfeNzaYxt8nPwHnJqrF73SW4PLDKeRyzvg/P+zqcou8nXrHfA1z9/FlnYzf7Qc9meai9Q/JARX3Q1ZKu5uyG+RuBLe2POq0192w6pflTr1ZlLJsKNSc1147PviKfmpla1lg3/6uVzMp5tgwbve/hx9SDXiRueGttKw/ymsY662+8G24NRKo4fxNklWFHaB4owM84edDzXDckPXbPgue8/HQT8BFio="
|
||||||
matrix:
|
|
||||||
- TRAVIS_EMPTY_JOB_WORKAROUND=true
|
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
exclude:
|
|
||||||
- env: TRAVIS_EMPTY_JOB_WORKAROUND=true
|
|
||||||
include:
|
include:
|
||||||
- os: linux
|
- if: 1 = 1
|
||||||
sudo: required
|
os: linux
|
||||||
dist: trusty
|
dist: xenial
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: X=rebuild-stubs
|
env: X=rebuild-stubs
|
||||||
addons: { apt: { packages: [ "g++-multilib", "lib32z1" ] } }
|
addons: { apt: { packages: [ "g++-multilib", "lib32z1" ] } }
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[2-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-4.4-m32
|
env: C=gcc-4.4-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-4.4-multilib", "zlib1g-dev:i386" ] } }
|
addons: { apt: { sources: *PS, packages: [ "g++-4.4-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[2-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-4.4-m64
|
env: C=gcc-4.4-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-4.4" ] } }
|
addons: { apt: { sources: *PS, packages: [ "g++-4.4" ] } }
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-4.5-m32
|
env: C=gcc-4.5-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-4.5-multilib", "zlib1g-dev:i386" ] } }
|
addons: { apt: { sources: *PS, packages: [ "g++-4.5-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-4.5-m64
|
env: C=gcc-4.5-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-4.5" ] } }
|
addons: { apt: { sources: *PS, packages: [ "g++-4.5" ] } }
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[3-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-4.6-m32
|
env: C=gcc-4.6-m32
|
||||||
addons: { apt: { packages: [ "g++-multilib", "zlib1g-dev:i386" ] } }
|
addons: { apt: { packages: [ "g++-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[3-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-4.6-m64
|
env: C=gcc-4.6-m64
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-4.7-m32
|
env: C=gcc-4.7-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-4.7-multilib", "zlib1g-dev:i386" ] } }
|
addons: { apt: { sources: *PS, packages: [ "g++-4.7-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-4.7-m64
|
env: C=gcc-4.7-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-4.7" ] } }
|
addons: { apt: { sources: *PS, packages: [ "g++-4.7" ] } }
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[2-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-4.8-m32
|
env: C=gcc-4.8-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-4.8-multilib", "zlib1g-dev:i386" ] } }
|
addons: { apt: { packages: [ "g++-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[2-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-4.8-m64
|
env: C=gcc-4.8-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-4.8" ] } }
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[2-9]$/
|
||||||
# - os: linux
|
os: linux
|
||||||
# sudo: required
|
dist: trusty
|
||||||
# dist: trusty
|
compiler: gcc
|
||||||
# compiler: gcc
|
env: C=gcc-4.8-mx32
|
||||||
# env: C=gcc-4.8-mx32
|
addons: { apt: { packages: [ "g++-multilib", "libx32stdc++-4.8-dev" ] } }
|
||||||
# addons: { apt: { packages: [ "g++-multilib", "libx32stdc++-4.8-dev", "libx32z1-dev" ] } }
|
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-4.9-m32
|
env: C=gcc-4.9-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-4.9-multilib", "zlib1g-dev:i386" ] } }
|
addons: { apt: { sources: *TS, packages: [ "g++-4.9-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-4.9-m64
|
env: C=gcc-4.9-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-4.9" ] } }
|
addons: { apt: { sources: *TS, packages: [ "g++-4.9" ] } }
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[3-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-5-m32
|
env: C=gcc-5-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-5-multilib", "zlib1g-dev:i386" ] } }
|
addons: { apt: { sources: *TS, packages: [ "g++-5-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[3-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-5-m64
|
env: C=gcc-5-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-5" ] } }
|
addons: { apt: { sources: *TS, packages: [ "g++-5" ] } }
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[2-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-6-m32
|
env: C=gcc-6-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-6-multilib", "zlib1g-dev:i386" ] } }
|
addons: { apt: { sources: *TS, packages: [ "g++-6-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[2-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-6-m64
|
env: C=gcc-6-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-6" ] } }
|
addons: { apt: { sources: *TS, packages: [ "g++-6" ] } }
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[1-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-6-m32 B=debug
|
env: C=gcc-7-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-6-multilib", "zlib1g-dev:i386" ] } }
|
addons: { apt: { sources: *TS, packages: [ "g++-7-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[1-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-6-m64 B=debug
|
env: C=gcc-7-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-6" ] } }
|
addons: { apt: { sources: *TS, packages: [ "g++-7" ] } }
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[1-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-6-m64 B=debug+sanitize
|
env: C=gcc-8-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-6" ] } }
|
addons: { apt: { sources: *TS, packages: [ "g++-8-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[1-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-6-m64 B=sanitize
|
env: C=gcc-8-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-6" ] } }
|
addons: { apt: { sources: *TS, packages: [ "g++-8" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: C=gcc-6-m64 B=valgrind T=valgrind
|
env: C=gcc-8-m32 B=debug
|
||||||
addons: { apt: { sources: *S, packages: [ "g++-6", valgrind ] } }
|
addons: { apt: { sources: *TS, packages: [ "g++-8-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: gcc
|
||||||
|
env: C=gcc-8-m64 B=debug
|
||||||
|
addons: { apt: { sources: *TS, packages: [ "g++-8" ] } }
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[4-9]$/
|
||||||
|
# must use sudo CAP_SYS_PTRACE for sanitize - see https://github.com/travis-ci/travis-ci/issues/9033
|
||||||
|
sudo: true
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: gcc
|
||||||
|
env: C=gcc-8-m64 B=debug+sanitize
|
||||||
|
addons: { apt: { sources: *TS, packages: [ "g++-8" ] } }
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[4-9]$/
|
||||||
|
# must use sudo CAP_SYS_PTRACE for sanitize - see https://github.com/travis-ci/travis-ci/issues/9033
|
||||||
|
sudo: true
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: gcc
|
||||||
|
env: C=gcc-8-m64 B=sanitize
|
||||||
|
addons: { apt: { sources: *TS, packages: [ "g++-8" ] } }
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[4-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: gcc
|
||||||
|
env: C=gcc-8-m64 B=valgrind T=valgrind
|
||||||
|
addons: { apt: { sources: *TS, packages: [ "g++-8", valgrind ] } }
|
||||||
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[1-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: xenial
|
||||||
|
compiler: gcc
|
||||||
|
env: C=gcc-9-m32
|
||||||
|
addons: { apt: { sources: *XS, packages: [ "g++-9-multilib", "zlib1g-dev:i386" ] } }
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[1-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: xenial
|
||||||
|
compiler: gcc
|
||||||
|
env: C=gcc-9-m64
|
||||||
|
addons: { apt: { sources: *XS, packages: [ "g++-9" ] } }
|
||||||
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[2-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-3.4-m32
|
env: C=clang-3.4-m32
|
||||||
addons: { apt: { packages: [ "g++-multilib", "zlib1g-dev:i386" ] } }
|
addons: { apt: { packages: [ "g++-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[2-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-3.4-m64
|
env: C=clang-3.4-m64
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/ AND env(TB_OS_linux_precise_llvm) = 1
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-3.5-m32
|
env: C=clang-3.5-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "clang-3.5", "g++-6-multilib", "zlib1g-dev:i386" ] } }
|
addons: { apt: { sources: *PS, packages: [ "clang-3.5", "g++-6-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/ AND env(TB_OS_linux_precise_llvm) = 1
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-3.5-m64
|
env: C=clang-3.5-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "clang-3.5" ] } }
|
addons: { apt: { sources: *PS, packages: [ "clang-3.5" ] } }
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/ AND env(TB_OS_linux_precise_llvm) = 1
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-3.6-m32
|
env: C=clang-3.6-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "clang-3.6", "g++-6-multilib", "zlib1g-dev:i386" ] } }
|
addons: { apt: { sources: *PS, packages: [ "clang-3.6", "g++-6-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/ AND env(TB_OS_linux_precise_llvm) = 1
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-3.6-m64
|
env: C=clang-3.6-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "clang-3.6" ] } }
|
addons: { apt: { sources: *PS, packages: [ "clang-3.6" ] } }
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/ AND env(TB_OS_linux_precise_llvm) = 1
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-3.7-m32
|
env: C=clang-3.7-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "clang-3.7", "g++-6-multilib", "zlib1g-dev:i386" ] } }
|
addons: { apt: { sources: *PS, packages: [ "clang-3.7", "g++-6-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/ AND env(TB_OS_linux_precise_llvm) = 1
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-3.7-m64
|
env: C=clang-3.7-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "clang-3.7" ] } }
|
addons: { apt: { sources: *PS, packages: [ "clang-3.7" ] } }
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/ AND env(TB_OS_linux_precise_llvm) = 1
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-3.8-m32
|
env: C=clang-3.8-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "clang-3.8", "g++-6-multilib", "zlib1g-dev:i386" ] } }
|
addons: { apt: { sources: *PS, packages: [ "clang-3.8", "g++-6-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/ AND env(TB_OS_linux_precise_llvm) = 1
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-3.8-m64
|
env: C=clang-3.8-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "clang-3.8" ] } }
|
addons: { apt: { sources: *PS, packages: [ "clang-3.8" ] } }
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[3-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-3.8-m64 B=debug+sanitize
|
env: C=clang-3.9-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "clang-3.8" ] } }
|
addons: { apt: { sources: *TS, packages: [ "clang-3.9", "g++-7-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[3-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-3.8-m64 B=sanitize
|
env: C=clang-3.9-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "clang-3.8" ] } }
|
addons: { apt: { sources: *TS, packages: [ "clang-3.9" ] } }
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-3.8-m64 B=debug+scan-build
|
env: C=clang-4.0-m32
|
||||||
addons: { apt: { sources: *S, packages: [ "clang-3.8" ] } }
|
addons: { apt: { sources: *TS, packages: [ "clang-4.0", "g++-7-multilib", "zlib1g-dev:i386" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-3.8-m64 B=scan-build
|
env: C=clang-4.0-m64
|
||||||
addons: { apt: { sources: *S, packages: [ "clang-3.8" ] } }
|
addons: { apt: { sources: *TS, packages: [ "clang-4.0" ] } }
|
||||||
- os: linux
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-5.0-m32
|
||||||
|
addons: { apt: { sources: *TS, packages: [ "clang-5.0", "g++-7-multilib", "zlib1g-dev:i386" ] } }
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-5.0-m64
|
||||||
|
addons: { apt: { sources: *TS, packages: [ "clang-5.0" ] } }
|
||||||
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[3-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-6.0-m32
|
||||||
|
addons: { apt: { sources: *TS, packages: [ "clang-6.0", "g++-7-multilib", "zlib1g-dev:i386" ] } }
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[3-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-6.0-m64
|
||||||
|
addons: { apt: { sources: *TS, packages: [ "clang-6.0" ] } }
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[4-9]$/
|
||||||
|
# must use sudo CAP_SYS_PTRACE for sanitize - see https://github.com/travis-ci/travis-ci/issues/9033
|
||||||
|
sudo: true
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-6.0-m64 B=debug+sanitize
|
||||||
|
addons: { apt: { sources: *TS, packages: [ "clang-6.0" ] } }
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[4-9]$/
|
||||||
|
# must use sudo CAP_SYS_PTRACE for sanitize - see https://github.com/travis-ci/travis-ci/issues/9033
|
||||||
|
sudo: true
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-6.0-m64 B=sanitize
|
||||||
|
addons: { apt: { sources: *TS, packages: [ "clang-6.0" ] } }
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[4-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-6.0-m64 B=debug+scan-build
|
||||||
|
addons: { apt: { sources: *TS, packages: [ "clang-6.0", "clang-tools-6.0" ] } }
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[4-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-6.0-m64 B=scan-build
|
||||||
|
addons: { apt: { sources: *TS, packages: [ "clang-6.0", "clang-tools-6.0" ] } }
|
||||||
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[2-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: xenial
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-7-m32
|
||||||
|
addons: { apt: { sources: *XS, packages: [ "clang-7", "g++-9-multilib", "zlib1g-dev:i386" ] } }
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[2-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: xenial
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-7-m64
|
||||||
|
addons: { apt: { sources: *XS, packages: [ "clang-7" ] } }
|
||||||
|
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[1-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: xenial
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-8-m32
|
||||||
|
addons: { apt: { sources: *XS, packages: [ "clang-8", "g++-9-multilib", "zlib1g-dev:i386" ] } }
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[1-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: xenial
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-8-m64
|
||||||
|
addons: { apt: { sources: *XS, packages: [ "clang-8" ] } }
|
||||||
|
|
||||||
|
# Ubuntu 12.04 cross compilers
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[5-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: CROSS=arm-linux-gnueabi C=gcc-4.6 T=SKIP
|
env: CROSS=arm-linux-gnueabi C=gcc-4.6 T=qemu
|
||||||
addons: { apt: { packages: [ "g++-arm-linux-gnueabi", "qemu-user" ] } }
|
addons: { apt: { packages: [ "g++-arm-linux-gnueabi", "qemu-user" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[5-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: CROSS=arm-linux-gnueabihf C=gcc-4.6 T=SKIP
|
env: CROSS=arm-linux-gnueabihf C=gcc-4.6 T=qemu
|
||||||
addons: { apt: { packages: [ "g++-arm-linux-gnueabihf", "qemu-user" ] } }
|
addons: { apt: { packages: [ "g++-arm-linux-gnueabihf", "qemu-user" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[5-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: CROSS=i386-w64-mingw32 C=gcc-4.6 T=wine
|
env: CROSS=i386-w64-mingw32 C=gcc-4.6 T=wine
|
||||||
addons: { apt: { packages: [ "binutils-mingw-w64-i686", "g++-mingw-w64-i686", "wine" ] } }
|
addons: { apt: { packages: [ "binutils-mingw-w64-i686", "g++-mingw-w64-i686", "wine" ] } }
|
||||||
- os: linux
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[5-9]$/
|
||||||
|
os: linux
|
||||||
|
dist: precise
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
env: CROSS=x86_64-w64-mingw32 C=gcc-4.6 T=wine
|
env: CROSS=x86_64-w64-mingw32 C=gcc-4.6 T=wine
|
||||||
addons: { apt: { packages: [ "binutils-mingw-w64-x86-64", "g++-mingw-w64-x86-64", "wine" ] } }
|
addons: { apt: { packages: [ "binutils-mingw-w64-x86-64", "g++-mingw-w64-x86-64", "wine" ] } }
|
||||||
- os: osx
|
|
||||||
|
# Ubuntu 16.04 cross compilers
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[5-90]$/
|
||||||
|
os: linux
|
||||||
|
dist: xenial
|
||||||
|
compiler: gcc
|
||||||
|
env: CROSS=mips-linux-gnu C=gcc-5 T=qemu
|
||||||
|
addons: { apt: { packages: [ "g++-5-mips-linux-gnu", "qemu-user" ] } }
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[5-90]$/
|
||||||
|
os: linux
|
||||||
|
dist: xenial
|
||||||
|
compiler: gcc
|
||||||
|
env: CROSS=mipsel-linux-gnu C=gcc-5 T=qemu
|
||||||
|
addons: { apt: { packages: [ "g++-5-mipsel-linux-gnu", "qemu-user" ] } }
|
||||||
|
- if: env(TB_OS_linux) = 1 AND env(TB_LEVEL) =~ /^[5-90]$/
|
||||||
|
os: linux
|
||||||
|
dist: xenial
|
||||||
|
compiler: gcc
|
||||||
|
env: CROSS=powerpc-linux-gnu C=gcc-5 T=qemu
|
||||||
|
addons: { apt: { packages: [ "g++-5-powerpc-linux-gnu", "qemu-user" ] } }
|
||||||
|
|
||||||
|
- if: env(TB_OS_osx) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: osx
|
||||||
osx_image: xcode6.4
|
osx_image: xcode6.4
|
||||||
compiler: clang
|
compiler: clang
|
||||||
# must use debug build or else we get "ld: internal error: atom not found" when linking
|
# must use debug build or else we get "ld: internal error: atom not found" when linking
|
||||||
env: C=clang-602-m32 B=debug
|
env: C=clang-602-m32 B=debug
|
||||||
- os: osx
|
- if: env(TB_OS_osx) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: osx
|
||||||
osx_image: xcode6.4
|
osx_image: xcode6.4
|
||||||
compiler: clang
|
compiler: clang
|
||||||
# must use debug build or else we get "ld: internal error: atom not found" when linking
|
# must use debug build or else we get "ld: internal error: atom not found" when linking
|
||||||
env: C=clang-602-m64 B=debug
|
env: C=clang-602-m64 B=debug
|
||||||
- os: osx
|
|
||||||
|
- if: env(TB_OS_osx) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: osx
|
||||||
osx_image: xcode7.3
|
osx_image: xcode7.3
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-703-m32
|
env: C=clang-703-m32
|
||||||
- os: osx
|
- if: env(TB_OS_osx) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: osx
|
||||||
osx_image: xcode7.3
|
osx_image: xcode7.3
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-703-m64
|
env: C=clang-703-m64
|
||||||
- os: osx
|
|
||||||
osx_image: xcode8.2
|
- if: env(TB_OS_osx) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
|
os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-800-m32
|
env: C=clang-802-m32
|
||||||
- os: osx
|
- if: env(TB_OS_osx) = 1 AND env(TB_LEVEL) =~ /^[6-9]$/
|
||||||
osx_image: xcode8.2
|
os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: C=clang-800-m64
|
env: C=clang-802-m64
|
||||||
|
|
||||||
|
- if: env(TB_OS_osx) = 1 AND env(TB_LEVEL) =~ /^[3-9]$/
|
||||||
|
os: osx
|
||||||
|
osx_image: xcode9.4
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-902-m32
|
||||||
|
- if: env(TB_OS_osx) = 1 AND env(TB_LEVEL) =~ /^[3-9]$/
|
||||||
|
os: osx
|
||||||
|
osx_image: xcode9.4
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-902-m64
|
||||||
|
|
||||||
|
- if: env(TB_OS_osx) = 1 AND env(TB_LEVEL) =~ /^[3-9]$/
|
||||||
|
os: osx
|
||||||
|
osx_image: xcode10.3
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-1001-m64
|
||||||
|
|
||||||
|
- if: env(TB_OS_osx) = 1 AND env(TB_LEVEL) =~ /^[1-9]$/
|
||||||
|
os: osx
|
||||||
|
osx_image: xcode11.3
|
||||||
|
compiler: clang
|
||||||
|
env: C=clang-1100-m64
|
||||||
|
addons: { homebrew: { packages: [ "coreutils" ] } }
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- uname -a; pwd; id; umask
|
- uname -a; pwd; id; umask
|
||||||
@@ -250,9 +549,11 @@ install:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- cd $TRAVIS_BUILD_DIR && bash ./.github/travis_build.sh
|
- success=1
|
||||||
- cd $TRAVIS_BUILD_DIR && bash ./.github/travis_testsuite_1.sh
|
- cd $TRAVIS_BUILD_DIR || success=0
|
||||||
after_success:
|
- test $success = 0 || bash ./.github/travis_build.sh || success=0
|
||||||
- cd $TRAVIS_BUILD_DIR && bash ./.github/travis_deploy.sh
|
- test $success = 0 || bash ./.github/travis_testsuite_1.sh || success=0
|
||||||
|
- test $success = 0 || bash ./.github/travis_deploy.sh || success=0
|
||||||
|
- test $success = 1
|
||||||
|
|
||||||
# vim:set ts=2 sw=2 et:
|
# vim:set ts=2 sw=2 et:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
|
|
||||||
The Ultimate Packer for eXecutables
|
The Ultimate Packer for eXecutables
|
||||||
Copyright (c) 1996-2017 Markus Oberhumer, Laszlo Molnar & John Reiser
|
Copyright (c) 1996-2020 Markus Oberhumer, Laszlo Molnar & John Reiser
|
||||||
https://upx.github.io
|
https://upx.github.io
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# UPX toplevel Makefile - needs GNU make 3.81 or better
|
# UPX toplevel Makefile - needs GNU make 3.81 or better
|
||||||
#
|
#
|
||||||
# Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
# Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
#
|
#
|
||||||
|
|
||||||
MAKEFLAGS += -rR
|
MAKEFLAGS += -rR
|
||||||
|
|||||||
@@ -2,12 +2,30 @@
|
|||||||
User visible changes for UPX
|
User visible changes for UPX
|
||||||
==================================================================
|
==================================================================
|
||||||
|
|
||||||
|
Changes in 3.96 (23 Jan 2020):
|
||||||
|
* bug fixes - see https://github.com/upx/upx/milestone/5
|
||||||
|
|
||||||
|
Changes in 3.95 (26 Aug 2018):
|
||||||
|
* Flag --android-shlib to work around bad design in Android
|
||||||
|
* Flag --force-pie when ET_DYN main program is not marked as DF_1_PIE
|
||||||
|
* Better compatibility with varying layout of address space on Linux
|
||||||
|
* Support for 4 PT_LOAD layout in ELF generated by binutils-2.31
|
||||||
|
* bug fixes, particularly better diagnosis of malformed input
|
||||||
|
* bug fixes - see https://github.com/upx/upx/milestone/4
|
||||||
|
|
||||||
|
Changes in 3.94 (12 May 2017):
|
||||||
|
* Add support for arm64-linux (aka "aarch64").
|
||||||
|
* Add support for --lzma compression on 64-bit PowerPC (Thierry Fauck).
|
||||||
|
* For Mach, "upx -d" will unpack a prefix of the file (and warn).
|
||||||
|
* Various improvements to the ELF formats.
|
||||||
|
* bug fixes - see https://github.com/upx/upx/milestone/3
|
||||||
|
|
||||||
Changes in 3.93 (29 Jan 2017):
|
Changes in 3.93 (29 Jan 2017):
|
||||||
* UPX has moved to GitHub - the new home page is https://upx.github.io
|
* Fixed some win32/pe and win64/pe regressions introduced in 3.92
|
||||||
* fixed some win32/pe and win64/pe regressions introduced in 3.92
|
* bug fixes - see https://github.com/upx/upx/milestone/2
|
||||||
|
|
||||||
Changes in 3.92 (11 Dec 2016):
|
Changes in 3.92 (11 Dec 2016):
|
||||||
* UPX has moved to GitHub - the new home page is https://upx.github.io
|
* INFO: UPX has moved to GitHub - the new home page is https://upx.github.io
|
||||||
* IMPORTANT: all PE formats: internal changes: reunited the diverged source
|
* IMPORTANT: all PE formats: internal changes: reunited the diverged source
|
||||||
files - please report all regressions into the bug tracker and try UPX 3.91
|
files - please report all regressions into the bug tracker and try UPX 3.91
|
||||||
in case of problems.
|
in case of problems.
|
||||||
@@ -19,7 +37,7 @@ Changes in 3.92 (11 Dec 2016):
|
|||||||
by Codenomicon to NCSC-FI on 2015-01-08.
|
by Codenomicon to NCSC-FI on 2015-01-08.
|
||||||
The vulnerabilities were discovered by Joonas Kuorilehto and
|
The vulnerabilities were discovered by Joonas Kuorilehto and
|
||||||
Antti Häyrynen from Codenomicon.
|
Antti Häyrynen from Codenomicon.
|
||||||
* bug fixes
|
* bug fixes - see https://github.com/upx/upx/milestone/1
|
||||||
|
|
||||||
Changes in 3.91 (30 Sep 2013):
|
Changes in 3.91 (30 Sep 2013):
|
||||||
* Added experimental support for Windows 64-bit PE files, based on
|
* Added experimental support for Windows 64-bit PE files, based on
|
||||||
@@ -103,7 +121,7 @@ Changes in 2.93 beta (08 Mar 2007):
|
|||||||
you have to explicitly use '--lzma' even for '--ultra-brute' here
|
you have to explicitly use '--lzma' even for '--ultra-brute' here
|
||||||
because runtime decompression is about 30 times slower than NRV -
|
because runtime decompression is about 30 times slower than NRV -
|
||||||
which is really noticeable on old machines.
|
which is really noticeable on old machines.
|
||||||
* dos/exe: fixed a rarely occuring bug in relocation handling
|
* dos/exe: fixed a rarely occurring bug in relocation handling
|
||||||
* win32/pe & arm/pe: better icon compression handling
|
* win32/pe & arm/pe: better icon compression handling
|
||||||
|
|
||||||
Changes in 2.92 beta (23 Jan 2007):
|
Changes in 2.92 beta (23 Jan 2007):
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
|
|
||||||
The Ultimate Packer for eXecutables
|
The Ultimate Packer for eXecutables
|
||||||
Copyright (c) 1996-2017 Markus Oberhumer, Laszlo Molnar & John Reiser
|
Copyright (c) 1996-2020 Markus Oberhumer, Laszlo Molnar & John Reiser
|
||||||
https://upx.github.io
|
https://upx.github.io
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
|
|
||||||
The Ultimate Packer for eXecutables
|
The Ultimate Packer for eXecutables
|
||||||
Copyright (c) 1996-2017 Markus Oberhumer, Laszlo Molnar & John Reiser
|
Copyright (c) 1996-2020 Markus Oberhumer, Laszlo Molnar & John Reiser
|
||||||
https://upx.github.io
|
https://upx.github.io
|
||||||
|
|
||||||
|
|
||||||
@@ -103,9 +103,9 @@ THE FUTURE
|
|||||||
COPYRIGHT
|
COPYRIGHT
|
||||||
=========
|
=========
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
Copyright (C) 2000-2017 John F. Reiser
|
Copyright (C) 2000-2020 John F. Reiser
|
||||||
|
|
||||||
This program may be used freely, and you are welcome to
|
This program may be used freely, and you are welcome to
|
||||||
redistribute it under certain conditions.
|
redistribute it under certain conditions.
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
|
|
||||||
The Ultimate Packer for eXecutables
|
The Ultimate Packer for eXecutables
|
||||||
Copyright (c) 1996-2017 Markus Oberhumer, Laszlo Molnar & John Reiser
|
Copyright (c) 1996-2020 Markus Oberhumer, Laszlo Molnar & John Reiser
|
||||||
https://upx.github.io
|
https://upx.github.io
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -61,6 +61,10 @@ Prerequisites
|
|||||||
|
|
||||||
- first of all you need to build the UCL compression library
|
- first of all you need to build the UCL compression library
|
||||||
http://www.oberhumer.com/opensource/ucl/
|
http://www.oberhumer.com/opensource/ucl/
|
||||||
|
Use "CC=gcc -std=gnu89" especially with gcc-6.3 and gcc-7.1.
|
||||||
|
To build for native aarch64 (64-bit ARM) the files config.guess
|
||||||
|
and config.sub must be updated according to the recipe at
|
||||||
|
https://www.gnu.org/software/gettext/manual/html_node/config_002eguess.html
|
||||||
|
|
||||||
|
|
||||||
Tools needed to build/modify the UPX sources
|
Tools needed to build/modify the UPX sources
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
|
|
||||||
The Ultimate Packer for eXecutables
|
The Ultimate Packer for eXecutables
|
||||||
Copyright (c) 1996-2017 Markus Oberhumer, Laszlo Molnar & John Reiser
|
Copyright (c) 1996-2020 Markus Oberhumer, Laszlo Molnar & John Reiser
|
||||||
https://upx.github.io
|
https://upx.github.io
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -50,22 +50,28 @@ mostlyclean clean distclean maintainer-clean:
|
|||||||
|
|
||||||
%.1 : %.pod
|
%.1 : %.pod
|
||||||
pod2man --center=" " --release="$(PACKAGE) $(VERSION)" --date="$(VERSION_DATE)" $< | $(RTRIM) > $@
|
pod2man --center=" " --release="$(PACKAGE) $(VERSION)" --date="$(VERSION_DATE)" $< | $(RTRIM) > $@
|
||||||
|
test -s $@
|
||||||
|
|
||||||
%.doc : %.pod
|
%.doc : %.pod
|
||||||
pod2text < $< | $(RTRIM) > $@
|
pod2text < $< | $(RTRIM) > $@
|
||||||
|
test -s $@
|
||||||
|
|
||||||
%.html : %.pod
|
%.html : %.pod
|
||||||
pod2html --noindex $< | $(RTRIM) | $(DETAB2) > $@
|
pod2html --noindex $< | $(RTRIM) | $(DETAB2) > $@
|
||||||
@rm -f pod2htm*
|
@rm -f pod2htm*
|
||||||
|
test -s $@
|
||||||
|
|
||||||
%.man : %.1
|
%.man : %.1
|
||||||
nroff -man $< | $(RTRIM) > $@
|
nroff -man $< | $(RTRIM) > $@
|
||||||
|
test -s $@
|
||||||
|
|
||||||
%.ps : %.1
|
%.ps : %.1
|
||||||
groff -man $< | $(RTRIM) > $@
|
groff -man $< | $(RTRIM) > $@
|
||||||
|
test -s $@
|
||||||
|
|
||||||
%.tex : %.pod
|
%.tex : %.pod
|
||||||
pod2latex $<
|
pod2latex $<
|
||||||
|
test -s $@
|
||||||
|
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
Decompressing ELF Directly to Memory on Linux/x86
|
Decompressing ELF Directly to Memory on Linux/x86
|
||||||
Copyright (C) 2000-2017 John F. Reiser jreiser@BitWagon.com
|
Copyright (C) 2000-2020 John F. Reiser jreiser@BitWagon.com
|
||||||
|
|
||||||
References:
|
References:
|
||||||
<elf.h> definitions for the ELF file format
|
<elf.h> definitions for the ELF file format
|
||||||
|
|||||||
+6
-6
@@ -13,8 +13,8 @@ B<upx> S<[ I<command> ]> S<[ I<options> ]> I<filename>...
|
|||||||
=head1 ABSTRACT
|
=head1 ABSTRACT
|
||||||
|
|
||||||
The Ultimate Packer for eXecutables
|
The Ultimate Packer for eXecutables
|
||||||
Copyright (c) 1996-2017 Markus Oberhumer, Laszlo Molnar & John Reiser
|
Copyright (c) 1996-2020 Markus Oberhumer, Laszlo Molnar & John Reiser
|
||||||
http://upx.sourceforge.net
|
https://upx.github.io
|
||||||
|
|
||||||
|
|
||||||
B<UPX> is a portable, extendable, high-performance executable packer for
|
B<UPX> is a portable, extendable, high-performance executable packer for
|
||||||
@@ -934,13 +934,13 @@ Please report all bugs immediately to the authors.
|
|||||||
|
|
||||||
=head1 COPYRIGHT
|
=head1 COPYRIGHT
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
|
|
||||||
Copyright (C) 2000-2017 John F. Reiser
|
Copyright (C) 2000-2020 John F. Reiser
|
||||||
|
|
||||||
Copyright (C) 2002-2017 Jens Medoch
|
Copyright (C) 2002-2020 Jens Medoch
|
||||||
|
|
||||||
This program may be used freely, and you are welcome to
|
This program may be used freely, and you are welcome to
|
||||||
redistribute it under certain conditions.
|
redistribute it under certain conditions.
|
||||||
|
|||||||
+5
-3
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# UPX Makefile - needs GNU make 3.81 or better
|
# UPX Makefile - needs GNU make 3.81 or better
|
||||||
#
|
#
|
||||||
# Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
# Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
#
|
#
|
||||||
|
|
||||||
# build configuration options for this Makefile
|
# build configuration options for this Makefile
|
||||||
@@ -148,6 +148,8 @@ upx_testsuite_SRCDIR := $(top_srcdir)/../upx-testsuite
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
# run the UPX testsuite
|
# run the UPX testsuite
|
||||||
|
# The expected (old) checksums are in $(top_srcdir)/.github/travis_testsuite_1-expected_sha256sums.sh
|
||||||
|
# The actual (new) checksums are in tmp-testsuite/testsuite_1/.sha256sums.recreate
|
||||||
ifneq ($(wildcard $(upx_testsuite_SRCDIR)/files/packed/.),)
|
ifneq ($(wildcard $(upx_testsuite_SRCDIR)/files/packed/.),)
|
||||||
ifneq ($(wildcard $(top_srcdir)/.github/travis_testsuite_1.sh),)
|
ifneq ($(wildcard $(top_srcdir)/.github/travis_testsuite_1.sh),)
|
||||||
run-testsuite: export upx_exe := ./upx$(exeext)
|
run-testsuite: export upx_exe := ./upx$(exeext)
|
||||||
@@ -161,11 +163,11 @@ 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 += linker.cpp linker.h packhead.cpp
|
CLANG_FORMAT_FILES += linker.cpp linker.h packhead.cpp packmast.cpp packmast.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 += snprintf.cpp
|
CLANG_FORMAT_FILES += snprintf.cpp
|
||||||
CLANG_FORMAT_FILES += stdcxx.cpp stdcxx.h
|
CLANG_FORMAT_FILES += stdcxx.cpp stdcxx.h
|
||||||
CLANG_FORMAT_FILES += ui.cpp ui.h util.h
|
CLANG_FORMAT_FILES += ui.cpp ui.h util.cpp util.h work.cpp
|
||||||
clang-format:
|
clang-format:
|
||||||
$(top_srcdir)/src/stub/scripts/upx-clang-format -i $(addprefix $(top_srcdir)/src/,$(CLANG_FORMAT_FILES))
|
$(top_srcdir)/src/stub/scripts/upx-clang-format -i $(addprefix $(top_srcdir)/src/,$(CLANG_FORMAT_FILES))
|
||||||
.PHONY: clang-format
|
.PHONY: clang-format
|
||||||
|
|||||||
+18
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -142,6 +142,22 @@ inline void set_le24(void *p, unsigned v)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline unsigned get_le26(const void *p)
|
||||||
|
{
|
||||||
|
const acc_hbyte_p b = ACC_CCAST(const acc_hbyte_p, p);
|
||||||
|
return ACC_ICONV(acc_uint32l_t, b[0] ) | ( ACC_ICONV(acc_uint32l_t, b[1]) << 8) |
|
||||||
|
(ACC_ICONV(acc_uint32l_t, b[2]) << 16) | (((ACC_ICONV(acc_uint32l_t, b[3]) & 3)<< 24));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void set_le26(void *p, unsigned v)
|
||||||
|
{
|
||||||
|
acc_hbyte_p b = ACC_PCAST(acc_hbyte_p, p);
|
||||||
|
b[0] = ACC_ICONV(unsigned char, (v >> 0) & 0xff);
|
||||||
|
b[1] = ACC_ICONV(unsigned char, (v >> 8) & 0xff);
|
||||||
|
b[2] = ACC_ICONV(unsigned char, (v >> 16) & 0xff);
|
||||||
|
b[3] = ACC_ICONV(unsigned char, (v >> 24) & 0x03) | (0xFC & b[3]);
|
||||||
|
}
|
||||||
|
|
||||||
inline unsigned get_le32(const void *p)
|
inline unsigned get_le32(const void *p)
|
||||||
{
|
{
|
||||||
#if defined(ACC_UA_GET_LE32)
|
#if defined(ACC_UA_GET_LE32)
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+3
-3
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -126,7 +126,7 @@ static int init(FILE *f, int o, int now)
|
|||||||
else
|
else
|
||||||
return CON_INIT;
|
return CON_INIT;
|
||||||
|
|
||||||
#if defined(__DJGPP__)
|
#if (ACC_OS_DOS32) && defined(__DJGPP__)
|
||||||
if (!screen)
|
if (!screen)
|
||||||
screen = do_construct(screen_djgpp2_construct(),fd);
|
screen = do_construct(screen_djgpp2_construct(),fd);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+19
-9
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -30,6 +30,12 @@
|
|||||||
#include "compress.h"
|
#include "compress.h"
|
||||||
#include "mem.h"
|
#include "mem.h"
|
||||||
|
|
||||||
|
#if (ACC_CC_CLANG)
|
||||||
|
# pragma clang diagnostic ignored "-Wshadow"
|
||||||
|
#endif
|
||||||
|
#if (ACC_CC_GNUC >= 0x040200)
|
||||||
|
# pragma GCC diagnostic ignored "-Wshadow"
|
||||||
|
#endif
|
||||||
#if (ACC_CC_MSC)
|
#if (ACC_CC_MSC)
|
||||||
# pragma warning(disable: 4456) // -Wno-shadow
|
# pragma warning(disable: 4456) // -Wno-shadow
|
||||||
#endif
|
#endif
|
||||||
@@ -43,8 +49,6 @@
|
|||||||
|
|
||||||
void lzma_compress_config_t::reset()
|
void lzma_compress_config_t::reset()
|
||||||
{
|
{
|
||||||
memset(this, 0, sizeof(*this));
|
|
||||||
|
|
||||||
pos_bits.reset();
|
pos_bits.reset();
|
||||||
lit_pos_bits.reset();
|
lit_pos_bits.reset();
|
||||||
lit_context_bits.reset();
|
lit_context_bits.reset();
|
||||||
@@ -111,11 +115,11 @@ static int prepare(lzma_compress_result_t *res,
|
|||||||
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
|
||||||
res->pos_bits = lzma_compress_config_t::pos_bits_t::default_value_c;
|
res->pos_bits = lzma_compress_config_t::pos_bits_t::default_value;
|
||||||
res->lit_pos_bits = lzma_compress_config_t::lit_pos_bits_t::default_value_c;
|
res->lit_pos_bits = lzma_compress_config_t::lit_pos_bits_t::default_value;
|
||||||
res->lit_context_bits = lzma_compress_config_t::lit_context_bits_t::default_value_c;
|
res->lit_context_bits = lzma_compress_config_t::lit_context_bits_t::default_value;
|
||||||
res->dict_size = lzma_compress_config_t::dict_size_t::default_value_c;
|
res->dict_size = lzma_compress_config_t::dict_size_t::default_value;
|
||||||
res->num_fast_bytes = lzma_compress_config_t::num_fast_bytes_t::default_value_c;
|
res->num_fast_bytes = lzma_compress_config_t::num_fast_bytes_t::default_value;
|
||||||
// method overrides
|
// method overrides
|
||||||
if (method >= 0x100) {
|
if (method >= 0x100) {
|
||||||
res->pos_bits = (method >> 16) & 15;
|
res->pos_bits = (method >> 16) & 15;
|
||||||
@@ -201,6 +205,12 @@ static int prepare(lzma_compress_result_t *res,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lzma_compress_config_t::pos_bits_t::assertValue(res->pos_bits);
|
||||||
|
lzma_compress_config_t::lit_pos_bits_t::assertValue(res->lit_pos_bits);
|
||||||
|
lzma_compress_config_t::lit_context_bits_t::assertValue(res->lit_context_bits);
|
||||||
|
lzma_compress_config_t::dict_size_t::assertValue(res->dict_size);
|
||||||
|
lzma_compress_config_t::num_fast_bytes_t::assertValue(res->num_fast_bytes);
|
||||||
|
|
||||||
res->num_probs = 1846 + (768 << (res->lit_context_bits + res->lit_pos_bits));
|
res->num_probs = 1846 + (768 << (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, res->lit_context_bits, res->dict_size, res->num_probs);
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
void zlib_compress_config_t::reset()
|
void zlib_compress_config_t::reset()
|
||||||
{
|
{
|
||||||
memset(this, 0, sizeof(*this));
|
mem_clear(this, sizeof(*this));
|
||||||
|
|
||||||
mem_level.reset();
|
mem_level.reset();
|
||||||
window_bits.reset();
|
window_bits.reset();
|
||||||
|
|||||||
+26
-15
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -123,7 +123,7 @@ typedef unsigned char upx_byte;
|
|||||||
#undef small
|
#undef small
|
||||||
#undef tos
|
#undef tos
|
||||||
#undef unix
|
#undef unix
|
||||||
#if defined(__DJGPP__)
|
#if (ACC_OS_DOS32) && defined(__DJGPP__)
|
||||||
# undef sopen
|
# undef sopen
|
||||||
# undef __unix__
|
# undef __unix__
|
||||||
# undef __unix
|
# undef __unix
|
||||||
@@ -230,7 +230,9 @@ typedef size_t upx_rsize_t;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// avoid warnings about shadowing global functions
|
// avoid warnings about shadowing global functions
|
||||||
|
#undef basename
|
||||||
#undef index
|
#undef index
|
||||||
|
#undef outp
|
||||||
#define basename upx_basename
|
#define basename upx_basename
|
||||||
#define index upx_index
|
#define index upx_index
|
||||||
#define outp upx_outp
|
#define outp upx_outp
|
||||||
@@ -403,6 +405,8 @@ private:
|
|||||||
#define UPX_F_VMLINUX_PPC64LE 40
|
#define UPX_F_VMLINUX_PPC64LE 40
|
||||||
#define UPX_F_DYLIB_PPC64LE 41
|
#define UPX_F_DYLIB_PPC64LE 41
|
||||||
|
|
||||||
|
#define UPX_F_LINUX_ELF64_ARM 42
|
||||||
|
|
||||||
#define UPX_F_ATARI_TOS 129
|
#define UPX_F_ATARI_TOS 129
|
||||||
#define UPX_F_SOLARIS_SPARC 130 // NOT IMPLEMENTED
|
#define UPX_F_SOLARIS_SPARC 130 // NOT IMPLEMENTED
|
||||||
#define UPX_F_MACH_PPC32 131
|
#define UPX_F_MACH_PPC32 131
|
||||||
@@ -414,6 +418,10 @@ private:
|
|||||||
#define UPX_F_LINUX_ELF32_MIPSEB 137
|
#define UPX_F_LINUX_ELF32_MIPSEB 137
|
||||||
#define UPX_F_DYLIB_PPC32 138
|
#define UPX_F_DYLIB_PPC32 138
|
||||||
|
|
||||||
|
#define UPX_F_MACH_PPC64 139
|
||||||
|
#define UPX_F_LINUX_ELFPPC64 140
|
||||||
|
#define UPX_F_VMLINUX_PPC64 141
|
||||||
|
#define UPX_F_DYLIB_PPC64 142
|
||||||
|
|
||||||
// compression methods
|
// compression methods
|
||||||
#define M_ALL (-1)
|
#define M_ALL (-1)
|
||||||
@@ -474,24 +482,27 @@ struct upx_callback_t
|
|||||||
// compression - config_t
|
// compression - config_t
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
template <class T, T default_value, T min_value, T max_value>
|
template <class T, T default_value_, T min_value_, T max_value_>
|
||||||
struct OptVar
|
struct OptVar
|
||||||
{
|
{
|
||||||
typedef T value_type;
|
typedef T value_type;
|
||||||
static const T default_value_c = default_value;
|
static const T default_value = default_value_;
|
||||||
static const T min_value_c = min_value;
|
static const T min_value = min_value_;
|
||||||
static const T max_value_c = max_value;
|
static const T max_value = max_value_;
|
||||||
|
|
||||||
void assertValue() const {
|
static void assertValue(const T &v) {
|
||||||
// info: this generates annoying warnings "unsigned >= 0 is always true"
|
// info: this generates annoying warnings "unsigned >= 0 is always true"
|
||||||
//assert(v >= min_value_c);
|
//assert(v >= min_value);
|
||||||
assert(v == min_value_c || v >= min_value_c + 1);
|
assert(v == min_value || v >= min_value + 1);
|
||||||
assert(v <= max_value_c);
|
assert(v <= max_value);
|
||||||
|
}
|
||||||
|
void assertValue() const {
|
||||||
|
assertValue(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
OptVar() : v(default_value), is_set(0) { }
|
OptVar() : v(default_value), is_set(0) { }
|
||||||
OptVar& operator= (const T other) {
|
OptVar& operator= (const T &other) {
|
||||||
v = other; is_set += 1;
|
v = other; is_set = 1;
|
||||||
assertValue();
|
assertValue();
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
@@ -507,10 +518,10 @@ struct OptVar
|
|||||||
// optional assignments
|
// optional assignments
|
||||||
template <class T, T a, T b, T c>
|
template <class T, T a, T b, T c>
|
||||||
inline void oassign(OptVar<T,a,b,c> &self, const OptVar<T,a,b,c> &other) {
|
inline void oassign(OptVar<T,a,b,c> &self, const OptVar<T,a,b,c> &other) {
|
||||||
if (other.is_set) { self.v = other.v; self.is_set += 1; }
|
if (other.is_set) { self.v = other.v; self.is_set = 1; }
|
||||||
}
|
}
|
||||||
template <class T, T a, T b, T c>
|
template <class T, T a, T b, T c>
|
||||||
inline void oassign(unsigned &v, const OptVar<T,a,b,c> &other) {
|
inline void oassign(T &v, const OptVar<T,a,b,c> &other) {
|
||||||
if (other.is_set) { v = other.v; }
|
if (other.is_set) { v = other.v; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 1 && defined(__DJGPP__)
|
#if 1 && (ACC_OS_DOS32) && defined(__DJGPP__)
|
||||||
# define USE_SCREEN 1
|
# define USE_SCREEN 1
|
||||||
#elif 1 && (ACC_OS_CYGWIN || ACC_OS_WIN32 || ACC_OS_WIN64)
|
#elif 1 && (ACC_OS_CYGWIN || ACC_OS_WIN32 || ACC_OS_WIN64)
|
||||||
# define USE_SCREEN 1
|
# define USE_SCREEN 1
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+3
-3
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -129,7 +129,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// application execptions
|
// application exceptions
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
class OverlayException : public Exception
|
class OverlayException : public Exception
|
||||||
|
|||||||
+6
-4
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -48,7 +48,7 @@ void File::chmod(const char *name, int mode)
|
|||||||
|
|
||||||
void File::rename(const char *old_, const char *new_)
|
void File::rename(const char *old_, const char *new_)
|
||||||
{
|
{
|
||||||
#if defined(__DJGPP__)
|
#if (ACC_OS_DOS32) && defined(__DJGPP__)
|
||||||
if (::_rename(old_,new_) != 0)
|
if (::_rename(old_,new_) != 0)
|
||||||
#else
|
#else
|
||||||
if (::rename(old_,new_) != 0)
|
if (::rename(old_,new_) != 0)
|
||||||
@@ -94,7 +94,7 @@ bool FileBase::do_sopen()
|
|||||||
_fd = ::open(_name, _flags, _mode);
|
_fd = ::open(_name, _flags, _mode);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#if defined(__DJGPP__)
|
#if (ACC_OS_DOS32) && defined(__DJGPP__)
|
||||||
_fd = ::open(_name,_flags | _shflags, _mode);
|
_fd = ::open(_name,_flags | _shflags, _mode);
|
||||||
#elif defined(__MINT__)
|
#elif defined(__MINT__)
|
||||||
_fd = ::open(_name,_flags | (_shflags & O_SHMODE), _mode);
|
_fd = ::open(_name,_flags | (_shflags & O_SHMODE), _mode);
|
||||||
@@ -140,6 +140,7 @@ int FileBase::read(void *buf, int len)
|
|||||||
{
|
{
|
||||||
if (!isOpen() || len < 0)
|
if (!isOpen() || len < 0)
|
||||||
throwIOException("bad read");
|
throwIOException("bad read");
|
||||||
|
mem_size_assert(1, len); // sanity check
|
||||||
errno = 0;
|
errno = 0;
|
||||||
long l = acc_safe_hread(_fd, buf, len);
|
long l = acc_safe_hread(_fd, buf, len);
|
||||||
if (errno)
|
if (errno)
|
||||||
@@ -161,6 +162,7 @@ void FileBase::write(const void *buf, int len)
|
|||||||
{
|
{
|
||||||
if (!isOpen() || len < 0)
|
if (!isOpen() || len < 0)
|
||||||
throwIOException("bad write");
|
throwIOException("bad write");
|
||||||
|
mem_size_assert(1, len); // sanity check
|
||||||
errno = 0;
|
errno = 0;
|
||||||
long l = acc_safe_hwrite(_fd, buf, len);
|
long l = acc_safe_hwrite(_fd, buf, len);
|
||||||
if (l != len)
|
if (l != len)
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+43
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -459,4 +459,45 @@ static int s_ct24arm_be(Filter *f)
|
|||||||
#undef CT24ARM_BE
|
#undef CT24ARM_BE
|
||||||
#undef ARMCT_COND
|
#undef ARMCT_COND
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
// 26-bit ARM calltrick ("naive")
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
#define CT26ARM_LE(f, cond, addvalue, get, set) \
|
||||||
|
upx_byte *b = f->buf; \
|
||||||
|
upx_byte *b_end = b + f->buf_len - 4; \
|
||||||
|
do { \
|
||||||
|
if (cond) \
|
||||||
|
{ \
|
||||||
|
unsigned a = (unsigned) (b - f->buf); \
|
||||||
|
f->lastcall = a; \
|
||||||
|
set(b, get(b) + (addvalue)); \
|
||||||
|
f->calls++; \
|
||||||
|
} \
|
||||||
|
b += 4; \
|
||||||
|
} while (b < b_end); \
|
||||||
|
if (f->lastcall) f->lastcall += 4; \
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
|
||||||
|
#define ARMCT_COND (((b[3] & 0x7C) == 0x14))
|
||||||
|
|
||||||
|
static int f_ct26arm_le(Filter *f)
|
||||||
|
{
|
||||||
|
CT26ARM_LE(f, ARMCT_COND, a / 4 + f->addvalue, get_le26, set_le26)
|
||||||
|
}
|
||||||
|
|
||||||
|
static int u_ct26arm_le(Filter *f)
|
||||||
|
{
|
||||||
|
CT26ARM_LE(f, ARMCT_COND, 0 - a / 4 - f->addvalue, get_le26, set_le26)
|
||||||
|
}
|
||||||
|
|
||||||
|
static int s_ct26arm_le(Filter *f)
|
||||||
|
{
|
||||||
|
CT26ARM_LE(f, ARMCT_COND, a + f->addvalue, get_le26, set_dummy)
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef CT26ARM_LE
|
||||||
|
#undef ARMCT_COND
|
||||||
|
|
||||||
/* vim:set ts=4 sw=4 et: */
|
/* vim:set ts=4 sw=4 et: */
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+3
-3
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
Copyright (C) 2000-2017 John F. Reiser
|
Copyright (C) 2000-2020 John F. Reiser
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+3
-3
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
Copyright (C) 2000-2017 John F. Reiser
|
Copyright (C) 2000-2020 John F. Reiser
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+3
-3
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
Copyright (C) 2000-2017 John F. Reiser
|
Copyright (C) 2000-2020 John F. Reiser
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+3
-3
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
Copyright (C) 2004-2017 John F. Reiser
|
Copyright (C) 2004-2020 John F. Reiser
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+5
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -228,6 +228,9 @@ const FilterImp::FilterEntry FilterImp::filters[] = {
|
|||||||
{ 0x50, 8, 0x01ffffff, f_ct24arm_le, u_ct24arm_le, s_ct24arm_le },
|
{ 0x50, 8, 0x01ffffff, f_ct24arm_le, u_ct24arm_le, s_ct24arm_le },
|
||||||
{ 0x51, 8, 0x01ffffff, f_ct24arm_be, u_ct24arm_be, s_ct24arm_be },
|
{ 0x51, 8, 0x01ffffff, f_ct24arm_be, u_ct24arm_be, s_ct24arm_be },
|
||||||
|
|
||||||
|
// 26-bit calltrick for arm64
|
||||||
|
{ 0x52, 8, 0x03ffffff, f_ct26arm_le, u_ct26arm_le, s_ct26arm_le },
|
||||||
|
|
||||||
// 32-bit cto calltrick with jmp and jcc(swap 0x0f/0x8Y) and relative renumbering
|
// 32-bit cto calltrick with jmp and jcc(swap 0x0f/0x8Y) and relative renumbering
|
||||||
{ 0x80, 8, 0x00ffffff, f_ctojr32_e8e9_bswap_le, u_ctojr32_e8e9_bswap_le, s_ctojr32_e8e9_bswap_le },
|
{ 0x80, 8, 0x00ffffff, f_ctojr32_e8e9_bswap_le, u_ctojr32_e8e9_bswap_le, s_ctojr32_e8e9_bswap_le },
|
||||||
{ 0x81, 8, 0x00ffffff, f_ctojr32_e8e9_bswap_le, u_ctojr32_e8e9_bswap_le, s_ctojr32_e8e9_bswap_le },
|
{ 0x81, 8, 0x00ffffff, f_ctojr32_e8e9_bswap_le, u_ctojr32_e8e9_bswap_le, s_ctojr32_e8e9_bswap_le },
|
||||||
|
|||||||
+8
-17
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -91,7 +91,7 @@ void show_usage(void)
|
|||||||
FILE *f = con_term;
|
FILE *f = con_term;
|
||||||
|
|
||||||
con_fprintf(f,"Usage: %s [-123456789dlthVL] [-qvfk] [-o file] %sfile..\n", progname,
|
con_fprintf(f,"Usage: %s [-123456789dlthVL] [-qvfk] [-o file] %sfile..\n", progname,
|
||||||
#if defined(__DJGPP__) || defined(__EMX__)
|
#if (ACC_OS_DOS32) && defined(__DJGPP__)
|
||||||
"[@]");
|
"[@]");
|
||||||
#else
|
#else
|
||||||
"");
|
"");
|
||||||
@@ -262,15 +262,6 @@ void show_help(int verbose)
|
|||||||
con_fprintf(f,
|
con_fprintf(f,
|
||||||
" --8086 make compressed sys work on any 8086\n"
|
" --8086 make compressed sys work on any 8086\n"
|
||||||
"\n");
|
"\n");
|
||||||
#if 0
|
|
||||||
fg = con_fg(f,FG_YELLOW);
|
|
||||||
con_fprintf(f,"Options for linux/386\n");
|
|
||||||
fg = con_fg(f,fg);
|
|
||||||
con_fprintf(f,
|
|
||||||
" --script use /usr/local/lib/upx/upx[bd] as decompressor\n"
|
|
||||||
" --script=/path/upxX use path/upxX as decompressor\n"
|
|
||||||
"\n");
|
|
||||||
#endif
|
|
||||||
fg = con_fg(f,FG_YELLOW);
|
fg = con_fg(f,FG_YELLOW);
|
||||||
con_fprintf(f,"Options for ps1/exe:\n");
|
con_fprintf(f,"Options for ps1/exe:\n");
|
||||||
fg = con_fg(f,fg);
|
fg = con_fg(f,fg);
|
||||||
@@ -370,7 +361,7 @@ void show_license(void)
|
|||||||
);
|
);
|
||||||
int fg = con_fg(f,FG_CYAN);
|
int fg = con_fg(f,FG_CYAN);
|
||||||
con_fprintf(f,
|
con_fprintf(f,
|
||||||
" http://upx.sourceforge.net\n"
|
" https://upx.github.io\n"
|
||||||
" http://www.oberhumer.com/opensource/upx/\n"
|
" http://www.oberhumer.com/opensource/upx/\n"
|
||||||
);
|
);
|
||||||
(void)con_fg(f,FG_ORANGE);
|
(void)con_fg(f,FG_ORANGE);
|
||||||
@@ -421,10 +412,10 @@ void show_version(int x)
|
|||||||
if (v != NULL && v[0])
|
if (v != NULL && v[0])
|
||||||
fprintf(fp, "LZMA SDK version %s\n", v);
|
fprintf(fp, "LZMA SDK version %s\n", v);
|
||||||
#endif
|
#endif
|
||||||
fprintf(fp, "Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer\n");
|
fprintf(fp, "Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer\n");
|
||||||
fprintf(fp, "Copyright (C) 1996-2017 Laszlo Molnar\n");
|
fprintf(fp, "Copyright (C) 1996-2020 Laszlo Molnar\n");
|
||||||
fprintf(fp, "Copyright (C) 2000-2017 John F. Reiser\n");
|
fprintf(fp, "Copyright (C) 2000-2020 John F. Reiser\n");
|
||||||
fprintf(fp, "Copyright (C) 2002-2017 Jens Medoch\n");
|
fprintf(fp, "Copyright (C) 2002-2020 Jens Medoch\n");
|
||||||
#if (WITH_ZLIB)
|
#if (WITH_ZLIB)
|
||||||
fprintf(fp, "Copyright (C) 1995" "-2005 Jean-loup Gailly and Mark Adler\n");
|
fprintf(fp, "Copyright (C) 1995" "-2005 Jean-loup Gailly and Mark Adler\n");
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+3
-3
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -112,7 +112,7 @@ protected:
|
|||||||
LE32 extra_heap_alloc;
|
LE32 extra_heap_alloc;
|
||||||
char reserved[12];
|
char reserved[12];
|
||||||
LE32 versioninfo;
|
LE32 versioninfo;
|
||||||
LE32 unkown;
|
LE32 unknown;
|
||||||
// 0xC0
|
// 0xC0
|
||||||
LE16 device_id;
|
LE16 device_id;
|
||||||
LE16 ddk_version;
|
LE16 ddk_version;
|
||||||
|
|||||||
+82
-12
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -472,9 +472,10 @@ void ElfLinker::relocate() {
|
|||||||
value = rel->value->section->offset + rel->value->offset + rel->add;
|
value = rel->value->section->offset + rel->value->offset + rel->add;
|
||||||
}
|
}
|
||||||
upx_byte *location = rel->section->output + rel->offset;
|
upx_byte *location = rel->section->output + rel->offset;
|
||||||
// printf("%-28s %-28s %-10s 0x%16llx 0x%16llx\n", rel->section->name, rel->value->name,
|
// printf("%-28s %-28s %-10s %#16llx %#16llx\n", rel->section->name, rel->value->name,
|
||||||
// rel->type, (long long) value, (long long) value - rel->section->offset - rel->offset);
|
// rel->type, (long long) value, (long long) value - rel->section->offset - rel->offset);
|
||||||
// printf(" %llx %d %llx %d %llx : %d\n", (long long) value, rel->value->section->offset,
|
// printf(" %llx %d %llx %d %llx : %d\n", (long long) value,
|
||||||
|
// (int)rel->value->section->offset,
|
||||||
// rel->value->offset, rel->offset, (long long) rel->add, *location);
|
// rel->value->offset, rel->offset, (long long) rel->add, *location);
|
||||||
relocate1(rel, location, value, rel->type);
|
relocate1(rel, location, value, rel->type);
|
||||||
}
|
}
|
||||||
@@ -541,7 +542,7 @@ void ElfLinker::alignWithByte(unsigned len, unsigned char b) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ElfLinker::relocate1(const Relocation *rel, upx_byte *, upx_uint64_t, const char *) {
|
void ElfLinker::relocate1(const Relocation *rel, upx_byte *, upx_uint64_t, const char *) {
|
||||||
internal_error("unknown relocation type '%s\n", rel->type);
|
internal_error("unknown relocation type '%s\n'", rel->type);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
@@ -593,7 +594,8 @@ void ElfLinkerAMD64::relocate1(const Relocation *rel, upx_byte *location, upx_ui
|
|||||||
|
|
||||||
void ElfLinkerArmBE::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
|
void ElfLinkerArmBE::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type) {
|
const char *type) {
|
||||||
if (strcmp(type, "R_ARM_PC24") == 0) {
|
if (!strcmp(type, "R_ARM_PC24") || !strcmp(type, "R_ARM_CALL") ||
|
||||||
|
!strcmp(type, "R_ARM_JUMP24")) {
|
||||||
value -= rel->section->offset + rel->offset;
|
value -= rel->section->offset + rel->offset;
|
||||||
set_be24(1 + location, get_be24(1 + location) + value / 4);
|
set_be24(1 + location, get_be24(1 + location) + value / 4);
|
||||||
} else if (strcmp(type, "R_ARM_ABS32") == 0) {
|
} else if (strcmp(type, "R_ARM_ABS32") == 0) {
|
||||||
@@ -617,7 +619,8 @@ void ElfLinkerArmBE::relocate1(const Relocation *rel, upx_byte *location, upx_ui
|
|||||||
|
|
||||||
void ElfLinkerArmLE::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
|
void ElfLinkerArmLE::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type) {
|
const char *type) {
|
||||||
if (strcmp(type, "R_ARM_PC24") == 0) {
|
if (!strcmp(type, "R_ARM_PC24") || !strcmp(type, "R_ARM_CALL") ||
|
||||||
|
!strcmp(type, "R_ARM_JUMP24")) {
|
||||||
value -= rel->section->offset + rel->offset;
|
value -= rel->section->offset + rel->offset;
|
||||||
set_le24(location, get_le24(location) + value / 4);
|
set_le24(location, get_le24(location) + value / 4);
|
||||||
} else if (strcmp(type, "R_ARM_ABS32") == 0) {
|
} else if (strcmp(type, "R_ARM_ABS32") == 0) {
|
||||||
@@ -641,11 +644,40 @@ void ElfLinkerArmLE::relocate1(const Relocation *rel, upx_byte *location, upx_ui
|
|||||||
|
|
||||||
void ElfLinkerArm64LE::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
|
void ElfLinkerArm64LE::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type) {
|
const char *type) {
|
||||||
if (strcmp(type, "R_AARCH64_CALL26") == 0) {
|
if (strncmp(type, "R_AARCH64_", 10))
|
||||||
|
return super::relocate1(rel, location, value, type);
|
||||||
|
type += 10;
|
||||||
|
|
||||||
|
if (!strncmp(type, "PREL", 4)) {
|
||||||
value -= rel->section->offset + rel->offset;
|
value -= rel->section->offset + rel->offset;
|
||||||
set_le24(location, get_le24(location) + value / 4); // FIXME set_le26
|
type += 4;
|
||||||
} else if (strcmp(type, "R_AARCH64_ABS32") == 0) {
|
|
||||||
|
if (!strcmp(type, "16"))
|
||||||
|
set_le16(location, get_le16(location) + value);
|
||||||
|
else if (!strncmp(type, "32", 2)) // for "32" and "32S"
|
||||||
set_le32(location, get_le32(location) + value);
|
set_le32(location, get_le32(location) + value);
|
||||||
|
else if (!strcmp(type, "64"))
|
||||||
|
set_le64(location, get_le64(location) + value);
|
||||||
|
} else if (!strcmp(type, "ADR_PREL_LO21")) {
|
||||||
|
value -= rel->section->offset + rel->offset;
|
||||||
|
upx_uint32_t const m19 = ~(~0u << 19);
|
||||||
|
upx_uint32_t w = get_le32(location);
|
||||||
|
set_le32(location, (w & ~((3u << 29) | (m19 << 5))) | ((3u & value) << 29) |
|
||||||
|
((m19 & (value >> 2)) << 5));
|
||||||
|
} else if (!strcmp(type, "ABS32")) {
|
||||||
|
set_le32(location, get_le32(location) + value);
|
||||||
|
} else if (!strcmp(type, "ABS64")) {
|
||||||
|
set_le64(location, get_le64(location) + value);
|
||||||
|
} else if (!strcmp(type, "CONDBR19")) {
|
||||||
|
value -= rel->section->offset + rel->offset;
|
||||||
|
upx_uint32_t const m19 = ~(~0u << 19);
|
||||||
|
upx_uint32_t w = get_le32(location);
|
||||||
|
set_le32(location, (w & ~(m19 << 5)) | ((((w >> 5) + (value >> 2)) & m19) << 5));
|
||||||
|
} else if (!strcmp(type, "CALL26")) {
|
||||||
|
value -= rel->section->offset + rel->offset;
|
||||||
|
upx_uint32_t const m26 = ~(~0u << 26);
|
||||||
|
upx_uint32_t w = get_le32(location);
|
||||||
|
set_le32(location, (w & ~m26) | (m26 & (value >> 2)));
|
||||||
} else
|
} else
|
||||||
super::relocate1(rel, location, value, type);
|
super::relocate1(rel, location, value, type);
|
||||||
}
|
}
|
||||||
@@ -767,6 +799,14 @@ void ElfLinkerPpc32::relocate1(const Relocation *rel, upx_byte *location, upx_ui
|
|||||||
|
|
||||||
void ElfLinkerPpc64le::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
|
void ElfLinkerPpc64le::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type) {
|
const char *type) {
|
||||||
|
if (!strcmp(type, "R_PPC64_ADDR64")) {
|
||||||
|
set_le64(location, get_le64(location) + value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!strcmp(type, "R_PPC64_ADDR32")) {
|
||||||
|
set_le32(location, get_le32(location) + value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (strncmp(type, "R_PPC64_REL", 11))
|
if (strncmp(type, "R_PPC64_REL", 11))
|
||||||
return super::relocate1(rel, location, value, type);
|
return super::relocate1(rel, location, value, type);
|
||||||
type += 11;
|
type += 11;
|
||||||
@@ -786,11 +826,11 @@ void ElfLinkerPpc64le::relocate1(const Relocation *rel, upx_byte *location, upx_
|
|||||||
internal_error("target out of range (%d) in reloc %s:%x\n", displ, rel->section->name,
|
internal_error("target out of range (%d) in reloc %s:%x\n", displ, rel->section->name,
|
||||||
rel->offset);
|
rel->offset);
|
||||||
*location += value;
|
*location += value;
|
||||||
} else if (strncmp(type, "14", 2) == 0) // for "32" and "32S"
|
} else if (strncmp(type, "14", 2) == 0) // for "14" and "14S"
|
||||||
set_le16(location, get_le16(location) + value);
|
set_le16(location, get_le16(location) + value);
|
||||||
else if (strcmp(type, "16") == 0)
|
else if (strcmp(type, "16") == 0)
|
||||||
set_le16(location, get_le16(location) + value);
|
set_le16(location, get_le16(location) + value);
|
||||||
else if (strncmp(type, "24", 2) == 0) // for "32" and "32S"
|
else if (strncmp(type, "24", 2) == 0) // for "24" and "24S"
|
||||||
set_le24(location, get_le24(location) + value);
|
set_le24(location, get_le24(location) + value);
|
||||||
else if (strncmp(type, "32", 2) == 0) // for "32" and "32S"
|
else if (strncmp(type, "32", 2) == 0) // for "32" and "32S"
|
||||||
set_le32(location, get_le32(location) + value);
|
set_le32(location, get_le32(location) + value);
|
||||||
@@ -800,6 +840,36 @@ void ElfLinkerPpc64le::relocate1(const Relocation *rel, upx_byte *location, upx_
|
|||||||
super::relocate1(rel, location, value, type);
|
super::relocate1(rel, location, value, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ElfLinkerPpc64::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
|
||||||
|
const char *type) {
|
||||||
|
if (!strcmp(type, "R_PPC64_ADDR32")) {
|
||||||
|
set_be32(location, get_be32(location) + value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!strcmp(type, "R_PPC64_ADDR64")) {
|
||||||
|
set_be64(location, get_be64(location) + value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (strncmp(type, "R_PPC64_REL", 11))
|
||||||
|
return super::relocate1(rel, location, value, type);
|
||||||
|
type += 11;
|
||||||
|
|
||||||
|
if (strncmp(type, "PC", 2) == 0) {
|
||||||
|
type += 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// We have "R_PPC64_REL" or "R_PPC64_RELPC" as a prefix.
|
||||||
|
/* value will hold relative displacement */
|
||||||
|
value -= rel->section->offset + rel->offset;
|
||||||
|
|
||||||
|
if (strncmp(type, "14", 2) == 0) // for "14" and "14S"
|
||||||
|
set_be16(2 + location, get_be16(2 + location) + value);
|
||||||
|
else if (strncmp(type, "24", 2) == 0) // for "24" and "24S"
|
||||||
|
set_be24(1 + location, get_be24(1 + location) + value);
|
||||||
|
else
|
||||||
|
super::relocate1(rel, location, value, type);
|
||||||
|
}
|
||||||
|
|
||||||
void ElfLinkerX86::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
|
void ElfLinkerX86::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type) {
|
const char *type) {
|
||||||
if (strncmp(type, "R_386_", 6))
|
if (strncmp(type, "R_386_", 6))
|
||||||
|
|||||||
+22
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -160,6 +160,15 @@ protected:
|
|||||||
const char *type);
|
const char *type);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class ElfLinkerARM64 : public ElfLinker {
|
||||||
|
typedef ElfLinker super;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void alignCode(unsigned len) { alignWithByte(len, 0x90); }
|
||||||
|
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||||
|
const char *type);
|
||||||
|
};
|
||||||
|
|
||||||
class ElfLinkerArmBE : public ElfLinker {
|
class ElfLinkerArmBE : public ElfLinker {
|
||||||
typedef ElfLinker super;
|
typedef ElfLinker super;
|
||||||
|
|
||||||
@@ -237,6 +246,17 @@ protected:
|
|||||||
const char *type);
|
const char *type);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class ElfLinkerPpc64 : public ElfLinker {
|
||||||
|
typedef ElfLinker super;
|
||||||
|
|
||||||
|
public:
|
||||||
|
ElfLinkerPpc64() { bele = &N_BELE_RTP::be_policy; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||||
|
const char *type);
|
||||||
|
};
|
||||||
|
|
||||||
class ElfLinkerX86 : public ElfLinker {
|
class ElfLinkerX86 : public ElfLinker {
|
||||||
typedef ElfLinker super;
|
typedef ElfLinker super;
|
||||||
|
|
||||||
|
|||||||
+21
-6
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
#include "p_elf.h"
|
#include "p_elf.h"
|
||||||
|
|
||||||
|
|
||||||
#if 1 && defined(__DJGPP__)
|
#if 1 && (ACC_OS_DOS32) && defined(__DJGPP__)
|
||||||
#include <crt0.h>
|
#include <crt0.h>
|
||||||
int _crt0_startup_flags = _CRT0_FLAG_UNIX_SBRK;
|
int _crt0_startup_flags = _CRT0_FLAG_UNIX_SBRK;
|
||||||
#endif
|
#endif
|
||||||
@@ -46,7 +46,7 @@ int _crt0_startup_flags = _CRT0_FLAG_UNIX_SBRK;
|
|||||||
void options_t::reset()
|
void options_t::reset()
|
||||||
{
|
{
|
||||||
options_t *o = this;
|
options_t *o = this;
|
||||||
memset(o, 0, sizeof(*o));
|
mem_clear(o, sizeof(*o));
|
||||||
o->crp.reset();
|
o->crp.reset();
|
||||||
|
|
||||||
o->cmd = CMD_NONE;
|
o->cmd = CMD_NONE;
|
||||||
@@ -61,7 +61,7 @@ void options_t::reset()
|
|||||||
o->preserve_timestamp = true;
|
o->preserve_timestamp = true;
|
||||||
|
|
||||||
o->console = CON_FILE;
|
o->console = CON_FILE;
|
||||||
#if defined(__DJGPP__)
|
#if (ACC_OS_DOS32) && defined(__DJGPP__)
|
||||||
o->console = CON_INIT;
|
o->console = CON_INIT;
|
||||||
#elif (USE_SCREEN_WIN32)
|
#elif (USE_SCREEN_WIN32)
|
||||||
o->console = CON_INIT;
|
o->console = CON_INIT;
|
||||||
@@ -866,6 +866,12 @@ static int do_option(int optc, const char *arg)
|
|||||||
case 675:
|
case 675:
|
||||||
opt->o_unix.preserve_build_id = true;
|
opt->o_unix.preserve_build_id = true;
|
||||||
break;
|
break;
|
||||||
|
case 676:
|
||||||
|
opt->o_unix.android_shlib = true;
|
||||||
|
break;
|
||||||
|
case 677:
|
||||||
|
opt->o_unix.force_pie = true;
|
||||||
|
break;
|
||||||
|
|
||||||
case '\0':
|
case '\0':
|
||||||
return -1;
|
return -1;
|
||||||
@@ -1016,6 +1022,8 @@ static const struct mfx_option longopts[] =
|
|||||||
{"openbsd", 0x10, 0, 669},
|
{"openbsd", 0x10, 0, 669},
|
||||||
{"unmap-all-pages", 0x10, 0, 674}, // linux /proc/self/exe vanishes
|
{"unmap-all-pages", 0x10, 0, 674}, // linux /proc/self/exe vanishes
|
||||||
{"preserve-build-id", 0, 0, 675},
|
{"preserve-build-id", 0, 0, 675},
|
||||||
|
{"android-shlib", 0, 0, 676},
|
||||||
|
{"force-pie", 0, 0, 677},
|
||||||
// watcom/le
|
// watcom/le
|
||||||
{"le", 0x10, 0, 620}, // produce LE output
|
{"le", 0x10, 0, 620}, // produce LE output
|
||||||
// win32/pe
|
// win32/pe
|
||||||
@@ -1409,7 +1417,7 @@ int __acc_cdecl_main main(int argc, char *argv[])
|
|||||||
static char default_argv0[] = "upx";
|
static char default_argv0[] = "upx";
|
||||||
// int cmdline_cmd = CMD_NONE;
|
// int cmdline_cmd = CMD_NONE;
|
||||||
|
|
||||||
#if 0 && defined(__DJGPP__)
|
#if 0 && (ACC_OS_DOS32) && defined(__DJGPP__)
|
||||||
// LFN=n may cause problems with 2.03's _rename and mkdir under WinME
|
// LFN=n may cause problems with 2.03's _rename and mkdir under WinME
|
||||||
putenv("LFN=y");
|
putenv("LFN=y");
|
||||||
#endif
|
#endif
|
||||||
@@ -1531,6 +1539,12 @@ int __acc_cdecl_main main(int argc, char *argv[])
|
|||||||
do_files(i,argc,argv);
|
do_files(i,argc,argv);
|
||||||
|
|
||||||
if (gitrev[0])
|
if (gitrev[0])
|
||||||
|
{
|
||||||
|
bool warn = true;
|
||||||
|
const char *ee = getenv("UPX_DISABLE_GITREV_WARNING");
|
||||||
|
if (ee && ee[0] && strcmp(ee, "1") == 0)
|
||||||
|
warn = false;
|
||||||
|
if (warn)
|
||||||
{
|
{
|
||||||
FILE *f = stdout;
|
FILE *f = stdout;
|
||||||
int fg = con_fg(f, FG_RED);
|
int fg = con_fg(f, FG_RED);
|
||||||
@@ -1538,6 +1552,7 @@ int __acc_cdecl_main main(int argc, char *argv[])
|
|||||||
fg = con_fg(f, fg);
|
fg = con_fg(f, fg);
|
||||||
UNUSED(fg);
|
UNUSED(fg);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if 0 && defined(__GLIBC__)
|
#if 0 && defined(__GLIBC__)
|
||||||
//malloc_stats();
|
//malloc_stats();
|
||||||
|
|||||||
+14
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -73,6 +73,18 @@ MemBuffer::~MemBuffer()
|
|||||||
this->dealloc();
|
this->dealloc();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// similar to BoundedPtr, except checks only at creation
|
||||||
|
unsigned char *MemBuffer::subref(char const *errfmt, unsigned skip, unsigned take)
|
||||||
|
{
|
||||||
|
if ((take + skip) < take // wrap-around
|
||||||
|
|| (take + skip) > b_size // overrun
|
||||||
|
) {
|
||||||
|
char buf[100]; snprintf(buf, sizeof(buf), errfmt, skip, take);
|
||||||
|
throwCantPack(buf);
|
||||||
|
}
|
||||||
|
return &b[skip];
|
||||||
|
}
|
||||||
|
|
||||||
void MemBuffer::dealloc()
|
void MemBuffer::dealloc()
|
||||||
{
|
{
|
||||||
if (b != NULL)
|
if (b != NULL)
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -64,6 +64,11 @@ public:
|
|||||||
void clear(unsigned off, unsigned len) { fill(off, len, 0); }
|
void clear(unsigned off, unsigned len) { fill(off, len, 0); }
|
||||||
void clear() { fill(0, b_size, 0); }
|
void clear() { fill(0, b_size, 0); }
|
||||||
|
|
||||||
|
// If the entire range [skip, take+skip) is inside the buffer,
|
||||||
|
// then return &b[skip]; else throwCantPack(sprintf(errfmt, skip, take)).
|
||||||
|
// This is similar to BoundedPtr, except only checks once.
|
||||||
|
unsigned char *subref(char const *errfmt, unsigned skip, unsigned take);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
unsigned char *b;
|
unsigned char *b;
|
||||||
unsigned b_size;
|
unsigned b_size;
|
||||||
|
|||||||
+127
-59
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#ifndef __ACC_H_INCLUDED
|
#ifndef __ACC_H_INCLUDED
|
||||||
#define __ACC_H_INCLUDED 1
|
#define __ACC_H_INCLUDED 1
|
||||||
#define ACC_VERSION 20170125L
|
#define ACC_VERSION 20200116L
|
||||||
#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
|
#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
|
||||||
# define __CYGWIN__ __CYGWIN32__
|
# define __CYGWIN__ __CYGWIN32__
|
||||||
#endif
|
#endif
|
||||||
@@ -52,6 +52,8 @@
|
|||||||
# error "__cplusplus"
|
# error "__cplusplus"
|
||||||
# elif (__cplusplus < 199711L)
|
# elif (__cplusplus < 199711L)
|
||||||
# define ACC_LANG_CXX 1
|
# define ACC_LANG_CXX 1
|
||||||
|
# elif (__cplusplus >= 201402L)
|
||||||
|
# define ACC_LANG_CXX __cplusplus
|
||||||
# elif defined(_MSC_VER) && defined(_MSVC_LANG) && (_MSVC_LANG+0 >= 201402L) && 1
|
# elif defined(_MSC_VER) && defined(_MSVC_LANG) && (_MSVC_LANG+0 >= 201402L) && 1
|
||||||
# define ACC_LANG_CXX _MSVC_LANG
|
# define ACC_LANG_CXX _MSVC_LANG
|
||||||
# else
|
# else
|
||||||
@@ -66,6 +68,33 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(ACC_CFG_ASSERT_LANG_ASSEMBLER) && (ACC_CFG_ASSERT_LANG_ASSEMBLER+0)
|
||||||
|
# if !(ACC_LANG_ASSEMBLER)
|
||||||
|
# error "ACC_CFG_ASSERT_LANG_ASSEMBLER"
|
||||||
|
# endif
|
||||||
|
# if (ACC_CFG_ASSERT_LANG_ASSEMBLER > 1) && (ACC_CFG_ASSERT_LANG_ASSEMBLER < ACC_LANG_ASSEMBLER)
|
||||||
|
# error "ACC_CFG_ASSERT_LANG_ASSEMBLER standard min version"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if defined(ACC_CFG_ASSERT_LANG_C) && (ACC_CFG_ASSERT_LANG_C+0)
|
||||||
|
# if !(ACC_LANG_C)
|
||||||
|
# error "ACC_CFG_ASSERT_LANG_C"
|
||||||
|
# endif
|
||||||
|
# if (ACC_CFG_ASSERT_LANG_C > 1) && (ACC_CFG_ASSERT_LANG_C < ACC_LANG_C)
|
||||||
|
# error "ACC_CFG_ASSERT_LANG_C standard min version"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if defined(ACC_CFG_ASSERT_LANG_CXX) && (ACC_CFG_ASSERT_LANG_CXX+0)
|
||||||
|
# if !(ACC_LANG_CXX)
|
||||||
|
# error "ACC_CFG_ASSERT_LANG_CXX"
|
||||||
|
# endif
|
||||||
|
# if !defined(__cplusplus)
|
||||||
|
# error "ACC_CFG_ASSERT_LANG_CXX __cplusplus"
|
||||||
|
# endif
|
||||||
|
# if (ACC_CFG_ASSERT_LANG_CXX > 1) && (ACC_CFG_ASSERT_LANG_CXX < ACC_LANG_CXX)
|
||||||
|
# error "ACC_CFG_ASSERT_LANG_CXX standard min version"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
#if !defined(ACC_CFG_NO_DISABLE_WUNDEF)
|
#if !defined(ACC_CFG_NO_DISABLE_WUNDEF)
|
||||||
#if defined(__ARMCC_VERSION)
|
#if defined(__ARMCC_VERSION)
|
||||||
# pragma diag_suppress 193
|
# pragma diag_suppress 193
|
||||||
@@ -523,6 +552,9 @@
|
|||||||
# if defined(_AIX) || defined(__AIX__) || defined(__aix__)
|
# if defined(_AIX) || defined(__AIX__) || defined(__aix__)
|
||||||
# define ACC_OS_POSIX_AIX 1
|
# define ACC_OS_POSIX_AIX 1
|
||||||
# define ACC_INFO_OS_POSIX "aix"
|
# define ACC_INFO_OS_POSIX "aix"
|
||||||
|
# elif defined(__DragonFly__)
|
||||||
|
# define ACC_OS_POSIX_DRAGONFLY 1
|
||||||
|
# define ACC_INFO_OS_POSIX "dragonfly"
|
||||||
# elif defined(__FreeBSD__)
|
# elif defined(__FreeBSD__)
|
||||||
# define ACC_OS_POSIX_FREEBSD 1
|
# define ACC_OS_POSIX_FREEBSD 1
|
||||||
# define ACC_INFO_OS_POSIX "freebsd"
|
# define ACC_INFO_OS_POSIX "freebsd"
|
||||||
@@ -639,6 +671,12 @@
|
|||||||
# define ACC_CC_ARMCC __ARMCC_VERSION
|
# define ACC_CC_ARMCC __ARMCC_VERSION
|
||||||
# define ACC_INFO_CC "ARM C Compiler"
|
# define ACC_INFO_CC "ARM C Compiler"
|
||||||
# define ACC_INFO_CCVER __VERSION__
|
# define ACC_INFO_CCVER __VERSION__
|
||||||
|
#elif defined(__clang__) && defined(__c2__) && defined(__c2_version__) && defined(_MSC_VER)
|
||||||
|
# define ACC_CC_CLANG (__clang_major__ * 0x10000L + (__clang_minor__-0) * 0x100 + (__clang_patchlevel__-0))
|
||||||
|
# define ACC_CC_CLANG_C2 _MSC_VER
|
||||||
|
# define ACC_CC_CLANG_VENDOR_MICROSOFT 1
|
||||||
|
# define ACC_INFO_CC "clang/c2"
|
||||||
|
# define ACC_INFO_CCVER ACC_PP_MACRO_EXPAND(__c2_version__)
|
||||||
#elif defined(__clang__) && defined(__llvm__) && defined(__VERSION__)
|
#elif defined(__clang__) && defined(__llvm__) && defined(__VERSION__)
|
||||||
# if defined(__clang_major__) && defined(__clang_minor__) && defined(__clang_patchlevel__)
|
# if defined(__clang_major__) && defined(__clang_minor__) && defined(__clang_patchlevel__)
|
||||||
# define ACC_CC_CLANG (__clang_major__ * 0x10000L + (__clang_minor__-0) * 0x100 + (__clang_patchlevel__-0))
|
# define ACC_CC_CLANG (__clang_major__ * 0x10000L + (__clang_minor__-0) * 0x100 + (__clang_patchlevel__-0))
|
||||||
@@ -650,7 +688,13 @@
|
|||||||
# elif defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
|
# elif defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
|
||||||
# define ACC_CC_CLANG_GNUC (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
|
# define ACC_CC_CLANG_GNUC (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
|
||||||
# endif
|
# endif
|
||||||
|
# if defined(__APPLE_CC__)
|
||||||
|
# define ACC_CC_CLANG_VENDOR_APPLE 1
|
||||||
|
# define ACC_INFO_CC "clang/apple"
|
||||||
|
# else
|
||||||
|
# define ACC_CC_CLANG_VENDOR_LLVM 1
|
||||||
# define ACC_INFO_CC "clang"
|
# define ACC_INFO_CC "clang"
|
||||||
|
# endif
|
||||||
# if defined(__clang_version__)
|
# if defined(__clang_version__)
|
||||||
# define ACC_INFO_CCVER __clang_version__
|
# define ACC_INFO_CCVER __clang_version__
|
||||||
# else
|
# else
|
||||||
@@ -953,6 +997,9 @@
|
|||||||
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC8051__)
|
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC8051__)
|
||||||
# define ACC_ARCH_MCS51 1
|
# define ACC_ARCH_MCS51 1
|
||||||
# define ACC_INFO_ARCH "mcs51"
|
# define ACC_INFO_ARCH "mcs51"
|
||||||
|
#elif defined(__microblaze__) || defined(__MICROBLAZE__)
|
||||||
|
# define ACC_ARCH_MICROBLAZE 1
|
||||||
|
# define ACC_INFO_ARCH "microblaze"
|
||||||
#elif defined(__mips__) || defined(__mips) || defined(_MIPS_ARCH) || defined(_M_MRX000)
|
#elif defined(__mips__) || defined(__mips) || defined(_MIPS_ARCH) || defined(_M_MRX000)
|
||||||
# define ACC_ARCH_MIPS 1
|
# define ACC_ARCH_MIPS 1
|
||||||
# define ACC_INFO_ARCH "mips"
|
# define ACC_INFO_ARCH "mips"
|
||||||
@@ -971,6 +1018,9 @@
|
|||||||
#elif defined(__powerpc64le__) || defined(__powerpc64le) || defined(__ppc64le__) || defined(__PPC64LE__)
|
#elif defined(__powerpc64le__) || defined(__powerpc64le) || defined(__ppc64le__) || defined(__PPC64LE__)
|
||||||
# define ACC_ARCH_POWERPC 1
|
# define ACC_ARCH_POWERPC 1
|
||||||
# define ACC_INFO_ARCH "powerpc"
|
# define ACC_INFO_ARCH "powerpc"
|
||||||
|
#elif defined(__riscv)
|
||||||
|
# define ACC_ARCH_RISCV 1
|
||||||
|
# define ACC_INFO_ARCH "riscv"
|
||||||
#elif defined(__s390__) || defined(__s390) || defined(__s390x__) || defined(__s390x)
|
#elif defined(__s390__) || defined(__s390) || defined(__s390x__) || defined(__s390x)
|
||||||
# define ACC_ARCH_S390 1
|
# define ACC_ARCH_S390 1
|
||||||
# define ACC_INFO_ARCH "s390"
|
# define ACC_INFO_ARCH "s390"
|
||||||
@@ -1012,6 +1062,8 @@
|
|||||||
# define ACC_ARCH_ARM_THUMB2 1
|
# define ACC_ARCH_ARM_THUMB2 1
|
||||||
# elif 1 && defined(__TARGET_ARCH_THUMB) && ((__TARGET_ARCH_THUMB)+0 >= 4)
|
# elif 1 && defined(__TARGET_ARCH_THUMB) && ((__TARGET_ARCH_THUMB)+0 >= 4)
|
||||||
# define ACC_ARCH_ARM_THUMB2 1
|
# define ACC_ARCH_ARM_THUMB2 1
|
||||||
|
# elif 1 && defined(_MSC_VER) && defined(_M_THUMB) && ((_M_THUMB)+0 >= 7)
|
||||||
|
# define ACC_ARCH_ARM_THUMB2 1
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
@@ -1223,7 +1275,7 @@
|
|||||||
# error "unexpected configuration - check your compiler defines"
|
# error "unexpected configuration - check your compiler defines"
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef __cplusplus
|
#if defined(__cplusplus)
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
#if (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0200))
|
#if (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0200))
|
||||||
@@ -1246,7 +1298,7 @@ extern "C" {
|
|||||||
#else
|
#else
|
||||||
# error "FIXME - implement ACC_MM_AHSHIFT"
|
# error "FIXME - implement ACC_MM_AHSHIFT"
|
||||||
#endif
|
#endif
|
||||||
#ifdef __cplusplus
|
#if defined(__cplusplus)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@@ -1546,7 +1598,7 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
#if !defined(ACC_UNUSED_LABEL)
|
#if !defined(ACC_UNUSED_LABEL)
|
||||||
# if (ACC_CC_CLANG >= 0x020800ul)
|
# if (ACC_CC_CLANG >= 0x020800ul)
|
||||||
# define ACC_UNUSED_LABEL(l) (__acc_gnuc_extension__ ((void) ((const void *) &&l)))
|
# define ACC_UNUSED_LABEL(l) (__acc_gnuc_extension__ ((void) ACC_STATIC_CAST(const void *, &&l)))
|
||||||
# elif (ACC_CC_ARMCC || ACC_CC_CLANG || ACC_CC_INTELC || ACC_CC_WATCOMC)
|
# elif (ACC_CC_ARMCC || ACC_CC_CLANG || ACC_CC_INTELC || ACC_CC_WATCOMC)
|
||||||
# define ACC_UNUSED_LABEL(l) if __acc_cte(0) goto l
|
# define ACC_UNUSED_LABEL(l) if __acc_cte(0) goto l
|
||||||
# else
|
# else
|
||||||
@@ -1945,6 +1997,7 @@ extern "C" {
|
|||||||
#elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 800))
|
#elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 800))
|
||||||
# define __acc_likely(e) (__builtin_expect(!!(e),1))
|
# define __acc_likely(e) (__builtin_expect(!!(e),1))
|
||||||
# define __acc_unlikely(e) (__builtin_expect(!!(e),0))
|
# define __acc_unlikely(e) (__builtin_expect(!!(e),0))
|
||||||
|
#elif (ACC_CC_CLANG && ACC_CC_CLANG_C2)
|
||||||
#elif (ACC_CC_ARMCC_GNUC || ACC_CC_CLANG || ACC_CC_LLVM || ACC_CC_PATHSCALE)
|
#elif (ACC_CC_ARMCC_GNUC || ACC_CC_CLANG || ACC_CC_LLVM || ACC_CC_PATHSCALE)
|
||||||
# define __acc_likely(e) (__builtin_expect(!!(e),1))
|
# define __acc_likely(e) (__builtin_expect(!!(e),1))
|
||||||
# define __acc_unlikely(e) (__builtin_expect(!!(e),0))
|
# define __acc_unlikely(e) (__builtin_expect(!!(e),0))
|
||||||
@@ -2022,7 +2075,11 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if !defined(ACC_COMPILE_TIME_ASSERT_HEADER)
|
#if !defined(ACC_COMPILE_TIME_ASSERT_HEADER)
|
||||||
# if (ACC_CC_AZTECC || ACC_CC_ZORTECHC)
|
# if (ACC_LANG_CXX >= 201103L)
|
||||||
|
# define ACC_COMPILE_TIME_ASSERT_HEADER(e) static_assert(e, #e);
|
||||||
|
# elif (ACC_LANG_C >= 201112L)
|
||||||
|
# define ACC_COMPILE_TIME_ASSERT_HEADER(e) _Static_assert(e, #e);
|
||||||
|
# elif (ACC_CC_AZTECC || ACC_CC_ZORTECHC)
|
||||||
# define ACC_COMPILE_TIME_ASSERT_HEADER(e) ACC_EXTERN_C_BEGIN extern int __ACC_CTA_NAME(acc_cta__)[1-!(e)]; ACC_EXTERN_C_END
|
# define ACC_COMPILE_TIME_ASSERT_HEADER(e) ACC_EXTERN_C_BEGIN extern int __ACC_CTA_NAME(acc_cta__)[1-!(e)]; ACC_EXTERN_C_END
|
||||||
# elif (ACC_CC_DMC || ACC_CC_SYMANTECC)
|
# elif (ACC_CC_DMC || ACC_CC_SYMANTECC)
|
||||||
# define ACC_COMPILE_TIME_ASSERT_HEADER(e) ACC_EXTERN_C_BEGIN extern int __ACC_CTA_NAME(acc_cta__)[1u-2*!(e)]; ACC_EXTERN_C_END
|
# define ACC_COMPILE_TIME_ASSERT_HEADER(e) ACC_EXTERN_C_BEGIN extern int __ACC_CTA_NAME(acc_cta__)[1u-2*!(e)]; ACC_EXTERN_C_END
|
||||||
@@ -2037,7 +2094,11 @@ extern "C" {
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#if !defined(ACC_COMPILE_TIME_ASSERT)
|
#if !defined(ACC_COMPILE_TIME_ASSERT)
|
||||||
# if (ACC_CC_AZTECC)
|
# if (ACC_LANG_CXX >= 201103L)
|
||||||
|
# define ACC_COMPILE_TIME_ASSERT(e) {static_assert(e, #e);}
|
||||||
|
# elif (ACC_LANG_C >= 201112L)
|
||||||
|
# define ACC_COMPILE_TIME_ASSERT(e) {_Static_assert(e, #e);}
|
||||||
|
# elif (ACC_CC_AZTECC)
|
||||||
# define ACC_COMPILE_TIME_ASSERT(e) {typedef int __ACC_CTA_NAME(acc_cta_t__)[1-!(e)];}
|
# define ACC_COMPILE_TIME_ASSERT(e) {typedef int __ACC_CTA_NAME(acc_cta_t__)[1-!(e)];}
|
||||||
# elif (ACC_CC_CLANG && (ACC_CC_CLANG >= 0x030000ul))
|
# elif (ACC_CC_CLANG && (ACC_CC_CLANG >= 0x030000ul))
|
||||||
# define ACC_COMPILE_TIME_ASSERT(e) {typedef int __ACC_CTA_NAME(acc_cta_t__)[1-2*!(e)] __attribute__((__unused__));}
|
# define ACC_COMPILE_TIME_ASSERT(e) {typedef int __ACC_CTA_NAME(acc_cta_t__)[1-2*!(e)] __attribute__((__unused__));}
|
||||||
@@ -2360,7 +2421,9 @@ ACC_COMPILE_TIME_ASSERT_HEADER(ACC_SIZEOF_LONG == sizeof(long))
|
|||||||
# define ACC_WORDSIZE 4
|
# define ACC_WORDSIZE 4
|
||||||
#elif (ACC_ARCH_Z80)
|
#elif (ACC_ARCH_Z80)
|
||||||
# define ACC_WORDSIZE 1
|
# define ACC_WORDSIZE 1
|
||||||
#elif (ACC_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
|
#elif (ACC_ARCH_MIPS) && (ACC_SIZEOF_LONG == 8) && (defined(__R5900) || defined(__MIPS_PSX2__))
|
||||||
|
# define ACC_WORDSIZE 8
|
||||||
|
#elif (ACC_ARCH_MIPS) && (ACC_SIZEOF_LONG == 4) && defined(__mips64) && defined(_MIPS_SIM) && defined(_ABIN32) && (_MIPS_SIM+0 == _ABIN32+0)
|
||||||
# define ACC_WORDSIZE 8
|
# define ACC_WORDSIZE 8
|
||||||
#elif (ACC_OS_OS400 || defined(__OS400__))
|
#elif (ACC_OS_OS400 || defined(__OS400__))
|
||||||
# define ACC_WORDSIZE 8
|
# define ACC_WORDSIZE 8
|
||||||
@@ -2486,7 +2549,7 @@ ACC_COMPILE_TIME_ASSERT_HEADER(ACC_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
|
|||||||
# define ACC_ABI_BIG_ENDIAN 1
|
# define ACC_ABI_BIG_ENDIAN 1
|
||||||
#elif (ACC_ARCH_IA64) && (ACC_OS_POSIX_LINUX || ACC_OS_WIN64)
|
#elif (ACC_ARCH_IA64) && (ACC_OS_POSIX_LINUX || ACC_OS_WIN64)
|
||||||
# define ACC_ABI_LITTLE_ENDIAN 1
|
# define ACC_ABI_LITTLE_ENDIAN 1
|
||||||
#elif (ACC_ARCH_ALPHA || ACC_ARCH_AMD64 || ACC_ARCH_BLACKFIN || ACC_ARCH_CRIS || ACC_ARCH_I086 || ACC_ARCH_I386 || ACC_ARCH_MSP430)
|
#elif (ACC_ARCH_ALPHA || ACC_ARCH_AMD64 || ACC_ARCH_BLACKFIN || ACC_ARCH_CRIS || ACC_ARCH_I086 || ACC_ARCH_I386 || ACC_ARCH_MSP430 || ACC_ARCH_RISCV)
|
||||||
# define ACC_ABI_LITTLE_ENDIAN 1
|
# define ACC_ABI_LITTLE_ENDIAN 1
|
||||||
#elif (ACC_ARCH_AVR32 || ACC_ARCH_M68K || ACC_ARCH_S390 || ACC_ARCH_SPU)
|
#elif (ACC_ARCH_AVR32 || ACC_ARCH_M68K || ACC_ARCH_S390 || ACC_ARCH_SPU)
|
||||||
# define ACC_ABI_BIG_ENDIAN 1
|
# define ACC_ABI_BIG_ENDIAN 1
|
||||||
@@ -2506,6 +2569,8 @@ ACC_COMPILE_TIME_ASSERT_HEADER(ACC_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
|
|||||||
# define ACC_ABI_BIG_ENDIAN 1
|
# define ACC_ABI_BIG_ENDIAN 1
|
||||||
#elif 1 && (ACC_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__)
|
#elif 1 && (ACC_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__)
|
||||||
# define ACC_ABI_LITTLE_ENDIAN 1
|
# define ACC_ABI_LITTLE_ENDIAN 1
|
||||||
|
#elif 1 && (ACC_ARCH_ARM) && defined(_MSC_VER) && defined(_WIN32)
|
||||||
|
# define ACC_ABI_LITTLE_ENDIAN 1
|
||||||
#elif 1 && (ACC_ARCH_ARM && ACC_CC_ARMCC_ARMCC)
|
#elif 1 && (ACC_ARCH_ARM && ACC_CC_ARMCC_ARMCC)
|
||||||
# if defined(__BIG_ENDIAN) && defined(__LITTLE_ENDIAN)
|
# if defined(__BIG_ENDIAN) && defined(__LITTLE_ENDIAN)
|
||||||
# error "unexpected configuration - check your compiler defines"
|
# error "unexpected configuration - check your compiler defines"
|
||||||
@@ -2521,6 +2586,8 @@ ACC_COMPILE_TIME_ASSERT_HEADER(ACC_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
|
|||||||
# define ACC_ABI_BIG_ENDIAN 1
|
# define ACC_ABI_BIG_ENDIAN 1
|
||||||
#elif 1 && (ACC_ARCH_ARM64) && defined(__AARCH64EL__) && !defined(__AARCH64EB__)
|
#elif 1 && (ACC_ARCH_ARM64) && defined(__AARCH64EL__) && !defined(__AARCH64EB__)
|
||||||
# define ACC_ABI_LITTLE_ENDIAN 1
|
# define ACC_ABI_LITTLE_ENDIAN 1
|
||||||
|
#elif 1 && (ACC_ARCH_ARM64) && defined(_MSC_VER) && defined(_WIN32)
|
||||||
|
# define ACC_ABI_LITTLE_ENDIAN 1
|
||||||
#elif 1 && (ACC_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__)
|
#elif 1 && (ACC_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__)
|
||||||
# define ACC_ABI_BIG_ENDIAN 1
|
# define ACC_ABI_BIG_ENDIAN 1
|
||||||
#elif 1 && (ACC_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__)
|
#elif 1 && (ACC_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__)
|
||||||
@@ -2691,6 +2758,13 @@ ACC_COMPILE_TIME_ASSERT_HEADER(ACC_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
|
|||||||
# ifndef ACC_OPT_UNALIGNED32
|
# ifndef ACC_OPT_UNALIGNED32
|
||||||
# define ACC_OPT_UNALIGNED32 1
|
# define ACC_OPT_UNALIGNED32 1
|
||||||
# endif
|
# endif
|
||||||
|
# elif 1 && defined(_MSC_VER) && defined(_M_ARM) && ((_M_ARM)+0 >= 7)
|
||||||
|
# ifndef ACC_OPT_UNALIGNED16
|
||||||
|
# define ACC_OPT_UNALIGNED16 1
|
||||||
|
# endif
|
||||||
|
# ifndef ACC_OPT_UNALIGNED32
|
||||||
|
# define ACC_OPT_UNALIGNED32 1
|
||||||
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#elif (ACC_ARCH_ARM64)
|
#elif (ACC_ARCH_ARM64)
|
||||||
# ifndef ACC_OPT_UNALIGNED16
|
# ifndef ACC_OPT_UNALIGNED16
|
||||||
@@ -2749,6 +2823,21 @@ ACC_COMPILE_TIME_ASSERT_HEADER(ACC_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
|
|||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
|
#elif (ACC_ARCH_RISCV)
|
||||||
|
# define ACC_OPT_AVOID_UINT_INDEX 1
|
||||||
|
# if 0
|
||||||
|
# ifndef ACC_OPT_UNALIGNED16
|
||||||
|
# define ACC_OPT_UNALIGNED16 1
|
||||||
|
# endif
|
||||||
|
# ifndef ACC_OPT_UNALIGNED32
|
||||||
|
# define ACC_OPT_UNALIGNED32 1
|
||||||
|
# endif
|
||||||
|
# if (ACC_WORDSIZE == 8)
|
||||||
|
# ifndef ACC_OPT_UNALIGNED64
|
||||||
|
# define ACC_OPT_UNALIGNED64 1
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
#elif (ACC_ARCH_S390)
|
#elif (ACC_ARCH_S390)
|
||||||
# ifndef ACC_OPT_UNALIGNED16
|
# ifndef ACC_OPT_UNALIGNED16
|
||||||
# define ACC_OPT_UNALIGNED16 1
|
# define ACC_OPT_UNALIGNED16 1
|
||||||
@@ -3335,7 +3424,7 @@ ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(acc_int_fast64_t) == sizeof(acc_uint_fast6
|
|||||||
#if (ACC_OS_POSIX)
|
#if (ACC_OS_POSIX)
|
||||||
# if (ACC_OS_POSIX_AIX)
|
# if (ACC_OS_POSIX_AIX)
|
||||||
# define HAVE_SYS_RESOURCE_H 1
|
# define HAVE_SYS_RESOURCE_H 1
|
||||||
# elif (ACC_OS_POSIX_DARWIN || ACC_OS_POSIX_FREEBSD || ACC_OS_POSIX_NETBSD || ACC_OS_POSIX_OPENBSD)
|
# elif (ACC_OS_POSIX_DARWIN || ACC_OS_POSIX_DRAGONFLY || ACC_OS_POSIX_FREEBSD || ACC_OS_POSIX_NETBSD || ACC_OS_POSIX_OPENBSD)
|
||||||
# define HAVE_STRINGS_H 1
|
# define HAVE_STRINGS_H 1
|
||||||
# undef HAVE_MALLOC_H
|
# undef HAVE_MALLOC_H
|
||||||
# elif (ACC_OS_POSIX_HPUX || ACC_OS_POSIX_INTERIX)
|
# elif (ACC_OS_POSIX_HPUX || ACC_OS_POSIX_INTERIX)
|
||||||
@@ -3418,7 +3507,7 @@ ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(acc_int_fast64_t) == sizeof(acc_uint_fast6
|
|||||||
# undef HAVE_UTIME_H
|
# undef HAVE_UTIME_H
|
||||||
# undef HAVE_SYS_TIME_H
|
# undef HAVE_SYS_TIME_H
|
||||||
# define HAVE_SYS_UTIME_H 1
|
# define HAVE_SYS_UTIME_H 1
|
||||||
#elif (ACC_CC_CLANG_MSC || ACC_CC_GHS || ACC_CC_INTELC_MSC || ACC_CC_MSC)
|
#elif (ACC_CC_CLANG_C2 || ACC_CC_CLANG_MSC || ACC_CC_GHS || ACC_CC_INTELC_MSC || ACC_CC_MSC)
|
||||||
# undef HAVE_DIRENT_H
|
# undef HAVE_DIRENT_H
|
||||||
# undef HAVE_UNISTD_H
|
# undef HAVE_UNISTD_H
|
||||||
# undef HAVE_UTIME_H
|
# undef HAVE_UTIME_H
|
||||||
@@ -3721,7 +3810,7 @@ ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(acc_int_fast64_t) == sizeof(acc_uint_fast6
|
|||||||
# endif
|
# endif
|
||||||
#elif (ACC_CC_LCCWIN32)
|
#elif (ACC_CC_LCCWIN32)
|
||||||
# define utime _utime
|
# define utime _utime
|
||||||
#elif (ACC_CC_MSC)
|
#elif (ACC_CC_CLANG_C2 || ACC_CC_MSC)
|
||||||
# if (_MSC_VER < 600)
|
# if (_MSC_VER < 600)
|
||||||
# undef HAVE_STRFTIME
|
# undef HAVE_STRFTIME
|
||||||
# endif
|
# endif
|
||||||
@@ -3921,8 +4010,6 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
#if (ACC_BROKEN_CDECL_ALT_SYNTAX)
|
#if (ACC_BROKEN_CDECL_ALT_SYNTAX)
|
||||||
typedef void __acc_cdecl_sighandler (*acc_sighandler_t)(acc_signo_t);
|
typedef void __acc_cdecl_sighandler (*acc_sighandler_t)(acc_signo_t);
|
||||||
#elif defined(RETSIGTYPE)
|
|
||||||
typedef RETSIGTYPE (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
|
|
||||||
#else
|
#else
|
||||||
typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
|
typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
|
||||||
#endif
|
#endif
|
||||||
@@ -4542,8 +4629,6 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
#if (ACC_BROKEN_CDECL_ALT_SYNTAX)
|
#if (ACC_BROKEN_CDECL_ALT_SYNTAX)
|
||||||
typedef void __acc_cdecl_sighandler (*acc_sighandler_t)(acc_signo_t);
|
typedef void __acc_cdecl_sighandler (*acc_sighandler_t)(acc_signo_t);
|
||||||
#elif defined(RETSIGTYPE)
|
|
||||||
typedef RETSIGTYPE (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
|
|
||||||
#else
|
#else
|
||||||
typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
|
typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
|
||||||
#endif
|
#endif
|
||||||
@@ -4834,7 +4919,7 @@ typedef unsigned short wchar_t;
|
|||||||
#if (HAVE_SIGNAL_H)
|
#if (HAVE_SIGNAL_H)
|
||||||
# include <signal.h>
|
# include <signal.h>
|
||||||
#endif
|
#endif
|
||||||
#if (TIME_WITH_SYS_TIME)
|
#if (HAVE_SYS_TIME_H && HAVE_TIME_H)
|
||||||
# include <sys/time.h>
|
# include <sys/time.h>
|
||||||
# include <time.h>
|
# include <time.h>
|
||||||
#elif (HAVE_TIME_H)
|
#elif (HAVE_TIME_H)
|
||||||
@@ -6652,24 +6737,20 @@ static int __ACCLIB_FUNCNAME(acc_getopt_rotate) (char** p, int first, int middle
|
|||||||
{
|
{
|
||||||
int i = middle, n = middle - first;
|
int i = middle, n = middle - first;
|
||||||
if (first >= middle || middle >= last) return 0;
|
if (first >= middle || middle >= last) return 0;
|
||||||
for (;;)
|
for (;;) {
|
||||||
{
|
char *t = p[first]; p[first++] = p[i]; p[i++] = t;
|
||||||
char* t = p[first]; p[first] = p[i]; p[i] = t;
|
if (first == middle) {
|
||||||
if (++first == middle)
|
if (i == last) break;
|
||||||
{
|
|
||||||
if (++i == last) break;
|
|
||||||
middle = i;
|
middle = i;
|
||||||
}
|
} else if (i == last)
|
||||||
else if (++i == last)
|
|
||||||
i = middle;
|
i = middle;
|
||||||
}
|
}
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
static int __ACCLIB_FUNCNAME(acc_getopt_perror) (acc_getopt_p g, int ret, const char *f, ...)
|
static int __ACCLIB_FUNCNAME(acc_getopt_perror) (acc_getopt_p g, int ret, const char *f, ...)
|
||||||
{
|
{
|
||||||
if (g->opterr)
|
if (g->opterr) {
|
||||||
{
|
#if defined(HAVE_STDARG_H) && (HAVE_STDARG_H)
|
||||||
#if (HAVE_STDARG_H)
|
|
||||||
struct { va_list ap; } s;
|
struct { va_list ap; } s;
|
||||||
va_start(s.ap, f);
|
va_start(s.ap, f);
|
||||||
g->opterr(g, f, &s);
|
g->opterr(g, f, &s);
|
||||||
@@ -6690,8 +6771,7 @@ ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
|||||||
int ordering = ACC_GETOPT_PERMUTE;
|
int ordering = ACC_GETOPT_PERMUTE;
|
||||||
int missing_arg_ret = g->bad_option;
|
int missing_arg_ret = g->bad_option;
|
||||||
char *a;
|
char *a;
|
||||||
if (shortopts)
|
if (shortopts) {
|
||||||
{
|
|
||||||
if (*shortopts == '-' || *shortopts == '+')
|
if (*shortopts == '-' || *shortopts == '+')
|
||||||
ordering = *shortopts++ == '-' ? ACC_GETOPT_RETURN_IN_ORDER : ACC_GETOPT_REQUIRE_ORDER;
|
ordering = *shortopts++ == '-' ? ACC_GETOPT_RETURN_IN_ORDER : ACC_GETOPT_REQUIRE_ORDER;
|
||||||
if (*shortopts == ':')
|
if (*shortopts == ':')
|
||||||
@@ -6708,20 +6788,17 @@ ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
|||||||
goto acc_label_next_shortopt;
|
goto acc_label_next_shortopt;
|
||||||
g->optind -= __ACCLIB_FUNCNAME(acc_getopt_rotate)(g->argv, g->pending_rotate_first, g->pending_rotate_middle, g->optind);
|
g->optind -= __ACCLIB_FUNCNAME(acc_getopt_rotate)(g->argv, g->pending_rotate_first, g->pending_rotate_middle, g->optind);
|
||||||
g->pending_rotate_first = g->pending_rotate_middle = g->optind;
|
g->pending_rotate_first = g->pending_rotate_middle = g->optind;
|
||||||
if (ordering == ACC_GETOPT_PERMUTE)
|
if (ordering == ACC_GETOPT_PERMUTE) {
|
||||||
{
|
|
||||||
while (g->optind < g->argc && !(g->argv[g->optind][0] == '-' && g->argv[g->optind][1]))
|
while (g->optind < g->argc && !(g->argv[g->optind][0] == '-' && g->argv[g->optind][1]))
|
||||||
++g->optind;
|
++g->optind;
|
||||||
g->pending_rotate_middle = g->optind;
|
g->pending_rotate_middle = g->optind;
|
||||||
}
|
}
|
||||||
if (g->optind >= g->argc)
|
if (g->optind >= g->argc) {
|
||||||
{
|
|
||||||
g->optind = g->pending_rotate_first;
|
g->optind = g->pending_rotate_first;
|
||||||
goto acc_label_eof;
|
goto acc_label_eof;
|
||||||
}
|
}
|
||||||
a = g->argv[g->optind];
|
a = g->argv[g->optind];
|
||||||
if (a[0] == '-' && a[1] == '-')
|
if (a[0] == '-' && a[1] == '-') {
|
||||||
{
|
|
||||||
size_t l = 0;
|
size_t l = 0;
|
||||||
const acc_getopt_longopt_p o;
|
const acc_getopt_longopt_p o;
|
||||||
const acc_getopt_longopt_p o1 = NULL;
|
const acc_getopt_longopt_p o1 = NULL;
|
||||||
@@ -6732,12 +6809,13 @@ ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
|||||||
goto acc_label_eof;
|
goto acc_label_eof;
|
||||||
for (a += 2; a[l] && a[l] != '=' && a[l] != '#'; )
|
for (a += 2; a[l] && a[l] != '=' && a[l] != '#'; )
|
||||||
++l;
|
++l;
|
||||||
for (o = longopts; l && o && o->name; ++o)
|
for (o = longopts; l && o && o->name; ++o) {
|
||||||
{
|
|
||||||
if (strncmp(a, o->name, l) != 0)
|
if (strncmp(a, o->name, l) != 0)
|
||||||
continue;
|
continue;
|
||||||
if (!o->name[l])
|
if (!o->name[l])
|
||||||
goto acc_label_found_o;
|
goto acc_label_found_o;
|
||||||
|
if ((o->has_arg & (ACC_GETOPT_EXACT_ARG | 0x80)) == (ACC_GETOPT_EXACT_ARG | 0x80))
|
||||||
|
continue;
|
||||||
need_exact |= o->has_arg & ACC_GETOPT_EXACT_ARG;
|
need_exact |= o->has_arg & ACC_GETOPT_EXACT_ARG;
|
||||||
if (o1) o2 = o;
|
if (o1) o2 = o;
|
||||||
else o1 = o;
|
else o1 = o;
|
||||||
@@ -6749,8 +6827,7 @@ ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
|||||||
o = o1;
|
o = o1;
|
||||||
acc_label_found_o:
|
acc_label_found_o:
|
||||||
a += l;
|
a += l;
|
||||||
switch (o->has_arg & 0x2f)
|
switch (o->has_arg & 0x2f) {
|
||||||
{
|
|
||||||
case ACC_GETOPT_OPTIONAL_ARG:
|
case ACC_GETOPT_OPTIONAL_ARG:
|
||||||
if (a[0])
|
if (a[0])
|
||||||
g->optarg = a + 1;
|
g->optarg = a + 1;
|
||||||
@@ -6760,7 +6837,7 @@ ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
|||||||
g->optarg = a + 1;
|
g->optarg = a + 1;
|
||||||
else if (g->optind < g->argc)
|
else if (g->optind < g->argc)
|
||||||
g->optarg = g->argv[g->optind++];
|
g->optarg = g->argv[g->optind++];
|
||||||
if (!g->optarg)
|
if (!g->optarg || (!g->optarg[0] && (o->has_arg & 0x40)))
|
||||||
return pe(g, missing_arg_ret, "option '--%s' requires an argument", o->name);
|
return pe(g, missing_arg_ret, "option '--%s' requires an argument", o->name);
|
||||||
break;
|
break;
|
||||||
case ACC_GETOPT_REQUIRED_ARG | 0x20:
|
case ACC_GETOPT_REQUIRED_ARG | 0x20:
|
||||||
@@ -6776,15 +6853,13 @@ ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
|||||||
}
|
}
|
||||||
if (longind)
|
if (longind)
|
||||||
*longind = (int) (o - longopts);
|
*longind = (int) (o - longopts);
|
||||||
if (o->flag)
|
if (o->flag) {
|
||||||
{
|
|
||||||
*o->flag = o->val;
|
*o->flag = o->val;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return o->val;
|
return o->val;
|
||||||
}
|
}
|
||||||
if (a[0] == '-' && a[1])
|
if (a[0] == '-' && a[1]) {
|
||||||
{
|
|
||||||
unsigned char c;
|
unsigned char c;
|
||||||
const char *s;
|
const char *s;
|
||||||
acc_label_next_shortopt:
|
acc_label_next_shortopt:
|
||||||
@@ -6792,27 +6867,21 @@ ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
|||||||
c = (unsigned char) *a++; s = NULL;
|
c = (unsigned char) *a++; s = NULL;
|
||||||
if (c != ':' && shortopts)
|
if (c != ':' && shortopts)
|
||||||
s = strchr(shortopts, c);
|
s = strchr(shortopts, c);
|
||||||
if (!s || s[1] != ':')
|
if (!s || s[1] != ':') {
|
||||||
{
|
|
||||||
if (!a[0])
|
if (!a[0])
|
||||||
{ ++g->optind; g->shortpos = 0; }
|
{ ++g->optind; g->shortpos = 0; }
|
||||||
if (!s)
|
if (!s) {
|
||||||
{
|
|
||||||
g->optopt = c;
|
g->optopt = c;
|
||||||
return pe(g, g->bad_option, "invalid option '-%c'", c);
|
return pe(g, g->bad_option, "invalid option '-%c'", c);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
++g->optind; g->shortpos = 0;
|
++g->optind; g->shortpos = 0;
|
||||||
if (a[0])
|
if (a[0])
|
||||||
g->optarg = a;
|
g->optarg = a;
|
||||||
else if (s[2] != ':')
|
else if (s[2] != ':') {
|
||||||
{
|
|
||||||
if (g->optind < g->argc)
|
if (g->optind < g->argc)
|
||||||
g->optarg = g->argv[g->optind++];
|
g->optarg = g->argv[g->optind++];
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
g->optopt = c;
|
g->optopt = c;
|
||||||
return pe(g, missing_arg_ret, "option '-%c' requires an argument", c);
|
return pe(g, missing_arg_ret, "option '-%c' requires an argument", c);
|
||||||
}
|
}
|
||||||
@@ -6820,8 +6889,7 @@ ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
|||||||
}
|
}
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
if (ordering == ACC_GETOPT_RETURN_IN_ORDER)
|
if (ordering == ACC_GETOPT_RETURN_IN_ORDER) {
|
||||||
{
|
|
||||||
++g->optind;
|
++g->optind;
|
||||||
g->optarg = a;
|
g->optarg = a;
|
||||||
return 1;
|
return 1;
|
||||||
@@ -7314,7 +7382,7 @@ static int acc_pclock_read_clock_gettime_t_libc(acc_pclock_handle_p h, acc_pcloc
|
|||||||
if (clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts) != 0)
|
if (clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts) != 0)
|
||||||
return -1;
|
return -1;
|
||||||
c->tv_sec = ts.tv_sec;
|
c->tv_sec = ts.tv_sec;
|
||||||
c->tv_nsec = (acc_uint32l_t) ts.tv_nsec;
|
c->tv_nsec = ACC_STATIC_CAST(acc_uint32l_t, ts.tv_nsec);
|
||||||
ACC_UNUSED(h); return 0;
|
ACC_UNUSED(h); return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+4
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -146,6 +146,8 @@ struct options_t {
|
|||||||
bool unmap_all_pages; // thus /proc/self/exe vanishes
|
bool unmap_all_pages; // thus /proc/self/exe vanishes
|
||||||
unsigned char osabi0; // replacement if 0==.e_ident[EI_OSABI]
|
unsigned char osabi0; // replacement if 0==.e_ident[EI_OSABI]
|
||||||
bool preserve_build_id; // copy the build-id to the compressed binary
|
bool preserve_build_id; // copy the build-id to the compressed binary
|
||||||
|
bool android_shlib; // keep some ElfXX_Shdr for dlopen()
|
||||||
|
bool force_pie; // choose DF_1_PIE instead of is_shlib
|
||||||
} o_unix;
|
} o_unix;
|
||||||
struct {
|
struct {
|
||||||
bool le;
|
bool le;
|
||||||
|
|||||||
+2
-11
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -92,15 +92,6 @@ void PackArmPe::processImports2(unsigned myimport, unsigned iat_off) // pass 2
|
|||||||
{
|
{
|
||||||
PeFile::processImports2(myimport, iat_off);
|
PeFile::processImports2(myimport, iat_off);
|
||||||
|
|
||||||
__packed_struct(import_desc)
|
|
||||||
LE32 oft; // orig first thunk
|
|
||||||
char _[8];
|
|
||||||
LE32 dllname;
|
|
||||||
LE32 iat; // import address table
|
|
||||||
__packed_struct_end()
|
|
||||||
|
|
||||||
COMPILE_TIME_ASSERT(sizeof(import_desc) == 20);
|
|
||||||
|
|
||||||
// adjust import data
|
// adjust import data
|
||||||
for (import_desc *im = (import_desc*) oimpdlls; im->dllname; im++)
|
for (import_desc *im = (import_desc*) oimpdlls; im->dllname; im++)
|
||||||
{
|
{
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+61
-6
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -73,7 +73,8 @@
|
|||||||
EM_PPC = 20,
|
EM_PPC = 20,
|
||||||
EM_PPC64 = 21,
|
EM_PPC64 = 21,
|
||||||
EM_ARM = 40,
|
EM_ARM = 40,
|
||||||
EM_X86_64 = 62
|
EM_X86_64 = 62,
|
||||||
|
EM_AARCH64 = 183
|
||||||
|
|
||||||
};
|
};
|
||||||
enum { // e_version
|
enum { // e_version
|
||||||
@@ -90,6 +91,7 @@
|
|||||||
PT_INTERP = 3, /* Name of program interpreter */
|
PT_INTERP = 3, /* Name of program interpreter */
|
||||||
PT_NOTE = 4, /* Auxiliary information (esp. OpenBSD) */
|
PT_NOTE = 4, /* Auxiliary information (esp. OpenBSD) */
|
||||||
PT_PHDR = 6 /* Entry for header table itself */
|
PT_PHDR = 6 /* Entry for header table itself */
|
||||||
|
, PT_GNU_STACK = 0x6474e551 /* Indicates stack executability */
|
||||||
};
|
};
|
||||||
|
|
||||||
enum { // p_flags
|
enum { // p_flags
|
||||||
@@ -122,6 +124,10 @@
|
|||||||
SHT_GROUP = 17, /* Section group */
|
SHT_GROUP = 17, /* Section group */
|
||||||
SHT_SYMTAB_SHNDX = 18, /* Extended section indeces */
|
SHT_SYMTAB_SHNDX = 18, /* Extended section indeces */
|
||||||
SHT_GNU_LIBLIST = 0x6ffffff7 /* Prelink library list */
|
SHT_GNU_LIBLIST = 0x6ffffff7 /* Prelink library list */
|
||||||
|
|
||||||
|
, SHT_LOOS = 0x60000000 /* LOcal OS; SHT_ANDROID_REL{,A} is +1, +2 */
|
||||||
|
, SHT_LOPROC = 0x70000000/* Start of processor-specific */
|
||||||
|
, SHT_ARM_ATTRIBUTES = (SHT_LOPROC + 3) /* ARM attributes section. */
|
||||||
};
|
};
|
||||||
|
|
||||||
enum { // sh_flags
|
enum { // sh_flags
|
||||||
@@ -142,25 +148,41 @@
|
|||||||
DT_NULL = 0, /* End flag */
|
DT_NULL = 0, /* End flag */
|
||||||
DT_NEEDED = 1, /* Name of needed library */
|
DT_NEEDED = 1, /* Name of needed library */
|
||||||
DT_PLTRELSZ = 2, /* Size in bytes of PLT relocs */
|
DT_PLTRELSZ = 2, /* Size in bytes of PLT relocs */
|
||||||
|
DT_PLTGOT = 3, /* Processor defined value */
|
||||||
DT_HASH = 4, /* Hash table of symbol names */
|
DT_HASH = 4, /* Hash table of symbol names */
|
||||||
DT_STRTAB = 5, /* String table */
|
DT_STRTAB = 5, /* String table */
|
||||||
DT_SYMTAB = 6, /* Symbol table */
|
DT_SYMTAB = 6, /* Symbol table */
|
||||||
DT_RELA = 7, /* Relocations which do contain an addend */
|
DT_RELA = 7, /* Relocations which do contain an addend */
|
||||||
DT_RELASZ = 8, /* Total size of Rela relocs */
|
DT_RELASZ = 8, /* Total size of Rela relocs */
|
||||||
DT_RELAENT = 9, /* Size of one RELA relocation */
|
DT_RELAENT = 9, /* Size of one RELA relocation */
|
||||||
DT_INIT = 12, /* Address of init function */
|
|
||||||
DT_REL = 17, /* Relocations which contain no addend */
|
|
||||||
DT_RELENT = 19, /* Size of one Rel relocation */
|
|
||||||
DT_STRSZ = 10, /* Size of string table */
|
DT_STRSZ = 10, /* Size of string table */
|
||||||
|
DT_SYMENT = 11, /* Size of one symbol table entry */
|
||||||
|
DT_INIT = 12, /* Address of init function */
|
||||||
|
DT_FINI = 13, /* Address of termination function */
|
||||||
|
|
||||||
|
DT_REL = 17, /* Relocations which contain no addend */
|
||||||
|
DT_RELSZ = 18, /* Total size of Rel relocs */
|
||||||
|
DT_RELENT = 19, /* Size of one Rel relocation */
|
||||||
DT_PLTREL = 20, /* Type of reloc in PLT */
|
DT_PLTREL = 20, /* Type of reloc in PLT */
|
||||||
DT_TEXTREL = 22, /* Reloc might modify .text */
|
DT_TEXTREL = 22, /* Reloc might modify .text */
|
||||||
DT_JMPREL = 23, /* Address of PLT relocs */
|
DT_JMPREL = 23, /* Address of PLT relocs */
|
||||||
|
DT_INIT_ARRAY = 25, /* Array with addresses of init fct */
|
||||||
|
DT_FINI_ARRAY = 26, /* Array with addresses of fini fct */
|
||||||
|
DT_INIT_ARRAYSZ= 27, /* size in bytes */
|
||||||
|
DT_FINI_ARRAYSZ= 28, /* size in bytes */
|
||||||
|
DT_PREINIT_ARRAY = 32, /* Array with addresses of preinit fct*/
|
||||||
|
DT_PREINIT_ARRAYSZ= 33, /* size in bytes */
|
||||||
DT_CHECKSUM = 0x6ffffdf8, /* Only for prelink? */
|
DT_CHECKSUM = 0x6ffffdf8, /* Only for prelink? */
|
||||||
DT_GNU_HASH = 0x6ffffef5, /* GNU-style hash table */
|
DT_GNU_HASH = 0x6ffffef5, /* GNU-style hash table */
|
||||||
DT_VERSYM = 0x6ffffff0, /* version[] for each symbol */
|
DT_VERSYM = 0x6ffffff0, /* version[] for each symbol */
|
||||||
|
DT_FLAGS_1 = 0x6ffffffb, /* DF_1_* */
|
||||||
DT_VERDEF = 0x6ffffffc, /* version definitions[] */
|
DT_VERDEF = 0x6ffffffc, /* version definitions[] */
|
||||||
DT_VERNEEDED= 0x6ffffffe /* version[] needed */
|
DT_VERNEEDED= 0x6ffffffe /* version[] needed */
|
||||||
};
|
};
|
||||||
|
enum { // DT_FLAGS_1
|
||||||
|
DF_1_NOW = 0x00000001, /* Set RTLD_NOW for this object. */
|
||||||
|
DF_1_PIE = 0x08000000 // Position-Independent Executable (main program)
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -197,6 +219,39 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef WANT_REL_ENUM //{
|
||||||
|
#undef WANT_REL_ENUM
|
||||||
|
static inline unsigned ELF32_R_TYPE(unsigned x) { return 0xff & x; }
|
||||||
|
static inline unsigned ELF64_R_TYPE(upx_uint64_t x) { return 0xffffffff & (unsigned)x; }
|
||||||
|
|
||||||
|
# undef R_PPC_RELATIVE
|
||||||
|
# undef R_PPC64_RELATIVE
|
||||||
|
# undef R_PPC_JMP_SLOT
|
||||||
|
# undef R_PPC64_JMP_SLOT
|
||||||
|
enum { // relocation types
|
||||||
|
R_386_RELATIVE = 8,
|
||||||
|
R_AARCH64_RELATIVE = 1027,
|
||||||
|
R_ARM_RELATIVE = 23,
|
||||||
|
R_PPC_RELATIVE = 22,
|
||||||
|
R_PPC64_RELATIVE = R_PPC_RELATIVE,
|
||||||
|
R_X86_64_RELATIVE = 8,
|
||||||
|
|
||||||
|
R_386_JMP_SLOT = 7,
|
||||||
|
R_AARCH64_JUMP_SLOT = 1026,
|
||||||
|
R_ARM_JUMP_SLOT = 22,
|
||||||
|
R_PPC_JMP_SLOT = 21,
|
||||||
|
R_PPC64_JMP_SLOT = R_PPC_JMP_SLOT,
|
||||||
|
R_X86_64_JUMP_SLOT = 7
|
||||||
|
|
||||||
|
, R_ARM_ABS32 = 2
|
||||||
|
, R_ARM_GLOB_DAT = 21
|
||||||
|
|
||||||
|
, R_AARCH64_ABS64 = 257
|
||||||
|
, R_AARCH64_GLOB_DAT = 1025
|
||||||
|
|
||||||
|
};
|
||||||
|
#endif //}
|
||||||
|
|
||||||
#ifdef WANT_NHDR_ENUM
|
#ifdef WANT_NHDR_ENUM
|
||||||
#undef WANT_NHDR_ENUM
|
#undef WANT_NHDR_ENUM
|
||||||
enum { // ELF PT_NOTE types
|
enum { // ELF PT_NOTE types
|
||||||
|
|||||||
+7
-3
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -281,9 +281,13 @@ int PackExe::readFileHeader()
|
|||||||
if (ih.ident != 'M' + 'Z'*256 && ih.ident != 'Z' + 'M'*256)
|
if (ih.ident != 'M' + 'Z'*256 && ih.ident != 'Z' + 'M'*256)
|
||||||
return 0;
|
return 0;
|
||||||
ih_exesize = ih.m512 + ih.p512*512 - (ih.m512 ? 512 : 0);
|
ih_exesize = ih.m512 + ih.p512*512 - (ih.m512 ? 512 : 0);
|
||||||
|
if (!ih_exesize) {
|
||||||
|
ih_exesize = file_size;
|
||||||
|
}
|
||||||
ih_imagesize = ih_exesize - ih.headsize16*16;
|
ih_imagesize = ih_exesize - ih.headsize16*16;
|
||||||
ih_overlay = file_size - ih_exesize;
|
ih_overlay = file_size - ih_exesize;
|
||||||
if (ih.m512+ih.p512*512u < sizeof (ih))
|
if (file_size < (int)sizeof(ih)
|
||||||
|
|| ((ih.m512 | ih.p512) && ih.m512+ih.p512*512u < sizeof (ih)))
|
||||||
throwCantPack("illegal exe header");
|
throwCantPack("illegal exe header");
|
||||||
if (file_size < (off_t)ih_exesize || ih_imagesize <= 0 || ih_imagesize > ih_exesize)
|
if (file_size < (off_t)ih_exesize || ih_imagesize <= 0 || ih_imagesize > ih_exesize)
|
||||||
throwCantPack("exe header corrupted");
|
throwCantPack("exe header corrupted");
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2643
-997
File diff suppressed because it is too large
Load Diff
+106
-16
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
Copyright (C) 2000-2017 John F. Reiser
|
Copyright (C) 2000-2020 John F. Reiser
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -33,7 +33,6 @@
|
|||||||
#ifndef __UPX_P_LX_ELF_H //{
|
#ifndef __UPX_P_LX_ELF_H //{
|
||||||
#define __UPX_P_LX_ELF_H 1
|
#define __UPX_P_LX_ELF_H 1
|
||||||
|
|
||||||
|
|
||||||
class PackLinuxElf : public PackUnix
|
class PackLinuxElf : public PackUnix
|
||||||
{
|
{
|
||||||
typedef PackUnix super;
|
typedef PackUnix super;
|
||||||
@@ -51,7 +50,7 @@ protected:
|
|||||||
|
|
||||||
virtual void pack1(OutputFile *, Filter &) = 0; // generate executable header
|
virtual void pack1(OutputFile *, Filter &) = 0; // generate executable header
|
||||||
virtual int pack2(OutputFile *, Filter &) = 0; // append compressed data
|
virtual int pack2(OutputFile *, Filter &) = 0; // append compressed data
|
||||||
virtual void pack3(OutputFile *, Filter &) = 0; // append loader
|
virtual off_t pack3(OutputFile *, Filter &) = 0; // append loader
|
||||||
//virtual void pack4(OutputFile *, Filter &) = 0; // append pack header
|
//virtual void pack4(OutputFile *, Filter &) = 0; // append pack header
|
||||||
|
|
||||||
virtual void generateElfHdr(
|
virtual void generateElfHdr(
|
||||||
@@ -63,12 +62,12 @@ protected:
|
|||||||
virtual void addStubEntrySections(Filter const *);
|
virtual void addStubEntrySections(Filter const *);
|
||||||
virtual void unpack(OutputFile *fo);
|
virtual void unpack(OutputFile *fo);
|
||||||
|
|
||||||
//virtual void const *elf_find_dynamic(unsigned) const = 0;
|
|
||||||
virtual upx_uint64_t elf_unsigned_dynamic(unsigned) const = 0;
|
virtual upx_uint64_t elf_unsigned_dynamic(unsigned) const = 0;
|
||||||
static unsigned elf_hash(char const *) /*const*/;
|
static unsigned elf_hash(char const *) /*const*/;
|
||||||
static unsigned gnu_hash(char const *) /*const*/;
|
static unsigned gnu_hash(char const *) /*const*/;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
static unsigned int const asl_delta = (1u<<12); // --android-shlib extra page
|
||||||
unsigned e_type;
|
unsigned e_type;
|
||||||
unsigned e_phnum; /* Program header table entry count */
|
unsigned e_phnum; /* Program header table entry count */
|
||||||
unsigned e_shnum;
|
unsigned e_shnum;
|
||||||
@@ -81,18 +80,24 @@ protected:
|
|||||||
unsigned sz_pack2a; // after pack2() of all PT_LOAD
|
unsigned sz_pack2a; // after pack2() of all PT_LOAD
|
||||||
unsigned lg2_page; // log2(PAGE_SIZE)
|
unsigned lg2_page; // log2(PAGE_SIZE)
|
||||||
unsigned page_size; // 1u<<lg2_page
|
unsigned page_size; // 1u<<lg2_page
|
||||||
bool is_big; // stub style: must use area above the brk
|
bool is_pie; // is Position-Independent-Executable (ET_DYN main program)
|
||||||
unsigned xct_off; // shared library: file offset of SHT_EXECINSTR
|
unsigned xct_off; // shared library: file offset of SHT_EXECINSTR
|
||||||
unsigned hatch_off; // file offset of escape hatch
|
unsigned hatch_off; // file offset of escape hatch
|
||||||
|
unsigned o_binfo; // offset to first b_info
|
||||||
upx_uint64_t load_va; // PT_LOAD[0].p_vaddr
|
upx_uint64_t load_va; // PT_LOAD[0].p_vaddr
|
||||||
upx_uint64_t xct_va; // minimum SHT_EXECINSTR virtual address
|
upx_uint64_t xct_va; // minimum SHT_EXECINSTR virtual address
|
||||||
upx_uint64_t jni_onload_va; // runtime &JNI_OnLoad
|
upx_uint64_t jni_onload_va; // runtime &JNI_OnLoad
|
||||||
|
upx_uint64_t user_init_va;
|
||||||
|
unsigned user_init_off; // within file_image
|
||||||
|
|
||||||
upx_uint16_t e_machine;
|
upx_uint16_t e_machine;
|
||||||
unsigned char ei_class;
|
unsigned char ei_class;
|
||||||
unsigned char ei_data;
|
unsigned char ei_data;
|
||||||
unsigned char ei_osabi;
|
unsigned char ei_osabi;
|
||||||
char const *osabi_note;
|
char const *osabi_note;
|
||||||
|
unsigned upx_dt_init; // DT_INIT, DT_PREINIT_ARRAY, DT_INIT_ARRAY
|
||||||
|
static unsigned const DT_NUM = 34; // elf.h
|
||||||
|
unsigned dt_table[DT_NUM]; // 1+ index in PT_DYNAMIC
|
||||||
|
|
||||||
unsigned char const *buildid_data;
|
unsigned char const *buildid_data;
|
||||||
int o_elf_shnum; // num output Shdrs
|
int o_elf_shnum; // num output Shdrs
|
||||||
@@ -118,15 +123,18 @@ protected:
|
|||||||
|
|
||||||
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||||
virtual int pack2(OutputFile *, Filter &); // append compressed data
|
virtual int pack2(OutputFile *, Filter &); // append compressed data
|
||||||
virtual void pack3(OutputFile *, Filter &); // append loader
|
virtual off_t pack3(OutputFile *, Filter &); // append loader
|
||||||
virtual void pack4(OutputFile *, Filter &); // append pack header
|
virtual void pack4(OutputFile *, Filter &); // append pack header
|
||||||
virtual void unpack(OutputFile *fo);
|
virtual void unpack(OutputFile *fo);
|
||||||
|
virtual void unRel32(unsigned dt_rel, Elf32_Rel *rel0, unsigned relsz,
|
||||||
|
MemBuffer &membuf, unsigned const load_off, OutputFile *fo);
|
||||||
|
|
||||||
virtual void generateElfHdr(
|
virtual void generateElfHdr(
|
||||||
OutputFile *,
|
OutputFile *,
|
||||||
void const *proto,
|
void const *proto,
|
||||||
unsigned const brka
|
unsigned const brka
|
||||||
);
|
);
|
||||||
|
virtual void defineSymbols(Filter const *);
|
||||||
virtual void buildLinuxLoader(
|
virtual void buildLinuxLoader(
|
||||||
upx_byte const *const proto, // assembly-only sections
|
upx_byte const *const proto, // assembly-only sections
|
||||||
unsigned const szproto,
|
unsigned const szproto,
|
||||||
@@ -140,23 +148,37 @@ protected:
|
|||||||
virtual unsigned find_LOAD_gap(Elf32_Phdr const *const phdri, unsigned const k,
|
virtual unsigned find_LOAD_gap(Elf32_Phdr const *const phdri, unsigned const k,
|
||||||
unsigned const e_phnum);
|
unsigned const e_phnum);
|
||||||
virtual off_t getbase(const Elf32_Phdr *phdr, int e_phnum) const;
|
virtual off_t getbase(const Elf32_Phdr *phdr, int e_phnum) const;
|
||||||
|
bool calls_crt1(Elf32_Rel const *rel, int sz);
|
||||||
|
|
||||||
virtual Elf32_Sym const *elf_lookup(char const *) const;
|
virtual Elf32_Sym const *elf_lookup(char const *) const;
|
||||||
virtual unsigned elf_get_offset_from_address(unsigned) const;
|
virtual unsigned elf_get_offset_from_address(unsigned) const;
|
||||||
|
Elf32_Phdr const *elf_find_ptype(unsigned type, Elf32_Phdr const *phdr0, unsigned phnum);
|
||||||
Elf32_Shdr const *elf_find_section_name(char const *) const;
|
Elf32_Shdr const *elf_find_section_name(char const *) const;
|
||||||
Elf32_Shdr const *elf_find_section_type(unsigned) const;
|
Elf32_Shdr const *elf_find_section_type(unsigned) const;
|
||||||
|
unsigned check_pt_load(Elf32_Phdr const *);
|
||||||
|
unsigned check_pt_dynamic(Elf32_Phdr const *);
|
||||||
|
void invert_pt_dynamic(Elf32_Dyn const *);
|
||||||
void const *elf_find_dynamic(unsigned) const;
|
void const *elf_find_dynamic(unsigned) const;
|
||||||
Elf32_Dyn const *elf_has_dynamic(unsigned) const;
|
Elf32_Dyn const *elf_has_dynamic(unsigned) const;
|
||||||
virtual upx_uint64_t elf_unsigned_dynamic(unsigned) const;
|
virtual upx_uint64_t elf_unsigned_dynamic(unsigned) const;
|
||||||
|
virtual int adjABS(Elf32_Sym *sym, unsigned delta);
|
||||||
|
|
||||||
|
char const *get_str_name(unsigned st_name, unsigned symnum) const;
|
||||||
|
char const *get_dynsym_name(unsigned symnum, unsigned relnum) const;
|
||||||
protected:
|
protected:
|
||||||
Elf32_Ehdr ehdri; // from input file
|
Elf32_Ehdr ehdri; // from input file
|
||||||
|
MemBuffer lowmem; // especially for shlib
|
||||||
Elf32_Phdr *phdri; // for input file
|
Elf32_Phdr *phdri; // for input file
|
||||||
|
Elf32_Shdr *shdri; // from input file
|
||||||
|
Elf32_Phdr const *gnu_stack; // propagate NX
|
||||||
unsigned e_phoff;
|
unsigned e_phoff;
|
||||||
unsigned e_shoff;
|
unsigned e_shoff;
|
||||||
|
unsigned sz_dynseg; // PT_DYNAMIC.p_memsz
|
||||||
|
unsigned so_slide;
|
||||||
unsigned char *note_body; // concatenated contents of PT_NOTEs, if any
|
unsigned char *note_body; // concatenated contents of PT_NOTEs, if any
|
||||||
unsigned note_size; // total size of PT_NOTEs
|
unsigned note_size; // total size of PT_NOTEs
|
||||||
Elf32_Shdr const *shdri; // from input file
|
unsigned n_jmp_slot;
|
||||||
|
unsigned plt_off;
|
||||||
unsigned page_mask; // AND clears the offset-within-page
|
unsigned page_mask; // AND clears the offset-within-page
|
||||||
|
|
||||||
Elf32_Dyn const *dynseg; // from PT_DYNAMIC
|
Elf32_Dyn const *dynseg; // from PT_DYNAMIC
|
||||||
@@ -166,9 +188,11 @@ protected:
|
|||||||
Elf32_Sym const *jni_onload_sym;
|
Elf32_Sym const *jni_onload_sym;
|
||||||
char const *shstrtab; // via Elf32_Shdr
|
char const *shstrtab; // via Elf32_Shdr
|
||||||
|
|
||||||
Elf32_Shdr const *sec_strndx;
|
Elf32_Shdr *sec_strndx;
|
||||||
Elf32_Shdr const *sec_dynsym;
|
Elf32_Shdr const *sec_dynsym;
|
||||||
Elf32_Shdr const *sec_dynstr;
|
Elf32_Shdr const *sec_dynstr;
|
||||||
|
unsigned symnum_end;
|
||||||
|
unsigned strtab_end;
|
||||||
|
|
||||||
__packed_struct(cprElfHdr1)
|
__packed_struct(cprElfHdr1)
|
||||||
Elf32_Ehdr ehdr;
|
Elf32_Ehdr ehdr;
|
||||||
@@ -233,18 +257,23 @@ public:
|
|||||||
protected:
|
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();
|
||||||
|
|
||||||
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||||
virtual int pack2(OutputFile *, Filter &); // append compressed data
|
virtual int pack2(OutputFile *, Filter &); // append compressed data
|
||||||
virtual void pack3(OutputFile *, Filter &); // append loader
|
virtual off_t pack3(OutputFile *, Filter &); // append loader
|
||||||
virtual void pack4(OutputFile *, Filter &); // append pack header
|
virtual void pack4(OutputFile *, Filter &); // append pack header
|
||||||
virtual void unpack(OutputFile *fo);
|
virtual void unpack(OutputFile *fo);
|
||||||
|
virtual void unRela64(upx_uint64_t dt_rela, Elf64_Rela *rela0, unsigned relasz,
|
||||||
|
MemBuffer &membuf, upx_uint64_t const load_off, upx_uint64_t const old_dtinit,
|
||||||
|
OutputFile *fo);
|
||||||
|
|
||||||
virtual void generateElfHdr(
|
virtual void generateElfHdr(
|
||||||
OutputFile *,
|
OutputFile *,
|
||||||
void const *proto,
|
void const *proto,
|
||||||
unsigned const brka
|
unsigned const brka
|
||||||
);
|
);
|
||||||
|
virtual void defineSymbols(Filter const *);
|
||||||
virtual void buildLinuxLoader(
|
virtual void buildLinuxLoader(
|
||||||
upx_byte const *const proto, // assembly-only sections
|
upx_byte const *const proto, // assembly-only sections
|
||||||
unsigned const szproto,
|
unsigned const szproto,
|
||||||
@@ -257,23 +286,37 @@ protected:
|
|||||||
virtual void updateLoader(OutputFile *fo);
|
virtual void updateLoader(OutputFile *fo);
|
||||||
virtual unsigned find_LOAD_gap(Elf64_Phdr const *const phdri, unsigned const k,
|
virtual unsigned find_LOAD_gap(Elf64_Phdr const *const phdri, unsigned const k,
|
||||||
unsigned const e_phnum);
|
unsigned const e_phnum);
|
||||||
|
bool calls_crt1(Elf64_Rela const *rela, int sz);
|
||||||
|
|
||||||
virtual Elf64_Sym const *elf_lookup(char const *) const;
|
virtual Elf64_Sym const *elf_lookup(char const *) const;
|
||||||
virtual upx_uint64_t elf_get_offset_from_address(upx_uint64_t) const;
|
virtual upx_uint64_t elf_get_offset_from_address(upx_uint64_t) const;
|
||||||
|
Elf64_Phdr const *elf_find_ptype(unsigned type, Elf64_Phdr const *phdr0, unsigned phnum);
|
||||||
Elf64_Shdr const *elf_find_section_name(char const *) const;
|
Elf64_Shdr const *elf_find_section_name(char const *) const;
|
||||||
Elf64_Shdr const *elf_find_section_type(unsigned) const;
|
Elf64_Shdr const *elf_find_section_type(unsigned) const;
|
||||||
|
upx_uint64_t check_pt_load(Elf64_Phdr const *);
|
||||||
|
upx_uint64_t check_pt_dynamic(Elf64_Phdr const *);
|
||||||
|
void invert_pt_dynamic(Elf64_Dyn const *);
|
||||||
void const *elf_find_dynamic(unsigned) const;
|
void const *elf_find_dynamic(unsigned) const;
|
||||||
Elf64_Dyn const *elf_has_dynamic(unsigned) const;
|
Elf64_Dyn const *elf_has_dynamic(unsigned) const;
|
||||||
virtual upx_uint64_t elf_unsigned_dynamic(unsigned) const;
|
virtual upx_uint64_t elf_unsigned_dynamic(unsigned) const;
|
||||||
|
virtual int adjABS(Elf64_Sym *sym, unsigned delta);
|
||||||
|
|
||||||
|
char const *get_str_name(unsigned st_name, unsigned symnum) const;
|
||||||
|
char const *get_dynsym_name(unsigned symnum, unsigned relnum) const;
|
||||||
protected:
|
protected:
|
||||||
Elf64_Ehdr ehdri; // from input file
|
Elf64_Ehdr ehdri; // from input file
|
||||||
|
MemBuffer lowmem; // especially for shlib
|
||||||
Elf64_Phdr *phdri; // for input file
|
Elf64_Phdr *phdri; // for input file
|
||||||
|
Elf64_Shdr *shdri; // from input file
|
||||||
|
Elf64_Phdr const *gnu_stack; // propagate NX
|
||||||
upx_uint64_t e_phoff;
|
upx_uint64_t e_phoff;
|
||||||
upx_uint64_t e_shoff;
|
upx_uint64_t e_shoff;
|
||||||
|
upx_uint64_t sz_dynseg; // PT_DYNAMIC.p_memsz
|
||||||
|
upx_uint64_t so_slide;
|
||||||
unsigned char *note_body; // concatenated contents of PT_NOTEs, if any
|
unsigned char *note_body; // concatenated contents of PT_NOTEs, if any
|
||||||
unsigned note_size; // total size of PT_NOTEs
|
unsigned note_size; // total size of PT_NOTEs
|
||||||
Elf64_Shdr const *shdri; // from input file
|
unsigned n_jmp_slot;
|
||||||
|
upx_uint64_t plt_off;
|
||||||
upx_uint64_t page_mask; // AND clears the offset-within-page
|
upx_uint64_t page_mask; // AND clears the offset-within-page
|
||||||
|
|
||||||
Elf64_Dyn const *dynseg; // from PT_DYNAMIC
|
Elf64_Dyn const *dynseg; // from PT_DYNAMIC
|
||||||
@@ -283,9 +326,11 @@ protected:
|
|||||||
Elf64_Sym const *jni_onload_sym;
|
Elf64_Sym const *jni_onload_sym;
|
||||||
char const *shstrtab; // via Elf64_Shdr
|
char const *shstrtab; // via Elf64_Shdr
|
||||||
|
|
||||||
Elf64_Shdr const *sec_strndx;
|
Elf64_Shdr *sec_strndx;
|
||||||
Elf64_Shdr const *sec_dynsym;
|
Elf64_Shdr const *sec_dynsym;
|
||||||
Elf64_Shdr const *sec_dynstr;
|
Elf64_Shdr const *sec_dynstr;
|
||||||
|
unsigned symnum_end;
|
||||||
|
unsigned strtab_end;
|
||||||
|
|
||||||
__packed_struct(cprElfHdr1)
|
__packed_struct(cprElfHdr1)
|
||||||
Elf64_Ehdr ehdr;
|
Elf64_Ehdr ehdr;
|
||||||
@@ -363,6 +408,18 @@ protected:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class PackLinuxElf64Be : public PackLinuxElf64
|
||||||
|
{
|
||||||
|
typedef PackLinuxElf64 super;
|
||||||
|
protected:
|
||||||
|
PackLinuxElf64Be(InputFile *f) : super(f) {
|
||||||
|
lg2_page=16;
|
||||||
|
page_size=1u<<lg2_page;
|
||||||
|
bele = &N_BELE_RTP::be_policy;
|
||||||
|
PackLinuxElf64help1(f);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// linux/elf64amd
|
// linux/elf64amd
|
||||||
@@ -378,10 +435,25 @@ public:
|
|||||||
virtual const char *getName() const { return "linux/amd64"; }
|
virtual const char *getName() const { return "linux/amd64"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "amd64-linux.elf"; }
|
virtual const char *getFullName(const options_t *) const { return "amd64-linux.elf"; }
|
||||||
virtual const int *getFilters() const;
|
virtual const int *getFilters() const;
|
||||||
virtual bool canPack();
|
|
||||||
protected:
|
protected:
|
||||||
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||||
//virtual void pack3(OutputFile *, Filter &); // append loader
|
virtual void buildLoader(const Filter *);
|
||||||
|
virtual Linker* newLinker() const;
|
||||||
|
virtual void defineSymbols(Filter const *);
|
||||||
|
};
|
||||||
|
|
||||||
|
class PackLinuxElf64arm : public PackLinuxElf64Le
|
||||||
|
{
|
||||||
|
typedef PackLinuxElf64Le super;
|
||||||
|
public:
|
||||||
|
PackLinuxElf64arm(InputFile *f);
|
||||||
|
virtual ~PackLinuxElf64arm();
|
||||||
|
virtual int getFormat() const { return UPX_F_LINUX_ELF64_ARM; }
|
||||||
|
virtual const char *getName() const { return "linux/arm64"; }
|
||||||
|
virtual const char *getFullName(const options_t *) const { return "arm64-linux.elf"; }
|
||||||
|
virtual const int *getFilters() const;
|
||||||
|
protected:
|
||||||
|
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||||
virtual void buildLoader(const Filter *);
|
virtual void buildLoader(const Filter *);
|
||||||
virtual Linker* newLinker() const;
|
virtual Linker* newLinker() const;
|
||||||
virtual void defineSymbols(Filter const *);
|
virtual void defineSymbols(Filter const *);
|
||||||
@@ -425,7 +497,25 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
unsigned lg2_page; // log2(PAGE_SIZE)
|
unsigned lg2_page; // log2(PAGE_SIZE)
|
||||||
unsigned page_size; // 1u<<lg2_page
|
unsigned page_size; // 1u<<lg2_page
|
||||||
virtual bool canPack();
|
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||||
|
virtual void buildLoader(const Filter *);
|
||||||
|
virtual Linker* newLinker() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class PackLinuxElf64ppc : public PackLinuxElf64Be
|
||||||
|
{
|
||||||
|
typedef PackLinuxElf64Be super;
|
||||||
|
public:
|
||||||
|
PackLinuxElf64ppc(InputFile *f);
|
||||||
|
virtual ~PackLinuxElf64ppc();
|
||||||
|
virtual int getFormat() const { return UPX_F_LINUX_ELFPPC64; }
|
||||||
|
virtual const char *getName() const { return "linux/ppc64"; }
|
||||||
|
virtual const char *getFullName(const options_t *) const { return "powerpc64-linux.elf"; }
|
||||||
|
virtual const int *getFilters() const;
|
||||||
|
protected:
|
||||||
|
unsigned lg2_page; // log2(PAGE_SIZE)
|
||||||
|
unsigned page_size; // 1u<<lg2_page
|
||||||
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||||
virtual void buildLoader(const Filter *);
|
virtual void buildLoader(const Filter *);
|
||||||
virtual Linker* newLinker() const;
|
virtual Linker* newLinker() const;
|
||||||
|
|||||||
+3
-3
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
Copyright (C) 2001-2017 John F. Reiser
|
Copyright (C) 2001-2020 John F. Reiser
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+6
-5
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
Copyright (C) 2000-2017 John F. Reiser
|
Copyright (C) 2000-2020 John F. Reiser
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -82,7 +82,7 @@ void PackLinuxElf32x86interp::pack1(OutputFile *fo, Filter &)
|
|||||||
assert(ehdri.e_phoff == sizeof(Elf32_Ehdr)); // checked by canPack()
|
assert(ehdri.e_phoff == sizeof(Elf32_Ehdr)); // checked by canPack()
|
||||||
sz_phdrs = ehdri.e_phnum * ehdri.e_phentsize;
|
sz_phdrs = ehdri.e_phnum * ehdri.e_phentsize;
|
||||||
|
|
||||||
phdri = new Elf32_Phdr[(unsigned)ehdri.e_phnum];
|
phdri = New(Elf32_Phdr, ehdri.e_phnum);
|
||||||
fi->seek(ehdri.e_phoff, SEEK_SET);
|
fi->seek(ehdri.e_phoff, SEEK_SET);
|
||||||
fi->readx(phdri, sz_phdrs);
|
fi->readx(phdri, sz_phdrs);
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ int PackLinuxElf32x86interp::pack2(OutputFile *fo, Filter &ft)
|
|||||||
#undef PAGE_MASK
|
#undef PAGE_MASK
|
||||||
#define PAGE_MASK (~0u<<12)
|
#define PAGE_MASK (~0u<<12)
|
||||||
|
|
||||||
void PackLinuxElf32x86interp::pack3(OutputFile *fo, Filter &/*ft*/)
|
off_t PackLinuxElf32x86interp::pack3(OutputFile *fo, Filter &/*ft*/)
|
||||||
{
|
{
|
||||||
unsigned base = getbase(phdri, ehdri.e_phnum);
|
unsigned base = getbase(phdri, ehdri.e_phnum);
|
||||||
unsigned sz = PAGE_MASK & (~PAGE_MASK + elfout.phdr[0].p_filesz);
|
unsigned sz = PAGE_MASK & (~PAGE_MASK + elfout.phdr[0].p_filesz);
|
||||||
@@ -191,6 +191,7 @@ void PackLinuxElf32x86interp::pack3(OutputFile *fo, Filter &/*ft*/)
|
|||||||
else {
|
else {
|
||||||
updateLoader(fo);
|
updateLoader(fo);
|
||||||
}
|
}
|
||||||
|
return fo->getBytesWritten();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
Copyright (C) 2000-2017 John F. Reiser
|
Copyright (C) 2000-2020 John F. Reiser
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -55,7 +55,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||||
virtual int pack2(OutputFile *, Filter &); // append compressed data
|
virtual int pack2(OutputFile *, Filter &); // append compressed data
|
||||||
virtual void pack3(OutputFile *, Filter &); // build loader
|
virtual off_t pack3(OutputFile *, Filter &); // build loader
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+5
-6
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
Copyright (C) 2000-2017 John F. Reiser
|
Copyright (C) 2000-2020 John F. Reiser
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -161,11 +161,10 @@ PackLinuxI386sh::pack1(OutputFile *fo, Filter &)
|
|||||||
generateElfHdr(fo, stub_i386_linux_elf_shell_fold, 0x08048000);
|
generateElfHdr(fo, stub_i386_linux_elf_shell_fold, 0x08048000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
off_t
|
||||||
PackLinuxI386sh::pack3(OutputFile *fo, Filter &ft)
|
PackLinuxI386sh::pack3(OutputFile *fo, Filter &ft)
|
||||||
{
|
{
|
||||||
super::pack3(fo,ft);
|
return elfout.phdr[0].p_filesz = super::pack3(fo,ft);
|
||||||
elfout.phdr[0].p_filesz = fo->getBytesWritten();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* vim:set ts=4 sw=4 et: */
|
/* vim:set ts=4 sw=4 et: */
|
||||||
|
|||||||
+4
-4
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
Copyright (C) 2000-2017 John F. Reiser
|
Copyright (C) 2000-2020 John F. Reiser
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -52,7 +52,7 @@ public:
|
|||||||
virtual void buildLoader(const Filter *);
|
virtual void buildLoader(const Filter *);
|
||||||
|
|
||||||
virtual void pack1(OutputFile *fo, Filter &ft);
|
virtual void pack1(OutputFile *fo, Filter &ft);
|
||||||
virtual void pack3(OutputFile *fo, Filter &ft);
|
virtual off_t pack3(OutputFile *fo, Filter &ft);
|
||||||
|
|
||||||
virtual bool canPack();
|
virtual bool canPack();
|
||||||
// virtual void unpack(OutputFile *fo) { super::unpack(fo); }
|
// virtual void unpack(OutputFile *fo) { super::unpack(fo); }
|
||||||
|
|||||||
+561
-484
File diff suppressed because it is too large
Load Diff
+17
-49
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -29,6 +29,7 @@
|
|||||||
#ifndef __UPX_P_MACHO_H
|
#ifndef __UPX_P_MACHO_H
|
||||||
#define __UPX_P_MACHO_H 1
|
#define __UPX_P_MACHO_H 1
|
||||||
|
|
||||||
|
#include "conf.h"
|
||||||
|
|
||||||
__packed_struct(Mach_fat_header)
|
__packed_struct(Mach_fat_header)
|
||||||
BE32 magic;
|
BE32 magic;
|
||||||
@@ -287,7 +288,9 @@ template <class TMachITypes>
|
|||||||
__packed_struct(Mach_linkedit_data_command)
|
__packed_struct(Mach_linkedit_data_command)
|
||||||
typedef typename TMachITypes::Word Word;
|
typedef typename TMachITypes::Word Word;
|
||||||
|
|
||||||
Word cmd;
|
Word cmd; // LC_CODE_SIGNATURE, LC_SEGMENT_SPLIT_INFO,
|
||||||
|
// LC_FUNCTION_STARTS, LC_DATA_IN_CODE,
|
||||||
|
// LC_DYLIB_CODE_SIGN_DRS, LC_LINKER_OPTIMIZATION_HINT
|
||||||
Word cmdsize;
|
Word cmdsize;
|
||||||
Word dataoff; // file offset of data in __LINKEDIT segment
|
Word dataoff; // file offset of data in __LINKEDIT segment
|
||||||
Word datasize; // file size of data in __LINKEDIT segment
|
Word datasize; // file size of data in __LINKEDIT segment
|
||||||
@@ -333,6 +336,7 @@ __packed_struct(Mach_source_version_command)
|
|||||||
Word cmd; // LC_SOURCE_VERSION
|
Word cmd; // LC_SOURCE_VERSION
|
||||||
Word cmdsize; // 16
|
Word cmdsize; // 16
|
||||||
Word version;
|
Word version;
|
||||||
|
Word __pad; // to 0 mod 8
|
||||||
__packed_struct_end()
|
__packed_struct_end()
|
||||||
|
|
||||||
template <class TMachITypes>
|
template <class TMachITypes>
|
||||||
@@ -391,26 +395,6 @@ __packed_struct(Mach_load_dylib_command)
|
|||||||
Mach_dylib<TMachITypes> dylib;
|
Mach_dylib<TMachITypes> dylib;
|
||||||
__packed_struct_end()
|
__packed_struct_end()
|
||||||
|
|
||||||
template <class TMachITypes>
|
|
||||||
__packed_struct(Mach_function_starts_command)
|
|
||||||
typedef typename TMachITypes::Word Word;
|
|
||||||
|
|
||||||
Word cmd;
|
|
||||||
Word cmdsize;
|
|
||||||
Word dataoff;
|
|
||||||
Word datasize;
|
|
||||||
__packed_struct_end()
|
|
||||||
|
|
||||||
template <class TMachITypes>
|
|
||||||
__packed_struct(Mach_data_in_code_command)
|
|
||||||
typedef typename TMachITypes::Word Word;
|
|
||||||
|
|
||||||
Word cmd;
|
|
||||||
Word cmdsize;
|
|
||||||
Word dataoff;
|
|
||||||
Word datasize;
|
|
||||||
__packed_struct_end()
|
|
||||||
|
|
||||||
} // namespace N_Mach
|
} // namespace N_Mach
|
||||||
|
|
||||||
namespace N_Mach32 {
|
namespace N_Mach32 {
|
||||||
@@ -558,8 +542,6 @@ struct MachClass_32
|
|||||||
typedef N_Mach::Mach_twolevel_hints_command<MachITypes> Mach_twolevel_hints_command;
|
typedef N_Mach::Mach_twolevel_hints_command<MachITypes> Mach_twolevel_hints_command;
|
||||||
typedef N_Mach::Mach_linkedit_data_command<MachITypes> Mach_linkedit_data_command;
|
typedef N_Mach::Mach_linkedit_data_command<MachITypes> Mach_linkedit_data_command;
|
||||||
typedef N_Mach::Mach_uuid_command<MachITypes> Mach_uuid_command;
|
typedef N_Mach::Mach_uuid_command<MachITypes> Mach_uuid_command;
|
||||||
typedef N_Mach::Mach_data_in_code_command<MachITypes> Mach_data_in_code_command;
|
|
||||||
typedef N_Mach::Mach_function_starts_command<MachITypes> Mach_function_starts_command;
|
|
||||||
typedef N_Mach::Mach_load_dylib_command<MachITypes> Mach_load_dylib_command;
|
typedef N_Mach::Mach_load_dylib_command<MachITypes> Mach_load_dylib_command;
|
||||||
typedef N_Mach::Mach_dylib<MachITypes> Mach_dylib;
|
typedef N_Mach::Mach_dylib<MachITypes> Mach_dylib;
|
||||||
typedef N_Mach::Mach_load_dylinker_command<MachITypes> Mach_load_dylinker_command;
|
typedef N_Mach::Mach_load_dylinker_command<MachITypes> Mach_load_dylinker_command;
|
||||||
@@ -602,8 +584,6 @@ struct MachClass_64
|
|||||||
typedef N_Mach::Mach_twolevel_hints_command<MachITypes> Mach_twolevel_hints_command;
|
typedef N_Mach::Mach_twolevel_hints_command<MachITypes> Mach_twolevel_hints_command;
|
||||||
typedef N_Mach::Mach_linkedit_data_command<MachITypes> Mach_linkedit_data_command;
|
typedef N_Mach::Mach_linkedit_data_command<MachITypes> Mach_linkedit_data_command;
|
||||||
typedef N_Mach::Mach_uuid_command<MachITypes> Mach_uuid_command;
|
typedef N_Mach::Mach_uuid_command<MachITypes> Mach_uuid_command;
|
||||||
typedef N_Mach::Mach_data_in_code_command<MachITypes> Mach_data_in_code_command;
|
|
||||||
typedef N_Mach::Mach_function_starts_command<MachITypes> Mach_function_starts_command;
|
|
||||||
typedef N_Mach::Mach_load_dylib_command<MachITypes> Mach_load_dylib_command;
|
typedef N_Mach::Mach_load_dylib_command<MachITypes> Mach_load_dylib_command;
|
||||||
typedef N_Mach::Mach_dylib<MachITypes> Mach_dylib;
|
typedef N_Mach::Mach_dylib<MachITypes> Mach_dylib;
|
||||||
typedef N_Mach::Mach_load_dylinker_command<MachITypes> Mach_load_dylinker_command;
|
typedef N_Mach::Mach_load_dylinker_command<MachITypes> Mach_load_dylinker_command;
|
||||||
@@ -642,8 +622,6 @@ typedef MachClass_Host32::Mach_twolevel_hints_command Mach32_twolevel_hints_comm
|
|||||||
typedef MachClass_Host32::Mach_linkedit_data_command Mach32_linkedit_data_command;
|
typedef MachClass_Host32::Mach_linkedit_data_command Mach32_linkedit_data_command;
|
||||||
typedef MachClass_Host32::Mach_uuid_command Mach32_uuid_command;
|
typedef MachClass_Host32::Mach_uuid_command Mach32_uuid_command;
|
||||||
typedef MachClass_Host32::Mach_main_command Mach32_main_command;
|
typedef MachClass_Host32::Mach_main_command Mach32_main_command;
|
||||||
typedef MachClass_Host32::Mach_data_in_code_command Mach32_data_in_code_command;
|
|
||||||
typedef MachClass_Host32::Mach_function_starts_command Mach32_function_starts_command;
|
|
||||||
typedef MachClass_Host32::Mach_load_dylib_command Mach32_load_dylib_command;
|
typedef MachClass_Host32::Mach_load_dylib_command Mach32_load_dylib_command;
|
||||||
typedef MachClass_Host32::Mach_dylib Mach32_dylib;
|
typedef MachClass_Host32::Mach_dylib Mach32_dylib;
|
||||||
typedef MachClass_Host32::Mach_load_dylinker_command Mach32_load_dylinker_command;
|
typedef MachClass_Host32::Mach_load_dylinker_command Mach32_load_dylinker_command;
|
||||||
@@ -661,8 +639,6 @@ typedef MachClass_Host64::Mach_twolevel_hints_command Mach64_twolevel_hints_comm
|
|||||||
typedef MachClass_Host64::Mach_linkedit_data_command Mach64_linkedit_data_command;
|
typedef MachClass_Host64::Mach_linkedit_data_command Mach64_linkedit_data_command;
|
||||||
typedef MachClass_Host64::Mach_uuid_command Mach64_uuid_command;
|
typedef MachClass_Host64::Mach_uuid_command Mach64_uuid_command;
|
||||||
typedef MachClass_Host64::Mach_main_command Mach64_main_command;
|
typedef MachClass_Host64::Mach_main_command Mach64_main_command;
|
||||||
typedef MachClass_Host64::Mach_data_in_code_command Mach64_data_in_code_command;
|
|
||||||
typedef MachClass_Host64::Mach_function_starts_command Mach64_function_starts_command;
|
|
||||||
typedef MachClass_Host64::Mach_load_dylib_command Mach64_load_dylib_command;
|
typedef MachClass_Host64::Mach_load_dylib_command Mach64_load_dylib_command;
|
||||||
typedef MachClass_Host64::Mach_dylib Mach64_dylib;
|
typedef MachClass_Host64::Mach_dylib Mach64_dylib;
|
||||||
typedef MachClass_Host64::Mach_load_dylinker_command Mach64_load_dylinker_command;
|
typedef MachClass_Host64::Mach_load_dylinker_command Mach64_load_dylinker_command;
|
||||||
@@ -680,8 +656,6 @@ typedef MachClass_BE32::Mach_twolevel_hints_command MachBE32_twolevel_hints_co
|
|||||||
typedef MachClass_BE32::Mach_linkedit_data_command MachBE32_linkedit_data_command;
|
typedef MachClass_BE32::Mach_linkedit_data_command MachBE32_linkedit_data_command;
|
||||||
typedef MachClass_BE32::Mach_uuid_command MachBE32_uuid_command;
|
typedef MachClass_BE32::Mach_uuid_command MachBE32_uuid_command;
|
||||||
typedef MachClass_BE32::Mach_main_command MachBE32_main_command;
|
typedef MachClass_BE32::Mach_main_command MachBE32_main_command;
|
||||||
typedef MachClass_BE32::Mach_data_in_code_command MachBE32_data_in_code_command;
|
|
||||||
typedef MachClass_BE32::Mach_function_starts_command MachBE32_function_starts_command;
|
|
||||||
typedef MachClass_BE32::Mach_load_dylib_command MachBE32_load_dylib_command;
|
typedef MachClass_BE32::Mach_load_dylib_command MachBE32_load_dylib_command;
|
||||||
typedef MachClass_BE32::Mach_dylib MachBE32_dylib;
|
typedef MachClass_BE32::Mach_dylib MachBE32_dylib;
|
||||||
typedef MachClass_BE32::Mach_load_dylinker_command MachBE32_load_dylinker_command;
|
typedef MachClass_BE32::Mach_load_dylinker_command MachBE32_load_dylinker_command;
|
||||||
@@ -699,8 +673,6 @@ typedef MachClass_BE64::Mach_twolevel_hints_command MachBE64_twolevel_hints_co
|
|||||||
typedef MachClass_BE64::Mach_linkedit_data_command MachBE64_linkedit_data_command;
|
typedef MachClass_BE64::Mach_linkedit_data_command MachBE64_linkedit_data_command;
|
||||||
typedef MachClass_BE64::Mach_uuid_command MachBE64_uuid_command;
|
typedef MachClass_BE64::Mach_uuid_command MachBE64_uuid_command;
|
||||||
typedef MachClass_BE64::Mach_main_command MachBE64_main_command;
|
typedef MachClass_BE64::Mach_main_command MachBE64_main_command;
|
||||||
typedef MachClass_BE64::Mach_data_in_code_command MachBE64_data_in_code_command;
|
|
||||||
typedef MachClass_BE64::Mach_function_starts_command MachBE64_function_starts_command;
|
|
||||||
typedef MachClass_BE64::Mach_load_dylib_command MachBE64_load_dylib_command;
|
typedef MachClass_BE64::Mach_load_dylib_command MachBE64_load_dylib_command;
|
||||||
typedef MachClass_BE64::Mach_dylib MachBE64_dylib;
|
typedef MachClass_BE64::Mach_dylib MachBE64_dylib;
|
||||||
typedef MachClass_BE64::Mach_load_dylinker_command MachBE64_load_dylinker_command;
|
typedef MachClass_BE64::Mach_load_dylinker_command MachBE64_load_dylinker_command;
|
||||||
@@ -718,8 +690,6 @@ typedef MachClass_LE32::Mach_twolevel_hints_command MachLE32_twolevel_hints_co
|
|||||||
typedef MachClass_LE32::Mach_linkedit_data_command MachLE32_linkedit_data_command;
|
typedef MachClass_LE32::Mach_linkedit_data_command MachLE32_linkedit_data_command;
|
||||||
typedef MachClass_LE32::Mach_uuid_command MachLE32_uuid_command;
|
typedef MachClass_LE32::Mach_uuid_command MachLE32_uuid_command;
|
||||||
typedef MachClass_LE32::Mach_main_command MachLE32_main_command;
|
typedef MachClass_LE32::Mach_main_command MachLE32_main_command;
|
||||||
typedef MachClass_LE32::Mach_data_in_code_command MachLE32_data_in_code_command;
|
|
||||||
typedef MachClass_LE32::Mach_function_starts_command MachLE32_function_starts_command;
|
|
||||||
typedef MachClass_LE32::Mach_load_dylib_command MachLE32_load_dylib_command;
|
typedef MachClass_LE32::Mach_load_dylib_command MachLE32_load_dylib_command;
|
||||||
typedef MachClass_LE32::Mach_dylib MachLE32_dylib;
|
typedef MachClass_LE32::Mach_dylib MachLE32_dylib;
|
||||||
typedef MachClass_LE32::Mach_load_dylinker_command MachLE32_load_dylinker_command;
|
typedef MachClass_LE32::Mach_load_dylinker_command MachLE32_load_dylinker_command;
|
||||||
@@ -737,8 +707,6 @@ typedef MachClass_LE64::Mach_twolevel_hints_command MachLE64_twolevel_hints_co
|
|||||||
typedef MachClass_LE64::Mach_linkedit_data_command MachLE64_linkedit_data_command;
|
typedef MachClass_LE64::Mach_linkedit_data_command MachLE64_linkedit_data_command;
|
||||||
typedef MachClass_LE64::Mach_uuid_command MachLE64_uuid_command;
|
typedef MachClass_LE64::Mach_uuid_command MachLE64_uuid_command;
|
||||||
typedef MachClass_LE64::Mach_main_command MachLE64_main_command;
|
typedef MachClass_LE64::Mach_main_command MachLE64_main_command;
|
||||||
typedef MachClass_LE64::Mach_data_in_code_command MachLE64_data_in_code_command;
|
|
||||||
typedef MachClass_LE64::Mach_function_starts_command MachLE64_function_starts_command;
|
|
||||||
typedef MachClass_LE64::Mach_load_dylib_command MachLE64_load_dylib_command;
|
typedef MachClass_LE64::Mach_load_dylib_command MachLE64_load_dylib_command;
|
||||||
typedef MachClass_LE64::Mach_dylib MachLE64_dylib;
|
typedef MachClass_LE64::Mach_dylib MachLE64_dylib;
|
||||||
typedef MachClass_LE64::Mach_load_dylinker_command MachLE64_load_dylinker_command;
|
typedef MachClass_LE64::Mach_load_dylinker_command MachLE64_load_dylinker_command;
|
||||||
@@ -781,8 +749,6 @@ protected:
|
|||||||
typedef typename MachClass::Mach_linkedit_data_command Mach_linkedit_data_command;
|
typedef typename MachClass::Mach_linkedit_data_command Mach_linkedit_data_command;
|
||||||
typedef typename MachClass::Mach_uuid_command Mach_uuid_command;
|
typedef typename MachClass::Mach_uuid_command Mach_uuid_command;
|
||||||
typedef typename MachClass::Mach_main_command Mach_main_command;
|
typedef typename MachClass::Mach_main_command Mach_main_command;
|
||||||
typedef typename MachClass::Mach_data_in_code_command Mach_data_in_code_command;
|
|
||||||
typedef typename MachClass::Mach_function_starts_command Mach_function_starts_command;
|
|
||||||
typedef typename MachClass::Mach_load_dylib_command Mach_load_dylib_command;
|
typedef typename MachClass::Mach_load_dylib_command Mach_load_dylib_command;
|
||||||
typedef typename MachClass::Mach_dylib Mach_dylib;
|
typedef typename MachClass::Mach_dylib Mach_dylib;
|
||||||
typedef typename MachClass::Mach_load_dylinker_command Mach_load_dylinker_command;
|
typedef typename MachClass::Mach_load_dylinker_command Mach_load_dylinker_command;
|
||||||
@@ -800,7 +766,7 @@ public:
|
|||||||
// called by the generic pack()
|
// called by the generic pack()
|
||||||
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||||
virtual int pack2(OutputFile *, Filter &); // append compressed data
|
virtual int pack2(OutputFile *, Filter &); // append compressed data
|
||||||
virtual void pack3(OutputFile *, Filter &) /*= 0*/; // append loader
|
virtual off_t pack3(OutputFile *, Filter &) /*= 0*/; // append loader
|
||||||
virtual void pack4(OutputFile *, Filter &) /*= 0*/; // append PackHeader
|
virtual void pack4(OutputFile *, Filter &) /*= 0*/; // append PackHeader
|
||||||
|
|
||||||
virtual void pack4dylib(OutputFile *, Filter &, Addr init_address);
|
virtual void pack4dylib(OutputFile *, Filter &, Addr init_address);
|
||||||
@@ -814,6 +780,7 @@ public:
|
|||||||
|
|
||||||
virtual bool canPack();
|
virtual bool canPack();
|
||||||
virtual int canUnpack();
|
virtual int canUnpack();
|
||||||
|
virtual upx_uint64_t get_mod_init_func(Mach_segment_command const *segptr);
|
||||||
virtual unsigned find_SEGMENT_gap(unsigned const k, unsigned pos_eof);
|
virtual unsigned find_SEGMENT_gap(unsigned const k, unsigned pos_eof);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -853,8 +820,10 @@ protected:
|
|||||||
upx_byte const *stub_main;
|
upx_byte const *stub_main;
|
||||||
Mach_segment_command *rawmseg; // as input, with sections
|
Mach_segment_command *rawmseg; // as input, with sections
|
||||||
Mach_segment_command *msegcmd; // LC_SEGMENT first, without sections
|
Mach_segment_command *msegcmd; // LC_SEGMENT first, without sections
|
||||||
unsigned o_routines_cmd; // file offset to LC_ROUINTES
|
unsigned o__mod_init_func; // file offset to __DATA.__mod_init_func Mach_section_command
|
||||||
upx_uint64_t prev_init_address;
|
upx_uint64_t prev_mod_init_func;
|
||||||
|
upx_uint64_t pagezero_vmsize;
|
||||||
|
upx_uint64_t vma_max; // max over (.vmsize + .vmaddr)
|
||||||
Mach_header mhdri;
|
Mach_header mhdri;
|
||||||
|
|
||||||
Mach_header mhdro;
|
Mach_header mhdro;
|
||||||
@@ -1022,7 +991,7 @@ public:
|
|||||||
virtual const char *getName() const { return "dylib/ppc32"; }
|
virtual const char *getName() const { return "dylib/ppc32"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "powerpc-darwin.dylib"; }
|
virtual const char *getFullName(const options_t *) const { return "powerpc-darwin.dylib"; }
|
||||||
protected:
|
protected:
|
||||||
virtual void pack3(OutputFile *, Filter &); // append loader
|
virtual off_t pack3(OutputFile *, Filter &); // append loader
|
||||||
virtual void pack4(OutputFile *, Filter &); // append PackHeader
|
virtual void pack4(OutputFile *, Filter &); // append PackHeader
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1037,7 +1006,7 @@ public:
|
|||||||
virtual const char *getName() const { return "dylib/ppc64le"; }
|
virtual const char *getName() const { return "dylib/ppc64le"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "powerpc64le-darwin.dylib"; }
|
virtual const char *getFullName(const options_t *) const { return "powerpc64le-darwin.dylib"; }
|
||||||
protected:
|
protected:
|
||||||
virtual void pack3(OutputFile *, Filter &); // append loader
|
virtual off_t pack3(OutputFile *, Filter &); // append loader
|
||||||
virtual void pack4(OutputFile *, Filter &); // append PackHeader
|
virtual void pack4(OutputFile *, Filter &); // append PackHeader
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1104,7 +1073,7 @@ public:
|
|||||||
virtual const char *getName() const { return "dylib/i386"; }
|
virtual const char *getName() const { return "dylib/i386"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "i386-darwin.dylib"; }
|
virtual const char *getFullName(const options_t *) const { return "i386-darwin.dylib"; }
|
||||||
protected:
|
protected:
|
||||||
virtual void pack3(OutputFile *, Filter &); // append loader
|
virtual off_t pack3(OutputFile *, Filter &); // append loader
|
||||||
virtual void pack4(OutputFile *, Filter &); // append PackHeader
|
virtual void pack4(OutputFile *, Filter &); // append PackHeader
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1172,7 +1141,7 @@ public:
|
|||||||
virtual const char *getName() const { return "dylib/amd64"; }
|
virtual const char *getName() const { return "dylib/amd64"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "amd64-darwin.dylib"; }
|
virtual const char *getFullName(const options_t *) const { return "amd64-darwin.dylib"; }
|
||||||
protected:
|
protected:
|
||||||
virtual void pack3(OutputFile *, Filter &); // append loader
|
virtual off_t pack3(OutputFile *, Filter &); // append loader
|
||||||
virtual void pack4(OutputFile *, Filter &); // append PackHeader
|
virtual void pack4(OutputFile *, Filter &); // append PackHeader
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1240,7 +1209,6 @@ public:
|
|||||||
virtual const char *getName() const { return "macho/arm64"; }
|
virtual const char *getName() const { return "macho/arm64"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "arm64-darwin.macho"; }
|
virtual const char *getFullName(const options_t *) const { return "arm64-darwin.macho"; }
|
||||||
protected:
|
protected:
|
||||||
virtual const int *getCompressionMethods(int method, int level) const;
|
|
||||||
virtual const int *getFilters() const;
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
virtual void pack1_setup_threado(OutputFile *const fo);
|
virtual void pack1_setup_threado(OutputFile *const fo);
|
||||||
|
|||||||
+15
-4
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 2007-2017 John F. Reiser
|
Copyright (C) 2007-2020 John F. Reiser
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -45,7 +45,8 @@
|
|||||||
enum { // cputype
|
enum { // cputype
|
||||||
CPU_TYPE_I386 = 7,
|
CPU_TYPE_I386 = 7,
|
||||||
CPU_TYPE_X86_64 = 0x01000007,
|
CPU_TYPE_X86_64 = 0x01000007,
|
||||||
CPU_TYPE_ARM = 12,
|
CPU_TYPE_ARM = 0x0000000c,
|
||||||
|
CPU_TYPE_ARM64 = 0x0100000c,
|
||||||
CPU_TYPE_POWERPC = 0x00000012,
|
CPU_TYPE_POWERPC = 0x00000012,
|
||||||
CPU_TYPE_POWERPC64 = 0x01000012,
|
CPU_TYPE_POWERPC64 = 0x01000012,
|
||||||
CPU_TYPE_POWERPC64LE = 0x01000021
|
CPU_TYPE_POWERPC64LE = 0x01000021
|
||||||
@@ -57,7 +58,9 @@
|
|||||||
};
|
};
|
||||||
enum { // filetype
|
enum { // filetype
|
||||||
MH_EXECUTE = 2,
|
MH_EXECUTE = 2,
|
||||||
MH_DYLIB = 6,
|
MH_PRELOAD = 5, /* preloaded executable */
|
||||||
|
MH_DYLIB = 6, /* dynamically bound shared library */
|
||||||
|
MH_DYLINKER= 7, /* /usr/bin/dyld */
|
||||||
MH_BUNDLE = 8 /* dynamically bound bundle file */
|
MH_BUNDLE = 8 /* dynamically bound bundle file */
|
||||||
};
|
};
|
||||||
enum { // flags
|
enum { // flags
|
||||||
@@ -83,23 +86,31 @@
|
|||||||
LC_LOAD_DYLINKER = 0xe,
|
LC_LOAD_DYLINKER = 0xe,
|
||||||
LC_ROUTINES = 0x11,
|
LC_ROUTINES = 0x11,
|
||||||
LC_TWOLEVEL_HINTS= 0x16,
|
LC_TWOLEVEL_HINTS= 0x16,
|
||||||
|
LC_LOAD_WEAK_DYLIB= (0x18 | LC_REQ_DYLD),
|
||||||
LC_SEGMENT_64 = 0x19,
|
LC_SEGMENT_64 = 0x19,
|
||||||
LC_ROUTINES_64 = 0x1a,
|
LC_ROUTINES_64 = 0x1a,
|
||||||
LC_UUID = 0x1b,
|
LC_UUID = 0x1b,
|
||||||
LC_RPATH = 0x1c,
|
LC_RPATH = 0x1c,
|
||||||
LC_CODE_SIGNATURE = 0x1d,
|
LC_CODE_SIGNATURE = 0x1d,
|
||||||
LC_SEGMENT_SPLIT_INFO = 0x1e,
|
LC_SEGMENT_SPLIT_INFO = 0x1e,
|
||||||
LC_REEXPORT_DYLIB = 0x1f,
|
LC_REEXPORT_DYLIB = (0x1f | LC_REQ_DYLD),
|
||||||
LC_LAZY_LOAD_DYLIB= 0x20,
|
LC_LAZY_LOAD_DYLIB= 0x20,
|
||||||
LC_ENCRYPTION_INFO= 0x21,
|
LC_ENCRYPTION_INFO= 0x21,
|
||||||
LC_DYLD_INFO = 0x22, // compressed dyld information (10.6.x)
|
LC_DYLD_INFO = 0x22, // compressed dyld information (10.6.x)
|
||||||
LC_DYLD_INFO_ONLY = (0x22|LC_REQ_DYLD),
|
LC_DYLD_INFO_ONLY = (0x22|LC_REQ_DYLD),
|
||||||
LC_VERSION_MIN_MACOSX= 0x24,
|
LC_VERSION_MIN_MACOSX= 0x24,
|
||||||
|
LC_VERSION_MIN_IPHONEOS= 0x25,
|
||||||
LC_FUNCTION_STARTS= 0x26,
|
LC_FUNCTION_STARTS= 0x26,
|
||||||
|
LC_DYLD_ENVIRONMENT= 0x27, // string as environment variable
|
||||||
LC_MAIN = (0x28|LC_REQ_DYLD),
|
LC_MAIN = (0x28|LC_REQ_DYLD),
|
||||||
LC_DATA_IN_CODE = 0x29,
|
LC_DATA_IN_CODE = 0x29,
|
||||||
LC_SOURCE_VERSION = 0x2a,
|
LC_SOURCE_VERSION = 0x2a,
|
||||||
|
LC_DYLIB_CODE_SIGN_DRS= 0x2B,
|
||||||
|
LC_ENCRYPTION_INFO_64= 0x2C,
|
||||||
|
LC_VERSION_MIN_TVOS= 0x2F,
|
||||||
|
LC_VERSION_MIN_WATCHOS= 0x30,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum { // maxprot
|
enum { // maxprot
|
||||||
VM_PROT_READ = 1,
|
VM_PROT_READ = 1,
|
||||||
VM_PROT_WRITE = 2,
|
VM_PROT_WRITE = 2,
|
||||||
|
|||||||
+6
-6
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
Copyright (C) 2002-2017 Jens Medoch
|
Copyright (C) 2002-2020 Jens Medoch
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -160,7 +160,7 @@ void PackPs1::putBkupHeader(const unsigned char *src, unsigned char *dst, unsign
|
|||||||
|
|
||||||
if (src && dst)
|
if (src && dst)
|
||||||
{
|
{
|
||||||
unsigned char *cpr_bh = new unsigned char[sz_cbh];
|
unsigned char *cpr_bh = New(unsigned char, sz_cbh);
|
||||||
|
|
||||||
memset(cpr_bh, 0, sizeof(bh));
|
memset(cpr_bh, 0, sizeof(bh));
|
||||||
ps1_exe_chb_t * p = (ps1_exe_chb_t * )cpr_bh;
|
ps1_exe_chb_t * p = (ps1_exe_chb_t * )cpr_bh;
|
||||||
@@ -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::getSizeForUncompression(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,
|
||||||
@@ -338,7 +338,7 @@ void PackPs1::buildLoader(const Filter *)
|
|||||||
if (M_IS_LZMA(ph.method) && buildPart2)
|
if (M_IS_LZMA(ph.method) && buildPart2)
|
||||||
{
|
{
|
||||||
sz_lcpr = MemBuffer::getSizeForCompression(sz_lunc);
|
sz_lcpr = MemBuffer::getSizeForCompression(sz_lunc);
|
||||||
unsigned char *cprLoader = new unsigned char[sz_lcpr];
|
unsigned char *cprLoader = New(unsigned char, sz_lcpr);
|
||||||
int r = upx_compress(getLoader(), sz_lunc, cprLoader, &sz_lcpr,
|
int r = upx_compress(getLoader(), sz_lunc, cprLoader, &sz_lcpr,
|
||||||
NULL, M_NRV2B_8, 10, NULL, NULL );
|
NULL, M_NRV2B_8, 10, NULL, NULL );
|
||||||
if (r != UPX_E_OK || sz_lcpr >= sz_lunc)
|
if (r != UPX_E_OK || sz_lcpr >= sz_lunc)
|
||||||
|
|||||||
+3
-3
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
Copyright (C) 2002-2017 Jens Medoch
|
Copyright (C) 2002-2020 Jens Medoch
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
|||||||
+28
-8
@@ -2,8 +2,9 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
|
Copyright (C) 2000-2020 John F. Reiser
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -23,6 +24,9 @@
|
|||||||
|
|
||||||
Markus F.X.J. Oberhumer Laszlo Molnar
|
Markus F.X.J. Oberhumer Laszlo Molnar
|
||||||
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
||||||
|
|
||||||
|
John F. Reiser
|
||||||
|
<jreiser@users.sourceforge.net>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -59,7 +63,7 @@ bool PackUnix::canPack()
|
|||||||
if (exetype == 0)
|
if (exetype == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#if defined(__unix__)
|
#if defined(__unix__) && !defined(__MSYS2__)
|
||||||
// must be executable by owner
|
// must be executable by owner
|
||||||
if ((fi->st.st_mode & S_IXUSR) == 0)
|
if ((fi->st.st_mode & S_IXUSR) == 0)
|
||||||
throwCantPack("file not executable; try 'chmod +x'");
|
throwCantPack("file not executable; try 'chmod +x'");
|
||||||
@@ -242,13 +246,20 @@ PackUnix::patchLoaderChecksum()
|
|||||||
set_te32(&lp->l_checksum, upx_adler32(ptr, lsize));
|
set_te32(&lp->l_checksum, upx_adler32(ptr, lsize));
|
||||||
}
|
}
|
||||||
|
|
||||||
void PackUnix::pack3(OutputFile *fo, Filter &/*ft*/)
|
off_t PackUnix::pack3(OutputFile *fo, Filter &ft)
|
||||||
{
|
{
|
||||||
|
if (0==linker) {
|
||||||
|
// If no filter, then linker is not constructed by side effect
|
||||||
|
// of packExtent calling compressWithFilters.
|
||||||
|
// This is typical after "/usr/bin/patchelf --set-rpath".
|
||||||
|
buildLoader(&ft);
|
||||||
|
}
|
||||||
upx_byte *p = getLoader();
|
upx_byte *p = getLoader();
|
||||||
lsize = getLoaderSize();
|
lsize = getLoaderSize();
|
||||||
updateLoader(fo);
|
updateLoader(fo);
|
||||||
patchLoaderChecksum();
|
patchLoaderChecksum();
|
||||||
fo->write(p, lsize);
|
fo->write(p, lsize);
|
||||||
|
return fo->getBytesWritten();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PackUnix::pack4(OutputFile *fo, Filter &)
|
void PackUnix::pack4(OutputFile *fo, Filter &)
|
||||||
@@ -438,7 +449,7 @@ void PackUnix::packExtent(
|
|||||||
void PackUnix::unpackExtent(unsigned wanted, OutputFile *fo,
|
void PackUnix::unpackExtent(unsigned wanted, OutputFile *fo,
|
||||||
unsigned &total_in, unsigned &total_out,
|
unsigned &total_in, unsigned &total_out,
|
||||||
unsigned &c_adler, unsigned &u_adler,
|
unsigned &c_adler, unsigned &u_adler,
|
||||||
bool first_PF_X, unsigned szb_info
|
bool first_PF_X, unsigned szb_info, bool is_rewrite
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
b_info hdr; memset(&hdr, 0, sizeof(hdr));
|
b_info hdr; memset(&hdr, 0, sizeof(hdr));
|
||||||
@@ -491,8 +502,14 @@ void PackUnix::unpackExtent(unsigned wanted, OutputFile *fo,
|
|||||||
total_in += sz_cpr;
|
total_in += sz_cpr;
|
||||||
total_out += sz_unc;
|
total_out += sz_unc;
|
||||||
// write block
|
// write block
|
||||||
if (fo)
|
if (fo) {
|
||||||
|
if (is_rewrite) {
|
||||||
|
fo->rewrite(ibuf + j, sz_unc);
|
||||||
|
}
|
||||||
|
else {
|
||||||
fo->write(ibuf + j, sz_unc);
|
fo->write(ibuf + j, sz_unc);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (wanted < (unsigned)sz_unc)
|
if (wanted < (unsigned)sz_unc)
|
||||||
throwCantUnpack("corrupt b_info");
|
throwCantUnpack("corrupt b_info");
|
||||||
wanted -= sz_unc;
|
wanted -= sz_unc;
|
||||||
@@ -541,7 +558,10 @@ int PackUnix::canUnpack()
|
|||||||
|
|
||||||
void PackUnix::unpack(OutputFile *fo)
|
void PackUnix::unpack(OutputFile *fo)
|
||||||
{
|
{
|
||||||
unsigned const szb_info = sizeof(b_info);
|
b_info bhdr;
|
||||||
|
unsigned const szb_info = (ph.version <= 11)
|
||||||
|
? sizeof(bhdr.sz_unc) + sizeof(bhdr.sz_cpr) // old style
|
||||||
|
: sizeof(bhdr);
|
||||||
|
|
||||||
unsigned c_adler = upx_adler32(NULL, 0);
|
unsigned c_adler = upx_adler32(NULL, 0);
|
||||||
unsigned u_adler = upx_adler32(NULL, 0);
|
unsigned u_adler = upx_adler32(NULL, 0);
|
||||||
@@ -574,7 +594,7 @@ void PackUnix::unpack(OutputFile *fo)
|
|||||||
// decompress blocks
|
// decompress blocks
|
||||||
unsigned total_in = 0;
|
unsigned total_in = 0;
|
||||||
unsigned total_out = 0;
|
unsigned total_out = 0;
|
||||||
b_info bhdr; memset(&bhdr, 0, sizeof(bhdr));
|
memset(&bhdr, 0, sizeof(bhdr));
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
#define buf ibuf
|
#define buf ibuf
|
||||||
|
|||||||
+4
-4
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
|
||||||
Copyright (C) 1996-2017 Laszlo Molnar
|
Copyright (C) 1996-2020 Laszlo Molnar
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
UPX and the UCL library are free software; you can redistribute them
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
@@ -55,7 +55,7 @@ protected:
|
|||||||
// called by the generic pack()
|
// called by the generic pack()
|
||||||
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||||
virtual int pack2(OutputFile *, Filter &); // append compressed data
|
virtual int pack2(OutputFile *, Filter &); // append compressed data
|
||||||
virtual void pack3(OutputFile *, Filter &); // append loader
|
virtual off_t pack3(OutputFile *, Filter &); // append loader
|
||||||
virtual void pack4(OutputFile *, Filter &); // append PackHeader
|
virtual void pack4(OutputFile *, Filter &); // append PackHeader
|
||||||
|
|
||||||
virtual void patchLoader() = 0;
|
virtual void patchLoader() = 0;
|
||||||
@@ -77,7 +77,7 @@ protected:
|
|||||||
virtual void unpackExtent(unsigned wanted, OutputFile *fo,
|
virtual void unpackExtent(unsigned wanted, OutputFile *fo,
|
||||||
unsigned &total_in, unsigned &total_out,
|
unsigned &total_in, unsigned &total_out,
|
||||||
unsigned &c_adler, unsigned &u_adler,
|
unsigned &c_adler, unsigned &u_adler,
|
||||||
bool first_PF_X, unsigned szb_info );
|
bool first_PF_X, unsigned szb_info, bool is_rewrite = false);
|
||||||
|
|
||||||
int exetype;
|
int exetype;
|
||||||
unsigned blocksize;
|
unsigned blocksize;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user