delorie.com/archives/browse.cgi | search |
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--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |