From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4239 invoked by alias); 6 Feb 2018 18:58:54 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 4171 invoked by uid 89); 6 Feb 2018 18:58:54 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-22.4 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_NUMSUBJECT,RCVD_IN_DNSWL_NONE,SPF_PASS,T_RP_MATCHES_RCVD,UNSUBSCRIBE_BODY autolearn=ham version=3.3.2 spammy=redo, inclusive, rush, expectation X-HELO: mail-it0-f68.google.com Received: from mail-it0-f68.google.com (HELO mail-it0-f68.google.com) (209.85.214.68) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 06 Feb 2018 18:58:50 +0000 Received: by mail-it0-f68.google.com with SMTP id p139so3809685itb.1 for ; Tue, 06 Feb 2018 10:58:50 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=hFvoKR+GRhHLaSHerSSPyet4sQ/PAYe+YPw5xOyqhdU=; b=M0lJaNFeql35K1hjuoUkPmpduod5o5WAF7nv6nALx2kusrbYWm/UYsQNmdhdjvRNmP xM/0Gb30GQDh6Q05El1MrAfcu9ieVM3QUYOpUIRP0iZsVatDZ/SQKfP+HXcQ9U+P80Xd SMrnbM2iFlbAcJ3T1IvDwEtk7/0wu9QEqU4q7ZsaY4CL2px/U0iIi4bG58WJoyD1dsLn 7rQU/+ejRVsKJH+265eUSZhhHsfOU9HtwtAW4BviYAvBlLRq5KRjMPFf+NqhrSDYAUe4 3JGdt6VT4w2uEnXC3G8KfVkvpzRLQt8PDRcjaFOd2ZFkk/mf7nizdAPlgUEb0ESImi03 N+4w== X-Gm-Message-State: APf1xPDjb3w/EYcQ57uuzYb2BckN3rQXDmJMixR/6cx5GHKLJn8j/zJ7 gGSva+SvqUgUmTSTlKTYNerpOoYILMlYqts7RIuzIpsMNMg= X-Google-Smtp-Source: AH8x2252eie5GcLTwm+2HNTVcTuior+Tk0+mNFQ3HHNrDE8wEVWHBjNtGEobtowmhDdra9wKo/0k7wZKBQ6B0vUBU/0= X-Received: by 10.36.224.141 with SMTP id c135mr4589776ith.144.1517943528193; Tue, 06 Feb 2018 10:58:48 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.140.204 with HTTP; Tue, 6 Feb 2018 10:58:07 -0800 (PST) From: "Doug Evans via gdb-patches" Reply-To: Doug Evans Date: Tue, 06 Feb 2018 18:58:00 -0000 Message-ID: Subject: [PATCH PR guile/21104] Fix GDB build failure with Guile 2.2 To: gdb-patches Cc: guile-devel@gnu.org Content-Type: multipart/mixed; boundary="94eb2c19e766ca2bdd05648fc4a1" X-IsSubscribed: yes X-SW-Source: 2018-02/txt/msg00093.txt.bz2 --94eb2c19e766ca2bdd05648fc4a1 Content-Type: text/plain; charset="UTF-8" Content-length: 2444 Guile folk. Any comments? This patch gets gdb building again with guile 2.2. Regression tested with guile 2.0.{13,14} and 2.2.3 on amd64-linux. In time I think we could delete Guile 2.0 support and that would simplify the code, but no rush. [And if someone wants to redo the 2.0 support to further reduced diffs that may be a possibility.] 2018-02-06 Doug Evans PR guile/21104 * NEWS: Mention guile 2.2 is supported again. * configure.ac: Add guile-2.2 back. * configure: Regenerate. * guile/scm-ports.c (PORTS_V22): New macro. (ioscm_memory_port) [!PORTS_V22]: Make read_buf_size,write_buf_size !PORTS_V22 only. (port_type_t): New type. (stdio_port_type): Renamed from stdio_port_desc. (stdio_port_type_name): Renamed from stdio_port_desc_name. (memory_port_type): Renamed from memory_port_desc. (memmory_port_type_name): Renamed from memory_port_desc_name. (natural_buf_size) [PORTS_V22]: New variable. (ioscm_open_port): New argument stream. All callers updated. (ioscm_read, ioscm_write) [PORTS_V22]: New functions. (ioscm_init_gdb_stdio_port) [PORTS_V22]: Adapt for use in Guile >= 2.2. (gdbscm_is_stdio_port): New function. (gdbscm_stdio_port_p): Call it. (gdbscm_get_natural_buffer_sizes, gdbscm_memory_port_seek) (gdbscm_memory_port_read, gdbscm_memory_port_write) [PORTS_V22]: New functions. (gdbscm_memory_port_print): Adapt for use in Guile >= 2.2. (ioscm_init_memory_port_type): Ditto. (ioscm_init_memory_stream): Replaces ioscm_init_memory_port. (ioscm_init_memory_port_buffers): New function. (gdbscm_open_memory): Update. (gdbscm_is_memory_port): Adapt for use in Guile >= 2.2. (port_functions) [!PORTS_V22]: Only define Guile functions memory-port-read-buffer-size, set-memory-port-read-buffer-size!, memory-port-write-buffer-size, set-memory-port-write-buffer-size! for Guile < 2.2. (gdbscm_initialize_ports): Only initialize out_of_range_buf_size if !PORTS_V22. doc/ * guile.texi (Memory Ports in Guile): Mention that these functions are only supported in Guile 2.0: memory-port-read-buffer-size, set-memory-port-read-buffer-size!, memory-port-write-buffer-size, set-memory-port-read-buffer-size!. --94eb2c19e766ca2bdd05648fc4a1 Content-Type: text/x-patch; charset="US-ASCII"; name="guile22.patch" Content-Disposition: attachment; filename="guile22.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jdc0cljn0 Content-length: 34380 MjAxOC0wMS0yMSAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCVBS IGd1aWxlLzIxMTA0CgkqIE5FV1M6IE1lbnRpb24gZ3VpbGUgMi4yIGlzIHN1 cHBvcnRlZCBhZ2Fpbi4KCSogY29uZmlndXJlLmFjOiBBZGQgZ3VpbGUtMi4y IGJhY2suCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogZ3VpbGUvc2Nt LXBvcnRzLmMgKFBPUlRTX1YyMik6IE5ldyBtYWNyby4KCShpb3NjbV9tZW1v cnlfcG9ydCkgWyFQT1JUU19WMjJdOiBNYWtlIHJlYWRfYnVmX3NpemUsd3Jp dGVfYnVmX3NpemUKCSFQT1JUU19WMjIgb25seS4KCShwb3J0X3R5cGVfdCk6 IE5ldyB0eXBlLgoJKHN0ZGlvX3BvcnRfdHlwZSk6IFJlbmFtZWQgZnJvbSBz dGRpb19wb3J0X2Rlc2MuCgkoc3RkaW9fcG9ydF90eXBlX25hbWUpOiBSZW5h bWVkIGZyb20gc3RkaW9fcG9ydF9kZXNjX25hbWUuCgkobWVtb3J5X3BvcnRf dHlwZSk6IFJlbmFtZWQgZnJvbSBtZW1vcnlfcG9ydF9kZXNjLgoJKG1lbW1v cnlfcG9ydF90eXBlX25hbWUpOiBSZW5hbWVkIGZyb20gbWVtb3J5X3BvcnRf ZGVzY19uYW1lLgoJKG5hdHVyYWxfYnVmX3NpemUpIFtQT1JUU19WMjJdOiBO ZXcgdmFyaWFibGUuCgkoaW9zY21fb3Blbl9wb3J0KTogTmV3IGFyZ3VtZW50 IHN0cmVhbS4gQWxsIGNhbGxlcnMgdXBkYXRlZC4KCShpb3NjbV9yZWFkLCBp b3NjbV93cml0ZSkgW1BPUlRTX1YyMl06IE5ldyBmdW5jdGlvbnMuCgkoaW9z Y21faW5pdF9nZGJfc3RkaW9fcG9ydCkgW1BPUlRTX1YyMl06IEFkYXB0IGZv ciB1c2UgaW4gR3VpbGUgPj0gMi4yLgoJKGdkYnNjbV9pc19zdGRpb19wb3J0 KTogTmV3IGZ1bmN0aW9uLgoJKGdkYnNjbV9zdGRpb19wb3J0X3ApOiBDYWxs IGl0LgoJKGdkYnNjbV9nZXRfbmF0dXJhbF9idWZmZXJfc2l6ZXMsIGdkYnNj bV9tZW1vcnlfcG9ydF9zZWVrKQoJKGdkYnNjbV9tZW1vcnlfcG9ydF9yZWFk LCBnZGJzY21fbWVtb3J5X3BvcnRfd3JpdGUpIFtQT1JUU19WMjJdOiBOZXcK CWZ1bmN0aW9ucy4KCShnZGJzY21fbWVtb3J5X3BvcnRfcHJpbnQpOiBBZGFw dCBmb3IgdXNlIGluIEd1aWxlID49IDIuMi4KCShpb3NjbV9pbml0X21lbW9y eV9wb3J0X3R5cGUpOiBEaXR0by4KCShpb3NjbV9pbml0X21lbW9yeV9zdHJl YW0pOiBSZXBsYWNlcyBpb3NjbV9pbml0X21lbW9yeV9wb3J0LgoJKGlvc2Nt X2luaXRfbWVtb3J5X3BvcnRfYnVmZmVycyk6IE5ldyBmdW5jdGlvbi4KCShn ZGJzY21fb3Blbl9tZW1vcnkpOiBVcGRhdGUuCgkoZ2Ric2NtX2lzX21lbW9y eV9wb3J0KTogQWRhcHQgZm9yIHVzZSBpbiBHdWlsZSA+PSAyLjIuCgkocG9y dF9mdW5jdGlvbnMpIFshUE9SVFNfVjIyXTogT25seSBkZWZpbmUgR3VpbGUg ZnVuY3Rpb25zCgltZW1vcnktcG9ydC1yZWFkLWJ1ZmZlci1zaXplLCBzZXQt bWVtb3J5LXBvcnQtcmVhZC1idWZmZXItc2l6ZSEsCgltZW1vcnktcG9ydC13 cml0ZS1idWZmZXItc2l6ZSwgc2V0LW1lbW9yeS1wb3J0LXdyaXRlLWJ1ZmZl ci1zaXplIQoJZm9yIEd1aWxlIDwgMi4yLgoJKGdkYnNjbV9pbml0aWFsaXpl X3BvcnRzKTogT25seSBpbml0aWFsaXplIG91dF9vZl9yYW5nZV9idWZfc2l6 ZSBpZgoJIVBPUlRTX1YyMi4KCglkb2MvCgkqIGd1aWxlLnRleGkgKE1lbW9y eSBQb3J0cyBpbiBHdWlsZSk6IE1lbnRpb24gdGhhdCB0aGVzZSBmdW5jdGlv bnMKCWFyZSBvbmx5IHN1cHBvcnRlZCBpbiBHdWlsZSAyLjA6IG1lbW9yeS1w b3J0LXJlYWQtYnVmZmVyLXNpemUsCglzZXQtbWVtb3J5LXBvcnQtcmVhZC1i dWZmZXItc2l6ZSEsIG1lbW9yeS1wb3J0LXdyaXRlLWJ1ZmZlci1zaXplLAoJ c2V0LW1lbW9yeS1wb3J0LXJlYWQtYnVmZmVyLXNpemUhLgoKZGlmZiAtLWdp dCBhL2dkYi9ORVdTIGIvZ2RiL05FV1MKaW5kZXggZjY5MTczYTI0NS4uMzI0 Zjk4YjIxNyAxMDA2NDQKLS0tIGEvZ2RiL05FV1MKKysrIGIvZ2RiL05FV1MK QEAgLTMsNiArMyw4IEBACiAKICoqKiBDaGFuZ2VzIHNpbmNlIEdEQiA4LjEK IAorKiBHdWlsZSAyLjIgc3VwcG9ydCBoYXMgYmVlbiByZXN0b3JlZC4KKwog KiAnaW5mbyBwcm9jJyBub3cgd29ya3Mgb24gcnVubmluZyBwcm9jZXNzZXMg b24gRnJlZUJTRCBzeXN0ZW1zIGFuZCBjb3JlCiAgIGZpbGVzIGNyZWF0ZWQg b24gRnJlZUJTRCBzeXN0ZW1zLgogCmRpZmYgLS1naXQgYS9nZGIvY29uZmln dXJlIGIvZ2RiL2NvbmZpZ3VyZQppbmRleCBhNjFhNzNmNmUyLi44NjU3MDU1 ZWU1IDEwMDc1NQotLS0gYS9nZGIvY29uZmlndXJlCisrKyBiL2dkYi9jb25m aWd1cmUKQEAgLTEwODY0LDcgKzEwODY0LDcgQEAgZmkKIAogCiAKLXRyeV9n dWlsZV92ZXJzaW9ucz0iZ3VpbGUtMi4wIgordHJ5X2d1aWxlX3ZlcnNpb25z PSJndWlsZS0yLjAgZ3VpbGUtMi4yIgogaGF2ZV9saWJndWlsZT1ubwogY2Fz ZSAiJHt3aXRoX2d1aWxlfSIgaW4KIG5vKQpkaWZmIC0tZ2l0IGEvZ2RiL2Nv bmZpZ3VyZS5hYyBiL2dkYi9jb25maWd1cmUuYWMKaW5kZXggZTUzZGRhMDBk Mi4uYTQ1NDIwMjE0NiAxMDA2NDQKLS0tIGEvZ2RiL2NvbmZpZ3VyZS5hYwor KysgYi9nZGIvY29uZmlndXJlLmFjCkBAIC0xMTU0LDcgKzExNTQsNyBAQCBB Q19NU0dfUkVTVUxUKFskd2l0aF9ndWlsZV0pCiBkbmwgV2UgY2hlY2sgZ3Vp bGUgd2l0aCBwa2ctY29uZmlnLgogQUNfUEFUSF9QUk9HKHBrZ19jb25maWdf cHJvZ19wYXRoLCBwa2ctY29uZmlnLCBtaXNzaW5nKQogCi10cnlfZ3VpbGVf dmVyc2lvbnM9Imd1aWxlLTIuMCIKK3RyeV9ndWlsZV92ZXJzaW9ucz0iZ3Vp bGUtMi4wIGd1aWxlLTIuMiIKIGhhdmVfbGliZ3VpbGU9bm8KIGNhc2UgIiR7 d2l0aF9ndWlsZX0iIGluCiBubykKZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ3Vp bGUudGV4aSBiL2dkYi9kb2MvZ3VpbGUudGV4aQppbmRleCBhNWNmZTljNDM1 Li5kNzFmYjg1ZjMxIDEwMDY0NAotLS0gYS9nZGIvZG9jL2d1aWxlLnRleGkK KysrIGIvZ2RiL2RvYy9ndWlsZS50ZXhpCkBAIC0zNTU2LDIxICszNTU2LDI5 IEBAIGluY2x1c2l2ZS4KIEBkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gbWVt b3J5LXBvcnQtcmVhZC1idWZmZXItc2l6ZSBtZW1vcnktcG9ydAogUmV0dXJu IHRoZSBzaXplIG9mIHRoZSByZWFkIGJ1ZmZlciBvZiBAY29kZXs8Z2RiOm1l bW9yeS1wb3J0Pn0KIEB2YXJ7bWVtb3J5LXBvcnR9LgorVGhpcyBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZSB3aXRoIEd1aWxlIDIuMC4gU3VwcG9ydCBm b3IgbGF0ZXIgdmVyc2lvbnMKK29mIEd1aWxlIHVzZSBHdWlsZSdzIGJ1aWx0 aW4gYnVmZmVyaW5nIGFuZCBkbyBub3QgbmVlZCB0aGlzLgogQGVuZCBkZWZm bgogCiBAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IHNldC1tZW1vcnktcG9y dC1yZWFkLWJ1ZmZlci1zaXplISBtZW1vcnktcG9ydCBzaXplCiBTZXQgdGhl IHNpemUgb2YgdGhlIHJlYWQgYnVmZmVyIG9mIEBjb2RlezxnZGI6bWVtb3J5 LXBvcnQ+fQogQHZhcnttZW1vcnktcG9ydH0gdG8gQHZhcntzaXplfS4gIFRo ZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQuCitUaGlzIGZ1bmN0aW9uIGlzIG9u bHkgYXZhaWxhYmxlIHdpdGggR3VpbGUgMi4wLiBTdXBwb3J0IGZvciBsYXRl ciB2ZXJzaW9ucworb2YgR3VpbGUgdXNlIEd1aWxlJ3MgYnVpbHRpbiBidWZm ZXJpbmcgYW5kIGRvIG5vdCBuZWVkIHRoaXMuCiBAZW5kIGRlZmZuCiAKIEBk ZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gbWVtb3J5LXBvcnQtd3JpdGUtYnVm ZmVyLXNpemUgbWVtb3J5LXBvcnQKIFJldHVybiB0aGUgc2l6ZSBvZiB0aGUg d3JpdGUgYnVmZmVyIG9mIEBjb2RlezxnZGI6bWVtb3J5LXBvcnQ+fQogQHZh cnttZW1vcnktcG9ydH0uCitUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxh YmxlIHdpdGggR3VpbGUgMi4wLiBTdXBwb3J0IGZvciBsYXRlciB2ZXJzaW9u cworb2YgR3VpbGUgdXNlIEd1aWxlJ3MgYnVpbHRpbiBidWZmZXJpbmcgYW5k IGRvIG5vdCBuZWVkIHRoaXMuCiBAZW5kIGRlZmZuCiAKIEBkZWZmbiB7U2No ZW1lIFByb2NlZHVyZX0gc2V0LW1lbW9yeS1wb3J0LXdyaXRlLWJ1ZmZlci1z aXplISBtZW1vcnktcG9ydCBzaXplCiBTZXQgdGhlIHNpemUgb2YgdGhlIHdy aXRlIGJ1ZmZlciBvZiBAY29kZXs8Z2RiOm1lbW9yeS1wb3J0Pn0KIEB2YXJ7 bWVtb3J5LXBvcnR9IHRvIEB2YXJ7c2l6ZX0uICBUaGUgcmVzdWx0IGlzIHVu c3BlY2lmaWVkLgorVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSB3 aXRoIEd1aWxlIDIuMC4gU3VwcG9ydCBmb3IgbGF0ZXIgdmVyc2lvbnMKK29m IEd1aWxlIHVzZSBHdWlsZSdzIGJ1aWx0aW4gYnVmZmVyaW5nIGFuZCBkbyBu b3QgbmVlZCB0aGlzLgogQGVuZCBkZWZmbgogCiBBIG1lbW9yeSBwb3J0IGlz IGNsb3NlZCBsaWtlIGFueSBvdGhlciBwb3J0LCB3aXRoIEBjb2Rle2Nsb3Nl LXBvcnR9LgpkaWZmIC0tZ2l0IGEvZ2RiL2d1aWxlL3NjbS1wb3J0cy5jIGIv Z2RiL2d1aWxlL3NjbS1wb3J0cy5jCmluZGV4IDI2MzYxZTRhMGMuLjAxZmU2 MTc2NDEgMTAwNjQ0Ci0tLSBhL2dkYi9ndWlsZS9zY20tcG9ydHMuYworKysg Yi9nZGIvZ3VpbGUvc2NtLXBvcnRzLmMKQEAgLTM2LDYgKzM2LDEzIEBACiAj ZW5kaWYKICNlbmRpZgogCisvKiBHdWlsZSBwb3J0cyByYWRpY2FsbHkgY2hh bmdlZCBpbiBHdWlsZSAyLjIuCisgICBOb3RlOiBXZSBkb24ndCBzdXBwb3J0 IEd1aWxlIDwgMi4wLgorICAgVE9ETyhkamUpOiBTdWdnZXN0IGRlcHJlY2F0 aW5nIGFuZCB0aGVuIHJlbW92aW5nIEd1aWxlIDIuMCBzdXBwb3J0CisgICBh dCBzb21lIHBvaW50IGluIHRoZSBmdXR1cmUuICAqLworI2RlZmluZSBQT1JU U19WMjIgKFNDTV9NQUpPUl9WRVJTSU9OID4gMiBcCisJCSAgIHx8IFNDTV9N QUpPUl9WRVJTSU9OID09IDIgJiYgU0NNX01JTk9SX1ZFUlNJT04gPj0gMikK KwogLyogQSB1aS1maWxlIGZvciBzZW5kaW5nIG91dHB1dCB0byBHdWlsZS4g ICovCiAKIGNsYXNzIGlvc2NtX2ZpbGVfcG9ydCA6IHB1YmxpYyB1aV9maWxl CkBAIC02NiwxMiArNzMsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKICAgICAgVGhp cyB2YWx1ZSBpcyBhbHdheXMgaW4gdGhlIHJhbmdlIFswLCBzaXplXS4gICov CiAgIFVMT05HRVNUIGN1cnJlbnQ7CiAKKyNpZiAhUE9SVFNfVjIyCiAgIC8q IFRoZSBzaXplIG9mIHRoZSBpbnRlcm5hbCByL3cgYnVmZmVycy4KICAgICAg U2NoZW1lIHBvcnRzIGFyZW4ndCBhIHN0cmFpZ2h0Zm9yd2FyZCBtYXBwaW5n IHRvIG1lbW9yeSByL3cuCiAgICAgIEdlbmVyYWxseSB0aGUgdXNlciBzcGVj aWZpZXMgaG93IG11Y2ggdG8gci93IGFuZCBhbGwgYWNjZXNzIGlzCiAgICAg IHVuYnVmZmVyZWQuICBXZSBkb24ndCB0cnkgdG8gcHJvdmlkZSBlcXVpdmFs ZW50IGFjY2VzcywgYnV0IHdlIGFsbG93CiAgICAgIHRoZSB1c2VyIHRvIHNw ZWNpZnkgdGhlc2UgdmFsdWVzIHRvIGhlbHAgZ2V0IHNvbWV0aGluZyBzaW1p bGFyLiAgKi8KICAgdW5zaWduZWQgcmVhZF9idWZfc2l6ZSwgd3JpdGVfYnVm X3NpemU7CisjZW5kaWYKIH0gaW9zY21fbWVtb3J5X3BvcnQ7CiAKIC8qIENv cGllcyBvZiB0aGUgb3JpZ2luYWwgc3lzdGVtIGlucHV0L291dHB1dC9lcnJv ciBwb3J0cy4KQEAgLTgwLDExICs4OSwxNyBAQCBzdGF0aWMgU0NNIG9yaWdf aW5wdXRfcG9ydF9zY207CiBzdGF0aWMgU0NNIG9yaWdfb3V0cHV0X3BvcnRf c2NtOwogc3RhdGljIFNDTSBvcmlnX2Vycm9yX3BvcnRfc2NtOwogCi0vKiBU aGlzIGlzIHRoZSBzdGRpbyBwb3J0IGRlc2NyaXB0b3IsIHNjbV9wdG9iX2Rl c2NyaXB0b3IuICAqLwotc3RhdGljIHNjbV90X2JpdHMgc3RkaW9fcG9ydF9k ZXNjOworI2lmIFBPUlRTX1YyMgordHlwZWRlZiBzY21fdF9wb3J0X3R5cGUg KnBvcnRfdHlwZV90OworI2Vsc2UKK3R5cGVkZWYgc2NtX3RfYml0cyBwb3J0 X3R5cGVfdDsKKyNlbmRpZgorCisvKiBUaGlzIGlzIHRoZSBzdGRpbyBwb3J0 IHR5cGUuICAqLworc3RhdGljIHBvcnRfdHlwZV90IHN0ZGlvX3BvcnRfdHlw ZTsKIAogLyogTm90ZTogc2NtX21ha2VfcG9ydF90eXBlIHRha2VzIGEgY2hh ciAqIGluc3RlYWQgb2YgYSBjb25zdCBjaGFyICouICAqLwotc3RhdGljIC8q Y29uc3QqLyBjaGFyIHN0ZGlvX3BvcnRfZGVzY19uYW1lW10gPSAiZ2RiOnN0 ZGlvLXBvcnQiOworc3RhdGljIC8qY29uc3QqLyBjaGFyIHN0ZGlvX3BvcnRf dHlwZV9uYW1lW10gPSAiZ2RiOnN0ZGlvLXBvcnQiOwogCiAvKiBOYW1lcyBv ZiBlYWNoIGdkYiBwb3J0LiAgKi8KIHN0YXRpYyBjb25zdCBjaGFyIGlucHV0 X3BvcnRfbmFtZVtdID0gImdkYjpzdGRpbiI7CkBAIC0xMDEsMTEgKzExNiwx OCBAQCBzdGF0aWMgU0NNIGVycm9yX3BvcnRfc2NtOwogLyogSW50ZXJuYWwg ZW51bSBmb3Igc3BlY2lmeWluZyBvdXRwdXQgcG9ydC4gICovCiBlbnVtIG9w b3J0IHsgR0RCX1NURE9VVCwgR0RCX1NUREVSUiB9OwogCi0vKiBUaGlzIGlz IHRoZSBtZW1vcnkgcG9ydCBkZXNjcmlwdG9yLCBzY21fcHRvYl9kZXNjcmlw dG9yLiAgKi8KLXN0YXRpYyBzY21fdF9iaXRzIG1lbW9yeV9wb3J0X2Rlc2M7 CisvKiBUaGlzIGlzIHRoZSBtZW1vcnkgcG9ydCB0eXBlLiAgKi8KK3N0YXRp YyBwb3J0X3R5cGVfdCBtZW1vcnlfcG9ydF90eXBlOwogCiAvKiBOb3RlOiBz Y21fbWFrZV9wb3J0X3R5cGUgdGFrZXMgYSBjaGFyICogaW5zdGVhZCBvZiBh IGNvbnN0IGNoYXIgKi4gICovCi1zdGF0aWMgLypjb25zdCovIGNoYXIgbWVt b3J5X3BvcnRfZGVzY19uYW1lW10gPSAiZ2RiOm1lbW9yeS1wb3J0IjsKK3N0 YXRpYyAvKmNvbnN0Ki8gY2hhciBtZW1vcnlfcG9ydF90eXBlX25hbWVbXSA9 ICJnZGI6bWVtb3J5LXBvcnQiOworCisjaWYgUE9SVFNfVjIyCisKKy8qIFRo ZSBtYXhpbXVtIHZhbHVlcyB0byB1c2UgZm9yIGdldF9uYXR1cmFsX2J1ZmZl cl9zaXplcy4gICovCitzdGF0aWMgY29uc3QgdW5zaWduZWQgbmF0dXJhbF9i dWZfc2l6ZSA9IDE2OworCisjZWxzZQogCiAvKiBUaGUgZGVmYXVsdCBhbW91 bnQgb2YgbWVtb3J5IHRvIGZldGNoIGZvciBlYWNoIHJlYWQvd3JpdGUgcmVx dWVzdC4KICAgIFNjaGVtZSBwb3J0cyBkb24ndCBwcm92aWRlIGEgd2F5IHRv IHNwZWNpZnkgdGhlIHNpemUgb2YgYSByZWFkLApAQCAtMTIwLDYgKzE0Miw4 IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0X3dyaXRlX2J1Zl9z aXplID0gMTY7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluX21lbW9yeV9w b3J0X2J1Zl9zaXplID0gMTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhf bWVtb3J5X3BvcnRfYnVmX3NpemUgPSA0MDk2OwogCisjZW5kaWYKKwogLyog Im91dCBvZiByYW5nZSIgZXJyb3IgbWVzc2FnZSBmb3IgYnVmIHNpemVzLiAg Ki8KIHN0YXRpYyBjaGFyICpvdXRfb2ZfcmFuZ2VfYnVmX3NpemU7CiAKQEAg LTEzMiw3ICsxNTYsNyBAQCBzdGF0aWMgU0NNIHNpemVfa2V5d29yZDsKICAg IE5ld2VyIHZlcnNpb25zIG9mIEd1aWxlICgyLjEueCkgaGF2ZSBzY21fY19t YWtlX3BvcnQuICAqLwogCiBzdGF0aWMgU0NNCi1pb3NjbV9vcGVuX3BvcnQg KHNjbV90X2JpdHMgcG9ydF90eXBlLCBsb25nIG1vZGVfYml0cykKK2lvc2Nt X29wZW5fcG9ydCAocG9ydF90eXBlX3QgcG9ydF90eXBlLCBsb25nIG1vZGVf Yml0cywgc2NtX3RfYml0cyBzdHJlYW0pCiB7CiAgIFNDTSBwb3J0OwogCkBA IC0xNDAsOSArMTY0LDEzIEBAIGlvc2NtX29wZW5fcG9ydCAoc2NtX3RfYml0 cyBwb3J0X3R5cGUsIGxvbmcgbW9kZV9iaXRzKQogICBzY21faV9zY21fcHRo cmVhZF9tdXRleF9sb2NrICgmc2NtX2lfcG9ydF90YWJsZV9tdXRleCk7CiAj ZW5kaWYKIAorI2lmIFBPUlRTX1YyMgorICBwb3J0ID0gc2NtX2NfbWFrZV9w b3J0IChwb3J0X3R5cGUsIG1vZGVfYml0cywgc3RyZWFtKTsKKyNlbHNlCiAg IHBvcnQgPSBzY21fbmV3X3BvcnRfdGFibGVfZW50cnkgKHBvcnRfdHlwZSk7 Ci0KICAgU0NNX1NFVF9DRUxMX1RZUEUgKHBvcnQsIHBvcnRfdHlwZSB8IG1v ZGVfYml0cyk7CisgIFNDTV9TRVRTVFJFQU0ocG9ydCwgc3RyZWFtKTsKKyNl bmRpZgogCiAjaWYgMCAvKiBUT0RPOiBHdWlsZSBkb2Vzbid0IGV4cG9ydCB0 aGlzLiAgV2hhdCB0byBkbz8gICovCiAgIHNjbV9pX3B0aHJlYWRfbXV0ZXhf dW5sb2NrICgmc2NtX2lfcG9ydF90YWJsZV9tdXRleCk7CkBAIC0xNTAsNiAr MTc4LDIzIEBAIGlvc2NtX29wZW5fcG9ydCAoc2NtX3RfYml0cyBwb3J0X3R5 cGUsIGxvbmcgbW9kZV9iaXRzKQogCiAgIHJldHVybiBwb3J0OwogfQorCisv KiBMaWtlIGZwdXRzdHJuX2ZpbHRlcmVkLCBidXQgZG9uJ3QgZXNjYXBlIGNo YXJhY3RlcnMsIGV4Y2VwdCBudWwuCisgICBBbHNvIGxpa2UgZnB1dHNfZmls dGVyZWQsIGJ1dCBhIGxlbmd0aCBpcyBzcGVjaWZpZWQuICAqLworCitzdGF0 aWMgdm9pZAorZnB1dHNuX2ZpbHRlcmVkIChjb25zdCBjaGFyICpzLCBzaXpl X3Qgc2l6ZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKK3sKKyAgc2l6ZV90 IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICB7Cisg ICAgICBpZiAoc1tpXSA9PSAnXDAnKQorCWZwdXRzX2ZpbHRlcmVkICgiXFww MDAiLCBzdHJlYW0pOworICAgICAgZWxzZQorCWZwdXRjX2ZpbHRlcmVkIChz W2ldLCBzdHJlYW0pOworICAgIH0KK30KIAwKIC8qIFN1cHBvcnQgZm9yIGNv bm5lY3RpbmcgR3VpbGUncyBzdGRpbyBwb3J0cyB0byBHREIncyBzdGRpbyBw b3J0cy4gICovCiAKQEAgLTE4NCwxMSArMjI5LDEwIEBAIGlvc2NtX2lucHV0 X3dhaXRpbmcgKFNDTSBwb3J0KQogCiAgICAgaWYgKHVzZV9wb2xsKQogICAg ICAgewotCS8qIEd1aWxlIGRvZXNuJ3QgZXhwb3J0IFNJR0lOVCBob29rcyBs aWtlIFB5dGhvbiBkb2VzLgotCSAgIEZvciBub3cgcGFzcyBFSU5UUiB0byBz Y21fc3lzZXJyb3IsIHRoYXQncyB3aGF0IGZwb3J0cy5jIGRvZXMuICAqLwog CWlmIChwb2xsICgmcG9sbGZkLCAxLCAwKSA8IDApCi0JICBzY21fc3lzZXJy b3IgKEZVTkNfTkFNRSk7Ci0KKwkgIHsKKwkgICAgc2NtX3N5c2Vycm9yIChG VU5DX05BTUUpOworCSAgfQogCXJldHVybiBwb2xsZmQucmV2ZW50cyAmIFBP TExJTiA/IDEgOiAwOwogICAgICAgfQogICB9CkBAIC0yMTAsMTQgKzI1NCw3 OSBAQCBpb3NjbV9pbnB1dF93YWl0aW5nIChTQ00gcG9ydCkKIAkJCQkgICAg ICAmdGltZW91dCk7CiAgICAgaWYgKG51bV9mb3VuZCA8IDApCiAgICAgICB7 Ci0JLyogR3VpbGUgZG9lc24ndCBleHBvcnQgU0lHSU5UIGhvb2tzIGxpa2Ug UHl0aG9uIGRvZXMuCi0JICAgRm9yIG5vdyBwYXNzIEVJTlRSIHRvIHNjbV9z eXNlcnJvciwgdGhhdCdzIHdoYXQgZnBvcnRzLmMgZG9lcy4gICovCiAgICAg ICAgIHNjbV9zeXNlcnJvciAoRlVOQ19OQU1FKTsKICAgICAgIH0KICAgICBy ZXR1cm4gbnVtX2ZvdW5kID4gMCAmJiBGRF9JU1NFVCAoZmRlcywgJmlucHV0 X2Zkcyk7CiAgIH0KIH0KIAorI2lmIFBPUlRTX1YyMgorCitzdGF0aWMgc2l6 ZV90Citpb3NjbV9yZWFkIChTQ00gcG9ydCwgU0NNIGRzdCwgc2l6ZV90IHN0 YXJ0LCBzaXplX3QgY291bnQpCit7CisgIC8qIEJvcnJvd2VkIGZyb20gbGli Z3VpbGUvZnBvcnRzLmMuICAqLworICBhdXRvIHB0ciA9IHJlaW50ZXJwcmV0 X2Nhc3Q8Y2hhcio+KFNDTV9CWVRFVkVDVE9SX0NPTlRFTlRTIChkc3QpICsg c3RhcnQpOworICBzc2l6ZV90IHJldDsKKworICAvKiBJZiB3ZSdyZSBjYWxs ZWQgb24gc3Rkb3V0LHN0ZGVyciwgcHVudC4gICovCisgIGlmICghIHNjbV9p c19lcSAocG9ydCwgaW5wdXRfcG9ydF9zY20pKQorICAgIHJldHVybiAwOyAv KiBFT0YgKi8KKworICBnZGJfZmx1c2ggKGdkYl9zdGRvdXQpOworICBnZGJf Zmx1c2ggKGdkYl9zdGRlcnIpOworCisgcmV0cnk6CisgIHJldCA9IHVpX2Zp bGVfcmVhZCAoZ2RiX3N0ZGluLCBwdHIsIGNvdW50KTsKKyAgaWYgKHJldCA8 IDApCisgICAgeworICAgICAgaWYgKGVycm5vID09IEVJTlRSKQorICAgICAg ICB7CisgICAgICAgICAgc2NtX2FzeW5jX3RpY2sgKCk7CisgICAgICAgICAg Z290byByZXRyeTsKKyAgICAgICAgfQorICAgICAgaWYgKGVycm5vID09IEVX T1VMREJMT0NLIHx8IGVycm5vID09IEVBR0FJTikKKwl7CisJICAvKiBTZWUg dGhlIGRpc2N1c3Npb24gb2Ygbm9uLWJsb2NraW5nIEkvTyBpbiB0aGUgR3Vp bGUgbWFudWFsLiAgKi8KKwkgIHJldHVybiAtMTsKKwl9CisgICAgICBzY21f c3lzZXJyb3IgKCJpb3NjbV9yZWFkIik7CisgICAgfQorICByZXR1cm4gcmV0 OworfQorCitzdGF0aWMgc2l6ZV90Citpb3NjbV93cml0ZSAoU0NNIHBvcnQs IFNDTSBzcmMsIHNpemVfdCBzdGFydCwgc2l6ZV90IGNvdW50KQoreworICAv KiBCb3Jyb3dlZCBmcm9tIGxpYmd1aWxlL2Zwb3J0cy5jLiAgKi8KKyAgYXV0 byBwdHIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihTQ01fQllURVZFQ1RP Ul9DT05URU5UUyAoc3JjKSArIHN0YXJ0KTsKKyAgc3NpemVfdCByZXQ7CisK KyAgLyogSWYgd2UncmUgY2FsbGVkIG9uIHN0ZGluLCBwdW50LiAgKi8KKyAg aWYgKHNjbV9pc19lcSAocG9ydCwgaW5wdXRfcG9ydF9zY20pKQorICAgIHsK KyAgICAgIGVycm5vID0gRUlPOworICAgICAgc2NtX3N5c2Vycm9yKCJpb3Nj bV93cml0ZSIpOworICAgIH0KKworICBUUlkKKyAgICB7CisgICAgICBpZiAo c2NtX2lzX2VxIChwb3J0LCBlcnJvcl9wb3J0X3NjbSkpCisJZnB1dHNuX2Zp bHRlcmVkIChwdHIsIGNvdW50LCBnZGJfc3RkZXJyKTsKKyAgICAgIGVsc2UK KwlmcHV0c25fZmlsdGVyZWQgKHB0ciwgY291bnQsIGdkYl9zdGRvdXQpOwor ICAgIH0KKyAgQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQorICAg IHsKKyAgICAgIEdEQlNDTV9IQU5ETEVfR0RCX0VYQ0VQVElPTiAoZXhjZXB0 KTsKKyAgICB9CisgIEVORF9DQVRDSAorCisgIHJldHVybiBjb3VudDsKK30K KworI2Vsc2UgLyogIVBPUlRTX1YyMiAqLworCiAvKiBUaGUgc2NtX3RfcHRv Yl9kZXNjcmlwdG9yLmZpbGxfaW5wdXQgIm1ldGhvZCIuICAqLwogCiBzdGF0 aWMgaW50CkBAIC0yNDUsMjkgKzM1NCwxMSBAQCBpb3NjbV9maWxsX2lucHV0 IChTQ00gcG9ydCkKICAgcmV0dXJuICpwdC0+cmVhZF9idWY7CiB9CiAKLS8q IExpa2UgZnB1dHN0cm5fZmlsdGVyZWQsIGJ1dCBkb24ndCBlc2NhcGUgY2hh cmFjdGVycywgZXhjZXB0IG51bC4KLSAgIEFsc28gbGlrZSBmcHV0c19maWx0 ZXJlZCwgYnV0IGEgbGVuZ3RoIGlzIHNwZWNpZmllZC4gICovCi0KLXN0YXRp YyB2b2lkCi1mcHV0c25fZmlsdGVyZWQgKGNvbnN0IGNoYXIgKnMsIHNpemVf dCBzaXplLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQotewotICBzaXplX3Qg aTsKLQotICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgIHsKLSAg ICAgIGlmIChzW2ldID09ICdcMCcpCi0JZnB1dHNfZmlsdGVyZWQgKCJcXDAw MCIsIHN0cmVhbSk7Ci0gICAgICBlbHNlCi0JZnB1dGNfZmlsdGVyZWQgKHNb aV0sIHN0cmVhbSk7Ci0gICAgfQotfQotCiAvKiBXcml0ZSB0byBnZGIncyBz dGRvdXQgb3Igc3RkZXJyLiAgKi8KIAogc3RhdGljIHZvaWQKIGlvc2NtX3dy aXRlIChTQ00gcG9ydCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUp CiB7Ci0KICAgLyogSWYgd2UncmUgY2FsbGVkIG9uIHN0ZGluLCBwdW50LiAg Ki8KICAgaWYgKHNjbV9pc19lcSAocG9ydCwgaW5wdXRfcG9ydF9zY20pKQog ICAgIHJldHVybjsKQEAgLTMwMSw2ICszOTIsOCBAQCBpb3NjbV9mbHVzaCAo U0NNIHBvcnQpCiAgICAgZ2RiX2ZsdXNoIChnZGJfc3Rkb3V0KTsKIH0KIAor I2VuZGlmCisKIC8qIEluaXRpYWxpemUgdGhlIGdkYiBzdGRpbyBwb3J0IHR5 cGUuCiAKICAgIE4uQi4gaXNhdHR5PyB3aWxsIGZhaWwgb24gdGhlc2UgcG9y dHMsIGl0IGlzIG9ubHkgc3VwcG9ydGVkIGZvciBmaWxlCkBAIC0zMDksMTMg KzQwMiwyMyBAQCBpb3NjbV9mbHVzaCAoU0NNIHBvcnQpCiBzdGF0aWMgdm9p ZAogaW9zY21faW5pdF9nZGJfc3RkaW9fcG9ydCAodm9pZCkKIHsKLSAgc3Rk aW9fcG9ydF9kZXNjID0gc2NtX21ha2VfcG9ydF90eXBlIChzdGRpb19wb3J0 X2Rlc2NfbmFtZSwKLQkJCQkJaW9zY21fZmlsbF9pbnB1dCwgaW9zY21fd3Jp dGUpOworICBzdGRpb19wb3J0X3R5cGUgPSBzY21fbWFrZV9wb3J0X3R5cGUg KHN0ZGlvX3BvcnRfdHlwZV9uYW1lLAorI2lmIFBPUlRTX1YyMgorCQkJCQlp b3NjbV9yZWFkLAorI2Vsc2UKKwkJCQkJaW9zY21fZmlsbF9pbnB1dCwKKyNl bmRpZgorCQkJCQlpb3NjbV93cml0ZSk7CisKKyAgc2NtX3NldF9wb3J0X2lu cHV0X3dhaXRpbmcgKHN0ZGlvX3BvcnRfdHlwZSwgaW9zY21faW5wdXRfd2Fp dGluZyk7CiAKLSAgc2NtX3NldF9wb3J0X2lucHV0X3dhaXRpbmcgKHN0ZGlv X3BvcnRfZGVzYywgaW9zY21faW5wdXRfd2FpdGluZyk7Ci0gIHNjbV9zZXRf cG9ydF9mbHVzaCAoc3RkaW9fcG9ydF9kZXNjLCBpb3NjbV9mbHVzaCk7Cisj aWYgIVBPUlRTX1YyMgorICBzY21fc2V0X3BvcnRfZmx1c2ggKHN0ZGlvX3Bv cnRfdHlwZSwgaW9zY21fZmx1c2gpOworI2VuZGlmCiB9CiAKKyNpZiAhUE9S VFNfVjIyCisKIC8qIFN1YnJvdXRpbmUgb2YgaW9zY21fbWFrZV9nZGJfc3Rk aW9fcG9ydCB0byBzaW1wbGlmeSBpdC4KICAgIFNldCB1cCB0aGUgYnVmZmVy cyBvZiBwb3J0IFBPUlQuCiAgICBNT0RFX0JJVFMgYXJlIHRoZSBtb2RlIGJp dHMgb2YgUE9SVC4gICovCkBAIC0zNTgsNiArNDYxLDggQEAgaW9zY21faW5p dF9zdGRpb19idWZmZXJzIChTQ00gcG9ydCwgbG9uZyBtb2RlX2JpdHMpCiAg IHB0LT53cml0ZV9lbmQgPSBwdC0+d3JpdGVfYnVmICsgcHQtPndyaXRlX2J1 Zl9zaXplOwogfQogCisjZW5kaWYKKwogLyogQ3JlYXRlIGEgZ2RiIHN0ZGlv IHBvcnQuICAqLwogCiBzdGF0aWMgU0NNCkBAIC0zODgsMjMgKzQ5MywzNiBA QCBpb3NjbV9tYWtlX2dkYl9zdGRpb19wb3J0IChpbnQgZmQpCiAgICAgfQog CiAgIG1vZGVfYml0cyA9IHNjbV9tb2RlX2JpdHMgKChjaGFyICopIG1vZGVf c3RyKTsKLSAgcG9ydCA9IGlvc2NtX29wZW5fcG9ydCAoc3RkaW9fcG9ydF9k ZXNjLCBtb2RlX2JpdHMpOworICBwb3J0ID0gaW9zY21fb3Blbl9wb3J0IChz dGRpb19wb3J0X3R5cGUsIG1vZGVfYml0cywgMCk7CiAKICAgc2NtX3NldF9w b3J0X2ZpbGVuYW1lX3ggKHBvcnQsIGdkYnNjbV9zY21fZnJvbV9jX3N0cmlu ZyAobmFtZSkpOwogCisjaWYgIVBPUlRTX1YyMgogICBpb3NjbV9pbml0X3N0 ZGlvX2J1ZmZlcnMgKHBvcnQsIG1vZGVfYml0cyk7CisjZW5kaWYKIAogICBy ZXR1cm4gcG9ydDsKIH0KIAorLyogUmV0dXJuIG5vbi16ZXJvIGlmIE9CSiBp cyBhIHN0ZGlvIHBvcnQuICAqLworCitzdGF0aWMgaW50CitnZGJzY21faXNf c3RkaW9fcG9ydCAoU0NNIG9iaikKK3sKKyAgLyogVGhpcyBpcyBjb3BpZWQg ZnJvbSBTQ01fRlBPUlRQLiAgKi8KKyNpZiBQT1JUU19WMjIKKyAgcmV0dXJu IFNDTV9QT1JUUCAob2JqKSAmJiBTQ01fUE9SVF9UWVBFIChvYmopID09IHN0 ZGlvX3BvcnRfdHlwZTsKKyNlbHNlCisgIHJldHVybiAhU0NNX0lNUCAob2Jq KSAmJiBTQ01fVFlQMTYgKG9iaikgPT0gc3RkaW9fcG9ydF90eXBlOworI2Vu ZGlmCit9CisKIC8qIChzdGRpby1wb3J0PyBvYmplY3QpIC0+IGJvb2xlYW4g Ki8KIAogc3RhdGljIFNDTQotZ2Ric2NtX3N0ZGlvX3BvcnRfcCAoU0NNIHNj bSkKK2dkYnNjbV9zdGRpb19wb3J0X3AgKFNDTSBvYmopCiB7Ci0gIC8qIFRo aXMgaXMgY29waWVkIGZyb20gU0NNX0ZQT1JUUC4gICovCi0gIHJldHVybiBz Y21fZnJvbV9ib29sICghU0NNX0lNUCAoc2NtKQotCQkJJiYgKFNDTV9UWVAx NiAoc2NtKSA9PSBzdGRpb19wb3J0X2Rlc2MpKTsKKyAgcmV0dXJuIHNjbV9m cm9tX2Jvb2wgKGdkYnNjbV9pc19zdGRpb19wb3J0IChvYmopKTsKIH0KIAwK IC8qIEdEQidzIHBvcnRzIGFyZSBhY2Nlc3NlZCB2aWEgZnVuY3Rpb25zIHRv IGtlZXAgdGhlbSByZWFkLW9ubHkuICAqLwpAQCAtNTY3LDYgKzY4NSw5NCBA QCBpb3NjbV9sc2Vla19hZGRyZXNzIChpb3NjbV9tZW1vcnlfcG9ydCAqaW9t ZW0sIExPTkdFU1Qgb2Zmc2V0LCBpbnQgd2hlbmNlKQogICByZXR1cm4gMTsK IH0KIAorI2lmIFBPUlRTX1YyMgorCisvKiBUaGUgc2VtYW50aWNzIGdldCB3 ZWlyZCBpZiB0aGUgYnVmZmVyIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIHBv cnQgcmFuZ2UsCisgICBzbyBwcm92aWRlIGEgYmV0dGVyIGRlZmF1bHQgYnVm ZmVyIHNpemUuICAqLworCitzdGF0aWMgdm9pZAorZ2Ric2NtX2dldF9uYXR1 cmFsX2J1ZmZlcl9zaXplcyAoU0NNIHBvcnQsIHNpemVfdCAqcmVhZF9zaXpl LAorCQkJCSBzaXplX3QgKndyaXRlX3NpemUpCit7CisgIGlvc2NtX21lbW9y eV9wb3J0ICppb21lbSA9IChpb3NjbV9tZW1vcnlfcG9ydCAqKSBTQ01fU1RS RUFNIChwb3J0KTsKKworICBzaXplX3Qgc2l6ZSA9IG5hdHVyYWxfYnVmX3Np emU7CisgIGlmIChpb21lbS0+c2l6ZSA8IHNpemUpCisgICAgc2l6ZSA9IGlv bWVtLT5zaXplOworICAqcmVhZF9zaXplID0gKndyaXRlX3NpemUgPSBzaXpl OworfQorCitzdGF0aWMgc2NtX3Rfb2ZmCitnZGJzY21fbWVtb3J5X3BvcnRf c2VlayAoU0NNIHBvcnQsIHNjbV90X29mZiBvZmZzZXQsIGludCB3aGVuY2Up Cit7CisgIGlvc2NtX21lbW9yeV9wb3J0ICppb21lbSA9IChpb3NjbV9tZW1v cnlfcG9ydCAqKSBTQ01fU1RSRUFNIChwb3J0KTsKKyAgc2NtX3Rfb2ZmIHJl c3VsdDsKKyAgaW50IHJjOworCisgIGlmIChpb3NjbV9sc2Vla19hZGRyZXNz IChpb21lbSwgb2Zmc2V0LCB3aGVuY2UpID09IDApCisgICAgeworICAgICAg Z2Ric2NtX291dF9vZl9yYW5nZV9lcnJvciAoRlVOQ19OQU1FLCAwLAorCQkJ CSBnZGJzY21fc2NtX2Zyb21fbG9uZ2VzdCAob2Zmc2V0KSwKKwkJCQkgXygi YmFkIHNlZWsiKSk7CisgICAgfQorCisgIHJldHVybiBpb21lbS0+Y3VycmVu dDsKK30KKworc3RhdGljIHNpemVfdAorZ2Ric2NtX21lbW9yeV9wb3J0X3Jl YWQgKFNDTSBwb3J0LCBTQ00gZHN0LCBzaXplX3Qgc3RhcnQsIHNpemVfdCBj b3VudCkKK3sKKyAgLyogQm9ycm93ZWQgZnJvbSBsaWJndWlsZS9mcG9ydHMu Yy4gICovCisgIGF1dG8gcHRyID0gcmVpbnRlcnByZXRfY2FzdDxnZGJfYnl0 ZSo+KFNDTV9CWVRFVkVDVE9SX0NPTlRFTlRTIChkc3QpICsgc3RhcnQpOwor ICBpb3NjbV9tZW1vcnlfcG9ydCAqaW9tZW0gPSAoaW9zY21fbWVtb3J5X3Bv cnQgKikgU0NNX1NUUkVBTSAocG9ydCk7CisgIHNpemVfdCB0b19yZWFkOwor CisgIC8qICJjdXJyZW50IiBpcyB0aGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCBi eXRlIHdlIHdhbnQgdG8gcmVhZC4gICovCisgIGdkYl9hc3NlcnQgKGlvbWVt LT5jdXJyZW50IDw9IGlvbWVtLT5zaXplKTsKKyAgaWYgKGlvbWVtLT5jdXJy ZW50ID09IGlvbWVtLT5zaXplKQorICAgIHJldHVybiAwOyAvKiBFT0YgKi8K KworICAvKiBEb24ndCByZWFkIG91dHNpZGUgdGhlIGFsbG93ZWQgbWVtb3J5 IHJhbmdlLiAgKi8KKyAgdG9fcmVhZCA9IGNvdW50OworICBpZiAodG9fcmVh ZCA+IGlvbWVtLT5zaXplIC0gaW9tZW0tPmN1cnJlbnQpCisgICAgdG9fcmVh ZCA9IGlvbWVtLT5zaXplIC0gaW9tZW0tPmN1cnJlbnQ7CisKKyAgaWYgKHRh cmdldF9yZWFkX21lbW9yeSAoaW9tZW0tPnN0YXJ0ICsgaW9tZW0tPmN1cnJl bnQsIHB0ciwgdG9fcmVhZCkgIT0gMCkKKyAgICBnZGJzY21fbWVtb3J5X2Vy cm9yIChGVU5DX05BTUUsIF8oImVycm9yIHJlYWRpbmcgbWVtb3J5IiksIFND TV9FT0wpOworCisgIGlvbWVtLT5jdXJyZW50ICs9IHRvX3JlYWQ7CisgIHJl dHVybiB0b19yZWFkOworfQorCitzdGF0aWMgc2l6ZV90CitnZGJzY21fbWVt b3J5X3BvcnRfd3JpdGUgKFNDTSBwb3J0LCBTQ00gc3JjLCBzaXplX3Qgc3Rh cnQsIHNpemVfdCBjb3VudCkKK3sKKyAgLyogQm9ycm93ZWQgZnJvbSBsaWJn dWlsZS9mcG9ydHMuYy4gICovCisgIGF1dG8gcHRyID0gcmVpbnRlcnByZXRf Y2FzdDxjb25zdCBnZGJfYnl0ZSo+KFNDTV9CWVRFVkVDVE9SX0NPTlRFTlRT IChzcmMpICsKKwkJCQkJICAgICAgIHN0YXJ0KTsKKyAgaW9zY21fbWVtb3J5 X3BvcnQgKmlvbWVtID0gKGlvc2NtX21lbW9yeV9wb3J0ICopIFNDTV9TVFJF QU0gKHBvcnQpOworICBzc2l6ZV90IHJldDsKKworICAvKiAiY3VycmVudCIg aXMgdGhlIG9mZnNldCBvZiB0aGUgZmlyc3QgYnl0ZSB3ZSB3YW50IHRvIHJl YWQuICAqLworICBnZGJfYXNzZXJ0IChpb21lbS0+Y3VycmVudCA8PSBpb21l bS0+c2l6ZSk7CisKKyAgLyogVGhlcmUncyBubyB3YXkgdG8gaW5kaWNhdGUg YSBzaG9ydCB3cml0ZSwgc28gaWYgdGhlIHJlcXVlc3QgZ29lcyBwYXN0Cisg ICAgIHRoZSBlbmQgb2YgdGhlIHBvcnQncyBtZW1vcnkgcmFuZ2UsIGZsYWcg YW4gZXJyb3IuICAqLworICBpZiAoY291bnQgPiBpb21lbS0+c2l6ZSAtIGlv bWVtLT5jdXJyZW50KQorICAgIHsKKyAgICAgIGdkYnNjbV9vdXRfb2ZfcmFu Z2VfZXJyb3IgKEZVTkNfTkFNRSwgMCwgZ2Ric2NtX3NjbV9mcm9tX3Vsb25n ZXN0IChjb3VudCksCisJCQkJIF8oIndyaXRpbmcgYmV5b25kIGVuZCBvZiBt ZW1vcnkgcmFuZ2UiKSk7CisgICAgfQorCisgIGlmICh0YXJnZXRfd3JpdGVf bWVtb3J5IChpb21lbS0+c3RhcnQgKyBpb21lbS0+Y3VycmVudCwgcHRyLCBj b3VudCkgIT0gMCkKKyAgICBnZGJzY21fbWVtb3J5X2Vycm9yIChGVU5DX05B TUUsIF8oImVycm9yIHdyaXRpbmcgbWVtb3J5IiksIFNDTV9FT0wpOworICBp b21lbS0+Y3VycmVudCArPSBjb3VudDsKKworICByZXR1cm4gY291bnQ7Cit9 CisKKyNlbHNlIC8qICFQT1JUU19WMjIgKi8KKwogLyogImZpbGxfaW5wdXQi IG1ldGhvZCBmb3IgbWVtb3J5IHBvcnRzLiAgKi8KIAogc3RhdGljIGludApA QCAtODUwLDE4ICsxMDU2LDE5IEBAIGdkYnNjbV9tZW1vcnlfcG9ydF9mcmVl IChTQ00gcG9ydCkKICAgcmV0dXJuIDA7CiB9CiAKKyNlbmRpZgorCiAvKiAi cHJpbnQiIG1ldGhvZCBmb3IgbWVtb3J5IHBvcnRzLiAgKi8KIAogc3RhdGlj IGludAogZ2Ric2NtX21lbW9yeV9wb3J0X3ByaW50IChTQ00gZXhwLCBTQ00g cG9ydCwgc2NtX3ByaW50X3N0YXRlICpwc3RhdGUpCiB7CiAgIGlvc2NtX21l bW9yeV9wb3J0ICppb21lbSA9IChpb3NjbV9tZW1vcnlfcG9ydCAqKSBTQ01f U1RSRUFNIChleHApOwotICBjaGFyICp0eXBlID0gU0NNX1BUT0JOQU1FIChT Q01fUFRPQk5VTSAoZXhwKSk7CiAKICAgc2NtX3B1dHMgKCIjPCIsIHBvcnQp OwogICBzY21fcHJpbnRfcG9ydF9tb2RlIChleHAsIHBvcnQpOwogICAvKiBz Y21fcHJpbnRfcG9ydF9tb2RlIGluY2x1ZGVzIGEgdHJhaWxpbmcgc3BhY2Uu ICAqLwotICBnZGJzY21fcHJpbnRmIChwb3J0LCAiJXMgJXMtJXMiLCB0eXBl LAorICBnZGJzY21fcHJpbnRmIChwb3J0LCAiJXMgJXMtJXMiLCBtZW1vcnlf cG9ydF90eXBlX25hbWUsCiAJCSBoZXhfc3RyaW5nIChpb21lbS0+c3RhcnQp LCBoZXhfc3RyaW5nIChpb21lbS0+ZW5kKSk7CiAgIHNjbV9wdXRjICgnPics IHBvcnQpOwogICByZXR1cm4gMTsKQEAgLTg3MiwxNiArMTA3OSwyNSBAQCBn ZGJzY21fbWVtb3J5X3BvcnRfcHJpbnQgKFNDTSBleHAsIFNDTSBwb3J0LCBz Y21fcHJpbnRfc3RhdGUgKnBzdGF0ZSkKIHN0YXRpYyB2b2lkCiBpb3NjbV9p bml0X21lbW9yeV9wb3J0X3R5cGUgKHZvaWQpCiB7Ci0gIG1lbW9yeV9wb3J0 X2Rlc2MgPSBzY21fbWFrZV9wb3J0X3R5cGUgKG1lbW9yeV9wb3J0X2Rlc2Nf bmFtZSwKKyAgbWVtb3J5X3BvcnRfdHlwZSA9IHNjbV9tYWtlX3BvcnRfdHlw ZSAobWVtb3J5X3BvcnRfdHlwZV9uYW1lLAorI2lmIFBPUlRTX1YyMgorCQkJ CQkgZ2Ric2NtX21lbW9yeV9wb3J0X3JlYWQsCisjZWxzZQogCQkJCQkgZ2Ri c2NtX21lbW9yeV9wb3J0X2ZpbGxfaW5wdXQsCisjZW5kaWYKIAkJCQkJIGdk YnNjbV9tZW1vcnlfcG9ydF93cml0ZSk7CiAKLSAgc2NtX3NldF9wb3J0X2Vu ZF9pbnB1dCAobWVtb3J5X3BvcnRfZGVzYywgZ2Ric2NtX21lbW9yeV9wb3J0 X2VuZF9pbnB1dCk7Ci0gIHNjbV9zZXRfcG9ydF9mbHVzaCAobWVtb3J5X3Bv cnRfZGVzYywgZ2Ric2NtX21lbW9yeV9wb3J0X2ZsdXNoKTsKLSAgc2NtX3Nl dF9wb3J0X3NlZWsgKG1lbW9yeV9wb3J0X2Rlc2MsIGdkYnNjbV9tZW1vcnlf cG9ydF9zZWVrKTsKLSAgc2NtX3NldF9wb3J0X2Nsb3NlIChtZW1vcnlfcG9y dF9kZXNjLCBnZGJzY21fbWVtb3J5X3BvcnRfY2xvc2UpOwotICBzY21fc2V0 X3BvcnRfZnJlZSAobWVtb3J5X3BvcnRfZGVzYywgZ2Ric2NtX21lbW9yeV9w b3J0X2ZyZWUpOwotICBzY21fc2V0X3BvcnRfcHJpbnQgKG1lbW9yeV9wb3J0 X2Rlc2MsIGdkYnNjbV9tZW1vcnlfcG9ydF9wcmludCk7CisjaWYgUE9SVFNf VjIyCisgIHNjbV9zZXRfcG9ydF9nZXRfbmF0dXJhbF9idWZmZXJfc2l6ZXMg KG1lbW9yeV9wb3J0X3R5cGUsCisJCQkJCSBnZGJzY21fZ2V0X25hdHVyYWxf YnVmZmVyX3NpemVzKTsKKyNlbHNlCisgIHNjbV9zZXRfcG9ydF9lbmRfaW5w dXQgKG1lbW9yeV9wb3J0X3R5cGUsIGdkYnNjbV9tZW1vcnlfcG9ydF9lbmRf aW5wdXQpOworICBzY21fc2V0X3BvcnRfZmx1c2ggKG1lbW9yeV9wb3J0X3R5 cGUsIGdkYnNjbV9tZW1vcnlfcG9ydF9mbHVzaCk7CisgIHNjbV9zZXRfcG9y dF9mcmVlIChtZW1vcnlfcG9ydF90eXBlLCBnZGJzY21fbWVtb3J5X3BvcnRf ZnJlZSk7CisgIHNjbV9zZXRfcG9ydF9jbG9zZSAobWVtb3J5X3BvcnRfdHlw ZSwgZ2Ric2NtX21lbW9yeV9wb3J0X2Nsb3NlKTsKKyNlbmRpZgorICBzY21f c2V0X3BvcnRfc2VlayAobWVtb3J5X3BvcnRfdHlwZSwgZ2Ric2NtX21lbW9y eV9wb3J0X3NlZWspOworICBzY21fc2V0X3BvcnRfcHJpbnQgKG1lbW9yeV9w b3J0X3R5cGUsIGdkYnNjbV9tZW1vcnlfcG9ydF9wcmludCk7CiB9CiAKIC8q IEhlbHBlciBmb3IgZ2Ric2NtX29wZW5fbWVtb3J5IHRvIHBhcnNlIHRoZSBt b2RlIGJpdHMuCkBAIC05MjEsMjcgKzExMzcsMjAgQEAgaW9zY21fcGFyc2Vf bW9kZV9iaXRzIChjb25zdCBjaGFyICpmdW5jX25hbWUsIGNvbnN0IGNoYXIg Km1vZGUpCiAgIHJldHVybiBtb2RlX2JpdHM7CiB9CiAKLS8qIEhlbHBlciBm b3IgZ2Ric2NtX29wZW5fbWVtb3J5IHRvIGZpbmlzaCBpbml0aWFsaXppbmcg dGhlIHBvcnQuCi0gICBUaGUgcG9ydCBoYXMgYWRkcmVzcyByYW5nZSBbc3Rh cnQsZW5kKS4KLSAgIFRoaXMgbWVhbnMgdGhhdCBhZGRyZXNzIG9mIDB4ZmYu LmZmIGlzIG5vdCBhY2Nlc3NpYmxlLgotICAgSSBjYW4gbGl2ZSB3aXRoIHRo YXQuICAqLwotCi1zdGF0aWMgdm9pZAotaW9zY21faW5pdF9tZW1vcnlfcG9y dCAoU0NNIHBvcnQsIENPUkVfQUREUiBzdGFydCwgQ09SRV9BRERSIGVuZCkK K3N0YXRpYyBzY21fdF9iaXRzCitpb3NjbV9pbml0X21lbW9yeV9zdHJlYW0g KGJvb2wgYnVmZmVyZWQsIENPUkVfQUREUiBzdGFydCwgQ09SRV9BRERSIGVu ZCkKIHsKLSAgc2NtX3RfcG9ydCAqcHQ7Ci0gIGlvc2NtX21lbW9yeV9wb3J0 ICppb21lbTsKLSAgaW50IGJ1ZmZlcmVkID0gKFNDTV9DRUxMX1dPUkRfMCAo cG9ydCkgJiBTQ01fQlVGMCkgPT0gMDsKKyAgYXV0byBpb21lbSA9IHJlaW50 ZXJwcmV0X2Nhc3Q8aW9zY21fbWVtb3J5X3BvcnQgKj4oCisgICAgc2NtX2dj X21hbGxvY19wb2ludGVybGVzcyAoc2l6ZW9mIChpb3NjbV9tZW1vcnlfcG9y dCksICJtZW1vcnkgcG9ydCIpKTsKIAogICBnZGJfYXNzZXJ0IChzdGFydCA8 PSBlbmQpOwogCi0gIGlvbWVtID0gKGlvc2NtX21lbW9yeV9wb3J0ICopIHNj bV9nY19tYWxsb2NfcG9pbnRlcmxlc3MgKHNpemVvZiAoKmlvbWVtKSwKLQkJ CQkJCQkgICAibWVtb3J5IHBvcnQiKTsKLQogICBpb21lbS0+c3RhcnQgPSBz dGFydDsKICAgaW9tZW0tPmVuZCA9IGVuZDsKICAgaW9tZW0tPnNpemUgPSBl bmQgLSBzdGFydDsKICAgaW9tZW0tPmN1cnJlbnQgPSAwOworCisjaWYgIVBP UlRTX1YyMgogICBpZiAoYnVmZmVyZWQpCiAgICAgewogICAgICAgaW9tZW0t PnJlYWRfYnVmX3NpemUgPSBkZWZhdWx0X3JlYWRfYnVmX3NpemU7CkBAIC05 NTIsNiArMTE2MSwyNCBAQCBpb3NjbV9pbml0X21lbW9yeV9wb3J0IChTQ00g cG9ydCwgQ09SRV9BRERSIHN0YXJ0LCBDT1JFX0FERFIgZW5kKQogICAgICAg aW9tZW0tPnJlYWRfYnVmX3NpemUgPSAxOwogICAgICAgaW9tZW0tPndyaXRl X2J1Zl9zaXplID0gMTsKICAgICB9CisjZW5kaWYKKworICByZXR1cm4gcmVp bnRlcnByZXRfY2FzdDxzY21fdF9iaXRzPihpb21lbSk7Cit9CisKKyNpZiAh UE9SVFNfVjIyCisKKy8qIEhlbHBlciBmb3IgZ2Ric2NtX29wZW5fbWVtb3J5 IHRvIGZpbmlzaCBpbml0aWFsaXppbmcgdGhlIHBvcnQuCisgICBUaGUgcG9y dCBoYXMgYWRkcmVzcyByYW5nZSBbc3RhcnQsZW5kKS4KKyAgIFRoaXMgbWVh bnMgdGhhdCBhZGRyZXNzIG9mIDB4ZmYuLmZmIGlzIG5vdCBhY2Nlc3NpYmxl LgorICAgSSBjYW4gbGl2ZSB3aXRoIHRoYXQuICAqLworCitzdGF0aWMgdm9p ZAoraW9zY21faW5pdF9tZW1vcnlfcG9ydF9idWZmZXJzIChTQ00gcG9ydCkK K3sKKyAgc2NtX3RfcG9ydCAqcHQ7CisgIGF1dG8gaW9tZW0gPSByZWludGVy cHJldF9jYXN0PGNvbnN0IGlvc2NtX21lbW9yeV9wb3J0ICo+KFNDTV9TVFJF QU0gKHBvcnQpKTsKKyAgYm9vbCBidWZmZXJlZCA9IChTQ01fQ0VMTF9XT1JE XzAgKHBvcnQpICYgU0NNX0JVRjApID09IDA7CiAKICAgcHQgPSBTQ01fUFRB Ql9FTlRSWSAocG9ydCk7CiAgIC8qIE1hdGNoIHRoZSBleHBlY3RhdGlvbiBv ZiBgYmluYXJ5LXBvcnQ/Jy4gICovCkBAIC05NzIsOCArMTE5OSw2IEBAIGlv c2NtX2luaXRfbWVtb3J5X3BvcnQgKFNDTSBwb3J0LCBDT1JFX0FERFIgc3Rh cnQsIENPUkVfQUREUiBlbmQpCiAgIHB0LT5yZWFkX3BvcyA9IHB0LT5yZWFk X2VuZCA9IHB0LT5yZWFkX2J1ZjsKICAgcHQtPndyaXRlX3BvcyA9IHB0LT53 cml0ZV9idWY7CiAgIHB0LT53cml0ZV9lbmQgPSBwdC0+d3JpdGVfYnVmICsg cHQtPndyaXRlX2J1Zl9zaXplOwotCi0gIFNDTV9TRVRTVFJFQU0gKHBvcnQs IGlvbWVtKTsKIH0KIAogLyogUmUtaW5pdGlhbGl6ZSBhIG1lbW9yeSBwb3J0 LCB1cGRhdGluZyBpdHMgcmVhZC93cml0ZSBidWZmZXIgc2l6ZXMuCkBAIC0x MDQxLDYgKzEyNjYsOCBAQCBpb3NjbV9yZWluaXRfbWVtb3J5X3BvcnQgKFND TSBwb3J0LCBzaXplX3QgcmVhZF9idWZfc2l6ZSwKICAgICB9CiB9CiAKKyNl bmRpZiAvKiAhUE9SVFNfVjIyICovCisKIC8qIChvcGVuLW1lbW9yeSBbIzpt b2RlIHN0cmluZ10gWyM6c3RhcnQgYWRkcmVzc10gWyM6c2l6ZSBpbnRlZ2Vy XSkgLT4gcG9ydAogICAgUmV0dXJuIGEgcG9ydCB0aGF0IGNhbiBiZSB1c2Vk IGZvciByZWFkaW5nIGFuZCB3cml0aW5nIG1lbW9yeS4KICAgIE1PREUgaXMg YSBzdHJpbmcsIGFuZCBtdXN0IGJlIG9uZSBvZiAiciIsICJ3Iiwgb3IgInIr Ii4KQEAgLTExMDcsMTAgKzEzMzQsMTkgQEAgZ2Ric2NtX29wZW5fbWVtb3J5 IChTQ00gcmVzdCkKICAgICBlbmQgPSB+KENPUkVfQUREUikgMDsKIAogICBt b2RlX2JpdHMgPSBpb3NjbV9wYXJzZV9tb2RlX2JpdHMgKEZVTkNfTkFNRSwg bW9kZSk7Ci0KLSAgcG9ydCA9IGlvc2NtX29wZW5fcG9ydCAobWVtb3J5X3Bv cnRfZGVzYywgbW9kZV9iaXRzKTsKLQotICBpb3NjbV9pbml0X21lbW9yeV9w b3J0IChwb3J0LCBzdGFydCwgZW5kKTsKKyAgLyogRWRnZSBjYXNlOiBlbXB0 eSByYW5nZSAtPiB1bmJ1ZmZlcmVkLgorICAgICBUaGVyZSdzIG5vIG5lZWQg dG8gZGlzYWxsb3cgZW1wdHkgcmFuZ2VzLCBidXQgd2UgbmVlZCBhbiB1bmJ1 ZmZlcmVkIHBvcnQKKyAgICAgdG8gZ2V0IHRoZSBzZW1hbnRpY3MgcmlnaHQu ICAqLworICBpZiAoc2l6ZSA9PSAwKQorICAgIG1vZGVfYml0cyB8PSBTQ01f QlVGMDsKKworICBib29sIGJ1ZmZlcmVkID0gKG1vZGVfYml0cyAmIFNDTV9C VUYwKSA9PSAwOworICBhdXRvIHN0cmVhbSA9IGlvc2NtX2luaXRfbWVtb3J5 X3N0cmVhbShidWZmZXJlZCwgc3RhcnQsIGVuZCk7CisgIHBvcnQgPSBpb3Nj bV9vcGVuX3BvcnQgKG1lbW9yeV9wb3J0X3R5cGUsIG1vZGVfYml0cywgc3Ry ZWFtKTsKKworI2lmICFQT1JUU19WMjIKKyAgaW9zY21faW5pdF9tZW1vcnlf cG9ydF9idWZmZXJzIChwb3J0KTsKKyNlbmRpZgogCiAgIHNjbV9keW53aW5k X2VuZCAoKTsKIApAQCAtMTEyMyw3ICsxMzU5LDEyIEBAIGdkYnNjbV9vcGVu X21lbW9yeSAoU0NNIHJlc3QpCiBzdGF0aWMgaW50CiBnZGJzY21faXNfbWVt b3J5X3BvcnQgKFNDTSBvYmopCiB7Ci0gIHJldHVybiAhU0NNX0lNUCAob2Jq KSAmJiAoU0NNX1RZUDE2IChvYmopID09IG1lbW9yeV9wb3J0X2Rlc2MpOwor ICAvKiBUaGlzIGlzIGNvcGllZCBmcm9tIFNDTV9GUE9SVFAuICAqLworI2lm IFBPUlRTX1YyMgorICByZXR1cm4gU0NNX1BPUlRQIChvYmopICYmIFNDTV9Q T1JUX1RZUEUgKG9iaikgPT0gbWVtb3J5X3BvcnRfdHlwZTsKKyNlbHNlCisg IHJldHVybiAhU0NNX0lNUCAob2JqKSAmJiBTQ01fVFlQMTYgKG9iaikgPT0g bWVtb3J5X3BvcnRfdHlwZTsKKyNlbmRpZgogfQogCiAvKiAobWVtb3J5LXBv cnQ/IG9iaikgLT4gYm9vbGVhbiAqLwpAQCAtMTE0MiwxMyArMTM4MywxNSBA QCBnZGJzY21fbWVtb3J5X3BvcnRfcmFuZ2UgKFNDTSBwb3J0KQogICBpb3Nj bV9tZW1vcnlfcG9ydCAqaW9tZW07CiAKICAgU0NNX0FTU0VSVF9UWVBFIChn ZGJzY21faXNfbWVtb3J5X3BvcnQgKHBvcnQpLCBwb3J0LCBTQ01fQVJHMSwg RlVOQ19OQU1FLAotCQkgICBtZW1vcnlfcG9ydF9kZXNjX25hbWUpOworCQkg ICBtZW1vcnlfcG9ydF90eXBlX25hbWUpOwogCiAgIGlvbWVtID0gKGlvc2Nt X21lbW9yeV9wb3J0ICopIFNDTV9TVFJFQU0gKHBvcnQpOwogICByZXR1cm4g c2NtX2xpc3RfMiAoZ2Ric2NtX3NjbV9mcm9tX3Vsb25nZXN0IChpb21lbS0+ c3RhcnQpLAogCQkgICAgIGdkYnNjbV9zY21fZnJvbV91bG9uZ2VzdCAoaW9t ZW0tPmVuZCkpOwogfQogCisjaWYgIVBPUlRTX1YyMgorCiAvKiAobWVtb3J5 LXBvcnQtcmVhZC1idWZmZXItc2l6ZSBwb3J0KSAtPiBpbnRlZ2VyICovCiAK IHN0YXRpYyBTQ00KQEAgLTExNTcsNyArMTQwMCw3IEBAIGdkYnNjbV9tZW1v cnlfcG9ydF9yZWFkX2J1ZmZlcl9zaXplIChTQ00gcG9ydCkKICAgaW9zY21f bWVtb3J5X3BvcnQgKmlvbWVtOwogCiAgIFNDTV9BU1NFUlRfVFlQRSAoZ2Ri c2NtX2lzX21lbW9yeV9wb3J0IChwb3J0KSwgcG9ydCwgU0NNX0FSRzEsIEZV TkNfTkFNRSwKLQkJICAgbWVtb3J5X3BvcnRfZGVzY19uYW1lKTsKKwkJICAg bWVtb3J5X3BvcnRfdHlwZV9uYW1lKTsKIAogICBpb21lbSA9IChpb3NjbV9t ZW1vcnlfcG9ydCAqKSBTQ01fU1RSRUFNIChwb3J0KTsKICAgcmV0dXJuIHNj bV9mcm9tX3VpbnQgKGlvbWVtLT5yZWFkX2J1Zl9zaXplKTsKQEAgLTExNzMs NyArMTQxNiw3IEBAIGdkYnNjbV9zZXRfbWVtb3J5X3BvcnRfcmVhZF9idWZm ZXJfc2l6ZV94IChTQ00gcG9ydCwgU0NNIHNpemUpCiAgIGlvc2NtX21lbW9y eV9wb3J0ICppb21lbTsKIAogICBTQ01fQVNTRVJUX1RZUEUgKGdkYnNjbV9p c19tZW1vcnlfcG9ydCAocG9ydCksIHBvcnQsIFNDTV9BUkcxLCBGVU5DX05B TUUsCi0JCSAgIG1lbW9yeV9wb3J0X2Rlc2NfbmFtZSk7CisJCSAgIG1lbW9y eV9wb3J0X3R5cGVfbmFtZSk7CiAgIFNDTV9BU1NFUlRfVFlQRSAoc2NtX2lz X2ludGVnZXIgKHNpemUpLCBzaXplLCBTQ01fQVJHMiwgRlVOQ19OQU1FLAog CQkgICBfKCJpbnRlZ2VyIikpOwogCkBAIC0xMTk5LDcgKzE0NDIsNyBAQCBn ZGJzY21fbWVtb3J5X3BvcnRfd3JpdGVfYnVmZmVyX3NpemUgKFNDTSBwb3J0 KQogICBpb3NjbV9tZW1vcnlfcG9ydCAqaW9tZW07CiAKICAgU0NNX0FTU0VS VF9UWVBFIChnZGJzY21faXNfbWVtb3J5X3BvcnQgKHBvcnQpLCBwb3J0LCBT Q01fQVJHMSwgRlVOQ19OQU1FLAotCQkgICBtZW1vcnlfcG9ydF9kZXNjX25h bWUpOworCQkgICBtZW1vcnlfcG9ydF90eXBlX25hbWUpOwogCiAgIGlvbWVt ID0gKGlvc2NtX21lbW9yeV9wb3J0ICopIFNDTV9TVFJFQU0gKHBvcnQpOwog ICByZXR1cm4gc2NtX2Zyb21fdWludCAoaW9tZW0tPndyaXRlX2J1Zl9zaXpl KTsKQEAgLTEyMTUsNyArMTQ1OCw3IEBAIGdkYnNjbV9zZXRfbWVtb3J5X3Bv cnRfd3JpdGVfYnVmZmVyX3NpemVfeCAoU0NNIHBvcnQsIFNDTSBzaXplKQog ICBpb3NjbV9tZW1vcnlfcG9ydCAqaW9tZW07CiAKICAgU0NNX0FTU0VSVF9U WVBFIChnZGJzY21faXNfbWVtb3J5X3BvcnQgKHBvcnQpLCBwb3J0LCBTQ01f QVJHMSwgRlVOQ19OQU1FLAotCQkgICBtZW1vcnlfcG9ydF9kZXNjX25hbWUp OworCQkgICBtZW1vcnlfcG9ydF90eXBlX25hbWUpOwogICBTQ01fQVNTRVJU X1RZUEUgKHNjbV9pc19pbnRlZ2VyIChzaXplKSwgc2l6ZSwgU0NNX0FSRzIs IEZVTkNfTkFNRSwKIAkJICAgXygiaW50ZWdlciIpKTsKIApAQCAtMTIzMiw2 ICsxNDc1LDggQEAgZ2Ric2NtX3NldF9tZW1vcnlfcG9ydF93cml0ZV9idWZm ZXJfc2l6ZV94IChTQ00gcG9ydCwgU0NNIHNpemUpCiAKICAgcmV0dXJuIFND TV9VTlNQRUNJRklFRDsKIH0KKworI2VuZGlmIC8qICFQT1JUU19WMjIgKi8K IAwKIC8qIEluaXRpYWxpemUgZ2RiIHBvcnRzLiAgKi8KIApAQCAtMTI2OCw2 ICsxNTEzLDcgQEAgUmV0dXJuICN0IGlmIHRoZSBvYmplY3QgaXMgYSBtZW1v cnkgcG9ydC4iIH0sCiAgICAgIlwKIFJldHVybiB0aGUgbWVtb3J5IHJhbmdl IG9mIHRoZSBwb3J0IGFzIChzdGFydCBlbmQpLiIgfSwKIAorI2lmICFQT1JU U19WMjIKICAgeyAibWVtb3J5LXBvcnQtcmVhZC1idWZmZXItc2l6ZSIsIDEs IDAsIDAsCiAgICAgYXNfYV9zY21fdF9zdWJyIChnZGJzY21fbWVtb3J5X3Bv cnRfcmVhZF9idWZmZXJfc2l6ZSksCiAgICAgIlwKQEAgLTEyOTMsNiArMTUz OSw3IEBAIFNldCB0aGUgc2l6ZSBvZiB0aGUgd3JpdGUgYnVmZmVyIGZvciB0 aGUgbWVtb3J5IHBvcnQuXG5cCiBcblwKICAgQXJndW1lbnRzOiBwb3J0IGlu dGVnZXJcblwKICAgUmV0dXJuczogdW5zcGVjaWZpZWQuIiB9LAorI2VuZGlm CiAKICAgRU5EX0ZVTkNUSU9OUwogfTsKQEAgLTEzNjUsOSArMTYxMiwxMSBA QCBnZGJzY21faW5pdGlhbGl6ZV9wb3J0cyAodm9pZCkKICAgc3RhcnRfa2V5 d29yZCA9IHNjbV9mcm9tX2xhdGluMV9rZXl3b3JkICgic3RhcnQiKTsKICAg c2l6ZV9rZXl3b3JkID0gc2NtX2Zyb21fbGF0aW4xX2tleXdvcmQgKCJzaXpl Iik7CiAKKyNpZiAhUE9SVFNfVjIyCiAgIC8qIEVycm9yIG1lc3NhZ2UgdGV4 dCBmb3IgIm91dCBvZiByYW5nZSIgbWVtb3J5IHBvcnQgYnVmZmVyIHNpemVz LiAgKi8KIAogICBvdXRfb2ZfcmFuZ2VfYnVmX3NpemUgPSB4c3RycHJpbnRm ICgic2l6ZSBub3QgYmV0d2VlbiAldSAtICV1IiwKIAkJCQkgICAgICBtaW5f bWVtb3J5X3BvcnRfYnVmX3NpemUsCiAJCQkJICAgICAgbWF4X21lbW9yeV9w b3J0X2J1Zl9zaXplKTsKKyNlbmRpZgogfQo= --94eb2c19e766ca2bdd05648fc4a1--