summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorMark Adler <madler@alumni.caltech.edu>2011-09-09 23:32:36 -0700
committerMark Adler <madler@alumni.caltech.edu>2011-09-09 23:32:36 -0700
commit67cc20d0041a32bee12bd9eb20ae218f91b73f77 (patch)
treed7e1b94bd15c30efd57cf9036f5fe89306b6bba0 /contrib
parent7751bd4c715ea8478113e34b49b5a794a4642e8e (diff)
downloadzlib-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
Diffstat (limited to '')
-rw-r--r--contrib/README.contrib19
-rw-r--r--contrib/amd64/amd64-match.S101
-rw-r--r--contrib/asm586/README.58643
-rw-r--r--contrib/asm586/match.S364
-rw-r--r--contrib/asm686/README.68617
-rw-r--r--contrib/asm686/match.S24
-rw-r--r--contrib/delphi/ZLib.pas2
-rw-r--r--contrib/dotzlib/DotZLib/UnitTests.cs2
-rw-r--r--contrib/gcc_gvmat64/gvmat64.S574
-rw-r--r--contrib/infback9/inftree9.c4
-rw-r--r--contrib/masm686/match.asm413
-rw-r--r--contrib/masmx64/gvmat64.asm49
-rw-r--r--contrib/masmx64/inffas8664.c2
-rw-r--r--contrib/masmx64/inffasx64.asm10
-rw-r--r--contrib/masmx86/bld_ml32.bat2
-rw-r--r--contrib/masmx86/gvmat32.asm972
-rw-r--r--contrib/masmx86/gvmat32c.c62
-rw-r--r--contrib/masmx86/match686.asm478
-rw-r--r--contrib/masmx86/match686.objbin0 -> 3507 bytes
-rwxr-xr-xcontrib/masmx86/mkasm.bat3
-rw-r--r--contrib/masmx86/readme.txt4
-rw-r--r--contrib/pascal/zlibpas.pas2
-rw-r--r--contrib/vstudio/readme.txt40
-rw-r--r--contrib/vstudio/vc10/testzlib.vcxproj12
-rw-r--r--contrib/vstudio/vc10/testzlib.vcxproj.filters3
-rw-r--r--contrib/vstudio/vc10/zlib.rc10
-rw-r--r--contrib/vstudio/vc10/zlibstat.vcxproj11
-rw-r--r--contrib/vstudio/vc10/zlibstat.vcxproj.filters6
-rw-r--r--contrib/vstudio/vc10/zlibvc.def68
-rw-r--r--contrib/vstudio/vc10/zlibvc.sln16
-rw-r--r--contrib/vstudio/vc10/zlibvc.vcxproj16
-rw-r--r--contrib/vstudio/vc10/zlibvc.vcxproj.filters6
-rw-r--r--contrib/vstudio/vc7/zlibvc.def114
-rw-r--r--contrib/vstudio/vc8/zlibvc.def114
-rw-r--r--contrib/vstudio/vc9/testzlib.vcproj274
-rw-r--r--contrib/vstudio/vc9/zlib.rc10
-rw-r--r--contrib/vstudio/vc9/zlibstat.vcproj170
-rw-r--r--contrib/vstudio/vc9/zlibvc.def68
-rw-r--r--contrib/vstudio/vc9/zlibvc.sln16
-rw-r--r--contrib/vstudio/vc9/zlibvc.vcproj247
40 files changed, 1615 insertions, 2733 deletions
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
15asm586/
16asm686/ by Brian Raiter <breadbox@muppetlabs.com> 15asm686/ 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>
26dotzlib/ by Henrik Ravn <henrik@ravn.com> 25dotzlib/ 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
28gcc_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
29infback9/ by Mark Adler <madler@alumni.caltech.edu> 32infback9/ 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
45masm686/ 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
49masmx64/ by Gilles Vollant <info@winimage.com> 48masmx64/ 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
53masmx86/ by Gilles Vollant <info@winimage.com> 53masmx86/ 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
57minizip/ by Gilles Vollant <info@winimage.com> 58minizip/ 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
62pascal/ by Bob Dellaca <bobdl@xtra.co.nz> et al. 63pascal/ 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
70void print_depl()
71{
72deflate_state ds;
73deflate_state *s=&ds;
74printf("size pointer=%u\n",(int)sizeof(void*));
75
76printf("#define dsWSize (%3u)(%%rdi)\n",(int)(((char*)&(s->w_size))-((char*)s)));
77printf("#define dsWMask (%3u)(%%rdi)\n",(int)(((char*)&(s->w_mask))-((char*)s)));
78printf("#define dsWindow (%3u)(%%rdi)\n",(int)(((char*)&(s->window))-((char*)s)));
79printf("#define dsPrev (%3u)(%%rdi)\n",(int)(((char*)&(s->prev))-((char*)s)));
80printf("#define dsMatchLen (%3u)(%%rdi)\n",(int)(((char*)&(s->match_length))-((char*)s)));
81printf("#define dsPrevMatch (%3u)(%%rdi)\n",(int)(((char*)&(s->prev_match))-((char*)s)));
82printf("#define dsStrStart (%3u)(%%rdi)\n",(int)(((char*)&(s->strstart))-((char*)s)));
83printf("#define dsMatchStart (%3u)(%%rdi)\n",(int)(((char*)&(s->match_start))-((char*)s)));
84printf("#define dsLookahead (%3u)(%%rdi)\n",(int)(((char*)&(s->lookahead))-((char*)s)));
85printf("#define dsPrevLen (%3u)(%%rdi)\n",(int)(((char*)&(s->prev_length))-((char*)s)));
86printf("#define dsMaxChainLen (%3u)(%%rdi)\n",(int)(((char*)&(s->max_chain_length))-((char*)s)));
87printf("#define dsGoodMatch (%3u)(%%rdi)\n",(int)(((char*)&(s->good_match))-((char*)s)));
88printf("#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
226LoopCmps: 290LoopCmps:
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
264LeaveLoopCmps: add %rax, %rdx 345LeaveLoopCmps: 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
277LeaveLoopCmps: bsf %rax, %rax /* find the first non-zero bit */ 368LeaveLoopCmps: 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
372LeaveLoopCmps16:
373 add $8, %rdx
374LeaveLoopCmps8:
375 add $8, %rdx
281LeaveLoopCmps: testl $0xFFFFFFFF, %eax /* Check the first 4 bytes */ 376LeaveLoopCmps: 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 @@
1This is a patched version of zlib modified to use
2Pentium-optimized assembly code in the deflation algorithm. The files
3changed/added by this patch are:
4
5README.586
6match.S
7
8The effectiveness of these modifications is a bit marginal, as the the
9program's bottleneck seems to be mostly L1-cache contention, for which
10there is no real way to work around without rewriting the basic
11algorithm. The speedup on average is around 5-10% (which is generally
12less than the amount of variance between subsequent executions).
13However, when used at level 9 compression, the cache contention can
14drop enough for the assembly version to achieve 10-20% speedup (and
15sometimes more, depending on the amount of overall redundancy in the
16files). Even here, though, cache contention can still be the limiting
17factor, depending on the nature of the program using the zlib library.
18This may also mean that better improvements will be seen on a Pentium
19with MMX, which suffers much less from L1-cache contention, but I have
20not yet verified this.
21
22Note that this code has been tailored for the Pentium in particular,
23and will not perform well on the Pentium Pro (due to the use of a
24partial register in the inner loop).
25
26If you are using an assembler other than GNU as, you will have to
27translate match.S to use your assembler's syntax. (Have fun.)
28
29Brian Raiter
30breadbox@muppetlabs.com
31April, 1998
32
33
34Added for zlib 1.1.3:
35
36The patches come from
37http://www.muppetlabs.com/~breadbox/software/assembly.html
38
39To compile zlib with this asm file, copy match.S to the zlib directory
40then do:
41
42CFLAGS="-O3 -DASMV" ./configure
43make 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
81longest_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
107LookaheadLess: 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
133LimitPositive:
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
146LastMatchGood:
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 */
224LookupLoop:
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 */
232LoopEntry: 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 */
275LoopCmps:
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
287LeaveLoopCmps4: addl $4, %edx
288LeaveLoopCmps: testl $0x0000FFFF, %eax
289 jnz LenLower
290 addl $2, %edx
291 shrl $16, %eax
292LenLower: 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
323LongerMatch: 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
341LenMaximum: 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
348LeaveNow:
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
355LookaheadRet:
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
364match_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
33CFLAGS="-O3 -DASMV" ./configure 33CFLAGS="-O3 -DASMV" ./configure
34make OBJA=match.o 34make OBJA=match.o
35
36
37Update:
38
39I've been ignoring these assembly routines for years, believing that
40gcc's generated code had caught up with it sometime around gcc 2.95
41and the major rearchitecting of the Pentium 4. However, I recently
42learned that, despite what I believed, this code still has some life
43in it. On the Pentium 4 and AMD64 chips, it continues to run about 8%
44faster than the code produced by gcc 4.1.
45
46In acknowledgement of its continuing usefulness, I've altered the
47license to match that of the rest of zlib. Share and Enjoy!
48
49Brian Raiter
50breadbox@muppetlabs.com
51April, 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
154const 154const
155 zlib_version = '1.2.3'; 155 zlib_version = '1.2.4';
156 156
157type 157type
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
62longest_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
120void print_depl()
121{
122deflate_state ds;
123deflate_state *s=&ds;
124printf("size pointer=%u\n",(int)sizeof(void*));
125
126printf("#define dsWSize %u\n",(int)(((char*)&(s->w_size))-((char*)s)));
127printf("#define dsWMask %u\n",(int)(((char*)&(s->w_mask))-((char*)s)));
128printf("#define dsWindow %u\n",(int)(((char*)&(s->window))-((char*)s)));
129printf("#define dsPrev %u\n",(int)(((char*)&(s->prev))-((char*)s)));
130printf("#define dsMatchLen %u\n",(int)(((char*)&(s->match_length))-((char*)s)));
131printf("#define dsPrevMatch %u\n",(int)(((char*)&(s->prev_match))-((char*)s)));
132printf("#define dsStrStart %u\n",(int)(((char*)&(s->strstart))-((char*)s)));
133printf("#define dsMatchStart %u\n",(int)(((char*)&(s->match_start))-((char*)s)));
134printf("#define dsLookahead %u\n",(int)(((char*)&(s->lookahead))-((char*)s)));
135printf("#define dsPrevLen %u\n",(int)(((char*)&(s->prev_length))-((char*)s)));
136printf("#define dsMaxChainLen %u\n",(int)(((char*)&(s->max_chain_length))-((char*)s)));
137printf("#define dsGoodMatch %u\n",(int)(((char*)&(s->good_match))-((char*)s)));
138printf("#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
226LastMatchGood:
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
303LookupLoop1:
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
317LoopEntry1:
318 cmp bx,word ptr [rsi + r8 - 1]
319 BEFORE_JMP
320 jz LookupLoopIsZero
321 AFTER_JMP
322
323LookupLoop2:
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
336LoopEntry2:
337 cmp bx,word ptr [rsi + r8 - 1]
338 BEFORE_JMP
339 jz LookupLoopIsZero
340 AFTER_JMP
341
342LookupLoop4:
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
355LoopEntry4:
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
384LookupLoop:
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
397LoopEntry:
398
399 cmp bx,word ptr [rsi + r8 - 1]
400 BEFORE_JMP
401 jnz LookupLoop1
402 AFTER_JMP
403LookupLoopIsZero:
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
442LoopCmps:
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
463LeaveLoopCmps16: add rdx,8
464LeaveLoopCmps8: add rdx,8
465LeaveLoopCmps:
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
481LenLower32:
482 shr eax,16
483 add rdx,2
484
485LenLower:
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*/
518LongerMatch:
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
537LenMaximum:
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
544LeaveNow:
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
571match_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
11const char inflate9_copyright[] = 11const 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
25MAX_MATCH EQU 258
26MIN_MATCH EQU 3
27MIN_LOOKAHEAD EQU (MAX_MATCH + MIN_MATCH + 1)
28MAX_MATCH_8 EQU ((MAX_MATCH + 7) AND (NOT 7))
29
30;===========================================================================
31; STRUCTURES
32;===========================================================================
33
34; This STRUCT assumes a 4-byte alignment
35
36DEFLATE_STATE STRUCT
37ds_strm dd ?
38ds_status dd ?
39ds_pending_buf dd ?
40ds_pending_buf_size dd ?
41ds_pending_out dd ?
42ds_pending dd ?
43ds_wrap dd ?
44; gzhead and gzindex are added in zlib 1.2.2.2 (see deflate.h)
45ds_gzhead dd ?
46ds_gzindex dd ?
47ds_data_type db ?
48ds_method db ?
49 db ? ; padding
50 db ? ; padding
51ds_last_flush dd ?
52ds_w_size dd ? ; used
53ds_w_bits dd ?
54ds_w_mask dd ? ; used
55ds_window dd ? ; used
56ds_window_size dd ?
57ds_prev dd ? ; used
58ds_head dd ?
59ds_ins_h dd ?
60ds_hash_size dd ?
61ds_hash_bits dd ?
62ds_hash_mask dd ?
63ds_hash_shift dd ?
64ds_block_start dd ?
65ds_match_length dd ? ; used
66ds_prev_match dd ? ; used
67ds_match_available dd ?
68ds_strstart dd ? ; used
69ds_match_start dd ? ; used
70ds_lookahead dd ? ; used
71ds_prev_length dd ? ; used
72ds_max_chain_length dd ? ; used
73ds_max_laxy_match dd ?
74ds_level dd ?
75ds_strategy dd ?
76ds_good_match dd ? ; used
77ds_nice_match dd ? ; used
78
79; Don't need anymore of the struct for match
80DEFLATE_STATE ENDS
81
82;===========================================================================
83; CODE
84;===========================================================================
85_TEXT SEGMENT
86
87;---------------------------------------------------------------------------
88; match_init
89;---------------------------------------------------------------------------
90 ALIGN 4
91PUBLIC _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
102PUBLIC _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
110chainlenwmask = 0 ; high word: current chain len
111 ; low word: s->wmask
112window = 4 ; local copy of s->window
113windowbestlen = 8 ; s->window + bestlen
114scanend = 12 ; last two bytes of string
115scanstart = 16 ; first two bytes of string
116scanalign = 20 ; dword-misalignment of string
117nicematch = 24 ; a good enough match size
118bestlen = 28 ; size of best match so far
119scan = 32 ; ptr to string wanting match
120varsize = 36 ; number of bytes (also offset to last saved register)
121
122; Saved Registers (actually pushed into place)
123ebx_save = 36
124edi_save = 40
125esi_save = 44
126ebp_save = 48
127
128; Parameters
129retaddr = 52
130deflatestate = 56
131curmatch = 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]
148ASSUME 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
165LastMatchGood:
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
184LookaheadLess:
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
211LimitPositive:
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
260LookupLoop:
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
268LoopEntry:
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
310LoopCmps:
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
324LeaveLoopCmps4:
325 add edx, 4
326
327LeaveLoopCmps:
328 test eax, 00000FFFFH
329 jnz SHORT LenLower
330
331 add edx, 2
332 shr eax, 16
333
334LenLower:
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
366LongerMatch:
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
384LenMaximum:
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
392LeaveNow:
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
399LookaheadRet:
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
413END
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
19inffas8664fnc PROC 23inffas8664fnc 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 @@
1ml /coff /Zi /c /Flgvmat32.lst gvmat32.asm 1ml /coff /Zi /c /Flmatch686.lst match686.asm
2ml /coff /Zi /c /Flinffas32.lst inffas32.asm 2ml /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
112IFDEF 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
121ELSE
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
130ENDIF
131
132 MAX_MATCH equ 258
133 MIN_MATCH equ 3
134 MIN_LOOKAHEAD equ (MAX_MATCH+MIN_MATCH+1)
135
136
137
138IFNDEF NOOLDPENTIUMCODE
139IFDEF NOUNDERLINE
140longest_match_7fff proc near
141ELSE
142_longest_match_7fff proc near
143ENDIF
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
166noshr:
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
176nolookaheadnicematch:
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
209nodist:
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
243normalbeg0add16:
244 add chain_length,16
245 jz exitloop
246normalbeg0:
247 cmp word ptr[edi+eax],bx
248 je normalbeg2noroll
249rcontlabnoroll:
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
261normalbeg2noroll:
262; if (scan_start==*(cur_match+window)) goto normalbeg2
263 cmp bp,word ptr[edx+eax]
264 jne rcontlabnoroll
265 jmp normalbeg2
266
267contloop3:
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
275jnbexitloopshort1:
276 jnb exitloop
277; if --chain_length != 0, go to exitloop
278
279
280; begin the main loop
281beginloop2:
282 sub chain_length,16+1
283; if chain_length <=16, don't use the unrolled loop
284 jna normalbeg0add16
285
286do16:
287 cmp word ptr[edi+eax],bx
288 je normalbeg2dc0
289
290maccn 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
299rcontloop0:
300 maccn normalbeg2dc1
301
302rcontloop1:
303 maccn normalbeg2dc2
304
305rcontloop2:
306 maccn normalbeg2dc3
307
308rcontloop3:
309 maccn normalbeg2dc4
310
311rcontloop4:
312 maccn normalbeg2dc5
313
314rcontloop5:
315 maccn normalbeg2dc6
316
317rcontloop6:
318 maccn normalbeg2dc7
319
320rcontloop7:
321 maccn normalbeg2dc8
322
323rcontloop8:
324 maccn normalbeg2dc9
325
326rcontloop9:
327 maccn normalbeg2dc10
328
329rcontloop10:
330 maccn short normalbeg2dc11
331
332rcontloop11:
333 maccn short normalbeg2dc12
334
335rcontloop12:
336 maccn short normalbeg2dc13
337
338rcontloop13:
339 maccn short normalbeg2dc14
340
341rcontloop14:
342 maccn short normalbeg2dc15
343
344rcontloop15:
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
356normbeg 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
367normalbeg2dc11:
368 normbeg rcontloop11,11
369
370normalbeg2dc12:
371 normbeg short rcontloop12,12
372
373normalbeg2dc13:
374 normbeg short rcontloop13,13
375
376normalbeg2dc14:
377 normbeg short rcontloop14,14
378
379normalbeg2dc15:
380 normbeg short rcontloop15,15
381
382normalbeg2dc10:
383 normbeg rcontloop10,10
384
385normalbeg2dc9:
386 normbeg rcontloop9,9
387
388normalbeg2dc8:
389 normbeg rcontloop8,8
390
391normalbeg2dc7:
392 normbeg rcontloop7,7
393
394normalbeg2dc6:
395 normbeg rcontloop6,6
396
397normalbeg2dc5:
398 normbeg rcontloop5,5
399
400normalbeg2dc4:
401 normbeg rcontloop4,4
402
403normalbeg2dc3:
404 normbeg rcontloop3,3
405
406normalbeg2dc2:
407 normbeg rcontloop2,2
408
409normalbeg2dc1:
410 normbeg rcontloop1,1
411
412normalbeg2dc0:
413 normbeg rcontloop0,0
414
415
416; we go in normalbeg2 because *(ushf*)(match+best_len-1) == scan_end
417
418normalbeg2:
419 mov edi,window
420
421 cmp bp,word ptr[edi+eax]
422 jne contloop3 ; if *(ushf*)match != scan_start, continue
423
424iseq:
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
442eq1rr:
443 or dx,dx
444 je eq1
445
446 mov esi,4
447 jmp trfinval
448eq1:
449 and edx,0ffffffh
450 jz eq11
451 mov esi,5
452 jmp trfinval
453eq11:
454 mov esi,6
455 jmp trfinval
456
457begincompare:
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
482trfin:
483 sub esi,scan ; esi = len
484trfinval:
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
494newbestlen:
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
514exitloop:
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
524minexlo:
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
535InfoAuthor:
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
542IFDEF NOUNDERLINE
543longest_match_7fff endp
544ELSE
545_longest_match_7fff endp
546ENDIF
547
548
549IFDEF NOUNDERLINE
550cpudetect32 proc near
551ELSE
552_cpudetect32 proc near
553ENDIF
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
587exitcpudetect:
588 pop ebx
589 ret
590
591end_cpu_is_386:
592 mov eax,0300h
593 jmp exitcpudetect
594
595is_old_486:
596 mov eax,0400h
597 jmp exitcpudetect
598
599IFDEF NOUNDERLINE
600cpudetect32 endp
601ELSE
602_cpudetect32 endp
603ENDIF
604ENDIF
605
606MAX_MATCH equ 258
607MIN_MATCH equ 3
608MIN_LOOKAHEAD equ (MAX_MATCH + MIN_MATCH + 1)
609MAX_MATCH_8_ equ ((MAX_MATCH + 7) AND 0FFF0h)
610
611
612;;; stack frame offsets
613
614chainlenwmask equ esp + 0 ; high word: current chain len
615 ; low word: s->wmask
616window equ esp + 4 ; local copy of s->window
617windowbestlen equ esp + 8 ; s->window + bestlen
618scanstart equ esp + 16 ; first two bytes of string
619scanend equ esp + 12 ; last two bytes of string
620scanalign equ esp + 20 ; dword-misalignment of string
621nicematch equ esp + 24 ; a good enough match size
622bestlen equ esp + 28 ; size of best match so far
623scan equ esp + 32 ; ptr to string wanting match
624
625LocalVarsSize 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
631deflatestate equ esp + 56 ; the function arguments
632curmatch 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
641dsWSize equ 36+zlib1222add
642dsWMask equ 44+zlib1222add
643dsWindow equ 48+zlib1222add
644dsPrev equ 56+zlib1222add
645dsMatchLen equ 88+zlib1222add
646dsPrevMatch equ 92+zlib1222add
647dsStrStart equ 100+zlib1222add
648dsMatchStart equ 104+zlib1222add
649dsLookahead equ 108+zlib1222add
650dsPrevLen equ 112+zlib1222add
651dsMaxChainLen equ 116+zlib1222add
652dsGoodMatch equ 132+zlib1222add
653dsNiceMatch 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:
672IFDEF NOOLDPENTIUMCODE
673 IFDEF NOUNDERLINE
674 longest_match proc near
675 ELSE
676 _longest_match proc near
677 ENDIF
678ELSE
679 IFDEF NOUNDERLINE
680 longest_match_686 proc near
681 ELSE
682 _longest_match_686 proc near
683 ENDIF
684ENDIF
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
716LastMatchGood:
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
735LookaheadLess: 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
761LimitPositive:
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
788align 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
810LookupLoop:
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
817LoopEntry: 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
856LoopCmps:
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
866LeaveLoopCmps4: add edx, 4
867LeaveLoopCmps: test eax, 0000FFFFh
868 jnz LenLower
869 add edx, 2
870 shr eax, 16
871LenLower: 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
901LongerMatch: 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
917LenMaximum: 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
924LeaveNow:
925 mov edx, [deflatestate]
926 mov ebx, [bestlen]
927 mov eax, [edx + dsLookahead]
928 cmp ebx, eax
929 jg LookaheadRet
930 mov eax, ebx
931LookaheadRet:
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
947IFDEF 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
963ELSE
964 IFDEF NOUNDERLINE
965 longest_match_686 endp
966 ELSE
967 _longest_match_686 endp
968 ENDIF
969ENDIF
970
971_TEXT ends
972end
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
24unsigned long cpudetect32();
25
26uInt longest_match_c(
27 deflate_state *s,
28 IPos cur_match); /* current match */
29
30
31uInt longest_match_7fff(
32 deflate_state *s,
33 IPos cur_match); /* current match */
34
35uInt longest_match_686(
36 deflate_state *s,
37 IPos cur_match); /* current match */
38
39
40static uInt iIsPPro=2;
41
42void match_init ()
43{
44 iIsPPro = (((cpudetect32()/0x100)&0xf)>=6) ? 1 : 0;
45}
46
47uInt 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
98IFDEF NOUNDERLINE
99 public longest_match
100 public match_init
101ELSE
102 public _longest_match
103 public _match_init
104ENDIF
105
106 MAX_MATCH equ 258
107 MIN_MATCH equ 3
108 MIN_LOOKAHEAD equ (MAX_MATCH+MIN_MATCH+1)
109
110
111
112MAX_MATCH equ 258
113MIN_MATCH equ 3
114MIN_LOOKAHEAD equ (MAX_MATCH + MIN_MATCH + 1)
115MAX_MATCH_8_ equ ((MAX_MATCH + 7) AND 0FFF0h)
116
117
118;;; stack frame offsets
119
120chainlenwmask equ esp + 0 ; high word: current chain len
121 ; low word: s->wmask
122window equ esp + 4 ; local copy of s->window
123windowbestlen equ esp + 8 ; s->window + bestlen
124scanstart equ esp + 16 ; first two bytes of string
125scanend equ esp + 12 ; last two bytes of string
126scanalign equ esp + 20 ; dword-misalignment of string
127nicematch equ esp + 24 ; a good enough match size
128bestlen equ esp + 28 ; size of best match so far
129scan equ esp + 32 ; ptr to string wanting match
130
131LocalVarsSize 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
137deflatestate equ esp + 56 ; the function arguments
138curmatch 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
147dsWSize equ 36+zlib1222add
148dsWMask equ 44+zlib1222add
149dsWindow equ 48+zlib1222add
150dsPrev equ 56+zlib1222add
151dsMatchLen equ 88+zlib1222add
152dsPrevMatch equ 92+zlib1222add
153dsStrStart equ 100+zlib1222add
154dsMatchStart equ 104+zlib1222add
155dsLookahead equ 108+zlib1222add
156dsPrevLen equ 112+zlib1222add
157dsMaxChainLen equ 116+zlib1222add
158dsGoodMatch equ 132+zlib1222add
159dsNiceMatch 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
229LastMatchGood:
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
248LookaheadLess: 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
274LimitPositive:
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
301align 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
323LookupLoop:
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
330LoopEntry: 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
369LoopCmps:
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
379LeaveLoopCmps4: add edx, 4
380LeaveLoopCmps: test eax, 0000FFFFh
381 jnz LenLower
382 add edx, 2
383 shr eax, 16
384LenLower: 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
414LongerMatch: 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
430LenMaximum: 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
437LeaveNow:
438 mov edx, [deflatestate]
439 mov ebx, [bestlen]
440 mov eax, [edx + dsLookahead]
441 cmp ebx, eax
442 jg LookaheadRet
443 mov eax, ebx
444LookaheadRet:
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
478end
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 @@
1cl /DASMV /I..\.. /O2 /c gvmat32c.c
2ml /coff /Zi /c /Flgvmat32.lst gvmat32.asm
3ml /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.
14Build instructions 14Build instructions
15------------------ 15------------------
16* With Microsoft C and MASM: 16* With Microsoft C and MASM:
17nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="gvmat32c.obj gvmat32.obj inffas32.obj" 17nmake -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:
20make -f win32/Makefile.bor LOCAL_ZLIB="-DASMV -DASMINF" OBJA="gvmat32c.obj gvmat32.obj inffas32.obj" OBJPA="+gvmat32c.obj+gvmat32.obj+inffas32.obj" 20make -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;
10interface 10interface
11 11
12const 12const
13 ZLIB_VERSION = '1.2.3'; 13 ZLIB_VERSION = '1.2.4';
14 14
15type 15type
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 @@
1Building instructions for the DLL versions of Zlib 1.2.3 1Building instructions for the DLL versions of Zlib 1.2.4
2======================================================== 2========================================================
3 3
4This directory contains projects that build zlib and minizip using 4This directory contains projects that build zlib and minizip using
5Microsoft Visual C++ 7.0/7.1/8.0/9.0/10.0, and Visual C++ . 5Microsoft Visual C++ 9.0/10.0, and Visual C++ .
6 6
7You don't need to build these projects yourself. You can download the 7You don't need to build these projects yourself. You can download the
8binaries from: 8binaries from:
@@ -15,51 +15,17 @@ bld_ml64.bat in contrib\masmx64
15bld_ml32.bat in contrib\masmx86 15bld_ml32.bat in contrib\masmx86
16 16
17 17
18Build 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
27Build 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
35Build instructions for Visual Studio 2005 64 bits, PSDK compiler
36----------------------------------------------------------------
37at the time of writing this text file, Visual Studio 2005 (and
38 Microsoft Visual C++ 8.0) is on the beta 2 stage.
39Using 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
41see 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
49Build instructions for Visual Studio 2008 (32 bits or 64 bits) 20Build 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
57Build instructions for Visual Studio 2010 (32 bits or 64 bits) 26Build 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
4IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE 4IDR_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 @@
1LIBRARY
2; zlib data compression and ZIP file I/O library
1 3
2VERSION 1.23 4VERSION 1.24
3
4HEAPSIZE 1048576,8192
5 5
6EXPORTS 6EXPORTS
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
2VERSION 1.23
3
4HEAPSIZE 1048576,8192
5
6EXPORTS
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
2VERSION 1.23
3
4HEAPSIZE 1048576,8192
5
6EXPORTS
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
4IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE 4IDR_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 @@
1LIBRARY
2; zlib data compression and ZIP file I/O library
1 3
2VERSION 1.23 4VERSION 1.24
3
4HEAPSIZE 1048576,8192
5 5
6EXPORTS 6EXPORTS
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