From 2feed256560cdc7c9bd7809bf6bff5140baa8fc6 Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Thu, 29 Apr 2021 20:56:35 +0800 Subject: [PATCH 01/16] add openeuler-zip-3.0-crc-builtin.patch add openEuler zip package for CRC acceleration optimization,by patching it ,the zip software can accelerate by 20% when executing. you need the following command to patch it: 'patch -p1 < ../unzip-6.0-crc-builtin.patch ' (cherry picked from commit ca4173f53545d36aa53fa3b713e29af5a09915a2) --- zip-3.0-crc-builtin.patch | 105 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 zip-3.0-crc-builtin.patch diff --git a/zip-3.0-crc-builtin.patch b/zip-3.0-crc-builtin.patch new file mode 100644 index 0000000..3653c5f --- /dev/null +++ b/zip-3.0-crc-builtin.patch @@ -0,0 +1,105 @@ +diff -Nabur zip302/crc32.c zip30/crc32.c +--- zip302/crc32.c 2021-04-19 23:53:33.113226036 +0800 ++++ zip30/crc32.c 2021-04-19 23:54:07.821747891 +0800 +@@ -675,7 +675,7 @@ + + #endif /* (IZ_CRC_BE_OPTIMIZ || IZ_CRC_LE_OPTIMIZ) */ + +- ++#if 0 + /* ========================================================================= */ + ulg crc32(crc, buf, len) + ulg crc; /* crc shift register */ +@@ -726,6 +726,38 @@ + + return REV_BE(c) ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */ + } ++// ++#endif ++ ++ ++ ++u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len) ++{ ++int64_t length = len; ++ ++while ((length -= sizeof(u_int64_t)) >=0) { ++ __builtin_aarch64_crc32cx(crc, *((u_int64_t *)p)); ++ p += sizeof(u_int64_t); ++} ++ ++if (length & sizeof(u_int32_t)) { ++ __builtin_aarch64_crc32cw(crc, *((u_int32_t *)p)); ++ p += sizeof(u_int32_t); ++} ++ ++if (length & sizeof(u_int16_t)) { ++ __builtin_aarch64_crc32ch(crc, *((u_int16_t *)p)); ++ p += sizeof(u_int16_t); ++} ++ ++if (length & sizeof(u_int8_t)) ++ __builtin_aarch64_crc32cb(crc, *p); ++ ++return crc; ++} ++ ++ ++ + #endif /* !ASM_CRC */ + #endif /* !CRC_TABLE_ONLY */ + #endif /* !USE_ZLIB */ +diff -Nabur zip302/crc32.h zip30/crc32.h +--- zip302/crc32.h 2021-04-19 23:53:33.113226036 +0800 ++++ zip30/crc32.h 2021-04-19 23:54:07.821747891 +0800 +@@ -36,7 +36,8 @@ + # undef IZ_CRC_BE_OPTIMIZ + # endif + #else /* !(USE_ZLIB || CRC_TABLE_ONLY) */ +- ulg crc32 OF((ulg crc, ZCONST uch *buf, extent len)); ++ u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len); ++ // ulg crc32 OF((ulg crc, ZCONST uch *buf, extent len)); + #endif /* ?(USE_ZLIB || CRC_TABLE_ONLY) */ + + #ifndef CRC_32_TAB +@@ -47,10 +48,13 @@ + # undef CRC32 + #endif + #ifdef IZ_CRC_BE_OPTIMIZ +-# define CRC32UPD(c, crctab) (crctab[((c) >> 24)] ^ ((c) << 8)) +-# define CRC32(c, b, crctab) (crctab[(((int)(c) >> 24) ^ (b))] ^ ((c) << 8)) ++//# define CRC32UPD(c, crctab) (crctab[((c) >> 24)] ^ ((c) << 8)) ++ # define CRC32UPD(c) (__builtin_aarch64_crc32w(c,0)) ++//# define CRC32(c, b, crctab) (crctab[(((int)(c) >> 24) ^ (b))] ^ ((c) << 8)) ++ # define CRC32(c,b) (__builtin_aarch64_crc32w(c,b)) + # define REV_BE(w) (((w)>>24)+(((w)>>8)&0xff00)+ \ + (((w)&0xff00)<<8)+(((w)&0xff)<<24)) ++ + #else + # define CRC32UPD(c, crctab) (crctab[((int)(c)) & 0xff] ^ ((c) >> 8)) + # define CRC32(c, b, crctab) (crctab[((int)(c) ^ (b)) & 0xff] ^ ((c) >> 8)) +diff -Nabur zip302/unix/Makefile zip30/unix/Makefile +--- zip302/unix/Makefile 2021-04-19 23:53:33.761235779 +0800 ++++ zip30/unix/Makefile 2021-04-19 23:54:31.682106640 +0800 +@@ -36,7 +36,7 @@ + CHMOD = chmod + BINFLAGS = 755 + MANFLAGS = 644 +- ++ARCH = $(shell getconf LONG_BIT) + # target directories - where to install executables and man pages to + prefix = /usr/local + BINDIR = $(prefix)/bin +@@ -80,10 +80,10 @@ + .SUFFIXES: + .SUFFIXES: _.o .o .c .doc .1 + .c_.o: +- $(CC) -c $(CFLAGS) -DUTIL -o $@ $< ++ $(CC) -c $(CFLAGS) -DUTIL -DARCH=$(ARCH) -march=armv8.1-a -o $@ $< + + .c.o: +- $(CC) -c $(CFLAGS) $< ++ $(CC) -c $(CFLAGS) -DARCH=$(ARCH) -march=armv8.1-a $< + + .1.doc: + nroff -man $< | col -bx | uniq > $@ -- Gitee From b11f5721c89c7683c4444263471653ad325b7400 Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Fri, 7 May 2021 23:10:42 +0800 Subject: [PATCH 02/16] add LICENSE. (cherry picked from commit 5626e2eb100008ccb29f71d80cee53cddee34fcf) --- LICENSE | 339 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 339 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..89e08fb --- /dev/null +++ b/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. -- Gitee From eb757a1f03375f54a0e0787aae9c1f33faa04e83 Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Sun, 9 May 2021 09:46:18 +0800 Subject: [PATCH 03/16] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20LI?= =?UTF-8?q?CENSE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 0bc51afe83886178d1f4dc7d75cc391f8fad5a0f) --- LICENSE | 339 -------------------------------------------------------- 1 file changed, 339 deletions(-) delete mode 100644 LICENSE diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 89e08fb..0000000 --- a/LICENSE +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. -- Gitee From 1edb33946ce54ecd20637fbb095127cec5a5d4df Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Sun, 9 May 2021 09:50:01 +0800 Subject: [PATCH 04/16] update zip.spec. Add zip-3.0-crc-builtin.patch (cherry picked from commit a269988c40ed869b29ec91c92333141ef08b99d9) --- zip.spec | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/zip.spec b/zip.spec index 1a386a0..f340a90 100644 --- a/zip.spec +++ b/zip.spec @@ -18,6 +18,8 @@ Patch6000: CVE-2018-13410.patch Patch9000: openEuler-Cleanup-residual-temporary-file.patch +Patch12000: zip-3.0-crc-builtin.patch + BuildRequires: bzip2-devel gcc Requires: unzip @@ -56,6 +58,9 @@ mkdir -p %{buildroot}%{_mandir}/man1 %{_mandir}/man1/zip* %changelog +* May Sun 9 2021 hanzhelii <182212254@bjtu.edu.cn> - 3.0-27 +- Add zip-3.0-crc-builtin.patch + * Dec Thu 8 2020 wuchaochao - 3.0-26 - Add openEuler-Cleanup-residual-temporary-file.patch -- Gitee From 1d8e817eabdfd4fca86a702be9209e68143c6386 Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Tue, 11 May 2021 15:47:33 +0800 Subject: [PATCH 05/16] add LICENSE. (cherry picked from commit 99edb42b4b5e10427c7892de873f8da0cbd88cd3) --- LICENSE | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7b30349 --- /dev/null +++ b/LICENSE @@ -0,0 +1,60 @@ +This is version 2007-Mar-4 of the Info-ZIP license. +The definitive version of this document should be available at +ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely and +a copy at http://www.info-zip.org/pub/infozip/license.html. + + +Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + +For the purposes of this copyright and license, "Info-ZIP" is defined as +the following set of individuals: + + Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois, + Jean-loup Gailly, Hunter Goatley, Ed Gordon, Ian Gorman, Chris Herborth, + Dirk Haase, Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz, + David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko, + Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs, + Kai Uwe Rommel, Steve Salisbury, Dave Smith, Steven M. Schweda, + Christian Spieler, Cosmin Truta, Antoine Verheijen, Paul von Behren, + Rich Wales, Mike White. + +This software is provided "as is," without warranty of any kind, express +or implied. In no event shall Info-ZIP or its contributors be held liable +for any direct, indirect, incidental, special or consequential damages +arising out of the use of or inability to use this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the above disclaimer and the following restrictions: + + 1. Redistributions of source code (in whole or in part) must retain + the above copyright notice, definition, disclaimer, and this list + of conditions. + + 2. Redistributions in binary form (compiled executables and libraries) + must reproduce the above copyright notice, definition, disclaimer, + and this list of conditions in documentation and/or other materials + provided with the distribution. The sole exception to this condition + is redistribution of a standard UnZipSFX binary (including SFXWiz) as + part of a self-extracting archive; that is permitted without inclusion + of this license, as long as the normal SFX banner has not been removed + from the binary or disabled. + + 3. Altered versions--including, but not limited to, ports to new operating + systems, existing ports with new graphical interfaces, versions with + modified or added functionality, and dynamic, shared, or static library + versions not from Info-ZIP--must be plainly marked as such and must not + be misrepresented as being the original source or, if binaries, + compiled from the original source. Such altered versions also must not + be misrepresented as being Info-ZIP releases--including, but not + limited to, labeling of the altered versions with the names "Info-ZIP" + (or any variation thereof, including, but not limited to, different + capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without the + explicit permission of Info-ZIP. Such altered versions are further + prohibited from misrepresentative use of the Zip-Bugs or Info-ZIP + e-mail addresses or the Info-ZIP URL(s), such as to imply Info-ZIP + will provide support for the altered versions. + + 4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip," + "UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its + own source and binary releases. \ No newline at end of file -- Gitee From 807f4a73557c3780a9d96644052fbb2f88e11af0 Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Tue, 11 May 2021 15:50:07 +0800 Subject: [PATCH 06/16] update zip.spec. (cherry picked from commit 6225f0356422ee1a92cbbf9ab26e473fc50944b4) --- zip.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zip.spec b/zip.spec index f340a90..3e0e2f4 100644 --- a/zip.spec +++ b/zip.spec @@ -1,6 +1,6 @@ Name: zip Version: 3.0 -Release: 26 +Release: 27 Summary: A compression and file packaging/archive utility License: Info-ZIP URL: http://www.info-zip.org/Zip.html @@ -58,7 +58,7 @@ mkdir -p %{buildroot}%{_mandir}/man1 %{_mandir}/man1/zip* %changelog -* May Sun 9 2021 hanzhelii <182212254@bjtu.edu.cn> - 3.0-27 +* May Sun 9 2021 hanzhelii <182212254@bjtu.edu.cn> - 3.0-27 - Add zip-3.0-crc-builtin.patch * Dec Thu 8 2020 wuchaochao - 3.0-26 -- Gitee From b255148194790be6d18d60e921bb8ad02b474924 Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Tue, 11 May 2021 16:29:17 +0800 Subject: [PATCH 07/16] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20LI?= =?UTF-8?q?CENSE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 8f5f44e8d5c1351abd0fc08577d9b432edf3153f) --- LICENSE | 60 --------------------------------------------------------- 1 file changed, 60 deletions(-) delete mode 100644 LICENSE diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 7b30349..0000000 --- a/LICENSE +++ /dev/null @@ -1,60 +0,0 @@ -This is version 2007-Mar-4 of the Info-ZIP license. -The definitive version of this document should be available at -ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely and -a copy at http://www.info-zip.org/pub/infozip/license.html. - - -Copyright (c) 1990-2007 Info-ZIP. All rights reserved. - -For the purposes of this copyright and license, "Info-ZIP" is defined as -the following set of individuals: - - Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois, - Jean-loup Gailly, Hunter Goatley, Ed Gordon, Ian Gorman, Chris Herborth, - Dirk Haase, Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz, - David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko, - Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs, - Kai Uwe Rommel, Steve Salisbury, Dave Smith, Steven M. Schweda, - Christian Spieler, Cosmin Truta, Antoine Verheijen, Paul von Behren, - Rich Wales, Mike White. - -This software is provided "as is," without warranty of any kind, express -or implied. In no event shall Info-ZIP or its contributors be held liable -for any direct, indirect, incidental, special or consequential damages -arising out of the use of or inability to use this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the above disclaimer and the following restrictions: - - 1. Redistributions of source code (in whole or in part) must retain - the above copyright notice, definition, disclaimer, and this list - of conditions. - - 2. Redistributions in binary form (compiled executables and libraries) - must reproduce the above copyright notice, definition, disclaimer, - and this list of conditions in documentation and/or other materials - provided with the distribution. The sole exception to this condition - is redistribution of a standard UnZipSFX binary (including SFXWiz) as - part of a self-extracting archive; that is permitted without inclusion - of this license, as long as the normal SFX banner has not been removed - from the binary or disabled. - - 3. Altered versions--including, but not limited to, ports to new operating - systems, existing ports with new graphical interfaces, versions with - modified or added functionality, and dynamic, shared, or static library - versions not from Info-ZIP--must be plainly marked as such and must not - be misrepresented as being the original source or, if binaries, - compiled from the original source. Such altered versions also must not - be misrepresented as being Info-ZIP releases--including, but not - limited to, labeling of the altered versions with the names "Info-ZIP" - (or any variation thereof, including, but not limited to, different - capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without the - explicit permission of Info-ZIP. Such altered versions are further - prohibited from misrepresentative use of the Zip-Bugs or Info-ZIP - e-mail addresses or the Info-ZIP URL(s), such as to imply Info-ZIP - will provide support for the altered versions. - - 4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip," - "UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its - own source and binary releases. \ No newline at end of file -- Gitee From c9b7a1a02e75aad3eb5eff57fa8264cb84fc472b Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Tue, 11 May 2021 16:30:41 +0800 Subject: [PATCH 08/16] add LICENSE. (cherry picked from commit 18d4fb8aae186e957543231f4b8de8f8f0949b48) --- LICENSE | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e295cd7 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +zlib License + +(C) 2021 hanzhelii + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. -- Gitee From 86e9462082cd4ab96d2ddc2476f188da5e4b61d8 Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Tue, 11 May 2021 17:46:35 +0800 Subject: [PATCH 09/16] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20zi?= =?UTF-8?q?p-3.0-crc-builtin.patch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 06ae1e1929fd0067f031c9d956a5cda9a10a3a72) --- zip-3.0-crc-builtin.patch | 105 -------------------------------------- 1 file changed, 105 deletions(-) delete mode 100644 zip-3.0-crc-builtin.patch diff --git a/zip-3.0-crc-builtin.patch b/zip-3.0-crc-builtin.patch deleted file mode 100644 index 3653c5f..0000000 --- a/zip-3.0-crc-builtin.patch +++ /dev/null @@ -1,105 +0,0 @@ -diff -Nabur zip302/crc32.c zip30/crc32.c ---- zip302/crc32.c 2021-04-19 23:53:33.113226036 +0800 -+++ zip30/crc32.c 2021-04-19 23:54:07.821747891 +0800 -@@ -675,7 +675,7 @@ - - #endif /* (IZ_CRC_BE_OPTIMIZ || IZ_CRC_LE_OPTIMIZ) */ - -- -+#if 0 - /* ========================================================================= */ - ulg crc32(crc, buf, len) - ulg crc; /* crc shift register */ -@@ -726,6 +726,38 @@ - - return REV_BE(c) ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */ - } -+// -+#endif -+ -+ -+ -+u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len) -+{ -+int64_t length = len; -+ -+while ((length -= sizeof(u_int64_t)) >=0) { -+ __builtin_aarch64_crc32cx(crc, *((u_int64_t *)p)); -+ p += sizeof(u_int64_t); -+} -+ -+if (length & sizeof(u_int32_t)) { -+ __builtin_aarch64_crc32cw(crc, *((u_int32_t *)p)); -+ p += sizeof(u_int32_t); -+} -+ -+if (length & sizeof(u_int16_t)) { -+ __builtin_aarch64_crc32ch(crc, *((u_int16_t *)p)); -+ p += sizeof(u_int16_t); -+} -+ -+if (length & sizeof(u_int8_t)) -+ __builtin_aarch64_crc32cb(crc, *p); -+ -+return crc; -+} -+ -+ -+ - #endif /* !ASM_CRC */ - #endif /* !CRC_TABLE_ONLY */ - #endif /* !USE_ZLIB */ -diff -Nabur zip302/crc32.h zip30/crc32.h ---- zip302/crc32.h 2021-04-19 23:53:33.113226036 +0800 -+++ zip30/crc32.h 2021-04-19 23:54:07.821747891 +0800 -@@ -36,7 +36,8 @@ - # undef IZ_CRC_BE_OPTIMIZ - # endif - #else /* !(USE_ZLIB || CRC_TABLE_ONLY) */ -- ulg crc32 OF((ulg crc, ZCONST uch *buf, extent len)); -+ u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len); -+ // ulg crc32 OF((ulg crc, ZCONST uch *buf, extent len)); - #endif /* ?(USE_ZLIB || CRC_TABLE_ONLY) */ - - #ifndef CRC_32_TAB -@@ -47,10 +48,13 @@ - # undef CRC32 - #endif - #ifdef IZ_CRC_BE_OPTIMIZ --# define CRC32UPD(c, crctab) (crctab[((c) >> 24)] ^ ((c) << 8)) --# define CRC32(c, b, crctab) (crctab[(((int)(c) >> 24) ^ (b))] ^ ((c) << 8)) -+//# define CRC32UPD(c, crctab) (crctab[((c) >> 24)] ^ ((c) << 8)) -+ # define CRC32UPD(c) (__builtin_aarch64_crc32w(c,0)) -+//# define CRC32(c, b, crctab) (crctab[(((int)(c) >> 24) ^ (b))] ^ ((c) << 8)) -+ # define CRC32(c,b) (__builtin_aarch64_crc32w(c,b)) - # define REV_BE(w) (((w)>>24)+(((w)>>8)&0xff00)+ \ - (((w)&0xff00)<<8)+(((w)&0xff)<<24)) -+ - #else - # define CRC32UPD(c, crctab) (crctab[((int)(c)) & 0xff] ^ ((c) >> 8)) - # define CRC32(c, b, crctab) (crctab[((int)(c) ^ (b)) & 0xff] ^ ((c) >> 8)) -diff -Nabur zip302/unix/Makefile zip30/unix/Makefile ---- zip302/unix/Makefile 2021-04-19 23:53:33.761235779 +0800 -+++ zip30/unix/Makefile 2021-04-19 23:54:31.682106640 +0800 -@@ -36,7 +36,7 @@ - CHMOD = chmod - BINFLAGS = 755 - MANFLAGS = 644 -- -+ARCH = $(shell getconf LONG_BIT) - # target directories - where to install executables and man pages to - prefix = /usr/local - BINDIR = $(prefix)/bin -@@ -80,10 +80,10 @@ - .SUFFIXES: - .SUFFIXES: _.o .o .c .doc .1 - .c_.o: -- $(CC) -c $(CFLAGS) -DUTIL -o $@ $< -+ $(CC) -c $(CFLAGS) -DUTIL -DARCH=$(ARCH) -march=armv8.1-a -o $@ $< - - .c.o: -- $(CC) -c $(CFLAGS) $< -+ $(CC) -c $(CFLAGS) -DARCH=$(ARCH) -march=armv8.1-a $< - - .1.doc: - nroff -man $< | col -bx | uniq > $@ -- Gitee From 4b7a4e98b3c845d4f339aeab5d7cb2aa227ad24d Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Tue, 11 May 2021 17:47:45 +0800 Subject: [PATCH 10/16] =?UTF-8?q?add=20openeuler-zip-3.0-crc-builtin.patch?= =?UTF-8?q?=20this=20patch=20can=20only=20be=20used=20to=20openeuler=20of?= =?UTF-8?q?=20aarch64=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 6647364ce2e5cbf264e3b4323c46ac2f366958cc) --- zip-3.0-crc-builtin.patch | 84 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 zip-3.0-crc-builtin.patch diff --git a/zip-3.0-crc-builtin.patch b/zip-3.0-crc-builtin.patch new file mode 100644 index 0000000..3ffd8c4 --- /dev/null +++ b/zip-3.0-crc-builtin.patch @@ -0,0 +1,84 @@ +diff -Nabur zip30/crc32.c zip302/crc32.c +--- zip30/crc32.c 2008-05-05 00:51:40.000000000 +0800 ++++ zip302/crc32.c 2021-05-11 17:39:07.404427443 +0800 +@@ -675,7 +675,32 @@ + + #endif /* (IZ_CRC_BE_OPTIMIZ || IZ_CRC_LE_OPTIMIZ) */ + ++#ifdef ARCH_AARCH64 ++u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len) ++{ ++int64_t length = len; ++ ++while ((length -= sizeof(u_int64_t)) >=0) { ++ __builtin_aarch64_crc32cx(crc, *((u_int64_t *)p)); ++ p += sizeof(u_int64_t); ++} ++ ++if (length & sizeof(u_int32_t)) { ++ __builtin_aarch64_crc32cw(crc, *((u_int32_t *)p)); ++ p += sizeof(u_int32_t); ++} + ++if (length & sizeof(u_int16_t)) { ++ __builtin_aarch64_crc32ch(crc, *((u_int16_t *)p)); ++ p += sizeof(u_int16_t); ++} ++ ++if (length & sizeof(u_int8_t)) ++ __builtin_aarch64_crc32cb(crc, *p); ++ ++return crc; ++} ++#else + /* ========================================================================= */ + ulg crc32(crc, buf, len) + ulg crc; /* crc shift register */ +@@ -726,6 +751,8 @@ + + return REV_BE(c) ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */ + } ++#endif /* !ARCH_AARCH64*/ ++ + #endif /* !ASM_CRC */ + #endif /* !CRC_TABLE_ONLY */ + #endif /* !USE_ZLIB */ +diff -Nabur zip30/crc32.h zip302/crc32.h +--- zip30/crc32.h 2008-03-28 20:25:46.000000000 +0800 ++++ zip302/crc32.h 2021-05-11 17:40:10.893424721 +0800 +@@ -36,7 +36,11 @@ + # undef IZ_CRC_BE_OPTIMIZ + # endif + #else /* !(USE_ZLIB || CRC_TABLE_ONLY) */ ++# ifdef ARCH_AARCH64 ++ u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len); ++# else + ulg crc32 OF((ulg crc, ZCONST uch *buf, extent len)); ++# endif + #endif /* ?(USE_ZLIB || CRC_TABLE_ONLY) */ + + #ifndef CRC_32_TAB +diff -Nabur zip30/unix/Makefile zip302/unix/Makefile +--- zip30/unix/Makefile 2008-05-07 14:33:56.000000000 +0800 ++++ zip302/unix/Makefile 2021-05-11 17:41:54.139045266 +0800 +@@ -37,6 +37,9 @@ + BINFLAGS = 755 + MANFLAGS = 644 + ++ ++TARGET_ARCH = $(shell uname -m) ++ARCH = $(shell getconf LONG_BIT) + # target directories - where to install executables and man pages to + prefix = /usr/local + BINDIR = $(prefix)/bin +@@ -59,6 +62,10 @@ + # LFLAGS2 flags after obj file list (libraries, etc) + CFLAGS_NOOPT = -I. -DUNIX $(LOCAL_ZIP) + CFLAGS = -O2 $(CFLAGS_NOOPT) ++ifeq ($(TARGET_ARCH),aarch64) ++CFLAGS += -DARCH=$(ARCH) -march=armv8.1-a -D ARCH_AARCH64 ++endif ++ + LFLAGS1 = + LFLAGS2 = -s + -- Gitee From 21d9b431b41b87bdea2a9619fc0d38064313d289 Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Tue, 11 May 2021 19:42:32 +0800 Subject: [PATCH 11/16] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20zi?= =?UTF-8?q?p-3.0-crc-builtin.patch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 9eb2005773fd431a60f8c9032fecbcc4c36bbb14) --- zip-3.0-crc-builtin.patch | 84 --------------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 zip-3.0-crc-builtin.patch diff --git a/zip-3.0-crc-builtin.patch b/zip-3.0-crc-builtin.patch deleted file mode 100644 index 3ffd8c4..0000000 --- a/zip-3.0-crc-builtin.patch +++ /dev/null @@ -1,84 +0,0 @@ -diff -Nabur zip30/crc32.c zip302/crc32.c ---- zip30/crc32.c 2008-05-05 00:51:40.000000000 +0800 -+++ zip302/crc32.c 2021-05-11 17:39:07.404427443 +0800 -@@ -675,7 +675,32 @@ - - #endif /* (IZ_CRC_BE_OPTIMIZ || IZ_CRC_LE_OPTIMIZ) */ - -+#ifdef ARCH_AARCH64 -+u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len) -+{ -+int64_t length = len; -+ -+while ((length -= sizeof(u_int64_t)) >=0) { -+ __builtin_aarch64_crc32cx(crc, *((u_int64_t *)p)); -+ p += sizeof(u_int64_t); -+} -+ -+if (length & sizeof(u_int32_t)) { -+ __builtin_aarch64_crc32cw(crc, *((u_int32_t *)p)); -+ p += sizeof(u_int32_t); -+} - -+if (length & sizeof(u_int16_t)) { -+ __builtin_aarch64_crc32ch(crc, *((u_int16_t *)p)); -+ p += sizeof(u_int16_t); -+} -+ -+if (length & sizeof(u_int8_t)) -+ __builtin_aarch64_crc32cb(crc, *p); -+ -+return crc; -+} -+#else - /* ========================================================================= */ - ulg crc32(crc, buf, len) - ulg crc; /* crc shift register */ -@@ -726,6 +751,8 @@ - - return REV_BE(c) ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */ - } -+#endif /* !ARCH_AARCH64*/ -+ - #endif /* !ASM_CRC */ - #endif /* !CRC_TABLE_ONLY */ - #endif /* !USE_ZLIB */ -diff -Nabur zip30/crc32.h zip302/crc32.h ---- zip30/crc32.h 2008-03-28 20:25:46.000000000 +0800 -+++ zip302/crc32.h 2021-05-11 17:40:10.893424721 +0800 -@@ -36,7 +36,11 @@ - # undef IZ_CRC_BE_OPTIMIZ - # endif - #else /* !(USE_ZLIB || CRC_TABLE_ONLY) */ -+# ifdef ARCH_AARCH64 -+ u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len); -+# else - ulg crc32 OF((ulg crc, ZCONST uch *buf, extent len)); -+# endif - #endif /* ?(USE_ZLIB || CRC_TABLE_ONLY) */ - - #ifndef CRC_32_TAB -diff -Nabur zip30/unix/Makefile zip302/unix/Makefile ---- zip30/unix/Makefile 2008-05-07 14:33:56.000000000 +0800 -+++ zip302/unix/Makefile 2021-05-11 17:41:54.139045266 +0800 -@@ -37,6 +37,9 @@ - BINFLAGS = 755 - MANFLAGS = 644 - -+ -+TARGET_ARCH = $(shell uname -m) -+ARCH = $(shell getconf LONG_BIT) - # target directories - where to install executables and man pages to - prefix = /usr/local - BINDIR = $(prefix)/bin -@@ -59,6 +62,10 @@ - # LFLAGS2 flags after obj file list (libraries, etc) - CFLAGS_NOOPT = -I. -DUNIX $(LOCAL_ZIP) - CFLAGS = -O2 $(CFLAGS_NOOPT) -+ifeq ($(TARGET_ARCH),aarch64) -+CFLAGS += -DARCH=$(ARCH) -march=armv8.1-a -D ARCH_AARCH64 -+endif -+ - LFLAGS1 = - LFLAGS2 = -s - -- Gitee From 33d07d53bc63a604845d978fafeb8bf3c12ac441 Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Tue, 11 May 2021 19:43:29 +0800 Subject: [PATCH 12/16] add openeuler-zip-3.0-crc-builtin.patch this patch can only be used for openeuler of aarch64 . (cherry picked from commit 965eb9cadd680ecc04df3e3c74bc744a4f9cf96a) --- zip-3.0-crc-builtin.patch | 99 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 zip-3.0-crc-builtin.patch diff --git a/zip-3.0-crc-builtin.patch b/zip-3.0-crc-builtin.patch new file mode 100644 index 0000000..a970398 --- /dev/null +++ b/zip-3.0-crc-builtin.patch @@ -0,0 +1,99 @@ +diff -Nabur zip30/crc32.c zip304/crc32.c +--- zip30/crc32.c 2008-05-05 00:51:40.000000000 +0800 ++++ zip304/crc32.c 2021-05-11 19:15:43.071275962 +0800 +@@ -675,7 +675,32 @@ + + #endif /* (IZ_CRC_BE_OPTIMIZ || IZ_CRC_LE_OPTIMIZ) */ + ++#ifdef ARCH_AARCH64 ++u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len) ++{ ++int64_t length = len; ++ ++while ((length -= sizeof(u_int64_t)) >=0) { ++ __builtin_aarch64_crc32cx(crc, *((u_int64_t *)p)); ++ p += sizeof(u_int64_t); ++} ++ ++if (length & sizeof(u_int32_t)) { ++ __builtin_aarch64_crc32cw(crc, *((u_int32_t *)p)); ++ p += sizeof(u_int32_t); ++} + ++if (length & sizeof(u_int16_t)) { ++ __builtin_aarch64_crc32ch(crc, *((u_int16_t *)p)); ++ p += sizeof(u_int16_t); ++} ++ ++if (length & sizeof(u_int8_t)) ++ __builtin_aarch64_crc32cb(crc, *p); ++ ++return crc; ++} ++#else + /* ========================================================================= */ + ulg crc32(crc, buf, len) + ulg crc; /* crc shift register */ +@@ -726,6 +751,8 @@ + + return REV_BE(c) ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */ + } ++#endif /* !ARCH_AARCH64*/ ++ + #endif /* !ASM_CRC */ + #endif /* !CRC_TABLE_ONLY */ + #endif /* !USE_ZLIB */ +diff -Nabur zip30/crc32.h zip304/crc32.h +--- zip30/crc32.h 2008-03-28 20:25:46.000000000 +0800 ++++ zip304/crc32.h 2021-05-11 19:17:36.765057779 +0800 +@@ -36,7 +36,11 @@ + # undef IZ_CRC_BE_OPTIMIZ + # endif + #else /* !(USE_ZLIB || CRC_TABLE_ONLY) */ ++# ifdef ARCH_AARCH64 ++ u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len); ++# else + ulg crc32 OF((ulg crc, ZCONST uch *buf, extent len)); ++# endif + #endif /* ?(USE_ZLIB || CRC_TABLE_ONLY) */ + + #ifndef CRC_32_TAB +diff -Nabur zip30/unix/Makefile zip304/unix/Makefile +--- zip30/unix/Makefile 2008-05-07 14:33:56.000000000 +0800 ++++ zip304/unix/Makefile 2021-05-11 19:15:55.727474311 +0800 +@@ -37,6 +37,9 @@ + BINFLAGS = 755 + MANFLAGS = 644 + ++ ++TARGET_ARCH = $(shell uname -m) ++ARCH = $(shell getconf LONG_BIT) + # target directories - where to install executables and man pages to + prefix = /usr/local + BINDIR = $(prefix)/bin +@@ -59,6 +62,12 @@ + # LFLAGS2 flags after obj file list (libraries, etc) + CFLAGS_NOOPT = -I. -DUNIX $(LOCAL_ZIP) + CFLAGS = -O2 $(CFLAGS_NOOPT) ++ifeq ($(TARGET_ARCH),aarch64) ++CFF = -DARCH=$(ARCH) -march=armv8.1-a -D ARCH_AARCH64 ++else ++CFF = ++endif ++ + LFLAGS1 = + LFLAGS2 = -s + +@@ -80,10 +89,10 @@ + .SUFFIXES: + .SUFFIXES: _.o .o .c .doc .1 + .c_.o: +- $(CC) -c $(CFLAGS) -DUTIL -o $@ $< ++ $(CC) -c $(CFLAGS) -DUTIL $(CFF) -o $@ $< + + .c.o: +- $(CC) -c $(CFLAGS) $< ++ $(CC) -c $(CFLAGS) $(CFF) $< + + .1.doc: + nroff -man $< | col -bx | uniq > $@ -- Gitee From b2f561098c78c7684d5c4bd4923e9fb6475bb703 Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Wed, 12 May 2021 10:25:00 +0800 Subject: [PATCH 13/16] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20LI?= =?UTF-8?q?CENSE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 81e9aa0fc9dc4e1a8d53e1545d97fed24695f683) --- LICENSE | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 LICENSE diff --git a/LICENSE b/LICENSE deleted file mode 100644 index e295cd7..0000000 --- a/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -zlib License - -(C) 2021 hanzhelii - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -- Gitee From 1ec3361280dafd57e7ad40e0a9e1e63be8fcb213 Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Mon, 17 May 2021 17:02:11 +0800 Subject: [PATCH 14/16] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20zi?= =?UTF-8?q?p-3.0-crc-builtin.patch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit f2ae64ca746a17bff2acee13d7f429ae826443cf) --- zip-3.0-crc-builtin.patch | 99 --------------------------------------- 1 file changed, 99 deletions(-) delete mode 100644 zip-3.0-crc-builtin.patch diff --git a/zip-3.0-crc-builtin.patch b/zip-3.0-crc-builtin.patch deleted file mode 100644 index a970398..0000000 --- a/zip-3.0-crc-builtin.patch +++ /dev/null @@ -1,99 +0,0 @@ -diff -Nabur zip30/crc32.c zip304/crc32.c ---- zip30/crc32.c 2008-05-05 00:51:40.000000000 +0800 -+++ zip304/crc32.c 2021-05-11 19:15:43.071275962 +0800 -@@ -675,7 +675,32 @@ - - #endif /* (IZ_CRC_BE_OPTIMIZ || IZ_CRC_LE_OPTIMIZ) */ - -+#ifdef ARCH_AARCH64 -+u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len) -+{ -+int64_t length = len; -+ -+while ((length -= sizeof(u_int64_t)) >=0) { -+ __builtin_aarch64_crc32cx(crc, *((u_int64_t *)p)); -+ p += sizeof(u_int64_t); -+} -+ -+if (length & sizeof(u_int32_t)) { -+ __builtin_aarch64_crc32cw(crc, *((u_int32_t *)p)); -+ p += sizeof(u_int32_t); -+} - -+if (length & sizeof(u_int16_t)) { -+ __builtin_aarch64_crc32ch(crc, *((u_int16_t *)p)); -+ p += sizeof(u_int16_t); -+} -+ -+if (length & sizeof(u_int8_t)) -+ __builtin_aarch64_crc32cb(crc, *p); -+ -+return crc; -+} -+#else - /* ========================================================================= */ - ulg crc32(crc, buf, len) - ulg crc; /* crc shift register */ -@@ -726,6 +751,8 @@ - - return REV_BE(c) ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */ - } -+#endif /* !ARCH_AARCH64*/ -+ - #endif /* !ASM_CRC */ - #endif /* !CRC_TABLE_ONLY */ - #endif /* !USE_ZLIB */ -diff -Nabur zip30/crc32.h zip304/crc32.h ---- zip30/crc32.h 2008-03-28 20:25:46.000000000 +0800 -+++ zip304/crc32.h 2021-05-11 19:17:36.765057779 +0800 -@@ -36,7 +36,11 @@ - # undef IZ_CRC_BE_OPTIMIZ - # endif - #else /* !(USE_ZLIB || CRC_TABLE_ONLY) */ -+# ifdef ARCH_AARCH64 -+ u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len); -+# else - ulg crc32 OF((ulg crc, ZCONST uch *buf, extent len)); -+# endif - #endif /* ?(USE_ZLIB || CRC_TABLE_ONLY) */ - - #ifndef CRC_32_TAB -diff -Nabur zip30/unix/Makefile zip304/unix/Makefile ---- zip30/unix/Makefile 2008-05-07 14:33:56.000000000 +0800 -+++ zip304/unix/Makefile 2021-05-11 19:15:55.727474311 +0800 -@@ -37,6 +37,9 @@ - BINFLAGS = 755 - MANFLAGS = 644 - -+ -+TARGET_ARCH = $(shell uname -m) -+ARCH = $(shell getconf LONG_BIT) - # target directories - where to install executables and man pages to - prefix = /usr/local - BINDIR = $(prefix)/bin -@@ -59,6 +62,12 @@ - # LFLAGS2 flags after obj file list (libraries, etc) - CFLAGS_NOOPT = -I. -DUNIX $(LOCAL_ZIP) - CFLAGS = -O2 $(CFLAGS_NOOPT) -+ifeq ($(TARGET_ARCH),aarch64) -+CFF = -DARCH=$(ARCH) -march=armv8.1-a -D ARCH_AARCH64 -+else -+CFF = -+endif -+ - LFLAGS1 = - LFLAGS2 = -s - -@@ -80,10 +89,10 @@ - .SUFFIXES: - .SUFFIXES: _.o .o .c .doc .1 - .c_.o: -- $(CC) -c $(CFLAGS) -DUTIL -o $@ $< -+ $(CC) -c $(CFLAGS) -DUTIL $(CFF) -o $@ $< - - .c.o: -- $(CC) -c $(CFLAGS) $< -+ $(CC) -c $(CFLAGS) $(CFF) $< - - .1.doc: - nroff -man $< | col -bx | uniq > $@ -- Gitee From 196baacf1aab240afb90dd3f95adf01b3ca3070b Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Mon, 17 May 2021 17:57:41 +0800 Subject: [PATCH 15/16] =?UTF-8?q?add=20openeuler-zip-3.0-crc-builtin.patch?= =?UTF-8?q?=20reason:=20this=20patch=20is=20created=20for=20performance=20?= =?UTF-8?q?optimization=20in=20crc=20calculation=20only=20=20suitable=20fo?= =?UTF-8?q?r=20openeuler=20of=20aarch64=20architecture=E3=80=82=20you=20ca?= =?UTF-8?q?n=20patch=20it=20to=20the=20source=20code=20of=20zip=20software?= =?UTF-8?q?=20package=20and=20install=20the=20zip=20software=20as=20usual?= =?UTF-8?q?=E3=80=82=20effect:=20with=20this=20patch,=20the=20zip=20softwa?= =?UTF-8?q?re=20can=20speed=20up=20nearly=2020%=20when=20running=20than=20?= =?UTF-8?q?before=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit d10fa156ed944d1944d3cfebed3ac6104a67eb1f) --- zip-3.0-crc-builtin.patch | 115 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 zip-3.0-crc-builtin.patch diff --git a/zip-3.0-crc-builtin.patch b/zip-3.0-crc-builtin.patch new file mode 100644 index 0000000..d4cb0de --- /dev/null +++ b/zip-3.0-crc-builtin.patch @@ -0,0 +1,115 @@ +From 6210c2007a430882d234d846d133d5f3799434aa Mon Sep 17 00:00:00 2001 +From: Euler Hanzh <18221254@bjtu.edu.cn> +Date: Mon, 17 May 2021 17:32:51 +0800 +Subject: [PATCH 2/2] 2 + +--- + zip30/crc32.c | 27 +++++++++++++++++++++++++++ + zip30/crc32.h | 4 ++++ + zip30/unix/Makefile | 13 +++++++++++-- + 3 files changed, 42 insertions(+), 2 deletions(-) + +diff --git a/zip30/crc32.c b/zip30/crc32.c +index 6b2403b..9e26af7 100644 +--- a/zip30/crc32.c ++++ b/zip30/crc32.c +@@ -675,7 +675,32 @@ void free_crc_table() + + #endif /* (IZ_CRC_BE_OPTIMIZ || IZ_CRC_LE_OPTIMIZ) */ + ++#ifdef ARCH_AARCH64 ++u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len) ++{ ++int64_t length = len; ++ ++while ((length -= sizeof(u_int64_t)) >=0) { ++ __builtin_aarch64_crc32cx(crc, *((u_int64_t *)p)); ++ p += sizeof(u_int64_t); ++} + ++if (length & sizeof(u_int32_t)) { ++ __builtin_aarch64_crc32cw(crc, *((u_int32_t *)p)); ++ p += sizeof(u_int32_t); ++} ++ ++if (length & sizeof(u_int16_t)) { ++ __builtin_aarch64_crc32ch(crc, *((u_int16_t *)p)); ++ p += sizeof(u_int16_t); ++} ++ ++if (length & sizeof(u_int8_t)) ++ __builtin_aarch64_crc32cb(crc, *p); ++ ++return crc; ++} ++#else + /* ========================================================================= */ + ulg crc32(crc, buf, len) + ulg crc; /* crc shift register */ +@@ -726,6 +751,8 @@ ulg crc32(crc, buf, len) + + return REV_BE(c) ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */ + } ++#endif /* !ARCH_AARCH64*/ ++ + #endif /* !ASM_CRC */ + #endif /* !CRC_TABLE_ONLY */ + #endif /* !USE_ZLIB */ +diff --git a/zip30/crc32.h b/zip30/crc32.h +index 83af240..6fdaf32 100644 +--- a/zip30/crc32.h ++++ b/zip30/crc32.h +@@ -36,7 +36,11 @@ + # undef IZ_CRC_BE_OPTIMIZ + # endif + #else /* !(USE_ZLIB || CRC_TABLE_ONLY) */ ++# ifdef ARCH_AARCH64 ++ u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len); ++# else + ulg crc32 OF((ulg crc, ZCONST uch *buf, extent len)); ++# endif + #endif /* ?(USE_ZLIB || CRC_TABLE_ONLY) */ + + #ifndef CRC_32_TAB +diff --git a/zip30/unix/Makefile b/zip30/unix/Makefile +index abd0c44..065395a 100644 +--- a/zip30/unix/Makefile ++++ b/zip30/unix/Makefile +@@ -37,6 +37,9 @@ CHMOD = chmod + BINFLAGS = 755 + MANFLAGS = 644 + ++ ++TARGET_ARCH = $(shell uname -m) ++ARCH = $(shell getconf LONG_BIT) + # target directories - where to install executables and man pages to + prefix = /usr/local + BINDIR = $(prefix)/bin +@@ -59,6 +62,12 @@ IZ_OUR_BZIP2_DIR = bzip2 + # LFLAGS2 flags after obj file list (libraries, etc) + CFLAGS_NOOPT = -I. -DUNIX $(LOCAL_ZIP) + CFLAGS = -O2 $(CFLAGS_NOOPT) ++ifeq ($(TARGET_ARCH),aarch64) ++CFF = -DARCH=$(ARCH) -march=armv8.1-a -D ARCH_AARCH64 ++else ++CFF = ++endif ++ + LFLAGS1 = + LFLAGS2 = -s + +@@ -80,10 +89,10 @@ ZIP_H = zip.h ziperr.h tailor.h unix/osdep.h + .SUFFIXES: + .SUFFIXES: _.o .o .c .doc .1 + .c_.o: +- $(CC) -c $(CFLAGS) -DUTIL -o $@ $< ++ $(CC) -c $(CFLAGS) -DUTIL $(CFF) -o $@ $< + + .c.o: +- $(CC) -c $(CFLAGS) $< ++ $(CC) -c $(CFLAGS) $(CFF) $< + + .1.doc: + nroff -man $< | col -bx | uniq > $@ +-- +2.23.0 \ No newline at end of file -- Gitee From a660cf6775f63f46144b1144124345b0a219fd0d Mon Sep 17 00:00:00 2001 From: hanzhelii <18221254@bjtu.edu.cn> Date: Mon, 17 May 2021 19:12:53 +0800 Subject: [PATCH 16/16] update zip-3.0-crc-builtin.patch. add message of commit (cherry picked from commit f72bf32f6109993941ee34643bc8fe8974081b72) --- zip-3.0-crc-builtin.patch | 40 +++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/zip-3.0-crc-builtin.patch b/zip-3.0-crc-builtin.patch index d4cb0de..801873b 100644 --- a/zip-3.0-crc-builtin.patch +++ b/zip-3.0-crc-builtin.patch @@ -1,8 +1,9 @@ From 6210c2007a430882d234d846d133d5f3799434aa Mon Sep 17 00:00:00 2001 From: Euler Hanzh <18221254@bjtu.edu.cn> Date: Mon, 17 May 2021 17:32:51 +0800 -Subject: [PATCH 2/2] 2 - +Subject: [PATCH] this patch is created for performance optimization in crc calculation only suitable for openeuler of aarch64 architecture. + The speed of zip software when running can be accelerate by nearly 20% than before. + --- zip30/crc32.c | 27 +++++++++++++++++++++++++++ zip30/crc32.h | 4 ++++ @@ -20,27 +21,27 @@ index 6b2403b..9e26af7 100644 +#ifdef ARCH_AARCH64 +u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len) +{ -+int64_t length = len; ++ int64_t length = len; + -+while ((length -= sizeof(u_int64_t)) >=0) { -+ __builtin_aarch64_crc32cx(crc, *((u_int64_t *)p)); -+ p += sizeof(u_int64_t); -+} ++ while ((length -= sizeof(u_int64_t)) >=0) { ++ __builtin_aarch64_crc32cx(crc, *((u_int64_t *)p)); ++ p += sizeof(u_int64_t); ++ } -+if (length & sizeof(u_int32_t)) { -+ __builtin_aarch64_crc32cw(crc, *((u_int32_t *)p)); -+ p += sizeof(u_int32_t); -+} ++ if (length & sizeof(u_int32_t)) { ++ __builtin_aarch64_crc32cw(crc, *((u_int32_t *)p)); ++ p += sizeof(u_int32_t); ++ } + -+if (length & sizeof(u_int16_t)) { -+ __builtin_aarch64_crc32ch(crc, *((u_int16_t *)p)); -+ p += sizeof(u_int16_t); -+} ++ if (length & sizeof(u_int16_t)) { ++ __builtin_aarch64_crc32ch(crc, *((u_int16_t *)p)); ++ p += sizeof(u_int16_t); ++ } + -+if (length & sizeof(u_int8_t)) -+ __builtin_aarch64_crc32cb(crc, *p); ++ if (length & sizeof(u_int8_t)) ++ __builtin_aarch64_crc32cb(crc, *p); + -+return crc; ++ return crc; +} +#else /* ========================================================================= */ @@ -51,7 +52,6 @@ index 6b2403b..9e26af7 100644 return REV_BE(c) ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */ } +#endif /* !ARCH_AARCH64*/ -+ #endif /* !ASM_CRC */ #endif /* !CRC_TABLE_ONLY */ #endif /* !USE_ZLIB */ @@ -64,7 +64,7 @@ index 83af240..6fdaf32 100644 # endif #else /* !(USE_ZLIB || CRC_TABLE_ONLY) */ +# ifdef ARCH_AARCH64 -+ u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len); ++ u_int32_t crc32(u_int32_t crc,const u_int8_t *p, unsigned int len); +# else ulg crc32 OF((ulg crc, ZCONST uch *buf, extent len)); +# endif -- Gitee