diff options
author | Mark Adler <madler@alumni.caltech.edu> | 2011-09-09 23:32:36 -0700 |
---|---|---|
committer | Mark Adler <madler@alumni.caltech.edu> | 2011-09-09 23:32:36 -0700 |
commit | 67cc20d0041a32bee12bd9eb20ae218f91b73f77 (patch) | |
tree | d7e1b94bd15c30efd57cf9036f5fe89306b6bba0 | |
parent | 7751bd4c715ea8478113e34b49b5a794a4642e8e (diff) | |
download | zlib-1.2.4-pre1.tar.gz zlib-1.2.4-pre1.tar.bz2 zlib-1.2.4-pre1.zip |
zlib 1.2.4-pre1v1.2.4-pre1
67 files changed, 2822 insertions, 3019 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index b129ef2..7eefa49 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
@@ -66,17 +66,19 @@ if(MSVC) | |||
66 | endif() | 66 | endif() |
67 | 67 | ||
68 | if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR) | 68 | if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR) |
69 | # If we're doing an out of source build and the user has a zconf.h | 69 | # If we're doing an out of source build and the user has a zconf.h |
70 | # in their source tree... | 70 | # in their source tree... |
71 | if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h) | 71 | if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h) |
72 | message(FATAL_ERROR "You must remove zconf.h from the source tree. This f | 72 | message(FATAL_ERROR |
73 | ile is generated by the ./configure script shipped with zlib. CMake generates t | 73 | "You must remove ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h " |
74 | his file for you automatically in the build directory") | 74 | "from the source tree. This file is included with zlib " |
75 | "but CMake generates this file for you automatically " | ||
76 | "in the build directory.") | ||
75 | endif() | 77 | endif() |
76 | endif() | 78 | endif() |
77 | 79 | ||
78 | configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.in | 80 | configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein |
79 | ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h @ONLY) | 81 | ${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY) |
80 | include_directories(${CMAKE_CURRENT_BINARY_DIR}) | 82 | include_directories(${CMAKE_CURRENT_BINARY_DIR}) |
81 | 83 | ||
82 | 84 | ||
@@ -85,7 +87,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) | |||
85 | #============================================================================ | 87 | #============================================================================ |
86 | 88 | ||
87 | set(ZLIB_PUBLIC_HDRS | 89 | set(ZLIB_PUBLIC_HDRS |
88 | zconf.h | 90 | ${CMAKE_CURRENT_BINARY_DIR}/zconf.h |
89 | zlib.h | 91 | zlib.h |
90 | ) | 92 | ) |
91 | set(ZLIB_PRIVATE_HDRS | 93 | set(ZLIB_PRIVATE_HDRS |
@@ -129,6 +131,7 @@ if(MINGW) | |||
129 | COMMAND windres.exe | 131 | COMMAND windres.exe |
130 | -D GCC_WINDRES | 132 | -D GCC_WINDRES |
131 | -I ${CMAKE_CURRENT_SOURCE_DIR} | 133 | -I ${CMAKE_CURRENT_SOURCE_DIR} |
134 | -I ${CMAKE_CURRENT_BINARY_DIR} | ||
132 | -o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj | 135 | -o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj |
133 | -i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc) | 136 | -i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc) |
134 | set(ZLIB_SRCS ${ZLIB_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) | 137 | set(ZLIB_SRCS ${ZLIB_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) |
@@ -1,6 +1,31 @@ | |||
1 | 1 | ||
2 | ChangeLog file for zlib | 2 | ChangeLog file for zlib |
3 | 3 | ||
4 | Changes in 1.2.4 (11 Mar 2010) | ||
5 | - Fix VER3 extraction in configure for no fourth subversion | ||
6 | - Update zlib.3, add docs to Makefile.in to make .pdf out of it | ||
7 | - Add zlib.3.pdf to distribution | ||
8 | - Don't set error code in gzerror() if passed pointer is NULL | ||
9 | - Apply destination directory fixes to CMakeLists.txt [Lowman] | ||
10 | - Move #cmakedefine's to a new zconf.in.cmakein | ||
11 | - Restore zconf.h for builds that don't use configure or cmake | ||
12 | - Add distclean to dummy Makefile for convenience | ||
13 | - Update and improve INDEX, README, and FAQ | ||
14 | - Update CMakeLists.txt for the return of zconf.h [Lowman] | ||
15 | - Update contrib/vstudio/vc9 and vc10 [Vollant] | ||
16 | - Change libz.dll.a back to libzdll.a in win32/Makefile.gcc | ||
17 | - Apply license and readme changes to contrib/asm686 [Raiter] | ||
18 | - Check file name lengths and add -c option in minigzip.c [Li] | ||
19 | - Update contrib/amd64 and contrib/masmx86/ [Vollant] | ||
20 | - Avoid use of "eof" parameter in trees.c to not shadow library variable | ||
21 | - Update make_vms.com for removal of zlibdefs.h [Zinser] | ||
22 | - Update assembler code and vstudio projects in contrib [Vollant] | ||
23 | - Remove outdated assembler code contrib/masm686 and contrib/asm586 | ||
24 | - Remove old vc7 and vc8 from contrib/vstudio | ||
25 | - Update win32/Makefile.msc, add ZLIB_VER_SUBREVISION [Rowe] | ||
26 | - Fix memory leaks in gzclose_r() and gzclose_w(), file leak in gz_open() | ||
27 | - Add contrib/gcc_gvmat64 for longest_match and inflate_fast [Vollant] | ||
28 | |||
4 | Changes in 1.2.3.9 (21 Feb 2010) | 29 | Changes in 1.2.3.9 (21 Feb 2010) |
5 | - Expunge gzio.c | 30 | - Expunge gzio.c |
6 | - Move as400 build information to old | 31 | - Move as400 build information to old |
@@ -256,7 +281,7 @@ Changes in 1.2.2.4 (11 July 2005) | |||
256 | compile | 281 | compile |
257 | - Fix some spelling errors in comments [Betts] | 282 | - Fix some spelling errors in comments [Betts] |
258 | - Correct inflateInit2() error return documentation in zlib.h | 283 | - Correct inflateInit2() error return documentation in zlib.h |
259 | - Added zran.c example of compressed data random access to examples | 284 | - Add zran.c example of compressed data random access to examples |
260 | directory, shows use of inflatePrime() | 285 | directory, shows use of inflatePrime() |
261 | - Fix cast for assignments to strm->state in inflate.c and infback.c | 286 | - Fix cast for assignments to strm->state in inflate.c and infback.c |
262 | - Fix zlibCompileFlags() in zutil.c to use 1L for long shifts [Oberhumer] | 287 | - Fix zlibCompileFlags() in zutil.c to use 1L for long shifts [Oberhumer] |
@@ -3,8 +3,8 @@ | |||
3 | 3 | ||
4 | 4 | ||
5 | If your question is not there, please check the zlib home page | 5 | If your question is not there, please check the zlib home page |
6 | http://www.zlib.org which may have more recent information. | 6 | http://zlib.net/ which may have more recent information. |
7 | The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html | 7 | The lastest zlib FAQ is at http://zlib.net/zlib_faq.html |
8 | 8 | ||
9 | 9 | ||
10 | 1. Is zlib Y2K-compliant? | 10 | 1. Is zlib Y2K-compliant? |
@@ -13,54 +13,51 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html | |||
13 | 13 | ||
14 | 2. Where can I get a Windows DLL version? | 14 | 2. Where can I get a Windows DLL version? |
15 | 15 | ||
16 | The zlib sources can be compiled without change to produce a DLL. | 16 | The zlib sources can be compiled without change to produce a DLL. See the |
17 | See the file win32/DLL_FAQ.txt in the zlib distribution. | 17 | file win32/DLL_FAQ.txt in the zlib distribution. Pointers to the |
18 | Pointers to the precompiled DLL are found in the zlib web site at | 18 | precompiled DLL are found in the zlib web site at http://zlib.net/ . |
19 | http://www.zlib.org. | ||
20 | 19 | ||
21 | 3. Where can I get a Visual Basic interface to zlib? | 20 | 3. Where can I get a Visual Basic interface to zlib? |
22 | 21 | ||
23 | See | 22 | See |
24 | * http://www.dogma.net/markn/articles/zlibtool/zlibtool.htm | 23 | * http://marknelson.us/1997/01/01/zlib-engine/ |
25 | * contrib/visual-basic.txt in the zlib distribution | ||
26 | * win32/DLL_FAQ.txt in the zlib distribution | 24 | * win32/DLL_FAQ.txt in the zlib distribution |
27 | 25 | ||
28 | 4. compress() returns Z_BUF_ERROR. | 26 | 4. compress() returns Z_BUF_ERROR. |
29 | 27 | ||
30 | Make sure that before the call of compress, the length of the compressed | 28 | Make sure that before the call of compress, the length of the compressed |
31 | buffer is equal to the total size of the compressed buffer and not | 29 | buffer is equal to the available size of the compressed buffer and not |
32 | zero. For Visual Basic, check that this parameter is passed by reference | 30 | zero. For Visual Basic, check that this parameter is passed by reference |
33 | ("as any"), not by value ("as long"). | 31 | ("as any"), not by value ("as long"). |
34 | 32 | ||
35 | 5. deflate() or inflate() returns Z_BUF_ERROR. | 33 | 5. deflate() or inflate() returns Z_BUF_ERROR. |
36 | 34 | ||
37 | Before making the call, make sure that avail_in and avail_out are not | 35 | Before making the call, make sure that avail_in and avail_out are not zero. |
38 | zero. When setting the parameter flush equal to Z_FINISH, also make sure | 36 | When setting the parameter flush equal to Z_FINISH, also make sure that |
39 | that avail_out is big enough to allow processing all pending input. | 37 | avail_out is big enough to allow processing all pending input. Note that a |
40 | Note that a Z_BUF_ERROR is not fatal--another call to deflate() or | 38 | Z_BUF_ERROR is not fatal--another call to deflate() or inflate() can be |
41 | inflate() can be made with more input or output space. A Z_BUF_ERROR | 39 | made with more input or output space. A Z_BUF_ERROR may in fact be |
42 | may in fact be unavoidable depending on how the functions are used, since | 40 | unavoidable depending on how the functions are used, since it is not |
43 | it is not possible to tell whether or not there is more output pending | 41 | possible to tell whether or not there is more output pending when |
44 | when strm.avail_out returns with zero. | 42 | strm.avail_out returns with zero. See http://zlib.net/zlib_how.html for a |
43 | heavily annotated example. | ||
45 | 44 | ||
46 | 6. Where's the zlib documentation (man pages, etc.)? | 45 | 6. Where's the zlib documentation (man pages, etc.)? |
47 | 46 | ||
48 | It's in zlib.h for the moment, and Francis S. Lin has converted it to a | 47 | It's in zlib.h . Examples of zlib usage are in the files example.c and |
49 | web page zlib.html. Volunteers to transform this to Unix-style man pages, | 48 | minigzip.c, with more in examples/ . |
50 | please contact us (zlib@gzip.org). Examples of zlib usage are in the files | ||
51 | example.c and minigzip.c. | ||
52 | 49 | ||
53 | 7. Why don't you use GNU autoconf or libtool or ...? | 50 | 7. Why don't you use GNU autoconf or libtool or ...? |
54 | 51 | ||
55 | Because we would like to keep zlib as a very small and simple | 52 | Because we would like to keep zlib as a very small and simple package. |
56 | package. zlib is rather portable and doesn't need much configuration. | 53 | zlib is rather portable and doesn't need much configuration. |
57 | 54 | ||
58 | 8. I found a bug in zlib. | 55 | 8. I found a bug in zlib. |
59 | 56 | ||
60 | Most of the time, such problems are due to an incorrect usage of | 57 | Most of the time, such problems are due to an incorrect usage of zlib. |
61 | zlib. Please try to reproduce the problem with a small program and send | 58 | Please try to reproduce the problem with a small program and send the |
62 | the corresponding source to us at zlib@gzip.org . Do not send | 59 | corresponding source to us at zlib@gzip.org . Do not send multi-megabyte |
63 | multi-megabyte data files without prior agreement. | 60 | data files without prior agreement. |
64 | 61 | ||
65 | 9. Why do I get "undefined reference to gzputc"? | 62 | 9. Why do I get "undefined reference to gzputc"? |
66 | 63 | ||
@@ -77,12 +74,12 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html | |||
77 | 74 | ||
78 | 11. Can zlib handle .zip archives? | 75 | 11. Can zlib handle .zip archives? |
79 | 76 | ||
80 | Not by itself, no. See the directory contrib/minizip in the zlib | 77 | Not by itself, no. See the directory contrib/minizip in the zlib |
81 | distribution. | 78 | distribution. |
82 | 79 | ||
83 | 12. Can zlib handle .Z files? | 80 | 12. Can zlib handle .Z files? |
84 | 81 | ||
85 | No, sorry. You have to spawn an uncompress or gunzip subprocess, or adapt | 82 | No, sorry. You have to spawn an uncompress or gunzip subprocess, or adapt |
86 | the code of uncompress on your own. | 83 | the code of uncompress on your own. |
87 | 84 | ||
88 | 13. How can I make a Unix shared library? | 85 | 13. How can I make a Unix shared library? |
@@ -99,8 +96,10 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html | |||
99 | 96 | ||
100 | However, many flavors of Unix come with a shared zlib already installed. | 97 | However, many flavors of Unix come with a shared zlib already installed. |
101 | Before going to the trouble of compiling a shared version of zlib and | 98 | Before going to the trouble of compiling a shared version of zlib and |
102 | trying to install it, you may want to check if it's already there! If you | 99 | trying to install it, you may want to check if it's already there! If you |
103 | can #include <zlib.h>, it's there. The -lz option will probably link to it. | 100 | can #include <zlib.h>, it's there. The -lz option will probably link to |
101 | it. You can check the version at the top of zlib.h or with the | ||
102 | ZLIB_VERSION symbol defined in zlib.h . | ||
104 | 103 | ||
105 | 15. I have a question about OttoPDF. | 104 | 15. I have a question about OttoPDF. |
106 | 105 | ||
@@ -121,39 +120,39 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html | |||
121 | symbol __register_frame_info: referenced symbol not found | 120 | symbol __register_frame_info: referenced symbol not found |
122 | 121 | ||
123 | The symbol __register_frame_info is not part of zlib, it is generated by | 122 | The symbol __register_frame_info is not part of zlib, it is generated by |
124 | the C compiler (cc or gcc). You must recompile applications using zlib | 123 | the C compiler (cc or gcc). You must recompile applications using zlib |
125 | which have this problem. This problem is specific to Solaris. See | 124 | which have this problem. This problem is specific to Solaris. See |
126 | http://www.sunfreeware.com for Solaris versions of zlib and applications | 125 | http://www.sunfreeware.com for Solaris versions of zlib and applications |
127 | using zlib. | 126 | using zlib. |
128 | 127 | ||
129 | 18. Why does gzip give an error on a file I make with compress/deflate? | 128 | 18. Why does gzip give an error on a file I make with compress/deflate? |
130 | 129 | ||
131 | The compress and deflate functions produce data in the zlib format, which | 130 | The compress and deflate functions produce data in the zlib format, which |
132 | is different and incompatible with the gzip format. The gz* functions in | 131 | is different and incompatible with the gzip format. The gz* functions in |
133 | zlib on the other hand use the gzip format. Both the zlib and gzip | 132 | zlib on the other hand use the gzip format. Both the zlib and gzip formats |
134 | formats use the same compressed data format internally, but have different | 133 | use the same compressed data format internally, but have different headers |
135 | headers and trailers around the compressed data. | 134 | and trailers around the compressed data. |
136 | 135 | ||
137 | 19. Ok, so why are there two different formats? | 136 | 19. Ok, so why are there two different formats? |
138 | 137 | ||
139 | The gzip format was designed to retain the directory information about | 138 | The gzip format was designed to retain the directory information about a |
140 | a single file, such as the name and last modification date. The zlib | 139 | single file, such as the name and last modification date. The zlib format |
141 | format on the other hand was designed for in-memory and communication | 140 | on the other hand was designed for in-memory and communication channel |
142 | channel applications, and has a much more compact header and trailer and | 141 | applications, and has a much more compact header and trailer and uses a |
143 | uses a faster integrity check than gzip. | 142 | faster integrity check than gzip. |
144 | 143 | ||
145 | 20. Well that's nice, but how do I make a gzip file in memory? | 144 | 20. Well that's nice, but how do I make a gzip file in memory? |
146 | 145 | ||
147 | You can request that deflate write the gzip format instead of the zlib | 146 | You can request that deflate write the gzip format instead of the zlib |
148 | format using deflateInit2(). You can also request that inflate decode | 147 | format using deflateInit2(). You can also request that inflate decode the |
149 | the gzip format using inflateInit2(). Read zlib.h for more details. | 148 | gzip format using inflateInit2(). Read zlib.h for more details. |
150 | 149 | ||
151 | 21. Is zlib thread-safe? | 150 | 21. Is zlib thread-safe? |
152 | 151 | ||
153 | Yes. However any library routines that zlib uses and any application- | 152 | Yes. However any library routines that zlib uses and any application- |
154 | provided memory allocation routines must also be thread-safe. zlib's gz* | 153 | provided memory allocation routines must also be thread-safe. zlib's gz* |
155 | functions use stdio library routines, and most of zlib's functions use the | 154 | functions use stdio library routines, and most of zlib's functions use the |
156 | library memory allocation routines by default. zlib's Init functions allow | 155 | library memory allocation routines by default. zlib's Init functions allow |
157 | for the application to provide custom memory allocation routines. | 156 | for the application to provide custom memory allocation routines. |
158 | 157 | ||
159 | Of course, you should only operate on any given zlib or gzip stream from a | 158 | Of course, you should only operate on any given zlib or gzip stream from a |
@@ -161,27 +160,27 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html | |||
161 | 160 | ||
162 | 22. Can I use zlib in my commercial application? | 161 | 22. Can I use zlib in my commercial application? |
163 | 162 | ||
164 | Yes. Please read the license in zlib.h. | 163 | Yes. Please read the license in zlib.h. |
165 | 164 | ||
166 | 23. Is zlib under the GNU license? | 165 | 23. Is zlib under the GNU license? |
167 | 166 | ||
168 | No. Please read the license in zlib.h. | 167 | No. Please read the license in zlib.h. |
169 | 168 | ||
170 | 24. The license says that altered source versions must be "plainly marked". So | 169 | 24. The license says that altered source versions must be "plainly marked". So |
171 | what exactly do I need to do to meet that requirement? | 170 | what exactly do I need to do to meet that requirement? |
172 | 171 | ||
173 | You need to change the ZLIB_VERSION and ZLIB_VERNUM #defines in zlib.h. In | 172 | You need to change the ZLIB_VERSION and ZLIB_VERNUM #defines in zlib.h. In |
174 | particular, the final version number needs to be changed to "f", and an | 173 | particular, the final version number needs to be changed to "f", and an |
175 | identification string should be appended to ZLIB_VERSION. Version numbers | 174 | identification string should be appended to ZLIB_VERSION. Version numbers |
176 | x.x.x.f are reserved for modifications to zlib by others than the zlib | 175 | x.x.x.f are reserved for modifications to zlib by others than the zlib |
177 | maintainers. For example, if the version of the base zlib you are altering | 176 | maintainers. For example, if the version of the base zlib you are altering |
178 | is "1.2.3.4", then in zlib.h you should change ZLIB_VERNUM to 0x123f, and | 177 | is "1.2.3.4", then in zlib.h you should change ZLIB_VERNUM to 0x123f, and |
179 | ZLIB_VERSION to something like "1.2.3.f-zachary-mods-v3". You can also | 178 | ZLIB_VERSION to something like "1.2.3.f-zachary-mods-v3". You can also |
180 | update the version strings in deflate.c and inftrees.c. | 179 | update the version strings in deflate.c and inftrees.c. |
181 | 180 | ||
182 | For altered source distributions, you should also note the origin and | 181 | For altered source distributions, you should also note the origin and |
183 | nature of the changes in zlib.h, as well as in ChangeLog and README, along | 182 | nature of the changes in zlib.h, as well as in ChangeLog and README, along |
184 | with the dates of the alterations. The origin should include at least your | 183 | with the dates of the alterations. The origin should include at least your |
185 | name (or your company's name), and an email address to contact for help or | 184 | name (or your company's name), and an email address to contact for help or |
186 | issues with the library. | 185 | issues with the library. |
187 | 186 | ||
@@ -197,111 +196,112 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html | |||
197 | 196 | ||
198 | 26. Will zlib work on a 64-bit machine? | 197 | 26. Will zlib work on a 64-bit machine? |
199 | 198 | ||
200 | It should. It has been tested on 64-bit machines, and has no dependence | 199 | Yes. It has been tested on 64-bit machines, and has no dependence on any |
201 | on any data types being limited to 32-bits in length. If you have any | 200 | data types being limited to 32-bits in length. If you have any |
202 | difficulties, please provide a complete problem report to zlib@gzip.org | 201 | difficulties, please provide a complete problem report to zlib@gzip.org |
203 | 202 | ||
204 | 27. Will zlib decompress data from the PKWare Data Compression Library? | 203 | 27. Will zlib decompress data from the PKWare Data Compression Library? |
205 | 204 | ||
206 | No. The PKWare DCL uses a completely different compressed data format | 205 | No. The PKWare DCL uses a completely different compressed data format than |
207 | than does PKZIP and zlib. However, you can look in zlib's contrib/blast | 206 | does PKZIP and zlib. However, you can look in zlib's contrib/blast |
208 | directory for a possible solution to your problem. | 207 | directory for a possible solution to your problem. |
209 | 208 | ||
210 | 28. Can I access data randomly in a compressed stream? | 209 | 28. Can I access data randomly in a compressed stream? |
211 | 210 | ||
212 | No, not without some preparation. If when compressing you periodically | 211 | No, not without some preparation. If when compressing you periodically use |
213 | use Z_FULL_FLUSH, carefully write all the pending data at those points, | 212 | Z_FULL_FLUSH, carefully write all the pending data at those points, and |
214 | and keep an index of those locations, then you can start decompression | 213 | keep an index of those locations, then you can start decompression at those |
215 | at those points. You have to be careful to not use Z_FULL_FLUSH too | 214 | points. You have to be careful to not use Z_FULL_FLUSH too often, since it |
216 | often, since it can significantly degrade compression. | 215 | can significantly degrade compression. Alternatively, you can scan a |
216 | deflate stream once to generate an index, and then use that index for | ||
217 | random access. See examples/zran.c . | ||
217 | 218 | ||
218 | 29. Does zlib work on MVS, OS/390, CICS, etc.? | 219 | 29. Does zlib work on MVS, OS/390, CICS, etc.? |
219 | 220 | ||
220 | Yes, there are working ports of zlib 1.1.4 to MVS which you can find | 221 | It has in the past, but we have not heard of any recent evidence. There |
221 | here: | 222 | were working ports of zlib 1.1.4 to MVS, but those links no longer work. |
223 | If you know of recent, successful applications of zlib on these operating | ||
224 | systems, please let us know. Thanks. | ||
222 | 225 | ||
223 | http://www.homerow.net/asm/zlib390.htm | 226 | 30. Is there some simpler, easier to read version of inflate I can look at to |
224 | http://www.homerow.net/asm/zlibLE.htm | 227 | understand the deflate format? |
225 | 228 | ||
226 | If these are updated to more recent versions of zlib, please let us | 229 | First off, you should read RFC 1951. Second, yes. Look in zlib's |
227 | know. Thanks. | ||
228 | |||
229 | 30. Is there some simpler, easier to read version of inflate I can look at | ||
230 | to understand the deflate format? | ||
231 | |||
232 | First off, you should read RFC 1951. Second, yes. Look in zlib's | ||
233 | contrib/puff directory. | 230 | contrib/puff directory. |
234 | 231 | ||
235 | 31. Does zlib infringe on any patents? | 232 | 31. Does zlib infringe on any patents? |
236 | 233 | ||
237 | As far as we know, no. In fact, that was originally the whole point behind | 234 | As far as we know, no. In fact, that was originally the whole point behind |
238 | zlib. Look here for some more information: | 235 | zlib. Look here for some more information: |
239 | 236 | ||
240 | http://www.gzip.org/#faq11 | 237 | http://www.gzip.org/#faq11 |
241 | 238 | ||
242 | 32. Can zlib work with greater than 4 GB of data? | 239 | 32. Can zlib work with greater than 4 GB of data? |
243 | 240 | ||
244 | Yes. inflate() and deflate() will process any amount of data correctly. | 241 | Yes. inflate() and deflate() will process any amount of data correctly. |
245 | Each call of inflate() or deflate() is limited to input and output chunks | 242 | Each call of inflate() or deflate() is limited to input and output chunks |
246 | of the maximum value that can be stored in the compiler's "unsigned int" | 243 | of the maximum value that can be stored in the compiler's "unsigned int" |
247 | type, but there is no limit to the number of chunks. Note however that the | 244 | type, but there is no limit to the number of chunks. Note however that the |
248 | strm.total_in and strm_total_out counters may be limited to 4 GB. These | 245 | strm.total_in and strm_total_out counters may be limited to 4 GB. These |
249 | counters are provided as a convenience and are not used internally by | 246 | counters are provided as a convenience and are not used internally by |
250 | inflate() or deflate(). The application can easily set up its own counters | 247 | inflate() or deflate(). The application can easily set up its own counters |
251 | updated after each call of inflate() or deflate() to count beyond 4 GB. | 248 | updated after each call of inflate() or deflate() to count beyond 4 GB. |
252 | compress() and uncompress() may be limited to 4 GB, since they operate in a | 249 | compress() and uncompress() may be limited to 4 GB, since they operate in a |
253 | single call. gzseek() and gztell() may be limited to 4 GB depending on how | 250 | single call. gzseek() and gztell() may be limited to 4 GB depending on how |
254 | zlib is compiled. See the zlibCompileFlags() function in zlib.h. | 251 | zlib is compiled. See the zlibCompileFlags() function in zlib.h. |
255 | 252 | ||
256 | The word "may" appears several times above since there is a 4 GB limit | 253 | The word "may" appears several times above since there is a 4 GB limit only |
257 | only if the compiler's "long" type is 32 bits. If the compiler's "long" | 254 | if the compiler's "long" type is 32 bits. If the compiler's "long" type is |
258 | type is 64 bits, then the limit is 16 exabytes. | 255 | 64 bits, then the limit is 16 exabytes. |
259 | 256 | ||
260 | 33. Does zlib have any security vulnerabilities? | 257 | 33. Does zlib have any security vulnerabilities? |
261 | 258 | ||
262 | The only one that we are aware of is potentially in gzprintf(). If zlib | 259 | The only one that we are aware of is potentially in gzprintf(). If zlib is |
263 | is compiled to use sprintf() or vsprintf(), then there is no protection | 260 | compiled to use sprintf() or vsprintf(), then there is no protection |
264 | against a buffer overflow of a 4K string space, other than the caller of | 261 | against a buffer overflow of an 8K string space (or other value as set by |
265 | gzprintf() assuring that the output will not exceed 4K. On the other | 262 | gzbuffer()), other than the caller of gzprintf() assuring that the output |
266 | hand, if zlib is compiled to use snprintf() or vsnprintf(), which should | 263 | will not exceed 8K. On the other hand, if zlib is compiled to use |
267 | normally be the case, then there is no vulnerability. The ./configure | 264 | snprintf() or vsnprintf(), which should normally be the case, then there is |
268 | script will display warnings if an insecure variation of sprintf() will | 265 | no vulnerability. The ./configure script will display warnings if an |
269 | be used by gzprintf(). Also the zlibCompileFlags() function will return | 266 | insecure variation of sprintf() will be used by gzprintf(). Also the |
270 | information on what variant of sprintf() is used by gzprintf(). | 267 | zlibCompileFlags() function will return information on what variant of |
268 | sprintf() is used by gzprintf(). | ||
271 | 269 | ||
272 | If you don't have snprintf() or vsnprintf() and would like one, you can | 270 | If you don't have snprintf() or vsnprintf() and would like one, you can |
273 | find a portable implementation here: | 271 | find a portable implementation here: |
274 | 272 | ||
275 | http://www.ijs.si/software/snprintf/ | 273 | http://www.ijs.si/software/snprintf/ |
276 | 274 | ||
277 | Note that you should be using the most recent version of zlib. Versions | 275 | Note that you should be using the most recent version of zlib. Versions |
278 | 1.1.3 and before were subject to a double-free vulnerability, and version | 276 | 1.1.3 and before were subject to a double-free vulnerability, and versions |
279 | 1.2.1 was subject to an access exception when decompressing invalid | 277 | 1.2.1 and 1.2.2 were subject to an access exception when decompressing |
280 | compressed data. | 278 | invalid compressed data. |
281 | 279 | ||
282 | 34. Is there a Java version of zlib? | 280 | 34. Is there a Java version of zlib? |
283 | 281 | ||
284 | Probably what you want is to use zlib in Java. zlib is already included | 282 | Probably what you want is to use zlib in Java. zlib is already included |
285 | as part of the Java SDK in the java.util.zip package. If you really want | 283 | as part of the Java SDK in the java.util.zip package. If you really want |
286 | a version of zlib written in the Java language, look on the zlib home | 284 | a version of zlib written in the Java language, look on the zlib home |
287 | page for links: http://www.zlib.org/ | 285 | page for links: http://zlib.net/ . |
288 | 286 | ||
289 | 35. I get this or that compiler or source-code scanner warning when I crank it | 287 | 35. I get this or that compiler or source-code scanner warning when I crank it |
290 | up to maximally-pedantic. Can't you guys write proper code? | 288 | up to maximally-pedantic. Can't you guys write proper code? |
291 | 289 | ||
292 | Many years ago, we gave up attempting to avoid warnings on every compiler | 290 | Many years ago, we gave up attempting to avoid warnings on every compiler |
293 | in the universe. It just got to be a waste of time, and some compilers | 291 | in the universe. It just got to be a waste of time, and some compilers |
294 | were downright silly. So now, we simply make sure that the code always | 292 | were downright silly as well as contradicted each other. So now, we simply |
295 | works. | 293 | make sure that the code always works. |
296 | 294 | ||
297 | 36. Valgrind (or some similar memory access checker) says that deflate is | 295 | 36. Valgrind (or some similar memory access checker) says that deflate is |
298 | performing a conditional jump that depends on an uninitialized value. | 296 | performing a conditional jump that depends on an uninitialized value. |
299 | Isn't that a bug? | 297 | Isn't that a bug? |
300 | 298 | ||
301 | No. That is intentional for performance reasons, and the output of | 299 | No. That is intentional for performance reasons, and the output of deflate |
302 | deflate is not affected. This only started showing up recently since | 300 | is not affected. This only started showing up recently since zlib 1.2.x |
303 | zlib 1.2.x uses malloc() by default for allocations, whereas earlier | 301 | uses malloc() by default for allocations, whereas earlier versions used |
304 | versions used calloc(), which zeros out the allocated memory. | 302 | calloc(), which zeros out the allocated memory. Even though the code was |
303 | correct, versions 1.2.4 and later was changed to not stimulate these | ||
304 | checkers. | ||
305 | 305 | ||
306 | 37. Will zlib read the (insert any ancient or arcane format here) compressed | 306 | 37. Will zlib read the (insert any ancient or arcane format here) compressed |
307 | data format? | 307 | data format? |
@@ -311,20 +311,21 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html | |||
311 | 311 | ||
312 | 38. How can I encrypt/decrypt zip files with zlib? | 312 | 38. How can I encrypt/decrypt zip files with zlib? |
313 | 313 | ||
314 | zlib doesn't support encryption. The original PKZIP encryption is very weak | 314 | zlib doesn't support encryption. The original PKZIP encryption is very |
315 | and can be broken with freely available programs. To get strong encryption, | 315 | weak and can be broken with freely available programs. To get strong |
316 | use GnuPG, http://www.gnupg.org/ , which already includes zlib compression. | 316 | encryption, use GnuPG, http://www.gnupg.org/ , which already includes zlib |
317 | For PKZIP compatible "encryption", look at http://www.info-zip.org/ | 317 | compression. For PKZIP compatible "encryption", look at |
318 | http://www.info-zip.org/ | ||
318 | 319 | ||
319 | 39. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings? | 320 | 39. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings? |
320 | 321 | ||
321 | "gzip" is the gzip format, and "deflate" is the zlib format. They should | 322 | "gzip" is the gzip format, and "deflate" is the zlib format. They should |
322 | probably have called the second one "zlib" instead to avoid confusion | 323 | probably have called the second one "zlib" instead to avoid confusion with |
323 | with the raw deflate compressed data format. While the HTTP 1.1 RFC 2616 | 324 | the raw deflate compressed data format. While the HTTP 1.1 RFC 2616 |
324 | correctly points to the zlib specification in RFC 1950 for the "deflate" | 325 | correctly points to the zlib specification in RFC 1950 for the "deflate" |
325 | transfer encoding, there have been reports of servers and browsers that | 326 | transfer encoding, there have been reports of servers and browsers that |
326 | incorrectly produce or expect raw deflate data per the deflate | 327 | incorrectly produce or expect raw deflate data per the deflate |
327 | specficiation in RFC 1951, most notably Microsoft. So even though the | 328 | specficiation in RFC 1951, most notably Microsoft. So even though the |
328 | "deflate" transfer encoding using the zlib format would be the more | 329 | "deflate" transfer encoding using the zlib format would be the more |
329 | efficient approach (and in fact exactly what the zlib format was designed | 330 | efficient approach (and in fact exactly what the zlib format was designed |
330 | for), using the "gzip" transfer encoding is probably more reliable due to | 331 | for), using the "gzip" transfer encoding is probably more reliable due to |
@@ -334,28 +335,32 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html | |||
334 | 335 | ||
335 | 40. Does zlib support the new "Deflate64" format introduced by PKWare? | 336 | 40. Does zlib support the new "Deflate64" format introduced by PKWare? |
336 | 337 | ||
337 | No. PKWare has apparently decided to keep that format proprietary, since | 338 | No. PKWare has apparently decided to keep that format proprietary, since |
338 | they have not documented it as they have previous compression formats. | 339 | they have not documented it as they have previous compression formats. In |
339 | In any case, the compression improvements are so modest compared to other | 340 | any case, the compression improvements are so modest compared to other more |
340 | more modern approaches, that it's not worth the effort to implement. | 341 | modern approaches, that it's not worth the effort to implement. |
341 | 342 | ||
342 | 41. I'm having a problem with the zip functions in zlib, can you help? | 343 | 41. I'm having a problem with the zip functions in zlib, can you help? |
343 | 344 | ||
344 | There are no zip functions in zlib. You are probably using minizip by | 345 | There are no zip functions in zlib. You are probably using minizip by |
345 | Giles Vollant, which is found in the contrib directory of zlib. It is not | 346 | Giles Vollant, which is found in the contrib directory of zlib. It is not |
346 | part of zlib. In fact none of the stuff in contrib is part of zlib. The | 347 | part of zlib. In fact none of the stuff in contrib is part of zlib. The |
347 | files in there are not supported by the zlib authors. You need to contact | 348 | files in there are not supported by the zlib authors. You need to contact |
348 | the authors of the contribution for help. | 349 | the authors of the respective contribution for help. |
349 | 350 | ||
350 | 42. The match.asm code in contrib is under the GNU General Public License. | 351 | 42. The match.asm code in contrib is under the GNU General Public License. |
351 | Since it's part of zlib, doesn't that mean that all of zlib falls under the | 352 | Since it's part of zlib, doesn't that mean that all of zlib falls under the |
352 | GNU GPL? | 353 | GNU GPL? |
353 | 354 | ||
354 | No. The files in contrib are not part of zlib. They were contributed by | 355 | No. The files in contrib are not part of zlib. They were contributed by |
355 | other authors and are provided as a convenience to the user within the zlib | 356 | other authors and are provided as a convenience to the user within the zlib |
356 | distribution. Each of the items in contrib have their own license. | 357 | distribution. Each of the items in contrib have their own license. |
358 | |||
359 | 43. Is zlib subject to export controls? What is its ECCN? | ||
360 | |||
361 | zlib is not subject to export controls, and so is classified as EAR99. | ||
357 | 362 | ||
358 | 43. Can you please sign these lengthy legal documents and fax them back to us | 363 | 44. Can you please sign these lengthy legal documents and fax them back to us |
359 | so that we can use your software in our product? | 364 | so that we can use your software in our product? |
360 | 365 | ||
361 | No. Go away. Shoo. | 366 | No. Go away. Shoo. |
@@ -2,33 +2,33 @@ CMakeLists.txt cmake build file | |||
2 | ChangeLog history of changes | 2 | ChangeLog history of changes |
3 | FAQ Frequently Asked Questions about zlib | 3 | FAQ Frequently Asked Questions about zlib |
4 | INDEX this file | 4 | INDEX this file |
5 | Makefile dummy Makefile that tells you to ./configure | ||
5 | Makefile.in template for Unix Makefile | 6 | Makefile.in template for Unix Makefile |
6 | README guess what | 7 | README guess what |
7 | configure configure script for Unix | 8 | configure configure script for Unix |
8 | make_vms.com makefile for VMS | 9 | make_vms.com makefile for VMS |
9 | treebuild.xml XML description of source file dependencies | 10 | treebuild.xml XML description of source file dependencies |
11 | zconf.h.cmakein zconf.h template for cmake | ||
10 | zconf.h.in zconf.h template for configure | 12 | zconf.h.in zconf.h template for configure |
11 | zlib.3 Man page for zlib | 13 | zlib.3 Man page for zlib |
14 | zlib.3.pdf Man page in PDF format | ||
12 | zlib.map Linux symbol information | 15 | zlib.map Linux symbol information |
13 | zlib.pc.in Template for pkg-config descriptor | 16 | zlib.pc.in Template for pkg-config descriptor |
14 | zlib2ansi perl script to convert source files for C++ compilation | 17 | zlib2ansi perl script to convert source files for C++ compilation |
15 | 18 | ||
16 | amiga/ makefiles for Amiga SAS C | 19 | amiga/ makefiles for Amiga SAS C |
17 | as400/ makefiles for IBM AS/400 | ||
18 | doc/ documentation for formats and algorithms | 20 | doc/ documentation for formats and algorithms |
19 | msdos/ makefiles for MSDOS | 21 | msdos/ makefiles for MSDOS |
20 | nintendods/ makefile for Nintendo DS | 22 | nintendods/ makefile for Nintendo DS |
21 | objs/ destination for object files | ||
22 | old/ makefiles for various architectures and zlib documentation | 23 | old/ makefiles for various architectures and zlib documentation |
23 | files that have not yet been updated for zlib 1.2.x | 24 | files that have not yet been updated for zlib 1.2.x |
24 | pics/ destination for position-independent-code object files | ||
25 | projects/ projects for various Integrated Development Environments | 25 | projects/ projects for various Integrated Development Environments |
26 | qnx/ makefiles for QNX | 26 | qnx/ makefiles for QNX |
27 | watcom/ makefiles for OpenWatcom | 27 | watcom/ makefiles for OpenWatcom |
28 | win32/ makefiles for Windows | 28 | win32/ makefiles for Windows |
29 | 29 | ||
30 | zlib public header files (required for library use): | 30 | zlib public header files (required for library use): |
31 | zconf.h (made by configure) | 31 | zconf.h |
32 | zlib.h | 32 | zlib.h |
33 | 33 | ||
34 | private source files used to build the zlib library: | 34 | private source files used to build the zlib library: |
@@ -1,2 +1,5 @@ | |||
1 | all: | 1 | all: |
2 | -@echo "Use ./configure first. Thank you." | 2 | -@echo "Use ./configure first. Thank you." |
3 | |||
4 | distclean: | ||
5 | make -f Makefile.in distclean | ||
diff --git a/Makefile.in b/Makefile.in index c1cbeb5..efaec6f 100644 --- a/Makefile.in +++ b/Makefile.in | |||
@@ -32,7 +32,7 @@ CPP=$(CC) -E | |||
32 | 32 | ||
33 | STATICLIB=libz.a | 33 | STATICLIB=libz.a |
34 | SHAREDLIB=libz.so | 34 | SHAREDLIB=libz.so |
35 | SHAREDLIBV=libz.so.1.2.3.9 | 35 | SHAREDLIBV=libz.so.1.2.4 |
36 | SHAREDLIBM=libz.so.1 | 36 | SHAREDLIBM=libz.so.1 |
37 | LIBS=$(STATICLIB) $(SHAREDLIB) $(SHAREDLIBV) | 37 | LIBS=$(STATICLIB) $(SHAREDLIB) $(SHAREDLIBV) |
38 | 38 | ||
@@ -193,6 +193,18 @@ uninstall: | |||
193 | cd $(DESTDIR)$(man3dir); rm -f zlib.3 | 193 | cd $(DESTDIR)$(man3dir); rm -f zlib.3 |
194 | cd $(DESTDIR)$(pkgconfigdir); rm -f zlib.pc | 194 | cd $(DESTDIR)$(pkgconfigdir); rm -f zlib.pc |
195 | 195 | ||
196 | docs: zlib.3.pdf | ||
197 | |||
198 | zlib.3.pdf: zlib.3 | ||
199 | groff -mandoc -f H -T ps zlib.3 | ps2pdf - zlib.3.pdf | ||
200 | |||
201 | zconf.h.in: zconf.h.cmakein | ||
202 | sed "/^#cmakedefine/D" < zconf.h.cmakein > zconf.h.in | ||
203 | touch -r zconf.h.cmakein zconf.h.in | ||
204 | |||
205 | zconf: zconf.h.in | ||
206 | cp -p zconf.h.in zconf.h | ||
207 | |||
196 | mostlyclean: clean | 208 | mostlyclean: clean |
197 | clean: | 209 | clean: |
198 | rm -f *.o *.lo *~ \ | 210 | rm -f *.o *.lo *~ \ |
@@ -203,10 +215,11 @@ clean: | |||
203 | rm -rf objs | 215 | rm -rf objs |
204 | 216 | ||
205 | maintainer-clean: distclean | 217 | maintainer-clean: distclean |
206 | distclean: clean | 218 | distclean: clean zconf docs |
207 | rm -f Makefile zconf.h zlib.pc | 219 | rm -f Makefile zlib.pc |
208 | -@rm -f .DS_Store | 220 | -@rm -f .DS_Store |
209 | -@printf 'all:\n\t-@echo "Use ./configure first. Thank you."\n' > Makefile | 221 | -@printf 'all:\n\t-@echo "Use ./configure first. Thank you."\n' > Makefile |
222 | -@printf '\ndistclean:\n\tmake -f Makefile.in distclean\n' >> Makefile | ||
210 | -@touch -r Makefile.in Makefile | 223 | -@touch -r Makefile.in Makefile |
211 | 224 | ||
212 | tags: | 225 | tags: |
@@ -1,56 +1,51 @@ | |||
1 | ZLIB DATA COMPRESSION LIBRARY | 1 | ZLIB DATA COMPRESSION LIBRARY |
2 | 2 | ||
3 | zlib 1.2.3.9 is a general purpose data compression library. All the code is | 3 | zlib 1.2.4 is a general purpose data compression library. All the code is |
4 | thread safe. The data format used by the zlib library is described by RFCs | 4 | thread safe. The data format used by the zlib library is described by RFCs |
5 | (Request for Comments) 1950 to 1952 in the files | 5 | (Request for Comments) 1950 to 1952 in the files |
6 | http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) | 6 | http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) |
7 | and rfc1952.txt (gzip format). These documents are also available in other | 7 | and rfc1952.txt (gzip format). |
8 | formats from ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html | ||
9 | 8 | ||
10 | All functions of the compression library are documented in the file zlib.h | 9 | All functions of the compression library are documented in the file zlib.h |
11 | (volunteer to write man pages welcome, contact zlib@gzip.org). A usage example | 10 | (volunteer to write man pages welcome, contact zlib@gzip.org). A usage example |
12 | of the library is given in the file example.c which also tests that the library | 11 | of the library is given in the file example.c which also tests that the library |
13 | is working correctly. Another example is given in the file minigzip.c. The | 12 | is working correctly. Another example is given in the file minigzip.c. The |
14 | compression library itself is composed of all source files except example.c and | 13 | compression library itself is composed of all source files except example.c and |
15 | minigzip.c. | 14 | minigzip.c. |
16 | 15 | ||
17 | To compile all files and run the test program, follow the instructions given at | 16 | To compile all files and run the test program, follow the instructions given at |
18 | the top of Makefile. In short "make test; make install" should work for most | 17 | the top of Makefile.in. In short "./configure; make test", and if that goes |
19 | machines. For Unix: "./configure; make test; make install". For MSDOS, use one | 18 | well, "make install" should work for most flavors of Unix. For Windows, use one |
20 | of the special makefiles such as Makefile.msc. For VMS, use make_vms.com. | 19 | of the special makefiles in win32/ or projects/ . For VMS, use make_vms.com. |
21 | 20 | ||
22 | Questions about zlib should be sent to <zlib@gzip.org>, or to Gilles Vollant | 21 | Questions about zlib should be sent to <zlib@gzip.org>, or to Gilles Vollant |
23 | <info@winimage.com> for the Windows DLL version. The zlib home page is | 22 | <info@winimage.com> for the Windows DLL version. The zlib home page is |
24 | http://www.zlib.org or http://www.gzip.org/zlib/ Before reporting a problem, | 23 | http://zlib.net/ . Before reporting a problem, please check this site to |
25 | please check this site to verify that you have the latest version of zlib; | 24 | verify that you have the latest version of zlib; otherwise get the latest |
26 | otherwise get the latest version and check whether the problem still exists or | 25 | version and check whether the problem still exists or not. |
27 | not. | ||
28 | 26 | ||
29 | PLEASE read the zlib FAQ http://www.gzip.org/zlib/zlib_faq.html before asking | 27 | PLEASE read the zlib FAQ http://zlib.net/zlib_faq.html before asking for help. |
30 | for help. | ||
31 | 28 | ||
32 | Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997 | 29 | Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997 |
33 | issue of Dr. Dobb's Journal; a copy of the article is available in | 30 | issue of Dr. Dobb's Journal; a copy of the article is available at |
34 | http://dogma.net/markn/articles/zlibtool/zlibtool.htm | 31 | http://marknelson.us/1997/01/01/zlib-engine/ . |
35 | 32 | ||
36 | The changes made in version 1.2.3.9 are documented in the file ChangeLog. | 33 | The changes made in version 1.2.4 are documented in the file ChangeLog. |
37 | 34 | ||
38 | Unsupported third party contributions are provided in directory "contrib". | 35 | Unsupported third party contributions are provided in directory contrib/ . |
39 | 36 | ||
40 | A Java implementation of zlib is available in the Java Development Kit | 37 | zlib is available in Java using the java.util.zip package, documented at |
41 | http://java.sun.com/j2se/1.4.2/docs/api/java/util/zip/package-summary.html | 38 | http://java.sun.com/developer/technicalArticles/Programming/compression/ . |
42 | See the zlib home page http://www.zlib.org for details. | ||
43 | 39 | ||
44 | A Perl interface to zlib written by Paul Marquess <pmqs@cpan.org> is in the | 40 | A Perl interface to zlib written by Paul Marquess <pmqs@cpan.org> is available |
45 | CPAN (Comprehensive Perl Archive Network) sites | 41 | at CPAN (Comprehensive Perl Archive Network) sites, including |
46 | http://www.cpan.org/modules/by-module/Compress/ | 42 | http://search.cpan.org/~pmqs/IO-Compress-Zlib/ . |
47 | 43 | ||
48 | A Python interface to zlib written by A.M. Kuchling <amk@amk.ca> is | 44 | A Python interface to zlib written by A.M. Kuchling <amk@amk.ca> is |
49 | available in Python 1.5 and later versions, see | 45 | available in Python 1.5 and later versions, see |
50 | http://www.python.org/doc/lib/module-zlib.html | 46 | http://www.python.org/doc/lib/module-zlib.html . |
51 | 47 | ||
52 | A zlib binding for TCL written by Andreas Kupries <a.kupries@westend.com> is | 48 | zlib is built into tcl: http://wiki.tcl.tk/4610 . |
53 | availlable at http://www.oche.de/~akupries/soft/trf/trf_zip.html | ||
54 | 49 | ||
55 | An experimental package to read and write files in .zip format, written on top | 50 | An experimental package to read and write files in .zip format, written on top |
56 | of zlib by Gilles Vollant <info@winimage.com>, is available in the | 51 | of zlib by Gilles Vollant <info@winimage.com>, is available in the |
@@ -74,25 +69,21 @@ Notes for some targets: | |||
74 | - zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with | 69 | - zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with |
75 | other compilers. Use "make test" to check your compiler. | 70 | other compilers. Use "make test" to check your compiler. |
76 | 71 | ||
77 | - gzdopen is not supported on RISCOS, BEOS and by some Mac compilers. | 72 | - gzdopen is not supported on RISCOS or BEOS. |
78 | 73 | ||
79 | - For PalmOs, see http://palmzlib.sourceforge.net/ | 74 | - For PalmOs, see http://palmzlib.sourceforge.net/ |
80 | 75 | ||
81 | - When building a shared, i.e. dynamic library on Mac OS X, the library must be | ||
82 | installed before testing (do "make install" before "make test"), since the | ||
83 | library location is specified in the library. | ||
84 | |||
85 | 76 | ||
86 | Acknowledgments: | 77 | Acknowledgments: |
87 | 78 | ||
88 | The deflate format used by zlib was defined by Phil Katz. The deflate | 79 | The deflate format used by zlib was defined by Phil Katz. The deflate and |
89 | and zlib specifications were written by L. Peter Deutsch. Thanks to all the | 80 | zlib specifications were written by L. Peter Deutsch. Thanks to all the |
90 | people who reported problems and suggested various improvements in zlib; | 81 | people who reported problems and suggested various improvements in zlib; they |
91 | they are too numerous to cite here. | 82 | are too numerous to cite here. |
92 | 83 | ||
93 | Copyright notice: | 84 | Copyright notice: |
94 | 85 | ||
95 | (C) 1995-2004 Jean-loup Gailly and Mark Adler | 86 | (C) 1995-2010 Jean-loup Gailly and Mark Adler |
96 | 87 | ||
97 | This software is provided 'as-is', without any express or implied | 88 | This software is provided 'as-is', without any express or implied |
98 | warranty. In no event will the authors be held liable for any damages | 89 | warranty. In no event will the authors be held liable for any damages |
@@ -113,13 +104,11 @@ Copyright notice: | |||
113 | Jean-loup Gailly Mark Adler | 104 | Jean-loup Gailly Mark Adler |
114 | jloup@gzip.org madler@alumni.caltech.edu | 105 | jloup@gzip.org madler@alumni.caltech.edu |
115 | 106 | ||
116 | If you use the zlib library in a product, we would appreciate *not* | 107 | If you use the zlib library in a product, we would appreciate *not* receiving |
117 | receiving lengthy legal documents to sign. The sources are provided | 108 | lengthy legal documents to sign. The sources are provided for free but without |
118 | for free but without warranty of any kind. The library has been | 109 | warranty of any kind. The library has been entirely written by Jean-loup |
119 | entirely written by Jean-loup Gailly and Mark Adler; it does not | 110 | Gailly and Mark Adler; it does not include third-party code. |
120 | include third-party code. | ||
121 | 111 | ||
122 | If you redistribute modified sources, we would appreciate that you include | 112 | If you redistribute modified sources, we would appreciate that you include in |
123 | in the file ChangeLog history information documenting your changes. Please | 113 | the file ChangeLog history information documenting your changes. Please read |
124 | read the FAQ for more information on the distribution of modified source | 114 | the FAQ for more information on the distribution of modified source versions. |
125 | versions. | ||
@@ -16,7 +16,7 @@ | |||
16 | STATICLIB=libz.a | 16 | STATICLIB=libz.a |
17 | LDFLAGS="${LDFLAGS} -L. ${STATICLIB}" | 17 | LDFLAGS="${LDFLAGS} -L. ${STATICLIB}" |
18 | VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h` | 18 | VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h` |
19 | VER3=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h` | 19 | VER3=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < zlib.h` |
20 | VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h` | 20 | VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h` |
21 | VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h` | 21 | VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h` |
22 | AR=${AR-"ar"} | 22 | AR=${AR-"ar"} |
@@ -250,7 +250,7 @@ EOF | |||
250 | fi | 250 | fi |
251 | fi | 251 | fi |
252 | 252 | ||
253 | sed "/^#cmakedefine/D" < zconf.h.in > zconf.h | 253 | cp -p zconf.h.in zconf.h |
254 | 254 | ||
255 | cat > $test.c <<EOF | 255 | cat > $test.c <<EOF |
256 | #include <unistd.h> | 256 | #include <unistd.h> |
diff --git a/contrib/README.contrib b/contrib/README.contrib index 17fc8f6..dd2285d 100644 --- a/contrib/README.contrib +++ b/contrib/README.contrib | |||
@@ -12,7 +12,6 @@ amd64/ by Mikhail Teterin <mi@ALDAN.algebra.com> | |||
12 | asm code for AMD64 | 12 | asm code for AMD64 |
13 | See patch at http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/96393 | 13 | See patch at http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/96393 |
14 | 14 | ||
15 | asm586/ | ||
16 | asm686/ by Brian Raiter <breadbox@muppetlabs.com> | 15 | asm686/ by Brian Raiter <breadbox@muppetlabs.com> |
17 | asm code for Pentium and PPro/PII, using the AT&T (GNU as) syntax | 16 | asm code for Pentium and PPro/PII, using the AT&T (GNU as) syntax |
18 | See http://www.muppetlabs.com/~breadbox/software/assembly.html | 17 | See http://www.muppetlabs.com/~breadbox/software/assembly.html |
@@ -26,6 +25,10 @@ delphi/ by Cosmin Truta <cosmint@cs.ubbcluj.ro> | |||
26 | dotzlib/ by Henrik Ravn <henrik@ravn.com> | 25 | dotzlib/ by Henrik Ravn <henrik@ravn.com> |
27 | Support for Microsoft .Net and Visual C++ .Net | 26 | Support for Microsoft .Net and Visual C++ .Net |
28 | 27 | ||
28 | gcc_gvmat64/by Gilles Vollant <info@winimage.com> | ||
29 | GCC Version of x86 64-bit (AMD64 and Intel EM64t) code for x64 | ||
30 | assembler to replace longest_match() and inflate_fast() | ||
31 | |||
29 | infback9/ by Mark Adler <madler@alumni.caltech.edu> | 32 | infback9/ by Mark Adler <madler@alumni.caltech.edu> |
30 | Unsupported diffs to infback to decode the deflate64 format | 33 | Unsupported diffs to infback to decode the deflate64 format |
31 | 34 | ||
@@ -42,21 +45,19 @@ iostream3/ by Ludwig Schwardt <schwardt@sun.ac.za> | |||
42 | and Kevin Ruland <kevin@rodin.wustl.edu> | 45 | and Kevin Ruland <kevin@rodin.wustl.edu> |
43 | Yet another C++ I/O streams interface | 46 | Yet another C++ I/O streams interface |
44 | 47 | ||
45 | masm686/ by Dan Higdon <hdan@kinesoft.com> | ||
46 | and Chuck Walbourn <chuckw@kinesoft.com> | ||
47 | asm code for Pentium Pro/PII, using the MASM syntax | ||
48 | |||
49 | masmx64/ by Gilles Vollant <info@winimage.com> | 48 | masmx64/ by Gilles Vollant <info@winimage.com> |
50 | x86 64-bit (AMD64 and Intel EM64t) code for x64 assembler to | 49 | x86 64-bit (AMD64 and Intel EM64t) code for x64 assembler to |
51 | replace longest_match() and inflate_fast() | 50 | replace longest_match() and inflate_fast(), also masm x86 |
51 | 64-bits translation of Chris Anderson inflate_fast() | ||
52 | 52 | ||
53 | masmx86/ by Gilles Vollant <info@winimage.com> | 53 | masmx86/ by Gilles Vollant <info@winimage.com> |
54 | x86 asm code to replace longest_match() and inflate_fast(), | 54 | x86 asm code to replace longest_match() and inflate_fast(), |
55 | for Visual C++ and MASM | 55 | for Visual C++ and MASM (32 bits). |
56 | Based on Brian Raiter (asm686) and Chris Anderson (inflate86) | ||
56 | 57 | ||
57 | minizip/ by Gilles Vollant <info@winimage.com> | 58 | minizip/ by Gilles Vollant <info@winimage.com> |
58 | Mini zip and unzip based on zlib | 59 | Mini zip and unzip based on zlib |
59 | Includes Zip64 support by Mathias Svensson <mathias@result42.com> | 60 | Includes Zip64 support by Mathias Svensson <mathias@result42.com> |
60 | See http://www.winimage.com/zLibDll/unzip.html | 61 | See http://www.winimage.com/zLibDll/unzip.html |
61 | 62 | ||
62 | pascal/ by Bob Dellaca <bobdl@xtra.co.nz> et al. | 63 | pascal/ by Bob Dellaca <bobdl@xtra.co.nz> et al. |
diff --git a/contrib/amd64/amd64-match.S b/contrib/amd64/amd64-match.S index b3bf1ac..81d4a1c 100644 --- a/contrib/amd64/amd64-match.S +++ b/contrib/amd64/amd64-match.S | |||
@@ -52,14 +52,73 @@ | |||
52 | #define save_r13 (64-LocalVarsSize)(%rsp) | 52 | #define save_r13 (64-LocalVarsSize)(%rsp) |
53 | #define save_r15 (80-LocalVarsSize)(%rsp) | 53 | #define save_r15 (80-LocalVarsSize)(%rsp) |
54 | 54 | ||
55 | |||
56 | .globl match_init, longest_match | ||
57 | |||
55 | /* | 58 | /* |
56 | * On AMD64 the first argument of a function (in our case -- the pointer to | 59 | * On AMD64 the first argument of a function (in our case -- the pointer to |
57 | * deflate_state structure) is passed in %rdi, hence our offsets below are | 60 | * deflate_state structure) is passed in %rdi, hence our offsets below are |
58 | * all off of that. | 61 | * all off of that. |
59 | */ | 62 | */ |
63 | |||
64 | /* you can check the structure offset by running | ||
65 | |||
66 | #include <stdlib.h> | ||
67 | #include <stdio.h> | ||
68 | #include "deflate.h" | ||
69 | |||
70 | void print_depl() | ||
71 | { | ||
72 | deflate_state ds; | ||
73 | deflate_state *s=&ds; | ||
74 | printf("size pointer=%u\n",(int)sizeof(void*)); | ||
75 | |||
76 | printf("#define dsWSize (%3u)(%%rdi)\n",(int)(((char*)&(s->w_size))-((char*)s))); | ||
77 | printf("#define dsWMask (%3u)(%%rdi)\n",(int)(((char*)&(s->w_mask))-((char*)s))); | ||
78 | printf("#define dsWindow (%3u)(%%rdi)\n",(int)(((char*)&(s->window))-((char*)s))); | ||
79 | printf("#define dsPrev (%3u)(%%rdi)\n",(int)(((char*)&(s->prev))-((char*)s))); | ||
80 | printf("#define dsMatchLen (%3u)(%%rdi)\n",(int)(((char*)&(s->match_length))-((char*)s))); | ||
81 | printf("#define dsPrevMatch (%3u)(%%rdi)\n",(int)(((char*)&(s->prev_match))-((char*)s))); | ||
82 | printf("#define dsStrStart (%3u)(%%rdi)\n",(int)(((char*)&(s->strstart))-((char*)s))); | ||
83 | printf("#define dsMatchStart (%3u)(%%rdi)\n",(int)(((char*)&(s->match_start))-((char*)s))); | ||
84 | printf("#define dsLookahead (%3u)(%%rdi)\n",(int)(((char*)&(s->lookahead))-((char*)s))); | ||
85 | printf("#define dsPrevLen (%3u)(%%rdi)\n",(int)(((char*)&(s->prev_length))-((char*)s))); | ||
86 | printf("#define dsMaxChainLen (%3u)(%%rdi)\n",(int)(((char*)&(s->max_chain_length))-((char*)s))); | ||
87 | printf("#define dsGoodMatch (%3u)(%%rdi)\n",(int)(((char*)&(s->good_match))-((char*)s))); | ||
88 | printf("#define dsNiceMatch (%3u)(%%rdi)\n",(int)(((char*)&(s->nice_match))-((char*)s))); | ||
89 | } | ||
90 | |||
91 | */ | ||
92 | |||
93 | |||
94 | /* | ||
95 | to compile for XCode 3.2 on MacOSX x86_64 | ||
96 | - run "gcc -g -c -DXCODE_MAC_X64_STRUCTURE amd64-match.S" | ||
97 | */ | ||
98 | |||
99 | |||
100 | #ifndef CURRENT_LINX_XCODE_MAC_X64_STRUCTURE | ||
101 | #define dsWSize ( 68)(%rdi) | ||
102 | #define dsWMask ( 76)(%rdi) | ||
103 | #define dsWindow ( 80)(%rdi) | ||
104 | #define dsPrev ( 96)(%rdi) | ||
105 | #define dsMatchLen (144)(%rdi) | ||
106 | #define dsPrevMatch (148)(%rdi) | ||
107 | #define dsStrStart (156)(%rdi) | ||
108 | #define dsMatchStart (160)(%rdi) | ||
109 | #define dsLookahead (164)(%rdi) | ||
110 | #define dsPrevLen (168)(%rdi) | ||
111 | #define dsMaxChainLen (172)(%rdi) | ||
112 | #define dsGoodMatch (188)(%rdi) | ||
113 | #define dsNiceMatch (192)(%rdi) | ||
114 | |||
115 | #else | ||
116 | |||
60 | #ifndef STRUCT_OFFSET | 117 | #ifndef STRUCT_OFFSET |
61 | # define STRUCT_OFFSET (0) | 118 | # define STRUCT_OFFSET (0) |
62 | #endif | 119 | #endif |
120 | |||
121 | |||
63 | #define dsWSize ( 56 + STRUCT_OFFSET)(%rdi) | 122 | #define dsWSize ( 56 + STRUCT_OFFSET)(%rdi) |
64 | #define dsWMask ( 64 + STRUCT_OFFSET)(%rdi) | 123 | #define dsWMask ( 64 + STRUCT_OFFSET)(%rdi) |
65 | #define dsWindow ( 72 + STRUCT_OFFSET)(%rdi) | 124 | #define dsWindow ( 72 + STRUCT_OFFSET)(%rdi) |
@@ -74,7 +133,10 @@ | |||
74 | #define dsGoodMatch (180 + STRUCT_OFFSET)(%rdi) | 133 | #define dsGoodMatch (180 + STRUCT_OFFSET)(%rdi) |
75 | #define dsNiceMatch (184 + STRUCT_OFFSET)(%rdi) | 134 | #define dsNiceMatch (184 + STRUCT_OFFSET)(%rdi) |
76 | 135 | ||
77 | .globl match_init, longest_match | 136 | #endif |
137 | |||
138 | |||
139 | |||
78 | 140 | ||
79 | .text | 141 | .text |
80 | 142 | ||
@@ -222,7 +284,9 @@ LoopEntry: cmpw -1(%windowbestlen, %curmatch), %scanendw | |||
222 | * straightforward "rep cmpsb" would not drastically degrade | 284 | * straightforward "rep cmpsb" would not drastically degrade |
223 | * performance -- unrolling it, for example, makes no difference. | 285 | * performance -- unrolling it, for example, makes no difference. |
224 | */ | 286 | */ |
287 | |||
225 | #undef USE_SSE /* works, but is 6-7% slower, than non-SSE... */ | 288 | #undef USE_SSE /* works, but is 6-7% slower, than non-SSE... */ |
289 | |||
226 | LoopCmps: | 290 | LoopCmps: |
227 | #ifdef USE_SSE | 291 | #ifdef USE_SSE |
228 | /* Preload the SSE registers */ | 292 | /* Preload the SSE registers */ |
@@ -244,29 +308,55 @@ LoopCmps: | |||
244 | notw %ax | 308 | notw %ax |
245 | bsfw %ax, %ax | 309 | bsfw %ax, %ax |
246 | jnz LeaveLoopCmps | 310 | jnz LeaveLoopCmps |
247 | add $16, %rdx | 311 | |
312 | /* this is the only iteration of the loop with a possibility of having | ||
313 | incremented rdx by 0x108 (each loop iteration add 16*4 = 0x40 | ||
314 | and (0x40*4)+8=0x108 */ | ||
315 | add $8, %rdx | ||
316 | jz LenMaximum | ||
317 | add $8, %rdx | ||
318 | |||
319 | |||
248 | pmovmskb %xmm3, %rax | 320 | pmovmskb %xmm3, %rax |
249 | notw %ax | 321 | notw %ax |
250 | bsfw %ax, %ax | 322 | bsfw %ax, %ax |
251 | jnz LeaveLoopCmps | 323 | jnz LeaveLoopCmps |
324 | |||
325 | |||
252 | add $16, %rdx | 326 | add $16, %rdx |
327 | |||
328 | |||
253 | pmovmskb %xmm5, %rax | 329 | pmovmskb %xmm5, %rax |
254 | notw %ax | 330 | notw %ax |
255 | bsfw %ax, %ax | 331 | bsfw %ax, %ax |
256 | jnz LeaveLoopCmps | 332 | jnz LeaveLoopCmps |
333 | |||
257 | add $16, %rdx | 334 | add $16, %rdx |
335 | |||
336 | |||
258 | pmovmskb %xmm7, %rax | 337 | pmovmskb %xmm7, %rax |
259 | notw %ax | 338 | notw %ax |
260 | bsfw %ax, %ax | 339 | bsfw %ax, %ax |
261 | jnz LeaveLoopCmps | 340 | jnz LeaveLoopCmps |
341 | |||
262 | add $16, %rdx | 342 | add $16, %rdx |
343 | |||
263 | jmp LoopCmps | 344 | jmp LoopCmps |
264 | LeaveLoopCmps: add %rax, %rdx | 345 | LeaveLoopCmps: add %rax, %rdx |
265 | #else | 346 | #else |
266 | mov (%windowbestlen, %rdx), %rax | 347 | mov (%windowbestlen, %rdx), %rax |
267 | xor (%prev, %rdx), %rax | 348 | xor (%prev, %rdx), %rax |
268 | jnz LeaveLoopCmps | 349 | jnz LeaveLoopCmps |
269 | add $8, %rdx | 350 | |
351 | mov 8(%windowbestlen, %rdx), %rax | ||
352 | xor 8(%prev, %rdx), %rax | ||
353 | jnz LeaveLoopCmps8 | ||
354 | |||
355 | mov 16(%windowbestlen, %rdx), %rax | ||
356 | xor 16(%prev, %rdx), %rax | ||
357 | jnz LeaveLoopCmps16 | ||
358 | |||
359 | add $24, %rdx | ||
270 | jnz LoopCmps | 360 | jnz LoopCmps |
271 | jmp LenMaximum | 361 | jmp LenMaximum |
272 | # if 0 | 362 | # if 0 |
@@ -274,10 +364,15 @@ LeaveLoopCmps: add %rax, %rdx | |||
274 | * This three-liner is tantalizingly simple, but bsf is a slow instruction, | 364 | * This three-liner is tantalizingly simple, but bsf is a slow instruction, |
275 | * and the complicated alternative down below is quite a bit faster. Sad... | 365 | * and the complicated alternative down below is quite a bit faster. Sad... |
276 | */ | 366 | */ |
367 | |||
277 | LeaveLoopCmps: bsf %rax, %rax /* find the first non-zero bit */ | 368 | LeaveLoopCmps: bsf %rax, %rax /* find the first non-zero bit */ |
278 | shrl $3, %eax /* divide by 8 to get the byte */ | 369 | shrl $3, %eax /* divide by 8 to get the byte */ |
279 | add %rax, %rdx | 370 | add %rax, %rdx |
280 | # else | 371 | # else |
372 | LeaveLoopCmps16: | ||
373 | add $8, %rdx | ||
374 | LeaveLoopCmps8: | ||
375 | add $8, %rdx | ||
281 | LeaveLoopCmps: testl $0xFFFFFFFF, %eax /* Check the first 4 bytes */ | 376 | LeaveLoopCmps: testl $0xFFFFFFFF, %eax /* Check the first 4 bytes */ |
282 | jnz Check16 | 377 | jnz Check16 |
283 | add $4, %rdx | 378 | add $4, %rdx |
diff --git a/contrib/asm586/README.586 b/contrib/asm586/README.586 deleted file mode 100644 index 6bb78f3..0000000 --- a/contrib/asm586/README.586 +++ /dev/null | |||
@@ -1,43 +0,0 @@ | |||
1 | This is a patched version of zlib modified to use | ||
2 | Pentium-optimized assembly code in the deflation algorithm. The files | ||
3 | changed/added by this patch are: | ||
4 | |||
5 | README.586 | ||
6 | match.S | ||
7 | |||
8 | The effectiveness of these modifications is a bit marginal, as the the | ||
9 | program's bottleneck seems to be mostly L1-cache contention, for which | ||
10 | there is no real way to work around without rewriting the basic | ||
11 | algorithm. The speedup on average is around 5-10% (which is generally | ||
12 | less than the amount of variance between subsequent executions). | ||
13 | However, when used at level 9 compression, the cache contention can | ||
14 | drop enough for the assembly version to achieve 10-20% speedup (and | ||
15 | sometimes more, depending on the amount of overall redundancy in the | ||
16 | files). Even here, though, cache contention can still be the limiting | ||
17 | factor, depending on the nature of the program using the zlib library. | ||
18 | This may also mean that better improvements will be seen on a Pentium | ||
19 | with MMX, which suffers much less from L1-cache contention, but I have | ||
20 | not yet verified this. | ||
21 | |||
22 | Note that this code has been tailored for the Pentium in particular, | ||
23 | and will not perform well on the Pentium Pro (due to the use of a | ||
24 | partial register in the inner loop). | ||
25 | |||
26 | If you are using an assembler other than GNU as, you will have to | ||
27 | translate match.S to use your assembler's syntax. (Have fun.) | ||
28 | |||
29 | Brian Raiter | ||
30 | breadbox@muppetlabs.com | ||
31 | April, 1998 | ||
32 | |||
33 | |||
34 | Added for zlib 1.1.3: | ||
35 | |||
36 | The patches come from | ||
37 | http://www.muppetlabs.com/~breadbox/software/assembly.html | ||
38 | |||
39 | To compile zlib with this asm file, copy match.S to the zlib directory | ||
40 | then do: | ||
41 | |||
42 | CFLAGS="-O3 -DASMV" ./configure | ||
43 | make OBJA=match.o | ||
diff --git a/contrib/asm586/match.S b/contrib/asm586/match.S deleted file mode 100644 index 0368b35..0000000 --- a/contrib/asm586/match.S +++ /dev/null | |||
@@ -1,364 +0,0 @@ | |||
1 | /* match.s -- Pentium-optimized version of longest_match() | ||
2 | * Written for zlib 1.1.2 | ||
3 | * Copyright (C) 1998 Brian Raiter <breadbox@muppetlabs.com> | ||
4 | * | ||
5 | * This is free software; you can redistribute it and/or modify it | ||
6 | * under the terms of the GNU General Public License. | ||
7 | */ | ||
8 | |||
9 | #ifndef NO_UNDERLINE | ||
10 | #define match_init _match_init | ||
11 | #define longest_match _longest_match | ||
12 | #endif | ||
13 | |||
14 | #define MAX_MATCH (258) | ||
15 | #define MIN_MATCH (3) | ||
16 | #define MIN_LOOKAHEAD (MAX_MATCH + MIN_MATCH + 1) | ||
17 | #define MAX_MATCH_8 ((MAX_MATCH + 7) & ~7) | ||
18 | |||
19 | /* stack frame offsets */ | ||
20 | |||
21 | #define wmask 0 /* local copy of s->wmask */ | ||
22 | #define window 4 /* local copy of s->window */ | ||
23 | #define windowbestlen 8 /* s->window + bestlen */ | ||
24 | #define chainlenscanend 12 /* high word: current chain len */ | ||
25 | /* low word: last bytes sought */ | ||
26 | #define scanstart 16 /* first two bytes of string */ | ||
27 | #define scanalign 20 /* dword-misalignment of string */ | ||
28 | #define nicematch 24 /* a good enough match size */ | ||
29 | #define bestlen 28 /* size of best match so far */ | ||
30 | #define scan 32 /* ptr to string wanting match */ | ||
31 | |||
32 | #define LocalVarsSize (36) | ||
33 | /* saved ebx 36 */ | ||
34 | /* saved edi 40 */ | ||
35 | /* saved esi 44 */ | ||
36 | /* saved ebp 48 */ | ||
37 | /* return address 52 */ | ||
38 | #define deflatestate 56 /* the function arguments */ | ||
39 | #define curmatch 60 | ||
40 | |||
41 | /* Offsets for fields in the deflate_state structure. These numbers | ||
42 | * are calculated from the definition of deflate_state, with the | ||
43 | * assumption that the compiler will dword-align the fields. (Thus, | ||
44 | * changing the definition of deflate_state could easily cause this | ||
45 | * program to crash horribly, without so much as a warning at | ||
46 | * compile time. Sigh.) | ||
47 | */ | ||
48 | |||
49 | /* All the +zlib1222add offsets are due to the addition of fields | ||
50 | * in zlib in the deflate_state structure since the asm code was first written | ||
51 | * (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)"). | ||
52 | * (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0"). | ||
53 | * if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8"). | ||
54 | */ | ||
55 | |||
56 | #define zlib1222add (8) | ||
57 | |||
58 | #define dsWSize (36+zlib1222add) | ||
59 | #define dsWMask (44+zlib1222add) | ||
60 | #define dsWindow (48+zlib1222add) | ||
61 | #define dsPrev (56+zlib1222add) | ||
62 | #define dsMatchLen (88+zlib1222add) | ||
63 | #define dsPrevMatch (92+zlib1222add) | ||
64 | #define dsStrStart (100+zlib1222add) | ||
65 | #define dsMatchStart (104+zlib1222add) | ||
66 | #define dsLookahead (108+zlib1222add) | ||
67 | #define dsPrevLen (112+zlib1222add) | ||
68 | #define dsMaxChainLen (116+zlib1222add) | ||
69 | #define dsGoodMatch (132+zlib1222add) | ||
70 | #define dsNiceMatch (136+zlib1222add) | ||
71 | |||
72 | |||
73 | .file "match.S" | ||
74 | |||
75 | .globl match_init, longest_match | ||
76 | |||
77 | .text | ||
78 | |||
79 | /* uInt longest_match(deflate_state *deflatestate, IPos curmatch) */ | ||
80 | |||
81 | longest_match: | ||
82 | |||
83 | /* Save registers that the compiler may be using, and adjust %esp to */ | ||
84 | /* make room for our stack frame. */ | ||
85 | |||
86 | pushl %ebp | ||
87 | pushl %edi | ||
88 | pushl %esi | ||
89 | pushl %ebx | ||
90 | subl $LocalVarsSize, %esp | ||
91 | |||
92 | /* Retrieve the function arguments. %ecx will hold cur_match */ | ||
93 | /* throughout the entire function. %edx will hold the pointer to the */ | ||
94 | /* deflate_state structure during the function's setup (before */ | ||
95 | /* entering the main loop). */ | ||
96 | |||
97 | movl deflatestate(%esp), %edx | ||
98 | movl curmatch(%esp), %ecx | ||
99 | |||
100 | /* if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; */ | ||
101 | |||
102 | movl dsNiceMatch(%edx), %eax | ||
103 | movl dsLookahead(%edx), %ebx | ||
104 | cmpl %eax, %ebx | ||
105 | jl LookaheadLess | ||
106 | movl %eax, %ebx | ||
107 | LookaheadLess: movl %ebx, nicematch(%esp) | ||
108 | |||
109 | /* register Bytef *scan = s->window + s->strstart; */ | ||
110 | |||
111 | movl dsWindow(%edx), %esi | ||
112 | movl %esi, window(%esp) | ||
113 | movl dsStrStart(%edx), %ebp | ||
114 | lea (%esi,%ebp), %edi | ||
115 | movl %edi, scan(%esp) | ||
116 | |||
117 | /* Determine how many bytes the scan ptr is off from being */ | ||
118 | /* dword-aligned. */ | ||
119 | |||
120 | movl %edi, %eax | ||
121 | negl %eax | ||
122 | andl $3, %eax | ||
123 | movl %eax, scanalign(%esp) | ||
124 | |||
125 | /* IPos limit = s->strstart > (IPos)MAX_DIST(s) ? */ | ||
126 | /* s->strstart - (IPos)MAX_DIST(s) : NIL; */ | ||
127 | |||
128 | movl dsWSize(%edx), %eax | ||
129 | subl $MIN_LOOKAHEAD, %eax | ||
130 | subl %eax, %ebp | ||
131 | jg LimitPositive | ||
132 | xorl %ebp, %ebp | ||
133 | LimitPositive: | ||
134 | |||
135 | /* unsigned chain_length = s->max_chain_length; */ | ||
136 | /* if (s->prev_length >= s->good_match) { */ | ||
137 | /* chain_length >>= 2; */ | ||
138 | /* } */ | ||
139 | |||
140 | movl dsPrevLen(%edx), %eax | ||
141 | movl dsGoodMatch(%edx), %ebx | ||
142 | cmpl %ebx, %eax | ||
143 | movl dsMaxChainLen(%edx), %ebx | ||
144 | jl LastMatchGood | ||
145 | shrl $2, %ebx | ||
146 | LastMatchGood: | ||
147 | |||
148 | /* chainlen is decremented once beforehand so that the function can */ | ||
149 | /* use the sign flag instead of the zero flag for the exit test. */ | ||
150 | /* It is then shifted into the high word, to make room for the scanend */ | ||
151 | /* scanend value, which it will always accompany. */ | ||
152 | |||
153 | decl %ebx | ||
154 | shll $16, %ebx | ||
155 | |||
156 | /* int best_len = s->prev_length; */ | ||
157 | |||
158 | movl dsPrevLen(%edx), %eax | ||
159 | movl %eax, bestlen(%esp) | ||
160 | |||
161 | /* Store the sum of s->window + best_len in %esi locally, and in %esi. */ | ||
162 | |||
163 | addl %eax, %esi | ||
164 | movl %esi, windowbestlen(%esp) | ||
165 | |||
166 | /* register ush scan_start = *(ushf*)scan; */ | ||
167 | /* register ush scan_end = *(ushf*)(scan+best_len-1); */ | ||
168 | |||
169 | movw (%edi), %bx | ||
170 | movw %bx, scanstart(%esp) | ||
171 | movw -1(%edi,%eax), %bx | ||
172 | movl %ebx, chainlenscanend(%esp) | ||
173 | |||
174 | /* Posf *prev = s->prev; */ | ||
175 | /* uInt wmask = s->w_mask; */ | ||
176 | |||
177 | movl dsPrev(%edx), %edi | ||
178 | movl dsWMask(%edx), %edx | ||
179 | mov %edx, wmask(%esp) | ||
180 | |||
181 | /* Jump into the main loop. */ | ||
182 | |||
183 | jmp LoopEntry | ||
184 | |||
185 | .balign 16 | ||
186 | |||
187 | /* do { | ||
188 | * match = s->window + cur_match; | ||
189 | * if (*(ushf*)(match+best_len-1) != scan_end || | ||
190 | * *(ushf*)match != scan_start) continue; | ||
191 | * [...] | ||
192 | * } while ((cur_match = prev[cur_match & wmask]) > limit | ||
193 | * && --chain_length != 0); | ||
194 | * | ||
195 | * Here is the inner loop of the function. The function will spend the | ||
196 | * majority of its time in this loop, and majority of that time will | ||
197 | * be spent in the first ten instructions. | ||
198 | * | ||
199 | * Within this loop: | ||
200 | * %ebx = chainlenscanend - i.e., ((chainlen << 16) | scanend) | ||
201 | * %ecx = curmatch | ||
202 | * %edx = curmatch & wmask | ||
203 | * %esi = windowbestlen - i.e., (window + bestlen) | ||
204 | * %edi = prev | ||
205 | * %ebp = limit | ||
206 | * | ||
207 | * Two optimization notes on the choice of instructions: | ||
208 | * | ||
209 | * The first instruction uses a 16-bit address, which costs an extra, | ||
210 | * unpairable cycle. This is cheaper than doing a 32-bit access and | ||
211 | * zeroing the high word, due to the 3-cycle misalignment penalty which | ||
212 | * would occur half the time. This also turns out to be cheaper than | ||
213 | * doing two separate 8-bit accesses, as the memory is so rarely in the | ||
214 | * L1 cache. | ||
215 | * | ||
216 | * The window buffer, however, apparently spends a lot of time in the | ||
217 | * cache, and so it is faster to retrieve the word at the end of the | ||
218 | * match string with two 8-bit loads. The instructions that test the | ||
219 | * word at the beginning of the match string, however, are executed | ||
220 | * much less frequently, and there it was cheaper to use 16-bit | ||
221 | * instructions, which avoided the necessity of saving off and | ||
222 | * subsequently reloading one of the other registers. | ||
223 | */ | ||
224 | LookupLoop: | ||
225 | /* 1 U & V */ | ||
226 | movw (%edi,%edx,2), %cx /* 2 U pipe */ | ||
227 | movl wmask(%esp), %edx /* 2 V pipe */ | ||
228 | cmpl %ebp, %ecx /* 3 U pipe */ | ||
229 | jbe LeaveNow /* 3 V pipe */ | ||
230 | subl $0x00010000, %ebx /* 4 U pipe */ | ||
231 | js LeaveNow /* 4 V pipe */ | ||
232 | LoopEntry: movb -1(%esi,%ecx), %al /* 5 U pipe */ | ||
233 | andl %ecx, %edx /* 5 V pipe */ | ||
234 | cmpb %bl, %al /* 6 U pipe */ | ||
235 | jnz LookupLoop /* 6 V pipe */ | ||
236 | movb (%esi,%ecx), %ah | ||
237 | cmpb %bh, %ah | ||
238 | jnz LookupLoop | ||
239 | movl window(%esp), %eax | ||
240 | movw (%eax,%ecx), %ax | ||
241 | cmpw scanstart(%esp), %ax | ||
242 | jnz LookupLoop | ||
243 | |||
244 | /* Store the current value of chainlen. */ | ||
245 | |||
246 | movl %ebx, chainlenscanend(%esp) | ||
247 | |||
248 | /* Point %edi to the string under scrutiny, and %esi to the string we */ | ||
249 | /* are hoping to match it up with. In actuality, %esi and %edi are */ | ||
250 | /* both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and %edx is */ | ||
251 | /* initialized to -(MAX_MATCH_8 - scanalign). */ | ||
252 | |||
253 | movl window(%esp), %esi | ||
254 | movl scan(%esp), %edi | ||
255 | addl %ecx, %esi | ||
256 | movl scanalign(%esp), %eax | ||
257 | movl $(-MAX_MATCH_8), %edx | ||
258 | lea MAX_MATCH_8(%edi,%eax), %edi | ||
259 | lea MAX_MATCH_8(%esi,%eax), %esi | ||
260 | |||
261 | /* Test the strings for equality, 8 bytes at a time. At the end, | ||
262 | * adjust %edx so that it is offset to the exact byte that mismatched. | ||
263 | * | ||
264 | * We already know at this point that the first three bytes of the | ||
265 | * strings match each other, and they can be safely passed over before | ||
266 | * starting the compare loop. So what this code does is skip over 0-3 | ||
267 | * bytes, as much as necessary in order to dword-align the %edi | ||
268 | * pointer. (%esi will still be misaligned three times out of four.) | ||
269 | * | ||
270 | * It should be confessed that this loop usually does not represent | ||
271 | * much of the total running time. Replacing it with a more | ||
272 | * straightforward "rep cmpsb" would not drastically degrade | ||
273 | * performance. | ||
274 | */ | ||
275 | LoopCmps: | ||
276 | movl (%esi,%edx), %eax | ||
277 | movl (%edi,%edx), %ebx | ||
278 | xorl %ebx, %eax | ||
279 | jnz LeaveLoopCmps | ||
280 | movl 4(%esi,%edx), %eax | ||
281 | movl 4(%edi,%edx), %ebx | ||
282 | xorl %ebx, %eax | ||
283 | jnz LeaveLoopCmps4 | ||
284 | addl $8, %edx | ||
285 | jnz LoopCmps | ||
286 | jmp LenMaximum | ||
287 | LeaveLoopCmps4: addl $4, %edx | ||
288 | LeaveLoopCmps: testl $0x0000FFFF, %eax | ||
289 | jnz LenLower | ||
290 | addl $2, %edx | ||
291 | shrl $16, %eax | ||
292 | LenLower: subb $1, %al | ||
293 | adcl $0, %edx | ||
294 | |||
295 | /* Calculate the length of the match. If it is longer than MAX_MATCH, */ | ||
296 | /* then automatically accept it as the best possible match and leave. */ | ||
297 | |||
298 | lea (%edi,%edx), %eax | ||
299 | movl scan(%esp), %edi | ||
300 | subl %edi, %eax | ||
301 | cmpl $MAX_MATCH, %eax | ||
302 | jge LenMaximum | ||
303 | |||
304 | /* If the length of the match is not longer than the best match we */ | ||
305 | /* have so far, then forget it and return to the lookup loop. */ | ||
306 | |||
307 | movl deflatestate(%esp), %edx | ||
308 | movl bestlen(%esp), %ebx | ||
309 | cmpl %ebx, %eax | ||
310 | jg LongerMatch | ||
311 | movl chainlenscanend(%esp), %ebx | ||
312 | movl windowbestlen(%esp), %esi | ||
313 | movl dsPrev(%edx), %edi | ||
314 | movl wmask(%esp), %edx | ||
315 | andl %ecx, %edx | ||
316 | jmp LookupLoop | ||
317 | |||
318 | /* s->match_start = cur_match; */ | ||
319 | /* best_len = len; */ | ||
320 | /* if (len >= nice_match) break; */ | ||
321 | /* scan_end = *(ushf*)(scan+best_len-1); */ | ||
322 | |||
323 | LongerMatch: movl nicematch(%esp), %ebx | ||
324 | movl %eax, bestlen(%esp) | ||
325 | movl %ecx, dsMatchStart(%edx) | ||
326 | cmpl %ebx, %eax | ||
327 | jge LeaveNow | ||
328 | movl window(%esp), %esi | ||
329 | addl %eax, %esi | ||
330 | movl %esi, windowbestlen(%esp) | ||
331 | movl chainlenscanend(%esp), %ebx | ||
332 | movw -1(%edi,%eax), %bx | ||
333 | movl dsPrev(%edx), %edi | ||
334 | movl %ebx, chainlenscanend(%esp) | ||
335 | movl wmask(%esp), %edx | ||
336 | andl %ecx, %edx | ||
337 | jmp LookupLoop | ||
338 | |||
339 | /* Accept the current string, with the maximum possible length. */ | ||
340 | |||
341 | LenMaximum: movl deflatestate(%esp), %edx | ||
342 | movl $MAX_MATCH, bestlen(%esp) | ||
343 | movl %ecx, dsMatchStart(%edx) | ||
344 | |||
345 | /* if ((uInt)best_len <= s->lookahead) return (uInt)best_len; */ | ||
346 | /* return s->lookahead; */ | ||
347 | |||
348 | LeaveNow: | ||
349 | movl deflatestate(%esp), %edx | ||
350 | movl bestlen(%esp), %ebx | ||
351 | movl dsLookahead(%edx), %eax | ||
352 | cmpl %eax, %ebx | ||
353 | jg LookaheadRet | ||
354 | movl %ebx, %eax | ||
355 | LookaheadRet: | ||
356 | |||
357 | /* Restore the stack and return from whence we came. */ | ||
358 | |||
359 | addl $LocalVarsSize, %esp | ||
360 | popl %ebx | ||
361 | popl %esi | ||
362 | popl %edi | ||
363 | popl %ebp | ||
364 | match_init: ret | ||
diff --git a/contrib/asm686/README.686 b/contrib/asm686/README.686 index a593f23..a0bf3be 100644 --- a/contrib/asm686/README.686 +++ b/contrib/asm686/README.686 | |||
@@ -32,3 +32,20 @@ then do: | |||
32 | 32 | ||
33 | CFLAGS="-O3 -DASMV" ./configure | 33 | CFLAGS="-O3 -DASMV" ./configure |
34 | make OBJA=match.o | 34 | make OBJA=match.o |
35 | |||
36 | |||
37 | Update: | ||
38 | |||
39 | I've been ignoring these assembly routines for years, believing that | ||
40 | gcc's generated code had caught up with it sometime around gcc 2.95 | ||
41 | and the major rearchitecting of the Pentium 4. However, I recently | ||
42 | learned that, despite what I believed, this code still has some life | ||
43 | in it. On the Pentium 4 and AMD64 chips, it continues to run about 8% | ||
44 | faster than the code produced by gcc 4.1. | ||
45 | |||
46 | In acknowledgement of its continuing usefulness, I've altered the | ||
47 | license to match that of the rest of zlib. Share and Enjoy! | ||
48 | |||
49 | Brian Raiter | ||
50 | breadbox@muppetlabs.com | ||
51 | April, 2007 | ||
diff --git a/contrib/asm686/match.S b/contrib/asm686/match.S index 5c3e9ee..06817e1 100644 --- a/contrib/asm686/match.S +++ b/contrib/asm686/match.S | |||
@@ -1,9 +1,23 @@ | |||
1 | /* match.s -- Pentium-Pro-optimized version of longest_match() | 1 | /* match.S -- x86 assembly version of the zlib longest_match() function. |
2 | * Written for zlib 1.1.2 | 2 | * Optimized for the Intel 686 chips (PPro and later). |
3 | * Copyright (C) 1998 Brian Raiter <breadbox@muppetlabs.com> | ||
4 | * | 3 | * |
5 | * This is free software; you can redistribute it and/or modify it | 4 | * Copyright (C) 1998, 2007 Brian Raiter <breadbox@muppetlabs.com> |
6 | * under the terms of the GNU General Public License. | 5 | * |
6 | * This software is provided 'as-is', without any express or implied | ||
7 | * warranty. In no event will the author be held liable for any damages | ||
8 | * arising from the use of this software. | ||
9 | * | ||
10 | * Permission is granted to anyone to use this software for any purpose, | ||
11 | * including commercial applications, and to alter it and redistribute it | ||
12 | * freely, subject to the following restrictions: | ||
13 | * | ||
14 | * 1. The origin of this software must not be misrepresented; you must not | ||
15 | * claim that you wrote the original software. If you use this software | ||
16 | * in a product, an acknowledgment in the product documentation would be | ||
17 | * appreciated but is not required. | ||
18 | * 2. Altered source versions must be plainly marked as such, and must not be | ||
19 | * misrepresented as being the original software. | ||
20 | * 3. This notice may not be removed or altered from any source distribution. | ||
7 | */ | 21 | */ |
8 | 22 | ||
9 | #ifndef NO_UNDERLINE | 23 | #ifndef NO_UNDERLINE |
diff --git a/contrib/delphi/ZLib.pas b/contrib/delphi/ZLib.pas index 3f2b8b4..179f9a9 100644 --- a/contrib/delphi/ZLib.pas +++ b/contrib/delphi/ZLib.pas | |||
@@ -152,7 +152,7 @@ procedure DecompressToUserBuf(const InBuf: Pointer; InBytes: Integer; | |||
152 | const OutBuf: Pointer; BufSize: Integer); | 152 | const OutBuf: Pointer; BufSize: Integer); |
153 | 153 | ||
154 | const | 154 | const |
155 | zlib_version = '1.2.3'; | 155 | zlib_version = '1.2.4'; |
156 | 156 | ||
157 | type | 157 | type |
158 | EZlibError = class(Exception); | 158 | EZlibError = class(Exception); |
diff --git a/contrib/dotzlib/DotZLib/UnitTests.cs b/contrib/dotzlib/DotZLib/UnitTests.cs index eb751bb..42c4588 100644 --- a/contrib/dotzlib/DotZLib/UnitTests.cs +++ b/contrib/dotzlib/DotZLib/UnitTests.cs | |||
@@ -156,7 +156,7 @@ namespace DotZLibTests | |||
156 | public void Info_Version() | 156 | public void Info_Version() |
157 | { | 157 | { |
158 | Info info = new Info(); | 158 | Info info = new Info(); |
159 | Assert.AreEqual("1.2.3", Info.Version); | 159 | Assert.AreEqual("1.2.4", Info.Version); |
160 | Assert.AreEqual(32, info.SizeOfUInt); | 160 | Assert.AreEqual(32, info.SizeOfUInt); |
161 | Assert.AreEqual(32, info.SizeOfULong); | 161 | Assert.AreEqual(32, info.SizeOfULong); |
162 | Assert.AreEqual(32, info.SizeOfPointer); | 162 | Assert.AreEqual(32, info.SizeOfPointer); |
diff --git a/contrib/gcc_gvmat64/gvmat64.S b/contrib/gcc_gvmat64/gvmat64.S new file mode 100644 index 0000000..dd858dd --- /dev/null +++ b/contrib/gcc_gvmat64/gvmat64.S | |||
@@ -0,0 +1,574 @@ | |||
1 | /* | ||
2 | ;uInt longest_match_x64( | ||
3 | ; deflate_state *s, | ||
4 | ; IPos cur_match); // current match | ||
5 | |||
6 | ; gvmat64.S -- Asm portion of the optimized longest_match for 32 bits x86_64 | ||
7 | ; (AMD64 on Athlon 64, Opteron, Phenom | ||
8 | ; and Intel EM64T on Pentium 4 with EM64T, Pentium D, Core 2 Duo, Core I5/I7) | ||
9 | ; this file is translation from gvmat64.asm to GCC 4.x (for Linux, Mac XCode) | ||
10 | ; Copyright (C) 1995-2010 Jean-loup Gailly, Brian Raiter and Gilles Vollant. | ||
11 | ; | ||
12 | ; File written by Gilles Vollant, by converting to assembly the longest_match | ||
13 | ; from Jean-loup Gailly in deflate.c of zLib and infoZip zip. | ||
14 | ; and by taking inspiration on asm686 with masm, optimised assembly code | ||
15 | ; from Brian Raiter, written 1998 | ||
16 | ; | ||
17 | ; This software is provided 'as-is', without any express or implied | ||
18 | ; warranty. In no event will the authors be held liable for any damages | ||
19 | ; arising from the use of this software. | ||
20 | ; | ||
21 | ; Permission is granted to anyone to use this software for any purpose, | ||
22 | ; including commercial applications, and to alter it and redistribute it | ||
23 | ; freely, subject to the following restrictions: | ||
24 | ; | ||
25 | ; 1. The origin of this software must not be misrepresented; you must not | ||
26 | ; claim that you wrote the original software. If you use this software | ||
27 | ; in a product, an acknowledgment in the product documentation would be | ||
28 | ; appreciated but is not required. | ||
29 | ; 2. Altered source versions must be plainly marked as such, and must not be | ||
30 | ; misrepresented as being the original software | ||
31 | ; 3. This notice may not be removed or altered from any source distribution. | ||
32 | ; | ||
33 | ; http://www.zlib.net | ||
34 | ; http://www.winimage.com/zLibDll | ||
35 | ; http://www.muppetlabs.com/~breadbox/software/assembly.html | ||
36 | ; | ||
37 | ; to compile this file for zLib, I use option: | ||
38 | ; gcc -c -arch x86_64 gvmat64.S | ||
39 | |||
40 | |||
41 | ;uInt longest_match(s, cur_match) | ||
42 | ; deflate_state *s; | ||
43 | ; IPos cur_match; // current match / | ||
44 | ; | ||
45 | ; with XCode for Mac, I had strange error with some jump on intel syntax | ||
46 | ; this is why BEFORE_JMP and AFTER_JMP are used | ||
47 | */ | ||
48 | |||
49 | |||
50 | #define BEFORE_JMP .att_syntax | ||
51 | #define AFTER_JMP .intel_syntax noprefix | ||
52 | |||
53 | #ifndef NO_UNDERLINE | ||
54 | # define match_init _match_init | ||
55 | # define longest_match _longest_match | ||
56 | #endif | ||
57 | |||
58 | .intel_syntax noprefix | ||
59 | |||
60 | .globl match_init, longest_match | ||
61 | .text | ||
62 | longest_match: | ||
63 | |||
64 | |||
65 | |||
66 | #define LocalVarsSize 96 | ||
67 | /* | ||
68 | ; register used : rax,rbx,rcx,rdx,rsi,rdi,r8,r9,r10,r11,r12 | ||
69 | ; free register : r14,r15 | ||
70 | ; register can be saved : rsp | ||
71 | */ | ||
72 | |||
73 | #define chainlenwmask (rsp + 8 - LocalVarsSize) | ||
74 | #define nicematch (rsp + 16 - LocalVarsSize) | ||
75 | |||
76 | #define save_rdi (rsp + 24 - LocalVarsSize) | ||
77 | #define save_rsi (rsp + 32 - LocalVarsSize) | ||
78 | #define save_rbx (rsp + 40 - LocalVarsSize) | ||
79 | #define save_rbp (rsp + 48 - LocalVarsSize) | ||
80 | #define save_r12 (rsp + 56 - LocalVarsSize) | ||
81 | #define save_r13 (rsp + 64 - LocalVarsSize) | ||
82 | #define save_r14 (rsp + 72 - LocalVarsSize) | ||
83 | #define save_r15 (rsp + 80 - LocalVarsSize) | ||
84 | |||
85 | |||
86 | /* | ||
87 | ; all the +4 offsets are due to the addition of pending_buf_size (in zlib | ||
88 | ; in the deflate_state structure since the asm code was first written | ||
89 | ; (if you compile with zlib 1.0.4 or older, remove the +4). | ||
90 | ; Note : these value are good with a 8 bytes boundary pack structure | ||
91 | */ | ||
92 | |||
93 | #define MAX_MATCH 258 | ||
94 | #define MIN_MATCH 3 | ||
95 | #define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) | ||
96 | |||
97 | /* | ||
98 | ;;; Offsets for fields in the deflate_state structure. These numbers | ||
99 | ;;; are calculated from the definition of deflate_state, with the | ||
100 | ;;; assumption that the compiler will dword-align the fields. (Thus, | ||
101 | ;;; changing the definition of deflate_state could easily cause this | ||
102 | ;;; program to crash horribly, without so much as a warning at | ||
103 | ;;; compile time. Sigh.) | ||
104 | |||
105 | ; all the +zlib1222add offsets are due to the addition of fields | ||
106 | ; in zlib in the deflate_state structure since the asm code was first written | ||
107 | ; (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)"). | ||
108 | ; (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0"). | ||
109 | ; if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8"). | ||
110 | */ | ||
111 | |||
112 | |||
113 | |||
114 | /* you can check the structure offset by running | ||
115 | |||
116 | #include <stdlib.h> | ||
117 | #include <stdio.h> | ||
118 | #include "deflate.h" | ||
119 | |||
120 | void print_depl() | ||
121 | { | ||
122 | deflate_state ds; | ||
123 | deflate_state *s=&ds; | ||
124 | printf("size pointer=%u\n",(int)sizeof(void*)); | ||
125 | |||
126 | printf("#define dsWSize %u\n",(int)(((char*)&(s->w_size))-((char*)s))); | ||
127 | printf("#define dsWMask %u\n",(int)(((char*)&(s->w_mask))-((char*)s))); | ||
128 | printf("#define dsWindow %u\n",(int)(((char*)&(s->window))-((char*)s))); | ||
129 | printf("#define dsPrev %u\n",(int)(((char*)&(s->prev))-((char*)s))); | ||
130 | printf("#define dsMatchLen %u\n",(int)(((char*)&(s->match_length))-((char*)s))); | ||
131 | printf("#define dsPrevMatch %u\n",(int)(((char*)&(s->prev_match))-((char*)s))); | ||
132 | printf("#define dsStrStart %u\n",(int)(((char*)&(s->strstart))-((char*)s))); | ||
133 | printf("#define dsMatchStart %u\n",(int)(((char*)&(s->match_start))-((char*)s))); | ||
134 | printf("#define dsLookahead %u\n",(int)(((char*)&(s->lookahead))-((char*)s))); | ||
135 | printf("#define dsPrevLen %u\n",(int)(((char*)&(s->prev_length))-((char*)s))); | ||
136 | printf("#define dsMaxChainLen %u\n",(int)(((char*)&(s->max_chain_length))-((char*)s))); | ||
137 | printf("#define dsGoodMatch %u\n",(int)(((char*)&(s->good_match))-((char*)s))); | ||
138 | printf("#define dsNiceMatch %u\n",(int)(((char*)&(s->nice_match))-((char*)s))); | ||
139 | } | ||
140 | */ | ||
141 | |||
142 | #define dsWSize 68 | ||
143 | #define dsWMask 76 | ||
144 | #define dsWindow 80 | ||
145 | #define dsPrev 96 | ||
146 | #define dsMatchLen 144 | ||
147 | #define dsPrevMatch 148 | ||
148 | #define dsStrStart 156 | ||
149 | #define dsMatchStart 160 | ||
150 | #define dsLookahead 164 | ||
151 | #define dsPrevLen 168 | ||
152 | #define dsMaxChainLen 172 | ||
153 | #define dsGoodMatch 188 | ||
154 | #define dsNiceMatch 192 | ||
155 | |||
156 | #define window_size [ rcx + dsWSize] | ||
157 | #define WMask [ rcx + dsWMask] | ||
158 | #define window_ad [ rcx + dsWindow] | ||
159 | #define prev_ad [ rcx + dsPrev] | ||
160 | #define strstart [ rcx + dsStrStart] | ||
161 | #define match_start [ rcx + dsMatchStart] | ||
162 | #define Lookahead [ rcx + dsLookahead] //; 0ffffffffh on infozip | ||
163 | #define prev_length [ rcx + dsPrevLen] | ||
164 | #define max_chain_length [ rcx + dsMaxChainLen] | ||
165 | #define good_match [ rcx + dsGoodMatch] | ||
166 | #define nice_match [ rcx + dsNiceMatch] | ||
167 | |||
168 | /* | ||
169 | ; windows: | ||
170 | ; parameter 1 in rcx(deflate state s), param 2 in rdx (cur match) | ||
171 | |||
172 | ; see http://weblogs.asp.net/oldnewthing/archive/2004/01/14/58579.aspx and | ||
173 | ; http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/64bitAMD_8e951dd2-ee77-4728-8702-55ce4b5dd24a.xml.asp | ||
174 | ; | ||
175 | ; All registers must be preserved across the call, except for | ||
176 | ; rax, rcx, rdx, r8, r9, r10, and r11, which are scratch. | ||
177 | |||
178 | ; | ||
179 | ; gcc on macosx-linux: | ||
180 | ; see http://www.x86-64.org/documentation/abi-0.99.pdf | ||
181 | ; param 1 in rdi, param 2 in rsi | ||
182 | ; rbx, rsp, rbp, r12 to r15 must be preserved | ||
183 | |||
184 | ;;; Save registers that the compiler may be using, and adjust esp to | ||
185 | ;;; make room for our stack frame. | ||
186 | |||
187 | |||
188 | ;;; Retrieve the function arguments. r8d will hold cur_match | ||
189 | ;;; throughout the entire function. edx will hold the pointer to the | ||
190 | ;;; deflate_state structure during the function's setup (before | ||
191 | ;;; entering the main loop. | ||
192 | |||
193 | ; ms: parameter 1 in rcx (deflate_state* s), param 2 in edx -> r8 (cur match) | ||
194 | ; mac: param 1 in rdi, param 2 rsi | ||
195 | ; this clear high 32 bits of r8, which can be garbage in both r8 and rdx | ||
196 | */ | ||
197 | mov [save_rbx],rbx | ||
198 | mov [save_rbp],rbp | ||
199 | |||
200 | |||
201 | mov rcx,rdi | ||
202 | |||
203 | mov r8d,esi | ||
204 | |||
205 | |||
206 | mov [save_r12],r12 | ||
207 | mov [save_r13],r13 | ||
208 | mov [save_r14],r14 | ||
209 | mov [save_r15],r15 | ||
210 | |||
211 | |||
212 | //;;; uInt wmask = s->w_mask; | ||
213 | //;;; unsigned chain_length = s->max_chain_length; | ||
214 | //;;; if (s->prev_length >= s->good_match) { | ||
215 | //;;; chain_length >>= 2; | ||
216 | //;;; } | ||
217 | |||
218 | |||
219 | mov edi, prev_length | ||
220 | mov esi, good_match | ||
221 | mov eax, WMask | ||
222 | mov ebx, max_chain_length | ||
223 | cmp edi, esi | ||
224 | jl LastMatchGood | ||
225 | shr ebx, 2 | ||
226 | LastMatchGood: | ||
227 | |||
228 | //;;; chainlen is decremented once beforehand so that the function can | ||
229 | //;;; use the sign flag instead of the zero flag for the exit test. | ||
230 | //;;; It is then shifted into the high word, to make room for the wmask | ||
231 | //;;; value, which it will always accompany. | ||
232 | |||
233 | dec ebx | ||
234 | shl ebx, 16 | ||
235 | or ebx, eax | ||
236 | |||
237 | //;;; on zlib only | ||
238 | //;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; | ||
239 | |||
240 | |||
241 | |||
242 | mov eax, nice_match | ||
243 | mov [chainlenwmask], ebx | ||
244 | mov r10d, Lookahead | ||
245 | cmp r10d, eax | ||
246 | cmovnl r10d, eax | ||
247 | mov [nicematch],r10d | ||
248 | |||
249 | |||
250 | |||
251 | //;;; register Bytef *scan = s->window + s->strstart; | ||
252 | mov r10, window_ad | ||
253 | mov ebp, strstart | ||
254 | lea r13, [r10 + rbp] | ||
255 | |||
256 | //;;; Determine how many bytes the scan ptr is off from being | ||
257 | //;;; dword-aligned. | ||
258 | |||
259 | mov r9,r13 | ||
260 | neg r13 | ||
261 | and r13,3 | ||
262 | |||
263 | //;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ? | ||
264 | //;;; s->strstart - (IPos)MAX_DIST(s) : NIL; | ||
265 | |||
266 | |||
267 | mov eax, window_size | ||
268 | sub eax, MIN_LOOKAHEAD | ||
269 | |||
270 | |||
271 | xor edi,edi | ||
272 | sub ebp, eax | ||
273 | |||
274 | mov r11d, prev_length | ||
275 | |||
276 | cmovng ebp,edi | ||
277 | |||
278 | //;;; int best_len = s->prev_length; | ||
279 | |||
280 | |||
281 | //;;; Store the sum of s->window + best_len in esi locally, and in esi. | ||
282 | |||
283 | lea rsi,[r10+r11] | ||
284 | |||
285 | //;;; register ush scan_start = *(ushf*)scan; | ||
286 | //;;; register ush scan_end = *(ushf*)(scan+best_len-1); | ||
287 | //;;; Posf *prev = s->prev; | ||
288 | |||
289 | movzx r12d,word ptr [r9] | ||
290 | movzx ebx, word ptr [r9 + r11 - 1] | ||
291 | |||
292 | mov rdi, prev_ad | ||
293 | |||
294 | //;;; Jump into the main loop. | ||
295 | |||
296 | mov edx, [chainlenwmask] | ||
297 | |||
298 | cmp bx,word ptr [rsi + r8 - 1] | ||
299 | jz LookupLoopIsZero | ||
300 | |||
301 | |||
302 | |||
303 | LookupLoop1: | ||
304 | and r8d, edx | ||
305 | |||
306 | movzx r8d, word ptr [rdi + r8*2] | ||
307 | cmp r8d, ebp | ||
308 | jbe LeaveNow | ||
309 | |||
310 | |||
311 | |||
312 | sub edx, 0x00010000 | ||
313 | BEFORE_JMP | ||
314 | js LeaveNow | ||
315 | AFTER_JMP | ||
316 | |||
317 | LoopEntry1: | ||
318 | cmp bx,word ptr [rsi + r8 - 1] | ||
319 | BEFORE_JMP | ||
320 | jz LookupLoopIsZero | ||
321 | AFTER_JMP | ||
322 | |||
323 | LookupLoop2: | ||
324 | and r8d, edx | ||
325 | |||
326 | movzx r8d, word ptr [rdi + r8*2] | ||
327 | cmp r8d, ebp | ||
328 | BEFORE_JMP | ||
329 | jbe LeaveNow | ||
330 | AFTER_JMP | ||
331 | sub edx, 0x00010000 | ||
332 | BEFORE_JMP | ||
333 | js LeaveNow | ||
334 | AFTER_JMP | ||
335 | |||
336 | LoopEntry2: | ||
337 | cmp bx,word ptr [rsi + r8 - 1] | ||
338 | BEFORE_JMP | ||
339 | jz LookupLoopIsZero | ||
340 | AFTER_JMP | ||
341 | |||
342 | LookupLoop4: | ||
343 | and r8d, edx | ||
344 | |||
345 | movzx r8d, word ptr [rdi + r8*2] | ||
346 | cmp r8d, ebp | ||
347 | BEFORE_JMP | ||
348 | jbe LeaveNow | ||
349 | AFTER_JMP | ||
350 | sub edx, 0x00010000 | ||
351 | BEFORE_JMP | ||
352 | js LeaveNow | ||
353 | AFTER_JMP | ||
354 | |||
355 | LoopEntry4: | ||
356 | |||
357 | cmp bx,word ptr [rsi + r8 - 1] | ||
358 | BEFORE_JMP | ||
359 | jnz LookupLoop1 | ||
360 | jmp LookupLoopIsZero | ||
361 | AFTER_JMP | ||
362 | /* | ||
363 | ;;; do { | ||
364 | ;;; match = s->window + cur_match; | ||
365 | ;;; if (*(ushf*)(match+best_len-1) != scan_end || | ||
366 | ;;; *(ushf*)match != scan_start) continue; | ||
367 | ;;; [...] | ||
368 | ;;; } while ((cur_match = prev[cur_match & wmask]) > limit | ||
369 | ;;; && --chain_length != 0); | ||
370 | ;;; | ||
371 | ;;; Here is the inner loop of the function. The function will spend the | ||
372 | ;;; majority of its time in this loop, and majority of that time will | ||
373 | ;;; be spent in the first ten instructions. | ||
374 | ;;; | ||
375 | ;;; Within this loop: | ||
376 | ;;; ebx = scanend | ||
377 | ;;; r8d = curmatch | ||
378 | ;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask) | ||
379 | ;;; esi = windowbestlen - i.e., (window + bestlen) | ||
380 | ;;; edi = prev | ||
381 | ;;; ebp = limit | ||
382 | */ | ||
383 | .balign 16 | ||
384 | LookupLoop: | ||
385 | and r8d, edx | ||
386 | |||
387 | movzx r8d, word ptr [rdi + r8*2] | ||
388 | cmp r8d, ebp | ||
389 | BEFORE_JMP | ||
390 | jbe LeaveNow | ||
391 | AFTER_JMP | ||
392 | sub edx, 0x00010000 | ||
393 | BEFORE_JMP | ||
394 | js LeaveNow | ||
395 | AFTER_JMP | ||
396 | |||
397 | LoopEntry: | ||
398 | |||
399 | cmp bx,word ptr [rsi + r8 - 1] | ||
400 | BEFORE_JMP | ||
401 | jnz LookupLoop1 | ||
402 | AFTER_JMP | ||
403 | LookupLoopIsZero: | ||
404 | cmp r12w, word ptr [r10 + r8] | ||
405 | BEFORE_JMP | ||
406 | jnz LookupLoop1 | ||
407 | AFTER_JMP | ||
408 | |||
409 | |||
410 | //;;; Store the current value of chainlen. | ||
411 | mov [chainlenwmask], edx | ||
412 | /* | ||
413 | ;;; Point edi to the string under scrutiny, and esi to the string we | ||
414 | ;;; are hoping to match it up with. In actuality, esi and edi are | ||
415 | ;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is | ||
416 | ;;; initialized to -(MAX_MATCH_8 - scanalign). | ||
417 | */ | ||
418 | lea rsi,[r8+r10] | ||
419 | mov rdx, 0xfffffffffffffef8 //; -(MAX_MATCH_8) | ||
420 | lea rsi, [rsi + r13 + 0x0108] //;MAX_MATCH_8] | ||
421 | lea rdi, [r9 + r13 + 0x0108] //;MAX_MATCH_8] | ||
422 | |||
423 | prefetcht1 [rsi+rdx] | ||
424 | prefetcht1 [rdi+rdx] | ||
425 | |||
426 | /* | ||
427 | ;;; Test the strings for equality, 8 bytes at a time. At the end, | ||
428 | ;;; adjust rdx so that it is offset to the exact byte that mismatched. | ||
429 | ;;; | ||
430 | ;;; We already know at this point that the first three bytes of the | ||
431 | ;;; strings match each other, and they can be safely passed over before | ||
432 | ;;; starting the compare loop. So what this code does is skip over 0-3 | ||
433 | ;;; bytes, as much as necessary in order to dword-align the edi | ||
434 | ;;; pointer. (rsi will still be misaligned three times out of four.) | ||
435 | ;;; | ||
436 | ;;; It should be confessed that this loop usually does not represent | ||
437 | ;;; much of the total running time. Replacing it with a more | ||
438 | ;;; straightforward "rep cmpsb" would not drastically degrade | ||
439 | ;;; performance. | ||
440 | */ | ||
441 | |||
442 | LoopCmps: | ||
443 | mov rax, [rsi + rdx] | ||
444 | xor rax, [rdi + rdx] | ||
445 | jnz LeaveLoopCmps | ||
446 | |||
447 | mov rax, [rsi + rdx + 8] | ||
448 | xor rax, [rdi + rdx + 8] | ||
449 | jnz LeaveLoopCmps8 | ||
450 | |||
451 | |||
452 | mov rax, [rsi + rdx + 8+8] | ||
453 | xor rax, [rdi + rdx + 8+8] | ||
454 | jnz LeaveLoopCmps16 | ||
455 | |||
456 | add rdx,8+8+8 | ||
457 | |||
458 | BEFORE_JMP | ||
459 | jnz LoopCmps | ||
460 | jmp LenMaximum | ||
461 | AFTER_JMP | ||
462 | |||
463 | LeaveLoopCmps16: add rdx,8 | ||
464 | LeaveLoopCmps8: add rdx,8 | ||
465 | LeaveLoopCmps: | ||
466 | |||
467 | test eax, 0x0000FFFF | ||
468 | jnz LenLower | ||
469 | |||
470 | test eax,0xffffffff | ||
471 | |||
472 | jnz LenLower32 | ||
473 | |||
474 | add rdx,4 | ||
475 | shr rax,32 | ||
476 | or ax,ax | ||
477 | BEFORE_JMP | ||
478 | jnz LenLower | ||
479 | AFTER_JMP | ||
480 | |||
481 | LenLower32: | ||
482 | shr eax,16 | ||
483 | add rdx,2 | ||
484 | |||
485 | LenLower: | ||
486 | sub al, 1 | ||
487 | adc rdx, 0 | ||
488 | //;;; Calculate the length of the match. If it is longer than MAX_MATCH, | ||
489 | //;;; then automatically accept it as the best possible match and leave. | ||
490 | |||
491 | lea rax, [rdi + rdx] | ||
492 | sub rax, r9 | ||
493 | cmp eax, MAX_MATCH | ||
494 | BEFORE_JMP | ||
495 | jge LenMaximum | ||
496 | AFTER_JMP | ||
497 | /* | ||
498 | ;;; If the length of the match is not longer than the best match we | ||
499 | ;;; have so far, then forget it and return to the lookup loop. | ||
500 | ;/////////////////////////////////// | ||
501 | */ | ||
502 | cmp eax, r11d | ||
503 | jg LongerMatch | ||
504 | |||
505 | lea rsi,[r10+r11] | ||
506 | |||
507 | mov rdi, prev_ad | ||
508 | mov edx, [chainlenwmask] | ||
509 | BEFORE_JMP | ||
510 | jmp LookupLoop | ||
511 | AFTER_JMP | ||
512 | /* | ||
513 | ;;; s->match_start = cur_match; | ||
514 | ;;; best_len = len; | ||
515 | ;;; if (len >= nice_match) break; | ||
516 | ;;; scan_end = *(ushf*)(scan+best_len-1); | ||
517 | */ | ||
518 | LongerMatch: | ||
519 | mov r11d, eax | ||
520 | mov match_start, r8d | ||
521 | cmp eax, [nicematch] | ||
522 | BEFORE_JMP | ||
523 | jge LeaveNow | ||
524 | AFTER_JMP | ||
525 | |||
526 | lea rsi,[r10+rax] | ||
527 | |||
528 | movzx ebx, word ptr [r9 + rax - 1] | ||
529 | mov rdi, prev_ad | ||
530 | mov edx, [chainlenwmask] | ||
531 | BEFORE_JMP | ||
532 | jmp LookupLoop | ||
533 | AFTER_JMP | ||
534 | |||
535 | //;;; Accept the current string, with the maximum possible length. | ||
536 | |||
537 | LenMaximum: | ||
538 | mov r11d,MAX_MATCH | ||
539 | mov match_start, r8d | ||
540 | |||
541 | //;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len; | ||
542 | //;;; return s->lookahead; | ||
543 | |||
544 | LeaveNow: | ||
545 | mov eax, Lookahead | ||
546 | cmp r11d, eax | ||
547 | cmovng eax, r11d | ||
548 | |||
549 | |||
550 | |||
551 | //;;; Restore the stack and return from whence we came. | ||
552 | |||
553 | |||
554 | // mov rsi,[save_rsi] | ||
555 | // mov rdi,[save_rdi] | ||
556 | mov rbx,[save_rbx] | ||
557 | mov rbp,[save_rbp] | ||
558 | mov r12,[save_r12] | ||
559 | mov r13,[save_r13] | ||
560 | mov r14,[save_r14] | ||
561 | mov r15,[save_r15] | ||
562 | |||
563 | |||
564 | ret 0 | ||
565 | //; please don't remove this string ! | ||
566 | //; Your can freely use gvmat64 in any free or commercial app | ||
567 | //; but it is far better don't remove the string in the binary! | ||
568 | // db 0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998, converted to amd 64 by Gilles Vollant 2005",0dh,0ah,0 | ||
569 | |||
570 | |||
571 | match_init: | ||
572 | ret 0 | ||
573 | |||
574 | |||
diff --git a/contrib/infback9/inftree9.c b/contrib/infback9/inftree9.c index c2c8af9..8d15fdc 100644 --- a/contrib/infback9/inftree9.c +++ b/contrib/infback9/inftree9.c | |||
@@ -9,7 +9,7 @@ | |||
9 | #define MAXBITS 15 | 9 | #define MAXBITS 15 |
10 | 10 | ||
11 | const char inflate9_copyright[] = | 11 | const char inflate9_copyright[] = |
12 | " inflate9 1.2.3.9 Copyright 1995-2010 Mark Adler "; | 12 | " inflate9 1.2.4 Copyright 1995-2010 Mark Adler "; |
13 | /* | 13 | /* |
14 | If you use the zlib library in a product, an acknowledgment is welcome | 14 | If you use the zlib library in a product, an acknowledgment is welcome |
15 | in the documentation of your product. If for some reason you cannot | 15 | in the documentation of your product. If for some reason you cannot |
@@ -64,7 +64,7 @@ unsigned short FAR *work; | |||
64 | static const unsigned short lext[31] = { /* Length codes 257..285 extra */ | 64 | static const unsigned short lext[31] = { /* Length codes 257..285 extra */ |
65 | 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, | 65 | 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, |
66 | 130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132, | 66 | 130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132, |
67 | 133, 133, 133, 133, 144, 193, 201}; | 67 | 133, 133, 133, 133, 144, 66, 199}; |
68 | static const unsigned short dbase[32] = { /* Distance codes 0..31 base */ | 68 | static const unsigned short dbase[32] = { /* Distance codes 0..31 base */ |
69 | 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, | 69 | 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, |
70 | 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, | 70 | 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, |
diff --git a/contrib/masm686/match.asm b/contrib/masm686/match.asm deleted file mode 100644 index 4b03a71..0000000 --- a/contrib/masm686/match.asm +++ /dev/null | |||
@@ -1,413 +0,0 @@ | |||
1 | |||
2 | ; match.asm -- Pentium-Pro optimized version of longest_match() | ||
3 | ; | ||
4 | ; Updated for zlib 1.1.3 and converted to MASM 6.1x | ||
5 | ; Copyright (C) 2000 Dan Higdon <hdan@kinesoft.com> | ||
6 | ; and Chuck Walbourn <chuckw@kinesoft.com> | ||
7 | ; Corrections by Cosmin Truta <cosmint@cs.ubbcluj.ro> | ||
8 | ; | ||
9 | ; This is free software; you can redistribute it and/or modify it | ||
10 | ; under the terms of the GNU General Public License. | ||
11 | |||
12 | ; Based on match.S | ||
13 | ; Written for zlib 1.1.2 | ||
14 | ; Copyright (C) 1998 Brian Raiter <breadbox@muppetlabs.com> | ||
15 | ; | ||
16 | ; Modified by Gilles Vollant (2005) for add gzhead and gzindex | ||
17 | |||
18 | .686P | ||
19 | .MODEL FLAT | ||
20 | |||
21 | ;=========================================================================== | ||
22 | ; EQUATES | ||
23 | ;=========================================================================== | ||
24 | |||
25 | MAX_MATCH EQU 258 | ||
26 | MIN_MATCH EQU 3 | ||
27 | MIN_LOOKAHEAD EQU (MAX_MATCH + MIN_MATCH + 1) | ||
28 | MAX_MATCH_8 EQU ((MAX_MATCH + 7) AND (NOT 7)) | ||
29 | |||
30 | ;=========================================================================== | ||
31 | ; STRUCTURES | ||
32 | ;=========================================================================== | ||
33 | |||
34 | ; This STRUCT assumes a 4-byte alignment | ||
35 | |||
36 | DEFLATE_STATE STRUCT | ||
37 | ds_strm dd ? | ||
38 | ds_status dd ? | ||
39 | ds_pending_buf dd ? | ||
40 | ds_pending_buf_size dd ? | ||
41 | ds_pending_out dd ? | ||
42 | ds_pending dd ? | ||
43 | ds_wrap dd ? | ||
44 | ; gzhead and gzindex are added in zlib 1.2.2.2 (see deflate.h) | ||
45 | ds_gzhead dd ? | ||
46 | ds_gzindex dd ? | ||
47 | ds_data_type db ? | ||
48 | ds_method db ? | ||
49 | db ? ; padding | ||
50 | db ? ; padding | ||
51 | ds_last_flush dd ? | ||
52 | ds_w_size dd ? ; used | ||
53 | ds_w_bits dd ? | ||
54 | ds_w_mask dd ? ; used | ||
55 | ds_window dd ? ; used | ||
56 | ds_window_size dd ? | ||
57 | ds_prev dd ? ; used | ||
58 | ds_head dd ? | ||
59 | ds_ins_h dd ? | ||
60 | ds_hash_size dd ? | ||
61 | ds_hash_bits dd ? | ||
62 | ds_hash_mask dd ? | ||
63 | ds_hash_shift dd ? | ||
64 | ds_block_start dd ? | ||
65 | ds_match_length dd ? ; used | ||
66 | ds_prev_match dd ? ; used | ||
67 | ds_match_available dd ? | ||
68 | ds_strstart dd ? ; used | ||
69 | ds_match_start dd ? ; used | ||
70 | ds_lookahead dd ? ; used | ||
71 | ds_prev_length dd ? ; used | ||
72 | ds_max_chain_length dd ? ; used | ||
73 | ds_max_laxy_match dd ? | ||
74 | ds_level dd ? | ||
75 | ds_strategy dd ? | ||
76 | ds_good_match dd ? ; used | ||
77 | ds_nice_match dd ? ; used | ||
78 | |||
79 | ; Don't need anymore of the struct for match | ||
80 | DEFLATE_STATE ENDS | ||
81 | |||
82 | ;=========================================================================== | ||
83 | ; CODE | ||
84 | ;=========================================================================== | ||
85 | _TEXT SEGMENT | ||
86 | |||
87 | ;--------------------------------------------------------------------------- | ||
88 | ; match_init | ||
89 | ;--------------------------------------------------------------------------- | ||
90 | ALIGN 4 | ||
91 | PUBLIC _match_init | ||
92 | _match_init PROC | ||
93 | ; no initialization needed | ||
94 | ret | ||
95 | _match_init ENDP | ||
96 | |||
97 | ;--------------------------------------------------------------------------- | ||
98 | ; uInt longest_match(deflate_state *deflatestate, IPos curmatch) | ||
99 | ;--------------------------------------------------------------------------- | ||
100 | ALIGN 4 | ||
101 | |||
102 | PUBLIC _longest_match | ||
103 | _longest_match PROC | ||
104 | |||
105 | ; Since this code uses EBP for a scratch register, the stack frame must | ||
106 | ; be manually constructed and referenced relative to the ESP register. | ||
107 | |||
108 | ; Stack image | ||
109 | ; Variables | ||
110 | chainlenwmask = 0 ; high word: current chain len | ||
111 | ; low word: s->wmask | ||
112 | window = 4 ; local copy of s->window | ||
113 | windowbestlen = 8 ; s->window + bestlen | ||
114 | scanend = 12 ; last two bytes of string | ||
115 | scanstart = 16 ; first two bytes of string | ||
116 | scanalign = 20 ; dword-misalignment of string | ||
117 | nicematch = 24 ; a good enough match size | ||
118 | bestlen = 28 ; size of best match so far | ||
119 | scan = 32 ; ptr to string wanting match | ||
120 | varsize = 36 ; number of bytes (also offset to last saved register) | ||
121 | |||
122 | ; Saved Registers (actually pushed into place) | ||
123 | ebx_save = 36 | ||
124 | edi_save = 40 | ||
125 | esi_save = 44 | ||
126 | ebp_save = 48 | ||
127 | |||
128 | ; Parameters | ||
129 | retaddr = 52 | ||
130 | deflatestate = 56 | ||
131 | curmatch = 60 | ||
132 | |||
133 | ; Save registers that the compiler may be using | ||
134 | push ebp | ||
135 | push edi | ||
136 | push esi | ||
137 | push ebx | ||
138 | |||
139 | ; Allocate local variable space | ||
140 | sub esp,varsize | ||
141 | |||
142 | ; Retrieve the function arguments. ecx will hold cur_match | ||
143 | ; throughout the entire function. edx will hold the pointer to the | ||
144 | ; deflate_state structure during the function's setup (before | ||
145 | ; entering the main loop). | ||
146 | |||
147 | mov edx, [esp+deflatestate] | ||
148 | ASSUME edx:PTR DEFLATE_STATE | ||
149 | |||
150 | mov ecx, [esp+curmatch] | ||
151 | |||
152 | ; uInt wmask = s->w_mask; | ||
153 | ; unsigned chain_length = s->max_chain_length; | ||
154 | ; if (s->prev_length >= s->good_match) { | ||
155 | ; chain_length >>= 2; | ||
156 | ; } | ||
157 | |||
158 | mov eax, [edx].ds_prev_length | ||
159 | mov ebx, [edx].ds_good_match | ||
160 | cmp eax, ebx | ||
161 | mov eax, [edx].ds_w_mask | ||
162 | mov ebx, [edx].ds_max_chain_length | ||
163 | jl SHORT LastMatchGood | ||
164 | shr ebx, 2 | ||
165 | LastMatchGood: | ||
166 | |||
167 | ; chainlen is decremented once beforehand so that the function can | ||
168 | ; use the sign flag instead of the zero flag for the exit test. | ||
169 | ; It is then shifted into the high word, to make room for the wmask | ||
170 | ; value, which it will always accompany. | ||
171 | |||
172 | dec ebx | ||
173 | shl ebx, 16 | ||
174 | or ebx, eax | ||
175 | mov [esp+chainlenwmask], ebx | ||
176 | |||
177 | ; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; | ||
178 | |||
179 | mov eax, [edx].ds_nice_match | ||
180 | mov ebx, [edx].ds_lookahead | ||
181 | cmp ebx, eax | ||
182 | jl SHORT LookaheadLess | ||
183 | mov ebx, eax | ||
184 | LookaheadLess: | ||
185 | mov [esp+nicematch], ebx | ||
186 | |||
187 | ;/* register Bytef *scan = s->window + s->strstart; */ | ||
188 | |||
189 | mov esi, [edx].ds_window | ||
190 | mov [esp+window], esi | ||
191 | mov ebp, [edx].ds_strstart | ||
192 | lea edi, [esi+ebp] | ||
193 | mov [esp+scan],edi | ||
194 | |||
195 | ;/* Determine how many bytes the scan ptr is off from being */ | ||
196 | ;/* dword-aligned. */ | ||
197 | |||
198 | mov eax, edi | ||
199 | neg eax | ||
200 | and eax, 3 | ||
201 | mov [esp+scanalign], eax | ||
202 | |||
203 | ;/* IPos limit = s->strstart > (IPos)MAX_DIST(s) ? */ | ||
204 | ;/* s->strstart - (IPos)MAX_DIST(s) : NIL; */ | ||
205 | |||
206 | mov eax, [edx].ds_w_size | ||
207 | sub eax, MIN_LOOKAHEAD | ||
208 | sub ebp, eax | ||
209 | jg SHORT LimitPositive | ||
210 | xor ebp, ebp | ||
211 | LimitPositive: | ||
212 | |||
213 | ;/* int best_len = s->prev_length; */ | ||
214 | |||
215 | mov eax, [edx].ds_prev_length | ||
216 | mov [esp+bestlen], eax | ||
217 | |||
218 | ;/* Store the sum of s->window + best_len in %esi locally, and in %esi. */ | ||
219 | |||
220 | add esi, eax | ||
221 | mov [esp+windowbestlen], esi | ||
222 | |||
223 | ;/* register ush scan_start = *(ushf*)scan; */ | ||
224 | ;/* register ush scan_end = *(ushf*)(scan+best_len-1); */ | ||
225 | ;/* Posf *prev = s->prev; */ | ||
226 | |||
227 | movzx ebx, WORD PTR[edi] | ||
228 | mov [esp+scanstart], ebx | ||
229 | movzx ebx, WORD PTR[eax+edi-1] | ||
230 | mov [esp+scanend], ebx | ||
231 | mov edi, [edx].ds_prev | ||
232 | |||
233 | ;/* Jump into the main loop. */ | ||
234 | |||
235 | mov edx, [esp+chainlenwmask] | ||
236 | jmp SHORT LoopEntry | ||
237 | |||
238 | ;/* do { | ||
239 | ; * match = s->window + cur_match; | ||
240 | ; * if (*(ushf*)(match+best_len-1) != scan_end || | ||
241 | ; * *(ushf*)match != scan_start) continue; | ||
242 | ; * [...] | ||
243 | ; * } while ((cur_match = prev[cur_match & wmask]) > limit | ||
244 | ; * && --chain_length != 0); | ||
245 | ; * | ||
246 | ; * Here is the inner loop of the function. The function will spend the | ||
247 | ; * majority of its time in this loop, and majority of that time will | ||
248 | ; * be spent in the first ten instructions. | ||
249 | ; * | ||
250 | ; * Within this loop: | ||
251 | ; * %ebx = scanend | ||
252 | ; * %ecx = curmatch | ||
253 | ; * %edx = chainlenwmask - i.e., ((chainlen << 16) | wmask) | ||
254 | ; * %esi = windowbestlen - i.e., (window + bestlen) | ||
255 | ; * %edi = prev | ||
256 | ; * %ebp = limit | ||
257 | ; */ | ||
258 | |||
259 | ALIGN 4 | ||
260 | LookupLoop: | ||
261 | and ecx, edx | ||
262 | movzx ecx, WORD PTR[edi+ecx*2] | ||
263 | cmp ecx, ebp | ||
264 | jbe LeaveNow | ||
265 | sub edx, 000010000H | ||
266 | js LeaveNow | ||
267 | |||
268 | LoopEntry: | ||
269 | movzx eax, WORD PTR[esi+ecx-1] | ||
270 | cmp eax, ebx | ||
271 | jnz SHORT LookupLoop | ||
272 | |||
273 | mov eax, [esp+window] | ||
274 | movzx eax, WORD PTR[eax+ecx] | ||
275 | cmp eax, [esp+scanstart] | ||
276 | jnz SHORT LookupLoop | ||
277 | |||
278 | ;/* Store the current value of chainlen. */ | ||
279 | |||
280 | mov [esp+chainlenwmask], edx | ||
281 | |||
282 | ;/* Point %edi to the string under scrutiny, and %esi to the string we */ | ||
283 | ;/* are hoping to match it up with. In actuality, %esi and %edi are */ | ||
284 | ;/* both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and %edx is */ | ||
285 | ;/* initialized to -(MAX_MATCH_8 - scanalign). */ | ||
286 | |||
287 | mov esi, [esp+window] | ||
288 | mov edi, [esp+scan] | ||
289 | add esi, ecx | ||
290 | mov eax, [esp+scanalign] | ||
291 | mov edx, -MAX_MATCH_8 | ||
292 | lea edi, [edi+eax+MAX_MATCH_8] | ||
293 | lea esi, [esi+eax+MAX_MATCH_8] | ||
294 | |||
295 | ;/* Test the strings for equality, 8 bytes at a time. At the end, | ||
296 | ; * adjust %edx so that it is offset to the exact byte that mismatched. | ||
297 | ; * | ||
298 | ; * We already know at this point that the first three bytes of the | ||
299 | ; * strings match each other, and they can be safely passed over before | ||
300 | ; * starting the compare loop. So what this code does is skip over 0-3 | ||
301 | ; * bytes, as much as necessary in order to dword-align the %edi | ||
302 | ; * pointer. (%esi will still be misaligned three times out of four.) | ||
303 | ; * | ||
304 | ; * It should be confessed that this loop usually does not represent | ||
305 | ; * much of the total running time. Replacing it with a more | ||
306 | ; * straightforward "rep cmpsb" would not drastically degrade | ||
307 | ; * performance. | ||
308 | ; */ | ||
309 | |||
310 | LoopCmps: | ||
311 | mov eax, DWORD PTR[esi+edx] | ||
312 | xor eax, DWORD PTR[edi+edx] | ||
313 | jnz SHORT LeaveLoopCmps | ||
314 | |||
315 | mov eax, DWORD PTR[esi+edx+4] | ||
316 | xor eax, DWORD PTR[edi+edx+4] | ||
317 | jnz SHORT LeaveLoopCmps4 | ||
318 | |||
319 | add edx, 8 | ||
320 | jnz SHORT LoopCmps | ||
321 | jmp LenMaximum | ||
322 | ALIGN 4 | ||
323 | |||
324 | LeaveLoopCmps4: | ||
325 | add edx, 4 | ||
326 | |||
327 | LeaveLoopCmps: | ||
328 | test eax, 00000FFFFH | ||
329 | jnz SHORT LenLower | ||
330 | |||
331 | add edx, 2 | ||
332 | shr eax, 16 | ||
333 | |||
334 | LenLower: | ||
335 | sub al, 1 | ||
336 | adc edx, 0 | ||
337 | |||
338 | ;/* Calculate the length of the match. If it is longer than MAX_MATCH, */ | ||
339 | ;/* then automatically accept it as the best possible match and leave. */ | ||
340 | |||
341 | lea eax, [edi+edx] | ||
342 | mov edi, [esp+scan] | ||
343 | sub eax, edi | ||
344 | cmp eax, MAX_MATCH | ||
345 | jge SHORT LenMaximum | ||
346 | |||
347 | ;/* If the length of the match is not longer than the best match we */ | ||
348 | ;/* have so far, then forget it and return to the lookup loop. */ | ||
349 | |||
350 | mov edx, [esp+deflatestate] | ||
351 | mov ebx, [esp+bestlen] | ||
352 | cmp eax, ebx | ||
353 | jg SHORT LongerMatch | ||
354 | mov esi, [esp+windowbestlen] | ||
355 | mov edi, [edx].ds_prev | ||
356 | mov ebx, [esp+scanend] | ||
357 | mov edx, [esp+chainlenwmask] | ||
358 | jmp LookupLoop | ||
359 | ALIGN 4 | ||
360 | |||
361 | ;/* s->match_start = cur_match; */ | ||
362 | ;/* best_len = len; */ | ||
363 | ;/* if (len >= nice_match) break; */ | ||
364 | ;/* scan_end = *(ushf*)(scan+best_len-1); */ | ||
365 | |||
366 | LongerMatch: | ||
367 | mov ebx, [esp+nicematch] | ||
368 | mov [esp+bestlen], eax | ||
369 | mov [edx].ds_match_start, ecx | ||
370 | cmp eax, ebx | ||
371 | jge SHORT LeaveNow | ||
372 | mov esi, [esp+window] | ||
373 | add esi, eax | ||
374 | mov [esp+windowbestlen], esi | ||
375 | movzx ebx, WORD PTR[edi+eax-1] | ||
376 | mov edi, [edx].ds_prev | ||
377 | mov [esp+scanend], ebx | ||
378 | mov edx, [esp+chainlenwmask] | ||
379 | jmp LookupLoop | ||
380 | ALIGN 4 | ||
381 | |||
382 | ;/* Accept the current string, with the maximum possible length. */ | ||
383 | |||
384 | LenMaximum: | ||
385 | mov edx, [esp+deflatestate] | ||
386 | mov DWORD PTR[esp+bestlen], MAX_MATCH | ||
387 | mov [edx].ds_match_start, ecx | ||
388 | |||
389 | ;/* if ((uInt)best_len <= s->lookahead) return (uInt)best_len; */ | ||
390 | ;/* return s->lookahead; */ | ||
391 | |||
392 | LeaveNow: | ||
393 | mov edx, [esp+deflatestate] | ||
394 | mov ebx, [esp+bestlen] | ||
395 | mov eax, [edx].ds_lookahead | ||
396 | cmp ebx, eax | ||
397 | jg SHORT LookaheadRet | ||
398 | mov eax, ebx | ||
399 | LookaheadRet: | ||
400 | |||
401 | ; Restore the stack and return from whence we came. | ||
402 | |||
403 | add esp, varsize | ||
404 | pop ebx | ||
405 | pop esi | ||
406 | pop edi | ||
407 | pop ebp | ||
408 | ret | ||
409 | |||
410 | _longest_match ENDP | ||
411 | |||
412 | _TEXT ENDS | ||
413 | END | ||
diff --git a/contrib/masmx64/gvmat64.asm b/contrib/masmx64/gvmat64.asm index d2790cc..9879c28 100644 --- a/contrib/masmx64/gvmat64.asm +++ b/contrib/masmx64/gvmat64.asm | |||
@@ -2,8 +2,10 @@ | |||
2 | ; deflate_state *s, | 2 | ; deflate_state *s, |
3 | ; IPos cur_match); /* current match */ | 3 | ; IPos cur_match); /* current match */ |
4 | 4 | ||
5 | ; gvmat64.asm -- Asm portion of the optimized longest_match for 32 bits x86 | 5 | ; gvmat64.asm -- Asm portion of the optimized longest_match for 32 bits x86_64 |
6 | ; Copyright (C) 1995-2005 Jean-loup Gailly, Brian Raiter and Gilles Vollant. | 6 | ; (AMD64 on Athlon 64, Opteron, Phenom |
7 | ; and Intel EM64T on Pentium 4 with EM64T, Pentium D, Core 2 Duo, Core I5/I7) | ||
8 | ; Copyright (C) 1995-2010 Jean-loup Gailly, Brian Raiter and Gilles Vollant. | ||
7 | ; | 9 | ; |
8 | ; File written by Gilles Vollant, by converting to assembly the longest_match | 10 | ; File written by Gilles Vollant, by converting to assembly the longest_match |
9 | ; from Jean-loup Gailly in deflate.c of zLib and infoZip zip. | 11 | ; from Jean-loup Gailly in deflate.c of zLib and infoZip zip. |
@@ -11,6 +13,24 @@ | |||
11 | ; and by taking inspiration on asm686 with masm, optimised assembly code | 13 | ; and by taking inspiration on asm686 with masm, optimised assembly code |
12 | ; from Brian Raiter, written 1998 | 14 | ; from Brian Raiter, written 1998 |
13 | ; | 15 | ; |
16 | ; This software is provided 'as-is', without any express or implied | ||
17 | ; warranty. In no event will the authors be held liable for any damages | ||
18 | ; arising from the use of this software. | ||
19 | ; | ||
20 | ; Permission is granted to anyone to use this software for any purpose, | ||
21 | ; including commercial applications, and to alter it and redistribute it | ||
22 | ; freely, subject to the following restrictions: | ||
23 | ; | ||
24 | ; 1. The origin of this software must not be misrepresented; you must not | ||
25 | ; claim that you wrote the original software. If you use this software | ||
26 | ; in a product, an acknowledgment in the product documentation would be | ||
27 | ; appreciated but is not required. | ||
28 | ; 2. Altered source versions must be plainly marked as such, and must not be | ||
29 | ; misrepresented as being the original software | ||
30 | ; 3. This notice may not be removed or altered from any source distribution. | ||
31 | ; | ||
32 | ; | ||
33 | ; | ||
14 | ; http://www.zlib.net | 34 | ; http://www.zlib.net |
15 | ; http://www.winimage.com/zLibDll | 35 | ; http://www.winimage.com/zLibDll |
16 | ; http://www.muppetlabs.com/~breadbox/software/assembly.html | 36 | ; http://www.muppetlabs.com/~breadbox/software/assembly.html |
@@ -26,10 +46,10 @@ | |||
26 | ; | 46 | ; |
27 | ; This file compile with Microsoft Macro Assembler (x64) for AMD64 | 47 | ; This file compile with Microsoft Macro Assembler (x64) for AMD64 |
28 | ; | 48 | ; |
29 | ; ml64.exe is given with Visual Studio 2005 and Windows 2003 server DDK | 49 | ; ml64.exe is given with Visual Studio 2005/2008/2010 and Windows WDK |
30 | ; | 50 | ; |
31 | ; (you can get Windows 2003 server DDK with ml64 and cl for AMD64 from | 51 | ; (you can get Windows WDK with ml64 for AMD64 from |
32 | ; http://www.microsoft.com/whdc/devtools/ddk/default.mspx for low price) | 52 | ; http://www.microsoft.com/whdc/Devtools/wdk/default.mspx for low price) |
33 | ; | 53 | ; |
34 | 54 | ||
35 | 55 | ||
@@ -71,6 +91,25 @@ save_r13 equ rsp + 64 - LocalVarsSize | |||
71 | ;save_r15 equ rsp + 80 - LocalVarsSize | 91 | ;save_r15 equ rsp + 80 - LocalVarsSize |
72 | 92 | ||
73 | 93 | ||
94 | ; summary of register usage | ||
95 | ; scanend ebx | ||
96 | ; scanendw bx | ||
97 | ; chainlenwmask edx | ||
98 | ; curmatch rsi | ||
99 | ; curmatchd esi | ||
100 | ; windowbestlen r8 | ||
101 | ; scanalign r9 | ||
102 | ; scanalignd r9d | ||
103 | ; window r10 | ||
104 | ; bestlen r11 | ||
105 | ; bestlend r11d | ||
106 | ; scanstart r12d | ||
107 | ; scanstartw r12w | ||
108 | ; scan r13 | ||
109 | ; nicematch r14d | ||
110 | ; limit r15 | ||
111 | ; limitd r15d | ||
112 | ; prev rcx | ||
74 | 113 | ||
75 | ; all the +4 offsets are due to the addition of pending_buf_size (in zlib | 114 | ; all the +4 offsets are due to the addition of pending_buf_size (in zlib |
76 | ; in the deflate_state structure since the asm code was first written | 115 | ; in the deflate_state structure since the asm code was first written |
diff --git a/contrib/masmx64/inffas8664.c b/contrib/masmx64/inffas8664.c index 2263d77..e8af06f 100644 --- a/contrib/masmx64/inffas8664.c +++ b/contrib/masmx64/inffas8664.c | |||
@@ -130,7 +130,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ | |||
130 | ar.beg = ar.out - (start - strm->avail_out); | 130 | ar.beg = ar.out - (start - strm->avail_out); |
131 | ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT); | 131 | ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT); |
132 | ar.wsize = state->wsize; | 132 | ar.wsize = state->wsize; |
133 | ar.write = state->write; | 133 | ar.write = state->wnext; |
134 | ar.window = state->window; | 134 | ar.window = state->window; |
135 | ar.hold = state->hold; | 135 | ar.hold = state->hold; |
136 | ar.bits = state->bits; | 136 | ar.bits = state->bits; |
diff --git a/contrib/masmx64/inffasx64.asm b/contrib/masmx64/inffasx64.asm index c2ba03f..60a8d89 100644 --- a/contrib/masmx64/inffasx64.asm +++ b/contrib/masmx64/inffasx64.asm | |||
@@ -9,12 +9,16 @@ | |||
9 | ; ml64.exe /Flinffasx64 /c /Zi inffasx64.asm | 9 | ; ml64.exe /Flinffasx64 /c /Zi inffasx64.asm |
10 | ; with Microsoft Macro Assembler (x64) for AMD64 | 10 | ; with Microsoft Macro Assembler (x64) for AMD64 |
11 | ; | 11 | ; |
12 | ; ml64.exe is given with Visual Studio 2005, Windows 2003 server DDK | 12 | |
13 | ; This file compile with Microsoft Macro Assembler (x64) for AMD64 | ||
14 | ; | ||
15 | ; ml64.exe is given with Visual Studio 2005/2008/2010 and Windows WDK | ||
13 | ; | 16 | ; |
14 | ; (you can get Windows 2003 server DDK with ml64 and cl.exe for AMD64 from | 17 | ; (you can get Windows WDK with ml64 for AMD64 from |
15 | ; http://www.microsoft.com/whdc/devtools/ddk/default.mspx for low price) | 18 | ; http://www.microsoft.com/whdc/Devtools/wdk/default.mspx for low price) |
16 | ; | 19 | ; |
17 | 20 | ||
21 | |||
18 | .code | 22 | .code |
19 | inffas8664fnc PROC | 23 | inffas8664fnc PROC |
20 | 24 | ||
diff --git a/contrib/masmx86/bld_ml32.bat b/contrib/masmx86/bld_ml32.bat index 36962e1..e1b86bf 100644 --- a/contrib/masmx86/bld_ml32.bat +++ b/contrib/masmx86/bld_ml32.bat | |||
@@ -1,2 +1,2 @@ | |||
1 | ml /coff /Zi /c /Flgvmat32.lst gvmat32.asm | 1 | ml /coff /Zi /c /Flmatch686.lst match686.asm |
2 | ml /coff /Zi /c /Flinffas32.lst inffas32.asm | 2 | ml /coff /Zi /c /Flinffas32.lst inffas32.asm |
diff --git a/contrib/masmx86/gvmat32.asm b/contrib/masmx86/gvmat32.asm deleted file mode 100644 index 8111616..0000000 --- a/contrib/masmx86/gvmat32.asm +++ /dev/null | |||
@@ -1,972 +0,0 @@ | |||
1 | ; gvmat32.asm -- Asm portion of the optimized longest_match for 32 bits x86 | ||
2 | ; Copyright (C) 1995-1996 Jean-loup Gailly and Gilles Vollant. | ||
3 | ; File written by Gilles Vollant, by modifiying the longest_match | ||
4 | ; from Jean-loup Gailly in deflate.c | ||
5 | ; | ||
6 | ; http://www.zlib.net | ||
7 | ; http://www.winimage.com/zLibDll | ||
8 | ; http://www.muppetlabs.com/~breadbox/software/assembly.html | ||
9 | ; | ||
10 | ; For Visual C++ 4.x and higher and ML 6.x and higher | ||
11 | ; ml.exe is in directory \MASM611C of Win95 DDK | ||
12 | ; ml.exe is also distributed in http://www.masm32.com/masmdl.htm | ||
13 | ; and in VC++2003 toolkit at http://msdn.microsoft.com/visualc/vctoolkit2003/ | ||
14 | ; | ||
15 | ; this file contain two implementation of longest_match | ||
16 | ; | ||
17 | ; longest_match_7fff : written 1996 by Gilles Vollant optimized for | ||
18 | ; first Pentium. Assume s->w_mask == 0x7fff | ||
19 | ; longest_match_686 : written by Brian raiter (1998), optimized for Pentium Pro | ||
20 | ; | ||
21 | ; for using an seembly version of longest_match, you need define ASMV in project | ||
22 | ; There is two way in using gvmat32.asm | ||
23 | ; | ||
24 | ; A) Suggested method | ||
25 | ; if you want include both longest_match_7fff and longest_match_686 | ||
26 | ; compile the asm file running | ||
27 | ; ml /coff /Zi /Flgvmat32.lst /c gvmat32.asm | ||
28 | ; and include gvmat32c.c in your project | ||
29 | ; if you have an old cpu (386,486 or first Pentium) and s->w_mask==0x7fff, | ||
30 | ; longest_match_7fff will be used | ||
31 | ; if you have a more modern CPU (Pentium Pro, II and higher) | ||
32 | ; longest_match_686 will be used | ||
33 | ; on old cpu with s->w_mask!=0x7fff, longest_match_686 will be used, | ||
34 | ; but this is not a sitation you'll find often | ||
35 | ; | ||
36 | ; B) Alternative | ||
37 | ; if you are not interresed in old cpu performance and want the smaller | ||
38 | ; binaries possible | ||
39 | ; | ||
40 | ; compile the asm file running | ||
41 | ; ml /coff /Zi /c /Flgvmat32.lst /DNOOLDPENTIUMCODE gvmat32.asm | ||
42 | ; and do not include gvmat32c.c in your project (ou define also | ||
43 | ; NOOLDPENTIUMCODE) | ||
44 | ; | ||
45 | ; note : as I known, longest_match_686 is very faster than longest_match_7fff | ||
46 | ; on pentium Pro/II/III, faster (but less) in P4, but it seem | ||
47 | ; longest_match_7fff can be faster (very very litte) on AMD Athlon64/K8 | ||
48 | ; | ||
49 | ; see below : zlib1222add must be adjuster if you use a zlib version < 1.2.2.2 | ||
50 | |||
51 | ;uInt longest_match_7fff(s, cur_match) | ||
52 | ; deflate_state *s; | ||
53 | ; IPos cur_match; /* current match */ | ||
54 | |||
55 | NbStack equ 76 | ||
56 | cur_match equ dword ptr[esp+NbStack-0] | ||
57 | str_s equ dword ptr[esp+NbStack-4] | ||
58 | ; 5 dword on top (ret,ebp,esi,edi,ebx) | ||
59 | adrret equ dword ptr[esp+NbStack-8] | ||
60 | pushebp equ dword ptr[esp+NbStack-12] | ||
61 | pushedi equ dword ptr[esp+NbStack-16] | ||
62 | pushesi equ dword ptr[esp+NbStack-20] | ||
63 | pushebx equ dword ptr[esp+NbStack-24] | ||
64 | |||
65 | chain_length equ dword ptr [esp+NbStack-28] | ||
66 | limit equ dword ptr [esp+NbStack-32] | ||
67 | best_len equ dword ptr [esp+NbStack-36] | ||
68 | window equ dword ptr [esp+NbStack-40] | ||
69 | prev equ dword ptr [esp+NbStack-44] | ||
70 | scan_start equ word ptr [esp+NbStack-48] | ||
71 | wmask equ dword ptr [esp+NbStack-52] | ||
72 | match_start_ptr equ dword ptr [esp+NbStack-56] | ||
73 | nice_match equ dword ptr [esp+NbStack-60] | ||
74 | scan equ dword ptr [esp+NbStack-64] | ||
75 | |||
76 | windowlen equ dword ptr [esp+NbStack-68] | ||
77 | match_start equ dword ptr [esp+NbStack-72] | ||
78 | strend equ dword ptr [esp+NbStack-76] | ||
79 | NbStackAdd equ (NbStack-24) | ||
80 | |||
81 | .386p | ||
82 | |||
83 | name gvmatch | ||
84 | .MODEL FLAT | ||
85 | |||
86 | |||
87 | |||
88 | ; all the +zlib1222add offsets are due to the addition of fields | ||
89 | ; in zlib in the deflate_state structure since the asm code was first written | ||
90 | ; (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)"). | ||
91 | ; (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0"). | ||
92 | ; if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8"). | ||
93 | |||
94 | zlib1222add equ 8 | ||
95 | |||
96 | ; Note : these value are good with a 8 bytes boundary pack structure | ||
97 | dep_chain_length equ 74h+zlib1222add | ||
98 | dep_window equ 30h+zlib1222add | ||
99 | dep_strstart equ 64h+zlib1222add | ||
100 | dep_prev_length equ 70h+zlib1222add | ||
101 | dep_nice_match equ 88h+zlib1222add | ||
102 | dep_w_size equ 24h+zlib1222add | ||
103 | dep_prev equ 38h+zlib1222add | ||
104 | dep_w_mask equ 2ch+zlib1222add | ||
105 | dep_good_match equ 84h+zlib1222add | ||
106 | dep_match_start equ 68h+zlib1222add | ||
107 | dep_lookahead equ 6ch+zlib1222add | ||
108 | |||
109 | |||
110 | _TEXT segment | ||
111 | |||
112 | IFDEF NOUNDERLINE | ||
113 | IFDEF NOOLDPENTIUMCODE | ||
114 | public longest_match | ||
115 | public match_init | ||
116 | ELSE | ||
117 | public longest_match_7fff | ||
118 | public cpudetect32 | ||
119 | public longest_match_686 | ||
120 | ENDIF | ||
121 | ELSE | ||
122 | IFDEF NOOLDPENTIUMCODE | ||
123 | public _longest_match | ||
124 | public _match_init | ||
125 | ELSE | ||
126 | public _longest_match_7fff | ||
127 | public _cpudetect32 | ||
128 | public _longest_match_686 | ||
129 | ENDIF | ||
130 | ENDIF | ||
131 | |||
132 | MAX_MATCH equ 258 | ||
133 | MIN_MATCH equ 3 | ||
134 | MIN_LOOKAHEAD equ (MAX_MATCH+MIN_MATCH+1) | ||
135 | |||
136 | |||
137 | |||
138 | IFNDEF NOOLDPENTIUMCODE | ||
139 | IFDEF NOUNDERLINE | ||
140 | longest_match_7fff proc near | ||
141 | ELSE | ||
142 | _longest_match_7fff proc near | ||
143 | ENDIF | ||
144 | |||
145 | mov edx,[esp+4] | ||
146 | |||
147 | |||
148 | |||
149 | push ebp | ||
150 | push edi | ||
151 | push esi | ||
152 | push ebx | ||
153 | |||
154 | sub esp,NbStackAdd | ||
155 | |||
156 | ; initialize or check the variables used in match.asm. | ||
157 | mov ebp,edx | ||
158 | |||
159 | ; chain_length = s->max_chain_length | ||
160 | ; if (prev_length>=good_match) chain_length >>= 2 | ||
161 | mov edx,[ebp+dep_chain_length] | ||
162 | mov ebx,[ebp+dep_prev_length] | ||
163 | cmp [ebp+dep_good_match],ebx | ||
164 | ja noshr | ||
165 | shr edx,2 | ||
166 | noshr: | ||
167 | ; we increment chain_length because in the asm, the --chain_lenght is in the beginning of the loop | ||
168 | inc edx | ||
169 | mov edi,[ebp+dep_nice_match] | ||
170 | mov chain_length,edx | ||
171 | mov eax,[ebp+dep_lookahead] | ||
172 | cmp eax,edi | ||
173 | ; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; | ||
174 | jae nolookaheadnicematch | ||
175 | mov edi,eax | ||
176 | nolookaheadnicematch: | ||
177 | ; best_len = s->prev_length | ||
178 | mov best_len,ebx | ||
179 | |||
180 | ; window = s->window | ||
181 | mov esi,[ebp+dep_window] | ||
182 | mov ecx,[ebp+dep_strstart] | ||
183 | mov window,esi | ||
184 | |||
185 | mov nice_match,edi | ||
186 | ; scan = window + strstart | ||
187 | add esi,ecx | ||
188 | mov scan,esi | ||
189 | ; dx = *window | ||
190 | mov dx,word ptr [esi] | ||
191 | ; bx = *(window+best_len-1) | ||
192 | mov bx,word ptr [esi+ebx-1] | ||
193 | add esi,MAX_MATCH-1 | ||
194 | ; scan_start = *scan | ||
195 | mov scan_start,dx | ||
196 | ; strend = scan + MAX_MATCH-1 | ||
197 | mov strend,esi | ||
198 | ; bx = scan_end = *(window+best_len-1) | ||
199 | |||
200 | ; IPos limit = s->strstart > (IPos)MAX_DIST(s) ? | ||
201 | ; s->strstart - (IPos)MAX_DIST(s) : NIL; | ||
202 | |||
203 | mov esi,[ebp+dep_w_size] | ||
204 | sub esi,MIN_LOOKAHEAD | ||
205 | ; here esi = MAX_DIST(s) | ||
206 | sub ecx,esi | ||
207 | ja nodist | ||
208 | xor ecx,ecx | ||
209 | nodist: | ||
210 | mov limit,ecx | ||
211 | |||
212 | ; prev = s->prev | ||
213 | mov edx,[ebp+dep_prev] | ||
214 | mov prev,edx | ||
215 | |||
216 | ; | ||
217 | mov edx,dword ptr [ebp+dep_match_start] | ||
218 | mov bp,scan_start | ||
219 | mov eax,cur_match | ||
220 | mov match_start,edx | ||
221 | |||
222 | mov edx,window | ||
223 | mov edi,edx | ||
224 | add edi,best_len | ||
225 | mov esi,prev | ||
226 | dec edi | ||
227 | ; windowlen = window + best_len -1 | ||
228 | mov windowlen,edi | ||
229 | |||
230 | jmp beginloop2 | ||
231 | align 4 | ||
232 | |||
233 | ; here, in the loop | ||
234 | ; eax = ax = cur_match | ||
235 | ; ecx = limit | ||
236 | ; bx = scan_end | ||
237 | ; bp = scan_start | ||
238 | ; edi = windowlen (window + best_len -1) | ||
239 | ; esi = prev | ||
240 | |||
241 | |||
242 | ;// here; chain_length <=16 | ||
243 | normalbeg0add16: | ||
244 | add chain_length,16 | ||
245 | jz exitloop | ||
246 | normalbeg0: | ||
247 | cmp word ptr[edi+eax],bx | ||
248 | je normalbeg2noroll | ||
249 | rcontlabnoroll: | ||
250 | ; cur_match = prev[cur_match & wmask] | ||
251 | and eax,7fffh | ||
252 | mov ax,word ptr[esi+eax*2] | ||
253 | ; if cur_match > limit, go to exitloop | ||
254 | cmp ecx,eax | ||
255 | jnb exitloop | ||
256 | ; if --chain_length != 0, go to exitloop | ||
257 | dec chain_length | ||
258 | jnz normalbeg0 | ||
259 | jmp exitloop | ||
260 | |||
261 | normalbeg2noroll: | ||
262 | ; if (scan_start==*(cur_match+window)) goto normalbeg2 | ||
263 | cmp bp,word ptr[edx+eax] | ||
264 | jne rcontlabnoroll | ||
265 | jmp normalbeg2 | ||
266 | |||
267 | contloop3: | ||
268 | mov edi,windowlen | ||
269 | |||
270 | ; cur_match = prev[cur_match & wmask] | ||
271 | and eax,7fffh | ||
272 | mov ax,word ptr[esi+eax*2] | ||
273 | ; if cur_match > limit, go to exitloop | ||
274 | cmp ecx,eax | ||
275 | jnbexitloopshort1: | ||
276 | jnb exitloop | ||
277 | ; if --chain_length != 0, go to exitloop | ||
278 | |||
279 | |||
280 | ; begin the main loop | ||
281 | beginloop2: | ||
282 | sub chain_length,16+1 | ||
283 | ; if chain_length <=16, don't use the unrolled loop | ||
284 | jna normalbeg0add16 | ||
285 | |||
286 | do16: | ||
287 | cmp word ptr[edi+eax],bx | ||
288 | je normalbeg2dc0 | ||
289 | |||
290 | maccn MACRO lab | ||
291 | and eax,7fffh | ||
292 | mov ax,word ptr[esi+eax*2] | ||
293 | cmp ecx,eax | ||
294 | jnb exitloop | ||
295 | cmp word ptr[edi+eax],bx | ||
296 | je lab | ||
297 | ENDM | ||
298 | |||
299 | rcontloop0: | ||
300 | maccn normalbeg2dc1 | ||
301 | |||
302 | rcontloop1: | ||
303 | maccn normalbeg2dc2 | ||
304 | |||
305 | rcontloop2: | ||
306 | maccn normalbeg2dc3 | ||
307 | |||
308 | rcontloop3: | ||
309 | maccn normalbeg2dc4 | ||
310 | |||
311 | rcontloop4: | ||
312 | maccn normalbeg2dc5 | ||
313 | |||
314 | rcontloop5: | ||
315 | maccn normalbeg2dc6 | ||
316 | |||
317 | rcontloop6: | ||
318 | maccn normalbeg2dc7 | ||
319 | |||
320 | rcontloop7: | ||
321 | maccn normalbeg2dc8 | ||
322 | |||
323 | rcontloop8: | ||
324 | maccn normalbeg2dc9 | ||
325 | |||
326 | rcontloop9: | ||
327 | maccn normalbeg2dc10 | ||
328 | |||
329 | rcontloop10: | ||
330 | maccn short normalbeg2dc11 | ||
331 | |||
332 | rcontloop11: | ||
333 | maccn short normalbeg2dc12 | ||
334 | |||
335 | rcontloop12: | ||
336 | maccn short normalbeg2dc13 | ||
337 | |||
338 | rcontloop13: | ||
339 | maccn short normalbeg2dc14 | ||
340 | |||
341 | rcontloop14: | ||
342 | maccn short normalbeg2dc15 | ||
343 | |||
344 | rcontloop15: | ||
345 | and eax,7fffh | ||
346 | mov ax,word ptr[esi+eax*2] | ||
347 | cmp ecx,eax | ||
348 | jnb exitloop | ||
349 | |||
350 | sub chain_length,16 | ||
351 | ja do16 | ||
352 | jmp normalbeg0add16 | ||
353 | |||
354 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
355 | |||
356 | normbeg MACRO rcontlab,valsub | ||
357 | ; if we are here, we know that *(match+best_len-1) == scan_end | ||
358 | cmp bp,word ptr[edx+eax] | ||
359 | ; if (match != scan_start) goto rcontlab | ||
360 | jne rcontlab | ||
361 | ; calculate the good chain_length, and we'll compare scan and match string | ||
362 | add chain_length,16-valsub | ||
363 | jmp iseq | ||
364 | ENDM | ||
365 | |||
366 | |||
367 | normalbeg2dc11: | ||
368 | normbeg rcontloop11,11 | ||
369 | |||
370 | normalbeg2dc12: | ||
371 | normbeg short rcontloop12,12 | ||
372 | |||
373 | normalbeg2dc13: | ||
374 | normbeg short rcontloop13,13 | ||
375 | |||
376 | normalbeg2dc14: | ||
377 | normbeg short rcontloop14,14 | ||
378 | |||
379 | normalbeg2dc15: | ||
380 | normbeg short rcontloop15,15 | ||
381 | |||
382 | normalbeg2dc10: | ||
383 | normbeg rcontloop10,10 | ||
384 | |||
385 | normalbeg2dc9: | ||
386 | normbeg rcontloop9,9 | ||
387 | |||
388 | normalbeg2dc8: | ||
389 | normbeg rcontloop8,8 | ||
390 | |||
391 | normalbeg2dc7: | ||
392 | normbeg rcontloop7,7 | ||
393 | |||
394 | normalbeg2dc6: | ||
395 | normbeg rcontloop6,6 | ||
396 | |||
397 | normalbeg2dc5: | ||
398 | normbeg rcontloop5,5 | ||
399 | |||
400 | normalbeg2dc4: | ||
401 | normbeg rcontloop4,4 | ||
402 | |||
403 | normalbeg2dc3: | ||
404 | normbeg rcontloop3,3 | ||
405 | |||
406 | normalbeg2dc2: | ||
407 | normbeg rcontloop2,2 | ||
408 | |||
409 | normalbeg2dc1: | ||
410 | normbeg rcontloop1,1 | ||
411 | |||
412 | normalbeg2dc0: | ||
413 | normbeg rcontloop0,0 | ||
414 | |||
415 | |||
416 | ; we go in normalbeg2 because *(ushf*)(match+best_len-1) == scan_end | ||
417 | |||
418 | normalbeg2: | ||
419 | mov edi,window | ||
420 | |||
421 | cmp bp,word ptr[edi+eax] | ||
422 | jne contloop3 ; if *(ushf*)match != scan_start, continue | ||
423 | |||
424 | iseq: | ||
425 | ; if we are here, we know that *(match+best_len-1) == scan_end | ||
426 | ; and (match == scan_start) | ||
427 | |||
428 | mov edi,edx | ||
429 | mov esi,scan ; esi = scan | ||
430 | add edi,eax ; edi = window + cur_match = match | ||
431 | |||
432 | mov edx,[esi+3] ; compare manually dword at match+3 | ||
433 | xor edx,[edi+3] ; and scan +3 | ||
434 | |||
435 | jz begincompare ; if equal, go to long compare | ||
436 | |||
437 | ; we will determine the unmatch byte and calculate len (in esi) | ||
438 | or dl,dl | ||
439 | je eq1rr | ||
440 | mov esi,3 | ||
441 | jmp trfinval | ||
442 | eq1rr: | ||
443 | or dx,dx | ||
444 | je eq1 | ||
445 | |||
446 | mov esi,4 | ||
447 | jmp trfinval | ||
448 | eq1: | ||
449 | and edx,0ffffffh | ||
450 | jz eq11 | ||
451 | mov esi,5 | ||
452 | jmp trfinval | ||
453 | eq11: | ||
454 | mov esi,6 | ||
455 | jmp trfinval | ||
456 | |||
457 | begincompare: | ||
458 | ; here we now scan and match begin same | ||
459 | add edi,6 | ||
460 | add esi,6 | ||
461 | mov ecx,(MAX_MATCH-(2+4))/4 ; scan for at most MAX_MATCH bytes | ||
462 | repe cmpsd ; loop until mismatch | ||
463 | |||
464 | je trfin ; go to trfin if not unmatch | ||
465 | ; we determine the unmatch byte | ||
466 | sub esi,4 | ||
467 | mov edx,[edi-4] | ||
468 | xor edx,[esi] | ||
469 | |||
470 | or dl,dl | ||
471 | jnz trfin | ||
472 | inc esi | ||
473 | |||
474 | or dx,dx | ||
475 | jnz trfin | ||
476 | inc esi | ||
477 | |||
478 | and edx,0ffffffh | ||
479 | jnz trfin | ||
480 | inc esi | ||
481 | |||
482 | trfin: | ||
483 | sub esi,scan ; esi = len | ||
484 | trfinval: | ||
485 | ; here we have finised compare, and esi contain len of equal string | ||
486 | cmp esi,best_len ; if len > best_len, go newbestlen | ||
487 | ja short newbestlen | ||
488 | ; now we restore edx, ecx and esi, for the big loop | ||
489 | mov esi,prev | ||
490 | mov ecx,limit | ||
491 | mov edx,window | ||
492 | jmp contloop3 | ||
493 | |||
494 | newbestlen: | ||
495 | mov best_len,esi ; len become best_len | ||
496 | |||
497 | mov match_start,eax ; save new position as match_start | ||
498 | cmp esi,nice_match ; if best_len >= nice_match, exit | ||
499 | jae exitloop | ||
500 | mov ecx,scan | ||
501 | mov edx,window ; restore edx=window | ||
502 | add ecx,esi | ||
503 | add esi,edx | ||
504 | |||
505 | dec esi | ||
506 | mov windowlen,esi ; windowlen = window + best_len-1 | ||
507 | mov bx,[ecx-1] ; bx = *(scan+best_len-1) = scan_end | ||
508 | |||
509 | ; now we restore ecx and esi, for the big loop : | ||
510 | mov esi,prev | ||
511 | mov ecx,limit | ||
512 | jmp contloop3 | ||
513 | |||
514 | exitloop: | ||
515 | ; exit : s->match_start=match_start | ||
516 | mov ebx,match_start | ||
517 | mov ebp,str_s | ||
518 | mov ecx,best_len | ||
519 | mov dword ptr [ebp+dep_match_start],ebx | ||
520 | mov eax,dword ptr [ebp+dep_lookahead] | ||
521 | cmp ecx,eax | ||
522 | ja minexlo | ||
523 | mov eax,ecx | ||
524 | minexlo: | ||
525 | ; return min(best_len,s->lookahead) | ||
526 | |||
527 | ; restore stack and register ebx,esi,edi,ebp | ||
528 | add esp,NbStackAdd | ||
529 | |||
530 | pop ebx | ||
531 | pop esi | ||
532 | pop edi | ||
533 | pop ebp | ||
534 | ret | ||
535 | InfoAuthor: | ||
536 | ; please don't remove this string ! | ||
537 | ; Your are free use gvmat32 in any fre or commercial apps if you don't remove the string in the binary! | ||
538 | db 0dh,0ah,"GVMat32 optimised assembly code written 1996-98 by Gilles Vollant",0dh,0ah | ||
539 | |||
540 | |||
541 | |||
542 | IFDEF NOUNDERLINE | ||
543 | longest_match_7fff endp | ||
544 | ELSE | ||
545 | _longest_match_7fff endp | ||
546 | ENDIF | ||
547 | |||
548 | |||
549 | IFDEF NOUNDERLINE | ||
550 | cpudetect32 proc near | ||
551 | ELSE | ||
552 | _cpudetect32 proc near | ||
553 | ENDIF | ||
554 | |||
555 | push ebx | ||
556 | |||
557 | pushfd ; push original EFLAGS | ||
558 | pop eax ; get original EFLAGS | ||
559 | mov ecx, eax ; save original EFLAGS | ||
560 | xor eax, 40000h ; flip AC bit in EFLAGS | ||
561 | push eax ; save new EFLAGS value on stack | ||
562 | popfd ; replace current EFLAGS value | ||
563 | pushfd ; get new EFLAGS | ||
564 | pop eax ; store new EFLAGS in EAX | ||
565 | xor eax, ecx ; can’t toggle AC bit, processor=80386 | ||
566 | jz end_cpu_is_386 ; jump if 80386 processor | ||
567 | push ecx | ||
568 | popfd ; restore AC bit in EFLAGS first | ||
569 | |||
570 | pushfd | ||
571 | pushfd | ||
572 | pop ecx | ||
573 | |||
574 | mov eax, ecx ; get original EFLAGS | ||
575 | xor eax, 200000h ; flip ID bit in EFLAGS | ||
576 | push eax ; save new EFLAGS value on stack | ||
577 | popfd ; replace current EFLAGS value | ||
578 | pushfd ; get new EFLAGS | ||
579 | pop eax ; store new EFLAGS in EAX | ||
580 | popfd ; restore original EFLAGS | ||
581 | xor eax, ecx ; can’t toggle ID bit, | ||
582 | je is_old_486 ; processor=old | ||
583 | |||
584 | mov eax,1 | ||
585 | db 0fh,0a2h ;CPUID | ||
586 | |||
587 | exitcpudetect: | ||
588 | pop ebx | ||
589 | ret | ||
590 | |||
591 | end_cpu_is_386: | ||
592 | mov eax,0300h | ||
593 | jmp exitcpudetect | ||
594 | |||
595 | is_old_486: | ||
596 | mov eax,0400h | ||
597 | jmp exitcpudetect | ||
598 | |||
599 | IFDEF NOUNDERLINE | ||
600 | cpudetect32 endp | ||
601 | ELSE | ||
602 | _cpudetect32 endp | ||
603 | ENDIF | ||
604 | ENDIF | ||
605 | |||
606 | MAX_MATCH equ 258 | ||
607 | MIN_MATCH equ 3 | ||
608 | MIN_LOOKAHEAD equ (MAX_MATCH + MIN_MATCH + 1) | ||
609 | MAX_MATCH_8_ equ ((MAX_MATCH + 7) AND 0FFF0h) | ||
610 | |||
611 | |||
612 | ;;; stack frame offsets | ||
613 | |||
614 | chainlenwmask equ esp + 0 ; high word: current chain len | ||
615 | ; low word: s->wmask | ||
616 | window equ esp + 4 ; local copy of s->window | ||
617 | windowbestlen equ esp + 8 ; s->window + bestlen | ||
618 | scanstart equ esp + 16 ; first two bytes of string | ||
619 | scanend equ esp + 12 ; last two bytes of string | ||
620 | scanalign equ esp + 20 ; dword-misalignment of string | ||
621 | nicematch equ esp + 24 ; a good enough match size | ||
622 | bestlen equ esp + 28 ; size of best match so far | ||
623 | scan equ esp + 32 ; ptr to string wanting match | ||
624 | |||
625 | LocalVarsSize equ 36 | ||
626 | ; saved ebx byte esp + 36 | ||
627 | ; saved edi byte esp + 40 | ||
628 | ; saved esi byte esp + 44 | ||
629 | ; saved ebp byte esp + 48 | ||
630 | ; return address byte esp + 52 | ||
631 | deflatestate equ esp + 56 ; the function arguments | ||
632 | curmatch equ esp + 60 | ||
633 | |||
634 | ;;; Offsets for fields in the deflate_state structure. These numbers | ||
635 | ;;; are calculated from the definition of deflate_state, with the | ||
636 | ;;; assumption that the compiler will dword-align the fields. (Thus, | ||
637 | ;;; changing the definition of deflate_state could easily cause this | ||
638 | ;;; program to crash horribly, without so much as a warning at | ||
639 | ;;; compile time. Sigh.) | ||
640 | |||
641 | dsWSize equ 36+zlib1222add | ||
642 | dsWMask equ 44+zlib1222add | ||
643 | dsWindow equ 48+zlib1222add | ||
644 | dsPrev equ 56+zlib1222add | ||
645 | dsMatchLen equ 88+zlib1222add | ||
646 | dsPrevMatch equ 92+zlib1222add | ||
647 | dsStrStart equ 100+zlib1222add | ||
648 | dsMatchStart equ 104+zlib1222add | ||
649 | dsLookahead equ 108+zlib1222add | ||
650 | dsPrevLen equ 112+zlib1222add | ||
651 | dsMaxChainLen equ 116+zlib1222add | ||
652 | dsGoodMatch equ 132+zlib1222add | ||
653 | dsNiceMatch equ 136+zlib1222add | ||
654 | |||
655 | |||
656 | ;;; match.asm -- Pentium-Pro-optimized version of longest_match() | ||
657 | ;;; Written for zlib 1.1.2 | ||
658 | ;;; Copyright (C) 1998 Brian Raiter <breadbox@muppetlabs.com> | ||
659 | ;;; You can look at http://www.muppetlabs.com/~breadbox/software/assembly.html | ||
660 | ;;; | ||
661 | ;;; This is free software; you can redistribute it and/or modify it | ||
662 | ;;; under the terms of the GNU General Public License. | ||
663 | |||
664 | ;GLOBAL _longest_match, _match_init | ||
665 | |||
666 | |||
667 | ;SECTION .text | ||
668 | |||
669 | ;;; uInt longest_match(deflate_state *deflatestate, IPos curmatch) | ||
670 | |||
671 | ;_longest_match: | ||
672 | IFDEF NOOLDPENTIUMCODE | ||
673 | IFDEF NOUNDERLINE | ||
674 | longest_match proc near | ||
675 | ELSE | ||
676 | _longest_match proc near | ||
677 | ENDIF | ||
678 | ELSE | ||
679 | IFDEF NOUNDERLINE | ||
680 | longest_match_686 proc near | ||
681 | ELSE | ||
682 | _longest_match_686 proc near | ||
683 | ENDIF | ||
684 | ENDIF | ||
685 | |||
686 | ;;; Save registers that the compiler may be using, and adjust esp to | ||
687 | ;;; make room for our stack frame. | ||
688 | |||
689 | push ebp | ||
690 | push edi | ||
691 | push esi | ||
692 | push ebx | ||
693 | sub esp, LocalVarsSize | ||
694 | |||
695 | ;;; Retrieve the function arguments. ecx will hold cur_match | ||
696 | ;;; throughout the entire function. edx will hold the pointer to the | ||
697 | ;;; deflate_state structure during the function's setup (before | ||
698 | ;;; entering the main loop. | ||
699 | |||
700 | mov edx, [deflatestate] | ||
701 | mov ecx, [curmatch] | ||
702 | |||
703 | ;;; uInt wmask = s->w_mask; | ||
704 | ;;; unsigned chain_length = s->max_chain_length; | ||
705 | ;;; if (s->prev_length >= s->good_match) { | ||
706 | ;;; chain_length >>= 2; | ||
707 | ;;; } | ||
708 | |||
709 | mov eax, [edx + dsPrevLen] | ||
710 | mov ebx, [edx + dsGoodMatch] | ||
711 | cmp eax, ebx | ||
712 | mov eax, [edx + dsWMask] | ||
713 | mov ebx, [edx + dsMaxChainLen] | ||
714 | jl LastMatchGood | ||
715 | shr ebx, 2 | ||
716 | LastMatchGood: | ||
717 | |||
718 | ;;; chainlen is decremented once beforehand so that the function can | ||
719 | ;;; use the sign flag instead of the zero flag for the exit test. | ||
720 | ;;; It is then shifted into the high word, to make room for the wmask | ||
721 | ;;; value, which it will always accompany. | ||
722 | |||
723 | dec ebx | ||
724 | shl ebx, 16 | ||
725 | or ebx, eax | ||
726 | mov [chainlenwmask], ebx | ||
727 | |||
728 | ;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; | ||
729 | |||
730 | mov eax, [edx + dsNiceMatch] | ||
731 | mov ebx, [edx + dsLookahead] | ||
732 | cmp ebx, eax | ||
733 | jl LookaheadLess | ||
734 | mov ebx, eax | ||
735 | LookaheadLess: mov [nicematch], ebx | ||
736 | |||
737 | ;;; register Bytef *scan = s->window + s->strstart; | ||
738 | |||
739 | mov esi, [edx + dsWindow] | ||
740 | mov [window], esi | ||
741 | mov ebp, [edx + dsStrStart] | ||
742 | lea edi, [esi + ebp] | ||
743 | mov [scan], edi | ||
744 | |||
745 | ;;; Determine how many bytes the scan ptr is off from being | ||
746 | ;;; dword-aligned. | ||
747 | |||
748 | mov eax, edi | ||
749 | neg eax | ||
750 | and eax, 3 | ||
751 | mov [scanalign], eax | ||
752 | |||
753 | ;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ? | ||
754 | ;;; s->strstart - (IPos)MAX_DIST(s) : NIL; | ||
755 | |||
756 | mov eax, [edx + dsWSize] | ||
757 | sub eax, MIN_LOOKAHEAD | ||
758 | sub ebp, eax | ||
759 | jg LimitPositive | ||
760 | xor ebp, ebp | ||
761 | LimitPositive: | ||
762 | |||
763 | ;;; int best_len = s->prev_length; | ||
764 | |||
765 | mov eax, [edx + dsPrevLen] | ||
766 | mov [bestlen], eax | ||
767 | |||
768 | ;;; Store the sum of s->window + best_len in esi locally, and in esi. | ||
769 | |||
770 | add esi, eax | ||
771 | mov [windowbestlen], esi | ||
772 | |||
773 | ;;; register ush scan_start = *(ushf*)scan; | ||
774 | ;;; register ush scan_end = *(ushf*)(scan+best_len-1); | ||
775 | ;;; Posf *prev = s->prev; | ||
776 | |||
777 | movzx ebx, word ptr [edi] | ||
778 | mov [scanstart], ebx | ||
779 | movzx ebx, word ptr [edi + eax - 1] | ||
780 | mov [scanend], ebx | ||
781 | mov edi, [edx + dsPrev] | ||
782 | |||
783 | ;;; Jump into the main loop. | ||
784 | |||
785 | mov edx, [chainlenwmask] | ||
786 | jmp short LoopEntry | ||
787 | |||
788 | align 4 | ||
789 | |||
790 | ;;; do { | ||
791 | ;;; match = s->window + cur_match; | ||
792 | ;;; if (*(ushf*)(match+best_len-1) != scan_end || | ||
793 | ;;; *(ushf*)match != scan_start) continue; | ||
794 | ;;; [...] | ||
795 | ;;; } while ((cur_match = prev[cur_match & wmask]) > limit | ||
796 | ;;; && --chain_length != 0); | ||
797 | ;;; | ||
798 | ;;; Here is the inner loop of the function. The function will spend the | ||
799 | ;;; majority of its time in this loop, and majority of that time will | ||
800 | ;;; be spent in the first ten instructions. | ||
801 | ;;; | ||
802 | ;;; Within this loop: | ||
803 | ;;; ebx = scanend | ||
804 | ;;; ecx = curmatch | ||
805 | ;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask) | ||
806 | ;;; esi = windowbestlen - i.e., (window + bestlen) | ||
807 | ;;; edi = prev | ||
808 | ;;; ebp = limit | ||
809 | |||
810 | LookupLoop: | ||
811 | and ecx, edx | ||
812 | movzx ecx, word ptr [edi + ecx*2] | ||
813 | cmp ecx, ebp | ||
814 | jbe LeaveNow | ||
815 | sub edx, 00010000h | ||
816 | js LeaveNow | ||
817 | LoopEntry: movzx eax, word ptr [esi + ecx - 1] | ||
818 | cmp eax, ebx | ||
819 | jnz LookupLoop | ||
820 | mov eax, [window] | ||
821 | movzx eax, word ptr [eax + ecx] | ||
822 | cmp eax, [scanstart] | ||
823 | jnz LookupLoop | ||
824 | |||
825 | ;;; Store the current value of chainlen. | ||
826 | |||
827 | mov [chainlenwmask], edx | ||
828 | |||
829 | ;;; Point edi to the string under scrutiny, and esi to the string we | ||
830 | ;;; are hoping to match it up with. In actuality, esi and edi are | ||
831 | ;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is | ||
832 | ;;; initialized to -(MAX_MATCH_8 - scanalign). | ||
833 | |||
834 | mov esi, [window] | ||
835 | mov edi, [scan] | ||
836 | add esi, ecx | ||
837 | mov eax, [scanalign] | ||
838 | mov edx, 0fffffef8h; -(MAX_MATCH_8) | ||
839 | lea edi, [edi + eax + 0108h] ;MAX_MATCH_8] | ||
840 | lea esi, [esi + eax + 0108h] ;MAX_MATCH_8] | ||
841 | |||
842 | ;;; Test the strings for equality, 8 bytes at a time. At the end, | ||
843 | ;;; adjust edx so that it is offset to the exact byte that mismatched. | ||
844 | ;;; | ||
845 | ;;; We already know at this point that the first three bytes of the | ||
846 | ;;; strings match each other, and they can be safely passed over before | ||
847 | ;;; starting the compare loop. So what this code does is skip over 0-3 | ||
848 | ;;; bytes, as much as necessary in order to dword-align the edi | ||
849 | ;;; pointer. (esi will still be misaligned three times out of four.) | ||
850 | ;;; | ||
851 | ;;; It should be confessed that this loop usually does not represent | ||
852 | ;;; much of the total running time. Replacing it with a more | ||
853 | ;;; straightforward "rep cmpsb" would not drastically degrade | ||
854 | ;;; performance. | ||
855 | |||
856 | LoopCmps: | ||
857 | mov eax, [esi + edx] | ||
858 | xor eax, [edi + edx] | ||
859 | jnz LeaveLoopCmps | ||
860 | mov eax, [esi + edx + 4] | ||
861 | xor eax, [edi + edx + 4] | ||
862 | jnz LeaveLoopCmps4 | ||
863 | add edx, 8 | ||
864 | jnz LoopCmps | ||
865 | jmp short LenMaximum | ||
866 | LeaveLoopCmps4: add edx, 4 | ||
867 | LeaveLoopCmps: test eax, 0000FFFFh | ||
868 | jnz LenLower | ||
869 | add edx, 2 | ||
870 | shr eax, 16 | ||
871 | LenLower: sub al, 1 | ||
872 | adc edx, 0 | ||
873 | |||
874 | ;;; Calculate the length of the match. If it is longer than MAX_MATCH, | ||
875 | ;;; then automatically accept it as the best possible match and leave. | ||
876 | |||
877 | lea eax, [edi + edx] | ||
878 | mov edi, [scan] | ||
879 | sub eax, edi | ||
880 | cmp eax, MAX_MATCH | ||
881 | jge LenMaximum | ||
882 | |||
883 | ;;; If the length of the match is not longer than the best match we | ||
884 | ;;; have so far, then forget it and return to the lookup loop. | ||
885 | |||
886 | mov edx, [deflatestate] | ||
887 | mov ebx, [bestlen] | ||
888 | cmp eax, ebx | ||
889 | jg LongerMatch | ||
890 | mov esi, [windowbestlen] | ||
891 | mov edi, [edx + dsPrev] | ||
892 | mov ebx, [scanend] | ||
893 | mov edx, [chainlenwmask] | ||
894 | jmp LookupLoop | ||
895 | |||
896 | ;;; s->match_start = cur_match; | ||
897 | ;;; best_len = len; | ||
898 | ;;; if (len >= nice_match) break; | ||
899 | ;;; scan_end = *(ushf*)(scan+best_len-1); | ||
900 | |||
901 | LongerMatch: mov ebx, [nicematch] | ||
902 | mov [bestlen], eax | ||
903 | mov [edx + dsMatchStart], ecx | ||
904 | cmp eax, ebx | ||
905 | jge LeaveNow | ||
906 | mov esi, [window] | ||
907 | add esi, eax | ||
908 | mov [windowbestlen], esi | ||
909 | movzx ebx, word ptr [edi + eax - 1] | ||
910 | mov edi, [edx + dsPrev] | ||
911 | mov [scanend], ebx | ||
912 | mov edx, [chainlenwmask] | ||
913 | jmp LookupLoop | ||
914 | |||
915 | ;;; Accept the current string, with the maximum possible length. | ||
916 | |||
917 | LenMaximum: mov edx, [deflatestate] | ||
918 | mov dword ptr [bestlen], MAX_MATCH | ||
919 | mov [edx + dsMatchStart], ecx | ||
920 | |||
921 | ;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len; | ||
922 | ;;; return s->lookahead; | ||
923 | |||
924 | LeaveNow: | ||
925 | mov edx, [deflatestate] | ||
926 | mov ebx, [bestlen] | ||
927 | mov eax, [edx + dsLookahead] | ||
928 | cmp ebx, eax | ||
929 | jg LookaheadRet | ||
930 | mov eax, ebx | ||
931 | LookaheadRet: | ||
932 | |||
933 | ;;; Restore the stack and return from whence we came. | ||
934 | |||
935 | add esp, LocalVarsSize | ||
936 | pop ebx | ||
937 | pop esi | ||
938 | pop edi | ||
939 | pop ebp | ||
940 | |||
941 | ret | ||
942 | ; please don't remove this string ! | ||
943 | ; Your can freely use gvmat32 in any free or commercial app if you don't remove the string in the binary! | ||
944 | db 0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998",0dh,0ah | ||
945 | |||
946 | |||
947 | IFDEF NOOLDPENTIUMCODE | ||
948 | IFDEF NOUNDERLINE | ||
949 | longest_match endp | ||
950 | ELSE | ||
951 | _longest_match endp | ||
952 | ENDIF | ||
953 | |||
954 | IFDEF NOUNDERLINE | ||
955 | match_init proc near | ||
956 | ret | ||
957 | match_init endp | ||
958 | ELSE | ||
959 | _match_init proc near | ||
960 | ret | ||
961 | _match_init endp | ||
962 | ENDIF | ||
963 | ELSE | ||
964 | IFDEF NOUNDERLINE | ||
965 | longest_match_686 endp | ||
966 | ELSE | ||
967 | _longest_match_686 endp | ||
968 | ENDIF | ||
969 | ENDIF | ||
970 | |||
971 | _TEXT ends | ||
972 | end | ||
diff --git a/contrib/masmx86/gvmat32c.c b/contrib/masmx86/gvmat32c.c deleted file mode 100644 index 7ad2b27..0000000 --- a/contrib/masmx86/gvmat32c.c +++ /dev/null | |||
@@ -1,62 +0,0 @@ | |||
1 | /* gvmat32.c -- C portion of the optimized longest_match for 32 bits x86 | ||
2 | * Copyright (C) 1995-1996 Jean-loup Gailly and Gilles Vollant. | ||
3 | * File written by Gilles Vollant, by modifiying the longest_match | ||
4 | * from Jean-loup Gailly in deflate.c | ||
5 | * it prepare all parameters and call the assembly longest_match_gvasm | ||
6 | * longest_match execute standard C code is wmask != 0x7fff | ||
7 | * (assembly code is faster with a fixed wmask) | ||
8 | * | ||
9 | * Read comment at beginning of gvmat32.asm for more information | ||
10 | */ | ||
11 | |||
12 | #if defined(ASMV) && (!defined(NOOLDPENTIUMCODE)) | ||
13 | #include "deflate.h" | ||
14 | |||
15 | /* if your C compiler don't add underline before function name, | ||
16 | define ADD_UNDERLINE_ASMFUNC */ | ||
17 | #ifdef ADD_UNDERLINE_ASMFUNC | ||
18 | #define longest_match_7fff _longest_match_7fff | ||
19 | #define longest_match_686 _longest_match_686 | ||
20 | #define cpudetect32 _cpudetect32 | ||
21 | #endif | ||
22 | |||
23 | |||
24 | unsigned long cpudetect32(); | ||
25 | |||
26 | uInt longest_match_c( | ||
27 | deflate_state *s, | ||
28 | IPos cur_match); /* current match */ | ||
29 | |||
30 | |||
31 | uInt longest_match_7fff( | ||
32 | deflate_state *s, | ||
33 | IPos cur_match); /* current match */ | ||
34 | |||
35 | uInt longest_match_686( | ||
36 | deflate_state *s, | ||
37 | IPos cur_match); /* current match */ | ||
38 | |||
39 | |||
40 | static uInt iIsPPro=2; | ||
41 | |||
42 | void match_init () | ||
43 | { | ||
44 | iIsPPro = (((cpudetect32()/0x100)&0xf)>=6) ? 1 : 0; | ||
45 | } | ||
46 | |||
47 | uInt longest_match( | ||
48 | deflate_state *s, | ||
49 | IPos cur_match) /* current match */ | ||
50 | { | ||
51 | if (iIsPPro!=0) | ||
52 | return longest_match_686(s,cur_match); | ||
53 | |||
54 | if (s->w_mask != 0x7fff) | ||
55 | return longest_match_686(s,cur_match); | ||
56 | |||
57 | /* now ((s->w_mask == 0x7fff) && (iIsPPro==0)) */ | ||
58 | return longest_match_7fff(s,cur_match); | ||
59 | } | ||
60 | |||
61 | |||
62 | #endif /* defined(ASMV) && (!defined(NOOLDPENTIUMCODE)) */ | ||
diff --git a/contrib/masmx86/match686.asm b/contrib/masmx86/match686.asm new file mode 100644 index 0000000..1eaf555 --- /dev/null +++ b/contrib/masmx86/match686.asm | |||
@@ -0,0 +1,478 @@ | |||
1 | ; match686.asm -- Asm portion of the optimized longest_match for 32 bits x86 | ||
2 | ; Copyright (C) 1995-1996 Jean-loup Gailly, Brian Raiter and Gilles Vollant. | ||
3 | ; File written by Gilles Vollant, by converting match686.S from Brian Raiter | ||
4 | ; for MASM. This is as assembly version of longest_match | ||
5 | ; from Jean-loup Gailly in deflate.c | ||
6 | ; | ||
7 | ; http://www.zlib.net | ||
8 | ; http://www.winimage.com/zLibDll | ||
9 | ; http://www.muppetlabs.com/~breadbox/software/assembly.html | ||
10 | ; | ||
11 | ; For Visual C++ 4.x and higher and ML 6.x and higher | ||
12 | ; ml.exe is distributed in | ||
13 | ; http://www.microsoft.com/downloads/details.aspx?FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64 | ||
14 | ; | ||
15 | ; this file contain two implementation of longest_match | ||
16 | ; | ||
17 | ; this longest_match was written by Brian raiter (1998), optimized for Pentium Pro | ||
18 | ; (and the faster known version of match_init on modern Core 2 Duo and AMD Phenom) | ||
19 | ; | ||
20 | ; for using an assembly version of longest_match, you need define ASMV in project | ||
21 | ; | ||
22 | ; compile the asm file running | ||
23 | ; ml /coff /Zi /c /Flmatch686.lst match686.asm | ||
24 | ; and do not include match686.obj in your project | ||
25 | ; | ||
26 | ; note: contrib of zLib 1.2.3 and earlier contained both a deprecated version for | ||
27 | ; Pentium (prior Pentium Pro) and this version for Pentium Pro and modern processor | ||
28 | ; with autoselect (with cpu detection code) | ||
29 | ; if you want support the old pentium optimization, you can still use these version | ||
30 | ; | ||
31 | ; this file is not optimized for old pentium, but it compatible with all x86 32 bits | ||
32 | ; processor (starting 80386) | ||
33 | ; | ||
34 | ; | ||
35 | ; see below : zlib1222add must be adjuster if you use a zlib version < 1.2.2.2 | ||
36 | |||
37 | ;uInt longest_match(s, cur_match) | ||
38 | ; deflate_state *s; | ||
39 | ; IPos cur_match; /* current match */ | ||
40 | |||
41 | NbStack equ 76 | ||
42 | cur_match equ dword ptr[esp+NbStack-0] | ||
43 | str_s equ dword ptr[esp+NbStack-4] | ||
44 | ; 5 dword on top (ret,ebp,esi,edi,ebx) | ||
45 | adrret equ dword ptr[esp+NbStack-8] | ||
46 | pushebp equ dword ptr[esp+NbStack-12] | ||
47 | pushedi equ dword ptr[esp+NbStack-16] | ||
48 | pushesi equ dword ptr[esp+NbStack-20] | ||
49 | pushebx equ dword ptr[esp+NbStack-24] | ||
50 | |||
51 | chain_length equ dword ptr [esp+NbStack-28] | ||
52 | limit equ dword ptr [esp+NbStack-32] | ||
53 | best_len equ dword ptr [esp+NbStack-36] | ||
54 | window equ dword ptr [esp+NbStack-40] | ||
55 | prev equ dword ptr [esp+NbStack-44] | ||
56 | scan_start equ word ptr [esp+NbStack-48] | ||
57 | wmask equ dword ptr [esp+NbStack-52] | ||
58 | match_start_ptr equ dword ptr [esp+NbStack-56] | ||
59 | nice_match equ dword ptr [esp+NbStack-60] | ||
60 | scan equ dword ptr [esp+NbStack-64] | ||
61 | |||
62 | windowlen equ dword ptr [esp+NbStack-68] | ||
63 | match_start equ dword ptr [esp+NbStack-72] | ||
64 | strend equ dword ptr [esp+NbStack-76] | ||
65 | NbStackAdd equ (NbStack-24) | ||
66 | |||
67 | .386p | ||
68 | |||
69 | name gvmatch | ||
70 | .MODEL FLAT | ||
71 | |||
72 | |||
73 | |||
74 | ; all the +zlib1222add offsets are due to the addition of fields | ||
75 | ; in zlib in the deflate_state structure since the asm code was first written | ||
76 | ; (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)"). | ||
77 | ; (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0"). | ||
78 | ; if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8"). | ||
79 | |||
80 | zlib1222add equ 8 | ||
81 | |||
82 | ; Note : these value are good with a 8 bytes boundary pack structure | ||
83 | dep_chain_length equ 74h+zlib1222add | ||
84 | dep_window equ 30h+zlib1222add | ||
85 | dep_strstart equ 64h+zlib1222add | ||
86 | dep_prev_length equ 70h+zlib1222add | ||
87 | dep_nice_match equ 88h+zlib1222add | ||
88 | dep_w_size equ 24h+zlib1222add | ||
89 | dep_prev equ 38h+zlib1222add | ||
90 | dep_w_mask equ 2ch+zlib1222add | ||
91 | dep_good_match equ 84h+zlib1222add | ||
92 | dep_match_start equ 68h+zlib1222add | ||
93 | dep_lookahead equ 6ch+zlib1222add | ||
94 | |||
95 | |||
96 | _TEXT segment | ||
97 | |||
98 | IFDEF NOUNDERLINE | ||
99 | public longest_match | ||
100 | public match_init | ||
101 | ELSE | ||
102 | public _longest_match | ||
103 | public _match_init | ||
104 | ENDIF | ||
105 | |||
106 | MAX_MATCH equ 258 | ||
107 | MIN_MATCH equ 3 | ||
108 | MIN_LOOKAHEAD equ (MAX_MATCH+MIN_MATCH+1) | ||
109 | |||
110 | |||
111 | |||
112 | MAX_MATCH equ 258 | ||
113 | MIN_MATCH equ 3 | ||
114 | MIN_LOOKAHEAD equ (MAX_MATCH + MIN_MATCH + 1) | ||
115 | MAX_MATCH_8_ equ ((MAX_MATCH + 7) AND 0FFF0h) | ||
116 | |||
117 | |||
118 | ;;; stack frame offsets | ||
119 | |||
120 | chainlenwmask equ esp + 0 ; high word: current chain len | ||
121 | ; low word: s->wmask | ||
122 | window equ esp + 4 ; local copy of s->window | ||
123 | windowbestlen equ esp + 8 ; s->window + bestlen | ||
124 | scanstart equ esp + 16 ; first two bytes of string | ||
125 | scanend equ esp + 12 ; last two bytes of string | ||
126 | scanalign equ esp + 20 ; dword-misalignment of string | ||
127 | nicematch equ esp + 24 ; a good enough match size | ||
128 | bestlen equ esp + 28 ; size of best match so far | ||
129 | scan equ esp + 32 ; ptr to string wanting match | ||
130 | |||
131 | LocalVarsSize equ 36 | ||
132 | ; saved ebx byte esp + 36 | ||
133 | ; saved edi byte esp + 40 | ||
134 | ; saved esi byte esp + 44 | ||
135 | ; saved ebp byte esp + 48 | ||
136 | ; return address byte esp + 52 | ||
137 | deflatestate equ esp + 56 ; the function arguments | ||
138 | curmatch equ esp + 60 | ||
139 | |||
140 | ;;; Offsets for fields in the deflate_state structure. These numbers | ||
141 | ;;; are calculated from the definition of deflate_state, with the | ||
142 | ;;; assumption that the compiler will dword-align the fields. (Thus, | ||
143 | ;;; changing the definition of deflate_state could easily cause this | ||
144 | ;;; program to crash horribly, without so much as a warning at | ||
145 | ;;; compile time. Sigh.) | ||
146 | |||
147 | dsWSize equ 36+zlib1222add | ||
148 | dsWMask equ 44+zlib1222add | ||
149 | dsWindow equ 48+zlib1222add | ||
150 | dsPrev equ 56+zlib1222add | ||
151 | dsMatchLen equ 88+zlib1222add | ||
152 | dsPrevMatch equ 92+zlib1222add | ||
153 | dsStrStart equ 100+zlib1222add | ||
154 | dsMatchStart equ 104+zlib1222add | ||
155 | dsLookahead equ 108+zlib1222add | ||
156 | dsPrevLen equ 112+zlib1222add | ||
157 | dsMaxChainLen equ 116+zlib1222add | ||
158 | dsGoodMatch equ 132+zlib1222add | ||
159 | dsNiceMatch equ 136+zlib1222add | ||
160 | |||
161 | |||
162 | ;;; match686.asm -- Pentium-Pro-optimized version of longest_match() | ||
163 | ;;; Written for zlib 1.1.2 | ||
164 | ;;; Copyright (C) 1998 Brian Raiter <breadbox@muppetlabs.com> | ||
165 | ;;; You can look at http://www.muppetlabs.com/~breadbox/software/assembly.html | ||
166 | ;;; | ||
167 | ;; | ||
168 | ;; This software is provided 'as-is', without any express or implied | ||
169 | ;; warranty. In no event will the authors be held liable for any damages | ||
170 | ;; arising from the use of this software. | ||
171 | ;; | ||
172 | ;; Permission is granted to anyone to use this software for any purpose, | ||
173 | ;; including commercial applications, and to alter it and redistribute it | ||
174 | ;; freely, subject to the following restrictions: | ||
175 | ;; | ||
176 | ;; 1. The origin of this software must not be misrepresented; you must not | ||
177 | ;; claim that you wrote the original software. If you use this software | ||
178 | ;; in a product, an acknowledgment in the product documentation would be | ||
179 | ;; appreciated but is not required. | ||
180 | ;; 2. Altered source versions must be plainly marked as such, and must not be | ||
181 | ;; misrepresented as being the original software | ||
182 | ;; 3. This notice may not be removed or altered from any source distribution. | ||
183 | ;; | ||
184 | |||
185 | ;GLOBAL _longest_match, _match_init | ||
186 | |||
187 | |||
188 | ;SECTION .text | ||
189 | |||
190 | ;;; uInt longest_match(deflate_state *deflatestate, IPos curmatch) | ||
191 | |||
192 | ;_longest_match: | ||
193 | IFDEF NOUNDERLINE | ||
194 | longest_match proc near | ||
195 | ELSE | ||
196 | _longest_match proc near | ||
197 | ENDIF | ||
198 | |||
199 | ;;; Save registers that the compiler may be using, and adjust esp to | ||
200 | ;;; make room for our stack frame. | ||
201 | |||
202 | push ebp | ||
203 | push edi | ||
204 | push esi | ||
205 | push ebx | ||
206 | sub esp, LocalVarsSize | ||
207 | |||
208 | ;;; Retrieve the function arguments. ecx will hold cur_match | ||
209 | ;;; throughout the entire function. edx will hold the pointer to the | ||
210 | ;;; deflate_state structure during the function's setup (before | ||
211 | ;;; entering the main loop. | ||
212 | |||
213 | mov edx, [deflatestate] | ||
214 | mov ecx, [curmatch] | ||
215 | |||
216 | ;;; uInt wmask = s->w_mask; | ||
217 | ;;; unsigned chain_length = s->max_chain_length; | ||
218 | ;;; if (s->prev_length >= s->good_match) { | ||
219 | ;;; chain_length >>= 2; | ||
220 | ;;; } | ||
221 | |||
222 | mov eax, [edx + dsPrevLen] | ||
223 | mov ebx, [edx + dsGoodMatch] | ||
224 | cmp eax, ebx | ||
225 | mov eax, [edx + dsWMask] | ||
226 | mov ebx, [edx + dsMaxChainLen] | ||
227 | jl LastMatchGood | ||
228 | shr ebx, 2 | ||
229 | LastMatchGood: | ||
230 | |||
231 | ;;; chainlen is decremented once beforehand so that the function can | ||
232 | ;;; use the sign flag instead of the zero flag for the exit test. | ||
233 | ;;; It is then shifted into the high word, to make room for the wmask | ||
234 | ;;; value, which it will always accompany. | ||
235 | |||
236 | dec ebx | ||
237 | shl ebx, 16 | ||
238 | or ebx, eax | ||
239 | mov [chainlenwmask], ebx | ||
240 | |||
241 | ;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; | ||
242 | |||
243 | mov eax, [edx + dsNiceMatch] | ||
244 | mov ebx, [edx + dsLookahead] | ||
245 | cmp ebx, eax | ||
246 | jl LookaheadLess | ||
247 | mov ebx, eax | ||
248 | LookaheadLess: mov [nicematch], ebx | ||
249 | |||
250 | ;;; register Bytef *scan = s->window + s->strstart; | ||
251 | |||
252 | mov esi, [edx + dsWindow] | ||
253 | mov [window], esi | ||
254 | mov ebp, [edx + dsStrStart] | ||
255 | lea edi, [esi + ebp] | ||
256 | mov [scan], edi | ||
257 | |||
258 | ;;; Determine how many bytes the scan ptr is off from being | ||
259 | ;;; dword-aligned. | ||
260 | |||
261 | mov eax, edi | ||
262 | neg eax | ||
263 | and eax, 3 | ||
264 | mov [scanalign], eax | ||
265 | |||
266 | ;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ? | ||
267 | ;;; s->strstart - (IPos)MAX_DIST(s) : NIL; | ||
268 | |||
269 | mov eax, [edx + dsWSize] | ||
270 | sub eax, MIN_LOOKAHEAD | ||
271 | sub ebp, eax | ||
272 | jg LimitPositive | ||
273 | xor ebp, ebp | ||
274 | LimitPositive: | ||
275 | |||
276 | ;;; int best_len = s->prev_length; | ||
277 | |||
278 | mov eax, [edx + dsPrevLen] | ||
279 | mov [bestlen], eax | ||
280 | |||
281 | ;;; Store the sum of s->window + best_len in esi locally, and in esi. | ||
282 | |||
283 | add esi, eax | ||
284 | mov [windowbestlen], esi | ||
285 | |||
286 | ;;; register ush scan_start = *(ushf*)scan; | ||
287 | ;;; register ush scan_end = *(ushf*)(scan+best_len-1); | ||
288 | ;;; Posf *prev = s->prev; | ||
289 | |||
290 | movzx ebx, word ptr [edi] | ||
291 | mov [scanstart], ebx | ||
292 | movzx ebx, word ptr [edi + eax - 1] | ||
293 | mov [scanend], ebx | ||
294 | mov edi, [edx + dsPrev] | ||
295 | |||
296 | ;;; Jump into the main loop. | ||
297 | |||
298 | mov edx, [chainlenwmask] | ||
299 | jmp short LoopEntry | ||
300 | |||
301 | align 4 | ||
302 | |||
303 | ;;; do { | ||
304 | ;;; match = s->window + cur_match; | ||
305 | ;;; if (*(ushf*)(match+best_len-1) != scan_end || | ||
306 | ;;; *(ushf*)match != scan_start) continue; | ||
307 | ;;; [...] | ||
308 | ;;; } while ((cur_match = prev[cur_match & wmask]) > limit | ||
309 | ;;; && --chain_length != 0); | ||
310 | ;;; | ||
311 | ;;; Here is the inner loop of the function. The function will spend the | ||
312 | ;;; majority of its time in this loop, and majority of that time will | ||
313 | ;;; be spent in the first ten instructions. | ||
314 | ;;; | ||
315 | ;;; Within this loop: | ||
316 | ;;; ebx = scanend | ||
317 | ;;; ecx = curmatch | ||
318 | ;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask) | ||
319 | ;;; esi = windowbestlen - i.e., (window + bestlen) | ||
320 | ;;; edi = prev | ||
321 | ;;; ebp = limit | ||
322 | |||
323 | LookupLoop: | ||
324 | and ecx, edx | ||
325 | movzx ecx, word ptr [edi + ecx*2] | ||
326 | cmp ecx, ebp | ||
327 | jbe LeaveNow | ||
328 | sub edx, 00010000h | ||
329 | js LeaveNow | ||
330 | LoopEntry: movzx eax, word ptr [esi + ecx - 1] | ||
331 | cmp eax, ebx | ||
332 | jnz LookupLoop | ||
333 | mov eax, [window] | ||
334 | movzx eax, word ptr [eax + ecx] | ||
335 | cmp eax, [scanstart] | ||
336 | jnz LookupLoop | ||
337 | |||
338 | ;;; Store the current value of chainlen. | ||
339 | |||
340 | mov [chainlenwmask], edx | ||
341 | |||
342 | ;;; Point edi to the string under scrutiny, and esi to the string we | ||
343 | ;;; are hoping to match it up with. In actuality, esi and edi are | ||
344 | ;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is | ||
345 | ;;; initialized to -(MAX_MATCH_8 - scanalign). | ||
346 | |||
347 | mov esi, [window] | ||
348 | mov edi, [scan] | ||
349 | add esi, ecx | ||
350 | mov eax, [scanalign] | ||
351 | mov edx, 0fffffef8h; -(MAX_MATCH_8) | ||
352 | lea edi, [edi + eax + 0108h] ;MAX_MATCH_8] | ||
353 | lea esi, [esi + eax + 0108h] ;MAX_MATCH_8] | ||
354 | |||
355 | ;;; Test the strings for equality, 8 bytes at a time. At the end, | ||
356 | ;;; adjust edx so that it is offset to the exact byte that mismatched. | ||
357 | ;;; | ||
358 | ;;; We already know at this point that the first three bytes of the | ||
359 | ;;; strings match each other, and they can be safely passed over before | ||
360 | ;;; starting the compare loop. So what this code does is skip over 0-3 | ||
361 | ;;; bytes, as much as necessary in order to dword-align the edi | ||
362 | ;;; pointer. (esi will still be misaligned three times out of four.) | ||
363 | ;;; | ||
364 | ;;; It should be confessed that this loop usually does not represent | ||
365 | ;;; much of the total running time. Replacing it with a more | ||
366 | ;;; straightforward "rep cmpsb" would not drastically degrade | ||
367 | ;;; performance. | ||
368 | |||
369 | LoopCmps: | ||
370 | mov eax, [esi + edx] | ||
371 | xor eax, [edi + edx] | ||
372 | jnz LeaveLoopCmps | ||
373 | mov eax, [esi + edx + 4] | ||
374 | xor eax, [edi + edx + 4] | ||
375 | jnz LeaveLoopCmps4 | ||
376 | add edx, 8 | ||
377 | jnz LoopCmps | ||
378 | jmp short LenMaximum | ||
379 | LeaveLoopCmps4: add edx, 4 | ||
380 | LeaveLoopCmps: test eax, 0000FFFFh | ||
381 | jnz LenLower | ||
382 | add edx, 2 | ||
383 | shr eax, 16 | ||
384 | LenLower: sub al, 1 | ||
385 | adc edx, 0 | ||
386 | |||
387 | ;;; Calculate the length of the match. If it is longer than MAX_MATCH, | ||
388 | ;;; then automatically accept it as the best possible match and leave. | ||
389 | |||
390 | lea eax, [edi + edx] | ||
391 | mov edi, [scan] | ||
392 | sub eax, edi | ||
393 | cmp eax, MAX_MATCH | ||
394 | jge LenMaximum | ||
395 | |||
396 | ;;; If the length of the match is not longer than the best match we | ||
397 | ;;; have so far, then forget it and return to the lookup loop. | ||
398 | |||
399 | mov edx, [deflatestate] | ||
400 | mov ebx, [bestlen] | ||
401 | cmp eax, ebx | ||
402 | jg LongerMatch | ||
403 | mov esi, [windowbestlen] | ||
404 | mov edi, [edx + dsPrev] | ||
405 | mov ebx, [scanend] | ||
406 | mov edx, [chainlenwmask] | ||
407 | jmp LookupLoop | ||
408 | |||
409 | ;;; s->match_start = cur_match; | ||
410 | ;;; best_len = len; | ||
411 | ;;; if (len >= nice_match) break; | ||
412 | ;;; scan_end = *(ushf*)(scan+best_len-1); | ||
413 | |||
414 | LongerMatch: mov ebx, [nicematch] | ||
415 | mov [bestlen], eax | ||
416 | mov [edx + dsMatchStart], ecx | ||
417 | cmp eax, ebx | ||
418 | jge LeaveNow | ||
419 | mov esi, [window] | ||
420 | add esi, eax | ||
421 | mov [windowbestlen], esi | ||
422 | movzx ebx, word ptr [edi + eax - 1] | ||
423 | mov edi, [edx + dsPrev] | ||
424 | mov [scanend], ebx | ||
425 | mov edx, [chainlenwmask] | ||
426 | jmp LookupLoop | ||
427 | |||
428 | ;;; Accept the current string, with the maximum possible length. | ||
429 | |||
430 | LenMaximum: mov edx, [deflatestate] | ||
431 | mov dword ptr [bestlen], MAX_MATCH | ||
432 | mov [edx + dsMatchStart], ecx | ||
433 | |||
434 | ;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len; | ||
435 | ;;; return s->lookahead; | ||
436 | |||
437 | LeaveNow: | ||
438 | mov edx, [deflatestate] | ||
439 | mov ebx, [bestlen] | ||
440 | mov eax, [edx + dsLookahead] | ||
441 | cmp ebx, eax | ||
442 | jg LookaheadRet | ||
443 | mov eax, ebx | ||
444 | LookaheadRet: | ||
445 | |||
446 | ;;; Restore the stack and return from whence we came. | ||
447 | |||
448 | add esp, LocalVarsSize | ||
449 | pop ebx | ||
450 | pop esi | ||
451 | pop edi | ||
452 | pop ebp | ||
453 | |||
454 | ret | ||
455 | ; please don't remove this string ! | ||
456 | ; Your can freely use match686 in any free or commercial app if you don't remove the string in the binary! | ||
457 | db 0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998",0dh,0ah | ||
458 | |||
459 | |||
460 | IFDEF NOUNDERLINE | ||
461 | longest_match endp | ||
462 | ELSE | ||
463 | _longest_match endp | ||
464 | ENDIF | ||
465 | |||
466 | IFDEF NOUNDERLINE | ||
467 | match_init proc near | ||
468 | ret | ||
469 | match_init endp | ||
470 | ELSE | ||
471 | _match_init proc near | ||
472 | ret | ||
473 | _match_init endp | ||
474 | ENDIF | ||
475 | |||
476 | |||
477 | _TEXT ends | ||
478 | end | ||
diff --git a/contrib/masmx86/match686.obj b/contrib/masmx86/match686.obj new file mode 100644 index 0000000..2e4631f --- /dev/null +++ b/contrib/masmx86/match686.obj | |||
Binary files differ | |||
diff --git a/contrib/masmx86/mkasm.bat b/contrib/masmx86/mkasm.bat deleted file mode 100755 index 70a51f8..0000000 --- a/contrib/masmx86/mkasm.bat +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | cl /DASMV /I..\.. /O2 /c gvmat32c.c | ||
2 | ml /coff /Zi /c /Flgvmat32.lst gvmat32.asm | ||
3 | ml /coff /Zi /c /Flinffas32.lst inffas32.asm | ||
diff --git a/contrib/masmx86/readme.txt b/contrib/masmx86/readme.txt index 7b57167..413580e 100644 --- a/contrib/masmx86/readme.txt +++ b/contrib/masmx86/readme.txt | |||
@@ -14,8 +14,8 @@ appropriate makefile, as suggested below. | |||
14 | Build instructions | 14 | Build instructions |
15 | ------------------ | 15 | ------------------ |
16 | * With Microsoft C and MASM: | 16 | * With Microsoft C and MASM: |
17 | nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="gvmat32c.obj gvmat32.obj inffas32.obj" | 17 | nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" |
18 | 18 | ||
19 | * With Borland C and TASM: | 19 | * With Borland C and TASM: |
20 | make -f win32/Makefile.bor LOCAL_ZLIB="-DASMV -DASMINF" OBJA="gvmat32c.obj gvmat32.obj inffas32.obj" OBJPA="+gvmat32c.obj+gvmat32.obj+inffas32.obj" | 20 | make -f win32/Makefile.bor LOCAL_ZLIB="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" OBJPA="+match686c.obj+match686.obj+inffas32.obj" |
21 | 21 | ||
diff --git a/contrib/pascal/zlibpas.pas b/contrib/pascal/zlibpas.pas index 836848c..dc7d37d 100644 --- a/contrib/pascal/zlibpas.pas +++ b/contrib/pascal/zlibpas.pas | |||
@@ -10,7 +10,7 @@ unit zlibpas; | |||
10 | interface | 10 | interface |
11 | 11 | ||
12 | const | 12 | const |
13 | ZLIB_VERSION = '1.2.3'; | 13 | ZLIB_VERSION = '1.2.4'; |
14 | 14 | ||
15 | type | 15 | type |
16 | alloc_func = function(opaque: Pointer; items, size: Integer): Pointer; | 16 | alloc_func = function(opaque: Pointer; items, size: Integer): Pointer; |
diff --git a/contrib/vstudio/readme.txt b/contrib/vstudio/readme.txt index a7b7247..904888b 100644 --- a/contrib/vstudio/readme.txt +++ b/contrib/vstudio/readme.txt | |||
@@ -1,8 +1,8 @@ | |||
1 | Building instructions for the DLL versions of Zlib 1.2.3 | 1 | Building instructions for the DLL versions of Zlib 1.2.4 |
2 | ======================================================== | 2 | ======================================================== |
3 | 3 | ||
4 | This directory contains projects that build zlib and minizip using | 4 | This directory contains projects that build zlib and minizip using |
5 | Microsoft Visual C++ 7.0/7.1/8.0/9.0/10.0, and Visual C++ . | 5 | Microsoft Visual C++ 9.0/10.0, and Visual C++ . |
6 | 6 | ||
7 | You don't need to build these projects yourself. You can download the | 7 | You don't need to build these projects yourself. You can download the |
8 | binaries from: | 8 | binaries from: |
@@ -15,51 +15,17 @@ bld_ml64.bat in contrib\masmx64 | |||
15 | bld_ml32.bat in contrib\masmx86 | 15 | bld_ml32.bat in contrib\masmx86 |
16 | 16 | ||
17 | 17 | ||
18 | Build instructions for Visual Studio 7.x (32 bits) | ||
19 | -------------------------------------------------- | ||
20 | - Uncompress current zlib, including all contrib/* files | ||
21 | - Download the crtdll library from | ||
22 | http://www.winimage.com/zLibDll/crtdll.zip | ||
23 | Unzip crtdll.zip to extract crtdll.lib on contrib\vstudio\vc7. | ||
24 | - Open contrib\vstudio\vc7\zlibvc.sln with Microsoft Visual C++ 7.x | ||
25 | (Visual Studio .Net 2002 or 2003). | ||
26 | |||
27 | Build instructions for Visual Studio 2005 (32 bits or 64 bits) | ||
28 | -------------------------------------------------------------- | ||
29 | - Uncompress current zlib, including all contrib/* files | ||
30 | - For 32 bits only: download the crtdll library from | ||
31 | http://www.winimage.com/zLibDll/crtdll.zip | ||
32 | Unzip crtdll.zip to extract crtdll.lib on contrib\vstudio\vc8. | ||
33 | - Open contrib\vstudio\vc8\zlibvc.sln with Microsoft Visual C++ 2005 | ||
34 | |||
35 | Build instructions for Visual Studio 2005 64 bits, PSDK compiler | ||
36 | ---------------------------------------------------------------- | ||
37 | at the time of writing this text file, Visual Studio 2005 (and | ||
38 | Microsoft Visual C++ 8.0) is on the beta 2 stage. | ||
39 | Using you can get the free 64 bits compiler from Platform SDK, | ||
40 | which is NOT a beta, and compile using the Visual studio 2005 IDE | ||
41 | see http://www.winimage.com/misc/sdk64onvs2005/ for instruction | ||
42 | |||
43 | - Uncompress current zlib, including all contrib/* files | ||
44 | - start Visual Studio 2005 from a platform SDK command prompt, using | ||
45 | the /useenv switch | ||
46 | - Open contrib\vstudio\vc8\zlibvc.sln with Microsoft Visual C++ 2005 | ||
47 | 18 | ||
48 | 19 | ||
49 | Build instructions for Visual Studio 2008 (32 bits or 64 bits) | 20 | Build instructions for Visual Studio 2008 (32 bits or 64 bits) |
50 | -------------------------------------------------------------- | 21 | -------------------------------------------------------------- |
51 | - Uncompress current zlib, including all contrib/* files | 22 | - Uncompress current zlib, including all contrib/* files |
52 | - For 32 bits only: download the crtdll library from | ||
53 | http://www.winimage.com/zLibDll/crtdll.zip | ||
54 | Unzip crtdll.zip to extract crtdll.lib on contrib\vstudio\vc9. | ||
55 | - Open contrib\vstudio\vc9\zlibvc.sln with Microsoft Visual C++ 2008.0 | 23 | - Open contrib\vstudio\vc9\zlibvc.sln with Microsoft Visual C++ 2008.0 |
24 | - Or run: vcbuild /rebuild contrib\vstudio\vc9\zlibvc.sln "Release|Win32" | ||
56 | 25 | ||
57 | Build instructions for Visual Studio 2010 (32 bits or 64 bits) | 26 | Build instructions for Visual Studio 2010 (32 bits or 64 bits) |
58 | -------------------------------------------------------------- | 27 | -------------------------------------------------------------- |
59 | - Uncompress current zlib, including all contrib/* files | 28 | - Uncompress current zlib, including all contrib/* files |
60 | - For 32 bits only: download the crtdll library from | ||
61 | http://www.winimage.com/zLibDll/crtdll.zip | ||
62 | Unzip crtdll.zip to extract crtdll.lib on contrib\vstudio\vc10. | ||
63 | - Open contrib\vstudio\vc10\zlibvc.sln with Microsoft Visual C++ 2010.0 | 29 | - Open contrib\vstudio\vc10\zlibvc.sln with Microsoft Visual C++ 2010.0 |
64 | 30 | ||
65 | 31 | ||
diff --git a/contrib/vstudio/vc10/testzlib.vcxproj b/contrib/vstudio/vc10/testzlib.vcxproj index 9810412..9088d17 100644 --- a/contrib/vstudio/vc10/testzlib.vcxproj +++ b/contrib/vstudio/vc10/testzlib.vcxproj | |||
@@ -194,7 +194,7 @@ | |||
194 | <DebugInformationFormat>EditAndContinue</DebugInformationFormat> | 194 | <DebugInformationFormat>EditAndContinue</DebugInformationFormat> |
195 | </ClCompile> | 195 | </ClCompile> |
196 | <Link> | 196 | <Link> |
197 | <AdditionalDependencies>..\..\masmx86\gvmat32.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> | 197 | <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> |
198 | <OutputFile>$(OutDir)testzlib.exe</OutputFile> | 198 | <OutputFile>$(OutDir)testzlib.exe</OutputFile> |
199 | <GenerateDebugInformation>true</GenerateDebugInformation> | 199 | <GenerateDebugInformation>true</GenerateDebugInformation> |
200 | <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile> | 200 | <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile> |
@@ -254,7 +254,7 @@ | |||
254 | <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | 254 | <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> |
255 | </ClCompile> | 255 | </ClCompile> |
256 | <Link> | 256 | <Link> |
257 | <AdditionalDependencies>..\..\masmx86\gvmat32.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> | 257 | <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> |
258 | <OutputFile>$(OutDir)testzlib.exe</OutputFile> | 258 | <OutputFile>$(OutDir)testzlib.exe</OutputFile> |
259 | <GenerateDebugInformation>true</GenerateDebugInformation> | 259 | <GenerateDebugInformation>true</GenerateDebugInformation> |
260 | <SubSystem>Console</SubSystem> | 260 | <SubSystem>Console</SubSystem> |
@@ -397,14 +397,6 @@ | |||
397 | <ClCompile Include="..\..\..\compress.c" /> | 397 | <ClCompile Include="..\..\..\compress.c" /> |
398 | <ClCompile Include="..\..\..\crc32.c" /> | 398 | <ClCompile Include="..\..\..\crc32.c" /> |
399 | <ClCompile Include="..\..\..\deflate.c" /> | 399 | <ClCompile Include="..\..\..\deflate.c" /> |
400 | <ClCompile Include="..\..\masmx86\gvmat32c.c"> | ||
401 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild> | ||
402 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> | ||
403 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild> | ||
404 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">true</ExcludedFromBuild> | ||
405 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild> | ||
406 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> | ||
407 | </ClCompile> | ||
408 | <ClCompile Include="..\..\..\infback.c" /> | 400 | <ClCompile Include="..\..\..\infback.c" /> |
409 | <ClCompile Include="..\..\masmx64\inffas8664.c"> | 401 | <ClCompile Include="..\..\masmx64\inffas8664.c"> |
410 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild> | 402 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild> |
diff --git a/contrib/vstudio/vc10/testzlib.vcxproj.filters b/contrib/vstudio/vc10/testzlib.vcxproj.filters index a0d9b23..249daa8 100644 --- a/contrib/vstudio/vc10/testzlib.vcxproj.filters +++ b/contrib/vstudio/vc10/testzlib.vcxproj.filters | |||
@@ -27,9 +27,6 @@ | |||
27 | <ClCompile Include="..\..\..\deflate.c"> | 27 | <ClCompile Include="..\..\..\deflate.c"> |
28 | <Filter>Source Files</Filter> | 28 | <Filter>Source Files</Filter> |
29 | </ClCompile> | 29 | </ClCompile> |
30 | <ClCompile Include="..\..\masmx86\gvmat32c.c"> | ||
31 | <Filter>Source Files</Filter> | ||
32 | </ClCompile> | ||
33 | <ClCompile Include="..\..\..\infback.c"> | 30 | <ClCompile Include="..\..\..\infback.c"> |
34 | <Filter>Source Files</Filter> | 31 | <Filter>Source Files</Filter> |
35 | </ClCompile> | 32 | </ClCompile> |
diff --git a/contrib/vstudio/vc10/zlib.rc b/contrib/vstudio/vc10/zlib.rc index 72cb8b4..23802d8 100644 --- a/contrib/vstudio/vc10/zlib.rc +++ b/contrib/vstudio/vc10/zlib.rc | |||
@@ -2,8 +2,8 @@ | |||
2 | 2 | ||
3 | #define IDR_VERSION1 1 | 3 | #define IDR_VERSION1 1 |
4 | IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE | 4 | IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE |
5 | FILEVERSION 1,2,3,0 | 5 | FILEVERSION 1,2,4,0 |
6 | PRODUCTVERSION 1,2,3,0 | 6 | PRODUCTVERSION 1,2,4,0 |
7 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK | 7 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK |
8 | FILEFLAGS 0 | 8 | FILEFLAGS 0 |
9 | FILEOS VOS_DOS_WINDOWS32 | 9 | FILEOS VOS_DOS_WINDOWS32 |
@@ -16,13 +16,13 @@ BEGIN | |||
16 | //language ID = U.S. English, char set = Windows, Multilingual | 16 | //language ID = U.S. English, char set = Windows, Multilingual |
17 | 17 | ||
18 | BEGIN | 18 | BEGIN |
19 | VALUE "FileDescription", "zlib data compression library\0" | 19 | VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" |
20 | VALUE "FileVersion", "1.2.3.0\0" | 20 | VALUE "FileVersion", "1.2.4.0\0" |
21 | VALUE "InternalName", "zlib\0" | 21 | VALUE "InternalName", "zlib\0" |
22 | VALUE "OriginalFilename", "zlib.dll\0" | 22 | VALUE "OriginalFilename", "zlib.dll\0" |
23 | VALUE "ProductName", "ZLib.DLL\0" | 23 | VALUE "ProductName", "ZLib.DLL\0" |
24 | VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" | 24 | VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" |
25 | VALUE "LegalCopyright", "(C) 1995-2003 Jean-loup Gailly & Mark Adler\0" | 25 | VALUE "LegalCopyright", "(C) 1995-2010 Jean-loup Gailly & Mark Adler\0" |
26 | END | 26 | END |
27 | END | 27 | END |
28 | BLOCK "VarFileInfo" | 28 | BLOCK "VarFileInfo" |
diff --git a/contrib/vstudio/vc10/zlibstat.vcxproj b/contrib/vstudio/vc10/zlibstat.vcxproj index fbf6c1b..2682fca 100644 --- a/contrib/vstudio/vc10/zlibstat.vcxproj +++ b/contrib/vstudio/vc10/zlibstat.vcxproj | |||
@@ -206,7 +206,7 @@ | |||
206 | </ResourceCompile> | 206 | </ResourceCompile> |
207 | <Lib> | 207 | <Lib> |
208 | <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> | 208 | <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> |
209 | <AdditionalDependencies>..\..\masmx86\gvmat32.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> | 209 | <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> |
210 | <OutputFile>$(OutDir)zlibstat.lib</OutputFile> | 210 | <OutputFile>$(OutDir)zlibstat.lib</OutputFile> |
211 | <SuppressStartupBanner>true</SuppressStartupBanner> | 211 | <SuppressStartupBanner>true</SuppressStartupBanner> |
212 | </Lib> | 212 | </Lib> |
@@ -422,16 +422,7 @@ | |||
422 | <ClCompile Include="..\..\..\compress.c" /> | 422 | <ClCompile Include="..\..\..\compress.c" /> |
423 | <ClCompile Include="..\..\..\crc32.c" /> | 423 | <ClCompile Include="..\..\..\crc32.c" /> |
424 | <ClCompile Include="..\..\..\deflate.c" /> | 424 | <ClCompile Include="..\..\..\deflate.c" /> |
425 | <ClCompile Include="..\..\masmx86\gvmat32c.c"> | ||
426 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild> | ||
427 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> | ||
428 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild> | ||
429 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">true</ExcludedFromBuild> | ||
430 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild> | ||
431 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> | ||
432 | </ClCompile> | ||
433 | <ClCompile Include="..\..\..\gzclose.c" /> | 425 | <ClCompile Include="..\..\..\gzclose.c" /> |
434 | <ClCompile Include="..\..\..\gzio.c" /> | ||
435 | <ClCompile Include="..\..\..\gzlib.c" /> | 426 | <ClCompile Include="..\..\..\gzlib.c" /> |
436 | <ClCompile Include="..\..\..\gzread.c" /> | 427 | <ClCompile Include="..\..\..\gzread.c" /> |
437 | <ClCompile Include="..\..\..\gzwrite.c" /> | 428 | <ClCompile Include="..\..\..\gzwrite.c" /> |
diff --git a/contrib/vstudio/vc10/zlibstat.vcxproj.filters b/contrib/vstudio/vc10/zlibstat.vcxproj.filters index f676c2d..c8c7f7e 100644 --- a/contrib/vstudio/vc10/zlibstat.vcxproj.filters +++ b/contrib/vstudio/vc10/zlibstat.vcxproj.filters | |||
@@ -18,15 +18,9 @@ | |||
18 | <ClCompile Include="..\..\..\deflate.c"> | 18 | <ClCompile Include="..\..\..\deflate.c"> |
19 | <Filter>Source Files</Filter> | 19 | <Filter>Source Files</Filter> |
20 | </ClCompile> | 20 | </ClCompile> |
21 | <ClCompile Include="..\..\masmx86\gvmat32c.c"> | ||
22 | <Filter>Source Files</Filter> | ||
23 | </ClCompile> | ||
24 | <ClCompile Include="..\..\..\gzclose.c"> | 21 | <ClCompile Include="..\..\..\gzclose.c"> |
25 | <Filter>Source Files</Filter> | 22 | <Filter>Source Files</Filter> |
26 | </ClCompile> | 23 | </ClCompile> |
27 | <ClCompile Include="..\..\..\gzio.c"> | ||
28 | <Filter>Source Files</Filter> | ||
29 | </ClCompile> | ||
30 | <ClCompile Include="..\..\..\gzlib.c"> | 24 | <ClCompile Include="..\..\..\gzlib.c"> |
31 | <Filter>Source Files</Filter> | 25 | <Filter>Source Files</Filter> |
32 | </ClCompile> | 26 | </ClCompile> |
diff --git a/contrib/vstudio/vc10/zlibvc.def b/contrib/vstudio/vc10/zlibvc.def index 0b6a9e9..b3b7cab 100644 --- a/contrib/vstudio/vc10/zlibvc.def +++ b/contrib/vstudio/vc10/zlibvc.def | |||
@@ -1,7 +1,7 @@ | |||
1 | LIBRARY | ||
2 | ; zlib data compression and ZIP file I/O library | ||
1 | 3 | ||
2 | VERSION 1.23 | 4 | VERSION 1.24 |
3 | |||
4 | HEAPSIZE 1048576,8192 | ||
5 | 5 | ||
6 | EXPORTS | 6 | EXPORTS |
7 | adler32 @1 | 7 | adler32 @1 |
@@ -90,25 +90,47 @@ EXPORTS | |||
90 | unzGoToFilePos @101 | 90 | unzGoToFilePos @101 |
91 | 91 | ||
92 | fill_win32_filefunc @110 | 92 | fill_win32_filefunc @110 |
93 | fill_win32_filefunc64 @111 | ||
94 | fill_win32_filefunc64A @112 | ||
95 | fill_win32_filefunc64W @113 | ||
96 | 93 | ||
97 | ; quick hack by hkuno@microhouse.co.jp | 94 | ; zlibwapi v1.2.4 added: |
98 | unzOpen64 @120 | 95 | fill_win32_filefunc64 @111 |
99 | unzOpen2_64 @121 | 96 | fill_win32_filefunc64A @112 |
100 | unzGetGlobalInfo64 @122 | 97 | fill_win32_filefunc64W @113 |
101 | unzGetCurrentFileInfo64 @124 | 98 | |
102 | unzGetCurrentFileZStreamPos64 @125 | 99 | unzOpen64 @120 |
103 | unztell64 @126 | 100 | unzOpen2_64 @121 |
104 | unzGetFilePos64 @127 | 101 | unzGetGlobalInfo64 @122 |
105 | unzGoToFilePos64 @128 | 102 | unzGetCurrentFileInfo64 @124 |
103 | unzGetCurrentFileZStreamPos64 @125 | ||
104 | unztell64 @126 | ||
105 | unzGetFilePos64 @127 | ||
106 | unzGoToFilePos64 @128 | ||
107 | |||
108 | zipOpen64 @130 | ||
109 | zipOpen2_64 @131 | ||
110 | zipOpenNewFileInZip64 @132 | ||
111 | zipOpenNewFileInZip2_64 @133 | ||
112 | zipOpenNewFileInZip3_64 @134 | ||
113 | zipOpenNewFileInZip4_64 @135 | ||
114 | zipCloseFileInZipRaw64 @136 | ||
106 | 115 | ||
107 | zipOpen64 @130 | 116 | ; zlib1 v1.2.4 added: |
108 | zipOpen2_64 @131 | 117 | adler32_combine @140 |
109 | zipOpenNewFileInZip64 @132 | 118 | adler32_combine64 @141 |
110 | zipOpenNewFileInZip2_64 @133 | 119 | crc32_combine @142 |
111 | zipOpenNewFileInZip3_64 @134 | 120 | crc32_combine64 @143 |
112 | zipOpenNewFileInZip4_64 @135 | 121 | deflateSetHeader @144 |
113 | zipCloseFileInZipRaw64 @136 | 122 | deflateTune @145 |
114 | ; end hack | 123 | gzbuffer @146 |
124 | gzclose_r @147 | ||
125 | gzclose_w @148 | ||
126 | gzdirect @149 | ||
127 | gzoffset @150 | ||
128 | gzoffset64 @151 | ||
129 | gzopen64 @152 | ||
130 | gzseek64 @153 | ||
131 | gztell64 @154 | ||
132 | inflateGetHeader @156 | ||
133 | inflateMark @157 | ||
134 | inflatePrime @158 | ||
135 | inflateReset2 @159 | ||
136 | inflateUndermine @160 | ||
diff --git a/contrib/vstudio/vc10/zlibvc.sln b/contrib/vstudio/vc10/zlibvc.sln index 6d2ef64..6f6ffd5 100644 --- a/contrib/vstudio/vc10/zlibvc.sln +++ b/contrib/vstudio/vc10/zlibvc.sln | |||
@@ -36,8 +36,8 @@ Global | |||
36 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.Build.0 = Release|Itanium | 36 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.Build.0 = Release|Itanium |
37 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32 | 37 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32 |
38 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32 | 38 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32 |
39 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = ReleaseWithoutAsm|x64 | 39 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = Release|x64 |
40 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = ReleaseWithoutAsm|x64 | 40 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = Release|x64 |
41 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium | 41 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium |
42 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium | 42 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium |
43 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 | 43 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 |
@@ -94,8 +94,8 @@ Global | |||
94 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64 | 94 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64 |
95 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium | 95 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium |
96 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium | 96 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium |
97 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium | 97 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 |
98 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium | 98 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 |
99 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium | 99 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium |
100 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium | 100 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium |
101 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32 | 101 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32 |
@@ -110,8 +110,8 @@ Global | |||
110 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64 | 110 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64 |
111 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium | 111 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium |
112 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium | 112 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium |
113 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium | 113 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 |
114 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium | 114 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 |
115 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.ActiveCfg = Debug|Itanium | 115 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.ActiveCfg = Debug|Itanium |
116 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.Build.0 = Debug|Itanium | 116 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.Build.0 = Debug|Itanium |
117 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32 | 117 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32 |
@@ -126,8 +126,8 @@ Global | |||
126 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64 | 126 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64 |
127 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium | 127 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium |
128 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium | 128 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium |
129 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium | 129 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 |
130 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium | 130 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 |
131 | EndGlobalSection | 131 | EndGlobalSection |
132 | GlobalSection(SolutionProperties) = preSolution | 132 | GlobalSection(SolutionProperties) = preSolution |
133 | HideSolutionNode = FALSE | 133 | HideSolutionNode = FALSE |
diff --git a/contrib/vstudio/vc10/zlibvc.vcxproj b/contrib/vstudio/vc10/zlibvc.vcxproj index e1067fa..9862398 100644 --- a/contrib/vstudio/vc10/zlibvc.vcxproj +++ b/contrib/vstudio/vc10/zlibvc.vcxproj | |||
@@ -213,7 +213,7 @@ | |||
213 | </ResourceCompile> | 213 | </ResourceCompile> |
214 | <Link> | 214 | <Link> |
215 | <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> | 215 | <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> |
216 | <AdditionalDependencies>..\..\masmx86\gvmat32.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> | 216 | <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> |
217 | <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> | 217 | <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> |
218 | <SuppressStartupBanner>true</SuppressStartupBanner> | 218 | <SuppressStartupBanner>true</SuppressStartupBanner> |
219 | <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> | 219 | <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> |
@@ -291,7 +291,7 @@ | |||
291 | <StringPooling>true</StringPooling> | 291 | <StringPooling>true</StringPooling> |
292 | <ExceptionHandling> | 292 | <ExceptionHandling> |
293 | </ExceptionHandling> | 293 | </ExceptionHandling> |
294 | <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> | 294 | <RuntimeLibrary>MultiThreaded</RuntimeLibrary> |
295 | <BufferSecurityCheck>false</BufferSecurityCheck> | 295 | <BufferSecurityCheck>false</BufferSecurityCheck> |
296 | <FunctionLevelLinking>true</FunctionLevelLinking> | 296 | <FunctionLevelLinking>true</FunctionLevelLinking> |
297 | <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> | 297 | <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> |
@@ -310,7 +310,7 @@ | |||
310 | </ResourceCompile> | 310 | </ResourceCompile> |
311 | <Link> | 311 | <Link> |
312 | <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> | 312 | <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> |
313 | <AdditionalDependencies>..\..\masmx86\gvmat32.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> | 313 | <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> |
314 | <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> | 314 | <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> |
315 | <SuppressStartupBanner>true</SuppressStartupBanner> | 315 | <SuppressStartupBanner>true</SuppressStartupBanner> |
316 | <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> | 316 | <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> |
@@ -598,17 +598,7 @@ | |||
598 | <ClCompile Include="..\..\..\compress.c" /> | 598 | <ClCompile Include="..\..\..\compress.c" /> |
599 | <ClCompile Include="..\..\..\crc32.c" /> | 599 | <ClCompile Include="..\..\..\crc32.c" /> |
600 | <ClCompile Include="..\..\..\deflate.c" /> | 600 | <ClCompile Include="..\..\..\deflate.c" /> |
601 | <ClCompile Include="..\..\masmx86\gvmat32c.c"> | ||
602 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild> | ||
603 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> | ||
604 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild> | ||
605 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild> | ||
606 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">true</ExcludedFromBuild> | ||
607 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild> | ||
608 | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> | ||
609 | </ClCompile> | ||
610 | <ClCompile Include="..\..\..\gzclose.c" /> | 601 | <ClCompile Include="..\..\..\gzclose.c" /> |
611 | <ClCompile Include="..\..\..\gzio.c" /> | ||
612 | <ClCompile Include="..\..\..\gzlib.c" /> | 602 | <ClCompile Include="..\..\..\gzlib.c" /> |
613 | <ClCompile Include="..\..\..\gzread.c" /> | 603 | <ClCompile Include="..\..\..\gzread.c" /> |
614 | <ClCompile Include="..\..\..\gzwrite.c" /> | 604 | <ClCompile Include="..\..\..\gzwrite.c" /> |
diff --git a/contrib/vstudio/vc10/zlibvc.vcxproj.filters b/contrib/vstudio/vc10/zlibvc.vcxproj.filters index 7b595c4..180b71c 100644 --- a/contrib/vstudio/vc10/zlibvc.vcxproj.filters +++ b/contrib/vstudio/vc10/zlibvc.vcxproj.filters | |||
@@ -27,15 +27,9 @@ | |||
27 | <ClCompile Include="..\..\..\deflate.c"> | 27 | <ClCompile Include="..\..\..\deflate.c"> |
28 | <Filter>Source Files</Filter> | 28 | <Filter>Source Files</Filter> |
29 | </ClCompile> | 29 | </ClCompile> |
30 | <ClCompile Include="..\..\masmx86\gvmat32c.c"> | ||
31 | <Filter>Source Files</Filter> | ||
32 | </ClCompile> | ||
33 | <ClCompile Include="..\..\..\gzclose.c"> | 30 | <ClCompile Include="..\..\..\gzclose.c"> |
34 | <Filter>Source Files</Filter> | 31 | <Filter>Source Files</Filter> |
35 | </ClCompile> | 32 | </ClCompile> |
36 | <ClCompile Include="..\..\..\gzio.c"> | ||
37 | <Filter>Source Files</Filter> | ||
38 | </ClCompile> | ||
39 | <ClCompile Include="..\..\..\gzlib.c"> | 33 | <ClCompile Include="..\..\..\gzlib.c"> |
40 | <Filter>Source Files</Filter> | 34 | <Filter>Source Files</Filter> |
41 | </ClCompile> | 35 | </ClCompile> |
diff --git a/contrib/vstudio/vc7/zlibvc.def b/contrib/vstudio/vc7/zlibvc.def deleted file mode 100644 index 0b6a9e9..0000000 --- a/contrib/vstudio/vc7/zlibvc.def +++ /dev/null | |||
@@ -1,114 +0,0 @@ | |||
1 | |||
2 | VERSION 1.23 | ||
3 | |||
4 | HEAPSIZE 1048576,8192 | ||
5 | |||
6 | EXPORTS | ||
7 | adler32 @1 | ||
8 | compress @2 | ||
9 | crc32 @3 | ||
10 | deflate @4 | ||
11 | deflateCopy @5 | ||
12 | deflateEnd @6 | ||
13 | deflateInit2_ @7 | ||
14 | deflateInit_ @8 | ||
15 | deflateParams @9 | ||
16 | deflateReset @10 | ||
17 | deflateSetDictionary @11 | ||
18 | gzclose @12 | ||
19 | gzdopen @13 | ||
20 | gzerror @14 | ||
21 | gzflush @15 | ||
22 | gzopen @16 | ||
23 | gzread @17 | ||
24 | gzwrite @18 | ||
25 | inflate @19 | ||
26 | inflateEnd @20 | ||
27 | inflateInit2_ @21 | ||
28 | inflateInit_ @22 | ||
29 | inflateReset @23 | ||
30 | inflateSetDictionary @24 | ||
31 | inflateSync @25 | ||
32 | uncompress @26 | ||
33 | zlibVersion @27 | ||
34 | gzprintf @28 | ||
35 | gzputc @29 | ||
36 | gzgetc @30 | ||
37 | gzseek @31 | ||
38 | gzrewind @32 | ||
39 | gztell @33 | ||
40 | gzeof @34 | ||
41 | gzsetparams @35 | ||
42 | zError @36 | ||
43 | inflateSyncPoint @37 | ||
44 | get_crc_table @38 | ||
45 | compress2 @39 | ||
46 | gzputs @40 | ||
47 | gzgets @41 | ||
48 | inflateCopy @42 | ||
49 | inflateBackInit_ @43 | ||
50 | inflateBack @44 | ||
51 | inflateBackEnd @45 | ||
52 | compressBound @46 | ||
53 | deflateBound @47 | ||
54 | gzclearerr @48 | ||
55 | gzungetc @49 | ||
56 | zlibCompileFlags @50 | ||
57 | deflatePrime @51 | ||
58 | |||
59 | unzOpen @61 | ||
60 | unzClose @62 | ||
61 | unzGetGlobalInfo @63 | ||
62 | unzGetCurrentFileInfo @64 | ||
63 | unzGoToFirstFile @65 | ||
64 | unzGoToNextFile @66 | ||
65 | unzOpenCurrentFile @67 | ||
66 | unzReadCurrentFile @68 | ||
67 | unzOpenCurrentFile3 @69 | ||
68 | unztell @70 | ||
69 | unzeof @71 | ||
70 | unzCloseCurrentFile @72 | ||
71 | unzGetGlobalComment @73 | ||
72 | unzStringFileNameCompare @74 | ||
73 | unzLocateFile @75 | ||
74 | unzGetLocalExtrafield @76 | ||
75 | unzOpen2 @77 | ||
76 | unzOpenCurrentFile2 @78 | ||
77 | unzOpenCurrentFilePassword @79 | ||
78 | |||
79 | zipOpen @80 | ||
80 | zipOpenNewFileInZip @81 | ||
81 | zipWriteInFileInZip @82 | ||
82 | zipCloseFileInZip @83 | ||
83 | zipClose @84 | ||
84 | zipOpenNewFileInZip2 @86 | ||
85 | zipCloseFileInZipRaw @87 | ||
86 | zipOpen2 @88 | ||
87 | zipOpenNewFileInZip3 @89 | ||
88 | |||
89 | unzGetFilePos @100 | ||
90 | unzGoToFilePos @101 | ||
91 | |||
92 | fill_win32_filefunc @110 | ||
93 | fill_win32_filefunc64 @111 | ||
94 | fill_win32_filefunc64A @112 | ||
95 | fill_win32_filefunc64W @113 | ||
96 | |||
97 | ; quick hack by hkuno@microhouse.co.jp | ||
98 | unzOpen64 @120 | ||
99 | unzOpen2_64 @121 | ||
100 | unzGetGlobalInfo64 @122 | ||
101 | unzGetCurrentFileInfo64 @124 | ||
102 | unzGetCurrentFileZStreamPos64 @125 | ||
103 | unztell64 @126 | ||
104 | unzGetFilePos64 @127 | ||
105 | unzGoToFilePos64 @128 | ||
106 | |||
107 | zipOpen64 @130 | ||
108 | zipOpen2_64 @131 | ||
109 | zipOpenNewFileInZip64 @132 | ||
110 | zipOpenNewFileInZip2_64 @133 | ||
111 | zipOpenNewFileInZip3_64 @134 | ||
112 | zipOpenNewFileInZip4_64 @135 | ||
113 | zipCloseFileInZipRaw64 @136 | ||
114 | ; end hack | ||
diff --git a/contrib/vstudio/vc8/zlibvc.def b/contrib/vstudio/vc8/zlibvc.def deleted file mode 100644 index 0b6a9e9..0000000 --- a/contrib/vstudio/vc8/zlibvc.def +++ /dev/null | |||
@@ -1,114 +0,0 @@ | |||
1 | |||
2 | VERSION 1.23 | ||
3 | |||
4 | HEAPSIZE 1048576,8192 | ||
5 | |||
6 | EXPORTS | ||
7 | adler32 @1 | ||
8 | compress @2 | ||
9 | crc32 @3 | ||
10 | deflate @4 | ||
11 | deflateCopy @5 | ||
12 | deflateEnd @6 | ||
13 | deflateInit2_ @7 | ||
14 | deflateInit_ @8 | ||
15 | deflateParams @9 | ||
16 | deflateReset @10 | ||
17 | deflateSetDictionary @11 | ||
18 | gzclose @12 | ||
19 | gzdopen @13 | ||
20 | gzerror @14 | ||
21 | gzflush @15 | ||
22 | gzopen @16 | ||
23 | gzread @17 | ||
24 | gzwrite @18 | ||
25 | inflate @19 | ||
26 | inflateEnd @20 | ||
27 | inflateInit2_ @21 | ||
28 | inflateInit_ @22 | ||
29 | inflateReset @23 | ||
30 | inflateSetDictionary @24 | ||
31 | inflateSync @25 | ||
32 | uncompress @26 | ||
33 | zlibVersion @27 | ||
34 | gzprintf @28 | ||
35 | gzputc @29 | ||
36 | gzgetc @30 | ||
37 | gzseek @31 | ||
38 | gzrewind @32 | ||
39 | gztell @33 | ||
40 | gzeof @34 | ||
41 | gzsetparams @35 | ||
42 | zError @36 | ||
43 | inflateSyncPoint @37 | ||
44 | get_crc_table @38 | ||
45 | compress2 @39 | ||
46 | gzputs @40 | ||
47 | gzgets @41 | ||
48 | inflateCopy @42 | ||
49 | inflateBackInit_ @43 | ||
50 | inflateBack @44 | ||
51 | inflateBackEnd @45 | ||
52 | compressBound @46 | ||
53 | deflateBound @47 | ||
54 | gzclearerr @48 | ||
55 | gzungetc @49 | ||
56 | zlibCompileFlags @50 | ||
57 | deflatePrime @51 | ||
58 | |||
59 | unzOpen @61 | ||
60 | unzClose @62 | ||
61 | unzGetGlobalInfo @63 | ||
62 | unzGetCurrentFileInfo @64 | ||
63 | unzGoToFirstFile @65 | ||
64 | unzGoToNextFile @66 | ||
65 | unzOpenCurrentFile @67 | ||
66 | unzReadCurrentFile @68 | ||
67 | unzOpenCurrentFile3 @69 | ||
68 | unztell @70 | ||
69 | unzeof @71 | ||
70 | unzCloseCurrentFile @72 | ||
71 | unzGetGlobalComment @73 | ||
72 | unzStringFileNameCompare @74 | ||
73 | unzLocateFile @75 | ||
74 | unzGetLocalExtrafield @76 | ||
75 | unzOpen2 @77 | ||
76 | unzOpenCurrentFile2 @78 | ||
77 | unzOpenCurrentFilePassword @79 | ||
78 | |||
79 | zipOpen @80 | ||
80 | zipOpenNewFileInZip @81 | ||
81 | zipWriteInFileInZip @82 | ||
82 | zipCloseFileInZip @83 | ||
83 | zipClose @84 | ||
84 | zipOpenNewFileInZip2 @86 | ||
85 | zipCloseFileInZipRaw @87 | ||
86 | zipOpen2 @88 | ||
87 | zipOpenNewFileInZip3 @89 | ||
88 | |||
89 | unzGetFilePos @100 | ||
90 | unzGoToFilePos @101 | ||
91 | |||
92 | fill_win32_filefunc @110 | ||
93 | fill_win32_filefunc64 @111 | ||
94 | fill_win32_filefunc64A @112 | ||
95 | fill_win32_filefunc64W @113 | ||
96 | |||
97 | ; quick hack by hkuno@microhouse.co.jp | ||
98 | unzOpen64 @120 | ||
99 | unzOpen2_64 @121 | ||
100 | unzGetGlobalInfo64 @122 | ||
101 | unzGetCurrentFileInfo64 @124 | ||
102 | unzGetCurrentFileZStreamPos64 @125 | ||
103 | unztell64 @126 | ||
104 | unzGetFilePos64 @127 | ||
105 | unzGoToFilePos64 @128 | ||
106 | |||
107 | zipOpen64 @130 | ||
108 | zipOpen2_64 @131 | ||
109 | zipOpenNewFileInZip64 @132 | ||
110 | zipOpenNewFileInZip2_64 @133 | ||
111 | zipOpenNewFileInZip3_64 @134 | ||
112 | zipOpenNewFileInZip4_64 @135 | ||
113 | zipCloseFileInZipRaw64 @136 | ||
114 | ; end hack | ||
diff --git a/contrib/vstudio/vc9/testzlib.vcproj b/contrib/vstudio/vc9/testzlib.vcproj index 9ad07ae..9cb0bf8 100644 --- a/contrib/vstudio/vc9/testzlib.vcproj +++ b/contrib/vstudio/vc9/testzlib.vcproj | |||
@@ -1,7 +1,7 @@ | |||
1 | <?xml version="1.0" encoding="Windows-1252"?> | 1 | <?xml version="1.0" encoding="Windows-1252"?> |
2 | <VisualStudioProject | 2 | <VisualStudioProject |
3 | ProjectType="Visual C++" | 3 | ProjectType="Visual C++" |
4 | Version="9.00" | 4 | Version="9,00" |
5 | Name="testzlib" | 5 | Name="testzlib" |
6 | ProjectGUID="{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}" | 6 | ProjectGUID="{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}" |
7 | RootNamespace="testzlib" | 7 | RootNamespace="testzlib" |
@@ -71,7 +71,7 @@ | |||
71 | /> | 71 | /> |
72 | <Tool | 72 | <Tool |
73 | Name="VCLinkerTool" | 73 | Name="VCLinkerTool" |
74 | AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj" | 74 | AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj" |
75 | OutputFile="$(OutDir)/testzlib.exe" | 75 | OutputFile="$(OutDir)/testzlib.exe" |
76 | LinkIncremental="2" | 76 | LinkIncremental="2" |
77 | GenerateManifest="false" | 77 | GenerateManifest="false" |
@@ -105,12 +105,10 @@ | |||
105 | /> | 105 | /> |
106 | </Configuration> | 106 | </Configuration> |
107 | <Configuration | 107 | <Configuration |
108 | Name="ReleaseWithoutAsm|Win32" | 108 | Name="Debug|x64" |
109 | OutputDirectory="x86\TestZlib$(ConfigurationName)" | 109 | OutputDirectory="x64\TestZlib$(ConfigurationName)" |
110 | IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp" | 110 | IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp" |
111 | ConfigurationType="1" | 111 | ConfigurationType="1" |
112 | CharacterSet="2" | ||
113 | WholeProgramOptimization="1" | ||
114 | > | 112 | > |
115 | <Tool | 113 | <Tool |
116 | Name="VCPreBuildEventTool" | 114 | Name="VCPreBuildEventTool" |
@@ -129,21 +127,12 @@ | |||
129 | /> | 127 | /> |
130 | <Tool | 128 | <Tool |
131 | Name="VCCLCompilerTool" | 129 | Name="VCCLCompilerTool" |
132 | Optimization="2" | ||
133 | InlineFunctionExpansion="1" | ||
134 | OmitFramePointers="true" | ||
135 | AdditionalIncludeDirectories="..\..\.." | 130 | AdditionalIncludeDirectories="..\..\.." |
136 | PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" | 131 | PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" |
137 | StringPooling="true" | ||
138 | BasicRuntimeChecks="0" | 132 | BasicRuntimeChecks="0" |
139 | RuntimeLibrary="0" | 133 | RuntimeLibrary="3" |
140 | BufferSecurityCheck="false" | 134 | BufferSecurityCheck="false" |
141 | EnableFunctionLevelLinking="true" | ||
142 | UsePrecompiledHeader="0" | ||
143 | AssemblerListingLocation="$(IntDir)\" | 135 | AssemblerListingLocation="$(IntDir)\" |
144 | WarningLevel="3" | ||
145 | Detect64BitPortabilityProblems="true" | ||
146 | DebugInformationFormat="3" | ||
147 | /> | 136 | /> |
148 | <Tool | 137 | <Tool |
149 | Name="VCManagedResourceCompilerTool" | 138 | Name="VCManagedResourceCompilerTool" |
@@ -156,17 +145,8 @@ | |||
156 | /> | 145 | /> |
157 | <Tool | 146 | <Tool |
158 | Name="VCLinkerTool" | 147 | Name="VCLinkerTool" |
159 | OutputFile="$(OutDir)/testzlib.exe" | 148 | AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj" |
160 | LinkIncremental="1" | ||
161 | GenerateManifest="false" | 149 | GenerateManifest="false" |
162 | GenerateDebugInformation="true" | ||
163 | SubSystem="1" | ||
164 | OptimizeReferences="2" | ||
165 | EnableCOMDATFolding="2" | ||
166 | OptimizeForWindows98="1" | ||
167 | RandomizedBaseAddress="1" | ||
168 | DataExecutionPrevention="0" | ||
169 | TargetMachine="1" | ||
170 | /> | 150 | /> |
171 | <Tool | 151 | <Tool |
172 | Name="VCALinkTool" | 152 | Name="VCALinkTool" |
@@ -191,12 +171,11 @@ | |||
191 | /> | 171 | /> |
192 | </Configuration> | 172 | </Configuration> |
193 | <Configuration | 173 | <Configuration |
194 | Name="Release|Win32" | 174 | Name="Debug|Itanium" |
195 | OutputDirectory="x86\TestZlib$(ConfigurationName)" | 175 | OutputDirectory="ia64\TestZlib$(ConfigurationName)" |
196 | IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp" | 176 | IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp" |
197 | ConfigurationType="1" | 177 | ConfigurationType="1" |
198 | CharacterSet="2" | 178 | CharacterSet="2" |
199 | WholeProgramOptimization="1" | ||
200 | > | 179 | > |
201 | <Tool | 180 | <Tool |
202 | Name="VCPreBuildEventTool" | 181 | Name="VCPreBuildEventTool" |
@@ -212,20 +191,19 @@ | |||
212 | /> | 191 | /> |
213 | <Tool | 192 | <Tool |
214 | Name="VCMIDLTool" | 193 | Name="VCMIDLTool" |
194 | TargetEnvironment="2" | ||
215 | /> | 195 | /> |
216 | <Tool | 196 | <Tool |
217 | Name="VCCLCompilerTool" | 197 | Name="VCCLCompilerTool" |
218 | Optimization="2" | 198 | Optimization="0" |
219 | InlineFunctionExpansion="1" | ||
220 | OmitFramePointers="true" | ||
221 | AdditionalIncludeDirectories="..\..\.." | 199 | AdditionalIncludeDirectories="..\..\.." |
222 | PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" | 200 | PreprocessorDefinitions="ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" |
223 | StringPooling="true" | 201 | MinimalRebuild="true" |
224 | BasicRuntimeChecks="0" | 202 | BasicRuntimeChecks="0" |
225 | RuntimeLibrary="0" | 203 | RuntimeLibrary="3" |
226 | BufferSecurityCheck="false" | 204 | BufferSecurityCheck="false" |
227 | EnableFunctionLevelLinking="true" | ||
228 | UsePrecompiledHeader="0" | 205 | UsePrecompiledHeader="0" |
206 | AssemblerOutput="4" | ||
229 | AssemblerListingLocation="$(IntDir)\" | 207 | AssemblerListingLocation="$(IntDir)\" |
230 | WarningLevel="3" | 208 | WarningLevel="3" |
231 | Detect64BitPortabilityProblems="true" | 209 | Detect64BitPortabilityProblems="true" |
@@ -242,18 +220,13 @@ | |||
242 | /> | 220 | /> |
243 | <Tool | 221 | <Tool |
244 | Name="VCLinkerTool" | 222 | Name="VCLinkerTool" |
245 | AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj" | ||
246 | OutputFile="$(OutDir)/testzlib.exe" | 223 | OutputFile="$(OutDir)/testzlib.exe" |
247 | LinkIncremental="1" | 224 | LinkIncremental="2" |
248 | GenerateManifest="false" | 225 | GenerateManifest="false" |
249 | GenerateDebugInformation="true" | 226 | GenerateDebugInformation="true" |
227 | ProgramDatabaseFile="$(OutDir)/testzlib.pdb" | ||
250 | SubSystem="1" | 228 | SubSystem="1" |
251 | OptimizeReferences="2" | 229 | TargetMachine="5" |
252 | EnableCOMDATFolding="2" | ||
253 | OptimizeForWindows98="1" | ||
254 | RandomizedBaseAddress="1" | ||
255 | DataExecutionPrevention="0" | ||
256 | TargetMachine="1" | ||
257 | /> | 230 | /> |
258 | <Tool | 231 | <Tool |
259 | Name="VCALinkTool" | 232 | Name="VCALinkTool" |
@@ -278,10 +251,12 @@ | |||
278 | /> | 251 | /> |
279 | </Configuration> | 252 | </Configuration> |
280 | <Configuration | 253 | <Configuration |
281 | Name="Debug|x64" | 254 | Name="ReleaseWithoutAsm|Win32" |
282 | OutputDirectory="x64\TestZlib$(ConfigurationName)" | 255 | OutputDirectory="x86\TestZlib$(ConfigurationName)" |
283 | IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp" | 256 | IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp" |
284 | ConfigurationType="1" | 257 | ConfigurationType="1" |
258 | CharacterSet="2" | ||
259 | WholeProgramOptimization="1" | ||
285 | > | 260 | > |
286 | <Tool | 261 | <Tool |
287 | Name="VCPreBuildEventTool" | 262 | Name="VCPreBuildEventTool" |
@@ -300,12 +275,21 @@ | |||
300 | /> | 275 | /> |
301 | <Tool | 276 | <Tool |
302 | Name="VCCLCompilerTool" | 277 | Name="VCCLCompilerTool" |
278 | Optimization="2" | ||
279 | InlineFunctionExpansion="1" | ||
280 | OmitFramePointers="true" | ||
303 | AdditionalIncludeDirectories="..\..\.." | 281 | AdditionalIncludeDirectories="..\..\.." |
304 | PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" | 282 | PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" |
283 | StringPooling="true" | ||
305 | BasicRuntimeChecks="0" | 284 | BasicRuntimeChecks="0" |
306 | RuntimeLibrary="3" | 285 | RuntimeLibrary="0" |
307 | BufferSecurityCheck="false" | 286 | BufferSecurityCheck="false" |
287 | EnableFunctionLevelLinking="true" | ||
288 | UsePrecompiledHeader="0" | ||
308 | AssemblerListingLocation="$(IntDir)\" | 289 | AssemblerListingLocation="$(IntDir)\" |
290 | WarningLevel="3" | ||
291 | Detect64BitPortabilityProblems="true" | ||
292 | DebugInformationFormat="3" | ||
309 | /> | 293 | /> |
310 | <Tool | 294 | <Tool |
311 | Name="VCManagedResourceCompilerTool" | 295 | Name="VCManagedResourceCompilerTool" |
@@ -318,8 +302,17 @@ | |||
318 | /> | 302 | /> |
319 | <Tool | 303 | <Tool |
320 | Name="VCLinkerTool" | 304 | Name="VCLinkerTool" |
321 | AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj" | 305 | OutputFile="$(OutDir)/testzlib.exe" |
306 | LinkIncremental="1" | ||
322 | GenerateManifest="false" | 307 | GenerateManifest="false" |
308 | GenerateDebugInformation="true" | ||
309 | SubSystem="1" | ||
310 | OptimizeReferences="2" | ||
311 | EnableCOMDATFolding="2" | ||
312 | OptimizeForWindows98="1" | ||
313 | RandomizedBaseAddress="1" | ||
314 | DataExecutionPrevention="0" | ||
315 | TargetMachine="1" | ||
323 | /> | 316 | /> |
324 | <Tool | 317 | <Tool |
325 | Name="VCALinkTool" | 318 | Name="VCALinkTool" |
@@ -340,18 +333,15 @@ | |||
340 | Name="VCAppVerifierTool" | 333 | Name="VCAppVerifierTool" |
341 | /> | 334 | /> |
342 | <Tool | 335 | <Tool |
343 | Name="VCWebDeploymentTool" | ||
344 | /> | ||
345 | <Tool | ||
346 | Name="VCPostBuildEventTool" | 336 | Name="VCPostBuildEventTool" |
347 | /> | 337 | /> |
348 | </Configuration> | 338 | </Configuration> |
349 | <Configuration | 339 | <Configuration |
350 | Name="Debug|Itanium" | 340 | Name="ReleaseWithoutAsm|x64" |
351 | OutputDirectory="ia64\TestZlib$(ConfigurationName)" | 341 | OutputDirectory="x64\TestZlib$(ConfigurationName)" |
352 | IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp" | 342 | IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp" |
353 | ConfigurationType="1" | 343 | ConfigurationType="1" |
354 | CharacterSet="2" | 344 | WholeProgramOptimization="1" |
355 | > | 345 | > |
356 | <Tool | 346 | <Tool |
357 | Name="VCPreBuildEventTool" | 347 | Name="VCPreBuildEventTool" |
@@ -367,23 +357,15 @@ | |||
367 | /> | 357 | /> |
368 | <Tool | 358 | <Tool |
369 | Name="VCMIDLTool" | 359 | Name="VCMIDLTool" |
370 | TargetEnvironment="2" | ||
371 | /> | 360 | /> |
372 | <Tool | 361 | <Tool |
373 | Name="VCCLCompilerTool" | 362 | Name="VCCLCompilerTool" |
374 | Optimization="0" | ||
375 | AdditionalIncludeDirectories="..\..\.." | 363 | AdditionalIncludeDirectories="..\..\.." |
376 | PreprocessorDefinitions="ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" | 364 | PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" |
377 | MinimalRebuild="true" | ||
378 | BasicRuntimeChecks="0" | 365 | BasicRuntimeChecks="0" |
379 | RuntimeLibrary="3" | 366 | RuntimeLibrary="2" |
380 | BufferSecurityCheck="false" | 367 | BufferSecurityCheck="false" |
381 | UsePrecompiledHeader="0" | ||
382 | AssemblerOutput="4" | ||
383 | AssemblerListingLocation="$(IntDir)\" | 368 | AssemblerListingLocation="$(IntDir)\" |
384 | WarningLevel="3" | ||
385 | Detect64BitPortabilityProblems="true" | ||
386 | DebugInformationFormat="3" | ||
387 | /> | 369 | /> |
388 | <Tool | 370 | <Tool |
389 | Name="VCManagedResourceCompilerTool" | 371 | Name="VCManagedResourceCompilerTool" |
@@ -396,13 +378,8 @@ | |||
396 | /> | 378 | /> |
397 | <Tool | 379 | <Tool |
398 | Name="VCLinkerTool" | 380 | Name="VCLinkerTool" |
399 | OutputFile="$(OutDir)/testzlib.exe" | 381 | AdditionalDependencies="" |
400 | LinkIncremental="2" | ||
401 | GenerateManifest="false" | 382 | GenerateManifest="false" |
402 | GenerateDebugInformation="true" | ||
403 | ProgramDatabaseFile="$(OutDir)/testzlib.pdb" | ||
404 | SubSystem="1" | ||
405 | TargetMachine="5" | ||
406 | /> | 383 | /> |
407 | <Tool | 384 | <Tool |
408 | Name="VCALinkTool" | 385 | Name="VCALinkTool" |
@@ -423,17 +400,15 @@ | |||
423 | Name="VCAppVerifierTool" | 400 | Name="VCAppVerifierTool" |
424 | /> | 401 | /> |
425 | <Tool | 402 | <Tool |
426 | Name="VCWebDeploymentTool" | ||
427 | /> | ||
428 | <Tool | ||
429 | Name="VCPostBuildEventTool" | 403 | Name="VCPostBuildEventTool" |
430 | /> | 404 | /> |
431 | </Configuration> | 405 | </Configuration> |
432 | <Configuration | 406 | <Configuration |
433 | Name="ReleaseWithoutAsm|x64" | 407 | Name="ReleaseWithoutAsm|Itanium" |
434 | OutputDirectory="x64\TestZlib$(ConfigurationName)" | 408 | OutputDirectory="ia64\TestZlib$(ConfigurationName)" |
435 | IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp" | 409 | IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp" |
436 | ConfigurationType="1" | 410 | ConfigurationType="1" |
411 | CharacterSet="2" | ||
437 | WholeProgramOptimization="1" | 412 | WholeProgramOptimization="1" |
438 | > | 413 | > |
439 | <Tool | 414 | <Tool |
@@ -450,15 +425,25 @@ | |||
450 | /> | 425 | /> |
451 | <Tool | 426 | <Tool |
452 | Name="VCMIDLTool" | 427 | Name="VCMIDLTool" |
428 | TargetEnvironment="2" | ||
453 | /> | 429 | /> |
454 | <Tool | 430 | <Tool |
455 | Name="VCCLCompilerTool" | 431 | Name="VCCLCompilerTool" |
432 | Optimization="2" | ||
433 | InlineFunctionExpansion="1" | ||
434 | OmitFramePointers="true" | ||
456 | AdditionalIncludeDirectories="..\..\.." | 435 | AdditionalIncludeDirectories="..\..\.." |
457 | PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" | 436 | PreprocessorDefinitions="ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" |
437 | StringPooling="true" | ||
458 | BasicRuntimeChecks="0" | 438 | BasicRuntimeChecks="0" |
459 | RuntimeLibrary="2" | 439 | RuntimeLibrary="2" |
460 | BufferSecurityCheck="false" | 440 | BufferSecurityCheck="false" |
441 | EnableFunctionLevelLinking="true" | ||
442 | UsePrecompiledHeader="0" | ||
461 | AssemblerListingLocation="$(IntDir)\" | 443 | AssemblerListingLocation="$(IntDir)\" |
444 | WarningLevel="3" | ||
445 | Detect64BitPortabilityProblems="true" | ||
446 | DebugInformationFormat="3" | ||
462 | /> | 447 | /> |
463 | <Tool | 448 | <Tool |
464 | Name="VCManagedResourceCompilerTool" | 449 | Name="VCManagedResourceCompilerTool" |
@@ -471,8 +456,15 @@ | |||
471 | /> | 456 | /> |
472 | <Tool | 457 | <Tool |
473 | Name="VCLinkerTool" | 458 | Name="VCLinkerTool" |
474 | AdditionalDependencies="" | 459 | OutputFile="$(OutDir)/testzlib.exe" |
460 | LinkIncremental="1" | ||
475 | GenerateManifest="false" | 461 | GenerateManifest="false" |
462 | GenerateDebugInformation="true" | ||
463 | SubSystem="1" | ||
464 | OptimizeReferences="2" | ||
465 | EnableCOMDATFolding="2" | ||
466 | OptimizeForWindows98="1" | ||
467 | TargetMachine="5" | ||
476 | /> | 468 | /> |
477 | <Tool | 469 | <Tool |
478 | Name="VCALinkTool" | 470 | Name="VCALinkTool" |
@@ -493,16 +485,13 @@ | |||
493 | Name="VCAppVerifierTool" | 485 | Name="VCAppVerifierTool" |
494 | /> | 486 | /> |
495 | <Tool | 487 | <Tool |
496 | Name="VCWebDeploymentTool" | ||
497 | /> | ||
498 | <Tool | ||
499 | Name="VCPostBuildEventTool" | 488 | Name="VCPostBuildEventTool" |
500 | /> | 489 | /> |
501 | </Configuration> | 490 | </Configuration> |
502 | <Configuration | 491 | <Configuration |
503 | Name="ReleaseWithoutAsm|Itanium" | 492 | Name="Release|Win32" |
504 | OutputDirectory="ia64\TestZlib$(ConfigurationName)" | 493 | OutputDirectory="x86\TestZlib$(ConfigurationName)" |
505 | IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp" | 494 | IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp" |
506 | ConfigurationType="1" | 495 | ConfigurationType="1" |
507 | CharacterSet="2" | 496 | CharacterSet="2" |
508 | WholeProgramOptimization="1" | 497 | WholeProgramOptimization="1" |
@@ -521,7 +510,6 @@ | |||
521 | /> | 510 | /> |
522 | <Tool | 511 | <Tool |
523 | Name="VCMIDLTool" | 512 | Name="VCMIDLTool" |
524 | TargetEnvironment="2" | ||
525 | /> | 513 | /> |
526 | <Tool | 514 | <Tool |
527 | Name="VCCLCompilerTool" | 515 | Name="VCCLCompilerTool" |
@@ -529,10 +517,10 @@ | |||
529 | InlineFunctionExpansion="1" | 517 | InlineFunctionExpansion="1" |
530 | OmitFramePointers="true" | 518 | OmitFramePointers="true" |
531 | AdditionalIncludeDirectories="..\..\.." | 519 | AdditionalIncludeDirectories="..\..\.." |
532 | PreprocessorDefinitions="ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" | 520 | PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" |
533 | StringPooling="true" | 521 | StringPooling="true" |
534 | BasicRuntimeChecks="0" | 522 | BasicRuntimeChecks="0" |
535 | RuntimeLibrary="2" | 523 | RuntimeLibrary="0" |
536 | BufferSecurityCheck="false" | 524 | BufferSecurityCheck="false" |
537 | EnableFunctionLevelLinking="true" | 525 | EnableFunctionLevelLinking="true" |
538 | UsePrecompiledHeader="0" | 526 | UsePrecompiledHeader="0" |
@@ -552,6 +540,7 @@ | |||
552 | /> | 540 | /> |
553 | <Tool | 541 | <Tool |
554 | Name="VCLinkerTool" | 542 | Name="VCLinkerTool" |
543 | AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj" | ||
555 | OutputFile="$(OutDir)/testzlib.exe" | 544 | OutputFile="$(OutDir)/testzlib.exe" |
556 | LinkIncremental="1" | 545 | LinkIncremental="1" |
557 | GenerateManifest="false" | 546 | GenerateManifest="false" |
@@ -560,7 +549,9 @@ | |||
560 | OptimizeReferences="2" | 549 | OptimizeReferences="2" |
561 | EnableCOMDATFolding="2" | 550 | EnableCOMDATFolding="2" |
562 | OptimizeForWindows98="1" | 551 | OptimizeForWindows98="1" |
563 | TargetMachine="5" | 552 | RandomizedBaseAddress="1" |
553 | DataExecutionPrevention="0" | ||
554 | TargetMachine="1" | ||
564 | /> | 555 | /> |
565 | <Tool | 556 | <Tool |
566 | Name="VCALinkTool" | 557 | Name="VCALinkTool" |
@@ -581,9 +572,6 @@ | |||
581 | Name="VCAppVerifierTool" | 572 | Name="VCAppVerifierTool" |
582 | /> | 573 | /> |
583 | <Tool | 574 | <Tool |
584 | Name="VCWebDeploymentTool" | ||
585 | /> | ||
586 | <Tool | ||
587 | Name="VCPostBuildEventTool" | 575 | Name="VCPostBuildEventTool" |
588 | /> | 576 | /> |
589 | </Configuration> | 577 | </Configuration> |
@@ -614,7 +602,7 @@ | |||
614 | AdditionalIncludeDirectories="..\..\.." | 602 | AdditionalIncludeDirectories="..\..\.." |
615 | PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" | 603 | PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" |
616 | BasicRuntimeChecks="0" | 604 | BasicRuntimeChecks="0" |
617 | RuntimeLibrary="2" | 605 | RuntimeLibrary="0" |
618 | BufferSecurityCheck="false" | 606 | BufferSecurityCheck="false" |
619 | AssemblerListingLocation="$(IntDir)\" | 607 | AssemblerListingLocation="$(IntDir)\" |
620 | /> | 608 | /> |
@@ -651,9 +639,6 @@ | |||
651 | Name="VCAppVerifierTool" | 639 | Name="VCAppVerifierTool" |
652 | /> | 640 | /> |
653 | <Tool | 641 | <Tool |
654 | Name="VCWebDeploymentTool" | ||
655 | /> | ||
656 | <Tool | ||
657 | Name="VCPostBuildEventTool" | 642 | Name="VCPostBuildEventTool" |
658 | /> | 643 | /> |
659 | </Configuration> | 644 | </Configuration> |
@@ -739,9 +724,6 @@ | |||
739 | Name="VCAppVerifierTool" | 724 | Name="VCAppVerifierTool" |
740 | /> | 725 | /> |
741 | <Tool | 726 | <Tool |
742 | Name="VCWebDeploymentTool" | ||
743 | /> | ||
744 | <Tool | ||
745 | Name="VCPostBuildEventTool" | 727 | Name="VCPostBuildEventTool" |
746 | /> | 728 | /> |
747 | </Configuration> | 729 | </Configuration> |
@@ -770,82 +752,6 @@ | |||
770 | > | 752 | > |
771 | </File> | 753 | </File> |
772 | <File | 754 | <File |
773 | RelativePath="..\..\masmx86\gvmat32c.c" | ||
774 | > | ||
775 | <FileConfiguration | ||
776 | Name="Debug|x64" | ||
777 | ExcludedFromBuild="true" | ||
778 | > | ||
779 | <Tool | ||
780 | Name="VCCLCompilerTool" | ||
781 | /> | ||
782 | </FileConfiguration> | ||
783 | <FileConfiguration | ||
784 | Name="Debug|Itanium" | ||
785 | ExcludedFromBuild="true" | ||
786 | > | ||
787 | <Tool | ||
788 | Name="VCCLCompilerTool" | ||
789 | /> | ||
790 | </FileConfiguration> | ||
791 | <FileConfiguration | ||
792 | Name="ReleaseWithoutAsm|x64" | ||
793 | ExcludedFromBuild="true" | ||
794 | > | ||
795 | <Tool | ||
796 | Name="VCCLCompilerTool" | ||
797 | /> | ||
798 | </FileConfiguration> | ||
799 | <FileConfiguration | ||
800 | Name="ReleaseWithoutAsm|Itanium" | ||
801 | ExcludedFromBuild="true" | ||
802 | > | ||
803 | <Tool | ||
804 | Name="VCCLCompilerTool" | ||
805 | /> | ||
806 | </FileConfiguration> | ||
807 | <FileConfiguration | ||
808 | Name="Release|x64" | ||
809 | ExcludedFromBuild="true" | ||
810 | > | ||
811 | <Tool | ||
812 | Name="VCCLCompilerTool" | ||
813 | /> | ||
814 | </FileConfiguration> | ||
815 | <FileConfiguration | ||
816 | Name="Release|Itanium" | ||
817 | ExcludedFromBuild="true" | ||
818 | > | ||
819 | <Tool | ||
820 | Name="VCCLCompilerTool" | ||
821 | /> | ||
822 | </FileConfiguration> | ||
823 | <FileConfiguration | ||
824 | Name="Debug|Win64 (AMD64)" | ||
825 | ExcludedFromBuild="TRUE" | ||
826 | > | ||
827 | <Tool | ||
828 | Name="VCCLCompilerTool" | ||
829 | /> | ||
830 | </FileConfiguration> | ||
831 | <FileConfiguration | ||
832 | Name="Release|Win64 (AMD64)" | ||
833 | ExcludedFromBuild="TRUE" | ||
834 | > | ||
835 | <Tool | ||
836 | Name="VCCLCompilerTool" | ||
837 | /> | ||
838 | </FileConfiguration> | ||
839 | <FileConfiguration | ||
840 | Name="ReleaseAsm|Win64 (AMD64)" | ||
841 | ExcludedFromBuild="TRUE" | ||
842 | > | ||
843 | <Tool | ||
844 | Name="VCCLCompilerTool" | ||
845 | /> | ||
846 | </FileConfiguration> | ||
847 | </File> | ||
848 | <File | ||
849 | RelativePath="..\..\..\infback.c" | 755 | RelativePath="..\..\..\infback.c" |
850 | > | 756 | > |
851 | </File> | 757 | </File> |
@@ -861,7 +767,7 @@ | |||
861 | /> | 767 | /> |
862 | </FileConfiguration> | 768 | </FileConfiguration> |
863 | <FileConfiguration | 769 | <FileConfiguration |
864 | Name="ReleaseWithoutAsm|Win32" | 770 | Name="Debug|Itanium" |
865 | ExcludedFromBuild="true" | 771 | ExcludedFromBuild="true" |
866 | > | 772 | > |
867 | <Tool | 773 | <Tool |
@@ -869,7 +775,7 @@ | |||
869 | /> | 775 | /> |
870 | </FileConfiguration> | 776 | </FileConfiguration> |
871 | <FileConfiguration | 777 | <FileConfiguration |
872 | Name="Release|Win32" | 778 | Name="ReleaseWithoutAsm|Win32" |
873 | ExcludedFromBuild="true" | 779 | ExcludedFromBuild="true" |
874 | > | 780 | > |
875 | <Tool | 781 | <Tool |
@@ -877,7 +783,7 @@ | |||
877 | /> | 783 | /> |
878 | </FileConfiguration> | 784 | </FileConfiguration> |
879 | <FileConfiguration | 785 | <FileConfiguration |
880 | Name="Debug|Itanium" | 786 | Name="ReleaseWithoutAsm|Itanium" |
881 | ExcludedFromBuild="true" | 787 | ExcludedFromBuild="true" |
882 | > | 788 | > |
883 | <Tool | 789 | <Tool |
@@ -885,7 +791,7 @@ | |||
885 | /> | 791 | /> |
886 | </FileConfiguration> | 792 | </FileConfiguration> |
887 | <FileConfiguration | 793 | <FileConfiguration |
888 | Name="ReleaseWithoutAsm|Itanium" | 794 | Name="Release|Win32" |
889 | ExcludedFromBuild="true" | 795 | ExcludedFromBuild="true" |
890 | > | 796 | > |
891 | <Tool | 797 | <Tool |
diff --git a/contrib/vstudio/vc9/zlib.rc b/contrib/vstudio/vc9/zlib.rc index 72cb8b4..23802d8 100644 --- a/contrib/vstudio/vc9/zlib.rc +++ b/contrib/vstudio/vc9/zlib.rc | |||
@@ -2,8 +2,8 @@ | |||
2 | 2 | ||
3 | #define IDR_VERSION1 1 | 3 | #define IDR_VERSION1 1 |
4 | IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE | 4 | IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE |
5 | FILEVERSION 1,2,3,0 | 5 | FILEVERSION 1,2,4,0 |
6 | PRODUCTVERSION 1,2,3,0 | 6 | PRODUCTVERSION 1,2,4,0 |
7 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK | 7 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK |
8 | FILEFLAGS 0 | 8 | FILEFLAGS 0 |
9 | FILEOS VOS_DOS_WINDOWS32 | 9 | FILEOS VOS_DOS_WINDOWS32 |
@@ -16,13 +16,13 @@ BEGIN | |||
16 | //language ID = U.S. English, char set = Windows, Multilingual | 16 | //language ID = U.S. English, char set = Windows, Multilingual |
17 | 17 | ||
18 | BEGIN | 18 | BEGIN |
19 | VALUE "FileDescription", "zlib data compression library\0" | 19 | VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" |
20 | VALUE "FileVersion", "1.2.3.0\0" | 20 | VALUE "FileVersion", "1.2.4.0\0" |
21 | VALUE "InternalName", "zlib\0" | 21 | VALUE "InternalName", "zlib\0" |
22 | VALUE "OriginalFilename", "zlib.dll\0" | 22 | VALUE "OriginalFilename", "zlib.dll\0" |
23 | VALUE "ProductName", "ZLib.DLL\0" | 23 | VALUE "ProductName", "ZLib.DLL\0" |
24 | VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" | 24 | VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" |
25 | VALUE "LegalCopyright", "(C) 1995-2003 Jean-loup Gailly & Mark Adler\0" | 25 | VALUE "LegalCopyright", "(C) 1995-2010 Jean-loup Gailly & Mark Adler\0" |
26 | END | 26 | END |
27 | END | 27 | END |
28 | BLOCK "VarFileInfo" | 28 | BLOCK "VarFileInfo" |
diff --git a/contrib/vstudio/vc9/zlibstat.vcproj b/contrib/vstudio/vc9/zlibstat.vcproj index ff9813a..61c76c7 100644 --- a/contrib/vstudio/vc9/zlibstat.vcproj +++ b/contrib/vstudio/vc9/zlibstat.vcproj | |||
@@ -1,7 +1,7 @@ | |||
1 | <?xml version="1.0" encoding="Windows-1252"?> | 1 | <?xml version="1.0" encoding="Windows-1252"?> |
2 | <VisualStudioProject | 2 | <VisualStudioProject |
3 | ProjectType="Visual C++" | 3 | ProjectType="Visual C++" |
4 | Version="9.00" | 4 | Version="9,00" |
5 | Name="zlibstat" | 5 | Name="zlibstat" |
6 | ProjectGUID="{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}" | 6 | ProjectGUID="{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}" |
7 | TargetFrameworkVersion="131072" | 7 | TargetFrameworkVersion="131072" |
@@ -94,9 +94,9 @@ | |||
94 | /> | 94 | /> |
95 | </Configuration> | 95 | </Configuration> |
96 | <Configuration | 96 | <Configuration |
97 | Name="Release|Win32" | 97 | Name="Debug|x64" |
98 | OutputDirectory="x86\ZlibStat$(ConfigurationName)" | 98 | OutputDirectory="x64\ZlibStat$(ConfigurationName)" |
99 | IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp" | 99 | IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp" |
100 | ConfigurationType="4" | 100 | ConfigurationType="4" |
101 | InheritedPropertySheets="UpgradeFromVC70.vsprops" | 101 | InheritedPropertySheets="UpgradeFromVC70.vsprops" |
102 | UseOfMFC="0" | 102 | UseOfMFC="0" |
@@ -116,23 +116,24 @@ | |||
116 | /> | 116 | /> |
117 | <Tool | 117 | <Tool |
118 | Name="VCMIDLTool" | 118 | Name="VCMIDLTool" |
119 | TargetEnvironment="3" | ||
119 | /> | 120 | /> |
120 | <Tool | 121 | <Tool |
121 | Name="VCCLCompilerTool" | 122 | Name="VCCLCompilerTool" |
122 | InlineFunctionExpansion="1" | 123 | Optimization="0" |
123 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" | 124 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
124 | PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF" | 125 | PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" |
125 | StringPooling="true" | ||
126 | ExceptionHandling="0" | 126 | ExceptionHandling="0" |
127 | RuntimeLibrary="0" | 127 | RuntimeLibrary="3" |
128 | BufferSecurityCheck="false" | 128 | BufferSecurityCheck="false" |
129 | EnableFunctionLevelLinking="true" | ||
130 | PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" | 129 | PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" |
131 | AssemblerListingLocation="$(IntDir)\" | 130 | AssemblerListingLocation="$(IntDir)\" |
132 | ObjectFile="$(IntDir)\" | 131 | ObjectFile="$(IntDir)\" |
133 | ProgramDataBaseFileName="$(OutDir)\" | 132 | ProgramDataBaseFileName="$(OutDir)\" |
134 | WarningLevel="3" | 133 | WarningLevel="3" |
135 | SuppressStartupBanner="true" | 134 | SuppressStartupBanner="true" |
135 | Detect64BitPortabilityProblems="true" | ||
136 | DebugInformationFormat="1" | ||
136 | /> | 137 | /> |
137 | <Tool | 138 | <Tool |
138 | Name="VCManagedResourceCompilerTool" | 139 | Name="VCManagedResourceCompilerTool" |
@@ -146,8 +147,7 @@ | |||
146 | /> | 147 | /> |
147 | <Tool | 148 | <Tool |
148 | Name="VCLibrarianTool" | 149 | Name="VCLibrarianTool" |
149 | AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB" | 150 | AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB" |
150 | AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj " | ||
151 | OutputFile="$(OutDir)\zlibstat.lib" | 151 | OutputFile="$(OutDir)\zlibstat.lib" |
152 | SuppressStartupBanner="true" | 152 | SuppressStartupBanner="true" |
153 | /> | 153 | /> |
@@ -168,9 +168,9 @@ | |||
168 | /> | 168 | /> |
169 | </Configuration> | 169 | </Configuration> |
170 | <Configuration | 170 | <Configuration |
171 | Name="ReleaseWithoutAsm|Win32" | 171 | Name="Debug|Itanium" |
172 | OutputDirectory="x86\ZlibStat$(ConfigurationName)" | 172 | OutputDirectory="ia64\ZlibStat$(ConfigurationName)" |
173 | IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp" | 173 | IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp" |
174 | ConfigurationType="4" | 174 | ConfigurationType="4" |
175 | InheritedPropertySheets="UpgradeFromVC70.vsprops" | 175 | InheritedPropertySheets="UpgradeFromVC70.vsprops" |
176 | UseOfMFC="0" | 176 | UseOfMFC="0" |
@@ -190,23 +190,24 @@ | |||
190 | /> | 190 | /> |
191 | <Tool | 191 | <Tool |
192 | Name="VCMIDLTool" | 192 | Name="VCMIDLTool" |
193 | TargetEnvironment="2" | ||
193 | /> | 194 | /> |
194 | <Tool | 195 | <Tool |
195 | Name="VCCLCompilerTool" | 196 | Name="VCCLCompilerTool" |
196 | InlineFunctionExpansion="1" | 197 | Optimization="0" |
197 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" | 198 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
198 | PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" | 199 | PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" |
199 | StringPooling="true" | ||
200 | ExceptionHandling="0" | 200 | ExceptionHandling="0" |
201 | RuntimeLibrary="0" | 201 | RuntimeLibrary="3" |
202 | BufferSecurityCheck="false" | 202 | BufferSecurityCheck="false" |
203 | EnableFunctionLevelLinking="true" | ||
204 | PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" | 203 | PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" |
205 | AssemblerListingLocation="$(IntDir)\" | 204 | AssemblerListingLocation="$(IntDir)\" |
206 | ObjectFile="$(IntDir)\" | 205 | ObjectFile="$(IntDir)\" |
207 | ProgramDataBaseFileName="$(OutDir)\" | 206 | ProgramDataBaseFileName="$(OutDir)\" |
208 | WarningLevel="3" | 207 | WarningLevel="3" |
209 | SuppressStartupBanner="true" | 208 | SuppressStartupBanner="true" |
209 | Detect64BitPortabilityProblems="true" | ||
210 | DebugInformationFormat="1" | ||
210 | /> | 211 | /> |
211 | <Tool | 212 | <Tool |
212 | Name="VCManagedResourceCompilerTool" | 213 | Name="VCManagedResourceCompilerTool" |
@@ -220,7 +221,7 @@ | |||
220 | /> | 221 | /> |
221 | <Tool | 222 | <Tool |
222 | Name="VCLibrarianTool" | 223 | Name="VCLibrarianTool" |
223 | AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB" | 224 | AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB" |
224 | OutputFile="$(OutDir)\zlibstat.lib" | 225 | OutputFile="$(OutDir)\zlibstat.lib" |
225 | SuppressStartupBanner="true" | 226 | SuppressStartupBanner="true" |
226 | /> | 227 | /> |
@@ -241,9 +242,9 @@ | |||
241 | /> | 242 | /> |
242 | </Configuration> | 243 | </Configuration> |
243 | <Configuration | 244 | <Configuration |
244 | Name="Debug|x64" | 245 | Name="Release|Win32" |
245 | OutputDirectory="x64\ZlibStat$(ConfigurationName)" | 246 | OutputDirectory="x86\ZlibStat$(ConfigurationName)" |
246 | IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp" | 247 | IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp" |
247 | ConfigurationType="4" | 248 | ConfigurationType="4" |
248 | InheritedPropertySheets="UpgradeFromVC70.vsprops" | 249 | InheritedPropertySheets="UpgradeFromVC70.vsprops" |
249 | UseOfMFC="0" | 250 | UseOfMFC="0" |
@@ -263,24 +264,23 @@ | |||
263 | /> | 264 | /> |
264 | <Tool | 265 | <Tool |
265 | Name="VCMIDLTool" | 266 | Name="VCMIDLTool" |
266 | TargetEnvironment="3" | ||
267 | /> | 267 | /> |
268 | <Tool | 268 | <Tool |
269 | Name="VCCLCompilerTool" | 269 | Name="VCCLCompilerTool" |
270 | Optimization="0" | 270 | InlineFunctionExpansion="1" |
271 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" | 271 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
272 | PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" | 272 | PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF" |
273 | StringPooling="true" | ||
273 | ExceptionHandling="0" | 274 | ExceptionHandling="0" |
274 | RuntimeLibrary="3" | 275 | RuntimeLibrary="0" |
275 | BufferSecurityCheck="false" | 276 | BufferSecurityCheck="false" |
277 | EnableFunctionLevelLinking="true" | ||
276 | PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" | 278 | PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" |
277 | AssemblerListingLocation="$(IntDir)\" | 279 | AssemblerListingLocation="$(IntDir)\" |
278 | ObjectFile="$(IntDir)\" | 280 | ObjectFile="$(IntDir)\" |
279 | ProgramDataBaseFileName="$(OutDir)\" | 281 | ProgramDataBaseFileName="$(OutDir)\" |
280 | WarningLevel="3" | 282 | WarningLevel="3" |
281 | SuppressStartupBanner="true" | 283 | SuppressStartupBanner="true" |
282 | Detect64BitPortabilityProblems="true" | ||
283 | DebugInformationFormat="1" | ||
284 | /> | 284 | /> |
285 | <Tool | 285 | <Tool |
286 | Name="VCManagedResourceCompilerTool" | 286 | Name="VCManagedResourceCompilerTool" |
@@ -294,7 +294,8 @@ | |||
294 | /> | 294 | /> |
295 | <Tool | 295 | <Tool |
296 | Name="VCLibrarianTool" | 296 | Name="VCLibrarianTool" |
297 | AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB" | 297 | AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB" |
298 | AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj " | ||
298 | OutputFile="$(OutDir)\zlibstat.lib" | 299 | OutputFile="$(OutDir)\zlibstat.lib" |
299 | SuppressStartupBanner="true" | 300 | SuppressStartupBanner="true" |
300 | /> | 301 | /> |
@@ -315,9 +316,9 @@ | |||
315 | /> | 316 | /> |
316 | </Configuration> | 317 | </Configuration> |
317 | <Configuration | 318 | <Configuration |
318 | Name="Debug|Itanium" | 319 | Name="Release|x64" |
319 | OutputDirectory="ia64\ZlibStat$(ConfigurationName)" | 320 | OutputDirectory="x64\ZlibStat$(ConfigurationName)" |
320 | IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp" | 321 | IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp" |
321 | ConfigurationType="4" | 322 | ConfigurationType="4" |
322 | InheritedPropertySheets="UpgradeFromVC70.vsprops" | 323 | InheritedPropertySheets="UpgradeFromVC70.vsprops" |
323 | UseOfMFC="0" | 324 | UseOfMFC="0" |
@@ -337,24 +338,24 @@ | |||
337 | /> | 338 | /> |
338 | <Tool | 339 | <Tool |
339 | Name="VCMIDLTool" | 340 | Name="VCMIDLTool" |
340 | TargetEnvironment="2" | 341 | TargetEnvironment="3" |
341 | /> | 342 | /> |
342 | <Tool | 343 | <Tool |
343 | Name="VCCLCompilerTool" | 344 | Name="VCCLCompilerTool" |
344 | Optimization="0" | 345 | InlineFunctionExpansion="1" |
345 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" | 346 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
346 | PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" | 347 | PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64" |
348 | StringPooling="true" | ||
347 | ExceptionHandling="0" | 349 | ExceptionHandling="0" |
348 | RuntimeLibrary="3" | 350 | RuntimeLibrary="2" |
349 | BufferSecurityCheck="false" | 351 | BufferSecurityCheck="false" |
352 | EnableFunctionLevelLinking="true" | ||
350 | PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" | 353 | PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" |
351 | AssemblerListingLocation="$(IntDir)\" | 354 | AssemblerListingLocation="$(IntDir)\" |
352 | ObjectFile="$(IntDir)\" | 355 | ObjectFile="$(IntDir)\" |
353 | ProgramDataBaseFileName="$(OutDir)\" | 356 | ProgramDataBaseFileName="$(OutDir)\" |
354 | WarningLevel="3" | 357 | WarningLevel="3" |
355 | SuppressStartupBanner="true" | 358 | SuppressStartupBanner="true" |
356 | Detect64BitPortabilityProblems="true" | ||
357 | DebugInformationFormat="1" | ||
358 | /> | 359 | /> |
359 | <Tool | 360 | <Tool |
360 | Name="VCManagedResourceCompilerTool" | 361 | Name="VCManagedResourceCompilerTool" |
@@ -368,7 +369,8 @@ | |||
368 | /> | 369 | /> |
369 | <Tool | 370 | <Tool |
370 | Name="VCLibrarianTool" | 371 | Name="VCLibrarianTool" |
371 | AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB" | 372 | AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB" |
373 | AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj " | ||
372 | OutputFile="$(OutDir)\zlibstat.lib" | 374 | OutputFile="$(OutDir)\zlibstat.lib" |
373 | SuppressStartupBanner="true" | 375 | SuppressStartupBanner="true" |
374 | /> | 376 | /> |
@@ -389,9 +391,9 @@ | |||
389 | /> | 391 | /> |
390 | </Configuration> | 392 | </Configuration> |
391 | <Configuration | 393 | <Configuration |
392 | Name="Release|x64" | 394 | Name="Release|Itanium" |
393 | OutputDirectory="x64\ZlibStat$(ConfigurationName)" | 395 | OutputDirectory="ia64\ZlibStat$(ConfigurationName)" |
394 | IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp" | 396 | IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp" |
395 | ConfigurationType="4" | 397 | ConfigurationType="4" |
396 | InheritedPropertySheets="UpgradeFromVC70.vsprops" | 398 | InheritedPropertySheets="UpgradeFromVC70.vsprops" |
397 | UseOfMFC="0" | 399 | UseOfMFC="0" |
@@ -411,13 +413,13 @@ | |||
411 | /> | 413 | /> |
412 | <Tool | 414 | <Tool |
413 | Name="VCMIDLTool" | 415 | Name="VCMIDLTool" |
414 | TargetEnvironment="3" | 416 | TargetEnvironment="2" |
415 | /> | 417 | /> |
416 | <Tool | 418 | <Tool |
417 | Name="VCCLCompilerTool" | 419 | Name="VCCLCompilerTool" |
418 | InlineFunctionExpansion="1" | 420 | InlineFunctionExpansion="1" |
419 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" | 421 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
420 | PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64" | 422 | PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" |
421 | StringPooling="true" | 423 | StringPooling="true" |
422 | ExceptionHandling="0" | 424 | ExceptionHandling="0" |
423 | RuntimeLibrary="2" | 425 | RuntimeLibrary="2" |
@@ -442,8 +444,7 @@ | |||
442 | /> | 444 | /> |
443 | <Tool | 445 | <Tool |
444 | Name="VCLibrarianTool" | 446 | Name="VCLibrarianTool" |
445 | AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB" | 447 | AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB" |
446 | AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj " | ||
447 | OutputFile="$(OutDir)\zlibstat.lib" | 448 | OutputFile="$(OutDir)\zlibstat.lib" |
448 | SuppressStartupBanner="true" | 449 | SuppressStartupBanner="true" |
449 | /> | 450 | /> |
@@ -464,9 +465,9 @@ | |||
464 | /> | 465 | /> |
465 | </Configuration> | 466 | </Configuration> |
466 | <Configuration | 467 | <Configuration |
467 | Name="Release|Itanium" | 468 | Name="ReleaseWithoutAsm|Win32" |
468 | OutputDirectory="ia64\ZlibStat$(ConfigurationName)" | 469 | OutputDirectory="x86\ZlibStat$(ConfigurationName)" |
469 | IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp" | 470 | IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp" |
470 | ConfigurationType="4" | 471 | ConfigurationType="4" |
471 | InheritedPropertySheets="UpgradeFromVC70.vsprops" | 472 | InheritedPropertySheets="UpgradeFromVC70.vsprops" |
472 | UseOfMFC="0" | 473 | UseOfMFC="0" |
@@ -486,16 +487,15 @@ | |||
486 | /> | 487 | /> |
487 | <Tool | 488 | <Tool |
488 | Name="VCMIDLTool" | 489 | Name="VCMIDLTool" |
489 | TargetEnvironment="2" | ||
490 | /> | 490 | /> |
491 | <Tool | 491 | <Tool |
492 | Name="VCCLCompilerTool" | 492 | Name="VCCLCompilerTool" |
493 | InlineFunctionExpansion="1" | 493 | InlineFunctionExpansion="1" |
494 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" | 494 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
495 | PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" | 495 | PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" |
496 | StringPooling="true" | 496 | StringPooling="true" |
497 | ExceptionHandling="0" | 497 | ExceptionHandling="0" |
498 | RuntimeLibrary="2" | 498 | RuntimeLibrary="0" |
499 | BufferSecurityCheck="false" | 499 | BufferSecurityCheck="false" |
500 | EnableFunctionLevelLinking="true" | 500 | EnableFunctionLevelLinking="true" |
501 | PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" | 501 | PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" |
@@ -517,7 +517,7 @@ | |||
517 | /> | 517 | /> |
518 | <Tool | 518 | <Tool |
519 | Name="VCLibrarianTool" | 519 | Name="VCLibrarianTool" |
520 | AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB" | 520 | AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB" |
521 | OutputFile="$(OutDir)\zlibstat.lib" | 521 | OutputFile="$(OutDir)\zlibstat.lib" |
522 | SuppressStartupBanner="true" | 522 | SuppressStartupBanner="true" |
523 | /> | 523 | /> |
@@ -709,63 +709,11 @@ | |||
709 | > | 709 | > |
710 | </File> | 710 | </File> |
711 | <File | 711 | <File |
712 | RelativePath="..\..\masmx86\gvmat32c.c" | ||
713 | > | ||
714 | <FileConfiguration | ||
715 | Name="Debug|x64" | ||
716 | ExcludedFromBuild="true" | ||
717 | > | ||
718 | <Tool | ||
719 | Name="VCCLCompilerTool" | ||
720 | /> | ||
721 | </FileConfiguration> | ||
722 | <FileConfiguration | ||
723 | Name="Debug|Itanium" | ||
724 | ExcludedFromBuild="true" | ||
725 | > | ||
726 | <Tool | ||
727 | Name="VCCLCompilerTool" | ||
728 | /> | ||
729 | </FileConfiguration> | ||
730 | <FileConfiguration | ||
731 | Name="Release|x64" | ||
732 | ExcludedFromBuild="true" | ||
733 | > | ||
734 | <Tool | ||
735 | Name="VCCLCompilerTool" | ||
736 | /> | ||
737 | </FileConfiguration> | ||
738 | <FileConfiguration | ||
739 | Name="Release|Itanium" | ||
740 | ExcludedFromBuild="true" | ||
741 | > | ||
742 | <Tool | ||
743 | Name="VCCLCompilerTool" | ||
744 | /> | ||
745 | </FileConfiguration> | ||
746 | <FileConfiguration | ||
747 | Name="ReleaseWithoutAsm|x64" | ||
748 | ExcludedFromBuild="true" | ||
749 | > | ||
750 | <Tool | ||
751 | Name="VCCLCompilerTool" | ||
752 | /> | ||
753 | </FileConfiguration> | ||
754 | <FileConfiguration | ||
755 | Name="ReleaseWithoutAsm|Itanium" | ||
756 | ExcludedFromBuild="true" | ||
757 | > | ||
758 | <Tool | ||
759 | Name="VCCLCompilerTool" | ||
760 | /> | ||
761 | </FileConfiguration> | ||
762 | </File> | ||
763 | <File | ||
764 | RelativePath="..\..\..\gzclose.c" | 712 | RelativePath="..\..\..\gzclose.c" |
765 | > | 713 | > |
766 | </File> | 714 | </File> |
767 | <File | 715 | <File |
768 | RelativePath="..\..\..\gzio.c" | 716 | RelativePath="..\..\..\gzguts.h" |
769 | > | 717 | > |
770 | </File> | 718 | </File> |
771 | <File | 719 | <File |
@@ -796,7 +744,7 @@ | |||
796 | /> | 744 | /> |
797 | </FileConfiguration> | 745 | </FileConfiguration> |
798 | <FileConfiguration | 746 | <FileConfiguration |
799 | Name="Release|Win32" | 747 | Name="Debug|Itanium" |
800 | ExcludedFromBuild="true" | 748 | ExcludedFromBuild="true" |
801 | > | 749 | > |
802 | <Tool | 750 | <Tool |
@@ -804,7 +752,7 @@ | |||
804 | /> | 752 | /> |
805 | </FileConfiguration> | 753 | </FileConfiguration> |
806 | <FileConfiguration | 754 | <FileConfiguration |
807 | Name="ReleaseWithoutAsm|Win32" | 755 | Name="Release|Win32" |
808 | ExcludedFromBuild="true" | 756 | ExcludedFromBuild="true" |
809 | > | 757 | > |
810 | <Tool | 758 | <Tool |
@@ -812,7 +760,7 @@ | |||
812 | /> | 760 | /> |
813 | </FileConfiguration> | 761 | </FileConfiguration> |
814 | <FileConfiguration | 762 | <FileConfiguration |
815 | Name="Debug|Itanium" | 763 | Name="Release|Itanium" |
816 | ExcludedFromBuild="true" | 764 | ExcludedFromBuild="true" |
817 | > | 765 | > |
818 | <Tool | 766 | <Tool |
@@ -820,7 +768,7 @@ | |||
820 | /> | 768 | /> |
821 | </FileConfiguration> | 769 | </FileConfiguration> |
822 | <FileConfiguration | 770 | <FileConfiguration |
823 | Name="Release|Itanium" | 771 | Name="ReleaseWithoutAsm|Win32" |
824 | ExcludedFromBuild="true" | 772 | ExcludedFromBuild="true" |
825 | > | 773 | > |
826 | <Tool | 774 | <Tool |
diff --git a/contrib/vstudio/vc9/zlibvc.def b/contrib/vstudio/vc9/zlibvc.def index 0b6a9e9..b3b7cab 100644 --- a/contrib/vstudio/vc9/zlibvc.def +++ b/contrib/vstudio/vc9/zlibvc.def | |||
@@ -1,7 +1,7 @@ | |||
1 | LIBRARY | ||
2 | ; zlib data compression and ZIP file I/O library | ||
1 | 3 | ||
2 | VERSION 1.23 | 4 | VERSION 1.24 |
3 | |||
4 | HEAPSIZE 1048576,8192 | ||
5 | 5 | ||
6 | EXPORTS | 6 | EXPORTS |
7 | adler32 @1 | 7 | adler32 @1 |
@@ -90,25 +90,47 @@ EXPORTS | |||
90 | unzGoToFilePos @101 | 90 | unzGoToFilePos @101 |
91 | 91 | ||
92 | fill_win32_filefunc @110 | 92 | fill_win32_filefunc @110 |
93 | fill_win32_filefunc64 @111 | ||
94 | fill_win32_filefunc64A @112 | ||
95 | fill_win32_filefunc64W @113 | ||
96 | 93 | ||
97 | ; quick hack by hkuno@microhouse.co.jp | 94 | ; zlibwapi v1.2.4 added: |
98 | unzOpen64 @120 | 95 | fill_win32_filefunc64 @111 |
99 | unzOpen2_64 @121 | 96 | fill_win32_filefunc64A @112 |
100 | unzGetGlobalInfo64 @122 | 97 | fill_win32_filefunc64W @113 |
101 | unzGetCurrentFileInfo64 @124 | 98 | |
102 | unzGetCurrentFileZStreamPos64 @125 | 99 | unzOpen64 @120 |
103 | unztell64 @126 | 100 | unzOpen2_64 @121 |
104 | unzGetFilePos64 @127 | 101 | unzGetGlobalInfo64 @122 |
105 | unzGoToFilePos64 @128 | 102 | unzGetCurrentFileInfo64 @124 |
103 | unzGetCurrentFileZStreamPos64 @125 | ||
104 | unztell64 @126 | ||
105 | unzGetFilePos64 @127 | ||
106 | unzGoToFilePos64 @128 | ||
107 | |||
108 | zipOpen64 @130 | ||
109 | zipOpen2_64 @131 | ||
110 | zipOpenNewFileInZip64 @132 | ||
111 | zipOpenNewFileInZip2_64 @133 | ||
112 | zipOpenNewFileInZip3_64 @134 | ||
113 | zipOpenNewFileInZip4_64 @135 | ||
114 | zipCloseFileInZipRaw64 @136 | ||
106 | 115 | ||
107 | zipOpen64 @130 | 116 | ; zlib1 v1.2.4 added: |
108 | zipOpen2_64 @131 | 117 | adler32_combine @140 |
109 | zipOpenNewFileInZip64 @132 | 118 | adler32_combine64 @141 |
110 | zipOpenNewFileInZip2_64 @133 | 119 | crc32_combine @142 |
111 | zipOpenNewFileInZip3_64 @134 | 120 | crc32_combine64 @143 |
112 | zipOpenNewFileInZip4_64 @135 | 121 | deflateSetHeader @144 |
113 | zipCloseFileInZipRaw64 @136 | 122 | deflateTune @145 |
114 | ; end hack | 123 | gzbuffer @146 |
124 | gzclose_r @147 | ||
125 | gzclose_w @148 | ||
126 | gzdirect @149 | ||
127 | gzoffset @150 | ||
128 | gzoffset64 @151 | ||
129 | gzopen64 @152 | ||
130 | gzseek64 @153 | ||
131 | gztell64 @154 | ||
132 | inflateGetHeader @156 | ||
133 | inflateMark @157 | ||
134 | inflatePrime @158 | ||
135 | inflateReset2 @159 | ||
136 | inflateUndermine @160 | ||
diff --git a/contrib/vstudio/vc9/zlibvc.sln b/contrib/vstudio/vc9/zlibvc.sln index c7f1b0b..b482967 100644 --- a/contrib/vstudio/vc9/zlibvc.sln +++ b/contrib/vstudio/vc9/zlibvc.sln | |||
@@ -45,8 +45,8 @@ Global | |||
45 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.Build.0 = Release|Itanium | 45 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.Build.0 = Release|Itanium |
46 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32 | 46 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32 |
47 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32 | 47 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32 |
48 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = ReleaseWithoutAsm|x64 | 48 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = Release|x64 |
49 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = ReleaseWithoutAsm|x64 | 49 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = Release|x64 |
50 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium | 50 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium |
51 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium | 51 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium |
52 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 | 52 | {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 |
@@ -103,8 +103,8 @@ Global | |||
103 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64 | 103 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64 |
104 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium | 104 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium |
105 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium | 105 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium |
106 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium | 106 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 |
107 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium | 107 | {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 |
108 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium | 108 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium |
109 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium | 109 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium |
110 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32 | 110 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32 |
@@ -119,8 +119,8 @@ Global | |||
119 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64 | 119 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64 |
120 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium | 120 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium |
121 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium | 121 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium |
122 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium | 122 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 |
123 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium | 123 | {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 |
124 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.ActiveCfg = Debug|Itanium | 124 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.ActiveCfg = Debug|Itanium |
125 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.Build.0 = Debug|Itanium | 125 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.Build.0 = Debug|Itanium |
126 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32 | 126 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32 |
@@ -135,8 +135,8 @@ Global | |||
135 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64 | 135 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64 |
136 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium | 136 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium |
137 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium | 137 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium |
138 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium | 138 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 |
139 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium | 139 | {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 |
140 | EndGlobalSection | 140 | EndGlobalSection |
141 | GlobalSection(SolutionProperties) = preSolution | 141 | GlobalSection(SolutionProperties) = preSolution |
142 | HideSolutionNode = FALSE | 142 | HideSolutionNode = FALSE |
diff --git a/contrib/vstudio/vc9/zlibvc.vcproj b/contrib/vstudio/vc9/zlibvc.vcproj index ee86786..c9a8947 100644 --- a/contrib/vstudio/vc9/zlibvc.vcproj +++ b/contrib/vstudio/vc9/zlibvc.vcproj | |||
@@ -1,9 +1,10 @@ | |||
1 | <?xml version="1.0" encoding="Windows-1252"?> | 1 | <?xml version="1.0" encoding="Windows-1252"?> |
2 | <VisualStudioProject | 2 | <VisualStudioProject |
3 | ProjectType="Visual C++" | 3 | ProjectType="Visual C++" |
4 | Version="9.00" | 4 | Version="9,00" |
5 | Name="zlibvc" | 5 | Name="zlibvc" |
6 | ProjectGUID="{8FD826F8-3739-44E6-8CC8-997122E53B8D}" | 6 | ProjectGUID="{8FD826F8-3739-44E6-8CC8-997122E53B8D}" |
7 | RootNamespace="zlibvc" | ||
7 | TargetFrameworkVersion="131072" | 8 | TargetFrameworkVersion="131072" |
8 | > | 9 | > |
9 | <Platforms> | 10 | <Platforms> |
@@ -80,7 +81,7 @@ | |||
80 | <Tool | 81 | <Tool |
81 | Name="VCLinkerTool" | 82 | Name="VCLinkerTool" |
82 | AdditionalOptions="/MACHINE:I386" | 83 | AdditionalOptions="/MACHINE:I386" |
83 | AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj" | 84 | AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj" |
84 | OutputFile="$(OutDir)\zlibwapi.dll" | 85 | OutputFile="$(OutDir)\zlibwapi.dll" |
85 | LinkIncremental="2" | 86 | LinkIncremental="2" |
86 | SuppressStartupBanner="true" | 87 | SuppressStartupBanner="true" |
@@ -118,14 +119,13 @@ | |||
118 | /> | 119 | /> |
119 | </Configuration> | 120 | </Configuration> |
120 | <Configuration | 121 | <Configuration |
121 | Name="ReleaseWithoutAsm|Win32" | 122 | Name="Debug|x64" |
122 | OutputDirectory="x86\ZlibDll$(ConfigurationName)" | 123 | OutputDirectory="x64\ZlibDll$(ConfigurationName)" |
123 | IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp" | 124 | IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp" |
124 | ConfigurationType="2" | 125 | ConfigurationType="2" |
125 | InheritedPropertySheets="UpgradeFromVC70.vsprops" | 126 | InheritedPropertySheets="UpgradeFromVC70.vsprops" |
126 | UseOfMFC="0" | 127 | UseOfMFC="0" |
127 | ATLMinimizesCRunTimeLibraryUsage="false" | 128 | ATLMinimizesCRunTimeLibraryUsage="false" |
128 | WholeProgramOptimization="1" | ||
129 | > | 129 | > |
130 | <Tool | 130 | <Tool |
131 | Name="VCPreBuildEventTool" | 131 | Name="VCPreBuildEventTool" |
@@ -141,37 +141,35 @@ | |||
141 | /> | 141 | /> |
142 | <Tool | 142 | <Tool |
143 | Name="VCMIDLTool" | 143 | Name="VCMIDLTool" |
144 | PreprocessorDefinitions="NDEBUG" | 144 | PreprocessorDefinitions="_DEBUG" |
145 | MkTypLibCompatible="true" | 145 | MkTypLibCompatible="true" |
146 | SuppressStartupBanner="true" | 146 | SuppressStartupBanner="true" |
147 | TargetEnvironment="1" | 147 | TargetEnvironment="3" |
148 | TypeLibraryName="$(OutDir)/zlibvc.tlb" | 148 | TypeLibraryName="$(OutDir)/zlibvc.tlb" |
149 | /> | 149 | /> |
150 | <Tool | 150 | <Tool |
151 | Name="VCCLCompilerTool" | 151 | Name="VCCLCompilerTool" |
152 | InlineFunctionExpansion="1" | 152 | Optimization="0" |
153 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" | 153 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
154 | PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI" | 154 | PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64" |
155 | StringPooling="true" | ||
156 | ExceptionHandling="0" | 155 | ExceptionHandling="0" |
157 | RuntimeLibrary="2" | 156 | RuntimeLibrary="3" |
158 | BufferSecurityCheck="false" | 157 | BufferSecurityCheck="false" |
159 | EnableFunctionLevelLinking="true" | ||
160 | PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" | 158 | PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" |
161 | AssemblerOutput="2" | ||
162 | AssemblerListingLocation="$(IntDir)\" | 159 | AssemblerListingLocation="$(IntDir)\" |
163 | ObjectFile="$(IntDir)\" | 160 | ObjectFile="$(IntDir)\" |
164 | ProgramDataBaseFileName="$(OutDir)\" | 161 | ProgramDataBaseFileName="$(OutDir)\" |
165 | BrowseInformation="0" | 162 | BrowseInformation="0" |
166 | WarningLevel="3" | 163 | WarningLevel="3" |
167 | SuppressStartupBanner="true" | 164 | SuppressStartupBanner="true" |
165 | DebugInformationFormat="3" | ||
168 | /> | 166 | /> |
169 | <Tool | 167 | <Tool |
170 | Name="VCManagedResourceCompilerTool" | 168 | Name="VCManagedResourceCompilerTool" |
171 | /> | 169 | /> |
172 | <Tool | 170 | <Tool |
173 | Name="VCResourceCompilerTool" | 171 | Name="VCResourceCompilerTool" |
174 | PreprocessorDefinitions="NDEBUG" | 172 | PreprocessorDefinitions="_DEBUG" |
175 | Culture="1036" | 173 | Culture="1036" |
176 | /> | 174 | /> |
177 | <Tool | 175 | <Tool |
@@ -179,21 +177,19 @@ | |||
179 | /> | 177 | /> |
180 | <Tool | 178 | <Tool |
181 | Name="VCLinkerTool" | 179 | Name="VCLinkerTool" |
182 | AdditionalOptions="/MACHINE:I386" | 180 | AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj " |
183 | OutputFile="$(OutDir)\zlibwapi.dll" | 181 | OutputFile="$(OutDir)\zlibwapi.dll" |
184 | LinkIncremental="1" | 182 | LinkIncremental="2" |
185 | SuppressStartupBanner="true" | 183 | SuppressStartupBanner="true" |
186 | GenerateManifest="false" | 184 | GenerateManifest="false" |
187 | IgnoreAllDefaultLibraries="false" | ||
188 | ModuleDefinitionFile=".\zlibvc.def" | 185 | ModuleDefinitionFile=".\zlibvc.def" |
186 | GenerateDebugInformation="true" | ||
189 | ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" | 187 | ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" |
190 | GenerateMapFile="true" | 188 | GenerateMapFile="true" |
191 | MapFileName="$(OutDir)/zlibwapi.map" | 189 | MapFileName="$(OutDir)/zlibwapi.map" |
192 | SubSystem="2" | 190 | SubSystem="2" |
193 | OptimizeForWindows98="1" | ||
194 | RandomizedBaseAddress="1" | ||
195 | DataExecutionPrevention="0" | ||
196 | ImportLibrary="$(OutDir)/zlibwapi.lib" | 191 | ImportLibrary="$(OutDir)/zlibwapi.lib" |
192 | TargetMachine="17" | ||
197 | /> | 193 | /> |
198 | <Tool | 194 | <Tool |
199 | Name="VCALinkTool" | 195 | Name="VCALinkTool" |
@@ -218,14 +214,13 @@ | |||
218 | /> | 214 | /> |
219 | </Configuration> | 215 | </Configuration> |
220 | <Configuration | 216 | <Configuration |
221 | Name="Release|Win32" | 217 | Name="Debug|Itanium" |
222 | OutputDirectory="x86\ZlibDll$(ConfigurationName)" | 218 | OutputDirectory="ia64\ZlibDll$(ConfigurationName)" |
223 | IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp" | 219 | IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp" |
224 | ConfigurationType="2" | 220 | ConfigurationType="2" |
225 | InheritedPropertySheets="UpgradeFromVC70.vsprops" | 221 | InheritedPropertySheets="UpgradeFromVC70.vsprops" |
226 | UseOfMFC="0" | 222 | UseOfMFC="0" |
227 | ATLMinimizesCRunTimeLibraryUsage="false" | 223 | ATLMinimizesCRunTimeLibraryUsage="false" |
228 | WholeProgramOptimization="1" | ||
229 | > | 224 | > |
230 | <Tool | 225 | <Tool |
231 | Name="VCPreBuildEventTool" | 226 | Name="VCPreBuildEventTool" |
@@ -241,37 +236,35 @@ | |||
241 | /> | 236 | /> |
242 | <Tool | 237 | <Tool |
243 | Name="VCMIDLTool" | 238 | Name="VCMIDLTool" |
244 | PreprocessorDefinitions="NDEBUG" | 239 | PreprocessorDefinitions="_DEBUG" |
245 | MkTypLibCompatible="true" | 240 | MkTypLibCompatible="true" |
246 | SuppressStartupBanner="true" | 241 | SuppressStartupBanner="true" |
247 | TargetEnvironment="1" | 242 | TargetEnvironment="2" |
248 | TypeLibraryName="$(OutDir)/zlibvc.tlb" | 243 | TypeLibraryName="$(OutDir)/zlibvc.tlb" |
249 | /> | 244 | /> |
250 | <Tool | 245 | <Tool |
251 | Name="VCCLCompilerTool" | 246 | Name="VCCLCompilerTool" |
252 | InlineFunctionExpansion="1" | 247 | Optimization="0" |
253 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" | 248 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
254 | PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF" | 249 | PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64" |
255 | StringPooling="true" | ||
256 | ExceptionHandling="0" | 250 | ExceptionHandling="0" |
257 | RuntimeLibrary="2" | 251 | RuntimeLibrary="3" |
258 | BufferSecurityCheck="false" | 252 | BufferSecurityCheck="false" |
259 | EnableFunctionLevelLinking="true" | ||
260 | PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" | 253 | PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" |
261 | AssemblerOutput="2" | ||
262 | AssemblerListingLocation="$(IntDir)\" | 254 | AssemblerListingLocation="$(IntDir)\" |
263 | ObjectFile="$(IntDir)\" | 255 | ObjectFile="$(IntDir)\" |
264 | ProgramDataBaseFileName="$(OutDir)\" | 256 | ProgramDataBaseFileName="$(OutDir)\" |
265 | BrowseInformation="0" | 257 | BrowseInformation="0" |
266 | WarningLevel="3" | 258 | WarningLevel="3" |
267 | SuppressStartupBanner="true" | 259 | SuppressStartupBanner="true" |
260 | DebugInformationFormat="3" | ||
268 | /> | 261 | /> |
269 | <Tool | 262 | <Tool |
270 | Name="VCManagedResourceCompilerTool" | 263 | Name="VCManagedResourceCompilerTool" |
271 | /> | 264 | /> |
272 | <Tool | 265 | <Tool |
273 | Name="VCResourceCompilerTool" | 266 | Name="VCResourceCompilerTool" |
274 | PreprocessorDefinitions="NDEBUG" | 267 | PreprocessorDefinitions="_DEBUG" |
275 | Culture="1036" | 268 | Culture="1036" |
276 | /> | 269 | /> |
277 | <Tool | 270 | <Tool |
@@ -279,22 +272,18 @@ | |||
279 | /> | 272 | /> |
280 | <Tool | 273 | <Tool |
281 | Name="VCLinkerTool" | 274 | Name="VCLinkerTool" |
282 | AdditionalOptions="/MACHINE:I386" | ||
283 | AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj " | ||
284 | OutputFile="$(OutDir)\zlibwapi.dll" | 275 | OutputFile="$(OutDir)\zlibwapi.dll" |
285 | LinkIncremental="1" | 276 | LinkIncremental="2" |
286 | SuppressStartupBanner="true" | 277 | SuppressStartupBanner="true" |
287 | GenerateManifest="false" | 278 | GenerateManifest="false" |
288 | IgnoreAllDefaultLibraries="false" | ||
289 | ModuleDefinitionFile=".\zlibvc.def" | 279 | ModuleDefinitionFile=".\zlibvc.def" |
280 | GenerateDebugInformation="true" | ||
290 | ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" | 281 | ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" |
291 | GenerateMapFile="true" | 282 | GenerateMapFile="true" |
292 | MapFileName="$(OutDir)/zlibwapi.map" | 283 | MapFileName="$(OutDir)/zlibwapi.map" |
293 | SubSystem="2" | 284 | SubSystem="2" |
294 | OptimizeForWindows98="1" | ||
295 | RandomizedBaseAddress="1" | ||
296 | DataExecutionPrevention="0" | ||
297 | ImportLibrary="$(OutDir)/zlibwapi.lib" | 285 | ImportLibrary="$(OutDir)/zlibwapi.lib" |
286 | TargetMachine="5" | ||
298 | /> | 287 | /> |
299 | <Tool | 288 | <Tool |
300 | Name="VCALinkTool" | 289 | Name="VCALinkTool" |
@@ -319,13 +308,14 @@ | |||
319 | /> | 308 | /> |
320 | </Configuration> | 309 | </Configuration> |
321 | <Configuration | 310 | <Configuration |
322 | Name="Debug|x64" | 311 | Name="ReleaseWithoutAsm|Win32" |
323 | OutputDirectory="x64\ZlibDll$(ConfigurationName)" | 312 | OutputDirectory="x86\ZlibDll$(ConfigurationName)" |
324 | IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp" | 313 | IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp" |
325 | ConfigurationType="2" | 314 | ConfigurationType="2" |
326 | InheritedPropertySheets="UpgradeFromVC70.vsprops" | 315 | InheritedPropertySheets="UpgradeFromVC70.vsprops" |
327 | UseOfMFC="0" | 316 | UseOfMFC="0" |
328 | ATLMinimizesCRunTimeLibraryUsage="false" | 317 | ATLMinimizesCRunTimeLibraryUsage="false" |
318 | WholeProgramOptimization="1" | ||
329 | > | 319 | > |
330 | <Tool | 320 | <Tool |
331 | Name="VCPreBuildEventTool" | 321 | Name="VCPreBuildEventTool" |
@@ -341,35 +331,37 @@ | |||
341 | /> | 331 | /> |
342 | <Tool | 332 | <Tool |
343 | Name="VCMIDLTool" | 333 | Name="VCMIDLTool" |
344 | PreprocessorDefinitions="_DEBUG" | 334 | PreprocessorDefinitions="NDEBUG" |
345 | MkTypLibCompatible="true" | 335 | MkTypLibCompatible="true" |
346 | SuppressStartupBanner="true" | 336 | SuppressStartupBanner="true" |
347 | TargetEnvironment="3" | 337 | TargetEnvironment="1" |
348 | TypeLibraryName="$(OutDir)/zlibvc.tlb" | 338 | TypeLibraryName="$(OutDir)/zlibvc.tlb" |
349 | /> | 339 | /> |
350 | <Tool | 340 | <Tool |
351 | Name="VCCLCompilerTool" | 341 | Name="VCCLCompilerTool" |
352 | Optimization="0" | 342 | InlineFunctionExpansion="1" |
353 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" | 343 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
354 | PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64" | 344 | PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI" |
345 | StringPooling="true" | ||
355 | ExceptionHandling="0" | 346 | ExceptionHandling="0" |
356 | RuntimeLibrary="3" | 347 | RuntimeLibrary="2" |
357 | BufferSecurityCheck="false" | 348 | BufferSecurityCheck="false" |
349 | EnableFunctionLevelLinking="true" | ||
358 | PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" | 350 | PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" |
351 | AssemblerOutput="2" | ||
359 | AssemblerListingLocation="$(IntDir)\" | 352 | AssemblerListingLocation="$(IntDir)\" |
360 | ObjectFile="$(IntDir)\" | 353 | ObjectFile="$(IntDir)\" |
361 | ProgramDataBaseFileName="$(OutDir)\" | 354 | ProgramDataBaseFileName="$(OutDir)\" |
362 | BrowseInformation="0" | 355 | BrowseInformation="0" |
363 | WarningLevel="3" | 356 | WarningLevel="3" |
364 | SuppressStartupBanner="true" | 357 | SuppressStartupBanner="true" |
365 | DebugInformationFormat="3" | ||
366 | /> | 358 | /> |
367 | <Tool | 359 | <Tool |
368 | Name="VCManagedResourceCompilerTool" | 360 | Name="VCManagedResourceCompilerTool" |
369 | /> | 361 | /> |
370 | <Tool | 362 | <Tool |
371 | Name="VCResourceCompilerTool" | 363 | Name="VCResourceCompilerTool" |
372 | PreprocessorDefinitions="_DEBUG" | 364 | PreprocessorDefinitions="NDEBUG" |
373 | Culture="1036" | 365 | Culture="1036" |
374 | /> | 366 | /> |
375 | <Tool | 367 | <Tool |
@@ -377,19 +369,21 @@ | |||
377 | /> | 369 | /> |
378 | <Tool | 370 | <Tool |
379 | Name="VCLinkerTool" | 371 | Name="VCLinkerTool" |
380 | AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj " | 372 | AdditionalOptions="/MACHINE:I386" |
381 | OutputFile="$(OutDir)\zlibwapi.dll" | 373 | OutputFile="$(OutDir)\zlibwapi.dll" |
382 | LinkIncremental="2" | 374 | LinkIncremental="1" |
383 | SuppressStartupBanner="true" | 375 | SuppressStartupBanner="true" |
384 | GenerateManifest="false" | 376 | GenerateManifest="false" |
377 | IgnoreAllDefaultLibraries="false" | ||
385 | ModuleDefinitionFile=".\zlibvc.def" | 378 | ModuleDefinitionFile=".\zlibvc.def" |
386 | GenerateDebugInformation="true" | ||
387 | ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" | 379 | ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" |
388 | GenerateMapFile="true" | 380 | GenerateMapFile="true" |
389 | MapFileName="$(OutDir)/zlibwapi.map" | 381 | MapFileName="$(OutDir)/zlibwapi.map" |
390 | SubSystem="2" | 382 | SubSystem="2" |
383 | OptimizeForWindows98="1" | ||
384 | RandomizedBaseAddress="1" | ||
385 | DataExecutionPrevention="0" | ||
391 | ImportLibrary="$(OutDir)/zlibwapi.lib" | 386 | ImportLibrary="$(OutDir)/zlibwapi.lib" |
392 | TargetMachine="17" | ||
393 | /> | 387 | /> |
394 | <Tool | 388 | <Tool |
395 | Name="VCALinkTool" | 389 | Name="VCALinkTool" |
@@ -410,20 +404,18 @@ | |||
410 | Name="VCAppVerifierTool" | 404 | Name="VCAppVerifierTool" |
411 | /> | 405 | /> |
412 | <Tool | 406 | <Tool |
413 | Name="VCWebDeploymentTool" | ||
414 | /> | ||
415 | <Tool | ||
416 | Name="VCPostBuildEventTool" | 407 | Name="VCPostBuildEventTool" |
417 | /> | 408 | /> |
418 | </Configuration> | 409 | </Configuration> |
419 | <Configuration | 410 | <Configuration |
420 | Name="Debug|Itanium" | 411 | Name="ReleaseWithoutAsm|x64" |
421 | OutputDirectory="ia64\ZlibDll$(ConfigurationName)" | 412 | OutputDirectory="x64\ZlibDll$(ConfigurationName)" |
422 | IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp" | 413 | IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp" |
423 | ConfigurationType="2" | 414 | ConfigurationType="2" |
424 | InheritedPropertySheets="UpgradeFromVC70.vsprops" | 415 | InheritedPropertySheets="UpgradeFromVC70.vsprops" |
425 | UseOfMFC="0" | 416 | UseOfMFC="0" |
426 | ATLMinimizesCRunTimeLibraryUsage="false" | 417 | ATLMinimizesCRunTimeLibraryUsage="false" |
418 | WholeProgramOptimization="1" | ||
427 | > | 419 | > |
428 | <Tool | 420 | <Tool |
429 | Name="VCPreBuildEventTool" | 421 | Name="VCPreBuildEventTool" |
@@ -439,35 +431,37 @@ | |||
439 | /> | 431 | /> |
440 | <Tool | 432 | <Tool |
441 | Name="VCMIDLTool" | 433 | Name="VCMIDLTool" |
442 | PreprocessorDefinitions="_DEBUG" | 434 | PreprocessorDefinitions="NDEBUG" |
443 | MkTypLibCompatible="true" | 435 | MkTypLibCompatible="true" |
444 | SuppressStartupBanner="true" | 436 | SuppressStartupBanner="true" |
445 | TargetEnvironment="2" | 437 | TargetEnvironment="3" |
446 | TypeLibraryName="$(OutDir)/zlibvc.tlb" | 438 | TypeLibraryName="$(OutDir)/zlibvc.tlb" |
447 | /> | 439 | /> |
448 | <Tool | 440 | <Tool |
449 | Name="VCCLCompilerTool" | 441 | Name="VCCLCompilerTool" |
450 | Optimization="0" | 442 | InlineFunctionExpansion="1" |
451 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" | 443 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
452 | PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64" | 444 | PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64" |
445 | StringPooling="true" | ||
453 | ExceptionHandling="0" | 446 | ExceptionHandling="0" |
454 | RuntimeLibrary="3" | 447 | RuntimeLibrary="2" |
455 | BufferSecurityCheck="false" | 448 | BufferSecurityCheck="false" |
449 | EnableFunctionLevelLinking="true" | ||
456 | PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" | 450 | PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" |
451 | AssemblerOutput="2" | ||
457 | AssemblerListingLocation="$(IntDir)\" | 452 | AssemblerListingLocation="$(IntDir)\" |
458 | ObjectFile="$(IntDir)\" | 453 | ObjectFile="$(IntDir)\" |
459 | ProgramDataBaseFileName="$(OutDir)\" | 454 | ProgramDataBaseFileName="$(OutDir)\" |
460 | BrowseInformation="0" | 455 | BrowseInformation="0" |
461 | WarningLevel="3" | 456 | WarningLevel="3" |
462 | SuppressStartupBanner="true" | 457 | SuppressStartupBanner="true" |
463 | DebugInformationFormat="3" | ||
464 | /> | 458 | /> |
465 | <Tool | 459 | <Tool |
466 | Name="VCManagedResourceCompilerTool" | 460 | Name="VCManagedResourceCompilerTool" |
467 | /> | 461 | /> |
468 | <Tool | 462 | <Tool |
469 | Name="VCResourceCompilerTool" | 463 | Name="VCResourceCompilerTool" |
470 | PreprocessorDefinitions="_DEBUG" | 464 | PreprocessorDefinitions="NDEBUG" |
471 | Culture="1036" | 465 | Culture="1036" |
472 | /> | 466 | /> |
473 | <Tool | 467 | <Tool |
@@ -476,17 +470,18 @@ | |||
476 | <Tool | 470 | <Tool |
477 | Name="VCLinkerTool" | 471 | Name="VCLinkerTool" |
478 | OutputFile="$(OutDir)\zlibwapi.dll" | 472 | OutputFile="$(OutDir)\zlibwapi.dll" |
479 | LinkIncremental="2" | 473 | LinkIncremental="1" |
480 | SuppressStartupBanner="true" | 474 | SuppressStartupBanner="true" |
481 | GenerateManifest="false" | 475 | GenerateManifest="false" |
476 | IgnoreAllDefaultLibraries="false" | ||
482 | ModuleDefinitionFile=".\zlibvc.def" | 477 | ModuleDefinitionFile=".\zlibvc.def" |
483 | GenerateDebugInformation="true" | ||
484 | ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" | 478 | ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" |
485 | GenerateMapFile="true" | 479 | GenerateMapFile="true" |
486 | MapFileName="$(OutDir)/zlibwapi.map" | 480 | MapFileName="$(OutDir)/zlibwapi.map" |
487 | SubSystem="2" | 481 | SubSystem="2" |
482 | OptimizeForWindows98="1" | ||
488 | ImportLibrary="$(OutDir)/zlibwapi.lib" | 483 | ImportLibrary="$(OutDir)/zlibwapi.lib" |
489 | TargetMachine="5" | 484 | TargetMachine="17" |
490 | /> | 485 | /> |
491 | <Tool | 486 | <Tool |
492 | Name="VCALinkTool" | 487 | Name="VCALinkTool" |
@@ -507,16 +502,13 @@ | |||
507 | Name="VCAppVerifierTool" | 502 | Name="VCAppVerifierTool" |
508 | /> | 503 | /> |
509 | <Tool | 504 | <Tool |
510 | Name="VCWebDeploymentTool" | ||
511 | /> | ||
512 | <Tool | ||
513 | Name="VCPostBuildEventTool" | 505 | Name="VCPostBuildEventTool" |
514 | /> | 506 | /> |
515 | </Configuration> | 507 | </Configuration> |
516 | <Configuration | 508 | <Configuration |
517 | Name="ReleaseWithoutAsm|x64" | 509 | Name="ReleaseWithoutAsm|Itanium" |
518 | OutputDirectory="x64\ZlibDll$(ConfigurationName)" | 510 | OutputDirectory="ia64\ZlibDll$(ConfigurationName)" |
519 | IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp" | 511 | IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp" |
520 | ConfigurationType="2" | 512 | ConfigurationType="2" |
521 | InheritedPropertySheets="UpgradeFromVC70.vsprops" | 513 | InheritedPropertySheets="UpgradeFromVC70.vsprops" |
522 | UseOfMFC="0" | 514 | UseOfMFC="0" |
@@ -540,7 +532,7 @@ | |||
540 | PreprocessorDefinitions="NDEBUG" | 532 | PreprocessorDefinitions="NDEBUG" |
541 | MkTypLibCompatible="true" | 533 | MkTypLibCompatible="true" |
542 | SuppressStartupBanner="true" | 534 | SuppressStartupBanner="true" |
543 | TargetEnvironment="3" | 535 | TargetEnvironment="2" |
544 | TypeLibraryName="$(OutDir)/zlibvc.tlb" | 536 | TypeLibraryName="$(OutDir)/zlibvc.tlb" |
545 | /> | 537 | /> |
546 | <Tool | 538 | <Tool |
@@ -587,7 +579,7 @@ | |||
587 | SubSystem="2" | 579 | SubSystem="2" |
588 | OptimizeForWindows98="1" | 580 | OptimizeForWindows98="1" |
589 | ImportLibrary="$(OutDir)/zlibwapi.lib" | 581 | ImportLibrary="$(OutDir)/zlibwapi.lib" |
590 | TargetMachine="17" | 582 | TargetMachine="5" |
591 | /> | 583 | /> |
592 | <Tool | 584 | <Tool |
593 | Name="VCALinkTool" | 585 | Name="VCALinkTool" |
@@ -608,16 +600,13 @@ | |||
608 | Name="VCAppVerifierTool" | 600 | Name="VCAppVerifierTool" |
609 | /> | 601 | /> |
610 | <Tool | 602 | <Tool |
611 | Name="VCWebDeploymentTool" | ||
612 | /> | ||
613 | <Tool | ||
614 | Name="VCPostBuildEventTool" | 603 | Name="VCPostBuildEventTool" |
615 | /> | 604 | /> |
616 | </Configuration> | 605 | </Configuration> |
617 | <Configuration | 606 | <Configuration |
618 | Name="ReleaseWithoutAsm|Itanium" | 607 | Name="Release|Win32" |
619 | OutputDirectory="ia64\ZlibDll$(ConfigurationName)" | 608 | OutputDirectory="x86\ZlibDll$(ConfigurationName)" |
620 | IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp" | 609 | IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp" |
621 | ConfigurationType="2" | 610 | ConfigurationType="2" |
622 | InheritedPropertySheets="UpgradeFromVC70.vsprops" | 611 | InheritedPropertySheets="UpgradeFromVC70.vsprops" |
623 | UseOfMFC="0" | 612 | UseOfMFC="0" |
@@ -641,17 +630,17 @@ | |||
641 | PreprocessorDefinitions="NDEBUG" | 630 | PreprocessorDefinitions="NDEBUG" |
642 | MkTypLibCompatible="true" | 631 | MkTypLibCompatible="true" |
643 | SuppressStartupBanner="true" | 632 | SuppressStartupBanner="true" |
644 | TargetEnvironment="2" | 633 | TargetEnvironment="1" |
645 | TypeLibraryName="$(OutDir)/zlibvc.tlb" | 634 | TypeLibraryName="$(OutDir)/zlibvc.tlb" |
646 | /> | 635 | /> |
647 | <Tool | 636 | <Tool |
648 | Name="VCCLCompilerTool" | 637 | Name="VCCLCompilerTool" |
649 | InlineFunctionExpansion="1" | 638 | InlineFunctionExpansion="1" |
650 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" | 639 | AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
651 | PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64" | 640 | PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF" |
652 | StringPooling="true" | 641 | StringPooling="true" |
653 | ExceptionHandling="0" | 642 | ExceptionHandling="0" |
654 | RuntimeLibrary="2" | 643 | RuntimeLibrary="0" |
655 | BufferSecurityCheck="false" | 644 | BufferSecurityCheck="false" |
656 | EnableFunctionLevelLinking="true" | 645 | EnableFunctionLevelLinking="true" |
657 | PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" | 646 | PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" |
@@ -676,6 +665,8 @@ | |||
676 | /> | 665 | /> |
677 | <Tool | 666 | <Tool |
678 | Name="VCLinkerTool" | 667 | Name="VCLinkerTool" |
668 | AdditionalOptions="/MACHINE:I386" | ||
669 | AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj " | ||
679 | OutputFile="$(OutDir)\zlibwapi.dll" | 670 | OutputFile="$(OutDir)\zlibwapi.dll" |
680 | LinkIncremental="1" | 671 | LinkIncremental="1" |
681 | SuppressStartupBanner="true" | 672 | SuppressStartupBanner="true" |
@@ -687,8 +678,9 @@ | |||
687 | MapFileName="$(OutDir)/zlibwapi.map" | 678 | MapFileName="$(OutDir)/zlibwapi.map" |
688 | SubSystem="2" | 679 | SubSystem="2" |
689 | OptimizeForWindows98="1" | 680 | OptimizeForWindows98="1" |
681 | RandomizedBaseAddress="1" | ||
682 | DataExecutionPrevention="0" | ||
690 | ImportLibrary="$(OutDir)/zlibwapi.lib" | 683 | ImportLibrary="$(OutDir)/zlibwapi.lib" |
691 | TargetMachine="5" | ||
692 | /> | 684 | /> |
693 | <Tool | 685 | <Tool |
694 | Name="VCALinkTool" | 686 | Name="VCALinkTool" |
@@ -709,9 +701,6 @@ | |||
709 | Name="VCAppVerifierTool" | 701 | Name="VCAppVerifierTool" |
710 | /> | 702 | /> |
711 | <Tool | 703 | <Tool |
712 | Name="VCWebDeploymentTool" | ||
713 | /> | ||
714 | <Tool | ||
715 | Name="VCPostBuildEventTool" | 704 | Name="VCPostBuildEventTool" |
716 | /> | 705 | /> |
717 | </Configuration> | 706 | </Configuration> |
@@ -811,9 +800,6 @@ | |||
811 | Name="VCAppVerifierTool" | 800 | Name="VCAppVerifierTool" |
812 | /> | 801 | /> |
813 | <Tool | 802 | <Tool |
814 | Name="VCWebDeploymentTool" | ||
815 | /> | ||
816 | <Tool | ||
817 | Name="VCPostBuildEventTool" | 803 | Name="VCPostBuildEventTool" |
818 | /> | 804 | /> |
819 | </Configuration> | 805 | </Configuration> |
@@ -912,9 +898,6 @@ | |||
912 | Name="VCAppVerifierTool" | 898 | Name="VCAppVerifierTool" |
913 | /> | 899 | /> |
914 | <Tool | 900 | <Tool |
915 | Name="VCWebDeploymentTool" | ||
916 | /> | ||
917 | <Tool | ||
918 | Name="VCPostBuildEventTool" | 901 | Name="VCPostBuildEventTool" |
919 | /> | 902 | /> |
920 | </Configuration> | 903 | </Configuration> |
@@ -943,71 +926,11 @@ | |||
943 | > | 926 | > |
944 | </File> | 927 | </File> |
945 | <File | 928 | <File |
946 | RelativePath="..\..\masmx86\gvmat32c.c" | ||
947 | > | ||
948 | <FileConfiguration | ||
949 | Name="ReleaseWithoutAsm|Win32" | ||
950 | ExcludedFromBuild="true" | ||
951 | > | ||
952 | <Tool | ||
953 | Name="VCCLCompilerTool" | ||
954 | /> | ||
955 | </FileConfiguration> | ||
956 | <FileConfiguration | ||
957 | Name="Debug|x64" | ||
958 | ExcludedFromBuild="true" | ||
959 | > | ||
960 | <Tool | ||
961 | Name="VCCLCompilerTool" | ||
962 | /> | ||
963 | </FileConfiguration> | ||
964 | <FileConfiguration | ||
965 | Name="Debug|Itanium" | ||
966 | ExcludedFromBuild="true" | ||
967 | > | ||
968 | <Tool | ||
969 | Name="VCCLCompilerTool" | ||
970 | /> | ||
971 | </FileConfiguration> | ||
972 | <FileConfiguration | ||
973 | Name="ReleaseWithoutAsm|x64" | ||
974 | ExcludedFromBuild="true" | ||
975 | > | ||
976 | <Tool | ||
977 | Name="VCCLCompilerTool" | ||
978 | /> | ||
979 | </FileConfiguration> | ||
980 | <FileConfiguration | ||
981 | Name="ReleaseWithoutAsm|Itanium" | ||
982 | ExcludedFromBuild="true" | ||
983 | > | ||
984 | <Tool | ||
985 | Name="VCCLCompilerTool" | ||
986 | /> | ||
987 | </FileConfiguration> | ||
988 | <FileConfiguration | ||
989 | Name="Release|x64" | ||
990 | ExcludedFromBuild="true" | ||
991 | > | ||
992 | <Tool | ||
993 | Name="VCCLCompilerTool" | ||
994 | /> | ||
995 | </FileConfiguration> | ||
996 | <FileConfiguration | ||
997 | Name="Release|Itanium" | ||
998 | ExcludedFromBuild="true" | ||
999 | > | ||
1000 | <Tool | ||
1001 | Name="VCCLCompilerTool" | ||
1002 | /> | ||
1003 | </FileConfiguration> | ||
1004 | </File> | ||
1005 | <File | ||
1006 | RelativePath="..\..\..\gzclose.c" | 929 | RelativePath="..\..\..\gzclose.c" |
1007 | > | 930 | > |
1008 | </File> | 931 | </File> |
1009 | <File | 932 | <File |
1010 | RelativePath="..\..\..\gzio.c" | 933 | RelativePath="..\..\..\gzguts.h" |
1011 | > | 934 | > |
1012 | </File> | 935 | </File> |
1013 | <File | 936 | <File |
@@ -1038,7 +961,7 @@ | |||
1038 | /> | 961 | /> |
1039 | </FileConfiguration> | 962 | </FileConfiguration> |
1040 | <FileConfiguration | 963 | <FileConfiguration |
1041 | Name="ReleaseWithoutAsm|Win32" | 964 | Name="Debug|Itanium" |
1042 | ExcludedFromBuild="true" | 965 | ExcludedFromBuild="true" |
1043 | > | 966 | > |
1044 | <Tool | 967 | <Tool |
@@ -1046,7 +969,7 @@ | |||
1046 | /> | 969 | /> |
1047 | </FileConfiguration> | 970 | </FileConfiguration> |
1048 | <FileConfiguration | 971 | <FileConfiguration |
1049 | Name="Release|Win32" | 972 | Name="ReleaseWithoutAsm|Win32" |
1050 | ExcludedFromBuild="true" | 973 | ExcludedFromBuild="true" |
1051 | > | 974 | > |
1052 | <Tool | 975 | <Tool |
@@ -1054,7 +977,7 @@ | |||
1054 | /> | 977 | /> |
1055 | </FileConfiguration> | 978 | </FileConfiguration> |
1056 | <FileConfiguration | 979 | <FileConfiguration |
1057 | Name="Debug|Itanium" | 980 | Name="ReleaseWithoutAsm|Itanium" |
1058 | ExcludedFromBuild="true" | 981 | ExcludedFromBuild="true" |
1059 | > | 982 | > |
1060 | <Tool | 983 | <Tool |
@@ -1062,7 +985,7 @@ | |||
1062 | /> | 985 | /> |
1063 | </FileConfiguration> | 986 | </FileConfiguration> |
1064 | <FileConfiguration | 987 | <FileConfiguration |
1065 | Name="ReleaseWithoutAsm|Itanium" | 988 | Name="Release|Win32" |
1066 | ExcludedFromBuild="true" | 989 | ExcludedFromBuild="true" |
1067 | > | 990 | > |
1068 | <Tool | 991 | <Tool |
@@ -52,7 +52,7 @@ | |||
52 | #include "deflate.h" | 52 | #include "deflate.h" |
53 | 53 | ||
54 | const char deflate_copyright[] = | 54 | const char deflate_copyright[] = |
55 | " deflate 1.2.3.9 Copyright 1995-2010 Jean-loup Gailly and Mark Adler "; | 55 | " deflate 1.2.4 Copyright 1995-2010 Jean-loup Gailly and Mark Adler "; |
56 | /* | 56 | /* |
57 | If you use the zlib library in a product, an acknowledgment is welcome | 57 | If you use the zlib library in a product, an acknowledgment is welcome |
58 | in the documentation of your product. If for some reason you cannot | 58 | in the documentation of your product. If for some reason you cannot |
@@ -1433,21 +1433,21 @@ local void fill_window(s) | |||
1433 | * Flush the current block, with given end-of-file flag. | 1433 | * Flush the current block, with given end-of-file flag. |
1434 | * IN assertion: strstart is set to the end of the current match. | 1434 | * IN assertion: strstart is set to the end of the current match. |
1435 | */ | 1435 | */ |
1436 | #define FLUSH_BLOCK_ONLY(s, eof) { \ | 1436 | #define FLUSH_BLOCK_ONLY(s, last) { \ |
1437 | _tr_flush_block(s, (s->block_start >= 0L ? \ | 1437 | _tr_flush_block(s, (s->block_start >= 0L ? \ |
1438 | (charf *)&s->window[(unsigned)s->block_start] : \ | 1438 | (charf *)&s->window[(unsigned)s->block_start] : \ |
1439 | (charf *)Z_NULL), \ | 1439 | (charf *)Z_NULL), \ |
1440 | (ulg)((long)s->strstart - s->block_start), \ | 1440 | (ulg)((long)s->strstart - s->block_start), \ |
1441 | (eof)); \ | 1441 | (last)); \ |
1442 | s->block_start = s->strstart; \ | 1442 | s->block_start = s->strstart; \ |
1443 | flush_pending(s->strm); \ | 1443 | flush_pending(s->strm); \ |
1444 | Tracev((stderr,"[FLUSH]")); \ | 1444 | Tracev((stderr,"[FLUSH]")); \ |
1445 | } | 1445 | } |
1446 | 1446 | ||
1447 | /* Same but force premature exit if necessary. */ | 1447 | /* Same but force premature exit if necessary. */ |
1448 | #define FLUSH_BLOCK(s, eof) { \ | 1448 | #define FLUSH_BLOCK(s, last) { \ |
1449 | FLUSH_BLOCK_ONLY(s, eof); \ | 1449 | FLUSH_BLOCK_ONLY(s, last); \ |
1450 | if (s->strm->avail_out == 0) return (eof) ? finish_started : need_more; \ | 1450 | if (s->strm->avail_out == 0) return (last) ? finish_started : need_more; \ |
1451 | } | 1451 | } |
1452 | 1452 | ||
1453 | /* =========================================================================== | 1453 | /* =========================================================================== |
@@ -293,10 +293,10 @@ typedef struct internal_state { | |||
293 | void _tr_init OF((deflate_state *s)); | 293 | void _tr_init OF((deflate_state *s)); |
294 | int _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc)); | 294 | int _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc)); |
295 | void _tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len, | 295 | void _tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len, |
296 | int eof)); | 296 | int last)); |
297 | void _tr_align OF((deflate_state *s)); | 297 | void _tr_align OF((deflate_state *s)); |
298 | void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len, | 298 | void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len, |
299 | int eof)); | 299 | int last)); |
300 | 300 | ||
301 | #define d_code(dist) \ | 301 | #define d_code(dist) \ |
302 | ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)]) | 302 | ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)]) |
@@ -147,6 +147,14 @@ local gzFile gz_open(path, fd, mode) | |||
147 | return NULL; | 147 | return NULL; |
148 | } | 148 | } |
149 | 149 | ||
150 | /* save the path name for error messages */ | ||
151 | state->path = malloc(strlen(path) + 1); | ||
152 | if (state->path == NULL) { | ||
153 | free(state); | ||
154 | return NULL; | ||
155 | } | ||
156 | strcpy(state->path, path); | ||
157 | |||
150 | /* open the file with the appropriate mode (or just use fd) */ | 158 | /* open the file with the appropriate mode (or just use fd) */ |
151 | state->fd = fd != -1 ? fd : | 159 | state->fd = fd != -1 ? fd : |
152 | open(path, | 160 | open(path, |
@@ -170,14 +178,6 @@ local gzFile gz_open(path, fd, mode) | |||
170 | if (state->mode == GZ_APPEND) | 178 | if (state->mode == GZ_APPEND) |
171 | state->mode = GZ_WRITE; /* simplify later checks */ | 179 | state->mode = GZ_WRITE; /* simplify later checks */ |
172 | 180 | ||
173 | /* save the path name for error messages */ | ||
174 | state->path = malloc(strlen(path) + 1); | ||
175 | if (state->path == NULL) { | ||
176 | free(state); | ||
177 | return NULL; | ||
178 | } | ||
179 | strcpy(state->path, path); | ||
180 | |||
181 | /* save the current position for rewinding (only if reading) */ | 181 | /* save the current position for rewinding (only if reading) */ |
182 | if (state->mode == GZ_READ) { | 182 | if (state->mode == GZ_READ) { |
183 | state->start = LSEEK(state->fd, 0, SEEK_CUR); | 183 | state->start = LSEEK(state->fd, 0, SEEK_CUR); |
@@ -450,7 +450,8 @@ const char * ZEXPORT gzerror(file, errnum) | |||
450 | return NULL; | 450 | return NULL; |
451 | 451 | ||
452 | /* return error information */ | 452 | /* return error information */ |
453 | *errnum = state->err; | 453 | if (errnum != NULL) |
454 | *errnum = state->err; | ||
454 | return state->msg == NULL ? "" : state->msg; | 455 | return state->msg == NULL ? "" : state->msg; |
455 | } | 456 | } |
456 | 457 | ||
@@ -645,6 +645,7 @@ int ZEXPORT gzclose_r(file) | |||
645 | free(state->in); | 645 | free(state->in); |
646 | } | 646 | } |
647 | gz_error(state, Z_OK, NULL); | 647 | gz_error(state, Z_OK, NULL); |
648 | free(state->path); | ||
648 | ret = close(state->fd); | 649 | ret = close(state->fd); |
649 | free(state); | 650 | free(state); |
650 | return ret ? Z_ERRNO : Z_OK; | 651 | return ret ? Z_ERRNO : Z_OK; |
@@ -523,8 +523,9 @@ int ZEXPORT gzclose_w(file) | |||
523 | (void)deflateEnd(&(state->strm)); | 523 | (void)deflateEnd(&(state->strm)); |
524 | free(state->out); | 524 | free(state->out); |
525 | free(state->in); | 525 | free(state->in); |
526 | ret += close(state->fd); | ||
527 | gz_error(state, Z_OK, NULL); | 526 | gz_error(state, Z_OK, NULL); |
527 | free(state->path); | ||
528 | ret += close(state->fd); | ||
528 | free(state); | 529 | free(state); |
529 | return ret ? Z_ERRNO : Z_OK; | 530 | return ret ? Z_ERRNO : Z_OK; |
530 | } | 531 | } |
@@ -9,7 +9,7 @@ | |||
9 | #define MAXBITS 15 | 9 | #define MAXBITS 15 |
10 | 10 | ||
11 | const char inflate_copyright[] = | 11 | const char inflate_copyright[] = |
12 | " inflate 1.2.3.9 Copyright 1995-2010 Mark Adler "; | 12 | " inflate 1.2.4 Copyright 1995-2010 Mark Adler "; |
13 | /* | 13 | /* |
14 | If you use the zlib library in a product, an acknowledgment is welcome | 14 | If you use the zlib library in a product, an acknowledgment is welcome |
15 | in the documentation of your product. If for some reason you cannot | 15 | in the documentation of your product. If for some reason you cannot |
@@ -62,7 +62,7 @@ unsigned short FAR *work; | |||
62 | 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; | 62 | 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; |
63 | static const unsigned short lext[31] = { /* Length codes 257..285 extra */ | 63 | static const unsigned short lext[31] = { /* Length codes 257..285 extra */ |
64 | 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, | 64 | 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, |
65 | 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 193, 201}; | 65 | 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 66, 199}; |
66 | static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ | 66 | static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ |
67 | 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, | 67 | 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, |
68 | 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, | 68 | 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, |
diff --git a/make_vms.com b/make_vms.com index f35a48f..deee87f 100644 --- a/make_vms.com +++ b/make_vms.com | |||
@@ -13,8 +13,10 @@ $! 0.01 20060120 First version to receive a number | |||
13 | $! 0.02 20061008 Adapt to new Makefile.in | 13 | $! 0.02 20061008 Adapt to new Makefile.in |
14 | $! 0.03 20091224 Add support for large file check | 14 | $! 0.03 20091224 Add support for large file check |
15 | $! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite | 15 | $! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite |
16 | $! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in | ||
16 | $! | 17 | $! |
17 | $ on error then goto err_exit | 18 | $ on error then goto err_exit |
19 | $ set proc/parse=ext | ||
18 | $! | 20 | $! |
19 | $ true = 1 | 21 | $ true = 1 |
20 | $ false = 0 | 22 | $ false = 0 |
@@ -38,7 +40,7 @@ $ v_file = "zlib.h" | |||
38 | $ ccopt = "" | 40 | $ ccopt = "" |
39 | $ lopts = "" | 41 | $ lopts = "" |
40 | $ dnsrl = "" | 42 | $ dnsrl = "" |
41 | $ aconf_in_file = "config.hin" | 43 | $ aconf_in_file = "zconf.h.in#zconf.h_in" |
42 | $ conf_check_string = "" | 44 | $ conf_check_string = "" |
43 | $ linkonly = false | 45 | $ linkonly = false |
44 | $ optfile = name + ".opt" | 46 | $ optfile = name + ".opt" |
@@ -104,13 +106,16 @@ $ i = i + 1 | |||
104 | $ goto find_aconf | 106 | $ goto find_aconf |
105 | $ endif | 107 | $ endif |
106 | $ open/read/err=aconf_err aconf_in 'fname' | 108 | $ open/read/err=aconf_err aconf_in 'fname' |
107 | $ open/write aconf zlibdefs.h | 109 | $ open/write aconf zconf.h |
108 | $ACONF_LOOP: | 110 | $ACONF_LOOP: |
109 | $ read/end_of_file=aconf_exit aconf_in line | 111 | $ read/end_of_file=aconf_exit aconf_in line |
110 | $ work = f$edit(line, "compress,trim") | 112 | $ work = f$edit(line, "compress,trim") |
111 | $ if f$extract(0,6,work) .nes. "#undef" | 113 | $ if f$extract(0,6,work) .nes. "#undef" |
112 | $ then | 114 | $ then |
113 | $ write aconf line | 115 | $ if f$extract(0,12,work) .nes. "#cmakedefine" |
116 | $ then | ||
117 | $ write aconf line | ||
118 | $ endif | ||
114 | $ else | 119 | $ else |
115 | $ cdef = f$element(1," ",work) | 120 | $ cdef = f$element(1," ",work) |
116 | $ gosub check_config | 121 | $ gosub check_config |
@@ -262,6 +262,11 @@ void file_compress(file, mode) | |||
262 | FILE *in; | 262 | FILE *in; |
263 | gzFile out; | 263 | gzFile out; |
264 | 264 | ||
265 | if (strlen(file) + strlen(GZ_SUFFIX) >= sizeof(outfile)) { | ||
266 | fprintf(stderr, "%s: filename too long\n", prog); | ||
267 | exit(1); | ||
268 | } | ||
269 | |||
265 | strcpy(outfile, file); | 270 | strcpy(outfile, file); |
266 | strcat(outfile, GZ_SUFFIX); | 271 | strcat(outfile, GZ_SUFFIX); |
267 | 272 | ||
@@ -291,7 +296,12 @@ void file_uncompress(file) | |||
291 | char *infile, *outfile; | 296 | char *infile, *outfile; |
292 | FILE *out; | 297 | FILE *out; |
293 | gzFile in; | 298 | gzFile in; |
294 | uInt len = (uInt)strlen(file); | 299 | size_t len = strlen(file); |
300 | |||
301 | if (len + strlen(GZ_SUFFIX) >= sizeof(buf)) { | ||
302 | fprintf(stderr, "%s: filename too long\n", prog); | ||
303 | exit(1); | ||
304 | } | ||
295 | 305 | ||
296 | strcpy(buf, file); | 306 | strcpy(buf, file); |
297 | 307 | ||
@@ -322,7 +332,8 @@ void file_uncompress(file) | |||
322 | 332 | ||
323 | 333 | ||
324 | /* =========================================================================== | 334 | /* =========================================================================== |
325 | * Usage: minigzip [-d] [-f] [-h] [-r] [-1 to -9] [files...] | 335 | * Usage: minigzip [-c] [-d] [-f] [-h] [-r] [-1 to -9] [files...] |
336 | * -c : write to standard output | ||
326 | * -d : decompress | 337 | * -d : decompress |
327 | * -f : compress with Z_FILTERED | 338 | * -f : compress with Z_FILTERED |
328 | * -h : compress with Z_HUFFMAN_ONLY | 339 | * -h : compress with Z_HUFFMAN_ONLY |
@@ -334,17 +345,30 @@ int main(argc, argv) | |||
334 | int argc; | 345 | int argc; |
335 | char *argv[]; | 346 | char *argv[]; |
336 | { | 347 | { |
348 | int copyout = 0; | ||
337 | int uncompr = 0; | 349 | int uncompr = 0; |
338 | gzFile file; | 350 | gzFile file; |
339 | char outmode[20]; | 351 | char *bname, outmode[20]; |
340 | 352 | ||
341 | strcpy(outmode, "wb6 "); | 353 | strcpy(outmode, "wb6 "); |
342 | 354 | ||
343 | prog = argv[0]; | 355 | prog = argv[0]; |
356 | bname = strrchr(argv[0], '/'); | ||
357 | if (bname) | ||
358 | bname++; | ||
359 | else | ||
360 | bname = argv[0]; | ||
344 | argc--, argv++; | 361 | argc--, argv++; |
345 | 362 | ||
363 | if (!strcmp(bname, "gunzip")) | ||
364 | uncompr = 1; | ||
365 | else if (!strcmp(bname, "zcat")) | ||
366 | copyout = uncompr = 1; | ||
367 | |||
346 | while (argc > 0) { | 368 | while (argc > 0) { |
347 | if (strcmp(*argv, "-d") == 0) | 369 | if (strcmp(*argv, "-c") == 0) |
370 | copyout = 1; | ||
371 | else if (strcmp(*argv, "-d") == 0) | ||
348 | uncompr = 1; | 372 | uncompr = 1; |
349 | else if (strcmp(*argv, "-f") == 0) | 373 | else if (strcmp(*argv, "-f") == 0) |
350 | outmode[3] = 'f'; | 374 | outmode[3] = 'f'; |
@@ -374,11 +398,36 @@ int main(argc, argv) | |||
374 | gz_compress(stdin, file); | 398 | gz_compress(stdin, file); |
375 | } | 399 | } |
376 | } else { | 400 | } else { |
401 | if (copyout) { | ||
402 | SET_BINARY_MODE(stdout); | ||
403 | } | ||
377 | do { | 404 | do { |
378 | if (uncompr) { | 405 | if (uncompr) { |
379 | file_uncompress(*argv); | 406 | if (copyout) { |
407 | file = gzopen(*argv, "rb"); | ||
408 | if (file == NULL) | ||
409 | fprintf(stderr, "%s: can't gzopen %s\n", prog, *argv); | ||
410 | else | ||
411 | gz_uncompress(file, stdout); | ||
412 | } else { | ||
413 | file_uncompress(*argv); | ||
414 | } | ||
380 | } else { | 415 | } else { |
381 | file_compress(*argv, outmode); | 416 | if (copyout) { |
417 | FILE * in = fopen(*argv, "rb"); | ||
418 | |||
419 | if (in == NULL) { | ||
420 | perror(*argv); | ||
421 | } else { | ||
422 | file = gzdopen(fileno(stdout), outmode); | ||
423 | if (file == NULL) error("can't gzdopen stdout"); | ||
424 | |||
425 | gz_compress(in, file); | ||
426 | } | ||
427 | |||
428 | } else { | ||
429 | file_compress(*argv, outmode); | ||
430 | } | ||
382 | } | 431 | } |
383 | } while (argv++, --argc); | 432 | } while (argv++, --argc); |
384 | } | 433 | } |
diff --git a/qnx/package.qpg b/qnx/package.qpg index fea73cc..470d2d5 100644 --- a/qnx/package.qpg +++ b/qnx/package.qpg | |||
@@ -25,10 +25,10 @@ | |||
25 | <QPG:Files> | 25 | <QPG:Files> |
26 | <QPG:Add file="../zconf.h" install="/opt/include/" user="root:sys" permission="644"/> | 26 | <QPG:Add file="../zconf.h" install="/opt/include/" user="root:sys" permission="644"/> |
27 | <QPG:Add file="../zlib.h" install="/opt/include/" user="root:sys" permission="644"/> | 27 | <QPG:Add file="../zlib.h" install="/opt/include/" user="root:sys" permission="644"/> |
28 | <QPG:Add file="../libz.so.1.2.3.9" install="/opt/lib/" user="root:bin" permission="644"/> | 28 | <QPG:Add file="../libz.so.1.2.4" install="/opt/lib/" user="root:bin" permission="644"/> |
29 | <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.3.9"/> | 29 | <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.4"/> |
30 | <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.3.9"/> | 30 | <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.4"/> |
31 | <QPG:Add file="../libz.so.1.2.3.9" install="/opt/lib/" component="slib"/> | 31 | <QPG:Add file="../libz.so.1.2.4" install="/opt/lib/" component="slib"/> |
32 | </QPG:Files> | 32 | </QPG:Files> |
33 | 33 | ||
34 | <QPG:PackageFilter> | 34 | <QPG:PackageFilter> |
@@ -63,7 +63,7 @@ | |||
63 | </QPM:ProductDescription> | 63 | </QPM:ProductDescription> |
64 | 64 | ||
65 | <QPM:ReleaseDescription> | 65 | <QPM:ReleaseDescription> |
66 | <QPM:ReleaseVersion>1.2.3.9</QPM:ReleaseVersion> | 66 | <QPM:ReleaseVersion>1.2.4</QPM:ReleaseVersion> |
67 | <QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency> | 67 | <QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency> |
68 | <QPM:ReleaseStability>Stable</QPM:ReleaseStability> | 68 | <QPM:ReleaseStability>Stable</QPM:ReleaseStability> |
69 | <QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor> | 69 | <QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor> |
diff --git a/treebuild.xml b/treebuild.xml index f81b449..91ee891 100644 --- a/treebuild.xml +++ b/treebuild.xml | |||
@@ -1,6 +1,6 @@ | |||
1 | <?xml version="1.0" ?> | 1 | <?xml version="1.0" ?> |
2 | <package name="zlib" version="1.2.3"> | 2 | <package name="zlib" version="1.2.4"> |
3 | <library name="zlib" dlversion="1.2.3" dlname="z"> | 3 | <library name="zlib" dlversion="1.2.4" dlname="z"> |
4 | <property name="description"> zip compression library </property> | 4 | <property name="description"> zip compression library </property> |
5 | <property name="include-target-dir" value="$(@PACKAGE/install-includedir)" /> | 5 | <property name="include-target-dir" value="$(@PACKAGE/install-includedir)" /> |
6 | 6 | ||
@@ -867,13 +867,13 @@ local void send_all_trees(s, lcodes, dcodes, blcodes) | |||
867 | /* =========================================================================== | 867 | /* =========================================================================== |
868 | * Send a stored block | 868 | * Send a stored block |
869 | */ | 869 | */ |
870 | void _tr_stored_block(s, buf, stored_len, eof) | 870 | void _tr_stored_block(s, buf, stored_len, last) |
871 | deflate_state *s; | 871 | deflate_state *s; |
872 | charf *buf; /* input block */ | 872 | charf *buf; /* input block */ |
873 | ulg stored_len; /* length of input block */ | 873 | ulg stored_len; /* length of input block */ |
874 | int eof; /* true if this is the last block for a file */ | 874 | int last; /* one if this is the last block for a file */ |
875 | { | 875 | { |
876 | send_bits(s, (STORED_BLOCK<<1)+eof, 3); /* send block type */ | 876 | send_bits(s, (STORED_BLOCK<<1)+last, 3); /* send block type */ |
877 | #ifdef DEBUG | 877 | #ifdef DEBUG |
878 | s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; | 878 | s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; |
879 | s->compressed_len += (stored_len + 4) << 3; | 879 | s->compressed_len += (stored_len + 4) << 3; |
@@ -921,11 +921,11 @@ void _tr_align(s) | |||
921 | * Determine the best encoding for the current block: dynamic trees, static | 921 | * Determine the best encoding for the current block: dynamic trees, static |
922 | * trees or store, and output the encoded block to the zip file. | 922 | * trees or store, and output the encoded block to the zip file. |
923 | */ | 923 | */ |
924 | void _tr_flush_block(s, buf, stored_len, eof) | 924 | void _tr_flush_block(s, buf, stored_len, last) |
925 | deflate_state *s; | 925 | deflate_state *s; |
926 | charf *buf; /* input block, or NULL if too old */ | 926 | charf *buf; /* input block, or NULL if too old */ |
927 | ulg stored_len; /* length of input block */ | 927 | ulg stored_len; /* length of input block */ |
928 | int eof; /* true if this is the last block for a file */ | 928 | int last; /* one if this is the last block for a file */ |
929 | { | 929 | { |
930 | ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */ | 930 | ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */ |
931 | int max_blindex = 0; /* index of last bit length code of non zero freq */ | 931 | int max_blindex = 0; /* index of last bit length code of non zero freq */ |
@@ -981,20 +981,20 @@ void _tr_flush_block(s, buf, stored_len, eof) | |||
981 | * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to | 981 | * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to |
982 | * transform a block into a stored block. | 982 | * transform a block into a stored block. |
983 | */ | 983 | */ |
984 | _tr_stored_block(s, buf, stored_len, eof); | 984 | _tr_stored_block(s, buf, stored_len, last); |
985 | 985 | ||
986 | #ifdef FORCE_STATIC | 986 | #ifdef FORCE_STATIC |
987 | } else if (static_lenb >= 0) { /* force static trees */ | 987 | } else if (static_lenb >= 0) { /* force static trees */ |
988 | #else | 988 | #else |
989 | } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { | 989 | } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { |
990 | #endif | 990 | #endif |
991 | send_bits(s, (STATIC_TREES<<1)+eof, 3); | 991 | send_bits(s, (STATIC_TREES<<1)+last, 3); |
992 | compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree); | 992 | compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree); |
993 | #ifdef DEBUG | 993 | #ifdef DEBUG |
994 | s->compressed_len += 3 + s->static_len; | 994 | s->compressed_len += 3 + s->static_len; |
995 | #endif | 995 | #endif |
996 | } else { | 996 | } else { |
997 | send_bits(s, (DYN_TREES<<1)+eof, 3); | 997 | send_bits(s, (DYN_TREES<<1)+last, 3); |
998 | send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, | 998 | send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, |
999 | max_blindex+1); | 999 | max_blindex+1); |
1000 | compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree); | 1000 | compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree); |
@@ -1008,14 +1008,14 @@ void _tr_flush_block(s, buf, stored_len, eof) | |||
1008 | */ | 1008 | */ |
1009 | init_block(s); | 1009 | init_block(s); |
1010 | 1010 | ||
1011 | if (eof) { | 1011 | if (last) { |
1012 | bi_windup(s); | 1012 | bi_windup(s); |
1013 | #ifdef DEBUG | 1013 | #ifdef DEBUG |
1014 | s->compressed_len += 7; /* align on byte boundary */ | 1014 | s->compressed_len += 7; /* align on byte boundary */ |
1015 | #endif | 1015 | #endif |
1016 | } | 1016 | } |
1017 | Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, | 1017 | Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, |
1018 | s->compressed_len-7*eof)); | 1018 | s->compressed_len-7*last)); |
1019 | } | 1019 | } |
1020 | 1020 | ||
1021 | /* =========================================================================== | 1021 | /* =========================================================================== |
diff --git a/win32/Makefile.gcc b/win32/Makefile.gcc index 97571c2..abe3d5a 100644 --- a/win32/Makefile.gcc +++ b/win32/Makefile.gcc | |||
@@ -25,7 +25,7 @@ | |||
25 | 25 | ||
26 | STATICLIB = libz.a | 26 | STATICLIB = libz.a |
27 | SHAREDLIB = zlib1.dll | 27 | SHAREDLIB = zlib1.dll |
28 | IMPLIB = libz.dll.a | 28 | IMPLIB = libzdll.a |
29 | 29 | ||
30 | #LOC = -DASMV | 30 | #LOC = -DASMV |
31 | #LOC = -DDEBUG -g | 31 | #LOC = -DDEBUG -g |
diff --git a/win32/Makefile.msc b/win32/Makefile.msc index 3722b23..a731c0c 100644 --- a/win32/Makefile.msc +++ b/win32/Makefile.msc | |||
@@ -21,10 +21,10 @@ AS = ml | |||
21 | LD = link | 21 | LD = link |
22 | AR = lib | 22 | AR = lib |
23 | RC = rc | 23 | RC = rc |
24 | CFLAGS = -nologo -MD -O2 -Oy- $(LOC) | 24 | CFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC) |
25 | WFLAGS = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE | 25 | WFLAGS = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE |
26 | ASFLAGS = -coff | 26 | ASFLAGS = -coff -Zi |
27 | LDFLAGS = -nologo -debug -release | 27 | LDFLAGS = -nologo -debug -incremental:no -opt:ref |
28 | ARFLAGS = -nologo | 28 | ARFLAGS = -nologo |
29 | RCFLAGS = /dWIN32 /r | 29 | RCFLAGS = /dWIN32 /r |
30 | 30 | ||
@@ -44,7 +44,7 @@ $(IMPLIB): $(SHAREDLIB) | |||
44 | 44 | ||
45 | $(SHAREDLIB): win32/zlib.def $(OBJS) $(OBJA) zlib1.res | 45 | $(SHAREDLIB): win32/zlib.def $(OBJS) $(OBJA) zlib1.res |
46 | $(LD) $(LDFLAGS) -def:win32/zlib.def -dll -implib:$(IMPLIB) \ | 46 | $(LD) $(LDFLAGS) -def:win32/zlib.def -dll -implib:$(IMPLIB) \ |
47 | -out:$@ $(OBJS) $(OBJA) zlib1.res | 47 | -out:$@ -base:0x5A4C0000 $(OBJS) $(OBJA) zlib1.res |
48 | if exist $@.manifest \ | 48 | if exist $@.manifest \ |
49 | mt -nologo -manifest $@.manifest -outputresource:$@;2 | 49 | mt -nologo -manifest $@.manifest -outputresource:$@;2 |
50 | 50 | ||
@@ -0,0 +1,416 @@ | |||
1 | /* zconf.h -- configuration of the zlib compression library | ||
2 | * Copyright (C) 1995-2010 Jean-loup Gailly. | ||
3 | * For conditions of distribution and use, see copyright notice in zlib.h | ||
4 | */ | ||
5 | |||
6 | /* @(#) $Id$ */ | ||
7 | |||
8 | #ifndef ZCONF_H | ||
9 | #define ZCONF_H | ||
10 | |||
11 | /* | ||
12 | * If you *really* need a unique prefix for all types and library functions, | ||
13 | * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. | ||
14 | * Even better than compiling with -DZ_PREFIX would be to use configure to set | ||
15 | * this permanently in zconf.h using "./configure --zprefix". | ||
16 | */ | ||
17 | #ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ | ||
18 | |||
19 | /* all linked symbols */ | ||
20 | # define _dist_code z__dist_code | ||
21 | # define _length_code z__length_code | ||
22 | # define _tr_align z__tr_align | ||
23 | # define _tr_flush_block z__tr_flush_block | ||
24 | # define _tr_init z__tr_init | ||
25 | # define _tr_stored_block z__tr_stored_block | ||
26 | # define _tr_tally z__tr_tally | ||
27 | # define adler32 z_adler32 | ||
28 | # define adler32_combine z_adler32_combine | ||
29 | # define adler32_combine64 z_adler32_combine64 | ||
30 | # define compress z_compress | ||
31 | # define compress2 z_compress2 | ||
32 | # define compressBound z_compressBound | ||
33 | # define crc32 z_crc32 | ||
34 | # define crc32_combine z_crc32_combine | ||
35 | # define crc32_combine64 z_crc32_combine64 | ||
36 | # define deflate z_deflate | ||
37 | # define deflateBound z_deflateBound | ||
38 | # define deflateCopy z_deflateCopy | ||
39 | # define deflateEnd z_deflateEnd | ||
40 | # define deflateInit2_ z_deflateInit2_ | ||
41 | # define deflateInit_ z_deflateInit_ | ||
42 | # define deflateParams z_deflateParams | ||
43 | # define deflatePrime z_deflatePrime | ||
44 | # define deflateReset z_deflateReset | ||
45 | # define deflateSetDictionary z_deflateSetDictionary | ||
46 | # define deflateSetHeader z_deflateSetHeader | ||
47 | # define deflateTune z_deflateTune | ||
48 | # define deflate_copyright z_deflate_copyright | ||
49 | # define get_crc_table z_get_crc_table | ||
50 | # define gz_error z_gz_error | ||
51 | # define gz_intmax z_gz_intmax | ||
52 | # define gz_strwinerror z_gz_strwinerror | ||
53 | # define gzbuffer z_gzbuffer | ||
54 | # define gzclearerr z_gzclearerr | ||
55 | # define gzclose z_gzclose | ||
56 | # define gzclose_r z_gzclose_r | ||
57 | # define gzclose_w z_gzclose_w | ||
58 | # define gzdirect z_gzdirect | ||
59 | # define gzdopen z_gzdopen | ||
60 | # define gzeof z_gzeof | ||
61 | # define gzerror z_gzerror | ||
62 | # define gzflush z_gzflush | ||
63 | # define gzgetc z_gzgetc | ||
64 | # define gzgets z_gzgets | ||
65 | # define gzoffset z_gzoffset | ||
66 | # define gzoffset64 z_gzoffset64 | ||
67 | # define gzopen z_gzopen | ||
68 | # define gzopen64 z_gzopen64 | ||
69 | # define gzprintf z_gzprintf | ||
70 | # define gzputc z_gzputc | ||
71 | # define gzputs z_gzputs | ||
72 | # define gzread z_gzread | ||
73 | # define gzrewind z_gzrewind | ||
74 | # define gzseek z_gzseek | ||
75 | # define gzseek64 z_gzseek64 | ||
76 | # define gzsetparams z_gzsetparams | ||
77 | # define gztell z_gztell | ||
78 | # define gztell64 z_gztell64 | ||
79 | # define gzungetc z_gzungetc | ||
80 | # define gzwrite z_gzwrite | ||
81 | # define inflate z_inflate | ||
82 | # define inflateBack z_inflateBack | ||
83 | # define inflateBackEnd z_inflateBackEnd | ||
84 | # define inflateBackInit_ z_inflateBackInit_ | ||
85 | # define inflateCopy z_inflateCopy | ||
86 | # define inflateEnd z_inflateEnd | ||
87 | # define inflateGetHeader z_inflateGetHeader | ||
88 | # define inflateInit2_ z_inflateInit2_ | ||
89 | # define inflateInit_ z_inflateInit_ | ||
90 | # define inflateMark z_inflateMark | ||
91 | # define inflatePrime z_inflatePrime | ||
92 | # define inflateReset z_inflateReset | ||
93 | # define inflateReset2 z_inflateReset2 | ||
94 | # define inflateSetDictionary z_inflateSetDictionary | ||
95 | # define inflateSync z_inflateSync | ||
96 | # define inflateSyncPoint z_inflateSyncPoint | ||
97 | # define inflateUndermine z_inflateUndermine | ||
98 | # define inflate_copyright z_inflate_copyright | ||
99 | # define inflate_fast z_inflate_fast | ||
100 | # define inflate_table z_inflate_table | ||
101 | # define uncompress z_uncompress | ||
102 | # define zError z_zError | ||
103 | # define zcalloc z_zcalloc | ||
104 | # define zcfree z_zcfree | ||
105 | # define zlibCompileFlags z_zlibCompileFlags | ||
106 | # define zlibVersion z_zlibVersion | ||
107 | |||
108 | /* all zlib typedefs in zlib.h and zconf.h */ | ||
109 | # define Byte z_Byte | ||
110 | # define Bytef z_Bytef | ||
111 | # define alloc_func z_alloc_func | ||
112 | # define charf z_charf | ||
113 | # define free_func z_free_func | ||
114 | # define gzFile z_gzFile | ||
115 | # define gz_header z_gz_header | ||
116 | # define gz_headerp z_gz_headerp | ||
117 | # define in_func z_in_func | ||
118 | # define intf z_intf | ||
119 | # define out_func z_out_func | ||
120 | # define uInt z_uInt | ||
121 | # define uIntf z_uIntf | ||
122 | # define uLong z_uLong | ||
123 | # define uLongf z_uLongf | ||
124 | # define voidp z_voidp | ||
125 | # define voidpc z_voidpc | ||
126 | # define voidpf z_voidpf | ||
127 | |||
128 | /* all zlib structs in zlib.h and zconf.h */ | ||
129 | # define gz_header_s z_gz_header_s | ||
130 | # define internal_state z_internal_state | ||
131 | |||
132 | #endif | ||
133 | |||
134 | #if defined(__MSDOS__) && !defined(MSDOS) | ||
135 | # define MSDOS | ||
136 | #endif | ||
137 | #if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) | ||
138 | # define OS2 | ||
139 | #endif | ||
140 | #if defined(_WINDOWS) && !defined(WINDOWS) | ||
141 | # define WINDOWS | ||
142 | #endif | ||
143 | #if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) | ||
144 | # ifndef WIN32 | ||
145 | # define WIN32 | ||
146 | # endif | ||
147 | #endif | ||
148 | #if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) | ||
149 | # if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) | ||
150 | # ifndef SYS16BIT | ||
151 | # define SYS16BIT | ||
152 | # endif | ||
153 | # endif | ||
154 | #endif | ||
155 | |||
156 | /* | ||
157 | * Compile with -DMAXSEG_64K if the alloc function cannot allocate more | ||
158 | * than 64k bytes at a time (needed on systems with 16-bit int). | ||
159 | */ | ||
160 | #ifdef SYS16BIT | ||
161 | # define MAXSEG_64K | ||
162 | #endif | ||
163 | #ifdef MSDOS | ||
164 | # define UNALIGNED_OK | ||
165 | #endif | ||
166 | |||
167 | #ifdef __STDC_VERSION__ | ||
168 | # ifndef STDC | ||
169 | # define STDC | ||
170 | # endif | ||
171 | # if __STDC_VERSION__ >= 199901L | ||
172 | # ifndef STDC99 | ||
173 | # define STDC99 | ||
174 | # endif | ||
175 | # endif | ||
176 | #endif | ||
177 | #if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) | ||
178 | # define STDC | ||
179 | #endif | ||
180 | #if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) | ||
181 | # define STDC | ||
182 | #endif | ||
183 | #if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) | ||
184 | # define STDC | ||
185 | #endif | ||
186 | #if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) | ||
187 | # define STDC | ||
188 | #endif | ||
189 | |||
190 | #if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ | ||
191 | # define STDC | ||
192 | #endif | ||
193 | |||
194 | #ifndef STDC | ||
195 | # ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ | ||
196 | # define const /* note: need a more gentle solution here */ | ||
197 | # endif | ||
198 | #endif | ||
199 | |||
200 | /* Some Mac compilers merge all .h files incorrectly: */ | ||
201 | #if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) | ||
202 | # define NO_DUMMY_DECL | ||
203 | #endif | ||
204 | |||
205 | /* Maximum value for memLevel in deflateInit2 */ | ||
206 | #ifndef MAX_MEM_LEVEL | ||
207 | # ifdef MAXSEG_64K | ||
208 | # define MAX_MEM_LEVEL 8 | ||
209 | # else | ||
210 | # define MAX_MEM_LEVEL 9 | ||
211 | # endif | ||
212 | #endif | ||
213 | |||
214 | /* Maximum value for windowBits in deflateInit2 and inflateInit2. | ||
215 | * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files | ||
216 | * created by gzip. (Files created by minigzip can still be extracted by | ||
217 | * gzip.) | ||
218 | */ | ||
219 | #ifndef MAX_WBITS | ||
220 | # define MAX_WBITS 15 /* 32K LZ77 window */ | ||
221 | #endif | ||
222 | |||
223 | /* The memory requirements for deflate are (in bytes): | ||
224 | (1 << (windowBits+2)) + (1 << (memLevel+9)) | ||
225 | that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) | ||
226 | plus a few kilobytes for small objects. For example, if you want to reduce | ||
227 | the default memory requirements from 256K to 128K, compile with | ||
228 | make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" | ||
229 | Of course this will generally degrade compression (there's no free lunch). | ||
230 | |||
231 | The memory requirements for inflate are (in bytes) 1 << windowBits | ||
232 | that is, 32K for windowBits=15 (default value) plus a few kilobytes | ||
233 | for small objects. | ||
234 | */ | ||
235 | |||
236 | /* Type declarations */ | ||
237 | |||
238 | #ifndef OF /* function prototypes */ | ||
239 | # ifdef STDC | ||
240 | # define OF(args) args | ||
241 | # else | ||
242 | # define OF(args) () | ||
243 | # endif | ||
244 | #endif | ||
245 | |||
246 | /* The following definitions for FAR are needed only for MSDOS mixed | ||
247 | * model programming (small or medium model with some far allocations). | ||
248 | * This was tested only with MSC; for other MSDOS compilers you may have | ||
249 | * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, | ||
250 | * just define FAR to be empty. | ||
251 | */ | ||
252 | #ifdef SYS16BIT | ||
253 | # if defined(M_I86SM) || defined(M_I86MM) | ||
254 | /* MSC small or medium model */ | ||
255 | # define SMALL_MEDIUM | ||
256 | # ifdef _MSC_VER | ||
257 | # define FAR _far | ||
258 | # else | ||
259 | # define FAR far | ||
260 | # endif | ||
261 | # endif | ||
262 | # if (defined(__SMALL__) || defined(__MEDIUM__)) | ||
263 | /* Turbo C small or medium model */ | ||
264 | # define SMALL_MEDIUM | ||
265 | # ifdef __BORLANDC__ | ||
266 | # define FAR _far | ||
267 | # else | ||
268 | # define FAR far | ||
269 | # endif | ||
270 | # endif | ||
271 | #endif | ||
272 | |||
273 | #if defined(WINDOWS) || defined(WIN32) | ||
274 | /* If building or using zlib as a DLL, define ZLIB_DLL. | ||
275 | * This is not mandatory, but it offers a little performance increase. | ||
276 | */ | ||
277 | # ifdef ZLIB_DLL | ||
278 | # if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) | ||
279 | # ifdef ZLIB_INTERNAL | ||
280 | # define ZEXTERN extern __declspec(dllexport) | ||
281 | # else | ||
282 | # define ZEXTERN extern __declspec(dllimport) | ||
283 | # endif | ||
284 | # endif | ||
285 | # endif /* ZLIB_DLL */ | ||
286 | /* If building or using zlib with the WINAPI/WINAPIV calling convention, | ||
287 | * define ZLIB_WINAPI. | ||
288 | * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. | ||
289 | */ | ||
290 | # ifdef ZLIB_WINAPI | ||
291 | # ifdef FAR | ||
292 | # undef FAR | ||
293 | # endif | ||
294 | # include <windows.h> | ||
295 | /* No need for _export, use ZLIB.DEF instead. */ | ||
296 | /* For complete Windows compatibility, use WINAPI, not __stdcall. */ | ||
297 | # define ZEXPORT WINAPI | ||
298 | # ifdef WIN32 | ||
299 | # define ZEXPORTVA WINAPIV | ||
300 | # else | ||
301 | # define ZEXPORTVA FAR CDECL | ||
302 | # endif | ||
303 | # endif | ||
304 | #endif | ||
305 | |||
306 | #if defined (__BEOS__) | ||
307 | # ifdef ZLIB_DLL | ||
308 | # ifdef ZLIB_INTERNAL | ||
309 | # define ZEXPORT __declspec(dllexport) | ||
310 | # define ZEXPORTVA __declspec(dllexport) | ||
311 | # else | ||
312 | # define ZEXPORT __declspec(dllimport) | ||
313 | # define ZEXPORTVA __declspec(dllimport) | ||
314 | # endif | ||
315 | # endif | ||
316 | #endif | ||
317 | |||
318 | #ifdef HAVE_VISIBILITY_PRAGMA | ||
319 | # define ZEXTERN __attribute__((visibility ("default"))) extern | ||
320 | #endif | ||
321 | |||
322 | #ifndef ZEXTERN | ||
323 | # define ZEXTERN extern | ||
324 | #endif | ||
325 | #ifndef ZEXPORT | ||
326 | # define ZEXPORT | ||
327 | #endif | ||
328 | #ifndef ZEXPORTVA | ||
329 | # define ZEXPORTVA | ||
330 | #endif | ||
331 | |||
332 | #ifndef FAR | ||
333 | # define FAR | ||
334 | #endif | ||
335 | |||
336 | #if !defined(__MACTYPES__) | ||
337 | typedef unsigned char Byte; /* 8 bits */ | ||
338 | #endif | ||
339 | typedef unsigned int uInt; /* 16 bits or more */ | ||
340 | typedef unsigned long uLong; /* 32 bits or more */ | ||
341 | |||
342 | #ifdef SMALL_MEDIUM | ||
343 | /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ | ||
344 | # define Bytef Byte FAR | ||
345 | #else | ||
346 | typedef Byte FAR Bytef; | ||
347 | #endif | ||
348 | typedef char FAR charf; | ||
349 | typedef int FAR intf; | ||
350 | typedef uInt FAR uIntf; | ||
351 | typedef uLong FAR uLongf; | ||
352 | |||
353 | #ifdef STDC | ||
354 | typedef void const *voidpc; | ||
355 | typedef void FAR *voidpf; | ||
356 | typedef void *voidp; | ||
357 | #else | ||
358 | typedef Byte const *voidpc; | ||
359 | typedef Byte FAR *voidpf; | ||
360 | typedef Byte *voidp; | ||
361 | #endif | ||
362 | |||
363 | #ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ | ||
364 | # define Z_HAVE_UNISTD_H | ||
365 | #endif | ||
366 | |||
367 | #ifdef Z_HAVE_UNISTD_H | ||
368 | # include <sys/types.h> /* for off_t */ | ||
369 | # include <unistd.h> /* for SEEK_* and off_t */ | ||
370 | # ifdef VMS | ||
371 | # include <unixio.h> /* for off_t */ | ||
372 | # endif | ||
373 | # ifndef z_off_t | ||
374 | # define z_off_t off_t | ||
375 | # endif | ||
376 | #endif | ||
377 | |||
378 | #ifdef _LARGEFILE64_SOURCE | ||
379 | # include <sys/types.h> | ||
380 | #endif | ||
381 | |||
382 | #ifndef SEEK_SET | ||
383 | # define SEEK_SET 0 /* Seek from beginning of file. */ | ||
384 | # define SEEK_CUR 1 /* Seek from current position. */ | ||
385 | # define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ | ||
386 | #endif | ||
387 | #ifndef z_off_t | ||
388 | # define z_off_t long | ||
389 | #endif | ||
390 | |||
391 | #if defined(__OS400__) | ||
392 | # define NO_vsnprintf | ||
393 | #endif | ||
394 | |||
395 | #if defined(__MVS__) | ||
396 | # define NO_vsnprintf | ||
397 | #endif | ||
398 | |||
399 | /* MVS linker does not support external names larger than 8 bytes */ | ||
400 | #if defined(__MVS__) | ||
401 | #pragma map(deflateInit_,"DEIN") | ||
402 | #pragma map(deflateInit2_,"DEIN2") | ||
403 | #pragma map(deflateEnd,"DEEND") | ||
404 | #pragma map(deflateBound,"DEBND") | ||
405 | #pragma map(inflateInit_,"ININ") | ||
406 | #pragma map(inflateInit2_,"ININ2") | ||
407 | #pragma map(inflateEnd,"INEND") | ||
408 | #pragma map(inflateSync,"INSY") | ||
409 | #pragma map(inflateSetDictionary,"INSEDI") | ||
410 | #pragma map(compressBound,"CMBND") | ||
411 | #pragma map(inflate_table,"INTABL") | ||
412 | #pragma map(inflate_fast,"INFA") | ||
413 | #pragma map(inflate_copyright,"INCOPY") | ||
414 | #endif | ||
415 | |||
416 | #endif /* ZCONF_H */ | ||
diff --git a/zconf.h.cmakein b/zconf.h.cmakein new file mode 100644 index 0000000..eec8ab0 --- /dev/null +++ b/zconf.h.cmakein | |||
@@ -0,0 +1,418 @@ | |||
1 | /* zconf.h -- configuration of the zlib compression library | ||
2 | * Copyright (C) 1995-2010 Jean-loup Gailly. | ||
3 | * For conditions of distribution and use, see copyright notice in zlib.h | ||
4 | */ | ||
5 | |||
6 | /* @(#) $Id$ */ | ||
7 | |||
8 | #ifndef ZCONF_H | ||
9 | #define ZCONF_H | ||
10 | #cmakedefine Z_PREFIX | ||
11 | #cmakedefine Z_HAVE_UNISTD_H | ||
12 | |||
13 | /* | ||
14 | * If you *really* need a unique prefix for all types and library functions, | ||
15 | * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. | ||
16 | * Even better than compiling with -DZ_PREFIX would be to use configure to set | ||
17 | * this permanently in zconf.h using "./configure --zprefix". | ||
18 | */ | ||
19 | #ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ | ||
20 | |||
21 | /* all linked symbols */ | ||
22 | # define _dist_code z__dist_code | ||
23 | # define _length_code z__length_code | ||
24 | # define _tr_align z__tr_align | ||
25 | # define _tr_flush_block z__tr_flush_block | ||
26 | # define _tr_init z__tr_init | ||
27 | # define _tr_stored_block z__tr_stored_block | ||
28 | # define _tr_tally z__tr_tally | ||
29 | # define adler32 z_adler32 | ||
30 | # define adler32_combine z_adler32_combine | ||
31 | # define adler32_combine64 z_adler32_combine64 | ||
32 | # define compress z_compress | ||
33 | # define compress2 z_compress2 | ||
34 | # define compressBound z_compressBound | ||
35 | # define crc32 z_crc32 | ||
36 | # define crc32_combine z_crc32_combine | ||
37 | # define crc32_combine64 z_crc32_combine64 | ||
38 | # define deflate z_deflate | ||
39 | # define deflateBound z_deflateBound | ||
40 | # define deflateCopy z_deflateCopy | ||
41 | # define deflateEnd z_deflateEnd | ||
42 | # define deflateInit2_ z_deflateInit2_ | ||
43 | # define deflateInit_ z_deflateInit_ | ||
44 | # define deflateParams z_deflateParams | ||
45 | # define deflatePrime z_deflatePrime | ||
46 | # define deflateReset z_deflateReset | ||
47 | # define deflateSetDictionary z_deflateSetDictionary | ||
48 | # define deflateSetHeader z_deflateSetHeader | ||
49 | # define deflateTune z_deflateTune | ||
50 | # define deflate_copyright z_deflate_copyright | ||
51 | # define get_crc_table z_get_crc_table | ||
52 | # define gz_error z_gz_error | ||
53 | # define gz_intmax z_gz_intmax | ||
54 | # define gz_strwinerror z_gz_strwinerror | ||
55 | # define gzbuffer z_gzbuffer | ||
56 | # define gzclearerr z_gzclearerr | ||
57 | # define gzclose z_gzclose | ||
58 | # define gzclose_r z_gzclose_r | ||
59 | # define gzclose_w z_gzclose_w | ||
60 | # define gzdirect z_gzdirect | ||
61 | # define gzdopen z_gzdopen | ||
62 | # define gzeof z_gzeof | ||
63 | # define gzerror z_gzerror | ||
64 | # define gzflush z_gzflush | ||
65 | # define gzgetc z_gzgetc | ||
66 | # define gzgets z_gzgets | ||
67 | # define gzoffset z_gzoffset | ||
68 | # define gzoffset64 z_gzoffset64 | ||
69 | # define gzopen z_gzopen | ||
70 | # define gzopen64 z_gzopen64 | ||
71 | # define gzprintf z_gzprintf | ||
72 | # define gzputc z_gzputc | ||
73 | # define gzputs z_gzputs | ||
74 | # define gzread z_gzread | ||
75 | # define gzrewind z_gzrewind | ||
76 | # define gzseek z_gzseek | ||
77 | # define gzseek64 z_gzseek64 | ||
78 | # define gzsetparams z_gzsetparams | ||
79 | # define gztell z_gztell | ||
80 | # define gztell64 z_gztell64 | ||
81 | # define gzungetc z_gzungetc | ||
82 | # define gzwrite z_gzwrite | ||
83 | # define inflate z_inflate | ||
84 | # define inflateBack z_inflateBack | ||
85 | # define inflateBackEnd z_inflateBackEnd | ||
86 | # define inflateBackInit_ z_inflateBackInit_ | ||
87 | # define inflateCopy z_inflateCopy | ||
88 | # define inflateEnd z_inflateEnd | ||
89 | # define inflateGetHeader z_inflateGetHeader | ||
90 | # define inflateInit2_ z_inflateInit2_ | ||
91 | # define inflateInit_ z_inflateInit_ | ||
92 | # define inflateMark z_inflateMark | ||
93 | # define inflatePrime z_inflatePrime | ||
94 | # define inflateReset z_inflateReset | ||
95 | # define inflateReset2 z_inflateReset2 | ||
96 | # define inflateSetDictionary z_inflateSetDictionary | ||
97 | # define inflateSync z_inflateSync | ||
98 | # define inflateSyncPoint z_inflateSyncPoint | ||
99 | # define inflateUndermine z_inflateUndermine | ||
100 | # define inflate_copyright z_inflate_copyright | ||
101 | # define inflate_fast z_inflate_fast | ||
102 | # define inflate_table z_inflate_table | ||
103 | # define uncompress z_uncompress | ||
104 | # define zError z_zError | ||
105 | # define zcalloc z_zcalloc | ||
106 | # define zcfree z_zcfree | ||
107 | # define zlibCompileFlags z_zlibCompileFlags | ||
108 | # define zlibVersion z_zlibVersion | ||
109 | |||
110 | /* all zlib typedefs in zlib.h and zconf.h */ | ||
111 | # define Byte z_Byte | ||
112 | # define Bytef z_Bytef | ||
113 | # define alloc_func z_alloc_func | ||
114 | # define charf z_charf | ||
115 | # define free_func z_free_func | ||
116 | # define gzFile z_gzFile | ||
117 | # define gz_header z_gz_header | ||
118 | # define gz_headerp z_gz_headerp | ||
119 | # define in_func z_in_func | ||
120 | # define intf z_intf | ||
121 | # define out_func z_out_func | ||
122 | # define uInt z_uInt | ||
123 | # define uIntf z_uIntf | ||
124 | # define uLong z_uLong | ||
125 | # define uLongf z_uLongf | ||
126 | # define voidp z_voidp | ||
127 | # define voidpc z_voidpc | ||
128 | # define voidpf z_voidpf | ||
129 | |||
130 | /* all zlib structs in zlib.h and zconf.h */ | ||
131 | # define gz_header_s z_gz_header_s | ||
132 | # define internal_state z_internal_state | ||
133 | |||
134 | #endif | ||
135 | |||
136 | #if defined(__MSDOS__) && !defined(MSDOS) | ||
137 | # define MSDOS | ||
138 | #endif | ||
139 | #if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) | ||
140 | # define OS2 | ||
141 | #endif | ||
142 | #if defined(_WINDOWS) && !defined(WINDOWS) | ||
143 | # define WINDOWS | ||
144 | #endif | ||
145 | #if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) | ||
146 | # ifndef WIN32 | ||
147 | # define WIN32 | ||
148 | # endif | ||
149 | #endif | ||
150 | #if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) | ||
151 | # if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) | ||
152 | # ifndef SYS16BIT | ||
153 | # define SYS16BIT | ||
154 | # endif | ||
155 | # endif | ||
156 | #endif | ||
157 | |||
158 | /* | ||
159 | * Compile with -DMAXSEG_64K if the alloc function cannot allocate more | ||
160 | * than 64k bytes at a time (needed on systems with 16-bit int). | ||
161 | */ | ||
162 | #ifdef SYS16BIT | ||
163 | # define MAXSEG_64K | ||
164 | #endif | ||
165 | #ifdef MSDOS | ||
166 | # define UNALIGNED_OK | ||
167 | #endif | ||
168 | |||
169 | #ifdef __STDC_VERSION__ | ||
170 | # ifndef STDC | ||
171 | # define STDC | ||
172 | # endif | ||
173 | # if __STDC_VERSION__ >= 199901L | ||
174 | # ifndef STDC99 | ||
175 | # define STDC99 | ||
176 | # endif | ||
177 | # endif | ||
178 | #endif | ||
179 | #if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) | ||
180 | # define STDC | ||
181 | #endif | ||
182 | #if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) | ||
183 | # define STDC | ||
184 | #endif | ||
185 | #if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) | ||
186 | # define STDC | ||
187 | #endif | ||
188 | #if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) | ||
189 | # define STDC | ||
190 | #endif | ||
191 | |||
192 | #if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ | ||
193 | # define STDC | ||
194 | #endif | ||
195 | |||
196 | #ifndef STDC | ||
197 | # ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ | ||
198 | # define const /* note: need a more gentle solution here */ | ||
199 | # endif | ||
200 | #endif | ||
201 | |||
202 | /* Some Mac compilers merge all .h files incorrectly: */ | ||
203 | #if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) | ||
204 | # define NO_DUMMY_DECL | ||
205 | #endif | ||
206 | |||
207 | /* Maximum value for memLevel in deflateInit2 */ | ||
208 | #ifndef MAX_MEM_LEVEL | ||
209 | # ifdef MAXSEG_64K | ||
210 | # define MAX_MEM_LEVEL 8 | ||
211 | # else | ||
212 | # define MAX_MEM_LEVEL 9 | ||
213 | # endif | ||
214 | #endif | ||
215 | |||
216 | /* Maximum value for windowBits in deflateInit2 and inflateInit2. | ||
217 | * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files | ||
218 | * created by gzip. (Files created by minigzip can still be extracted by | ||
219 | * gzip.) | ||
220 | */ | ||
221 | #ifndef MAX_WBITS | ||
222 | # define MAX_WBITS 15 /* 32K LZ77 window */ | ||
223 | #endif | ||
224 | |||
225 | /* The memory requirements for deflate are (in bytes): | ||
226 | (1 << (windowBits+2)) + (1 << (memLevel+9)) | ||
227 | that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) | ||
228 | plus a few kilobytes for small objects. For example, if you want to reduce | ||
229 | the default memory requirements from 256K to 128K, compile with | ||
230 | make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" | ||
231 | Of course this will generally degrade compression (there's no free lunch). | ||
232 | |||
233 | The memory requirements for inflate are (in bytes) 1 << windowBits | ||
234 | that is, 32K for windowBits=15 (default value) plus a few kilobytes | ||
235 | for small objects. | ||
236 | */ | ||
237 | |||
238 | /* Type declarations */ | ||
239 | |||
240 | #ifndef OF /* function prototypes */ | ||
241 | # ifdef STDC | ||
242 | # define OF(args) args | ||
243 | # else | ||
244 | # define OF(args) () | ||
245 | # endif | ||
246 | #endif | ||
247 | |||
248 | /* The following definitions for FAR are needed only for MSDOS mixed | ||
249 | * model programming (small or medium model with some far allocations). | ||
250 | * This was tested only with MSC; for other MSDOS compilers you may have | ||
251 | * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, | ||
252 | * just define FAR to be empty. | ||
253 | */ | ||
254 | #ifdef SYS16BIT | ||
255 | # if defined(M_I86SM) || defined(M_I86MM) | ||
256 | /* MSC small or medium model */ | ||
257 | # define SMALL_MEDIUM | ||
258 | # ifdef _MSC_VER | ||
259 | # define FAR _far | ||
260 | # else | ||
261 | # define FAR far | ||
262 | # endif | ||
263 | # endif | ||
264 | # if (defined(__SMALL__) || defined(__MEDIUM__)) | ||
265 | /* Turbo C small or medium model */ | ||
266 | # define SMALL_MEDIUM | ||
267 | # ifdef __BORLANDC__ | ||
268 | # define FAR _far | ||
269 | # else | ||
270 | # define FAR far | ||
271 | # endif | ||
272 | # endif | ||
273 | #endif | ||
274 | |||
275 | #if defined(WINDOWS) || defined(WIN32) | ||
276 | /* If building or using zlib as a DLL, define ZLIB_DLL. | ||
277 | * This is not mandatory, but it offers a little performance increase. | ||
278 | */ | ||
279 | # ifdef ZLIB_DLL | ||
280 | # if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) | ||
281 | # ifdef ZLIB_INTERNAL | ||
282 | # define ZEXTERN extern __declspec(dllexport) | ||
283 | # else | ||
284 | # define ZEXTERN extern __declspec(dllimport) | ||
285 | # endif | ||
286 | # endif | ||
287 | # endif /* ZLIB_DLL */ | ||
288 | /* If building or using zlib with the WINAPI/WINAPIV calling convention, | ||
289 | * define ZLIB_WINAPI. | ||
290 | * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. | ||
291 | */ | ||
292 | # ifdef ZLIB_WINAPI | ||
293 | # ifdef FAR | ||
294 | # undef FAR | ||
295 | # endif | ||
296 | # include <windows.h> | ||
297 | /* No need for _export, use ZLIB.DEF instead. */ | ||
298 | /* For complete Windows compatibility, use WINAPI, not __stdcall. */ | ||
299 | # define ZEXPORT WINAPI | ||
300 | # ifdef WIN32 | ||
301 | # define ZEXPORTVA WINAPIV | ||
302 | # else | ||
303 | # define ZEXPORTVA FAR CDECL | ||
304 | # endif | ||
305 | # endif | ||
306 | #endif | ||
307 | |||
308 | #if defined (__BEOS__) | ||
309 | # ifdef ZLIB_DLL | ||
310 | # ifdef ZLIB_INTERNAL | ||
311 | # define ZEXPORT __declspec(dllexport) | ||
312 | # define ZEXPORTVA __declspec(dllexport) | ||
313 | # else | ||
314 | # define ZEXPORT __declspec(dllimport) | ||
315 | # define ZEXPORTVA __declspec(dllimport) | ||
316 | # endif | ||
317 | # endif | ||
318 | #endif | ||
319 | |||
320 | #ifdef HAVE_VISIBILITY_PRAGMA | ||
321 | # define ZEXTERN __attribute__((visibility ("default"))) extern | ||
322 | #endif | ||
323 | |||
324 | #ifndef ZEXTERN | ||
325 | # define ZEXTERN extern | ||
326 | #endif | ||
327 | #ifndef ZEXPORT | ||
328 | # define ZEXPORT | ||
329 | #endif | ||
330 | #ifndef ZEXPORTVA | ||
331 | # define ZEXPORTVA | ||
332 | #endif | ||
333 | |||
334 | #ifndef FAR | ||
335 | # define FAR | ||
336 | #endif | ||
337 | |||
338 | #if !defined(__MACTYPES__) | ||
339 | typedef unsigned char Byte; /* 8 bits */ | ||
340 | #endif | ||
341 | typedef unsigned int uInt; /* 16 bits or more */ | ||
342 | typedef unsigned long uLong; /* 32 bits or more */ | ||
343 | |||
344 | #ifdef SMALL_MEDIUM | ||
345 | /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ | ||
346 | # define Bytef Byte FAR | ||
347 | #else | ||
348 | typedef Byte FAR Bytef; | ||
349 | #endif | ||
350 | typedef char FAR charf; | ||
351 | typedef int FAR intf; | ||
352 | typedef uInt FAR uIntf; | ||
353 | typedef uLong FAR uLongf; | ||
354 | |||
355 | #ifdef STDC | ||
356 | typedef void const *voidpc; | ||
357 | typedef void FAR *voidpf; | ||
358 | typedef void *voidp; | ||
359 | #else | ||
360 | typedef Byte const *voidpc; | ||
361 | typedef Byte FAR *voidpf; | ||
362 | typedef Byte *voidp; | ||
363 | #endif | ||
364 | |||
365 | #ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ | ||
366 | # define Z_HAVE_UNISTD_H | ||
367 | #endif | ||
368 | |||
369 | #ifdef Z_HAVE_UNISTD_H | ||
370 | # include <sys/types.h> /* for off_t */ | ||
371 | # include <unistd.h> /* for SEEK_* and off_t */ | ||
372 | # ifdef VMS | ||
373 | # include <unixio.h> /* for off_t */ | ||
374 | # endif | ||
375 | # ifndef z_off_t | ||
376 | # define z_off_t off_t | ||
377 | # endif | ||
378 | #endif | ||
379 | |||
380 | #ifdef _LARGEFILE64_SOURCE | ||
381 | # include <sys/types.h> | ||
382 | #endif | ||
383 | |||
384 | #ifndef SEEK_SET | ||
385 | # define SEEK_SET 0 /* Seek from beginning of file. */ | ||
386 | # define SEEK_CUR 1 /* Seek from current position. */ | ||
387 | # define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ | ||
388 | #endif | ||
389 | #ifndef z_off_t | ||
390 | # define z_off_t long | ||
391 | #endif | ||
392 | |||
393 | #if defined(__OS400__) | ||
394 | # define NO_vsnprintf | ||
395 | #endif | ||
396 | |||
397 | #if defined(__MVS__) | ||
398 | # define NO_vsnprintf | ||
399 | #endif | ||
400 | |||
401 | /* MVS linker does not support external names larger than 8 bytes */ | ||
402 | #if defined(__MVS__) | ||
403 | #pragma map(deflateInit_,"DEIN") | ||
404 | #pragma map(deflateInit2_,"DEIN2") | ||
405 | #pragma map(deflateEnd,"DEEND") | ||
406 | #pragma map(deflateBound,"DEBND") | ||
407 | #pragma map(inflateInit_,"ININ") | ||
408 | #pragma map(inflateInit2_,"ININ2") | ||
409 | #pragma map(inflateEnd,"INEND") | ||
410 | #pragma map(inflateSync,"INSY") | ||
411 | #pragma map(inflateSetDictionary,"INSEDI") | ||
412 | #pragma map(compressBound,"CMBND") | ||
413 | #pragma map(inflate_table,"INTABL") | ||
414 | #pragma map(inflate_fast,"INFA") | ||
415 | #pragma map(inflate_copyright,"INCOPY") | ||
416 | #endif | ||
417 | |||
418 | #endif /* ZCONF_H */ | ||
@@ -7,8 +7,6 @@ | |||
7 | 7 | ||
8 | #ifndef ZCONF_H | 8 | #ifndef ZCONF_H |
9 | #define ZCONF_H | 9 | #define ZCONF_H |
10 | #cmakedefine Z_PREFIX | ||
11 | #cmakedefine Z_HAVE_UNISTD_H | ||
12 | 10 | ||
13 | /* | 11 | /* |
14 | * If you *really* need a unique prefix for all types and library functions, | 12 | * If you *really* need a unique prefix for all types and library functions, |
@@ -1,4 +1,4 @@ | |||
1 | .TH ZLIB 3 "21 February 2010" | 1 | .TH ZLIB 3 "11 March 2010" |
2 | .SH NAME | 2 | .SH NAME |
3 | zlib \- compression/decompression library | 3 | zlib \- compression/decompression library |
4 | .SH SYNOPSIS | 4 | .SH SYNOPSIS |
@@ -9,12 +9,13 @@ for full description] | |||
9 | The | 9 | The |
10 | .I zlib | 10 | .I zlib |
11 | library is a general purpose data compression library. | 11 | library is a general purpose data compression library. |
12 | The code is thread safe. | 12 | The code is thread safe, assuming that the standard library functions |
13 | used are thread safe, such as memory allocation routines. | ||
13 | It provides in-memory compression and decompression functions, | 14 | It provides in-memory compression and decompression functions, |
14 | including integrity checks of the uncompressed data. | 15 | including integrity checks of the uncompressed data. |
15 | This version of the library supports only one compression method (deflation) | 16 | This version of the library supports only one compression method (deflation) |
16 | but other algorithms will be added later | 17 | but other algorithms may be added later |
17 | and will have the same stream interface. | 18 | with the same stream interface. |
18 | .LP | 19 | .LP |
19 | Compression can be done in a single step if the buffers are large enough | 20 | Compression can be done in a single step if the buffers are large enough |
20 | or can be done by repeated calls of the compression function. | 21 | or can be done by repeated calls of the compression function. |
@@ -29,7 +30,7 @@ with an interface similar to that of stdio. | |||
29 | .LP | 30 | .LP |
30 | The library does not install any signal handler. | 31 | The library does not install any signal handler. |
31 | The decoder checks the consistency of the compressed data, | 32 | The decoder checks the consistency of the compressed data, |
32 | so the library should never crash even in case of corrupted input. | 33 | so the library should never crash even in the case of corrupted input. |
33 | .LP | 34 | .LP |
34 | All functions of the compression library are documented in the file | 35 | All functions of the compression library are documented in the file |
35 | .IR zlib.h . | 36 | .IR zlib.h . |
@@ -37,18 +38,19 @@ The distribution source includes examples of use of the library | |||
37 | in the files | 38 | in the files |
38 | .I example.c | 39 | .I example.c |
39 | and | 40 | and |
40 | .IR minigzip.c . | 41 | .IR minigzip.c, |
42 | as well as other examples in the | ||
43 | .IR examples/ | ||
44 | directory. | ||
41 | .LP | 45 | .LP |
42 | Changes to this version are documented in the file | 46 | Changes to this version are documented in the file |
43 | .I ChangeLog | 47 | .I ChangeLog |
44 | that accompanies the source, | 48 | that accompanies the source. |
45 | and are concerned primarily with bug fixes and portability enhancements. | ||
46 | .LP | 49 | .LP |
47 | A Java implementation of | ||
48 | .I zlib | 50 | .I zlib |
49 | is available in the Java Development Kit 1.1: | 51 | is available in Java using the java.util.zip package: |
50 | .IP | 52 | .IP |
51 | http://www.javasoft.com/products/JDK/1.1/docs/api/Package-java.util.zip.html | 53 | http://java.sun.com/developer/technicalArticles/Programming/compression/ |
52 | .LP | 54 | .LP |
53 | A Perl interface to | 55 | A Perl interface to |
54 | .IR zlib , | 56 | .IR zlib , |
@@ -56,7 +58,7 @@ written by Paul Marquess (pmqs@cpan.org), | |||
56 | is available at CPAN (Comprehensive Perl Archive Network) sites, | 58 | is available at CPAN (Comprehensive Perl Archive Network) sites, |
57 | including: | 59 | including: |
58 | .IP | 60 | .IP |
59 | http://www.cpan.org/modules/by-module/Compress/ | 61 | http://search.cpan.org/~pmqs/IO-Compress-Zlib/ |
60 | .LP | 62 | .LP |
61 | A Python interface to | 63 | A Python interface to |
62 | .IR zlib , | 64 | .IR zlib , |
@@ -65,14 +67,11 @@ is available in Python 1.5 and later versions: | |||
65 | .IP | 67 | .IP |
66 | http://www.python.org/doc/lib/module-zlib.html | 68 | http://www.python.org/doc/lib/module-zlib.html |
67 | .LP | 69 | .LP |
68 | A | ||
69 | .I zlib | 70 | .I zlib |
70 | binding for | 71 | is built into |
71 | .IR tcl (1), | 72 | .IR tcl: |
72 | written by Andreas Kupries (a.kupries@westend.com), | ||
73 | is availlable at: | ||
74 | .IP | 73 | .IP |
75 | http://www.westend.com/~kupries/doc/trf/man/man.html | 74 | http://wiki.tcl.tk/4610 |
76 | .LP | 75 | .LP |
77 | An experimental package to read and write files in .zip format, | 76 | An experimental package to read and write files in .zip format, |
78 | written on top of | 77 | written on top of |
@@ -80,40 +79,34 @@ written on top of | |||
80 | by Gilles Vollant (info@winimage.com), | 79 | by Gilles Vollant (info@winimage.com), |
81 | is available at: | 80 | is available at: |
82 | .IP | 81 | .IP |
83 | http://www.winimage.com/zLibDll/unzip.html | 82 | http://www.winimage.com/zLibDll/minizip.html |
84 | and also in the | 83 | and also in the |
85 | .I contrib/minizip | 84 | .I contrib/minizip |
86 | directory of the main | 85 | directory of the main |
87 | .I zlib | 86 | .I zlib |
88 | web site. | 87 | source distribution. |
89 | .SH "SEE ALSO" | 88 | .SH "SEE ALSO" |
90 | The | 89 | The |
91 | .I zlib | 90 | .I zlib |
92 | web site can be found at either of these locations: | 91 | web site can be found at: |
93 | .IP | 92 | .IP |
94 | http://www.zlib.org | 93 | http://zlib.net/ |
95 | .br | ||
96 | http://www.gzip.org/zlib/ | ||
97 | .LP | 94 | .LP |
98 | The data format used by the zlib library is described by RFC | 95 | The data format used by the zlib library is described by RFC |
99 | (Request for Comments) 1950 to 1952 in the files: | 96 | (Request for Comments) 1950 to 1952 in the files: |
100 | .IP | 97 | .IP |
101 | http://www.ietf.org/rfc/rfc1950.txt (concerning zlib format) | 98 | http://www.ietf.org/rfc/rfc1950.txt (for the zlib header and trailer format) |
102 | .br | 99 | .br |
103 | http://www.ietf.org/rfc/rfc1951.txt (concerning deflate format) | 100 | http://www.ietf.org/rfc/rfc1951.txt (for the deflate compressed data format) |
104 | .br | 101 | .br |
105 | http://www.ietf.org/rfc/rfc1952.txt (concerning gzip format) | 102 | http://www.ietf.org/rfc/rfc1952.txt (for the gzip header and trailer format) |
106 | .LP | ||
107 | These documents are also available in other formats from: | ||
108 | .IP | ||
109 | ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html | ||
110 | .LP | 103 | .LP |
111 | Mark Nelson (markn@ieee.org) wrote an article about | 104 | Mark Nelson wrote an article about |
112 | .I zlib | 105 | .I zlib |
113 | for the Jan. 1997 issue of Dr. Dobb's Journal; | 106 | for the Jan. 1997 issue of Dr. Dobb's Journal; |
114 | a copy of the article is available at: | 107 | a copy of the article is available at: |
115 | .IP | 108 | .IP |
116 | http://dogma.net/markn/articles/zlibtool/zlibtool.htm | 109 | http://marknelson.us/1997/01/01/zlib-engine/ |
117 | .SH "REPORTING PROBLEMS" | 110 | .SH "REPORTING PROBLEMS" |
118 | Before reporting a problem, | 111 | Before reporting a problem, |
119 | please check the | 112 | please check the |
@@ -126,13 +119,13 @@ Please read the | |||
126 | .I zlib | 119 | .I zlib |
127 | FAQ at: | 120 | FAQ at: |
128 | .IP | 121 | .IP |
129 | http://www.gzip.org/zlib/zlib_faq.html | 122 | http://zlib.net/zlib_faq.html |
130 | .LP | 123 | .LP |
131 | before asking for help. | 124 | before asking for help. |
132 | Send questions and/or comments to zlib@gzip.org, | 125 | Send questions and/or comments to zlib@gzip.org, |
133 | or (for the Windows DLL version) to Gilles Vollant (info@winimage.com). | 126 | or (for the Windows DLL version) to Gilles Vollant (info@winimage.com). |
134 | .SH AUTHORS | 127 | .SH AUTHORS |
135 | Version 1.2.3.9 | 128 | Version 1.2.4 |
136 | Copyright (C) 1995-2010 Jean-loup Gailly (jloup@gzip.org) | 129 | Copyright (C) 1995-2010 Jean-loup Gailly (jloup@gzip.org) |
137 | and Mark Adler (madler@alumni.caltech.edu). | 130 | and Mark Adler (madler@alumni.caltech.edu). |
138 | .LP | 131 | .LP |
diff --git a/zlib.3.pdf b/zlib.3.pdf new file mode 100644 index 0000000..3442d5b --- /dev/null +++ b/zlib.3.pdf | |||
Binary files differ | |||
@@ -1,5 +1,5 @@ | |||
1 | /* zlib.h -- interface of the 'zlib' general purpose compression library | 1 | /* zlib.h -- interface of the 'zlib' general purpose compression library |
2 | version 1.2.3.9, Feb 21st, 2010 | 2 | version 1.2.3.9, Mar 11th, 2010 |
3 | 3 | ||
4 | Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler | 4 | Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler |
5 | 5 | ||
@@ -37,11 +37,12 @@ | |||
37 | extern "C" { | 37 | extern "C" { |
38 | #endif | 38 | #endif |
39 | 39 | ||
40 | #define ZLIB_VERSION "1.2.3.9" | 40 | #define ZLIB_VERSION "1.2.4" |
41 | #define ZLIB_VERNUM 0x1239 | 41 | #define ZLIB_VERNUM 0x1240 |
42 | #define ZLIB_VER_MAJOR 1 | 42 | #define ZLIB_VER_MAJOR 1 |
43 | #define ZLIB_VER_MINOR 2 | 43 | #define ZLIB_VER_MINOR 2 |
44 | #define ZLIB_VER_REVISION 3 | 44 | #define ZLIB_VER_REVISION 4 |
45 | #define ZLIB_VER_SUBREVISION 0 | ||
45 | 46 | ||
46 | /* | 47 | /* |
47 | The 'zlib' compression library provides in-memory compression and | 48 | The 'zlib' compression library provides in-memory compression and |