Mail Archives: cygwin/2017/08/16/17:23:09
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=oKIiLAWJVQtc86eqh1RSUbpvvfxH1iN
|
| w31rNEcTSEtZRBlgpPjyjs4gEiRcHFqz9sRpyd8+G1HVKNkqSMsyMi0EzljHCDB5
|
| 6/QiehGfoYKjWlvLIyc0XoxrKivOeDsDSTZjUNFF1/3UjyqXzmVJfxMEZFSgmren
|
| S2mo+BDUBKHU=
|
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=qBg3L1G2p8/dbfDjDZ3982813a8=; b=O+zAz
|
| kYy2hfW6kv0ov6Bp26sBDFPPlUNKyawlnTanosuETboPW1mI0Z42Yp0RZdRnoFzE
|
| ADWTH7hQrEgU84PW/Fmf1x/qZnALDSF9yAY6Lyg+XPvxw2FHRd/BHSDvy+TmqnUB
|
| X+h3bSRejA1JFfy59X/jprRWfukljPuTboLFdI=
|
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-Virus-Found: | No
|
X-Spam-SWARE-Status: | No, score=-0.8 required=5.0 tests=AWL,BAYES_20,NORMAL_HTTP_TO_IP,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=5499, 2728, he, CentOS
|
X-HELO: | lb1-smtp-cloud7.xs4all.net
|
MIME-Version: | 1.0
|
Date: | Wed, 16 Aug 2017 23:22:31 +0200
|
From: | Houder <houder AT xs4all DOT nl>
|
To: | cygwin AT cygwin DOT com
|
Subject: | REVISITED: Signal delivered while blocked
|
Message-ID: | <c05c742f0f3809e6d1afb8fb2c646ad7@xs4all.nl>
|
X-Sender: | houder AT xs4all DOT nl
|
User-Agent: | XS4ALL Webmail
|
X-CMAE-Envelope: | MS4wfG32GGdm1XZRDZ3HoDJy/WU5IDOqRybhH/TZmYsQyuTR1xdD6yKcoQO5plO8eE4qMlvfMBg8thQMejEU85maLmM3USOXrgJ2lyrDr1DElYD9+1ohroDJ zA2GFqjNd3yyovo+B8FNcweNQ6BfTwYwsB/eXwLPfuI4k2v8W4sj3mn4dEzVeq/6lAH+CpsnMTwyUIOn8vAPpUjadVEwFIfAI80=
|
X-IsSubscribed: | yes
|
--=_d7aeeeeefeb20f7c12299336ebd4f5d6
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=US-ASCII;
format=flowed
Hi,
Please read this post first:
https://cygwin.com/ml/cygwin/2017-08/msg00048.html
( Signal delivered while blocked -- by Noah Misch, August 4th 2017 )
This post is not intended to "hijack" the post by Noah Misch; this post
only
ships an alternative (i.e. revised) testcase for the one by provided by
Noah
Misch.
The alternative testcase in fact consists of 2 testcases (2 files):
1. sigprocmask-exclusion4.c
2. sigprocmask-exclusion5.c
The 1st testcase uses sigaction() (i.c. sa_mask) in order to keep both
signal
handlers "out of each other's hair".
The 2nd testcase achieves this by protecting the "vital part" of each of
the
signal handlers using sigprocmask() ...
Using sigprocmask() and SIG_BLOCK (1st argument), the other signal is
added
to the signal mask at the start of the "vital part" of the signal
handler.
To restore the signal mask at the end of the "vital part" of the
handler, it
is possible to choose between the following options:
a. using sigprocmask() and SIG_SETMASK in order to reinstate the mask
as it
was at the beginning of the "vital part" of the handler
b. using sigprocmask() and SIG_UNBLOCK to remove the other signal from
the
signal mask
Both testcases confirm that Cygwin _sometimes_ delivers a signal,
although
the signal mask specifies (verified by the test case) it should not.
Typical runs:
64-@@ ./sigprocmask-exclusion4
-
pid=2728 inundating pid=3504 with SIGUSR1 and SIGCHLD
--
ERROR: handler2: No 1 running
cnt_usr1 = 424, cnt_chld = 305, cnt_int = 0
ERROR: handler2: No 1 running
cnt_usr1 = 1212, cnt_chld = 1262, cnt_int = 0
ERROR: handler: No 2 running
cnt_usr1 = 4341, cnt_chld = 3827, cnt_int = 0
ERROR: handler: No 2 running
cnt_usr1 = 5289, cnt_chld = 4171, cnt_int = 0
ERROR: handler: No 2 running
cnt_usr1 = 5499, cnt_chld = 4354, cnt_int = 0
ERROR: handler: No 2 running
cnt_usr1 = 6769, cnt_chld = 6295, cnt_int = 0
ERROR: handler2: nesting self!
cnt_usr1 = 10463, cnt_chld = 9243, cnt_int = 0
ERROR: handler2: nesting self!
cnt_usr1 = 12390, cnt_chld = 10869, cnt_int = 0
ERROR: handler: No 2 running
cnt_usr1 = 14046, cnt_chld = 14771, cnt_int = 0
ERROR: handler2: No 1 running
cnt_usr1 = 16111, cnt_chld = 15785, cnt_int = 0
cnt_usr1 = 16959, cnt_chld = 16790, cnt_int = 1
child done
xcnt_usr1 = 13295798, xcnt_chld = 13295797
64-@@
64-@@ ./sigprocmask-exclusion5
-
--
pid=4132 inundating pid=5976 with SIGUSR1 and SIGCHLD
ERROR: handler: No 2 running
cnt_usr1 = 1, cnt_chld = 2, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 228, cnt_chld = 6, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 1444, cnt_chld = 6, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 1585, cnt_chld = 6, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 1830, cnt_chld = 6, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 2588, cnt_chld = 6, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 2719, cnt_chld = 6, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 2795, cnt_chld = 6, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 3332, cnt_chld = 6, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 3340, cnt_chld = 6, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 3353, cnt_chld = 6, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 4130, cnt_chld = 6, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 4136, cnt_chld = 6, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 5256, cnt_chld = 6, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 6548, cnt_chld = 6, cnt_int = 0
ERROR: handler: nesting self!
cnt_usr1 = 8292, cnt_chld = 6, cnt_int = 0
cnt_usr1 = 11223, cnt_chld = 6, cnt_int = 1
child done
xcnt_usr1 = 4149717, xcnt_chld = 4149717
64-@@
Both runs were terminated by SIGINT (^C).
When running for an extended period (hours), the run-away stack did not
show
up (Linux).
Environment:
64-@@ uname -a
CYGWIN_NT-6.1 Seven 2.9.0(0.316/5/3) x86_64 Cygwin
64-@@ gcc --version
gcc (GCC) 5.4.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE
Regards,
Henri
--=_d7aeeeeefeb20f7c12299336ebd4f5d6
Content-Transfer-Encoding: base64
Content-Type: text/x-c;
name=sigprocmask-exclusion4.c
Content-Disposition: attachment;
filename=sigprocmask-exclusion4.c;
size=8685
Ly8gZ2NjIC1zdGQ9YzExIC1EX1BPU0lYX1NPVVJDRSAtbyBzaWdwcm9jbWFz
ay1leGNsdXNpb24gc2lncHJvY21hc2stZXhjbHVzaW9uLmMKLy8gZ2NjIC1z
dGQ9YzExIC1EX0RFRkFVTFRfU09VUkNFIC1vIHNpZ3Byb2NtYXNrLWV4Y2x1
c2lvbiBzaWdwcm9jbWFzay1leGNsdXNpb24uYwoKLyogLi4uIGNmbSAyCiBr
b3BpZSB2YW4gb3JpZ2luZWVsCiBnZXdpanppZ2Q6CiAgLSBmb3JiaWQsIHBl
cm1pdCB2ZXJ3aWpkZXJkIChmb3JiaWQgZW4gcGVybWl0IG9wZ2Vub21lbiBp
biBtYWluKCkgKQogIC0gaGFuZGxlcnM6IGdlZW4gYmV3ZXJraW5nIHZhbiBo
ZXQgc2lnbmFsIG1hc2sKICAtIHNpZ2FjdGlvbjogaGV0IGFuZGVyZSBzaWdu
YWwgd29yZHQgdmVyaGluZGVyZAogdGhpcyB0ZXN0IGNhc2UgZmFpbHMgb24g
Q3lnd2luOyBwZXJpb2QhCiAqLwoKLyoKICogRGVtb25zdHJhdGUgaW1wcm9w
ZXIgZGVsaXZlcnkgb2YgYSBibG9ja2VkIHNpZ25hbC4KICoKICogVGhpcyBw
cm9ncmFtIHByaW50cyAiRVJST1I6IGFscmVhZHkgZm9yYmlkZGVuIiBhbmQg
YWJvcnRzIHdpdGhpbiBvbmUKICogc2Vjb25kIG9uIHRoaXMgY29uZmlndXJh
dGlvbiAodW5hbWUgLXNydm0pOgogKiAgIENZR1dJTl9OVC0xMC4wIDIuNy4w
KDAuMzA2LzUvMykgMjAxNy0wMi0xMiAxMzoxOCB4ODZfNjQKICoKICogSXQg
cnVucyBpbmRlZmluaXRlbHkgKD42MDBzKSB3aXRob3V0IHRyb3VibGUgb24g
dGhlc2UgY29uZmlndXJhdGlvbnM6CiAqICAgQ1lHV0lOX05ULTYuMCAxLjcu
MjcoMC4yNzEvNS8zKSAyMDEzLTEyLTA5IDExOjU3IGk2ODYKICogICBMaW51
eCAzLjEwLjAtNTE0LjE2LjEuZWw3Lng4Nl82NCAjMSBTTVAgV2VkIEFwciAx
MiAxNTowNDoyNCBVVEMgMjAxNyB4ODZfNjQgW0NlbnRPUyA3XQogKiAgIEFJ
WCA3MTAwLTAzLTAyLTE0MTIKICogICBTdW5PUyA1LjEwIEdlbmVyaWNfMTQ3
MTQ3LTI2IHN1bjR1CiAqLwoKI2luY2x1ZGUgPHNldGptcC5oPgojaW5jbHVk
ZSA8c2lnbmFsLmg+CiNpbmNsdWRlIDxzdGRkZWYuaD4KI2luY2x1ZGUgPHN0
ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5o
PgoKc3RhdGljIHNpZ3NldF90IGJsb2NrLCB1bmJsb2NrOwpzdGF0aWMgY2hh
ciAqc3RhY2tfYmFzZTsKc3RhdGljIHNpZ2ptcF9idWYgam1wOwoKc3RhdGlj
IGludCBjbnRfdXNyMTsgc3RhdGljIGludCBjbnRfY2hsZCA9IDA7IHN0YXRp
YyBpbnQgY250X2ludCA9IDA7CgpzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21p
Y190IGkgPSAwOwpzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGogPSAw
OwoKc3RhdGljIGludCByID0gMDsKCnN0YXRpYyBwdHJkaWZmX3Qgc3RhY2tf
dXNhZ2VfcHJldiA9IDA7CgovKgogKiBTdGFydCBmcmVzaCBpbiBtYWluKCkg
d2hlbiB0aGUgc3RhY2sgZ2V0cyB0b28gZGVlcC4gIFRoaXMgaXMgbm90IGVz
c2VudGlhbAogKiB0byB0aGUgdGVzdCwgYnV0IGl0IGFsbG93cyBmb3IgbG9u
ZyBydW5zIHdpdGhvdXQgaHVnZSBSTElNSVRfU1RBQ0suCiAqLwpzdGF0aWMg
dm9pZApjbGVhcl9zdGFja19pZl9uZWVkZWQodm9pZCkKewoJY2hhciBzdGFj
a19wb3NpdGlvbjsKCXB0cmRpZmZfdCBzdGFja191c2FnZTsKCglzdGFja191
c2FnZSA9IHN0YWNrX2Jhc2UgLSAmc3RhY2tfcG9zaXRpb247CglpZiAoc3Rh
Y2tfdXNhZ2UgPCAwKQoJewoJCXB1dHMoIk5FR0FUSVZFIik7CgkJc3RhY2tf
dXNhZ2UgPSAtc3RhY2tfdXNhZ2U7Cgl9CgojaWYgMAppZiAoc3RhY2tfdXNh
Z2UgIT0gc3RhY2tfdXNhZ2VfcHJldikgewogICAgcHJpbnRmKCJzdGFja191
c2FnZTogJWRcbiIsIHN0YWNrX3VzYWdlKTsKICAgIHN0YWNrX3VzYWdlX3By
ZXYgPSBzdGFja191c2FnZTsKfQojZW5kaWYKCgkvL2lmIChzdGFja191c2Fn
ZSA+IDEwMjQgKiAxMDI0KQoJaWYgKHN0YWNrX3VzYWdlID4gNCAqIDEwMjQp
ICAvLyA0ID0gNDA5NiwgNSA9PiA1MTIwLCA2ID0+IDYxNDQKCXsKLy9zaWdw
cm9jbWFzayhTSUdfU0VUTUFTSywgJmJsb2NrLCBOVUxMKTsKCQlwdXRzKCJy
ZWxlYXNpbmcgZXhjZXNzIHN0YWNrIik7Ci8vYWJvcnQoKTsgLy8gaWYgU0Ff
Tk9ERUZFUiBoYXMgYmVlbiBzcGVjaWZpZWQKCQlzaWdsb25nam1wKGptcCwg
MSk7Cgl9Cn0KCnN0YXRpYyB2b2lkCmhhbmRsZXIoaW50IGFyZykKewoJY29u
c3QgY2hhciBlcnJtc2dbXSA9ICJFUlJPUjogaGFuZGxlcjogTm8gMiBydW5u
aW5nXG4iOwoJY29uc3QgY2hhciBlcnJtc2cyW10gPSAiRVJST1I6IGhhbmRs
ZXI6IG5lc3Rpbmcgc2VsZiFcbiI7CgljbnRfdXNyMSsrOwojaWYgZGVmaW5l
ZChfX0NZR1dJTl9fKQp7IHNpZ3NldF90IG9zZXQ7CnNpZ2VtcHR5c2V0KCZv
c2V0KTsKaW50IHJ2ID0gMDsKaWYgKHNpZ3Byb2NtYXNrKFNJR19CTE9DSywg
TlVMTCwgJm9zZXQpICE9IDApIC8vIGZldGNoIGN1cnJlbnQgbWFzay8gdmVy
aWZ5CglwZXJyb3IoInNpZ3Byb2NtYXNrIik7CmlmICggKHJ2ID0gc2lnaXNt
ZW1iZXIoJm9zZXQsIFNJR1VTUjEpKSA9PSAtMSkKCXBlcnJvcigic2lnaXNt
ZW1iZXIiKTsKaWYgKHJ2ID09IDApIHB1dHMgKCJoYW5kbGVyQjogVVNSMSBt
aXNzaW5nIik7CmlmICggKHJ2ID0gc2lnaXNtZW1iZXIoJm9zZXQsIFNJR0NI
TEQpKSA9PSAtMSkKCXBlcnJvcigic2lnaXNtZW1iZXIiKTsKaWYgKHJ2ID09
IDApIHB1dHMgKCJoYW5kbGVyQjogQ0hMRCBtaXNzaW5nIik7Cn0KI2VuZGlm
Ci8vcHV0cygiSCAgICIpOwoJaWYgKGkgPT0gMSkgewoJCXdyaXRlKDIsIGVy
cm1zZzIsIHNpemVvZihlcnJtc2cyKSAtIDEpOwpwcmludGYoImNudF91c3Ix
ID0gJWQsIGNudF9jaGxkID0gJWQsIGNudF9pbnQgPSAlZFxuIiwgY250X3Vz
cjEsIGNudF9jaGxkLCBjbnRfaW50KTsgLy8gbm90IHNhZmUKCQkvL2Fib3J0
KCk7Cgl9CglpZiAoaiA9PSAxKSB7CgkJd3JpdGUoMiwgZXJybXNnLCBzaXpl
b2YoZXJybXNnKSAtIDEpOwpwcmludGYoImNudF91c3IxID0gJWQsIGNudF9j
aGxkID0gJWQsIGNudF9pbnQgPSAlZFxuIiwgY250X3VzcjEsIGNudF9jaGxk
LCBjbnRfaW50KTsgLy8gbm90IHNhZmUKCQkvL2Fib3J0KCk7Cgl9CglpID0g
MTsKCWNsZWFyX3N0YWNrX2lmX25lZWRlZCgpOwoJdXNsZWVwKDUwMDApOwoJ
aSA9IDA7Ci8vcHV0cygiSC1lICAgIik7CiNpZiBkZWZpbmVkKF9fQ1lHV0lO
X18pCnsgc2lnc2V0X3Qgb3NldDsKc2lnZW1wdHlzZXQoJm9zZXQpOwppbnQg
cnYgPSAwOwppZiAoc2lncHJvY21hc2soU0lHX0JMT0NLLCBOVUxMLCAmb3Nl
dCkgIT0gMCkgLy8gZmV0Y2ggY3VycmVudCBtYXNrLyB2ZXJpZnkKCXBlcnJv
cigic2lncHJvY21hc2siKTsKaWYgKCAocnYgPSBzaWdpc21lbWJlcigmb3Nl
dCwgU0lHVVNSMSkpID09IC0xKQoJcGVycm9yKCJzaWdpc21lbWJlciIpOwpp
ZiAocnYgPT0gMCkgcHV0cyAoImhhbmRsZXJFOiBVU1IxIG1pc3NpbmciKTsK
aWYgKCAocnYgPSBzaWdpc21lbWJlcigmb3NldCwgU0lHQ0hMRCkpID09IC0x
KQoJcGVycm9yKCJzaWdpc21lbWJlciIpOwppZiAocnYgPT0gMCkgcHV0cyAo
ImhhbmRsZXJFOiBDSExEIG1pc3NpbmciKTsKfQojZW5kaWYKfQpzdGF0aWMg
dm9pZApoYW5kbGVyMihpbnQgYXJnKQp7Cgljb25zdCBjaGFyIGVycm1zZ1td
ID0gIkVSUk9SOiBoYW5kbGVyMjogTm8gMSBydW5uaW5nXG4iOwoJY29uc3Qg
Y2hhciBlcnJtc2cyW10gPSAiRVJST1I6IGhhbmRsZXIyOiBuZXN0aW5nIHNl
bGYhXG4iOwoJY250X2NobGQrKzsKI2lmIGRlZmluZWQoX19DWUdXSU5fXykK
eyBzaWdzZXRfdCBvc2V0OwpzaWdlbXB0eXNldCgmb3NldCk7CmludCBydiA9
IDA7CmlmIChzaWdwcm9jbWFzayhTSUdfQkxPQ0ssIE5VTEwsICZvc2V0KSAh
PSAwKSAvLyBmZXRjaCBjdXJyZW50IG1hc2svIHZlcmlmeQoJcGVycm9yKCJz
aWdwcm9jbWFzayIpOwppZiAoIChydiA9IHNpZ2lzbWVtYmVyKCZvc2V0LCBT
SUdVU1IxKSkgPT0gLTEpCglwZXJyb3IoInNpZ2lzbWVtYmVyIik7CmlmIChy
diA9PSAwKSBwdXRzICgiaGFuZGxlcjJCOiBVU1IxIG1pc3NpbmciKTsKaWYg
KCAocnYgPSBzaWdpc21lbWJlcigmb3NldCwgU0lHQ0hMRCkpID09IC0xKQoJ
cGVycm9yKCJzaWdpc21lbWJlciIpOwppZiAocnYgPT0gMCkgcHV0cyAoImhh
bmRsZXIyQjogQ0hMRCBtaXNzaW5nIik7Cn0KI2VuZGlmCi8vcHV0cygiICBI
MiIpOwoJaWYgKGogPT0gMSkgewoJCXdyaXRlKDIsIGVycm1zZzIsIHNpemVv
ZihlcnJtc2cyKSAtIDEpOwpwcmludGYoImNudF91c3IxID0gJWQsIGNudF9j
aGxkID0gJWQsIGNudF9pbnQgPSAlZFxuIiwgY250X3VzcjEsIGNudF9jaGxk
LCBjbnRfaW50KTsgLy8gbm90IHNhZmUKCQkvL2Fib3J0KCk7Cgl9CglpZiAo
aSA9PSAxKSB7CgkJd3JpdGUoMiwgZXJybXNnLCBzaXplb2YoZXJybXNnKSAt
IDEpOwpwcmludGYoImNudF91c3IxID0gJWQsIGNudF9jaGxkID0gJWQsIGNu
dF9pbnQgPSAlZFxuIiwgY250X3VzcjEsIGNudF9jaGxkLCBjbnRfaW50KTsg
Ly8gbm90IHNhZmUKCQkvL2Fib3J0KCk7Cgl9CglqID0gMTsKCWNsZWFyX3N0
YWNrX2lmX25lZWRlZCgpOwoJdXNsZWVwKDUwMDApOwoJaiA9IDA7Ci8vcHV0
cygiICBIMi1lIik7CiNpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCnsgc2lnc2V0
X3Qgb3NldDsKc2lnZW1wdHlzZXQoJm9zZXQpOwppbnQgcnYgPSAwOwppZiAo
c2lncHJvY21hc2soU0lHX0JMT0NLLCBOVUxMLCAmb3NldCkgIT0gMCkgLy8g
ZmV0Y2ggY3VycmVudCBtYXNrLyB2ZXJpZnkKCXBlcnJvcigic2lncHJvY21h
c2siKTsKaWYgKCAocnYgPSBzaWdpc21lbWJlcigmb3NldCwgU0lHVVNSMSkp
ID09IC0xKQoJcGVycm9yKCJzaWdpc21lbWJlciIpOwppZiAocnYgPT0gMCkg
cHV0cyAoImhhbmRsZXIyRTogVVNSMSBtaXNzaW5nIik7CmlmICggKHJ2ID0g
c2lnaXNtZW1iZXIoJm9zZXQsIFNJR0NITEQpKSA9PSAtMSkKCXBlcnJvcigi
c2lnaXNtZW1iZXIiKTsKaWYgKHJ2ID09IDApIHB1dHMgKCJoYW5kbGVyMkU6
IENITEQgbWlzc2luZyIpOwp9CiNlbmRpZgp9CgojaWYgMQpzdGF0aWMgdm9p
ZApoYW5kbGVyMyhpbnQgYXJnKSAvLyBub3RlOiBleGhpYml0cyByYWNpbmcg
YmV0d2VlbiBiYXNoIGFuZCBjaGlsZAp7CiAgICBjbnRfaW50Kys7CiAgICBw
cmludGYoImNudF91c3IxID0gJWQsIGNudF9jaGxkID0gJWQsIGNudF9pbnQg
PSAlZFxuIiwgY250X3VzcjEsIGNudF9jaGxkLCBjbnRfaW50KTsKfQojZW5k
aWYKCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKewoJY2hhciBz
dGFja19wb3NpdGlvbjsKCgkvKiBpbml0aWFsIHNpZ25hbCBtYXNrIHNldHVw
ICovCglyID0gc2lnZW1wdHlzZXQoJnVuYmxvY2spOwoKCXIgPSBzaWdmaWxs
c2V0KCZibG9jayk7CglyID0gc2lnZGVsc2V0KCZibG9jaywgU0lHVFJBUCk7
CglyID0gc2lnZGVsc2V0KCZibG9jaywgU0lHQUJSVCk7CglyID0gc2lnZGVs
c2V0KCZibG9jaywgU0lHSUxMKTsKCXIgPSBzaWdkZWxzZXQoJmJsb2NrLCBT
SUdGUEUpOwoJciA9IHNpZ2RlbHNldCgmYmxvY2ssIFNJR1NFR1YpOwoJciA9
IHNpZ2RlbHNldCgmYmxvY2ssIFNJR0JVUyk7CglyID0gc2lnZGVsc2V0KCZi
bG9jaywgU0lHU1lTKTsKCXIgPSBzaWdkZWxzZXQoJmJsb2NrLCBTSUdDT05U
KTsKCWlmIChyICE9IDApIHB1dHMoInJldHZhbDAiKTsKCglpZiAoc2lncHJv
Y21hc2soU0lHX1NFVE1BU0ssICZibG9jaywgTlVMTCkgIT0gMCkgLy8gZm9y
YmlkCgkJcGVycm9yKCJzaWdwcm9jbWFzayIpOwoKCS8qIFJlZ2lzdGVyIHNp
Z25hbCBoYW5kbGVycy4gIFByb2JsZW0gc29tZWhvdyByZXF1aXJlcyB0d28g
c2lnbmFscy4gKi8KCXsKCQlzdHJ1Y3Qgc2lnYWN0aW9uIGFjdCwgb2FjdDsK
Ci8vIHRoZSBzYV9tYXNrIGlzIG9ubHkgYXBwbGllZCBkdXJpbmcgdGhlIGV4
ZWN1dGlvbiBvZiB0aGUgaGFuZGxlcgoKCQlhY3Quc2FfaGFuZGxlciA9IGhh
bmRsZXI7CgkJciA9IHNpZ2VtcHR5c2V0KCZhY3Quc2FfbWFzayk7IC8vIGhv
d2V2ZXIgU0lHVVNSIGlzIGF1dG8gYWRkZWQgdG8gbWFzayBkdXJpbmcgZXhl
Y3V0aW9uIG9mIHRoZSBoYW5kbGVyLCBpcyBpdCBub3Q/CglyID0gc2lnYWRk
c2V0KCZhY3Quc2FfbWFzaywgU0lHQ0hMRCk7IC8vIGFkZGVkCgkJaWYgKHIg
IT0gMCkgcHV0cygicmV0dmFsMSIpOwoJCWFjdC5zYV9mbGFncyA9IDA7CgkJ
Ly9hY3Quc2FfZmxhZ3MgPSBTQV9OT0RFRkVSOyAvLyBiZSBzdHVwaWQKCQlp
ZiAoc2lnYWN0aW9uKFNJR1VTUjEsICZhY3QsICZvYWN0KSAhPSAwKQoJCQlw
ZXJyb3IoInNpZ2FjdGlvbiIpOwoKCQlzdHJ1Y3Qgc2lnYWN0aW9uIGFjdDIs
IG9hY3QyOwoKCQlhY3QyLnNhX2hhbmRsZXIgPSBoYW5kbGVyMjsKCQlyID0g
c2lnZW1wdHlzZXQoJmFjdDIuc2FfbWFzayk7CglyID0gc2lnYWRkc2V0KCZh
Y3QyLnNhX21hc2ssIFNJR1VTUjEpOyAvLyBhZGRlZAoJCWlmIChyICE9IDAp
IHB1dHMoInJldHZhbDIiKTsKCQlhY3QyLnNhX2ZsYWdzID0gMDsKCQkvL2Fj
dDIuc2FfZmxhZ3MgPSBTQV9OT0RFRkVSOyAvLyBiZSBzdHVwaWQKCQlpZiAo
c2lnYWN0aW9uKFNJR0NITEQsICZhY3QyLCAmb2FjdDIpICE9IDApCgkJCXBl
cnJvcigic2lnYWN0aW9uIik7CgojaWYgMQpzdHJ1Y3Qgc2lnYWN0aW9uIGFj
dDMsIG9hY3QzOwoKYWN0My5zYV9oYW5kbGVyID0gaGFuZGxlcjM7CnIgPSBz
aWdmaWxsc2V0KCZhY3QzLnNhX21hc2spOwpyID0gc2lnZGVsc2V0KCZhY3Qz
LnNhX21hc2ssIFNJR0lOVCk7IC8vIHJlbW92ZQppZiAociAhPSAwKSBwdXRz
KCJyZXR2YWwzIik7CmFjdDMuc2FfZmxhZ3MgPSBTQV9SRVNFVEhBTkQ7Cmlm
IChzaWdhY3Rpb24oU0lHSU5ULCAmYWN0MywgJm9hY3QzKSAhPSAwKQoJcGVy
cm9yKCJzaWdhY3Rpb24iKTsKI2VuZGlmCgl9CgoJLyogc3RhcnQgYSBjaGls
ZCB0byBpbnVuZGF0ZSBtZSB3aXRoIHNpZ25hbHMgKi8KCXsKCQlwaWRfdCBw
aWQsIHBwaWQ7CgkJcGlkID0gZm9yaygpOwoJCXN3aXRjaCAocGlkKQoJCXsK
CQkJY2FzZSAtMToKCQkJCXBlcnJvcigiZm9yayIpOwoJCQkJcmV0dXJuIDE7
CgkJCWNhc2UgMDoKCQkJCXBwaWQgPSBnZXRwcGlkKCk7CgkJCQlwcmludGYo
InBpZD0lZCBpbnVuZGF0aW5nIHBpZD0lZCB3aXRoIFNJR1VTUjEgYW5kIFNJ
R0NITERcbiIsCgkJCQkJICAgZ2V0cGlkKCksIHBwaWQpOwojaWYgMAoJCQkJ
d2hpbGUgKGtpbGwocHBpZCwgcmFuZG9tKCkgJSAyID8gU0lHVVNSMSA6IFNJ
R0NITEQpID09IDApCgkJCQkJOwojZWxzZQp2b2xhdGlsZSBpbnQgaSA9IDA7
Ci8vdm9sYXRpbGUgaW50IGkgPSAxOwppbnQgeGNudF91c3IxID0gMDsgaW50
IHhjbnRfY2hsZCA9IDA7CndoaWxlICgxKSB7CiAgICBpID0gaSA/IDAgOiAx
OwogICAgaWYgKDEpIHsKICAgICAgICBpZiAoa2lsbChwcGlkLCBTSUdDSExE
KSAhPSAwKSBicmVhazsKICAgICAgICB4Y250X2NobGQrKzsKICAgICAgICBp
ZiAoa2lsbChwcGlkLCBTSUdVU1IxKSAhPSAwKSBicmVhazsgLy8gTE9TVCEg
V0hZPwogICAgICAgIHhjbnRfdXNyMSsrOwogICAgICAgIGlmIChraWxsKHBw
aWQsIFNJR1VTUjEpICE9IDApIGJyZWFrOyAvLyBMT1NUISBXSFk/CiAgICAg
ICAgeGNudF91c3IxKys7CiAgICAgICAgaWYgKGtpbGwocHBpZCwgU0lHQ0hM
RCkgIT0gMCkgYnJlYWs7CiAgICAgICAgeGNudF9jaGxkKys7CiAgICB9IGVs
c2UgewogICAgICAgIGlmIChraWxsKHBwaWQsIFNJR1VTUjEpICE9IDApIGJy
ZWFrOyAvLyBMT1NUISBXSFk/CiAgICAgICAgeGNudF91c3IxKys7CiAgICAg
ICAgaWYgKGtpbGwocHBpZCwgU0lHQ0hMRCkgIT0gMCkgYnJlYWs7CiAgICAg
ICAgeGNudF9jaGxkKys7CiAgICAgICAgaWYgKGtpbGwocHBpZCwgU0lHQ0hM
RCkgIT0gMCkgYnJlYWs7CiAgICAgICAgeGNudF9jaGxkKys7CiAgICAgICAg
aWYgKGtpbGwocHBpZCwgU0lHVVNSMSkgIT0gMCkgYnJlYWs7IC8vIExPU1Qh
IFdIWT8KICAgICAgICB4Y250X3VzcjErKzsKICAgIH0KI2lmIGRlZmluZWQo
X19saW51eF9fKQogICAgdXNsZWVwKDEwMDAwKTsgLy8gaWYgZGlzYWJsZWQs
IGNudF9jaGxkIHN0YXlzIHplcm8gPz8/Pz8KICAgIC8vIGVuYWJsZWQ6IDIg
OiAxLCBkaXNhYmxlZDogMTAwLjAwMCA6IDEKI2VuZGlmCiNpZiBkZWZpbmVk
KF9fQ1lHV0lOX18pCiAgICAvL3VzbGVlcCgxMDAwMCk7IC8vIGlmIGRpc2Fi
bGVkLCBpdCB3aWxsIGZhaWwgKGFib3J0KSBhZnRlciBzb21lIHRpbWUgKC4u
LiBuZXN0aW5nPykKICAgIC8vIGVuYWJsZWQ6IDEwIDogMSwgZGlzYWJsZWQ6
IDEwMDAgOiAxCiNlbmRpZgp9CiNlbmRpZgoJCQkJcHV0cygiY2hpbGQgZG9u
ZSIpOwpwcmludGYoInhjbnRfdXNyMSA9ICVkLCB4Y250X2NobGQgPSAlZFxu
IiwgeGNudF91c3IxLCB4Y250X2NobGQpOwoJCQkJcmV0dXJuIDA7CgkJfQoJ
fQoKCS8qIGxvb3AgZm9yZXZlciB3aGlsZSB3ZSByZWNlaXZlIHNpZ25hbHMg
Ki8KCXN0YWNrX2Jhc2UgPSAmc3RhY2tfcG9zaXRpb247CglzaWdzZXRqbXAo
am1wLCAxKTsKCglmb3IgKDs7KQoJewpwdXRzKCItIik7CgkJaWYgKHNpZ3By
b2NtYXNrKFNJR19TRVRNQVNLLCAmdW5ibG9jaywgTlVMTCkgIT0gMCkgLy8g
cGVybWl0CgkJCXBlcnJvcigic2lncHJvY21hc2siKTsKcHV0cygiLS0iKTsK
CQl1c2xlZXAoMTAwMCk7CnB1dHMoIi0tLSIpOwoJCWlmIChzaWdwcm9jbWFz
ayhTSUdfU0VUTUFTSywgJmJsb2NrLCBOVUxMKSAhPSAwKSAvLyBmb3JiaWQK
CQkJcGVycm9yKCJzaWdwcm9jbWFzayIpOwpwdXRzKCItLS0tIik7Cgl9Cn0K
--=_d7aeeeeefeb20f7c12299336ebd4f5d6
Content-Transfer-Encoding: base64
Content-Type: text/x-c;
name=sigprocmask-exclusion5.c
Content-Disposition: attachment;
filename=sigprocmask-exclusion5.c;
size=10252
Ly8gZ2NjIC1zdGQ9YzExIC1EX1BPU0lYX1NPVVJDRSAtbyBzaWdwcm9jbWFz
ay1leGNsdXNpb24gc2lncHJvY21hc2stZXhjbHVzaW9uLmMKLy8gZ2NjIC1z
dGQ9YzExIC1EX0RFRkFVTFRfU09VUkNFIC1vIHNpZ3Byb2NtYXNrLWV4Y2x1
c2lvbiBzaWdwcm9jbWFzay1leGNsdXNpb24uYwoKLy8gaWYgZGVmaW5lZCB0
aGFuIHRoZSBvcmlnaW5hbCBzaWduYWwgbWFzayBpcyByZXN0b3JlZChTSUdf
U0VUTUFTSyk7IG90aGVyd2lzZSB0aGUgc2lnbmFsIGlzIHJlbW92ZWQgZnJv
bSB0aGUgbWFzayAoU0lHX1VOQkxPQ0spCi8vI2RlZmluZSBvcHRpb24xCgov
KiAuLi4gY2ZtIDMKIGtvcGllIHZhbiBvcmlnaW5lZWwKIGdld2lqemlnZDoK
ICAtIGZvcmJpZCwgcGVybWl0IHZlcndpamRlcmQgKGZvcmJpZCBlbiBwZXJt
aXQgb3BnZW5vbWVuIGluIG1haW4oKSApCiAgLSBoYW5kbGVyczogdG9ldm9l
Z2luZyBlbiB2ZXJ3aWpkZXJpbmcgdmFuIGhldCBhbmRlcmUgc2lnbmFsCiAg
IC0gb3B0aW9uczogMS4gZWl0aGVyIHJlc3RvcmUgb3JpZ2luYWwgbWFzayAo
dXNpbmcgU0lHX1NFVE1BU0spIG9yIDIuIHJlbW92YWwgc2lnbmFsIGZyb20g
bWFzayAodXNpbmcgU0lHX1VOQkxPQ0spCiAgIC0gMXN0IG9wdGlvbiBmYWls
cyBhZnRlciBhIGxvbmcgd2hpbGUsIDJuZCBvcHRpb24gZmFpbHMgbW9zdGx5
IGZhaWxzIGltbWVkaWF0ZWx5CiAgLSBzaWdhY3Rpb246IGhldCBhbmRlcmUg
c2lnbmFsIHdvcmR0IG5pZXQgdmVyaGluZGVyZAogdGhpcyB0ZXN0IGNhc2Ug
ZmFpbHMgb24gQ3lnd2luOyBpbW1lZGlhdGVseSB3aGVuIHRoZSAybmQgb3B0
aW9uIGlzIHVzZWQsIGFmdGVyIHNvbWUgdGltZSB3aGVuIHRoZSAxc3Qgb3B0
aW9uIGlzIHVzZWQKICovCgovKgogKiBEZW1vbnN0cmF0ZSBpbXByb3BlciBk
ZWxpdmVyeSBvZiBhIGJsb2NrZWQgc2lnbmFsLgogKgogKiBUaGlzIHByb2dy
YW0gcHJpbnRzICJFUlJPUjogYWxyZWFkeSBmb3JiaWRkZW4iIGFuZCBhYm9y
dHMgd2l0aGluIG9uZQogKiBzZWNvbmQgb24gdGhpcyBjb25maWd1cmF0aW9u
ICh1bmFtZSAtc3J2bSk6CiAqICAgQ1lHV0lOX05ULTEwLjAgMi43LjAoMC4z
MDYvNS8zKSAyMDE3LTAyLTEyIDEzOjE4IHg4Nl82NAogKgogKiBJdCBydW5z
IGluZGVmaW5pdGVseSAoPjYwMHMpIHdpdGhvdXQgdHJvdWJsZSBvbiB0aGVz
ZSBjb25maWd1cmF0aW9uczoKICogICBDWUdXSU5fTlQtNi4wIDEuNy4yNygw
LjI3MS81LzMpIDIwMTMtMTItMDkgMTE6NTcgaTY4NgogKiAgIExpbnV4IDMu
MTAuMC01MTQuMTYuMS5lbDcueDg2XzY0ICMxIFNNUCBXZWQgQXByIDEyIDE1
OjA0OjI0IFVUQyAyMDE3IHg4Nl82NCBbQ2VudE9TIDddCiAqICAgQUlYIDcx
MDAtMDMtMDItMTQxMgogKiAgIFN1bk9TIDUuMTAgR2VuZXJpY18xNDcxNDct
MjYgc3VuNHUKICovCgojaW5jbHVkZSA8c2V0am1wLmg+CiNpbmNsdWRlIDxz
aWduYWwuaD4KI2luY2x1ZGUgPHN0ZGRlZi5oPgojaW5jbHVkZSA8c3RkaW8u
aD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8dW5pc3RkLmg+Cgpz
dGF0aWMgc2lnc2V0X3QgYmxvY2ssIHVuYmxvY2s7CnN0YXRpYyBjaGFyICpz
dGFja19iYXNlOwpzdGF0aWMgc2lnam1wX2J1ZiBqbXA7CgpzdGF0aWMgaW50
IGNudF91c3IxOyBzdGF0aWMgaW50IGNudF9jaGxkID0gMDsgc3RhdGljIGlu
dCBjbnRfaW50ID0gMDsKCnN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3Qg
aSA9IDA7CnN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgaiA9IDA7Cgpz
dGF0aWMgaW50IHIgPSAwOwoKc3RhdGljIHB0cmRpZmZfdCBzdGFja191c2Fn
ZV9wcmV2ID0gMDsKCi8qCiAqIFN0YXJ0IGZyZXNoIGluIG1haW4oKSB3aGVu
IHRoZSBzdGFjayBnZXRzIHRvbyBkZWVwLiAgVGhpcyBpcyBub3QgZXNzZW50
aWFsCiAqIHRvIHRoZSB0ZXN0LCBidXQgaXQgYWxsb3dzIGZvciBsb25nIHJ1
bnMgd2l0aG91dCBodWdlIFJMSU1JVF9TVEFDSy4KICovCnN0YXRpYyB2b2lk
CmNsZWFyX3N0YWNrX2lmX25lZWRlZCh2b2lkKQp7CgljaGFyIHN0YWNrX3Bv
c2l0aW9uOwoJcHRyZGlmZl90IHN0YWNrX3VzYWdlOwoKCXN0YWNrX3VzYWdl
ID0gc3RhY2tfYmFzZSAtICZzdGFja19wb3NpdGlvbjsKCWlmIChzdGFja191
c2FnZSA8IDApCgl7CgkJcHV0cygiTkVHQVRJVkUiKTsKCQlzdGFja191c2Fn
ZSA9IC1zdGFja191c2FnZTsKCX0KCiNpZiAwCmlmIChzdGFja191c2FnZSAh
PSBzdGFja191c2FnZV9wcmV2KSB7CiAgICBwcmludGYoInN0YWNrX3VzYWdl
OiAlZFxuIiwgc3RhY2tfdXNhZ2UpOwogICAgc3RhY2tfdXNhZ2VfcHJldiA9
IHN0YWNrX3VzYWdlOwp9CiNlbmRpZgoKCS8vaWYgKHN0YWNrX3VzYWdlID4g
MTAyNCAqIDEwMjQpCglpZiAoc3RhY2tfdXNhZ2UgPiA1ICogMTAyNCkgLy8g
NSA9PiA1MTIwLCA2ID0+IDYxNDQKCXsKLy9zaWdwcm9jbWFzayhTSUdfU0VU
TUFTSywgJmJsb2NrLCBOVUxMKTsKCQlwdXRzKCJyZWxlYXNpbmcgZXhjZXNz
IHN0YWNrIik7Ci8vYWJvcnQoKTsgLy8gaWYgU0FfTk9ERUZFUiBoYXMgYmVl
biBzcGVjaWZpZWQKCQlzaWdsb25nam1wKGptcCwgMSk7Cgl9Cn0KCnN0YXRp
YyB2b2lkCmhhbmRsZXIoaW50IGFyZykKewoJY29uc3QgY2hhciBlcnJtc2db
XSA9ICJFUlJPUjogaGFuZGxlcjogTm8gMiBydW5uaW5nXG4iOwoJY29uc3Qg
Y2hhciBlcnJtc2cyW10gPSAiRVJST1I6IGhhbmRsZXI6IG5lc3Rpbmcgc2Vs
ZiFcbiI7CgoJc2lnc2V0X3Qgc2V0LCBvc2V0OwoJcj0gc2lnZW1wdHlzZXQo
JnNldCk7CglyID0gc2lnYWRkc2V0KCZzZXQsIFNJR0NITEQpOwoJaWYgKHIg
IT0gMCkgcHV0cygicmV0dmFsSDEiKTsKCWlmIChzaWdwcm9jbWFzayhTSUdf
QkxPQ0ssICZzZXQsICZvc2V0KSAhPSAwKSAvLyB2b2VnIHRvZQoJCXBlcnJv
cigic2lncHJvY21hc2siKTsKCgljbnRfdXNyMSsrOwojaWYgZGVmaW5lZChf
X0NZR1dJTl9fKQp7IHNpZ3NldF90IG9zZXQ7CnNpZ2VtcHR5c2V0KCZvc2V0
KTsKaW50IHJ2ID0gMDsKaWYgKHNpZ3Byb2NtYXNrKFNJR19CTE9DSywgTlVM
TCwgJm9zZXQpICE9IDApIC8vIGZldGNoIGN1cnJlbnQgbWFzay8gdmVyaWZ5
CglwZXJyb3IoInNpZ3Byb2NtYXNrIik7CmlmICggKHJ2ID0gc2lnaXNtZW1i
ZXIoJm9zZXQsIFNJR1VTUjEpKSA9PSAtMSkKCXBlcnJvcigic2lnaXNtZW1i
ZXIiKTsKaWYgKHJ2ID09IDApIHB1dHMgKCJoYW5kbGVyQjogVVNSMSBtaXNz
aW5nIik7CmlmICggKHJ2ID0gc2lnaXNtZW1iZXIoJm9zZXQsIFNJR0NITEQp
KSA9PSAtMSkKCXBlcnJvcigic2lnaXNtZW1iZXIiKTsKaWYgKHJ2ID09IDAp
IHB1dHMgKCJoYW5kbGVyQjogQ0hMRCBtaXNzaW5nIik7Cn0KI2VuZGlmCi8v
cHV0cygiSCAgIik7CglpZiAoaSA9PSAxKSB7CgkJd3JpdGUoMiwgZXJybXNn
Miwgc2l6ZW9mKGVycm1zZzIpIC0gMSk7CnByaW50ZigiY250X3VzcjEgPSAl
ZCwgY250X2NobGQgPSAlZCwgY250X2ludCA9ICVkXG4iLCBjbnRfdXNyMSwg
Y250X2NobGQsIGNudF9pbnQpOyAvLyBub3Qgc2FmZQoJCS8vYWJvcnQoKTsK
CX0KCWlmIChqID09IDEpIHsKCQl3cml0ZSgyLCBlcnJtc2csIHNpemVvZihl
cnJtc2cpIC0gMSk7Ci8vIHdob2EsIG5vdCBzaG93biAuLi4gPz8/Pz8KcHJp
bnRmKCJjbnRfdXNyMSA9ICVkLCBjbnRfY2hsZCA9ICVkLCBjbnRfaW50ID0g
JWRcbiIsIGNudF91c3IxLCBjbnRfY2hsZCwgY250X2ludCk7IC8vIG5vdCBz
YWZlCgkJLy9hYm9ydCgpOwoJfQoJaSA9IDE7CgljbGVhcl9zdGFja19pZl9u
ZWVkZWQoKTsKCXVzbGVlcCg1MDAwKTsKCWkgPSAwOwovL3B1dHMoIkgtZSAg
ICIpOwojaWYgZGVmaW5lZChfX0NZR1dJTl9fKQp7IHNpZ3NldF90IG9zZXQ7
CnNpZ2VtcHR5c2V0KCZvc2V0KTsKaW50IHJ2ID0gMDsKaWYgKHNpZ3Byb2Nt
YXNrKFNJR19CTE9DSywgTlVMTCwgJm9zZXQpICE9IDApIC8vIGZldGNoIGN1
cnJlbnQgbWFzay8gdmVyaWZ5CglwZXJyb3IoInNpZ3Byb2NtYXNrIik7Cmlm
ICggKHJ2ID0gc2lnaXNtZW1iZXIoJm9zZXQsIFNJR1VTUjEpKSA9PSAtMSkK
CXBlcnJvcigic2lnaXNtZW1iZXIiKTsKaWYgKHJ2ID09IDApIHB1dHMgKCJo
YW5kbGVyRTogVVNSMSBtaXNzaW5nIik7CmlmICggKHJ2ID0gc2lnaXNtZW1i
ZXIoJm9zZXQsIFNJR0NITEQpKSA9PSAtMSkKCXBlcnJvcigic2lnaXNtZW1i
ZXIiKTsKaWYgKHJ2ID09IDApIHB1dHMgKCJoYW5kbGVyRTogQ0hMRCBtaXNz
aW5nIik7Cn0KI2VuZGlmCgojaWYgZGVmaW5lZChvcHRpb24xKQoJaWYgKHNp
Z3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmb3NldCwgTlVMTCkgIT0gMCkgLy8g
aGVyc3RlbAoJCXBlcnJvcigic2lncHJvY21hc2siKTsKI2Vsc2UKCXIgPSBz
aWdkZWxzZXQoJnNldCwgU0lHQ0hMRCk7CglpZiAociAhPSAwKSBwdXRzKCJy
ZXR2YWxIMWIiKTsKCWlmIChzaWdwcm9jbWFzayhTSUdfVU5CTE9DSywgJnNl
dCwgTlVMTCkgIT0gMCkgLy8gdmVyd2lqZGVyCgkJcGVycm9yKCJzaWdwcm9j
bWFzayIpOwoJCQkJICAvLyBDeWd3aW46IGFib3J0cywgYWxtb3N0IGltbWVk
aWF0ZWx5CiNlbmRpZgp9CnN0YXRpYyB2b2lkCmhhbmRsZXIyKGludCBhcmcp
CnsKCWNvbnN0IGNoYXIgZXJybXNnW10gPSAiRVJST1I6IGhhbmRsZXIyOiBO
byAxIHJ1bm5pbmdcbiI7Cgljb25zdCBjaGFyIGVycm1zZzJbXSA9ICJFUlJP
UjogaGFuZGxlcjI6IG5lc3Rpbmcgc2VsZiFcbiI7CgoJc2lnc2V0X3Qgc2V0
LCBvc2V0OwoJciA9IHNpZ2VtcHR5c2V0KCZzZXQpOwoJciA9IHNpZ2FkZHNl
dCgmc2V0LCBTSUdVU1IxKTsKCWlmIChyICE9IDApIHB1dHMoInJldHZhbEgy
Iik7CglpZiAoc2lncHJvY21hc2soU0lHX0JMT0NLLCAmc2V0LCAmb3NldCkg
IT0gMCkgLy8gdm9lZyB0b2UKCQlwZXJyb3IoInNpZ3Byb2NtYXNrIik7CgoJ
Y250X2NobGQrKzsKI2lmIGRlZmluZWQoX19DWUdXSU5fXykKeyBzaWdzZXRf
dCBvc2V0OwpzaWdlbXB0eXNldCgmb3NldCk7CmludCBydiA9IDA7CmlmIChz
aWdwcm9jbWFzayhTSUdfQkxPQ0ssIE5VTEwsICZvc2V0KSAhPSAwKSAvLyBm
ZXRjaCBjdXJyZW50IG1hc2svIHZlcmlmeQoJcGVycm9yKCJzaWdwcm9jbWFz
ayIpOwppZiAoIChydiA9IHNpZ2lzbWVtYmVyKCZvc2V0LCBTSUdVU1IxKSkg
PT0gLTEpCglwZXJyb3IoInNpZ2lzbWVtYmVyIik7CmlmIChydiA9PSAwKSBw
dXRzICgiaGFuZGxlcjJCOiBVU1IxIG1pc3NpbmciKTsKaWYgKCAocnYgPSBz
aWdpc21lbWJlcigmb3NldCwgU0lHQ0hMRCkpID09IC0xKQoJcGVycm9yKCJz
aWdpc21lbWJlciIpOwppZiAocnYgPT0gMCkgcHV0cyAoImhhbmRsZXIyQjog
Q0hMRCBtaXNzaW5nIik7Cn0KI2VuZGlmCi8vcHV0cygiICBIMiIpOwoJaWYg
KGogPT0gMSkgewoJCXdyaXRlKDIsIGVycm1zZzIsIHNpemVvZihlcnJtc2cy
KSAtIDEpOwpwcmludGYoImNudF91c3IxID0gJWQsIGNudF9jaGxkID0gJWQs
IGNudF9pbnQgPSAlZFxuIiwgY250X3VzcjEsIGNudF9jaGxkLCBjbnRfaW50
KTsgLy8gbm90IHNhZmUKCQkvL2Fib3J0KCk7Cgl9CglpZiAoaSA9PSAxKSB7
CgkJd3JpdGUoMiwgZXJybXNnLCBzaXplb2YoZXJybXNnKSAtIDEpOwpwcmlu
dGYoImNudF91c3IxID0gJWQsIGNudF9jaGxkID0gJWQsIGNudF9pbnQgPSAl
ZFxuIiwgY250X3VzcjEsIGNudF9jaGxkLCBjbnRfaW50KTsgLy8gbm90IHNh
ZmUKCQkvL2Fib3J0KCk7Cgl9CglqID0gMTsKCWNsZWFyX3N0YWNrX2lmX25l
ZWRlZCgpOwoJdXNsZWVwKDUwMDApOwoJaiA9IDA7Ci8vcHV0cygiICBIMi1l
Iik7CiNpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCnsgc2lnc2V0X3Qgb3NldDsK
c2lnZW1wdHlzZXQoJm9zZXQpOwppbnQgcnYgPSAwOwppZiAoc2lncHJvY21h
c2soU0lHX0JMT0NLLCBOVUxMLCAmb3NldCkgIT0gMCkgLy8gZmV0Y2ggY3Vy
cmVudCBtYXNrLyB2ZXJpZnkKCXBlcnJvcigic2lncHJvY21hc2siKTsKaWYg
KCAocnYgPSBzaWdpc21lbWJlcigmb3NldCwgU0lHVVNSMSkpID09IC0xKQoJ
cGVycm9yKCJzaWdpc21lbWJlciIpOwppZiAocnYgPT0gMCkgcHV0cyAoImhh
bmRsZXIyRTogVVNSMSBtaXNzaW5nIik7CmlmICggKHJ2ID0gc2lnaXNtZW1i
ZXIoJm9zZXQsIFNJR0NITEQpKSA9PSAtMSkKCXBlcnJvcigic2lnaXNtZW1i
ZXIiKTsKaWYgKHJ2ID09IDApIHB1dHMgKCJoYW5kbGVyMkU6IENITEQgbWlz
c2luZyIpOwp9CiNlbmRpZgoKI2lmIGRlZmluZWQob3B0aW9uMSkKCWlmIChz
aWdwcm9jbWFzayhTSUdfU0VUTUFTSywgJm9zZXQsIE5VTEwpICE9IDApIC8v
IGhlcnN0ZWwKCQlwZXJyb3IoInNpZ3Byb2NtYXNrIik7CiNlbHNlCglyID0g
c2lnZGVsc2V0KCZzZXQsIFNJR1VTUjEpOwoJaWYgKHIgIT0gMCkgcHV0cygi
cmV0dmFsSDJiIik7CglpZiAoc2lncHJvY21hc2soU0lHX1VOQkxPQ0ssICZz
ZXQsIE5VTEwpICE9IDApIC8vIHZlcndpamRlcgoJCXBlcnJvcigic2lncHJv
Y21hc2siKTsKI2VuZGlmCn0KCiNpZiAxCnN0YXRpYyB2b2lkCmhhbmRsZXIz
KGludCBhcmcpIC8vIG5vdGU6IGV4aGliaXRzIHJhY2luZyBiZXR3ZWVuIGJh
c2ggYW5kIGNoaWxkCnsKICAgIGNudF9pbnQrKzsKICAgIHByaW50ZigiY250
X3VzcjEgPSAlZCwgY250X2NobGQgPSAlZCwgY250X2ludCA9ICVkXG4iLCBj
bnRfdXNyMSwgY250X2NobGQsIGNudF9pbnQpOwp9CiNlbmRpZgoKaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQp7CgljaGFyIHN0YWNrX3Bvc2l0
aW9uOwoKCS8qIGluaXRpYWwgc2lnbmFsIG1hc2sgc2V0dXAgKi8KCXIgPSBz
aWdlbXB0eXNldCgmdW5ibG9jayk7CgoJciA9IHNpZ2ZpbGxzZXQoJmJsb2Nr
KTsKCXIgPSBzaWdkZWxzZXQoJmJsb2NrLCBTSUdUUkFQKTsKCXIgPSBzaWdk
ZWxzZXQoJmJsb2NrLCBTSUdBQlJUKTsKCXIgPSBzaWdkZWxzZXQoJmJsb2Nr
LCBTSUdJTEwpOwoJciA9IHNpZ2RlbHNldCgmYmxvY2ssIFNJR0ZQRSk7Cgly
ID0gc2lnZGVsc2V0KCZibG9jaywgU0lHU0VHVik7CglyID0gc2lnZGVsc2V0
KCZibG9jaywgU0lHQlVTKTsKCXIgPSBzaWdkZWxzZXQoJmJsb2NrLCBTSUdT
WVMpOwoJciA9IHNpZ2RlbHNldCgmYmxvY2ssIFNJR0NPTlQpOwoJaWYgKHIg
IT0gMCkgcHV0cygicmV0dmFsMCIpOwoKCWlmIChzaWdwcm9jbWFzayhTSUdf
U0VUTUFTSywgJmJsb2NrLCBOVUxMKSAhPSAwKSAvLyBmb3JiaWQKCQlwZXJy
b3IoInNpZ3Byb2NtYXNrIik7CgoJLyogUmVnaXN0ZXIgc2lnbmFsIGhhbmRs
ZXJzLiAgUHJvYmxlbSBzb21laG93IHJlcXVpcmVzIHR3byBzaWduYWxzLiAq
LwoJewoJCXN0cnVjdCBzaWdhY3Rpb24gYWN0LCBvYWN0OwoKLy8gdGhlIHNh
X21hc2sgaXMgb25seSBhcHBsaWVkIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9m
IHRoZSBoYW5kbGVyCgoJCWFjdC5zYV9oYW5kbGVyID0gaGFuZGxlcjsKCQly
ID0gc2lnZW1wdHlzZXQoJmFjdC5zYV9tYXNrKTsgLy8gaG93ZXZlciBTSUdV
U1IgaXMgYXV0byBhZGRlZCB0byBtYXNrIGR1cmluZyBleGVjdXRpb24gb2Yg
dGhlIGhhbmRsZXIsIGlzIGl0IG5vdD8KLy8gZG8gaXQgaW4gdGhlIGhhbmRs
ZXIKCS8vciA9IHNpZ2FkZHNldCgmYWN0LnNhX21hc2ssIFNJR0NITEQpOyAv
LyBhZGRlZAoJCWlmIChyICE9IDApIHB1dHMoInJldHZhbDEiKTsKCQlhY3Qu
c2FfZmxhZ3MgPSAwOwoJCS8vYWN0LnNhX2ZsYWdzID0gU0FfTk9ERUZFUjsg
Ly8gYmUgc3R1cGlkCgkJaWYgKHNpZ2FjdGlvbihTSUdVU1IxLCAmYWN0LCAm
b2FjdCkgIT0gMCkKCQkJcGVycm9yKCJzaWdhY3Rpb24iKTsKCgkJc3RydWN0
IHNpZ2FjdGlvbiBhY3QyLCBvYWN0MjsKCgkJYWN0Mi5zYV9oYW5kbGVyID0g
aGFuZGxlcjI7CgkJciA9IHNpZ2VtcHR5c2V0KCZhY3QyLnNhX21hc2spOwoJ
Ly9yID0gc2lnYWRkc2V0KCZhY3QyLnNhX21hc2ssIFNJR1VTUjEpOyAvLyBh
ZGRlZAoJCWlmIChyICE9IDApIHB1dHMoInJldHZhbDIiKTsKCQlhY3QyLnNh
X2ZsYWdzID0gMDsKCQkvL2FjdDIuc2FfZmxhZ3MgPSBTQV9OT0RFRkVSOyAv
LyBiZSBzdHVwaWQKCQlpZiAoc2lnYWN0aW9uKFNJR0NITEQsICZhY3QyLCAm
b2FjdDIpICE9IDApCgkJCXBlcnJvcigic2lnYWN0aW9uIik7CgojaWYgMQpz
dHJ1Y3Qgc2lnYWN0aW9uIGFjdDMsIG9hY3QzOwoKYWN0My5zYV9oYW5kbGVy
ID0gaGFuZGxlcjM7CnIgPSBzaWdmaWxsc2V0KCZhY3QzLnNhX21hc2spOwpy
ID0gc2lnZGVsc2V0KCZhY3QzLnNhX21hc2ssIFNJR0lOVCk7IC8vIHJlbW92
ZQppZiAociAhPSAwKSBwdXRzKCJyZXR2YWwzIik7CmFjdDMuc2FfZmxhZ3Mg
PSBTQV9SRVNFVEhBTkQ7CmlmIChzaWdhY3Rpb24oU0lHSU5ULCAmYWN0Mywg
Jm9hY3QzKSAhPSAwKQoJcGVycm9yKCJzaWdhY3Rpb24iKTsKI2VuZGlmCgl9
CgoJLyogc3RhcnQgYSBjaGlsZCB0byBpbnVuZGF0ZSBtZSB3aXRoIHNpZ25h
bHMgKi8KCXsKCQlwaWRfdCBwaWQsIHBwaWQ7CgkJcGlkID0gZm9yaygpOwoJ
CXN3aXRjaCAocGlkKQoJCXsKCQkJY2FzZSAtMToKCQkJCXBlcnJvcigiZm9y
ayIpOwoJCQkJcmV0dXJuIDE7CgkJCWNhc2UgMDoKCQkJCXBwaWQgPSBnZXRw
cGlkKCk7CgkJCQlwcmludGYoInBpZD0lZCBpbnVuZGF0aW5nIHBpZD0lZCB3
aXRoIFNJR1VTUjEgYW5kIFNJR0NITERcbiIsCgkJCQkJICAgZ2V0cGlkKCks
IHBwaWQpOwojaWYgMAoJCQkJd2hpbGUgKGtpbGwocHBpZCwgcmFuZG9tKCkg
JSAyID8gU0lHVVNSMSA6IFNJR0NITEQpID09IDApCgkJCQkJOwojZWxzZQp2
b2xhdGlsZSBpbnQgaSA9IDA7Ci8vdm9sYXRpbGUgaW50IGkgPSAxOwppbnQg
eGNudF91c3IxID0gMDsgaW50IHhjbnRfY2hsZCA9IDA7CndoaWxlICgxKSB7
CiAgICBpID0gaSA/IDAgOiAxOwogICAgaWYgKDEpIHsKICAgICAgICBpZiAo
a2lsbChwcGlkLCBTSUdDSExEKSAhPSAwKSBicmVhazsKICAgICAgICB4Y250
X2NobGQrKzsKICAgICAgICBpZiAoa2lsbChwcGlkLCBTSUdVU1IxKSAhPSAw
KSBicmVhazsgLy8gTE9TVCEgV0hZPwogICAgICAgIHhjbnRfdXNyMSsrOwog
ICAgICAgIGlmIChraWxsKHBwaWQsIFNJR1VTUjEpICE9IDApIGJyZWFrOyAv
LyBMT1NUISBXSFk/CiAgICAgICAgeGNudF91c3IxKys7CiAgICAgICAgaWYg
KGtpbGwocHBpZCwgU0lHQ0hMRCkgIT0gMCkgYnJlYWs7CiAgICAgICAgeGNu
dF9jaGxkKys7CiAgICB9IGVsc2UgewogICAgICAgIGlmIChraWxsKHBwaWQs
IFNJR1VTUjEpICE9IDApIGJyZWFrOyAvLyBMT1NUISBXSFk/CiAgICAgICAg
eGNudF91c3IxKys7CiAgICAgICAgaWYgKGtpbGwocHBpZCwgU0lHQ0hMRCkg
IT0gMCkgYnJlYWs7CiAgICAgICAgeGNudF9jaGxkKys7CiAgICAgICAgaWYg
KGtpbGwocHBpZCwgU0lHQ0hMRCkgIT0gMCkgYnJlYWs7CiAgICAgICAgeGNu
dF9jaGxkKys7CiAgICAgICAgaWYgKGtpbGwocHBpZCwgU0lHVVNSMSkgIT0g
MCkgYnJlYWs7IC8vIExPU1QhIFdIWT8KICAgICAgICB4Y250X3VzcjErKzsK
ICAgIH0KI2lmIGRlZmluZWQoX19saW51eF9fKQogICAgdXNsZWVwKDEwMDAw
KTsgLy8gaWYgZGlzYWJsZWQsIGVpdGhlciBjbnRfdXNyMSBzdGF5cyB6ZXJv
ID8/Pz8/CiAgICAvLyBlbmFia2VkOiAyIDogMSwgZGlzYWJsZWQ6IDEwLjAw
MCA6IDEKI2VuZGlmICAgICAgICAgICAKI2lmIGRlZmluZWQoX19DWUdXSU5f
XykKICAgIC8vdXNsZWVwKDEwMDAwKTsgLy8gaWYgZGlzYWJsZWQgLi4uCiAg
ICAvLyB1c2luZyBTSUdfU0VUTUFTSyAocmVzdG9yZSBtYXNrLCBzYXZlZCBh
dCB0aGUgc3RhcnQgb2YgdGhlIGhhbmRsZXIpOiAuLi4gYWJvcnQsIGJ1dCBh
ZnRlciBhIGxvbmcgd2hpbGUgKGl0IHNlZW1zKQogICAgLy8gdXNpbmcgU0lH
X1VOQkxPQ0s6IGFib3J0IChhbG1vc3QgaW1tZWRpYXRlbHkpIC4uLiBTaWdo
IQojZW5kaWYKfQojZW5kaWYKCQkJCXB1dHMoImNoaWxkIGRvbmUiKTsKcHJp
bnRmKCJ4Y250X3VzcjEgPSAlZCwgeGNudF9jaGxkID0gJWRcbiIsIHhjbnRf
dXNyMSwgeGNudF9jaGxkKTsKCQkJCXJldHVybiAwOwoJCX0KCX0KCgkvKiBs
b29wIGZvcmV2ZXIgd2hpbGUgd2UgcmVjZWl2ZSBzaWduYWxzICovCglzdGFj
a19iYXNlID0gJnN0YWNrX3Bvc2l0aW9uOwoJc2lnc2V0am1wKGptcCwgMSk7
CgoJZm9yICg7OykKCXsKcHV0cygiLSIpOwoJCWlmIChzaWdwcm9jbWFzayhT
SUdfU0VUTUFTSywgJnVuYmxvY2ssIE5VTEwpICE9IDApIC8vIHBlcm1pdAoJ
CQlwZXJyb3IoInNpZ3Byb2NtYXNrIik7CnB1dHMoIi0tIik7CgkJdXNsZWVw
KDEwMDApOwpwdXRzKCItLS0iKTsKCQlpZiAoc2lncHJvY21hc2soU0lHX1NF
VE1BU0ssICZibG9jaywgTlVMTCkgIT0gMCkgLy8gZm9yYmlkCgkJCXBlcnJv
cigic2lncHJvY21hc2siKTsKcHV0cygiLS0tLSIpOwoJfQp9Cg==
--=_d7aeeeeefeb20f7c12299336ebd4f5d6
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
--=_d7aeeeeefeb20f7c12299336ebd4f5d6--
- Raw text -