From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com [IPv6:2a00:1450:4864:20::435]) by sourceware.org (Postfix) with ESMTPS id E510B3858D37 for ; Tue, 27 Sep 2022 01:20:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E510B3858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wr1-x435.google.com with SMTP id n10so12670826wrw.12 for ; Mon, 26 Sep 2022 18:20:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:references:cc:to:content-language:subject:user-agent :mime-version:date:message-id:from:from:to:cc:subject:date; bh=OBwFkfYKMk4hYHHdxWQltyOnpm1bLcI8mjdbDtYmu0E=; b=FHALQY7tuhBy4tKKzxR1yiTuTFWKEyY4+Ocks4od2u+D893vWreEVCmCj0b69JQOPp RZb+mPWo+vaCxpgqMo78ShVHOXOc46sJAVOR3uCIJy/V+L5QK41zewQTHrQjQxdv37VP rVpPHenS2HJifrn0N60ooMbhcTK8KIOyqvt5WDCnin+JpioZielHYs6IjUJSfZnYKp/V CGGgz07sFe1j8DxcatuavEnHyqr1TalxzAYAFD/AtF9eG53XABvjgk9PQQTfMsK26o+w HNc1a6sEqPqON8lugSSaOkZpS9sTbePCl+Fgc1SkmcQgWLphJQCCIdXuT+QM0GooEcJn Hzbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:references:cc:to:content-language:subject:user-agent :mime-version:date:message-id:from:x-gm-message-state:from:to:cc :subject:date; bh=OBwFkfYKMk4hYHHdxWQltyOnpm1bLcI8mjdbDtYmu0E=; b=o//WbsCFaeVLuRfBONlKJJ/ZP+cBJm7mo+65TSh9MO5sX1Cst/N+tLV8eKshdNoXLE hFDfHvM48ztIyi5WnkrwSpcv6QaLg0ojiPkEuYJrvC6k+bMrn44Af/1ZlVz7e5syKvHV 7OsKOEdHrCC30OOVnf+lVhWeHvkzjOpstsdAOUNaeF6ElutHjZhwYdAJFSCM+bAfK4pj PGDvC2+dPurMNh7r1wBzU/0zLN6n0aDUzJSqhgqKyWjDJMJxusE5E144gK8+/Xa6duFt r8T+EIEbjlQjTzKv1Q1Lslg1ARFpmLINhhqju24pdTTPtqQ6uVLie7T00IJ8+Wy0xQPq d/XA== X-Gm-Message-State: ACrzQf2lInOAIId9Qn7j/qodrgIxlu79KtiFPT2ccFvDu30N+OYsUnm3 ZsKutUiEm9NmnvMYxichXYYAPtj0okdklA== X-Google-Smtp-Source: AMsMyM6U2ZK+1VGjX6E95e/GOLVmv40JNL9mk+IpCIJf0jtxuQNcAvZxqdpSoGURnOdH06BL4CZyFA== X-Received: by 2002:a5d:4ec5:0:b0:228:6707:8472 with SMTP id s5-20020a5d4ec5000000b0022867078472mr15707915wrv.12.1664241654209; Mon, 26 Sep 2022 18:20:54 -0700 (PDT) Received: from [192.168.1.10] ([197.33.9.130]) by smtp.gmail.com with ESMTPSA id z10-20020a1cf40a000000b003b4868eb6bbsm228516wma.23.2022.09.26.18.20.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 26 Sep 2022 18:20:53 -0700 (PDT) From: Ahmed Sayed Mousse X-Google-Original-From: Ahmed Sayed Mousse Content-Type: multipart/mixed; boundary="------------TB3dSLheXNOaDkHg0IxvvrKG" Message-ID: <3835af74-e2f0-75eb-58a0-1ad04bc7d7f7@gmail.com> Date: Tue, 27 Sep 2022 03:20:51 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.0 Subject: Re: [patch] libgompd: Add thread handles Content-Language: en-US To: gcc-patches@gcc.gnu.org Cc: jakub@redhat.com References: <4086807d-97d1-ec58-1617-24dda537010a@gmail.com> In-Reply-To: <4086807d-97d1-ec58-1617-24dda537010a@gmail.com> X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------TB3dSLheXNOaDkHg0IxvvrKG Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit For some reason my mail client keeps missing things up. Maybe it is my fault. Anyway this is it again with the right format I hope. /This patch is the initial implementation of OpenMP-API specs book section //20.5.5 with title "Thread Handles". //libgomp/ChangeLog ///2022-07-01 Ahmed Sayed ///* Makefile.am (libgompd_la_SOURCES): Add ompd-threads.c.///* Makefile.in: Regenerate. * team.c (gomp_free_thread): Call ompd_bp_thread_end./* ompd-support.c (gompd_thread_initial_tls_bias): New variable. (gompd_load): Initialize gompd_thread_initial_tls_bias. * ompd-threads.c: New file./// --------------TB3dSLheXNOaDkHg0IxvvrKG Content-Type: text/plain; charset=UTF-8; name="diff.txt" Content-Disposition: attachment; filename="diff.txt" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYmdvbXAvTWFrZWZpbGUuYW0gYi9saWJnb21wL01ha2VmaWxlLmFt CmluZGV4IDZkOTEzYTkzZTdmLi4yM2Y1YmVkZTFiZiAxMDA2NDQKLS0tIGEvbGliZ29tcC9N YWtlZmlsZS5hbQorKysgYi9saWJnb21wL01ha2VmaWxlLmFtCkBAIC05NCw3ICs5NCw3IEBA IGxpYmdvbXBfbGFfU09VUkNFUyA9IGFsbG9jLmMgYXRvbWljLmMgYmFycmllci5jIGNyaXRp Y2FsLmMgZW52LmMgZXJyb3IuYyBcCiAJcHJpb3JpdHlfcXVldWUuYyBhZmZpbml0eS1mbXQu YyB0ZWFtcy5jIGFsbG9jYXRvci5jIG9hY2MtcHJvZmlsaW5nLmMgXAogCW9hY2MtdGFyZ2V0 LmMgb21wZC1zdXBwb3J0LmMKIAotbGliZ29tcGRfbGFfU09VUkNFUyA9IG9tcGQtaW5pdC5j IG9tcGQtaGVscGVyLmMgb21wZC1pY3YuYworbGliZ29tcGRfbGFfU09VUkNFUyA9IG9tcGQt aW5pdC5jIG9tcGQtaGVscGVyLmMgb21wZC1pY3YuYyBvbXBkLXRocmVhZHMuYwogCiBpbmNs dWRlICQodG9wX3NyY2RpcikvcGx1Z2luL01ha2VmcmFnLmFtCiAKZGlmZiAtLWdpdCBhL2xp YmdvbXAvTWFrZWZpbGUuaW4gYi9saWJnb21wL01ha2VmaWxlLmluCmluZGV4IDQwZjg5NmI1 ZjAzLi43YWNkY2JmMzFkNSAxMDA2NDQKLS0tIGEvbGliZ29tcC9NYWtlZmlsZS5pbgorKysg Yi9saWJnb21wL01ha2VmaWxlLmluCkBAIC0yMzMsNyArMjMzLDggQEAgYW1fbGliZ29tcF9s YV9PQkpFQ1RTID0gYWxsb2MubG8gYXRvbWljLmxvIGJhcnJpZXIubG8gY3JpdGljYWwubG8g XAogCWFmZmluaXR5LWZtdC5sbyB0ZWFtcy5sbyBhbGxvY2F0b3IubG8gb2FjYy1wcm9maWxp bmcubG8gXAogCW9hY2MtdGFyZ2V0LmxvIG9tcGQtc3VwcG9ydC5sbyAkKGFtX19vYmplY3Rz XzEpCiBsaWJnb21wX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdvbXBfbGFfT0JKRUNUUykKLWFt X2xpYmdvbXBkX2xhX09CSkVDVFMgPSBvbXBkLWluaXQubG8gb21wZC1oZWxwZXIubG8gb21w ZC1pY3YubG8KK2FtX2xpYmdvbXBkX2xhX09CSkVDVFMgPSBvbXBkLWluaXQubG8gb21wZC1o ZWxwZXIubG8gb21wZC1pY3YubG8gXAorCW9tcGQtdGhyZWFkcy5sbwogbGliZ29tcGRfbGFf T0JKRUNUUyA9ICQoYW1fbGliZ29tcGRfbGFfT0JKRUNUUykKIEFNX1ZfUCA9ICQoYW1fX3Zf UF9AQU1fVkApCiBhbV9fdl9QXyA9ICQoYW1fX3ZfUF9AQU1fREVGQVVMVF9WQCkKQEAgLTU4 Myw3ICs1ODQsNyBAQCBsaWJnb21wX2xhX1NPVVJDRVMgPSBhbGxvYy5jIGF0b21pYy5jIGJh cnJpZXIuYyBjcml0aWNhbC5jIGVudi5jIFwKIAlvYWNjLWFzeW5jLmMgb2FjYy1wbHVnaW4u YyBvYWNjLWN1ZGEuYyBwcmlvcml0eV9xdWV1ZS5jIFwKIAlhZmZpbml0eS1mbXQuYyB0ZWFt cy5jIGFsbG9jYXRvci5jIG9hY2MtcHJvZmlsaW5nLmMgXAogCW9hY2MtdGFyZ2V0LmMgb21w ZC1zdXBwb3J0LmMgJChhbV9fYXBwZW5kXzcpCi1saWJnb21wZF9sYV9TT1VSQ0VTID0gb21w ZC1pbml0LmMgb21wZC1oZWxwZXIuYyBvbXBkLWljdi5jCitsaWJnb21wZF9sYV9TT1VSQ0VT ID0gb21wZC1pbml0LmMgb21wZC1oZWxwZXIuYyBvbXBkLWljdi5jIG9tcGQtdGhyZWFkcy5j CiAKICMgTnZpZGlhIFBUWCBPcGVuQUNDIHBsdWdpbi4KIEBQTFVHSU5fTlZQVFhfVFJVRUBs aWJnb21wX3BsdWdpbl9udnB0eF92ZXJzaW9uX2luZm8gPSAtdmVyc2lvbi1pbmZvICQobGli dG9vbF9WRVJTSU9OKQpAQCAtODAxLDYgKzgwMiw3IEBAIGRpc3RjbGVhbi1jb21waWxlOgog QEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL29tcGQt aWN2LlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVv dGVALi8kKERFUERJUikvb21wZC1pbml0LlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBA YW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvb21wZC1zdXBwb3J0LlBsb0Bh bV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERF UERJUikvb21wZC10aHJlYWRzLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2lu Y2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvb3JkZXJlZC5QbG9AYW1fX3F1b3RlQAog QEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL3BhcmFs bGVsLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVv dGVALi8kKERFUERJUikvcHJpb3JpdHlfcXVldWUuUGxvQGFtX19xdW90ZUAKZGlmZiAtLWdp dCBhL2xpYmdvbXAvb21wZC1zdXBwb3J0LmMgYi9saWJnb21wL29tcGQtc3VwcG9ydC5jCmlu ZGV4IDI3YzVhZDE0OGUwLi41YjFhZmQzNzc4OCAxMDA2NDQKLS0tIGEvbGliZ29tcC9vbXBk LXN1cHBvcnQuYworKysgYi9saWJnb21wL29tcGQtc3VwcG9ydC5jCkBAIC0zMyw2ICszMyw4 IEBAIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdvbXBkX3NpemVvZl9nb21wX3RocmVhZF9oYW5k bGUKICAgX19hdHRyaWJ1dGVfXyAoKHVzZWQpKSBPTVBEX1NFQ1RJT04gPSAwOwogI2VuZGlm CiAKK3Vuc2lnbmVkIGxvbmcgZ29tcGRfdGhyZWFkX2luaXRpYWxfdGxzX2JpYXMgX19hdHRy aWJ1dGVfXyAoKHVzZWQpKTsKKwogLyogR2V0IG9mZnNldCBvZiB0aGUgbWVtYmVyIG0gaW4g c3RydWN0IHQuICAqLwogI2RlZmluZSBnb21wZF9nZXRfb2Zmc2V0KHQsIG0pIFwKICAgY29u c3QgdW5zaWduZWQgc2hvcnQgZ29tcGRfYWNjZXNzXyMjdCMjXyMjbSBfX2F0dHJpYnV0ZV9f ICgodXNlZCkpIFwKQEAgLTY3LDYgKzY5LDExIEBAIGdvbXBkX2xvYWQgKHZvaWQpCiAgIGdv bXBkX3N0YXRlIHw9IE9NUERfRU5BQkxFRDsKICAgb21wZF9kbGxfbG9jYXRpb25zID0gJm9t cGRfZGxsX2xvY2F0aW9uc19hcnJheVswXTsKICAgb21wZF9kbGxfbG9jYXRpb25zX3ZhbGlk ICgpOworCisgICNpZiBkZWZpbmVkKExJQkdPTVBfVVNFX1BUSFJFQURTKSAmJiAhZGVmaW5l ZChHT01QX05FRURTX1RIUkVBRF9IQU5ETEUpCisgIGdvbXBkX3RocmVhZF9pbml0aWFsX3Rs c19iaWFzID0gKHVuc2lnbmVkIGxvbmcpICgoY2hhciAqKSAmZ29tcF90bHNfZGF0YQorCQkJ CQkJICAgLSAoY2hhciAqKSBwdGhyZWFkX3NlbGYgKCkpOworICAjZW5kaWYKIH0KIAogI2lm bmRlZiBfX0VMRl9fCmRpZmYgLS1naXQgYS9saWJnb21wL29tcGQtdGhyZWFkcy5jIGIvbGli Z29tcC9vbXBkLXRocmVhZHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNzIzZWY3NDAxODEKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL29tcGQtdGhy ZWFkcy5jCkBAIC0wLDAgKzEsMjIyIEBACisvKiBDb3B5cmlnaHQgKEMpIFRoZSBHTlUgVG9v bGNoYWluIEF1dGhvcnMuCisgICBDb250cmlidXRlZCBieSBBaG1lZCBTYXllZCA8YWhtZWRz YXllZG1vdXNzZUBnbWFpbC5jb20+LgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBPZmZsb2FkaW5nIGFuZCBNdWx0aSBQcm9jZXNzaW5nIExpYnJhcnkKKyAgIChsaWJnb21w KS4KKworICAgTGliZ29tcCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9u KQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIExpYmdvbXAgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCisg ICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxz LgorCisgICBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFu dGVkIGFkZGl0aW9uYWwKKyAgIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1 bnRpbWUgTGlicmFyeSBFeGNlcHRpb24sIHZlcnNpb24KKyAgIDMuMSwgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFu ZAorICAgYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKyAgIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENP UFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworLyogVGhpcyBmaWxlIGNvbnRhaW5zIHRo ZSBpbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbgorICAgU2VjdGlvbiA1 LjUgVGhyZWFkSGFuZGxlcy4gKi8KKworCisjaW5jbHVkZSAib21wZC1oZWxwZXIuaCIKKwor b21wZF9yY190CitvbXBkX2dldF90aHJlYWRfaW5fcGFyYWxsZWwgKG9tcGRfcGFyYWxsZWxf aGFuZGxlX3QgKnBhcmFsbGVsX2hhbmRsZSwKKwkJCSAgICAgaW50IHRocmVhZF9udW0sCisJ CQkgICAgIG9tcGRfdGhyZWFkX2hhbmRsZV90ICoqdGhyZWFkX2hhbmRsZSkKK3sKKworICBp ZiAocGFyYWxsZWxfaGFuZGxlID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfc3RhbGVf aGFuZGxlOworICBDSEVDSyAocGFyYWxsZWxfaGFuZGxlLT5haCk7CisKKyAgb21wZF9hZGRy ZXNzX3NwYWNlX2NvbnRleHRfdCAqY29udGV4dCA9IHBhcmFsbGVsX2hhbmRsZS0+YWgtPmNv bnRleHQ7CisgIG9tcGRfcmNfdCByZXQ7CisKKyAgb21wZF93b3JkX3QgdGVhbV9zaXplX3Zh ciA9IDE7CisgIGlmIChwYXJhbGxlbF9oYW5kbGUtPnRoLmFkZHJlc3MpCisgICAgZ29tcGRf Z2V0X3RlYW1fc2l6ZSAocGFyYWxsZWxfaGFuZGxlLCAmdGVhbV9zaXplX3Zhcik7CisKKyAg aWYgKHRocmVhZF9udW0gPCAwIHx8IHRocmVhZF9udW0gPj0gdGVhbV9zaXplX3ZhcikKKyAg ICByZXR1cm4gb21wZF9yY19iYWRfaW5wdXQ7CisKKyAgb21wZF93b3JkX3QgdGVtcF9vZmZz ZXQ7CisgIG9tcGRfYWRkcmVzc190IHRlbXBfc3ltYm9sX2FkZHIsIHN5bWJvbF9hZGRyID0g e09NUERfU0VHTUVOVF9VTlNQRUNJRklFRCwgMH07CisgIG9tcGRfYWRkcl90IHRlbXBfYWRk cjsKKworICBBQ0NFU1NfVkFMVUUgKGNvbnRleHQsIE5VTEwsICJnb21wZF9hY2Nlc3NfZ29t cF90aHJlYWRfcG9vbF90aHJlYWRzIiwKKwkJdGVtcF9vZmZzZXQsIDEsIHJldCwgc3ltYm9s X2FkZHIsIHRlbXBfc3ltYm9sX2FkZHIsIHRlbXBfYWRkcik7CisKKyAgc3ltYm9sX2FkZHIu YWRkcmVzcyArPSB0aHJlYWRfbnVtICogdGFyZ2V0X3NpemVzLnNpemVvZl9wb2ludGVyOwor CisgIERFUkVGRVJFTkNFIChjb250ZXh0LCBOVUxMLCBzeW1ib2xfYWRkciwgdGFyZ2V0X3Np emVzLnNpemVvZl9wb2ludGVyLCAxLAorCSAgICAgICB0ZW1wX2FkZHIsIHJldCwgMSk7CisK KyAgcmV0ID0gY2FsbGJhY2tzLT5hbGxvY19tZW1vcnkgKHNpemVvZiAob21wZF90aHJlYWRf aGFuZGxlX3QpLAorCQkJCSAodm9pZCAqKikgdGhyZWFkX2hhbmRsZSk7CisKKyAgQ0hFQ0tf UkVUIChyZXQpOworCisgIGlmIChzeW1ib2xfYWRkci5hZGRyZXNzID09IDApCisgICAgcmV0 dXJuIG9tcGRfcmNfdW5zdXBwb3J0ZWQ7CisKKyAgKCp0aHJlYWRfaGFuZGxlKS0+dGggPSBz eW1ib2xfYWRkcjsKKyAgKCp0aHJlYWRfaGFuZGxlKS0+YWggPSBwYXJhbGxlbF9oYW5kbGUt PmFoOworICByZXR1cm4gcmV0OworfQorCisvKiBUaGUgb21wZF9nZXRfdGhyZWFkX2hhbmRs ZSBmdW5jdGlvbiB0aGF0IG1hcHMgYSBuYXRpdmUgdGhyZWFkIHRvIGFuCisgICBPTVBEIHRo cmVhZCBoYW5kbGUuICAqLworCitvbXBkX3JjX3QKK29tcGRfZ2V0X3RocmVhZF9oYW5kbGUg KG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqaGFuZGxlLAorCQkJb21wZF90aHJlYWRf aWRfdCBraW5kLCBvbXBkX3NpemVfdCBzaXplb2ZfdGhyZWFkX2lkLAorCQkJY29uc3Qgdm9p ZCAqdGhyZWFkX2lkLAorCQkJb21wZF90aHJlYWRfaGFuZGxlX3QgKip0aHJlYWRfaGFuZGxl KQoreworICBDSEVDSyAoaGFuZGxlKTsKKyAgaWYgKGtpbmQgIT0gT01QRF9USFJFQURfSURf UFRIUkVBRCkKKyAgICByZXR1cm4gb21wZF9yY191bnN1cHBvcnRlZDsKKworICBvbXBkX2Fk ZHJlc3Nfc3BhY2VfY29udGV4dF90ICpjb250ZXh0ID0gaGFuZGxlLT5jb250ZXh0OworICBv bXBkX3RocmVhZF9jb250ZXh0X3QgKnRjb250ZXh0OworICBvbXBkX3JjX3QgcmV0OworCisg IHJldCA9IGNhbGxiYWNrcy0+Z2V0X3RocmVhZF9jb250ZXh0X2Zvcl90aHJlYWRfaWQgKGNv bnRleHQsIGtpbmQsCisJCQkJCQkgICAgIHNpemVvZl90aHJlYWRfaWQsCisJCQkJCQkgICAg IHRocmVhZF9pZCwgJnRjb250ZXh0KTsKKyAgQ0hFQ0tfUkVUIChyZXQpOworCisgIG9tcGRf c2l6ZV90IHRlbXBfc3ltYm9sX3NpemUsIHN5bWJvbF9zaXplOworICBvbXBkX2FkZHJlc3Nf dCB0ZW1wX3N5bWJvbF9hZGRyLCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVD SUZJRUQsIDB9OworCisgIEdFVF9WQUxVRSAoY29udGV4dCwgTlVMTCwgImdvbXBkX3NpemVv Zl9nb21wX3RocmVhZCIsIHN5bWJvbF9zaXplLAorCSAgICAgdGVtcF9zeW1ib2xfc2l6ZSwg dGFyZ2V0X3NpemVzLnNpemVvZl9zaG9ydCwgMSwgcmV0LAorCSAgICAgdGVtcF9zeW1ib2xf YWRkcik7CisKKyAgR0VUX1ZBTFVFIChjb250ZXh0LCB0Y29udGV4dCwgImdvbXBfdGxzX2Rh dGEiLCBzeW1ib2xfYWRkci5hZGRyZXNzLAorCSAgICAgdGVtcF9zeW1ib2xfYWRkci5hZGRy ZXNzLCBzeW1ib2xfc2l6ZSwgMSwgcmV0LCBzeW1ib2xfYWRkcik7CisKKyAgcmV0ID0gY2Fs bGJhY2tzLT5hbGxvY19tZW1vcnkgKHNpemVvZiAob21wZF90aHJlYWRfaGFuZGxlX3QpLAor CQkJCSAodm9pZCAqKikgdGhyZWFkX2hhbmRsZSk7CisKKyAgQ0hFQ0tfUkVUIChyZXQpOwor CisgICgqdGhyZWFkX2hhbmRsZSktPmFoID0gaGFuZGxlOworICAoKnRocmVhZF9oYW5kbGUp LT50aCA9IHN5bWJvbF9hZGRyOworICAoKnRocmVhZF9oYW5kbGUpLT50aHJlYWRfY29udGV4 dCA9IHRjb250ZXh0OworICByZXR1cm4gcmV0OworfQorCisKK29tcGRfcmNfdAorb21wZF9y ZWxfdGhyZWFkX2hhbmRsZSAob21wZF90aHJlYWRfaGFuZGxlX3QgKnRocmVhZF9oYW5kbGUp Cit7CisgIGlmICh0aHJlYWRfaGFuZGxlID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNf c3RhbGVfaGFuZGxlOworCisgIG9tcGRfcmNfdCByZXQ7CisgIHJldCA9IGNhbGxiYWNrcy0+ ZnJlZV9tZW1vcnkgKCh2b2lkICopIHRocmVhZF9oYW5kbGUpOworICBpZiAocmV0ICE9IG9t cGRfcmNfb2spCisgIHJldHVybiByZXQ7CisKKyAgcmV0dXJuIG9tcGRfcmNfb2s7Cit9CisK KworLyogUmV0dXJuIC0xLCAwIG9yIDEgZm9yIHRocmVhZF9oYW5kbGVfMSA8LCA9PSBvciA+ IHRocmVhZF9oYW5kbGVfMi4gICovCitvbXBkX3JjX3QKK29tcGRfdGhyZWFkX2hhbmRsZV9j b21wYXJlIChvbXBkX3RocmVhZF9oYW5kbGVfdCAqdGhyZWFkX2hhbmRsZV8xLAorCQkJICAg IG9tcGRfdGhyZWFkX2hhbmRsZV90ICp0aHJlYWRfaGFuZGxlXzIsCisJCQkgICAgaW50CSpj bXBfdmFsdWUpCit7CisKKyAgaWYgKHRocmVhZF9oYW5kbGVfMSA9PSBOVUxMIHx8IHRocmVh ZF9oYW5kbGVfMiA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX3N0YWxlX2hhbmRsZTsK KyAgaWYgKGNtcF92YWx1ZSA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1 dDsKKyAgaWYgKHRocmVhZF9oYW5kbGVfMS0+YWgtPmtpbmQgIT0gdGhyZWFkX2hhbmRsZV8y LT5haC0+a2luZCkKKyAgICByZXR1cm4gb21wZF9yY19iYWRfaW5wdXQ7CisKKyAgaWYgKHRo cmVhZF9oYW5kbGVfMS0+dGguYWRkcmVzcyA8IHRocmVhZF9oYW5kbGVfMi0+dGguYWRkcmVz cykKKyAgICAqY21wX3ZhbHVlID0gLTE7CisgIGVsc2UgaWYgKHRocmVhZF9oYW5kbGVfMS0+ dGguYWRkcmVzcyA+IHRocmVhZF9oYW5kbGVfMi0+dGguYWRkcmVzcykKKyAgICAqY21wX3Zh bHVlID0gMTsKKyAgZWxzZQorICAgICpjbXBfdmFsdWUgPSAwOworCisgIHJldHVybiBvbXBk X3JjX29rOworfQorCisKK29tcGRfcmNfdAorb21wZF9nZXRfdGhyZWFkX2lkIChvbXBkX3Ro cmVhZF9oYW5kbGVfdCAqdGhyZWFkX2hhbmRsZSwgb21wZF90aHJlYWRfaWRfdCBraW5kLAor CQkgICAgb21wZF9zaXplX3Qgc2l6ZW9mX3RocmVhZF9pZCwgdm9pZCAqdGhyZWFkX2lkKQor eworICBpZiAoa2luZCAhPSBPTVBEX1RIUkVBRF9JRF9QVEhSRUFEKQorICAgIHJldHVybiBv bXBkX3JjX3Vuc3VwcG9ydGVkOworICBpZiAodGhyZWFkX2lkID09IE5VTEwpCisgICAgcmV0 dXJuIG9tcGRfcmNfYmFkX2lucHV0OworICBpZiAodGhyZWFkX2hhbmRsZSA9PSBOVUxMKQor ICAgIHJldHVybiBvbXBkX3JjX3N0YWxlX2hhbmRsZTsKKworICBDSEVDSyAodGhyZWFkX2hh bmRsZS0+YWgpOworICBvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICpjb250ZXh0ID0g dGhyZWFkX2hhbmRsZS0+YWgtPmNvbnRleHQ7CisKKyAgb21wZF9yY190IHJldDsKKyAgb21w ZF9hZGRyZXNzX3QgdGFkZHIgPSB0aHJlYWRfaGFuZGxlLT50aDsKKyAgb21wZF9hZGRyZXNz X3QgdGVtcF9zeW1ib2xfYWRkciwgc3ltYm9sX2FkZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BF Q0lGSUVELCAwfTsKKyAgb21wZF9zaXplX3QgdGVtcF9zeW1ib2xfc2l6ZSwgc3ltYm9sX3Np emU7CisgIG9tcGRfd29yZF90IHRlbXBfb2Zmc2V0LCBvZmZzZXQ7CisKKyAgR0VUX1ZBTFVF IChjb250ZXh0LCBOVUxMLCAiZ29tcGRfc2l6ZW9mX2dvbXBfdGhyZWFkX2hhbmRsZSIsIHN5 bWJvbF9zaXplLAorCSAgICAgdGVtcF9zeW1ib2xfc2l6ZSwgdGFyZ2V0X3NpemVzLnNpemVv Zl9zaG9ydCwgMSwgcmV0LCBzeW1ib2xfYWRkcik7CisKKyAgaWYgKHN5bWJvbF9zaXplID09 IDApCisgICAgeworICAgICAgR0VUX1ZBTFVFIChjb250ZXh0LCBOVUxMLCAiZ29tcGRfdGhy ZWFkX2luaXRpYWxfdGxzX2JpYXMiLCBvZmZzZXQsCisJCSB0ZW1wX29mZnNldCwgdGFyZ2V0 X3NpemVzLnNpemVvZl9sb25nLCAxLCByZXQsIHN5bWJvbF9hZGRyKTsKKworICAgICAgcmV0 ID0gY2FsbGJhY2tzLT5zeW1ib2xfYWRkcl9sb29rdXAgKGNvbnRleHQsIE5VTEwsImdvbXBf dGxzX2RhdGEiLAorCQkJCQkgICAmc3ltYm9sX2FkZHIsIE5VTEwpOworICAgICAgcmV0ID0g Y2FsbGJhY2tzLT5kZXZpY2VfdG9faG9zdCAoY29udGV4dCwgJnRlbXBfc3ltYm9sX2FkZHIu YWRkcmVzcywKKwkJCQkgICAgICAgdGFyZ2V0X3NpemVzLnNpemVvZl9sb25nX2xvbmcsIDEs CisJCQkJICAgICAgICZzeW1ib2xfYWRkci5hZGRyZXNzKTsKKyAgICAgIENIRUNLX1JFVCAo cmV0KTsKKworICAgICAgdGFkZHIuYWRkcmVzcyA9IHN5bWJvbF9hZGRyLmFkZHJlc3MgKyBv ZmZzZXQ7CisgICAgICByZXQgPSBjYWxsYmFja3MtPnJlYWRfbWVtb3J5IChjb250ZXh0LCBO VUxMLCAmdGFkZHIsCisJCQkJICAgIHRhcmdldF9zaXplcy5zaXplb2ZfbG9uZ19sb25nLCB0 aHJlYWRfaWQpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGlmIChzaXplb2ZfdGhy ZWFkX2lkICE9IHN5bWJvbF9zaXplKQorICAgICAgICByZXR1cm4gb21wZF9yY19iYWRfaW5w dXQ7CisKKyAgICAgIEdFVF9WQUxVRSAoY29udGV4dCwgTlVMTCwgImdvbXBkX2FjY2Vzc19n b21wX3RocmVhZF9oYW5kbGUiLCBvZmZzZXQsCisJCSB0ZW1wX29mZnNldCwgdGFyZ2V0X3Np emVzLnNpemVvZl9zaG9ydCwgMSwgcmV0LCBzeW1ib2xfYWRkcik7CisgICAgICB0YWRkci5h ZGRyZXNzICs9IG9mZnNldDsKKworICAgICAgcmV0ID0gY2FsbGJhY2tzLT5yZWFkX21lbW9y eSAoY29udGV4dCwgTlVMTCwgJnRhZGRyLCBzeW1ib2xfc2l6ZSwKKwkJCQkgICAgdGhyZWFk X2lkKTsKKyAgICB9CisgIHJldHVybiByZXQ7Cit9CisKKworLyogT01QRCBkb2Vzbid0IHN1 cHBvcnQgR1BVcyBmb3Igbm93LiAgKi8KK29tcGRfcmNfdCBvbXBkX2dldF9kZXZpY2VfZnJv bV90aHJlYWQgKG9tcGRfdGhyZWFkX2hhbmRsZV90ICp0aHJlYWRfaGFuZGxlLAorCQkJCSAg ICAgICBvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKipkZXZpY2UpCit7CisgIGlmICh0 aHJlYWRfaGFuZGxlID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfc3RhbGVfaGFuZGxl OworICByZXR1cm4gb21wZF9yY191bnN1cHBvcnRlZDsKK30KZGlmZiAtLWdpdCBhL2xpYmdv bXAvdGVhbS5jIGIvbGliZ29tcC90ZWFtLmMKaW5kZXggZDUzMjQ2OTYxYjcuLjlhODRkYzE4 YmRiIDEwMDY0NAotLS0gYS9saWJnb21wL3RlYW0uYworKysgYi9saWJnb21wL3RlYW0uYwpA QCAtNzcsNiArNzcsNyBAQCBnb21wX3RocmVhZF9zdGFydCAodm9pZCAqeGRhdGEpCiAgIHZv aWQgKmxvY2FsX2RhdGE7CiAKICAgb21wZF9icF90aHJlYWRfYmVnaW4gKCk7CisKICNpZiBk ZWZpbmVkIEhBVkVfVExTIHx8IGRlZmluZWQgVVNFX0VNVVRMUwogICB0aHIgPSAmZ29tcF90 bHNfZGF0YTsKICNlbHNlCkBAIC0zMTMsNiArMzE0LDggQEAgZ29tcF9mcmVlX3RocmVhZCAo dm9pZCAqYXJnIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQogICAgICAgZ29tcF9lbmRfdGFz ayAoKTsKICAgICAgIGZyZWUgKHRhc2spOwogICAgIH0KKworICBvbXBkX2JwX3RocmVhZF9l bmQgKCk7CiB9CiAKIC8qIExhdW5jaCBhIHRlYW0uICAqLwo= --------------TB3dSLheXNOaDkHg0IxvvrKG--