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: List-Subscribe: List-Archive: List-Post: List-Help: , 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 Content-Type: multipart/mixed; boundary="=_d7aeeeeefeb20f7c12299336ebd4f5d6" Date: Wed, 16 Aug 2017 23:22:31 +0200 From: Houder To: cygwin AT cygwin DOT com Subject: REVISITED: Signal delivered while blocked Message-ID: 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--