From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id sdFwKxCFFWpECx0AWB0awg (envelope-from ) for ; Tue, 26 May 2026 07:33:36 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=sankhya-com.20251104.gappssmtp.com header.i=@sankhya-com.20251104.gappssmtp.com header.a=rsa-sha256 header.s=20251104 header.b=dWigH/As; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id A8C551E062; Tue, 26 May 2026 07:33:36 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 9B2081E062 for ; Tue, 26 May 2026 07:33:32 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5D60A4B9DB5F for ; Tue, 26 May 2026 11:33:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5D60A4B9DB5F Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=sankhya-com.20251104.gappssmtp.com header.i=@sankhya-com.20251104.gappssmtp.com header.a=rsa-sha256 header.s=20251104 header.b=dWigH/As Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com [IPv6:2a00:1450:4864:20::52e]) by sourceware.org (Postfix) with ESMTPS id 0DF9D4BA23E8 for ; Tue, 26 May 2026 11:32:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0DF9D4BA23E8 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=sankhya.com Authentication-Results: sourceware.org; spf=none smtp.mailfrom=sankhya.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0DF9D4BA23E8 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=2a00:1450:4864:20::52e ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1779795172; cv=pass; b=LgZoucAiScnw83eI1XxqObKfSC4m/PKDVUUeo7roiA5hFZEwsD3uXzmH3fDoA1VWCuaD67B7iUsaOl/gJJCPsVvqJt2FJoHcyr4ulK5j6ZQRRrgvEkKjVPNyoYD9t8+eibRi5JUqaS3bo5rDtPuWmIq1086Qv6V5yJfswD8kWo8= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1779795172; c=relaxed/simple; bh=1tRTgn3bbgYpMfF6Ll1/vTeg0ifyTrWlubUSiypCrEQ=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=nNr58Pww8/OGqLrcqJF+djhkWToi1XYk1nzcvPyjQFYutbkVOK2PqpPvTt5es34sHxsgkGHa2Mr48Qn3vEcYny9SFlVMt0Lj2KA+guAL7tPe2wBPgiE3zZY9CyN/Mb4rqkQhuYte4vkFZ7XI7PElMZx9+RwJ828KkzoMl5RvB/8= ARC-Authentication-Results: i=2; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=sankhya-com.20251104.gappssmtp.com header.i=@sankhya-com.20251104.gappssmtp.com header.a=rsa-sha256 header.s=20251104 header.b=dWigH/As DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0DF9D4BA23E8 Received: by mail-ed1-x52e.google.com with SMTP id 4fb4d7f45d1cf-67389cf78b0so5120130a12.2 for ; Tue, 26 May 2026 04:32:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779795171; cv=none; d=google.com; s=arc-20240605; b=EnHr7LbtYL8gewC8zigFjqGx6smRoDpM3f+cIMEGAiimlFOfoyDxH1HrViFoxXiJW5 8KbyiJnKc297kQjDLbn7Vvn2VJ+0Ku33/FCmn74PUF99brPS8biSJJYgwi/XUy+vkPkm Wlr40rjNWMocP1AMxJlpKPAjS30mUuKHc7GJI0geGOBijrudtdGVP4jG3L9mXXnREjmE ES6eTx/pUHsnzwv4L/FyqzhSb9t9fzKQq/Hvxe75qjFqKtBd9EeSEh7w1OmG/Bb5Db1i P5cKuJA27BvWpzM/VLtfruGnPYJ/1i8LlrQSMalf7O3TPjslfLwqBgSNQOPpXERmixiH jqKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:mime-version:dkim-signature; bh=VVneRLiIAdVPfgNyUwHolXReW8W2o3SxDTJzbvtt/Rs=; fh=z57UL403SDDdcP53UGu8Tt0diYgc037qpyTjNS3Pzas=; b=H38yQwMz1cuTBQwa8CB3W8OFQuEaqKAHhOuINlHfkgioEhTtu741fMKRxxB7boPaOx MIJ0BWBiMq+slRNG2qy15ZFDuJvZOCYdu9AxAB/k0NGhqM6qopkeTZP736BVH2G8PX3t cOhCvfjyXsiN0u/CsGauqwLSWOC0oeo245CIKYnEh5RoHbVnZXZ6HsJ5FZ6Kag2Bxnk8 tqITFtXRSAf/966Yjhok55DdrVOZoooACDxmr1K8/yVcMHe1U+36kGER94Cx23G7nq2K CSVfOKgoa/7ObXyHXjp41AUBS8seC/j15BrOlatq4rB4z0Q+9OOkn2EifNYpD6de4zxF N8XA==; darn=sourceware.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sankhya-com.20251104.gappssmtp.com; s=20251104; t=1779795171; x=1780399971; darn=sourceware.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=VVneRLiIAdVPfgNyUwHolXReW8W2o3SxDTJzbvtt/Rs=; b=dWigH/As/1r/MCqzZyB50/ebpnnEGt/n8vB3WOb/s50qtMJEU+5UPDWZW3aVRPIkC+ zxGbcqnyNMnQ7W2n9JBrRTq3OfGawxts6ixDzK24jvBpVCdE5JeV2zescAnAf7boVXFl 4UDvUJFe6Mv+Tyoe1PuaACKKRErwp2UZ7WZMJp2ZljDOqvvbzm9uWdv/v2eCn6A2h6JG 9Vzxtelafsc+u0E2KvHADPoD4iWt5MkHq3ZWi88A0/EFWzcFv38/78IbDt+zDtR91TmJ f0lXPyW/vTHySzHjTcUavJPs8putnTHDaA+4o+mGGcCjoH5IadmfkcxBF2Twve1W8BAi tCFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779795171; x=1780399971; h=cc:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=VVneRLiIAdVPfgNyUwHolXReW8W2o3SxDTJzbvtt/Rs=; b=Q6EvKi2o23Nmumr9uoMg76Bh8d2SL3UJyyAKzSw4Fv6JxmTnpOGrIq5PlFY/8woM3U Np8R+Ge7XQbX8F/ulEL/jBHIHjrTsmn0nckvc+JCrIh3POQGlLO6u5qrnmBs7IaGqCe9 3oAqoJ/uAEARYFq4pnLhe+a5a2h5fKUT6y3tOiqkZ5zwdlek3E7Vs3Q7JfJ7b47mTce2 25R2NE3D1AeaYBk7GizKwOidq8FIH0Bnwq/FkY1ZdfLVOeMDw3iT2ixvTPQ4NF+vqDxD aWp3xIvN3IZtCmyfbU2RSshqHDbIIMm1WbaZS8IHajm0YG3XlsmI6KpCDrAFVXAMZfHt OcPA== X-Forwarded-Encrypted: i=1; AFNElJ8JUiX2xVArvMGs6AJNl8idkbw2YLMChrm/Bx2hVOOWUN0x9ZpjQ6+l033leqiVawZKAp0YP5zPMd7koA==@sourceware.org X-Gm-Message-State: AOJu0Yyf5kMWGMClp2PQgxBSoLZ2bnd6srdGQl9DEij9YbSSW/lEdP/m Z8zctjdB/nyobLSh1yU3csybbvqRGgplLVy66Wsv3mM5/Qop2z5WgENDYc9GL7j5TjqMil/BADb E7ud0YE0Lqg2uIRRn1+mGwBBSjFCkMI2N1ro6fGGxlSZ4M3mU/5/P X-Gm-Gg: Acq92OHGaOywXMPunGeU0dvM8/8gjGiYHvKmdAVJRfVZLjVIA/qWmnGaa6kra4q1Ons ts7Q1iW6MxgpE0KGlMxdRqOhBJS4ZqthWvNjTuqDgX3yDWkCkX1FdSFL2WwOt3AKPHiQ/hyO79N eVHuTDfxsh7+rkrZNXunm80enJ96y4lHZ30ywjog5iwHQHB0lTlRtTeKiUSyRQQ5fFeFrsgwkf+ FC3CssYAIVOXbP/qDFXzu5heDp23EtqD1kkT8Ayrkle252V9qzqq7yVVteDoUBLmNkl1wsbI4GS 1yel6HdTNRoI1SrzKWuBge475IXD17rpcKrSP2i9hEhAlidGIymATicqR5PP90F/AFWGRUTY3Jq 8COLpqCkODW7J68TJpEJx8Gt8wTn4Hp9AIs10w8UJIZwZnSfn5ChtiD00Vr9CvBA= X-Received: by 2002:a05:6402:40cb:b0:67b:4aab:247e with SMTP id 4fb4d7f45d1cf-6889c478b0dmr5753118a12.16.1779795169764; Tue, 26 May 2026 04:32:49 -0700 (PDT) MIME-Version: 1.0 From: Gopi Kumar Bulusu Date: Tue, 26 May 2026 17:02:42 +0530 X-Gm-Features: AVHnY4I7iI74clt2ZTiOYDC5WsNxdiuDnvl_NnBOI5_1r92r3lEnfUGnjknE9CE Message-ID: Subject: [PATCH] gdb/MicroBlaze: Add support for native linux gdb To: binutils@sourceware.org, gdb-patches@sourceware.org Cc: Michael Eager Content-Type: multipart/mixed; boundary="000000000000de290c0652b6dac9" X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org --000000000000de290c0652b6dac9 Content-Type: text/plain; charset="UTF-8" namaskaaram Attached is a patch to add native linux support for gdb including cache target support. The patch has been sanity tested on a linux instance running on qemu (runqemu). Some commonly used debugger functions such as breakpoints, step, next, finish, print were tested to be working. The original sources for the patch come from Xilinx/AMD Yocto git repository (2025.2) These went through some editing as well as some refactoring. dhanyavaadaaha gopi --000000000000de290c0652b6dac9 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-gdb-MicroBlaze-Add-support-for-native-linux-gdb.patch" Content-Disposition: attachment; filename="0001-gdb-MicroBlaze-Add-support-for-native-linux-gdb.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpmjzx3f0 RnJvbSBhMzMyOGI0Y2RmYzU4NzgzYjVmMjkwZjIyMjU1YjM2ZTI2YTZmYjE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHb3BpIEt1bWFyIEJ1bHVzdSA8Z29waUBzYW5raHlhLmNvbT4K RGF0ZTogVGh1LCA3IE1heSAyMDI2IDE3OjQ3OjQwICswNTMwClN1YmplY3Q6IFtQQVRDSF0gZ2Ri L01pY3JvQmxhemU6IEFkZCBzdXBwb3J0IGZvciBuYXRpdmUgbGludXggZ2RiCgpUaGlzIHBhdGNo IGFkZHMgc3VwcG9ydCBmb3IgbmF0aXZlIG1pY3JvYmxhemVlbC1saW51eC1nZGIgaW5jbHVkaW5n CnN1cHBvcnQgZm9yIGRlYnVnZ2luZyB3aXRoIGNvcmUgZHVtcCBmaWxlcy4gQ29kZSBpcyBiYXNl ZCBvbiBYaWxpbngvQU1ECmdpdCByZXBvc2l0b3J5IHVzZWQgZm9yIFlvY3RvIGJ1aWxkcyB3aXRo IGNoYW5nZXMgZm9yIHByb3BlciBpbmRlbnRhdGlvbgphbmQgcmVtb3ZhbCBvZiBjb21tZW50ZWQg b3V0IGNvZGUuCgpUZXN0aW5nIHdpdGggbmF0aXZlIGdkYiBoYXMgYmVlbiBjaGVja2VkIHRvIGJl IHdvcmtpbmcuIENhbiBsb2FkIGFuZCBydW4KYSBwcm9ncmFtIHVzaW5nIGNvbW1hbmRzIGxpa2Ug YnJlYWssIHN0ZXAgYW5kIGZpbmlzaC4gV2hlbiBhIGNvcmUgZmlsZSBpcwpzcGVjaWZpZWQgdG8g Z2RiOyByZWdpc3RlcnMgY2FuIGJlIGV4YW1pbmVkIHVzaW5nIGluZm8gcmVnLiBUZXN0ZWQgdXNp bmcKcWVtdS1zeXN0ZW0tbWljcm9ibGF6ZWVsIGZyb20gQU1EL1hpbGlueCBZb2N0byAyMDI1LjIg cmVsZWFzZS4KCiAgICBiZmQvQ2hhbmdlTG9nOgoKICAgICogZWxmMzItbWljcm9ibGF6ZS5jICht aWNyb2JsYXplX2VsZl9ncm9rX3Byc3RhdHVzKTogTmV3IGZ1bmN0aW9uLgogICAgICAobWljcm9i bGF6ZV9lbGZfZ3Jva19wc2luZm8pOiBMaWtld2lzZS4KCiAgICBnZGIvQ2hhbmdlTG9nOgoKICAg ICogTWFrZWZpbGUuaW4gKEhGSUxFU19OT19TUkNESVIpOiBBZGQgbWljcm9ibGF6ZS1saW51eC10 ZGVwLmgKICAgICAgQUxMREVQRklMRVM6IEFkZCBtaWNyb2JsYXplLWxpbnV4LW5hdC5jCgogICAg KiBjb25maWd1cmUuaG9zdCAoZ2RiX2hvc3RfY3B1KTogc2V0IHRvIG1pY3JvYmxhemUsCiAgICAg IChnZGJfaG9zdCk6IHNldCB0byBsaW51eAoKICAgICogY29uZmlndXJlLm5hdCAoTkFUX0RFUEZJ TEVTKTogQWRkIG1pY3JvYmxhemUtbGludXgtbmF0Lm8KCiAgICAqIGNvbmZpZ3VyZS50Z3QgKGdk Yl90YXJnZXRfb2JzKTogQWRkIGdsaWJjLXRkZXAubwoKICAgICogbWljcm9ibGF6ZS1saW51eC1u YXQuYzogTmV3IGZpbGUKCiAgICAqIG1pY3JvYmxhemUtbGludXgtdGRlcC5jIChzdHJ1Y3QgbWlj cm9ibGF6ZV9saW51eF9ncmVnc2V0KTogQWRkLAogICAgICAobWljcm9ibGF6ZV9saW51eF9pbml0 X2FiaSk6IGNvcmUgZmlsZSBzdXBwb3J0LAogICAgICBzaGFyZWQgb2JqZWN0IGZpbGUgaGFuZGxp bmcsIChJTklUX0dEQl9GSUxFKToKICAgICAgQ2FsbCBpbml0aWFsaXplX3RkZXNjX21pY3JvYmxh emVfbGludXgKCiAgICAqIG1pY3JvYmxhemUtbGludXgtdGRlcC5oOiBOZXcgZmlsZQoKICAgICog bWljcm9ibGF6ZS10ZGVwLmMgKG1pY3JvYmxhemVfYW5hbHl6ZV9wcm9sb2d1ZSk6IFNldAogICAg ICBjYWNoZS0+cmVnaXN0ZXJfb2Zmc2V0c1tyZF0gdG8gLWltbSwKICAgICAgKG1pY3JvYmxhemVf c2tpcF9wcm9sb2d1ZSk6IElnbm9yZSBzYWwgd2hlbiBzYWwubGluZSBpcyB6ZXJvLAogICAgICAo bWljcm9ibGF6ZV9mcmFtZV9jYWNoZSk6IENvbXB1dGVkIGNhY2hlLT5zYXZlZF9zcCBhbmQgc2V0 CiAgICAgIGNhY2hlLT5yZWdpc3Rlcl9vZmZzZXRzW01JQ1JPQkxBWkVfUFJFVl9QQ19SRUdOVU1d IGFuZCBsaWtld2lzZQogICAgICBmb3IgTUlDUk9CTEFaRV9TUF9SRUdOVU0sIChtaWNyb2JsYXpl X2ZyYW1lX3ByZXZfcmVnaXN0ZXIpOiBBZGQKICAgICAgc3BlY2lhbCBoYW5kbGluZyBmb3IgTUlD Uk9CTEFaRV9QQ19SRUdOVU0sIE1JQ1JPQkxBWkVfU1BfUkVHTlVNCiAgICAgIGFuZCBNSUNST0JM QVpFX0ZQX1JFR05VTSwKICAgICAgKG1pY3JvYmxhemVfc3VwcGx5X2dyZWdzZXQpOiBBZGQsCiAg ICAgIChtaWNyb2JsYXplX2l0ZXJhdGVfb3Zlcl9yZWdzZXRfc2VjdGlvbnMpOiBBZGQKICAgICAg KG1pY3JvYmxhemVfZ2RiYXJjaF9pbml0KTogU2V0IGRlZmF1bHQgdmFsdWUgZm9yIGdyZWdzZXQs CiAgICAgIHNpemVvZl9ncmVnc2V0LCBmcHJlZ3NldCwgc2l6ZW9mX2ZwcmVnc2V0LiBXaGVuIHRh cmdldCBoYXMKICAgICAgcmVnaXN0ZXIgc2V0cywgZW5hYmxlIGdlbmVyaWMgY29yZSBmaWxlIHN1 cHBvcnQgYnkgY2FsbGluZwogICAgICBzZXRfZ2RiYXJjaF9pdGVyYXRlX292ZXJfcmVnc2V0X3Nl Y3Rpb25zCgogICAgKiBtaWNyb2JsYXplLXRkZXAuaCAobWljcm9ibGF6ZV9nZGJhcmNoX3RkZXAp OiBBZGQgZ3JlZ3NldCwKICAgICAgc2l6ZW9mX2dyZWdzZXQsIGZwcmVnc2V0LCBzaXplb2ZfZnBy ZWdzZXQsCiAgICAgIChtaWNyb2JsYXplX3JlZ251bSk6IEFkZCBNSUNST0JMQVpFX1BSRVZfUENf UkVHTlVNIHRvIHIxNSwKICAgICAgTUlDUk9CTEFaRV9GUF9SRUdOVU0gdG8gcjE5LAogICAgICAo bWljcmJvbGF6ZV9mcmFtZV9jYWNoZSk6IEFkZCBzYXZlZF9zcCwKICAgICAgKG1pY3JvYmxhemVf c3VwcGx5X2dyZWdzZXQpOiBBZGQKClNpZ25lZC1vZmYtYnk6IERhdmlkIEhvbHNncm92ZSA8ZGF2 aWQuaG9sc2dyb3ZlQHBldGFsb2dpeC5jb20+ClNpZ25lZC1vZmYtYnk6IE5hdGhhbiBSb3NzaSA8 bmF0aGFuLnJvc3NpQHBldGFsb2dpeC5jb20+ClNpZ25lZC1vZmYtYnk6IE1haGVzaCBCb2RhcGF0 aSA8bWJvZGFwYXRAeGlsaW54LmNvbT4KU2lnbmVkLW9mZi1ieTogR29waSBLdW1hciBCdWx1c3Ug PGdvcGlAc2Fua2h5YS5jb20+Ci0tLQogYmZkL2VsZjMyLW1pY3JvYmxhemUuYyAgICAgIHwgIDY3 ICsrKysrKysrKysrCiBnZGIvTWFrZWZpbGUuaW4gICAgICAgICAgICAgfCAgIDIgKwogZ2RiL2Nv bmZpZ3VyZS5ob3N0ICAgICAgICAgIHwgICAzICsKIGdkYi9jb25maWd1cmUubmF0ICAgICAgICAg ICB8ICAgNCArCiBnZGIvY29uZmlndXJlLnRndCAgICAgICAgICAgfCAgIDMgKy0KIGdkYi9taWNy b2JsYXplLWxpbnV4LW5hdC5jICB8IDIyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIGdkYi9taWNyb2JsYXplLWxpbnV4LXRkZXAuYyB8ICAyOCArKysrKwogZ2RiL21pY3Jv YmxhemUtbGludXgtdGRlcC5oIHwgIDI0ICsrKysKIGdkYi9taWNyb2JsYXplLXRkZXAuYyAgICAg ICB8ICA5NyArKysrKysrKysrKysrLS0tCiBnZGIvbWljcm9ibGF6ZS10ZGVwLmggICAgICAgfCAg MTUgKystCiAxMCBmaWxlcyBjaGFuZ2VkLCA0NDkgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA3NTUgZ2RiL21pY3JvYmxhemUtbGludXgtbmF0LmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnZGIvbWljcm9ibGF6ZS1saW51eC10ZGVwLmgKCmRpZmYgLS1naXQgYS9i ZmQvZWxmMzItbWljcm9ibGF6ZS5jIGIvYmZkL2VsZjMyLW1pY3JvYmxhemUuYwppbmRleCAyZjgx NjdjNGQ5Yy4uNDJjNmE1YzFjNjAgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi1taWNyb2JsYXplLmMK KysrIGIvYmZkL2VsZjMyLW1pY3JvYmxhemUuYwpAQCAtNzY4LDYgKzc2OCw3MCBAQCBtaWNyb2Js YXplX2VsZl9pc19sb2NhbF9sYWJlbF9uYW1lIChiZmQgKmFiZmQsIGNvbnN0IGNoYXIgKm5hbWUp CiAgIHJldHVybiBfYmZkX2VsZl9pc19sb2NhbF9sYWJlbF9uYW1lIChhYmZkLCBuYW1lKTsKIH0K IAorLyogU3VwcG9ydCBmb3IgY29yZSBkdW1wIE5PVEUgc2VjdGlvbnMuICAqLworCitzdGF0aWMg Ym9vbAorbWljcm9ibGF6ZV9lbGZfZ3Jva19wcnN0YXR1cyAoYmZkICphYmZkLCBFbGZfSW50ZXJu YWxfTm90ZSAqbm90ZSkKK3sKKyAgaW50IG9mZnNldDsKKyAgdW5zaWduZWQgaW50IHNpemU7CisK KyAgc3dpdGNoIChub3RlLT5kZXNjc3opCisgICAgeworICAgICAgZGVmYXVsdDoKKwlyZXR1cm4g ZmFsc2U7CisKKyAgICAgIGNhc2UgMjI4OiAgICAgICAgIC8qIExpbnV4L01pY3JvQmxhemUgKi8K KwkvKiBwcl9jdXJzaWcgKi8KKwllbGZfdGRhdGEgKGFiZmQpLT5jb3JlLT5zaWduYWwgPSBiZmRf Z2V0XzE2IChhYmZkLCBub3RlLT5kZXNjZGF0YSArIDEyKTsKKworCS8qIHByX3BpZCAqLworCWVs Zl90ZGF0YSAoYWJmZCktPmNvcmUtPnBpZCA9IGJmZF9nZXRfMzIgKGFiZmQsIG5vdGUtPmRlc2Nk YXRhICsgMjQpOworCisJLyogcHJfcmVnICovCisJb2Zmc2V0ID0gNzI7CisJc2l6ZSA9IDUwICog NDsKKworCWJyZWFrOworICAgIH0KKworICAvKiBNYWtlIGEgIi5yZWcvOTk5IiBzZWN0aW9uLiAg Ki8KKyAgcmV0dXJuIF9iZmRfZWxmY29yZV9tYWtlX3BzZXVkb3NlY3Rpb24gKGFiZmQsICIucmVn IiwKKwkJCQkJICBzaXplLCBub3RlLT5kZXNjcG9zICsgb2Zmc2V0KTsKK30KKworLyogU3VwcG9y dCBmb3IgY29yZSBkdW1wIHBzaW5mby4gICovCisKK3N0YXRpYyBib29sCittaWNyb2JsYXplX2Vs Zl9ncm9rX3BzaW5mbyAoYmZkICphYmZkLCBFbGZfSW50ZXJuYWxfTm90ZSAqbm90ZSkKK3sKKyAg c3dpdGNoIChub3RlLT5kZXNjc3opCisgICAgeworICAgICAgZGVmYXVsdDoKKwlyZXR1cm4gZmFs c2U7CisKKyAgICAgIGNhc2UgMTI4OiAgICAgICAgIC8qIExpbnV4L01pY3JvQmxhemUgZWxmX3By cHNpbmZvICovCisJZWxmX3RkYXRhIChhYmZkKS0+Y29yZS0+cHJvZ3JhbQorCSA9IF9iZmRfZWxm Y29yZV9zdHJuZHVwIChhYmZkLCBub3RlLT5kZXNjZGF0YSArIDMyLCAxNik7CisJZWxmX3RkYXRh IChhYmZkKS0+Y29yZS0+Y29tbWFuZAorCSA9IF9iZmRfZWxmY29yZV9zdHJuZHVwIChhYmZkLCBu b3RlLT5kZXNjZGF0YSArIDQ4LCA4MCk7CisgICAgfQorCisgIC8qIE5vdGUgdGhhdCBmb3Igc29t ZSByZWFzb24sIGEgc3B1cmlvdXMgc3BhY2UgaXMgdGFja2VkCisgICAgIG9udG8gdGhlIGVuZCBv ZiB0aGUgYXJncyBpbiBzb21lIChhdCBsZWFzdCBvbmUgYW55d2F5KQorICAgICBpbXBsZW1lbnRh dGlvbnMsIHNvIHN0cmlwIGl0IG9mZiBpZiBpdCBleGlzdHMuICAqLworCisgIHsKKyAgICBjaGFy ICpjb21tYW5kID0gZWxmX3RkYXRhIChhYmZkKS0+Y29yZS0+Y29tbWFuZDsKKyAgICBpbnQgbiA9 IHN0cmxlbiAoY29tbWFuZCk7CisKKyAgICBpZiAoMCA8IG4gJiYgY29tbWFuZFtuIC0gMV0gPT0g JyAnKQorICAgICAgY29tbWFuZFtuIC0gMV0gPSAnXDAnOworICB9CisKKyAgcmV0dXJuIHRydWU7 Cit9CisKIC8qIEVMRiBsaW5rZXIgaGFzaCBlbnRyeS4gICovCiAKIHN0cnVjdCBlbGYzMl9tYl9s aW5rX2hhc2hfZW50cnkKQEAgLTM0OTAsNCArMzU1NCw3IEBAIG1pY3JvYmxhemVfZWxmX2FkZF9z eW1ib2xfaG9vayAoYmZkICphYmZkLAogI2RlZmluZSBlbGZfYmFja2VuZF9sYXRlX3NpemVfc2Vj dGlvbnMJCW1pY3JvYmxhemVfZWxmX2xhdGVfc2l6ZV9zZWN0aW9ucwogI2RlZmluZSBlbGZfYmFj a2VuZF9hZGRfc3ltYm9sX2hvb2sJCW1pY3JvYmxhemVfZWxmX2FkZF9zeW1ib2xfaG9vawogCisj ZGVmaW5lIGVsZl9iYWNrZW5kX2dyb2tfcHJzdGF0dXMgICAgICAgICAgICAgICBtaWNyb2JsYXpl X2VsZl9ncm9rX3Byc3RhdHVzCisjZGVmaW5lIGVsZl9iYWNrZW5kX2dyb2tfcHNpbmZvICAgICAg ICAgICAgICAgICBtaWNyb2JsYXplX2VsZl9ncm9rX3BzaW5mbworCiAjaW5jbHVkZSAiZWxmMzIt dGFyZ2V0LmgiCmRpZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4K aW5kZXggZTM4YmE5NWVlYmQuLmMzZTk2NzNiZWE4IDEwMDY0NAotLS0gYS9nZGIvTWFrZWZpbGUu aW4KKysrIGIvZ2RiL01ha2VmaWxlLmluCkBAIC0xNTIzLDYgKzE1MjMsNyBAQCBIRklMRVNfTk9f U1JDRElSID0gXAogCW1lbXJhbmdlLmggXAogCW1lbXRhZy5oIFwKIAltaWNyb2JsYXplLXRkZXAu aCBcCisJbWljcm9ibGF6ZS1saW51eC10ZGVwLmggXAogCW1pL21pLWNtZC1icmVhay5oIFwKIAlt aS9taS1jbWRzLmggXAogCW1pL21pLWNvbW1vbi5oIFwKQEAgLTE4OTEsNiArMTg5Miw3IEBAIEFM TERFUEZJTEVTID0gXAogCW02OGstbGludXgtbmF0LmMgXAogCW02OGstbGludXgtdGRlcC5jIFwK IAltNjhrLXRkZXAuYyBcCisJbWljcm9ibGF6ZS1saW51eC1uYXQuYyBcCiAJbWljcm9ibGF6ZS1s aW51eC10ZGVwLmMgXAogCW1pY3JvYmxhemUtdGRlcC5jIFwKIAltaW5ndy1oZGVwLmMgXApkaWZm IC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5ob3N0IGIvZ2RiL2NvbmZpZ3VyZS5ob3N0CmluZGV4IGU4 M2I5NDRjMGI4Li5jOTMzOTBiOTE3MSAxMDA2NDQKLS0tIGEvZ2RiL2NvbmZpZ3VyZS5ob3N0Cisr KyBiL2dkYi9jb25maWd1cmUuaG9zdApAQCAtNjAsNiArNjAsNyBAQCBocHBhKikJCQlnZGJfaG9z dF9jcHU9cGEgOzsKIGlbMzQ1NjddODYqKQkJZ2RiX2hvc3RfY3B1PWkzODYgOzsKIGxvb25nYXJj aCopCQlnZGJfaG9zdF9jcHU9bG9vbmdhcmNoIDs7CiBtNjgqKQkJCWdkYl9ob3N0X2NwdT1tNjhr IDs7CittaWNyb2JsYXplKikJCWdkYl9ob3N0X2NwdT1taWNyb2JsYXplIDs7CiBtaXBzKikJCQln ZGJfaG9zdF9jcHU9bWlwcyA7OwogcG93ZXJwYyogfCByczYwMDApCWdkYl9ob3N0X2NwdT1wb3dl cnBjIDs7CiBzcGFyY3Y5IHwgc3BhcmM2NCkJZ2RiX2hvc3RfY3B1PXNwYXJjIDs7CkBAIC0xMjks NiArMTMwLDggQEAgbTY4Ki0qLW9wZW5ic2QqKQlnZGJfaG9zdD1vYnNkIDs7CiAKIG04OCotKi1v cGVuYnNkKikJZ2RiX2hvc3Q9b2JzZCA7OwogCittaWNyb2JsYXplKi0qLWxpbnV4KikJZ2RiX2hv c3Q9bGludXggOzsKKwogbWlwcyotKi1saW51eCopCQlnZGJfaG9zdD1saW51eCA7OwogbWlwcyot Ki1uZXRic2Rhb3V0KiB8IG1pcHMqLSota25ldGJzZCotZ251KQogCQkJZ2RiX2hvc3Q9bmJzZCA7 OwpkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5uYXQgYi9nZGIvY29uZmlndXJlLm5hdAppbmRl eCAzOGRkNDE3OTUxMS4uNGY1YzE2MWM4NTQgMTAwNjQ0Ci0tLSBhL2dkYi9jb25maWd1cmUubmF0 CisrKyBiL2dkYi9jb25maWd1cmUubmF0CkBAIC0zMDUsNiArMzA1LDEwIEBAIGNhc2UgJHtnZGJf aG9zdH0gaW4KIAkJIyBIb3N0OiBNb3Rvcm9sYSBtNjhrIHJ1bm5pbmcgR05VL0xpbnV4LgogCQlO QVRERVBGSUxFUz0iJHtOQVRERVBGSUxFU30gbTY4ay1saW51eC1uYXQubyIKIAkJOzsKKwkgICAg bWljcm9ibGF6ZSkKKwkJIyBIb3N0OiBNaWNyb2JsYXplIHJ1bm5pbmcgR05VL0xpbnV4LgorCQlO QVRERVBGSUxFUz0iJHtOQVRERVBGSUxFU30gbWljcm9ibGF6ZS1saW51eC1uYXQubyIKKwkJOzsK IAkgICAgbWlwcykKIAkJIyBIb3N0OiBMaW51eC9NSVBTCiAJCU5BVERFUEZJTEVTPSIke05BVERF UEZJTEVTfSBsaW51eC1uYXQtdHJhZC5vIFwKZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUudGd0 IGIvZ2RiL2NvbmZpZ3VyZS50Z3QKaW5kZXggYmE0MTg2NTNlODYuLjIxZmM5ZDk1OTc4IDEwMDY0 NAotLS0gYS9nZGIvY29uZmlndXJlLnRndAorKysgYi9nZGIvY29uZmlndXJlLnRndApAQCAtNDI3 LDcgKzQyNyw4IEBAIG1lcC0qLSopCiBtaWNyb2JsYXplKi1saW51eC0qfG1pY3JvYmxhemUqLSot bGludXgqKQogCSMgVGFyZ2V0OiBYaWxpbnggTWljcm9CbGF6ZSBydW5uaW5nIExpbnV4CiAJZ2Ri X3RhcmdldF9vYnM9Im1pY3JvYmxhemUtdGRlcC5vIG1pY3JvYmxhemUtbGludXgtdGRlcC5vIHNv bGliLXN2cjQubyBcCi0JCQlzb2xpYi1zdnI0LWxpbnV4Lm8gc3ltZmlsZS1tZW0ubyBsaW51eC10 ZGVwLm8iCisJCQlnbGliYy10ZGVwLm8gc29saWItc3ZyNC1saW51eC5vIHN5bWZpbGUtbWVtLm8g XAorCQkJbGludXgtdGRlcC5vIgogCTs7CiBtaWNyb2JsYXplKi0qLSopCiAJIyBUYXJnZXQ6IFhp bGlueCBNaWNyb0JsYXplIHJ1bm5pbmcgc3RhbmRhbG9uZQpkaWZmIC0tZ2l0IGEvZ2RiL21pY3Jv YmxhemUtbGludXgtbmF0LmMgYi9nZGIvbWljcm9ibGF6ZS1saW51eC1uYXQuYwpuZXcgZmlsZSBt b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMC4uNjhkZmNmZTJiN2QKLS0tIC9kZXYvbnVsbAor KysgYi9nZGIvbWljcm9ibGF6ZS1saW51eC1uYXQuYwpAQCAtMCwwICsxLDIyMyBAQAorLyogTmF0 aXZlLWRlcGVuZGVudCBjb2RlIGZvciBHTlUvTGludXggTWljcm9CbGF6ZS4KKyAgIENvcHlyaWdo dCAoQykgMjAyMS0yMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlz IGZpbGUgaXMgcGFydCBvZiBHREIuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisK KyNpbmNsdWRlICJyZWdjYWNoZS5oIgorI2luY2x1ZGUgImdyZWdzZXQuaCIKKyNpbmNsdWRlICJs aW51eC1uYXQuaCIKKyNpbmNsdWRlICJtaWNyb2JsYXplLXRkZXAuaCIKKyNpbmNsdWRlICJtaWNy b2JsYXplLWxpbnV4LXRkZXAuaCIKKyNpbmNsdWRlICJuYXQvZ2RiX3B0cmFjZS5oIgorCisjZGVm aW5lIE1JQ1JPQkxBWkVfVEFSR0VUX0hBU19HRVRSRUdTIDAKKyNkZWZpbmUgTUlDUk9CTEFaRV9U QVJHRVRfSEFTX1NFVFJFR1MgMAorCisvKiBFTEZfTkdSRUcgZnJvbSBwcm9jZnMuaCAoZG9lcyBu b3Qgd29yaykgY29uZmxpY3RzIHdpdGggYXNtL2VsZi5oICh3b3JrcykKKyAgIGp1c3QgdXNlIE1J Q1JPQkxBWkVfRlNSX1JFR05VTSBhcyBOR1JFRy4gICovCisKK3N0YXRpYyBjb25zdCBpbnQgbWlj cm9ibGF6ZV9ncmVnX2JlZ2luID0gTUlDUk9CTEFaRV9SMV9SRUdOVU07CitzdGF0aWMgY29uc3Qg aW50IG1pY3JvYmxhemVfZ3JlZ19lbmQgPSBNSUNST0JMQVpFX0ZTUl9SRUdOVU07CisKKy8qIE1p Y3JvQmxhemUgTGludXggbmF0aXZlIGFkZGl0aW9ucyB0byB0aGUgZGVmYXVsdCBsaW51eCBzdXBw b3J0LiAgKi8KKworY2xhc3MgbWljcm9ibGF6ZV9saW51eF9uYXRfdGFyZ2V0IGZpbmFsIDogcHVi bGljIGxpbnV4X25hdF90YXJnZXQKK3sKK3B1YmxpYzoKKyAgLyogQWRkIG91ciByZWdpc3RlciBh Y2Nlc3MgbWV0aG9kcy4gICovCisgIHZvaWQgZmV0Y2hfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtKSBvdmVycmlkZTsKKyAgdm9pZCBzdG9yZV9yZWdpc3Rl cnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0pIG92ZXJyaWRlOworCisg IC8qIFJlYWQgc3VpdGFibGUgdGFyZ2V0IGRlc2NyaXB0aW9uLiAgKi8KKyAgY29uc3Qgc3RydWN0 IHRhcmdldF9kZXNjICpyZWFkX2Rlc2NyaXB0aW9uICgpIG92ZXJyaWRlOworfTsKKworc3RhdGlj IG1pY3JvYmxhemVfbGludXhfbmF0X3RhcmdldCB0aGVfbWljcm9ibGF6ZV9saW51eF9uYXRfdGFy Z2V0OworCisvKiBDb3B5IGdlbmVyYWwgcHVycG9zZSByZWdpc3RlciBSRUdOVU0gKG9yIGFsbCBn cCByZWdzIGlmIFJFR05VTSA9PSAtMSkKKyAgIGZyb20gcmVnc2V0IEdSRUdTIGludG8gUkVHQ0FD SEUuICAqLworCitzdGF0aWMgdm9pZAorc3VwcGx5X2dyZWdzZXRfcmVnbnVtIChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBjb25zdCBwcmdyZWdzZXRfdCAqZ3JlZ3MsCisJCSAgICBpbnQgcmVn bnVtKQoreworICBjb25zdCBlbGZfZ3JlZ190ICpyZWdwID0gKmdyZWdzOworCisgIC8qIEFjY2Vz cyBhbGwgcmVnaXN0ZXJzICovCisgIGlmIChyZWdudW0gPT0gLTEpCisgICAgeworICAgICAgLyog V2UgZmlsbCB0aGUgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycy4gICovCisgICAgICBmb3IgKGlu dCBpID0gbWljcm9ibGF6ZV9ncmVnX2JlZ2luOyBpIDwgbWljcm9ibGF6ZV9ncmVnX2VuZDsgaSsr KQorCXJlZ2NhY2hlLT5yYXdfc3VwcGx5IChpLCByZWdwICsgaSk7CisKKyAgICAgIC8qIEZpbGwg dGhlIGluYWNjZXNzaWJsZSB6ZXJvIHJlZ2lzdGVyIHdpdGggemVyby4gICovCisgICAgICByZWdj YWNoZS0+cmF3X3N1cHBseV96ZXJvZWQgKDApOworICAgIH0KKyAgZWxzZSBpZiAocmVnbnVtID09 IE1JQ1JPQkxBWkVfUjBfUkVHTlVNKQorICAgIHJlZ2NhY2hlLT5yYXdfc3VwcGx5X3plcm9lZCAo MCk7CisgIGVsc2UgaWYgKHJlZ251bSA+PSBtaWNyb2JsYXplX2dyZWdfYmVnaW4gJiYgcmVnbnVt IDwgbWljcm9ibGF6ZV9ncmVnX2VuZCkKKyAgICByZWdjYWNoZS0+cmF3X3N1cHBseSAocmVnbnVt LCByZWdwICsgcmVnbnVtKTsKK30KKworLyogQ29weSBhbGwgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lz dGVycyBmcm9tIHJlZ3NldCBHUkVHUyBpbnRvIFJFR0NBQ0hFLiAgKi8KKwordm9pZAorc3VwcGx5 X2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHByZ3JlZ3NldF90ICpn cmVncykKK3sKKyAgc3VwcGx5X2dyZWdzZXRfcmVnbnVtIChyZWdjYWNoZSwgZ3JlZ3MsIC0xKTsK K30KKworLyogQ29weSBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXIgUkVHTlVNIChvciBhbGwgZ3Ag cmVncyBpZiBSRUdOVU0gPT0gLTEpCisgICBmcm9tIFJFR0NBQ0hFIGludG8gcmVnc2V0IEdSRUdT LiAgKi8KKwordm9pZAorZmlsbF9ncmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBwcmdyZWdzZXRfdCAqZ3JlZ3MsIGludCByZWdudW0pCit7CisgIGVsZl9ncmVnX3QgKnJl Z3AgPSAqZ3JlZ3M7CisgIGlmIChyZWdudW0gPT0gLTEpCisgICAgeworICAgICAgLyogV2UgZmls bCB0aGUgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycy4gICovCisgICAgICBmb3IgKGludCBpID0g bWljcm9ibGF6ZV9ncmVnX2JlZ2luOyBpIDwgbWljcm9ibGF6ZV9ncmVnX2VuZDsgaSsrKQorCXJl Z2NhY2hlLT5yYXdfY29sbGVjdCAoaSwgcmVncCArIGkpOworICAgIH0KKyAgZWxzZSBpZiAocmVn bnVtID49IG1pY3JvYmxhemVfZ3JlZ19iZWdpbiAmJiByZWdudW0gPCBtaWNyb2JsYXplX2dyZWdf ZW5kKQorICAgIHJlZ2NhY2hlLT5yYXdfY29sbGVjdCAocmVnbnVtLCByZWdwICsgcmVnbnVtKTsK K30KKworLyogVHJhbnNmZXJpbmcgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzIGJldHdlZW4gR0RC LCBpbmZlcmlvcnMgYW5kIGNvcmVzLgorICAgU2luY2UgTWljcm9CbGF6ZSBmbG9hdGluZy1wb2lu dCByZWdpc3RlcnMgYXJlIHRoZSBzYW1lIGFzIEdQUnMgdGhlc2UgZG8KKyAgIG5vdGhpbmcuICAq LworCit2b2lkCitzdXBwbHlfZnByZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNv bnN0IGdkYl9mcHJlZ3NldF90ICpmcHJlZ3MpCit7Cit9CisKK3ZvaWQKK2ZpbGxfZnByZWdzZXQg KGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisJICAgICAgIGdkYl9mcHJlZ3NldF90 ICpmcHJlZ3MsIGludCByZWdubykKK3sKK30KKworLyogV3JhcHBlciBmdW5jdGlvbiBhcm91bmQg cHRyYWNlLiAgKi8KKworc3RhdGljIHZvaWQKK2ZldGNoX3RhcmdldF9ncF9yZWdzIChpbnQgdGlk LCBlbGZfZ3JlZ3NldF90ICpncmVncykKK3sKKyAgZWxmX2dyZWdfdCAqZ3JlZ3AgPSAqZ3JlZ3M7 CisKKyNpZiBNSUNST0JMQVpFX1RBUkdFVF9IQVNfR0VUUkVHUworICBpZiAocHRyYWNlIChQVFJB Q0VfR0VUUkVHUywgdGlkLCAwLCAobG9uZykgZ3JlZ3ApIDwgMCkKKyAgICB7CisgICAgICBwZXJy b3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCBnZXQgcmVnaXN0ZXJzIikpOworICAgICAgcmV0dXJu OworICAgIH0KKyNlcnJvciAidGhpcyBjb25maWd1cmF0aW9uIGRpZCBub3Qgd29yayBkdXJpbmcg dGVzdGluZyIKKyNlbHNlCisgIGZvciAoaW50IGkgPSBtaWNyb2JsYXplX2dyZWdfYmVnaW47IGkg PCBtaWNyb2JsYXplX2dyZWdfZW5kOyBpKyspCisgICAgeworICAgICAgZXJybm8gPSAwOworICAg ICAgZ3JlZ3BbaV0gPSBwdHJhY2UgKFBUUkFDRV9QRUVLVVNFUiwgdGlkLAorCQkJIChQVFJBQ0Vf VFlQRV9BUkczKSAoaSAqIHNpemVvZihlbGZfZ3JlZ190KSksIDApOworICAgICAgaWYgKGVycm5v ICE9IDApCisJeworCSAgcGVycm9yX3dpdGhfbmFtZSAoXygiQ291bGRuJ3QgZ2V0IHJlZ2lzdGVy IikpOworCX0KKyAgICB9CisjZW5kaWYKK30KKworCisvKiBXcmFwcGVyIGZ1bmN0aW9uIGFyb3Vu ZCBwdHJhY2UuICAqLworCitzdGF0aWMgdm9pZAorc3RvcmVfdGFyZ2V0X2dwX3JlZ3MgKCBpbnQg dGlkLCBlbGZfZ3JlZ3NldF90ICpncmVncykKK3sKKyAgZWxmX2dyZWdfdCAqZ3JlZ3AgPSAqZ3Jl Z3M7CisKKyNpZiBNSUNST0JMQVpFX1RBUkdFVF9IQVNfU0VUUkVHUworICBpZiAocHRyYWNlIChQ VFJBQ0VfU0VUUkVHUywgdGlkLCAwLCAobG9uZykgZ3JlZ3ApIDwgMCkKKyAgICB7CisgICAgICBw ZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCBzZXQgcmVnaXN0ZXJzIikpOworICAgIH0KKyNl cnJvciAidGhpcyBjb25maWd1cmF0aW9uIGRpZCBub3Qgd29yayBkdXJpbmcgdGVzdGluZyIKKyNl bHNlCisgIGZvciAoaW50IGkgPSBtaWNyb2JsYXplX2dyZWdfYmVnaW47IGkgPCBtaWNyb2JsYXpl X2dyZWdfZW5kOyBpKyspCisgICAgeworICAgICAgbG9uZyBsOworICAgICAgbCA9IGdyZWdwW2ld OworICAgICAgZXJybm8gPSAwOworICAgICAgcHRyYWNlIChQVFJBQ0VfUE9LRVVTRVIsIHRpZCwK KwkgICAgICAoUFRSQUNFX1RZUEVfQVJHMykgKGkgKiBzaXplb2YoZWxmX2dyZWdfdCkpLCBsKTsK KyAgICAgIGlmIChlcnJubyAhPSAwKQorCXsKKwkgIHBlcnJvcl93aXRoX25hbWUgKF8oIkNvdWxk bid0IHNldCByZWdpc3RlciIpKTsKKwl9CisgICAgfQorI2VuZGlmCit9CisKKy8qIFJldHVybiBh IHRhcmdldCBkZXNjcmlwdGlvbiBmb3IgdGhlIGN1cnJlbnQgdGFyZ2V0LiAgKi8KKworY29uc3Qg c3RydWN0IHRhcmdldF9kZXNjICoKK21pY3JvYmxhemVfbGludXhfbmF0X3RhcmdldDo6cmVhZF9k ZXNjcmlwdGlvbiAoKQoreworICByZXR1cm4gdGRlc2NfbWljcm9ibGF6ZV9saW51eDsKK30KKwor LyogRmV0Y2ggUkVHTlVNIChvciBhbGwgcmVnaXN0ZXJzIGlmIFJFR05VTSA9PSAtMSkgZnJvbSB0 aGUgdGFyZ2V0CisgICBpbnRvIFJFR0NBQ0hFIHVzaW5nIFBUUkFDRV9HRVRSRUdTRVQuICAqLwor Cit2b2lkCittaWNyb2JsYXplX2xpbnV4X25hdF90YXJnZXQ6OmZldGNoX3JlZ2lzdGVycyAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKwkJCQkJICAgICAgaW50IHJlZ25vKQoreworICBpbnQg dGlkOworICBlbGZfZ3JlZ3NldF90IGdyZWdzOworCisgIHRpZCA9IGdldF9wdHJhY2VfcGlkIChy ZWdjYWNoZS0+cHRpZCgpKTsKKworICBmZXRjaF90YXJnZXRfZ3BfcmVncyAodGlkLCAmZ3JlZ3Mp OworCisgIHN1cHBseV9ncmVnc2V0X3JlZ251bSAocmVnY2FjaGUsICZncmVncywgcmVnbm8pOwor fQorCisKKy8qIFN0b3JlIFJFR05VTSAob3IgYWxsIHJlZ2lzdGVycyBpZiBSRUdOVU0gPT0gLTEp IHRvIHRoZSB0YXJnZXQKKyAgIGZyb20gUkVHQ0FDSEUgdXNpbmcgUFRSQUNFX1NFVFJFR1NFVC4g ICovCisKK3ZvaWQKK21pY3JvYmxhemVfbGludXhfbmF0X3RhcmdldDo6c3RvcmVfcmVnaXN0ZXJz IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorCQkJCQkgICAgICBpbnQgcmVnbm8pCit7Cisg IGludCB0aWQ7CisgIGVsZl9ncmVnc2V0X3QgZ3JlZ3M7CisKKyAgdGlkID0gZ2V0X3B0cmFjZV9w aWQgKHJlZ2NhY2hlLT5wdGlkKCkpOworCisgIGZldGNoX3RhcmdldF9ncF9yZWdzICh0aWQsICZn cmVncyk7CisgIGZpbGxfZ3JlZ3NldCAocmVnY2FjaGUsICZncmVncywgcmVnbm8pOworICBzdG9y ZV90YXJnZXRfZ3BfcmVncyAodGlkLCAmZ3JlZ3MpOworfQorCisvKiBJbml0aWFsaXplIE1pY3Jv QmxhemUgTGludXggbmF0aXZlIHN1cHBvcnQuICAqLworCitJTklUX0dEQl9GSUxFIChtaWNyb2Js YXplX2xpbnV4X25hdCkKK3sKKyAgLyogUmVnaXN0ZXIgdGhlIHRhcmdldC4gICovCisgIGxpbnV4 X3RhcmdldCA9ICZ0aGVfbWljcm9ibGF6ZV9saW51eF9uYXRfdGFyZ2V0OworICBhZGRfaW5mX2No aWxkX3RhcmdldCAoJnRoZV9taWNyb2JsYXplX2xpbnV4X25hdF90YXJnZXQpOworfQpkaWZmIC0t Z2l0IGEvZ2RiL21pY3JvYmxhemUtbGludXgtdGRlcC5jIGIvZ2RiL21pY3JvYmxhemUtbGludXgt dGRlcC5jCmluZGV4IGYzYjAyNmZiNjgxLi5lZTUyMWVhMGViNiAxMDA2NDQKLS0tIGEvZ2RiL21p Y3JvYmxhemUtbGludXgtdGRlcC5jCisrKyBiL2dkYi9taWNyb2JsYXplLWxpbnV4LXRkZXAuYwpA QCAtMzUsNyArMzUsOSBAQAogI2luY2x1ZGUgImZyYW1lLXVud2luZC5oIgogI2luY2x1ZGUgInRy YW1wLWZyYW1lLmgiCiAjaW5jbHVkZSAibGludXgtdGRlcC5oIgorI2luY2x1ZGUgImdsaWJjLXRk ZXAuaCIKICNpbmNsdWRlICJzb2xpYi1zdnI0LWxpbnV4LmgiCisjaW5jbHVkZSAiZmVhdHVyZXMv bWljcm9ibGF6ZS1saW51eC5jIgogCiBzdGF0aWMgaW50CiBtaWNyb2JsYXplX2xpbnV4X21lbW9y eV9yZW1vdmVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCkBAIC0xMTUsMTEg KzExNywyMiBAQCBzdGF0aWMgc3RydWN0IHRyYW1wX2ZyYW1lIG1pY3JvYmxhemVfbGludXhfc2ln aGFuZGxlcl90cmFtcF9mcmFtZSA9CiAgIG1pY3JvYmxhemVfbGludXhfc2lnaGFuZGxlcl9jYWNo ZV9pbml0CiB9OwogCitzdGF0aWMgc3RydWN0IHJlZ3NldCBtaWNyb2JsYXplX2xpbnV4X2dyZWdz ZXQgPQorICB7CisgICAgTlVMTCwKKyAgICBtaWNyb2JsYXplX3N1cHBseV9ncmVnc2V0CisgIH07 CiAKIHN0YXRpYyB2b2lkCiBtaWNyb2JsYXplX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJj aF9pbmZvIGluZm8sCiAJCQkgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKIHsKKyAgc3RydWN0 IG1pY3JvYmxhemVfZ2RiYXJjaF90ZGVwICp0ZGVwID0KKwkgIGdkYmFyY2hfdGRlcDxtaWNyb2Js YXplX2dkYmFyY2hfdGRlcD4gKGdkYmFyY2gpOworCisgIHRkZXAtPmdyZWdzZXQgPSAmbWljcm9i bGF6ZV9saW51eF9ncmVnc2V0OworICB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCA9IE1JQ1JPQkxBWkVf UkVHSVNURVJfU0laRSAqIE1JQ1JPQkxBWkVfUkVEUl9SRUdOVU07CisKICAgbGludXhfaW5pdF9h YmkgKGluZm8sIGdkYmFyY2gsIDApOwogCiAgIHNldF9nZGJhcmNoX21lbW9yeV9yZW1vdmVfYnJl YWtwb2ludCAoZ2RiYXJjaCwKQEAgLTEzMSwxMCArMTQ0LDI1IEBAIG1pY3JvYmxhemVfbGludXhf aW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywKICAgLyogVHJhbXBvbGluZXMuICAq LwogICB0cmFtcF9mcmFtZV9wcmVwZW5kX3Vud2luZGVyIChnZGJhcmNoLAogCQkJCSZtaWNyb2Js YXplX2xpbnV4X3NpZ2hhbmRsZXJfdHJhbXBfZnJhbWUpOworCisgIC8qIEJGRCB0YXJnZXQgZm9y IGNvcmUgZmlsZXMuICAqLworICBpZiAoZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKSA9PSBC RkRfRU5ESUFOX0JJRykKKyAgICBzZXRfZ2RiYXJjaF9nY29yZV9iZmRfdGFyZ2V0IChnZGJhcmNo LCAiZWxmMzItbWljcm9ibGF6ZSIpOworICBlbHNlCisgICAgc2V0X2dkYmFyY2hfZ2NvcmVfYmZk X3RhcmdldCAoZ2RiYXJjaCwgImVsZjMyLW1pY3JvYmxhemVlbCIpOworCisKKyAgLyogU2hhcmVk IGxpYnJhcnkgaGFuZGxpbmcuICAqLworICBzZXRfZ2RiYXJjaF9za2lwX3RyYW1wb2xpbmVfY29k ZSAoZ2RiYXJjaCwgZmluZF9zb2xpYl90cmFtcG9saW5lX3RhcmdldCk7CisgIHNldF9nZGJhcmNo X3NraXBfc29saWJfcmVzb2x2ZXIgKGdkYmFyY2gsIGdsaWJjX3NraXBfc29saWJfcmVzb2x2ZXIp OworCiB9CiAKIElOSVRfR0RCX0ZJTEUgKG1pY3JvYmxhemVfbGludXhfdGRlcCkKIHsKICAgZ2Ri YXJjaF9yZWdpc3Rlcl9vc2FiaSAoYmZkX2FyY2hfbWljcm9ibGF6ZSwgMCwgR0RCX09TQUJJX0xJ TlVYLAogCQkJICBtaWNyb2JsYXplX2xpbnV4X2luaXRfYWJpKTsKKworICAvKiBJbml0aWFsaXpl IGxpbnV4IHRhcmdldCBkZXNjcmlwdGlvbi4gICovCisgIGluaXRpYWxpemVfdGRlc2NfbWljcm9i bGF6ZV9saW51eCAoKTsKIH0KZGlmZiAtLWdpdCBhL2dkYi9taWNyb2JsYXplLWxpbnV4LXRkZXAu aCBiL2dkYi9taWNyb2JsYXplLWxpbnV4LXRkZXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNGRlOTE5YjA0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvbWljcm9i bGF6ZS1saW51eC10ZGVwLmgKQEAgLTAsMCArMSwyNCBAQAorLyogVGFyZ2V0LWRlcGVuZGVudCBj b2RlIGZvciBHTlUvTGludXggb24gTWljcm9CbGF6ZS4KKworICAgQ29weXJpZ2h0IChDKSAyMDIx LTIwMjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyNpZm5kZWYgTUlD Uk9CTEFaRV9MSU5VWF9UREVQX0gKKyNkZWZpbmUgTUlDUk9CTEFaRV9MSU5VWF9UREVQX0gKKyAv KiBUYXJnZXQgZGVzY3JpcHRpb25zLiAgKi8KKyBleHRlcm4gc3RydWN0IHRhcmdldF9kZXNjICp0 ZGVzY19taWNyb2JsYXplX2xpbnV4OworCisjZW5kaWYgLyogTUlDUk9CTEFaRV9MSU5VWF9UREVQ X0ggKi8KZGlmZiAtLWdpdCBhL2dkYi9taWNyb2JsYXplLXRkZXAuYyBiL2dkYi9taWNyb2JsYXpl LXRkZXAuYwppbmRleCAzNTJkNmMxNzEwNS4uYjQyOTZlMjdhNGMgMTAwNjQ0Ci0tLSBhL2dkYi9t aWNyb2JsYXplLXRkZXAuYworKysgYi9nZGIvbWljcm9ibGF6ZS10ZGVwLmMKQEAgLTI1Miw2ICsy NTIsNyBAQCBtaWNyb2JsYXplX2FuYWx5emVfcHJvbG9ndWUgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBDT1JFX0FERFIgcGMsCiAJICBjYWNoZS0+ZnJhbWVsZXNzX3AgPSAwOyAvKiBGcmFtZSBm b3VuZC4gICovCiAJICBzYXZlX2hpZGRlbl9wb2ludGVyX2ZvdW5kID0gMDsKIAkgIG5vbl9zdGFj a19pbnN0cnVjdGlvbl9mb3VuZCA9IDA7CisgICAgICAgICAgY2FjaGUtPnJlZ2lzdGVyX29mZnNl dHNbcmRdID0gLWltbTsKIAkgIGNvbnRpbnVlOwogCX0KICAgICAgIGVsc2UgaWYgKElTX1NQSUxM X1NQKG9wLCByZCwgcmEpKQpAQCAtMzk5LDggKzQwMCw3IEBAIG1pY3JvYmxhemVfc2tpcF9wcm9s b2d1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBzdGFydF9wYykKICAgICB7 CiAgICAgICBzYWwgPSBmaW5kX3NhbF9mb3JfcGMgKGZ1bmNfc3RhcnQsIDApOwogCi0gICAgICBp ZiAoc2FsLmVuZCA8IGZ1bmNfZW5kCi0JICAmJiBzdGFydF9wYyA8PSBzYWwuZW5kKQorICAgICAg aWYgKHNhbC5saW5lICE9IDAgJiYgc2FsLmVuZCA8PSBmdW5jX2VuZCAgJiYgc3RhcnRfcGMgPD0g c2FsLmVuZCkKIAlzdGFydF9wYyA9IHNhbC5lbmQ7CiAgICAgfQogCkBAIC00MjAsNiArNDIwLDcg QEAgbWljcm9ibGF6ZV9mcmFtZV9jYWNoZSAoY29uc3QgZnJhbWVfaW5mb19wdHIgJm5leHRfZnJh bWUsIHZvaWQgKip0aGlzX2NhY2hlKQogICBzdHJ1Y3QgbWljcm9ibGF6ZV9mcmFtZV9jYWNoZSAq Y2FjaGU7CiAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKG5leHRf ZnJhbWUpOwogICBpbnQgcm47CisgIENPUkVfQUREUiBjdXJyZW50X3BjOwogCiAgIGlmICgqdGhp c19jYWNoZSkKICAgICByZXR1cm4gKHN0cnVjdCBtaWNyb2JsYXplX2ZyYW1lX2NhY2hlICopICp0 aGlzX2NhY2hlOwpAQCAtNDMzLDkgKzQzNCwxNSBAQCBtaWNyb2JsYXplX2ZyYW1lX2NhY2hlIChj b25zdCBmcmFtZV9pbmZvX3B0ciAmbmV4dF9mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCiAgICAg Y2FjaGUtPnJlZ2lzdGVyX29mZnNldHNbcm5dID0gLTE7CiAKICAgLyogQ2FsbCBmb3Igc2lkZSBl ZmZlY3RzLiAgKi8KLSAgZ2V0X2ZyYW1lX2Z1bmMgKG5leHRfZnJhbWUpOworICBjYWNoZS0+cGMg PSBnZXRfZnJhbWVfZnVuYyAobmV4dF9mcmFtZSk7CiAKLSAgY2FjaGUtPnBjID0gZ2V0X2ZyYW1l X2FkZHJlc3NfaW5fYmxvY2sgKG5leHRfZnJhbWUpOworICBjdXJyZW50X3BjID0gZ2V0X2ZyYW1l X3BjIChuZXh0X2ZyYW1lKTsKKyAgaWYgKGNhY2hlLT5wYykKKyAgICAgbWljcm9ibGF6ZV9hbmFs eXplX3Byb2xvZ3VlIChnZGJhcmNoLCBjYWNoZS0+cGMsIGN1cnJlbnRfcGMsIGNhY2hlKTsKKwor ICBjYWNoZS0+c2F2ZWRfc3AgPSBjYWNoZS0+YmFzZSArIGNhY2hlLT5mcmFtZXNpemU7CisgIGNh Y2hlLT5yZWdpc3Rlcl9vZmZzZXRzW01JQ1JPQkxBWkVfUFJFVl9QQ19SRUdOVU1dID0gY2FjaGUt PmJhc2U7CisgIGNhY2hlLT5yZWdpc3Rlcl9vZmZzZXRzW01JQ1JPQkxBWkVfU1BfUkVHTlVNXSA9 IGNhY2hlLT5zYXZlZF9zcDsKIAogICByZXR1cm4gY2FjaGU7CiB9CkBAIC00NjEsMTkgKzQ2OCwz MCBAQCBtaWNyb2JsYXplX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKGNvbnN0IGZyYW1lX2luZm9fcHRy ICZ0aGlzX2ZyYW1lLAogICBzdHJ1Y3QgbWljcm9ibGF6ZV9mcmFtZV9jYWNoZSAqY2FjaGUgPQog ICAgIG1pY3JvYmxhemVfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOwogCi0g IGlmIChjYWNoZS0+ZnJhbWVsZXNzX3ApCisgIGlmICgocmVnbnVtID09IE1JQ1JPQkxBWkVfU1Bf UkVHTlVNIHx8IHJlZ251bSA9PSBNSUNST0JMQVpFX0ZQX1JFR05VTSkKKyAgICAgICYmIGNhY2hl LT5yZWdpc3Rlcl9vZmZzZXRzW01JQ1JPQkxBWkVfU1BfUkVHTlVNXSkKICAgICB7Ci0gICAgICBp ZiAocmVnbnVtID09IE1JQ1JPQkxBWkVfUENfUkVHTlVNKQotCXJlZ251bSA9IDE1OwotICAgICAg aWYgKHJlZ251bSA9PSBNSUNST0JMQVpFX1NQX1JFR05VTSkKLQlyZWdudW0gPSAxOwotICAgICAg cmV0dXJuIHRyYWRfZnJhbWVfZ2V0X3ByZXZfcmVnaXN0ZXIgKHRoaXNfZnJhbWUsCi0JCQkJCSAg IGNhY2hlLT5zYXZlZF9yZWdzLCByZWdudW0pOworICAgICAgcmV0dXJuIGZyYW1lX3Vud2luZF9n b3RfY29uc3RhbnQKKwkgICAgICAgKHRoaXNfZnJhbWUsIHJlZ251bSwKKwkJY2FjaGUtPnJlZ2lz dGVyX29mZnNldHNbTUlDUk9CTEFaRV9TUF9SRUdOVU1dKTsKKyAgICB9CisKKyAgaWYgKHJlZ251 bSA9PSBNSUNST0JMQVpFX1BDX1JFR05VTSkKKyAgICB7CisgICAgICByZWdudW0gPSBNSUNST0JM QVpFX1BSRVZfUENfUkVHTlVNOworCisgICAgICBtaWNyb2JsYXplX2RlYnVnICgicHJldiBwYyBp cyByMTUgQCBmcmFtZSBvZmZzZXQgMHgleFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAo aW50KSBjYWNoZS0+cmVnaXN0ZXJfb2Zmc2V0c1tyZWdudW1dICk7CisKKyAgICAgIHJldHVybiBm cmFtZV91bndpbmRfZ290X21lbW9yeQorCSAgICAgICAodGhpc19mcmFtZSwgcmVnbnVtLAorCQlj YWNoZS0+cmVnaXN0ZXJfb2Zmc2V0c1tNSUNST0JMQVpFX1BSRVZfUENfUkVHTlVNXSk7CiAgICAg fQotICBlbHNlCi0gICAgcmV0dXJuIHRyYWRfZnJhbWVfZ2V0X3ByZXZfcmVnaXN0ZXIgKHRoaXNf ZnJhbWUsIGNhY2hlLT5zYXZlZF9yZWdzLAotCQkJCQkgcmVnbnVtKTsKIAorICBpZiAocmVnbnVt ID09IE1JQ1JPQkxBWkVfU1BfUkVHTlVNKQorICAgICAgICByZWdudW0gPSAxOworCisgIHJldHVy biB0cmFkX2ZyYW1lX2dldF9wcmV2X3JlZ2lzdGVyICh0aGlzX2ZyYW1lLCBjYWNoZS0+c2F2ZWRf cmVncywgcmVnbnVtKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmRfbGVn YWN5IG1pY3JvYmxhemVfZnJhbWVfdW53aW5kICgKQEAgLTcxOCw2ICs3MzYsNDIgQEAgbWljcm9i bGF6ZV9yZWdpc3Rlcl9nX3BhY2tldF9ndWVzc2VzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkK IAkJCQkgIHRkZXNjX21pY3JvYmxhemVfd2l0aF9zdGFja19wcm90ZWN0LmdldCAoKSk7CiB9CiAK K3ZvaWQKK21pY3JvYmxhemVfc3VwcGx5X2dyZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJl Z3NldCwKKwkJCSAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisJCQkgICBpbnQgcmVnbnVt LCBjb25zdCB2b2lkICpncmVncywgc2l6ZV90IHNpemUpCit7CisgIGNvbnN0IGdkYl9ieXRlICpy ZWdzID0gKGNvbnN0IGdkYl9ieXRlICopIGdyZWdzOworCisgIGlmIChyZWdudW0gPj0gMCkKKyAg ICByZWdjYWNoZS0+cmF3X3N1cHBseSAocmVnbnVtLCByZWdzICsgcmVnbnVtICogTUlDUk9CTEFa RV9SRUdJU1RFUl9TSVpFKTsKKworICBpZiAocmVnbnVtID09IC0xKSB7CisgICAgaW50IGk7CisK KyAgICBmb3IgKGkgPSAwOyBpIDwgTUlDUk9CTEFaRV9SRURSX1JFR05VTTsgaSsrKSB7CisgICAg ICByZWdjYWNoZS0+cmF3X3N1cHBseSAoaSwgcmVncyArIGkgKiBNSUNST0JMQVpFX1JFR0lTVEVS X1NJWkUpOworICAgIH0KKyAgfQorfQorCisKKy8qIFJldHVybiB0aGUgYXBwcm9wcmlhdGUgcmVn aXN0ZXIgc2V0IGZvciB0aGUgY29yZSBzZWN0aW9uIGlkZW50aWZpZWQKKyAgIGJ5IFNFQ1RfTkFN RSBhbmQgU0VDVF9TSVpFLiAgKi8KKworc3RhdGljIHZvaWQKK21pY3JvYmxhemVfaXRlcmF0ZV9v dmVyX3JlZ3NldF9zZWN0aW9ucyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0ZV9vdmVyX3JlZ3NldF9zZWN0aW9uc19j YiAqY2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2JfZGF0 YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlKQoreworICBtaWNyb2JsYXplX2dkYmFyY2hfdGRlcCAqdGRlcAorICAg ID0gZ2RiYXJjaF90ZGVwPG1pY3JvYmxhemVfZ2RiYXJjaF90ZGVwPiAoZ2RiYXJjaCk7CisKKyAg Y2IgKCIucmVnIiwgdGRlcC0+c2l6ZW9mX2dyZWdzZXQsIHRkZXAtPnNpemVvZl9ncmVnc2V0LCB0 ZGVwLT5ncmVnc2V0LCBOVUxMLAorICAgICAgY2JfZGF0YSk7Cit9CisKIHN0YXRpYyBzdHJ1Y3Qg Z2RiYXJjaCAqCiBtaWNyb2JsYXplX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBp bmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCiB7CkBAIC03NDIsNiArNzk2LDcgQEAg bWljcm9ibGF6ZV9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0 IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQogCQkJCSAgICAib3JnLmdudS5nZGIubWljcm9ibGF6ZS5j b3JlIik7CiAgICAgICBpZiAoZmVhdHVyZSA9PSBOVUxMKQogCXJldHVybiBOVUxMOworCiAgICAg ICB0ZGVzY19kYXRhID0gdGRlc2NfZGF0YV9hbGxvYyAoKTsKIAogICAgICAgdmFsaWRfcCA9IDE7 CkBAIC03NjksNiArODI0LDEzIEBAIG1pY3JvYmxhemVfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2Ri YXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKICAgZ2RiYXJjaCAq Z2RiYXJjaAogICAgID0gZ2RiYXJjaF9hbGxvYyAoJmluZm8sIGdkYmFyY2hfdGRlcF91cCAobmV3 IG1pY3JvYmxhemVfZ2RiYXJjaF90ZGVwKSk7CiAKKyAgbWljcm9ibGF6ZV9nZGJhcmNoX3RkZXAg KnRkZXAKKyAgICA9IGdkYmFyY2hfdGRlcDxtaWNyb2JsYXplX2dkYmFyY2hfdGRlcD4gKGdkYmFy Y2gpOworCisgIHRkZXAtPmdyZWdzZXQgPSBOVUxMOworICB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCA9 IDA7CisgIHRkZXAtPmZwcmVnc2V0ID0gTlVMTDsKKyAgdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0ID0g MDsKICAgc2V0X2dkYmFyY2hfbG9uZ19kb3VibGVfYml0IChnZGJhcmNoLCAxMjgpOwogCiAgIHNl dF9nZGJhcmNoX251bV9yZWdzIChnZGJhcmNoLCBNSUNST0JMQVpFX05VTV9SRUdTKTsKQEAgLTgx Nyw2ICs4NzksMTMgQEAgbWljcm9ibGF6ZV9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2lu Zm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQogICBpZiAodGRlc2NfZGF0YSAh PSBOVUxMKQogICAgIHRkZXNjX3VzZV9yZWdpc3RlcnMgKGdkYmFyY2gsIHRkZXNjLCBzdGQ6Om1v dmUgKHRkZXNjX2RhdGEpKTsKIAorICAvKiBJZiB3ZSBoYXZlIHJlZ2lzdGVyIHNldHMsIGVuYWJs ZSB0aGUgZ2VuZXJpYyBjb3JlIGZpbGUgc3VwcG9ydC4gICovCisgIGlmICh0ZGVwLT5ncmVnc2V0 KQorICAgIHsKKyAgICAgIHNldF9nZGJhcmNoX2l0ZXJhdGVfb3Zlcl9yZWdzZXRfc2VjdGlvbnMK KyAgICAgICAgKGdkYmFyY2gsIG1pY3JvYmxhemVfaXRlcmF0ZV9vdmVyX3JlZ3NldF9zZWN0aW9u cyk7CisgICAgfQorCiAgIHJldHVybiBnZGJhcmNoOwogfQogCmRpZmYgLS1naXQgYS9nZGIvbWlj cm9ibGF6ZS10ZGVwLmggYi9nZGIvbWljcm9ibGF6ZS10ZGVwLmgKaW5kZXggZWY1NDM5ODU0ZDAu LmI1NDg0MTNiOGJjIDEwMDY0NAotLS0gYS9nZGIvbWljcm9ibGF6ZS10ZGVwLmgKKysrIGIvZ2Ri L21pY3JvYmxhemUtdGRlcC5oCkBAIC0yMyw4ICsyMywxNCBAQAogI2luY2x1ZGUgImdkYmFyY2gu aCIKIAogLyogTWljcm9ibGF6ZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW5mb3JtYXRpb24uICAq LworCiBzdHJ1Y3QgbWljcm9ibGF6ZV9nZGJhcmNoX3RkZXAgOiBnZGJhcmNoX3RkZXBfYmFzZQog eworICAvKiBSZWdpc3RlciBzZXRzLiAgKi8KKyAgc3RydWN0IHJlZ3NldCAqZ3JlZ3NldDsKKyAg c2l6ZV90IHNpemVvZl9ncmVnc2V0OworICBzdHJ1Y3QgcmVnc2V0ICpmcHJlZ3NldDsKKyAgc2l6 ZV90IHNpemVvZl9mcHJlZ3NldDsKIH07CiAKIC8qIFJlZ2lzdGVyIG51bWJlcnMuICAqLwpAQCAt NDUsMTEgKzUxLDExIEBAIGVudW0gbWljcm9ibGF6ZV9yZWdudW0KICAgTUlDUk9CTEFaRV9SMTJf UkVHTlVNLAogICBNSUNST0JMQVpFX1IxM19SRUdOVU0sCiAgIE1JQ1JPQkxBWkVfUjE0X1JFR05V TSwKLSAgTUlDUk9CTEFaRV9SMTVfUkVHTlVNLAorICBNSUNST0JMQVpFX1IxNV9SRUdOVU0sTUlD Uk9CTEFaRV9QUkVWX1BDX1JFR05VTSA9IE1JQ1JPQkxBWkVfUjE1X1JFR05VTSwKICAgTUlDUk9C TEFaRV9SMTZfUkVHTlVNLAogICBNSUNST0JMQVpFX1IxN19SRUdOVU0sCiAgIE1JQ1JPQkxBWkVf UjE4X1JFR05VTSwKLSAgTUlDUk9CTEFaRV9SMTlfUkVHTlVNLAorICBNSUNST0JMQVpFX1IxOV9S RUdOVU0sTUlDUk9CTEFaRV9GUF9SRUdOVU0gPSBNSUNST0JMQVpFX1IxOV9SRUdOVU0sCiAgIE1J Q1JPQkxBWkVfUjIwX1JFR05VTSwKICAgTUlDUk9CTEFaRV9SMjFfUkVHTlVNLAogICBNSUNST0JM QVpFX1IyMl9SRUdOVU0sCkBAIC05OCw2ICsxMDQsNyBAQCBzdHJ1Y3QgbWljcm9ibGF6ZV9mcmFt ZV9jYWNoZQogICBDT1JFX0FERFIgYmFzZTsKICAgQ09SRV9BRERSIHBjOwogCisgIENPUkVfQURE UiBzYXZlZF9zcDsKICAgLyogRG8gd2UgaGF2ZSBhIGZyYW1lPyAgKi8KICAgaW50IGZyYW1lbGVz c19wOwogCkBAIC0xMjAsNCArMTI3LDggQEAgc3RydWN0IG1pY3JvYmxhemVfZnJhbWVfY2FjaGUK ICAgIE9ubHkgdXNlZCBmb3IgbmF0aXZlIGRlYnVnZ2luZy4gICovCiAjZGVmaW5lIE1JQ1JPQkxB WkVfQlJFQUtQT0lOVCB7MHhiYSwgMHgwYywgMHgwMCwgMHgxOH0KIAorZXh0ZXJuIHZvaWQgbWlj cm9ibGF6ZV9zdXBwbHlfZ3JlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAorCQkJ CSAgICAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtLAorCQkJCSAgICAg ICBjb25zdCB2b2lkICpncmVncywgc2l6ZV90IHNpemUpOworCiAjZW5kaWYgLyogR0RCX01JQ1JP QkxBWkVfVERFUF9IICovCi0tIAoyLjQ3LjMKCg== --000000000000de290c0652b6dac9--