delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2018/08/01/06:22:57

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:mime-version:content-type:date:from:to:subject
:message-id; q=dns; s=default; b=OiclkGzPKqk4Sw3YEFxYc5u8S9mCGdE
eE08YUO1WmafLYf+rQZwx3kNAyegxCCrSqSypCRMmvQmBKsu8ZZqRTCDI7FXB66H
miZKI3IrtLn3sccCmf0GPHCR5L11lzsELnMzjIb4rGNQOARwpEBDPim6zDqnkY1C
t8GS7n+1Svj4=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:mime-version:content-type:date:from:to:subject
:message-id; s=default; bh=jeC18xJfFhV8X77GLStif2RW5RU=; b=xpVSr
FgyH8PePZCU/TCSzWfsGHitX1w3x5leac3rThMjI6yNgQzl+RQWpmuZTRlEh3f3m
UcJWtsscHNYtTxdEr6lO963GxTGg4UEF26kIvHNpPfktprokzIjneb7ByKA9iQxB
0rpaqsNSCSEDV1KMBoxV9v4LBMPjMRZzbc1/tw=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Authentication-Results: sourceware.org; auth=none
X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,NORMAL_HTTP_TO_IP,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=desire, 0.4, H*F:D*nl, hurry
X-HELO: lb3-smtp-cloud9.xs4all.net
MIME-Version: 1.0
Date: Wed, 01 Aug 2018 12:22:39 +0200
From: Houder <houder AT xs4all DOT nl>
To: cygwin AT cygwin DOT com
Subject: x86_64: floating-point environment (i.e. fenv.h). BUG.
Message-ID: <3a882a7d38c52dc5a14d176f30f8340e@xs4all.nl>
X-Sender: houder AT xs4all DOT nl
User-Agent: XS4ALL Webmail
X-IsSubscribed: yes

--=_484c67ba68c57a4aa8f401ecf59442e6
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=US-ASCII;
 format=flowed

Hi Corinna,

Short version of my report (as there is more to say about the 
implementation of
"fenv") in Cygwin; this time I restrict myself to a bug in fegetenv() ).

(Note to myself: attach STC)

I am reporting a bug in fegetenv() in winsup/cygwin/fenv.cc. There is no 
hurry
in repairing this bug, as "fenv" is hardly ever (never?) used by anyone.

fegetenv() should be modified as follows:

from:
   __asm__ volatile ("fnstenv %0" : "=m" (envp->_fpu) : );
   if (use_sse)
     __asm__ volatile ("stmxcsr %0" : "=m" (envp->_sse_mxcsr) : );
   return 0

to:
// Henri: copying glibc ...
   __asm__ volatile ("fnstenv %0\n"
                     "fldenv %0" : "=m" (envp->_fpu) : );
   if (use_sse)
     __asm__ volatile ("stmxcsr %0" : "=m" (envp->_sse_mxcsr) : );
   return 0;

Yes, you can verify my modification here:

     https://sourceware.org/git/?p=glibc.git

(sysdeps/x86_64/fpu/fegetenv.c)

The fnstenv statement "copies" the state of the x87 FPU to memory, at 
the same
time MASKING all exceptions ...
However, masking the exceptions is NOT what we desire at this point. For 
this
reason fnstenv must be followed by fldenv, which copies "what has been 
copied
from the FPU" back to the FPU.

The stc is as follows:

  feenableexcept()
  ...
  fegetenv(&fpenv) // save state of fenv (the "control and status 
register")
  //fesetenv(FE_DFL_ENV) // set default environment: would mask all 
exceptions
  provoke exception
  fesetenv(&fpenv) // restore the previous state of fenv
Note: provoke exception, using
  - either feraiseexcept()
  - or double d = 1.0; long l = d + 0.4;

Using feraiseexcept() should trigger an exception; it does not.

Regards,

Henri
--=_484c67ba68c57a4aa8f401ecf59442e6
Content-Transfer-Encoding: base64
Content-Type: text/x-c; charset=us-ascii;
 name=STC-FENV.c
Content-Disposition: attachment;
 filename=STC-FENV.c;
 size=6193

Ly8gZ2NjIC1XYWxsIC1vIFNUQy1GRU5WIFNUQy1GRU5WLmMKLy8gTGludXg6
IGdjYyAtV2FsbCAtbyBTVEMtRkVOViBTVEMtRkVOVi5jIC1sbQoKLyoKIHg4
Nl82NDoKIFRoaXMgc3RjIGRvZXMgbm90IHRlcm1pbmF0ZSB3LyBhbiBleGNl
cHRpb24gaWYgb25lIGlzIHByb3Zva2VkIHVzaW5nIGZlcmFpc2VleGNlcHQo
KS4gVGhpcyBpcyBkdWUgdG8gYSBidWcgaW4KIGZlZ2V0ZW52KCkgaW4gd2lu
c3VwL2N5Z3dpbi9mZW52LmNjLgogQXQgZmlyc3QgZ2xhbmNlLCB0aGlzIGlz
IHdlaXJkLCBhcyB1c2luZyAiZG91YmxlIGQgPSAxLjA7IGxvbmcgbCA9IGQg
KyAwLjQ7IiB0byBwcm92b2tlIGFuIGV4Y2VwdGlvbiwgcmVzdWx0cwogaW4g
dHJpZ2dlcmluZyB0aGUgZXhjZXB0aW9uLgogRmxvYXRpbmctcG9pbnQgaW4g
dGhlIEludGVsIHByb2Nlc3NvciBtYXkgZWl0aGVyIHVzZSAiU1NFIiBvciB0
aGUgeDg3IEZQVS4gT24geDg2XzY0LCBTU0UgaXMgdXNlZCAobW9zdGx5Pyku
CiBJbiBmZXJhaXNlZXhjZXB0KCkgdGhlIGV4Y2VwdGlvbiBpcyBwcm92b2tl
ZCB1c2luZyB0aGUgeDg3IEZQVSAuLi4KIEhvd2V2ZXIsIGluIGZlZ2V0ZW52
KCksIGFzIHJlc3VsdCBvZiB0aGUgYnVnLCBhbGwgZXhjZXB0aW9ucyB3aWxs
IGhhdmUgYmVlbiBtYXNrZWQgYWZ0ZXIgY2FsbGluZyBmZWdldGVudigpLgog
V29XICh4ODYpOgogLi4uIGFuIGVudGlyZWx5IGRpZmZlcmVudCBzdG9yeSAo
eDg3IEZQVSBhbmQgU1NFIGJlaGF2ZSBkaWZmZXJlbnRseSB3aGVuIGV4Y2Vw
dGlvbnMgYXJlIGVuYWJsZWQgYWdhaW4gYWZ0ZXIKIGFuIGV4Y2VwdGlvbiBo
YXMgYmVlbiBwcm92b2tlZCB3aGlsZSBleGNlcHRpb25zIFdFUkUgYmVpbmcg
bWFza2VkOyBtb3Jlb3ZlciB0aGUgdHJpZ2dlcmluZyBvZiB0aGUgZXhjZXB0
aW9uCiBpcyAiZGVsYXllZCIgKGRlZmVycmVkKSBpbiBjYXNlIG9mIHRoZSB4
ODcgRlBVKS4KICovCi8qClByb2dyYW06CiBmZWVuYWJsZWV4Y2VwdCgpCiAu
Li4KIGZlZ2V0ZW52KCZmcGVudikgLy8gc2F2ZSBzdGF0ZSBvZiBmZW52ICh0
aGUgImNvbnRyb2wgYW5kIHN0YXR1cyByZWdpc3RlciIpCiAvL2Zlc2V0ZW52
KEZFX0RGTF9FTlYpCXNldCBkZWZhdWx0IGVudmlyb25tZW50OiB3b3VsZCBt
YXNrIGFsbCBleGNlcHRpb25zCiBwcm92b2tlIGV4Y2VwdGlvbgogZmVzZXRl
bnYoJmZwZW52KSAvLyByZXN0b3JlIHRoZSBwcmV2aW91cyBzdGF0ZSBvZiBm
ZW52Ck5vdGU6IHByb3Zva2UgZXhjZXB0aW9uLCB1c2luZyBlaXRoZXIgZmVy
YWlzZWV4Y2VwdCgpIG9yIGRvdWJsZSBkID0gMS4wOyBsb25nIGwgPSBkICsg
MC40OwogKi8KCiNpZiAhZGVmaW5lZCBfX0NZR1dJTl9fCiNkZWZpbmUgX0dO
VV9TT1VSQ0UKI2VuZGlmCiNpbmNsdWRlIDxmZW52Lmg+CiNpbmNsdWRlIDx0
aW1lLmg+CiNpbmNsdWRlIDxzdGRpby5oPgoKY29uc3QgaW50IHh4eCA9IDB4
M2Q7CgppbnQgbWFpbigpCnsKICAgIGZlbnZfdCBmcGVudjsKCiAgICBpZiAo
ZmVlbmFibGVleGNlcHQoRkVfQUxMX0VYQ0VQVCkgPT0gLTEpIHByaW50Zigi
XHRmZWVuYWJsZWV4Y2VwdCBmYWlsZWQuXG4iKTsKcHJpbnRmKCJcdEV4Y2Vw
dGlvbnMgRU5BQkxFRCFcbiIpOwoKcHJpbnRmKCI+OiBmZWdldGV4Y2VwdCgp
ID0gICUyeCBlbmFibGVkXG4iLCBmZWdldGV4Y2VwdCgpICk7CnByaW50Zigi
MDogZmVnZXRleGNlcHQoKSA9ICAlMnggbWFza1xuIiwgKH5mZWdldGV4Y2Vw
dCgpICYgeHh4KSApOwoKcHJpbnRmKCJHZXRlbnYoJmZwZW52KSAuLi5cbiIp
OwogICAgZmVnZXRlbnYoJmZwZW52KTsKCiNpZiAwCiAgICBwcmludGYoIlNl
dGVudihGRV9ERkxfRU5WKSAuLi5cbiIpOyBmZXNldGVudihGRV9ERkxfRU5W
KTsgLy8gZHVjawojZWxzZQogICAgcHJpbnRmKCJOTyBTZXRlbnYoRkVfREZM
X0VOVikgLi4uXG4iKTsKI2VuZGlmCnByaW50ZigiPjogZmVnZXRleGNlcHQo
KSA9ICAlMnggZW5hYmxlZFxuIiwgZmVnZXRleGNlcHQoKSApOwpwcmludGYo
IjE6IGZlZ2V0ZXhjZXB0KCkgPSAgJTJ4IG1hc2tcbiIsICh+ZmVnZXRleGNl
cHQoKSAmIHh4eCkgKTsKCnByaW50ZigiUmFpc2UgRXhjZXB0aW9uIVxuIik7
CiAgICAvL2RvdWJsZSBkID0gMS4wOyBsb25nIGwgPSBkICsgMC40OyBsID0g
bDsKICAgIGlmIChmZXJhaXNlZXhjZXB0KEZFX0lORVhBQ1QpID09IC0xKSBw
cmludGYoIlx0ZmVSQUlTRXJleGNlcHQoKSBmYWlsZWQuXG4iKTsKcHJpbnRm
KCIqOiBmZXRlc3RleGNlcHQoKSA9ICUyeCBzdGF0dXMgZmxhZ3NcbiIsIGZl
dGVzdGV4Y2VwdChGRV9BTExfRVhDRVBUKSApOwpwcmludGYoIj46IGZlZ2V0
ZXhjZXB0KCkgPSAgJTJ4IGVuYWJsZWRcbiIsIGZlZ2V0ZXhjZXB0KCkgKTsK
cHJpbnRmKCIyOiBmZWdldGV4Y2VwdCgpID0gICUyeCBtYXNrXG4iLCAofmZl
Z2V0ZXhjZXB0KCkgJiB4eHgpICk7CgpwcmludGYoIlNldGVudigmZnBlbnYp
IC4uLlxuIik7CiAgICBmZXNldGVudigmZnBlbnYpOwpwcmludGYoIio6IGZl
dGVzdGV4Y2VwdCgpID0gJTJ4IHN0YXR1cyBmbGFnc1xuIiwgZmV0ZXN0ZXhj
ZXB0KEZFX0FMTF9FWENFUFQpICk7CnByaW50ZigiPjogZmVnZXRleGNlcHQo
KSA9ICAlMnggZW5hYmxlZFxuIiwgZmVnZXRleGNlcHQoKSApOwpwcmludGYo
IjM6IGZlZ2V0ZXhjZXB0KCkgPSAgJTJ4IG1hc2tcbiIsICh+ZmVnZXRleGNl
cHQoKSAmIHh4eCkgKTsKfQoKLyogUmVzdWx0cyB3aXRoIHRoZSAiZ2VuZXJp
YyIgZmVudi5jYwpDeWd3aW46IC4uLiB1c2luZyBmZXJhaXNlZXhjZXB0KCkK
NjQtQEAgLi9zdGMtZmVudjIgPD09PT0gV3JvbmchIE5PIGV4Y2VwdGlvbiEg
Li4uIERpdHRvIHg4NiAoTk8gZXhjZXB0aW9uISk6IHdyb25nIQo+OiBmZWdl
dGV4Y2VwdCgpID0gIDNmIGVuYWJsZWQKMDogZmVnZXRleGNlcHQoKSA9ICAg
MCBtYXNrCkdldGVudigmZnBlbnYpIC4uLgpOTyBTZXRlbnYoRkVfREZMX0VO
VikgLi4uCj46IGZlZ2V0ZXhjZXB0KCkgPSAgIDAgZW5hYmxlZCA8PT09PSBX
cm9uZyEgU2VlIGFib3ZlCjE6IGZlZ2V0ZXhjZXB0KCkgPSAgM2QgbWFzawpS
YWlzZSBFeGNlcHRpb24hCio6IGZldGVzdGV4Y2VwdCgpID0gMjAgc3RhdHVz
IGZsYWdzCj46IGZlZ2V0ZXhjZXB0KCkgPSAgIDAgZW5hYmxlZAoyOiBmZWdl
dGV4Y2VwdCgpID0gIDNkIG1hc2sKU2V0ZW52KCZmcGVudikgLi4uCio6IGZl
dGVzdGV4Y2VwdCgpID0gIDAgc3RhdHVzIGZsYWdzCj46IGZlZ2V0ZXhjZXB0
KCkgPSAgM2YgZW5hYmxlZAozOiBmZWdldGV4Y2VwdCgpID0gICAwIG1hc2sK
CjY0LUBAIC4vc3RjLWZlbnYyCj46IGZlZ2V0ZXhjZXB0KCkgPSAgM2YgZW5h
YmxlZAowOiBmZWdldGV4Y2VwdCgpID0gICAwIG1hc2sKR2V0ZW52KCZmcGVu
dikgLi4uClNldGVudihGRV9ERkxfRU5WKSAuLi4KPjogZmVnZXRleGNlcHQo
KSA9ICAgMCBlbmFibGVkCjE6IGZlZ2V0ZXhjZXB0KCkgPSAgM2QgbWFzawpS
YWlzZSBFeGNlcHRpb24hCio6IGZldGVzdGV4Y2VwdCgpID0gMjAgc3RhdHVz
IGZsYWdzCj46IGZlZ2V0ZXhjZXB0KCkgPSAgIDAgZW5hYmxlZAoyOiBmZWdl
dGV4Y2VwdCgpID0gIDNkIG1hc2sKU2V0ZW52KCZmcGVudikgLi4uCio6IGZl
dGVzdGV4Y2VwdCgpID0gIDAgc3RhdHVzIGZsYWdzCj46IGZlZ2V0ZXhjZXB0
KCkgPSAgM2YgZW5hYmxlZAozOiBmZWdldGV4Y2VwdCgpID0gICAwIG1hc2sK
CkxpbnV4OiAuLi4gdXNpbmcgZmVyYWlzZWV4Y2VwdCgpCkBAIC4vc3RjLWZl
bnYyCj46IGZlZ2V0ZXhjZXB0KCkgPSAgM2QgZW5hYmxlZAowOiBmZWdldGV4
Y2VwdCgpID0gICAwIG1hc2sKR2V0ZW52KCZmcGVudikgLi4uCk5PIFNldGVu
dihGRV9ERkxfRU5WKSAuLi4KPjogZmVnZXRleGNlcHQoKSA9ICAzZCBlbmFi
bGVkIDw9PT09IE9LCjE6IGZlZ2V0ZXhjZXB0KCkgPSAgIDAgbWFzawpSYWlz
ZSBFeGNlcHRpb24hCkZsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbiAoY29yZSBk
dW1wZWQpCgpAQCAuL3N0Yy1mZW52Mgo+OiBmZWdldGV4Y2VwdCgpID0gIDNk
IGVuYWJsZWQKMDogZmVnZXRleGNlcHQoKSA9ICAgMCBtYXNrCkdldGVudigm
ZnBlbnYpIC4uLgpTZXRlbnYoRkVfREZMX0VOVikgLi4uCj46IGZlZ2V0ZXhj
ZXB0KCkgPSAgIDAgZW5hYmxlZAoxOiBmZWdldGV4Y2VwdCgpID0gIDNkIG1h
c2sKUmFpc2UgRXhjZXB0aW9uIQoqOiBmZXRlc3RleGNlcHQoKSA9IDIwIHN0
YXR1cyBmbGFncwo+OiBmZWdldGV4Y2VwdCgpID0gICAwIGVuYWJsZWQKMjog
ZmVnZXRleGNlcHQoKSA9ICAzZCBtYXNrClNldGVudigmZnBlbnYpIC4uLgoq
OiBmZXRlc3RleGNlcHQoKSA9ICAwIHN0YXR1cyBmbGFncwo+OiBmZWdldGV4
Y2VwdCgpID0gIDNkIGVuYWJsZWQKMzogZmVnZXRleGNlcHQoKSA9ICAgMCBt
YXNrCgo9PT09PQoKQ3lnd2luOiAuLi4gdXNpbmcgZG91YmxlIGQgPSAxLjA7
IGxvbmcgbCA9IGQgKyAwLjQKNjQtQEAgLi9zdGMtZmVudjIKPjogZmVnZXRl
eGNlcHQoKSA9ICAzZiBlbmFibGVkCjA6IGZlZ2V0ZXhjZXB0KCkgPSAgIDAg
bWFzawpHZXRlbnYoJmZwZW52KSAuLi4KTk8gU2V0ZW52KEZFX0RGTF9FTlYp
IC4uLgo+OiBmZWdldGV4Y2VwdCgpID0gICAwIGVuYWJsZWQgIDw9PT09IFdy
b25nISBTZWUgYWJvdmUKMTogZmVnZXRleGNlcHQoKSA9ICAzZCBtYXNrClJh
aXNlIEV4Y2VwdGlvbiEKRmxvYXRpbmcgcG9pbnQgZXhjZXB0aW9uIChjb3Jl
IGR1bXBlZCkKCglAQCAuL3N0Yy1mZW52MgoJPjogZmVnZXRleGNlcHQoKSA9
ICAzZiBlbmFibGVkCgkwOiBmZWdldGV4Y2VwdCgpID0gICAwIG1hc2sKCUdl
dGVudigmZnBlbnYpIC4uLgoJTk8gU2V0ZW52KEZFX0RGTF9FTlYpIC4uLgoJ
PjogZmVnZXRleGNlcHQoKSA9ICAgMCBlbmFibGVkICA8PT09PSBXcm9uZyEg
U2VlIGFib3ZlCgkxOiBmZWdldGV4Y2VwdCgpID0gIDNkIG1hc2sKCVJhaXNl
IEV4Y2VwdGlvbiEKCSo6IGZldGVzdGV4Y2VwdCgpID0gMjAgc3RhdHVzIGZs
YWdzCgk+OiBmZWdldGV4Y2VwdCgpID0gICAwIGVuYWJsZWQKCTI6IGZlZ2V0
ZXhjZXB0KCkgPSAgM2QgbWFzawoJU2V0ZW52KCZmcGVudikgLi4uCgkqOiBm
ZXRlc3RleGNlcHQoKSA9ICAwIHN0YXR1cyBmbGFncwoJPjogZmVnZXRleGNl
cHQoKSA9ICAzZiBlbmFibGVkCgkzOiBmZWdldGV4Y2VwdCgpID0gICAwIG1h
c2sKCjY0LUBAIC4vc3RjLWZlbnYyCj46IGZlZ2V0ZXhjZXB0KCkgPSAgM2Yg
ZW5hYmxlZAowOiBmZWdldGV4Y2VwdCgpID0gICAwIG1hc2sKR2V0ZW52KCZm
cGVudikgLi4uClNldGVudihGRV9ERkxfRU5WKSAuLi4KPjogZmVnZXRleGNl
cHQoKSA9ICAgMCBlbmFibGVkCjE6IGZlZ2V0ZXhjZXB0KCkgPSAgM2QgbWFz
awpSYWlzZSBFeGNlcHRpb24hCio6IGZldGVzdGV4Y2VwdCgpID0gMjAgc3Rh
dHVzIGZsYWdzCj46IGZlZ2V0ZXhjZXB0KCkgPSAgIDAgZW5hYmxlZAoyOiBm
ZWdldGV4Y2VwdCgpID0gIDNkIG1hc2sKU2V0ZW52KCZmcGVudikgLi4uCio6
IGZldGVzdGV4Y2VwdCgpID0gIDAgc3RhdHVzIGZsYWdzCj46IGZlZ2V0ZXhj
ZXB0KCkgPSAgM2YgZW5hYmxlZAozOiBmZWdldGV4Y2VwdCgpID0gICAwIG1h
c2sKCkxpbnV4OiAuLi4gdXNpbmcgZG91YmxlIGQgPSAxLjA7IGxvbmcgbCA9
IGQgKyAwLjQKQEAgLi9zdGMtZmVudjIKPjogZmVnZXRleGNlcHQoKSA9ICAz
ZCBlbmFibGVkCjA6IGZlZ2V0ZXhjZXB0KCkgPSAgIDAgbWFzawpHZXRlbnYo
JmZwZW52KSAuLi4KTk8gU2V0ZW52KEZFX0RGTF9FTlYpIC4uLgo+OiBmZWdl
dGV4Y2VwdCgpID0gIDNkIGVuYWJsZWQgPD09PT0gT0sKMTogZmVnZXRleGNl
cHQoKSA9ICAgMCBtYXNrClJhaXNlIEV4Y2VwdGlvbiEKRmxvYXRpbmcgcG9p
bnQgZXhjZXB0aW9uIChjb3JlIGR1bXBlZCkKCkBAIC4vc3RjLWZlbnYyCj46
IGZlZ2V0ZXhjZXB0KCkgPSAgM2QgZW5hYmxlZAowOiBmZWdldGV4Y2VwdCgp
ID0gICAwIG1hc2sKR2V0ZW52KCZmcGVudikgLi4uClNldGVudihGRV9ERkxf
RU5WKSAuLi4KPjogZmVnZXRleGNlcHQoKSA9ICAgMCBlbmFibGVkCjE6IGZl
Z2V0ZXhjZXB0KCkgPSAgM2QgbWFzawpSYWlzZSBFeGNlcHRpb24hCio6IGZl
dGVzdGV4Y2VwdCgpID0gMjAgc3RhdHVzIGZsYWdzCj46IGZlZ2V0ZXhjZXB0
KCkgPSAgIDAgZW5hYmxlZAoyOiBmZWdldGV4Y2VwdCgpID0gIDNkIG1hc2sK
U2V0ZW52KCZmcGVudikgLi4uCio6IGZldGVzdGV4Y2VwdCgpID0gIDAgc3Rh
dHVzIGZsYWdzCj46IGZlZ2V0ZXhjZXB0KCkgPSAgM2QgZW5hYmxlZAozOiBm
ZWdldGV4Y2VwdCgpID0gICAwIG1hc2sKICovCg==


--=_484c67ba68c57a4aa8f401ecf59442e6
Content-Type: text/plain; charset=us-ascii


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
--=_484c67ba68c57a4aa8f401ecf59442e6--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019