From owner-freebsd-arm@FreeBSD.ORG Sun Dec 22 09:50:32 2013 Return-Path: Delivered-To: freebsd-arm@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B8BF0E90 for ; Sun, 22 Dec 2013 09:50:32 +0000 (UTC) Received: from mail-qe0-x22c.google.com (mail-qe0-x22c.google.com [IPv6:2607:f8b0:400d:c02::22c]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 708AE1FF6 for ; Sun, 22 Dec 2013 09:50:32 +0000 (UTC) Received: by mail-qe0-f44.google.com with SMTP id nd7so4141060qeb.3 for ; Sun, 22 Dec 2013 01:50:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=qsnY095GsuZuSIewHZumdb6lpuduscVMvQLytp4wt+g=; b=qx01e1cYCNqBXA+W5LOMDSuxqE0GA6AUsHeSEPde5Acnyo3xqWwErS3UAs+QhZg/Bs BYL8JlKiRPk+YPxGGSTM8ebmf+uqbiTdvXH+p9CiJCnYp+Nxnk9kRNDuUpxhLO2ZJVXL 7q5Ba4OujNZGO9XmCJMDsocKFVr08fkTIw0Qjr1kRr1ZAfoQ29T5e1HY3svU5ME0bhm5 bMvLvjvfYbcJjShIL6yzffWdKDOuX6QNpwoyDPGT+WMCw476FSb93ZSS41Y+ESgxmmew Hc6NfmPIzU/fz61XqPPKAdOt0+3rggiuwv6O/gslHJ0+mbAVyHYldTuaqhb+NM6FgW4g NXUw== MIME-Version: 1.0 X-Received: by 10.49.101.9 with SMTP id fc9mr31741085qeb.42.1387705831669; Sun, 22 Dec 2013 01:50:31 -0800 (PST) Received: by 10.224.130.194 with HTTP; Sun, 22 Dec 2013 01:50:31 -0800 (PST) In-Reply-To: References: <20131215173042.0dead636@bender.Home> Date: Sun, 22 Dec 2013 17:50:31 +0800 Message-ID: Subject: Re: [PATCH] Add stack unwind support for the functions in .ko From: Howard Su To: Warner Losh Content-Type: multipart/mixed; boundary=001a11c2bd3826572304ee1c7138 X-Content-Filtered-By: Mailman/MimeDel 2.1.17 Cc: freebsd-arm X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Dec 2013 09:50:32 -0000 --001a11c2bd3826572304ee1c7138 Content-Type: text/plain; charset=ISO-8859-1 here is the new version which address the print registers out problem. On Monday, December 16, 2013, Warner Losh wrote: > > On Dec 15, 2013, at 4:56 PM, Howard Su wrote: > > > On Monday, December 16, 2013, Andrew Turner wrote: > > > >> On Mon, 9 Dec 2013 22:44:14 +0800 > >> Howard Su > wrote: > >> > >>> Here is a new version which solve the unreadable $a problem. (the fix > >>> is in ddb/db_main.c in the end of the patch.) > >>> > >>> I attached the diff for review. > >> > >> I can't comment on the MD parts of the code, but the ARM change looks > >> good. My only request is to add a kernel option to turn on printing the > >> registers in the stack trace as it has been useful for tracking down > >> bugs. > >> > > I read the MD code of MIPS. seems it faces the same situation like arm > > (register pass parameter). I will follow its pattern to print out > register. > > better than an option? > > I thought MIPS printed the args from those registers as args and ARM was > the odd man out... > > Warner > > -- -Howard --001a11c2bd3826572304ee1c7138 Content-Type: text/x-patch; charset=US-ASCII; name="unwind.patch" Content-Disposition: attachment; filename="unwind.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: 9079f629886fc7c4_0.1 ZGlmZiAtLWdpdCBhL3N5cy9hcm0vYXJtL2RiX2ludGVyZmFjZS5jIGIvc3lzL2FybS9hcm0vZGJf aW50ZXJmYWNlLmMKaW5kZXggNjkwNjY1MC4uNzdkOWU1MCAxMDA2NDQKLS0tIGEvc3lzL2FybS9h cm0vZGJfaW50ZXJmYWNlLmMKKysrIGIvc3lzL2FybS9hcm0vZGJfaW50ZXJmYWNlLmMKQEAgLTE4 MiwzMCArMTgyLDM5IEBAIGRiX3JlYWRfYnl0ZXMoYWRkciwgc2l6ZSwgZGF0YSkKIAljaGFyCSpk YXRhOwogewogCWNoYXIJKnNyYyA9IChjaGFyICopYWRkcjsKKwlqbXBfYnVmIGpiOworCXZvaWQg KnByZXZfamI7CisJaW50IHJldDsKIAotCWlmIChkYl92YWxpZGF0ZV9hZGRyZXNzKCh1X2ludClz cmMpKSB7Ci0JCWRiX3ByaW50ZigiYWRkcmVzcyAlcCBpcyBpbnZhbGlkXG4iLCBzcmMpOwotCQly ZXR1cm4gKC0xKTsKLQl9Ci0KLQlpZiAoc2l6ZSA9PSA0ICYmIChhZGRyICYgMykgPT0gMCAmJiAo KHVpbnRwdHJfdClkYXRhICYgMykgPT0gMCkgewotCQkqKChpbnQqKWRhdGEpID0gKigoaW50Kilz cmMpOwotCQlyZXR1cm4gKDApOwotCX0KLQotCWlmIChzaXplID09IDIgJiYgKGFkZHIgJiAxKSA9 PSAwICYmICgodWludHB0cl90KWRhdGEgJiAxKSA9PSAwKSB7Ci0JCSooKHNob3J0KilkYXRhKSA9 ICooKHNob3J0KilzcmMpOwotCQlyZXR1cm4gKDApOwotCX0KKwlwcmV2X2piID0ga2RiX2ptcGJ1 ZihqYik7CisJcmV0ID0gc2V0am1wKGpiKTsKKwlpZiAocmV0ID09IDApIHsKIAotCXdoaWxlIChz aXplLS0gPiAwKSB7CiAJCWlmIChkYl92YWxpZGF0ZV9hZGRyZXNzKCh1X2ludClzcmMpKSB7CiAJ CQlkYl9wcmludGYoImFkZHJlc3MgJXAgaXMgaW52YWxpZFxuIiwgc3JjKTsKLQkJCXJldHVybiAo LTEpOworCQkJcmV0ID0gLTE7CisJCQlnb3RvIGV4aXQ7CisJCX0KKwkJCisJCWlmIChzaXplID09 IDQgJiYgKGFkZHIgJiAzKSA9PSAwICYmICgodWludHB0cl90KWRhdGEgJiAzKSA9PSAwKSB7CisJ CQkqKChpbnQqKWRhdGEpID0gKigoaW50KilzcmMpOworCQl9CQkKKwkJZWxzZSBpZiAoc2l6ZSA9 PSAyICYmIChhZGRyICYgMSkgPT0gMCAmJiAoKHVpbnRwdHJfdClkYXRhICYgMSkgPT0gMCkgewor CQkJKigoc2hvcnQqKWRhdGEpID0gKigoc2hvcnQqKXNyYyk7CisJCX0KKwkJZWxzZSB3aGlsZSAo c2l6ZS0tID4gMCkgeworCQkJaWYgKGRiX3ZhbGlkYXRlX2FkZHJlc3MoKHVfaW50KXNyYykpIHsK KwkJCQlkYl9wcmludGYoImFkZHJlc3MgJXAgaXMgaW52YWxpZFxuIiwgc3JjKTsKKwkJCQlyZXQg PSAtMTsKKwkJCQlnb3RvIGV4aXQ7CisJCQl9CisJCQkqZGF0YSsrID0gKnNyYysrOwogCQl9Ci0J CSpkYXRhKysgPSAqc3JjKys7CiAJfQotCXJldHVybiAoMCk7CitleGl0OgorCSh2b2lkKWtkYl9q bXBidWYocHJldl9qYik7CisJcmV0dXJuIChyZXQpOworCiB9CiAKIC8qCkBAIC0yMTYsMzYgKzIy NSw0OCBAQCBkYl93cml0ZV9ieXRlcyh2bV9vZmZzZXRfdCBhZGRyLCBzaXplX3Qgc2l6ZSwgY2hh ciAqZGF0YSkKIHsKIAljaGFyICpkc3Q7CiAJc2l6ZV90IGxvb3A7CisJam1wX2J1ZiBqYjsKKwl2 b2lkICpwcmV2X2piOworCWludCByZXQ7CisKKwlwcmV2X2piID0ga2RiX2ptcGJ1ZihqYik7CisJ cmV0ID0gc2V0am1wKGpiKTsKKwlpZiAocmV0ID09IDApIHsKKwkJZHN0ID0gKGNoYXIgKilhZGRy OworCQlpZiAoZGJfdmFsaWRhdGVfYWRkcmVzcygodV9pbnQpZHN0KSkgeworCQkJZGJfcHJpbnRm KCJhZGRyZXNzICVwIGlzIGludmFsaWRcbiIsIGRzdCk7CisJCQlyZXQgPSAtMTsKKwkJCWdvdG8g ZXhpdDsKKwkJfQogCi0JZHN0ID0gKGNoYXIgKilhZGRyOwotCWlmIChkYl92YWxpZGF0ZV9hZGRy ZXNzKCh1X2ludClkc3QpKSB7Ci0JCWRiX3ByaW50ZigiYWRkcmVzcyAlcCBpcyBpbnZhbGlkXG4i LCBkc3QpOwotCQlyZXR1cm4gKDApOwotCX0KLQotCWlmIChzaXplID09IDQgJiYgKGFkZHIgJiAz KSA9PSAwICYmICgodWludHB0cl90KWRhdGEgJiAzKSA9PSAwKQotCQkqKChpbnQqKWRzdCkgPSAq KChpbnQqKWRhdGEpOwotCWVsc2UKLQlpZiAoc2l6ZSA9PSAyICYmIChhZGRyICYgMSkgPT0gMCAm JiAoKHVpbnRwdHJfdClkYXRhICYgMSkgPT0gMCkKLQkJKigoc2hvcnQqKWRzdCkgPSAqKChzaG9y dCopZGF0YSk7Ci0JZWxzZSB7Ci0JCWxvb3AgPSBzaXplOwotCQl3aGlsZSAobG9vcC0tID4gMCkg ewotCQkJaWYgKGRiX3ZhbGlkYXRlX2FkZHJlc3MoKHVfaW50KWRzdCkpIHsKLQkJCQlkYl9wcmlu dGYoImFkZHJlc3MgJXAgaXMgaW52YWxpZFxuIiwgZHN0KTsKLQkJCQlyZXR1cm4gKC0xKTsKKwkJ aWYgKHNpemUgPT0gNCAmJiAoYWRkciAmIDMpID09IDAgJiYgKCh1aW50cHRyX3QpZGF0YSAmIDMp ID09IDApCisJCQkqKChpbnQqKWRzdCkgPSAqKChpbnQqKWRhdGEpOworCQllbHNlCisJCWlmIChz aXplID09IDIgJiYgKGFkZHIgJiAxKSA9PSAwICYmICgodWludHB0cl90KWRhdGEgJiAxKSA9PSAw KQorCQkJKigoc2hvcnQqKWRzdCkgPSAqKChzaG9ydCopZGF0YSk7CisJCWVsc2UgeworCQkJbG9v cCA9IHNpemU7CisJCQl3aGlsZSAobG9vcC0tID4gMCkgeworCQkJCWlmIChkYl92YWxpZGF0ZV9h ZGRyZXNzKCh1X2ludClkc3QpKSB7CisJCQkJCWRiX3ByaW50ZigiYWRkcmVzcyAlcCBpcyBpbnZh bGlkXG4iLCBkc3QpOworCQkJCQlyZXQgPSAtMTsKKwkJCQkJZ290byBleGl0OworCQkJCX0KKwkJ CQkqZHN0KysgPSAqZGF0YSsrOwogCQkJfQotCQkJKmRzdCsrID0gKmRhdGErKzsKIAkJfQotCX0K IAotCS8qIG1ha2Ugc3VyZSB0aGUgY2FjaGVzIGFuZCBtZW1vcnkgYXJlIGluIHN5bmMgKi8KLQlj cHVfaWNhY2hlX3N5bmNfcmFuZ2UoYWRkciwgc2l6ZSk7CisgICAgICAgLyogbWFrZSBzdXJlIHRo ZSBjYWNoZXMgYW5kIG1lbW9yeSBhcmUgaW4gc3luYyAqLworICAgICAgIGNwdV9pY2FjaGVfc3lu Y19yYW5nZShhZGRyLCBzaXplKTsKIAotCS8qIEluIGNhc2UgdGhlIGN1cnJlbnQgcGFnZSB0YWJs ZXMgaGF2ZSBiZWVuIG1vZGlmaWVkIC4uLiAqLwotCWNwdV90bGJfZmx1c2hJRCgpOwotCWNwdV9j cHdhaXQoKTsKLQlyZXR1cm4gKDApOworCQkvKiBJbiBjYXNlIHRoZSBjdXJyZW50IHBhZ2UgdGFi bGVzIGhhdmUgYmVlbiBtb2RpZmllZCAuLi4gKi8KKyAgICAgICBjcHVfdGxiX2ZsdXNoSUQoKTsK KyAgICAgICBjcHVfY3B3YWl0KCk7CisJfQorCitleGl0OgorCSh2b2lkKWtkYl9qbXBidWYocHJl dl9qYik7CisJcmV0dXJuIChyZXQpOwogfQogCiAKZGlmZiAtLWdpdCBhL3N5cy9hcm0vYXJtL2Ri X3RyYWNlLmMgYi9zeXMvYXJtL2FybS9kYl90cmFjZS5jCmluZGV4IDU3MTE5ZGEuLmFiYzg3NDEg MTAwNjQ0Ci0tLSBhL3N5cy9hcm0vYXJtL2RiX3RyYWNlLmMKKysrIGIvc3lzL2FybS9hcm0vZGJf dHJhY2UuYwpAQCAtMzgsNiArMzgsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVk ZSA8c3lzL3Byb2MuaD4KICNpbmNsdWRlIDxzeXMva2RiLmg+CiAjaW5jbHVkZSA8c3lzL3N0YWNr Lmg+CisjaW5jbHVkZSA8c3lzL2xpbmtlci5oPgogI2luY2x1ZGUgPG1hY2hpbmUvYXJtcmVnLmg+ CiAjaW5jbHVkZSA8bWFjaGluZS9hc20uaD4KICNpbmNsdWRlIDxtYWNoaW5lL2NwdWZ1bmMuaD4K QEAgLTczLDE4ICs3NCwxMyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjZGVmaW5lCUVYSURY X0NBTlRVTldJTkQJMQogCiAvKiBUaGUgcmVnaXN0ZXIgbmFtZXMgKi8KKyNkZWZpbmUJQTAJMQog I2RlZmluZQlGUAkxMQogI2RlZmluZQlTUAkxMwogI2RlZmluZQlMUgkxNAogI2RlZmluZQlQQwkx NQogCiAvKgotICogVGhlc2UgYXJlIHNldCBpbiB0aGUgbGlua2VyIHNjcmlwdC4gVGhlaXIgYWRk cmVzc2VzIHdpbGwgYmUKLSAqIGVpdGhlciB0aGUgc3RhcnQgb3IgZW5kIG9mIHRoZSBleGNlcHRp b24gdGFibGUgb3IgaW5kZXguCi0gKi8KLWV4dGVybiBpbnQgZXh0YWJfc3RhcnQsIGV4dGFiX2Vu ZCwgZXhpZHhfc3RhcnQsIGV4aWR4X2VuZDsKLQotLyoKICAqIEVudHJ5IHR5cGVzLgogICogVGhl c2UgYXJlIHRoZSBvbmx5IGVudHJ5IHR5cGVzIHRoYXQgaGF2ZSBiZWVuIHNlZW4gaW4gdGhlIGtl cm5lbC4KICAqLwpAQCAtMTMxLDggKzEyNywzMCBAQCBzdHJ1Y3QgdW53aW5kX3N0YXRlIHsKIHN0 YXRpYyBfX2lubGluZSBpbnQzMl90CiBkYl9leHBhbmRfcHJlbDMxKHVpbnQzMl90IHByZWwzMSkK IHsKKwlyZXR1cm4gKChpbnQzMl90KShwcmVsMzEpIDw8IDEpIC8gMjsKK30KKworc3RydWN0IGRi X2ZpbmRfaW5kZXhfY29udGV4dF90Cit7CisJaW50IHZhbGlkOworCWNhZGRyX3QgYWRkcjsKKwlj YWRkcl90IGV4aWR4X3N0YXJ0LCBleGlkeF9lbmQ7Cit9OworCitzdGF0aWMgaW50CitkYl9maW5k X2luZGV4X2ZpbGVfY2IobGlua2VyX2ZpbGVfdCBsZiwgdm9pZCogYXJnKQoreworCXN0cnVjdCBk Yl9maW5kX2luZGV4X2NvbnRleHRfdCAqY29udGV4dCA9IChzdHJ1Y3QgZGJfZmluZF9pbmRleF9j b250ZXh0X3QqKWFyZzsKKwlpZiAoY29udGV4dC0+YWRkciA+PSBsZi0+YWRkcmVzcyAmJiBjb250 ZXh0LT5hZGRyIDwgbGYtPmFkZHJlc3MgKyBsZi0+c2l6ZSkKKwl7CisJCWNvbnRleHQtPmV4aWR4 X3N0YXJ0ID0gbGlua2VyX2ZpbGVfbG9va3VwX3N5bWJvbChsZiwgIl9fZXhpZHhfc3RhcnQiLCAw KTsKKwkJY29udGV4dC0+ZXhpZHhfZW5kID0gbGlua2VyX2ZpbGVfbG9va3VwX3N5bWJvbChsZiwg Il9fZXhpZHhfZW5kIiwgMCk7CisJCWlmIChjb250ZXh0LT5leGlkeF9zdGFydCAmJiBjb250ZXh0 LT5leGlkeF9lbmQpCisJCQljb250ZXh0LT52YWxpZCA9IDE7CisJCXJldHVybiAxOworCX0KIAot CXJldHVybiAoKGludDMyX3QpKHByZWwzMSAmIDB4N2ZmZmZmZmZ1KSA8PCAxKSAvIDI7CisJcmV0 dXJuIDA7CiB9CiAKIC8qCkBAIC0xNDgsMTAgKzE2NiwxOCBAQCBkYl9maW5kX2luZGV4KHVpbnQz Ml90IGFkZHIpCiAJaW50MzJfdCBwcmVsMzFfYWRkcjsKIAl1aW50MzJfdCBmdW5jX2FkZHI7CiAK LQlzdGFydCA9IChzdHJ1Y3QgdW53aW5kX2lkeCAqKSZleGlkeF9zdGFydDsKKwlzdHJ1Y3QgZGJf ZmluZF9pbmRleF9jb250ZXh0X3QgY29udGV4dDsKKwljb250ZXh0LnZhbGlkID0gMDsKKwljb250 ZXh0LmFkZHIgPSAoY2FkZHJfdClhZGRyOworCisJbGlua2VyX2ZpbGVfZm9yZWFjaChkYl9maW5k X2luZGV4X2ZpbGVfY2IsICZjb250ZXh0KTsKKwlpZiAoIWNvbnRleHQudmFsaWQpCisJCXJldHVy biAwOworCisJc3RhcnQgPSAoc3RydWN0IHVud2luZF9pZHggKiljb250ZXh0LmV4aWR4X3N0YXJ0 OwogCiAJbWluID0gMDsKLQltYXggPSAoJmV4aWR4X2VuZCAtICZleGlkeF9zdGFydCkgLyAyOwor CW1heCA9IChjb250ZXh0LmV4aWR4X2VuZCAtIGNvbnRleHQuZXhpZHhfc3RhcnQpIC8gMjsKIAog CXdoaWxlIChtaW4gIT0gbWF4KSB7CiAJCW1pZCA9IG1pbiArIChtYXggLSBtaW4gKyAxKSAvIDI7 CkBAIC0yNjksNyArMjk1LDcgQEAgZGJfdW53aW5kX2V4ZWNfaW5zbihzdHJ1Y3QgdW53aW5kX3N0 YXRlICpzdGF0ZSkKIAkJLyogU3RvcCBwcm9jZXNzaW5nICovCiAJCXN0YXRlLT5lbnRyaWVzID0g MDsKIAotCX0gZWxzZSBpZiAoKGluc24gPT0gSU5TTl9QT1BfUkVHUykpIHsKKwl9IGVsc2UgaWYg KGluc24gPT0gSU5TTl9QT1BfUkVHUykgewogCQl1bnNpZ25lZCBpbnQgbWFzaywgcmVnOwogCiAJ CW1hc2sgPSBkYl91bndpbmRfZXhlY19yZWFkX2J5dGUoc3RhdGUpOwpAQCAtMzUyLDMwICszNzgs MjYgQEAgZGJfdW53aW5kX3RhYihzdHJ1Y3QgdW53aW5kX3N0YXRlICpzdGF0ZSkKIH0KIAogc3Rh dGljIHZvaWQKLWRiX3N0YWNrX3RyYWNlX2NtZChzdHJ1Y3QgdW53aW5kX3N0YXRlICpzdGF0ZSkK K2RiX3N0YWNrX3RyYWNlX2NtZChzdHJ1Y3QgdW53aW5kX3N0YXRlICpzdGF0ZSwgaW50IGNvdW50 KQogewogCXN0cnVjdCB1bndpbmRfaWR4ICppbmRleDsKIAljb25zdCBjaGFyICpuYW1lOwogCWRi X2V4cHJfdCB2YWx1ZTsKIAlkYl9leHByX3Qgb2Zmc2V0OwogCWNfZGJfc3ltX3Qgc3ltOwotCXVf aW50IHJlZywgaTsKLQljaGFyICpzZXA7Ci0JdWludDE2X3QgdXBkX21hc2s7CisJdV9pbnQgajsK IAlib29sIGZpbmlzaGVkOwogCiAJZmluaXNoZWQgPSBmYWxzZTsKLQl3aGlsZSAoIWZpbmlzaGVk KSB7CisJc3RhdGUtPnN0YXJ0X3BjID0gc3RhdGUtPnJlZ2lzdGVyc1tQQ107CisJd2hpbGUgKCFm aW5pc2hlZCAmJiBjb3VudC0tKSB7CiAJCS8qIFJlc2V0IHRoZSBtYXNrIG9mIHVwZGF0ZWQgcmVn aXN0ZXJzICovCiAJCXN0YXRlLT51cGRhdGVfbWFzayA9IDA7CiAKLQkJLyogVGhlIHBjIHZhbHVl IGlzIGNvcnJlY3QgYW5kIHdpbGwgYmUgb3ZlcndyaXR0ZW4sIHNhdmUgaXQgKi8KLQkJc3RhdGUt PnN0YXJ0X3BjID0gc3RhdGUtPnJlZ2lzdGVyc1tQQ107Ci0KIAkJLyogRmluZCB0aGUgaXRlbSB0 byBydW4gKi8KIAkJaW5kZXggPSBkYl9maW5kX2luZGV4KHN0YXRlLT5zdGFydF9wYyk7CiAKLQkJ aWYgKGluZGV4LT5pbnNuICE9IEVYSURYX0NBTlRVTldJTkQpIHsKKwkJaWYgKGluZGV4ICYmIGlu ZGV4LT5pbnNuICE9IEVYSURYX0NBTlRVTldJTkQpIHsKIAkJCWlmIChpbmRleC0+aW5zbiAmICgx VSA8PCAzMSkpIHsKIAkJCQkvKiBUaGUgZGF0YSBpcyB3aXRoaW4gdGhlIGluc3RydWN0aW9uICov CiAJCQkJc3RhdGUtPmluc24gPSAmaW5kZXgtPmluc247CkBAIC0zOTYsMzUgKzQxOCwyMSBAQCBk Yl9zdGFja190cmFjZV9jbWQoc3RydWN0IHVud2luZF9zdGF0ZSAqc3RhdGUpCiAJCQluYW1lID0g IihudWxsKSI7CiAJCX0gZWxzZQogCQkJZGJfc3ltYm9sX3ZhbHVlcyhzeW0sICZuYW1lLCAmdmFs dWUpOwotCQlkYl9wcmludGYoIiVzKCkgYXQgIiwgbmFtZSk7CisKIAkJZGJfcHJpbnRzeW0oc3Rh dGUtPnN0YXJ0X3BjLCBEQl9TVEdZX1BST0MpOwotCQlkYl9wcmludGYoIlxuIik7Ci0JCWRiX3By aW50ZigiXHQgcGMgPSAweCUwOHggIGxyID0gMHglMDh4ICgiLCBzdGF0ZS0+c3RhcnRfcGMsCi0J CSAgICBzdGF0ZS0+cmVnaXN0ZXJzW0xSXSk7Ci0JCWRiX3ByaW50c3ltKHN0YXRlLT5yZWdpc3Rl cnNbTFJdLCBEQl9TVEdZX1BST0MpOwotCQlkYl9wcmludGYoIilcbiIpOwotCQlkYl9wcmludGYo Ilx0IHNwID0gMHglMDh4ICBmcCA9IDB4JTA4eCIsCi0JCSAgICBzdGF0ZS0+cmVnaXN0ZXJzW1NQ XSwgc3RhdGUtPnJlZ2lzdGVyc1tGUF0pOwotCi0JCS8qIERvbid0IHByaW50IHRoZSByZWdpc3Rl cnMgd2UgaGF2ZSBhbHJlYWR5IHByaW50ZWQgKi8KLQkJdXBkX21hc2sgPSBzdGF0ZS0+dXBkYXRl X21hc2sgJiAKLQkJICAgIH4oKDEgPDwgU1ApIHwgKDEgPDwgRlApIHwgKDEgPDwgTFIpIHwgKDEg PDwgUEMpKTsKLQkJc2VwID0gIlxuXHQiOwotCQlmb3IgKGkgPSAwLCByZWcgPSAwOyB1cGRfbWFz ayAhPSAwOyB1cGRfbWFzayA+Pj0gMSwgcmVnKyspIHsKLQkJCWlmICgodXBkX21hc2sgJiAxKSAh PSAwKSB7Ci0JCQkJZGJfcHJpbnRmKCIlcyVzciVkID0gMHglMDh4Iiwgc2VwLAotCQkJCSAgICAo cmVnIDwgMTApID8gIiAiIDogIiIsIHJlZywKLQkJCQkgICAgc3RhdGUtPnJlZ2lzdGVyc1tyZWdd KTsKLQkJCQlpKys7Ci0JCQkJaWYgKGkgPT0gMikgewotCQkJCQlzZXAgPSAiXG5cdCI7Ci0JCQkJ CWkgPSAwOwotCQkJCX0gZWxzZQotCQkJCQlzZXAgPSAiICI7Ci0JCQkJCi0JCQl9CisJCWRiX3By aW50ZigiKCIpOworCQlmb3IgKGogPSAwOyBqIDwgNDsgaiArKykgeworCQkJaWYgKGogPiAwKQor CQkJCWRiX3ByaW50ZigiLCIpOworCQkJaWYgKHN0YXRlLT51cGRhdGVfbWFzayAmICgxIDw8IChB MCArIGopKSkKKwkJCQlkYl9wcmludGYoIiV4Iiwgc3RhdGUtPnJlZ2lzdGVyc1tBMCArIGpdKTsK KwkJCWVsc2UKKwkJCQlkYl9wcmludGYoIj8iKTsKIAkJfQotCQlkYl9wcmludGYoIlxuIik7CisJ CWRiX3ByaW50ZigiKSBscj0lMDh4IHNwPSUwOHggZnA9JTA4eFxuIiwgc3RhdGUtPnJlZ2lzdGVy c1tMUl0sIHN0YXRlLT5yZWdpc3RlcnNbU1BdLCBzdGF0ZS0+cmVnaXN0ZXJzW0ZQXSk7CisKKwkJ LyogVGhlIHBjIHZhbHVlIGlzIGNvcnJlY3QgYW5kIHdpbGwgYmUgb3ZlcndyaXR0ZW4sIHNhdmUg aXQgKi8KKwkJc3RhdGUtPnN0YXJ0X3BjID0gc3RhdGUtPnJlZ2lzdGVyc1tQQ107CiAKIAkJLyoK IAkJICogU3RvcCBpZiBkaXJlY3RlZCB0byBkbyBzbywgb3IgaWYgd2UndmUgdW53b3VuZCBiYWNr IHRvIHRoZQpAQCAtNDM1LDE0ICs0NDMsMTcgQEAgZGJfc3RhY2tfdHJhY2VfY21kKHN0cnVjdCB1 bndpbmRfc3RhdGUgKnN0YXRlKQogCQkgKiB0aGUgbGFzdCBmcmFtZSBwcmludGVkIGJlZm9yZSB5 b3Ugc2VlIHRoZSB1bndpbmQgZmFpbHVyZQogCQkgKiBtZXNzYWdlIChtYXliZSBpdCBuZWVkcyBh IFNUT1BfVU5XSU5ESU5HKS4KIAkJICovCi0JCWlmIChpbmRleC0+aW5zbiA9PSBFWElEWF9DQU5U VU5XSU5EKSB7Ci0JCQlkYl9wcmludGYoIlVuYWJsZSB0byB1bndpbmQgZnVydGhlclxuIik7CisJ CWlmIChpbmRleCAmJiBpbmRleC0+aW5zbiA9PSBFWElEWF9DQU5UVU5XSU5EKSB7CisJCQlpZiAo Y291bnQpCisJCQkJZGJfcHJpbnRmKCJVbmFibGUgdG8gdW53aW5kIGZ1cnRoZXJcbiIpOwogCQkJ ZmluaXNoZWQgPSB0cnVlOwogCQl9IGVsc2UgaWYgKHN0YXRlLT5yZWdpc3RlcnNbUENdIDwgVk1f TUlOX0tFUk5FTF9BRERSRVNTKSB7Ci0JCQlkYl9wcmludGYoIlVuYWJsZSB0byB1bndpbmQgaW50 byB1c2VyIG1vZGVcbiIpOworCQkJaWYgKGNvdW50KQorCQkJCWRiX3ByaW50ZigiVW5hYmxlIHRv IHVud2luZCBpbnRvIHVzZXIgbW9kZVxuIik7CiAJCQlmaW5pc2hlZCA9IHRydWU7CiAJCX0gZWxz ZSBpZiAoc3RhdGUtPnVwZGF0ZV9tYXNrID09IDApIHsKLQkJCWRiX3ByaW50ZigiVW53aW5kIGZh aWx1cmUgKG5vIHJlZ2lzdGVycyBjaGFuZ2VkKVxuIik7CisJCQlpZiAoY291bnQpCisJCQkJZGJf cHJpbnRmKCJVbndpbmQgZmFpbHVyZSAobm8gcmVnaXN0ZXJzIGNoYW5nZWQpXG4iKTsKIAkJCWZp bmlzaGVkID0gdHJ1ZTsKIAkJfQogCX0KQEAgLTQ3OSw3ICs0OTAsNyBAQCBkYl9zdGFja190cmFj ZV9jbWQoc3RydWN0IHVud2luZF9zdGF0ZSAqc3RhdGUpCiAKICNpZm5kZWYgX19BUk1fRUFCSV9f CS8qIFRoZSBmcmFtZSBmb3JtYXQgaXMgZGlmZmVyZW5kIGluIEFBUENTICovCiBzdGF0aWMgdm9p ZAotZGJfc3RhY2tfdHJhY2VfY21kKGRiX2V4cHJfdCBhZGRyLCBkYl9leHByX3QgY291bnQsIGJv b2xlYW5fdCBrZXJuZWxfb25seSkKK2RiX3N0YWNrX3RyYWNlX2NtZChkYl9leHByX3QgYWRkciwg aW50IGNvdW50LCBib29sZWFuX3Qga2VybmVsX29ubHkpCiB7CiAJdV9pbnQzMl90CSpmcmFtZSwg Kmxhc3RmcmFtZTsKIAljX2RiX3N5bV90IHN5bTsKQEAgLTYwOCw5ICs2MTksOSBAQCBkYl90cmFj ZV90aHJlYWQoc3RydWN0IHRocmVhZCAqdGhyLCBpbnQgY291bnQpCiAJCXN0YXRlLnJlZ2lzdGVy c1tMUl0gPSBjdHgtPnVuXzMyLnBjYjMyX2xyOwogCQlzdGF0ZS5yZWdpc3RlcnNbUENdID0gY3R4 LT51bl8zMi5wY2IzMl9wYzsKIAotCQlkYl9zdGFja190cmFjZV9jbWQoJnN0YXRlKTsKKwkJZGJf c3RhY2tfdHJhY2VfY21kKCZzdGF0ZSwgY291bnQpOwogI2Vsc2UKLQkJZGJfc3RhY2tfdHJhY2Vf Y21kKGN0eC0+dW5fMzIucGNiMzJfcjExLCAtMSwgVFJVRSk7CisJCWRiX3N0YWNrX3RyYWNlX2Nt ZChjdHgtPnVuXzMyLnBjYjMyX3IxMSwgY291bnQsIFRSVUUpOwogI2VuZGlmCiAJfSBlbHNlCiAJ CWRiX3RyYWNlX3NlbGYoKTsKQEAgLTYzMiw3ICs2NDMsNyBAQCBkYl90cmFjZV9zZWxmKHZvaWQp CiAJc3RhdGUucmVnaXN0ZXJzW0xSXSA9ICh1aW50MzJfdClfX2J1aWx0aW5fcmV0dXJuX2FkZHJl c3MoMCk7CiAJc3RhdGUucmVnaXN0ZXJzW1BDXSA9ICh1aW50MzJfdClkYl90cmFjZV9zZWxmOwog Ci0JZGJfc3RhY2tfdHJhY2VfY21kKCZzdGF0ZSk7CisJZGJfc3RhY2tfdHJhY2VfY21kKCZzdGF0 ZSwgLTEpOwogI2Vsc2UKIAlkYl9hZGRyX3QgYWRkcjsKIApkaWZmIC0tZ2l0IGEvc3lzL2NvbmYv a21vZC5tayBiL3N5cy9jb25mL2ttb2QubWsKaW5kZXggYmQwNTg3OC4uZDBhMWYwZiAxMDA2NDQK LS0tIGEvc3lzL2NvbmYva21vZC5taworKysgYi9zeXMvY29uZi9rbW9kLm1rCkBAIC0xMzMsNiAr MTMzLDE2IEBAIENGTEFHUys9CS1tbG9uZ2NhbGwgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKIENG TEFHUys9CS1HMCAtZm5vLXBpYyAtbW5vLWFiaWNhbGxzIC1tbG9uZy1jYWxscwogLmVuZGlmCiAK Ky5pZiAke01BQ0hJTkVfQ1BVQVJDSH0gPT0gYXJtCisuaWYgIWRlZmluZWQoV0lUSE9VVF9BUk1f RUFCSSkKK0NGTEFHUys9ICAgICAgIC1mdW53aW5kLXRhYmxlcworLmlmICR7Q09NUElMRVJfVFlQ RX0gPT0gImNsYW5nIgorIyBjbGFuZyByZXF1aXJlcyB1cyB0byB0ZWxsIGl0IHRvIGVtaXQgYXNz ZW1ibHkgd2l0aCB1bndpbmQgaW5mb3JtYXRpb24KK0NGTEFHUys9ICAgICAgIC1tbGx2bSAtYXJt LWVuYWJsZS1laGFiaQorLmVuZGlmCisuZW5kaWYKKy5lbmRpZgorCiAuaWYgZGVmaW5lZChERUJV RykgfHwgZGVmaW5lZChERUJVR19GTEFHUykKIENURkZMQUdTKz0JLWcKIC5lbmRpZgpkaWZmIC0t Z2l0IGEvc3lzL2NvbmYvbGRzY3JpcHQuYXJtIGIvc3lzL2NvbmYvbGRzY3JpcHQuYXJtCmluZGV4 IDBkMWM3ZWUuLjI0ODJjZTcgMTAwNjQ0Ci0tLSBhL3N5cy9jb25mL2xkc2NyaXB0LmFybQorKysg Yi9zeXMvY29uZi9sZHNjcmlwdC5hcm0KQEAgLTU3LDE3ICs1NywxMSBAQCBTRUNUSU9OUwogICAu cGx0ICAgICAgOiB7ICooLnBsdCkJfQogCiAgIC4gPSBBTElHTig0KTsKLSAgX2V4dGFiX3N0YXJ0 ID0gLjsKLSAgUFJPVklERShleHRhYl9zdGFydCA9IC4pOwogICAuQVJNLmV4dGFiIDogeyAqKC5B Uk0uZXh0YWIpIH0KLSAgX2V4dGFiLmVuZCA9IC47Ci0gIFBST1ZJREUoZXh0YWJfZW5kID0gLik7 CiAKLSAgX2V4aWR4X3N0YXJ0ID0gLjsKLSAgUFJPVklERShleGlkeF9zdGFydCA9IC4pOworICBf X2V4aWR4X3N0YXJ0ID0gLjsKICAgLkFSTS5leGlkeCA6IHsgKiguQVJNLmV4aWR4KSB9Ci0gIF9l eGlkeF9lbmQgPSAuOwotICBQUk9WSURFKGV4aWR4X2VuZCA9IC4pOworICBfX2V4aWR4X2VuZCA9 IC47CiAKICAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ug d2FudCB0byBhZGp1c3QgdXAgdG8KICAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBh Z2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCmRpZmYgLS1naXQgYS9zeXMvZGRiL2RiX21haW4u YyBiL3N5cy9kZGIvZGJfbWFpbi5jCmluZGV4IDZlOTI4NmMuLmY2NGIyZTIgMTAwNjQ0Ci0tLSBh L3N5cy9kZGIvZGJfbWFpbi5jCisrKyBiL3N5cy9kZGIvZGJfbWFpbi5jCkBAIC04Niw2ICs4Niwy NCBAQCBYX2RiX2xvb2t1cChkYl9zeW10YWJfdCAqc3ltdGFiLCBjb25zdCBjaGFyICpzeW1ib2wp CiAJcmV0dXJuIChOVUxMKTsKIH0KIAorLyoKKyAqIGNoZWNrIGlmIHRoZSBuYW1lIGlzIHZhbGlk LgorICogaW52bGlhZCB0aGUgbmFtZSAkYSwkZCwldCBnZW5lcmF0ZWQgYnkgRUxGIEFSTSB0b29s Y2hhaW4KKyAqLworc3RhdGljIGludAorZGJfaXNfdmFsaWRfbmFtZShjb25zdCBjaGFyKiBuYW1l KQoreworCWlmIChuYW1lID09IE5VTEwgfHwgbmFtZVswXSA9PSAnXDAnKQorCQlyZXR1cm4gMDsK KwlpZiAobmFtZVswXSA9PSAnJCcgJiYgc3RyY2hyKCJhdGQiLCBuYW1lWzFdKSAKKwkJJiYgbmFt ZVsyXSA9PSAnXDAnKQorCXsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIDE7Cit9CisKIGNf ZGJfc3ltX3QKIFhfZGJfc2VhcmNoX3N5bWJvbChkYl9zeW10YWJfdCAqc3ltdGFiLCBkYl9hZGRy X3Qgb2ZmLCBkYl9zdHJhdGVneV90IHN0cmF0LAogICAgIGRiX2V4cHJfdCAqZGlmZnApCkBAIC05 MywxMSArMTExLDE2IEBAIFhfZGJfc2VhcmNoX3N5bWJvbChkYl9zeW10YWJfdCAqc3ltdGFiLCBk Yl9hZGRyX3Qgb2ZmLCBkYl9zdHJhdGVneV90IHN0cmF0LAogCWNfbGlua2VyX3N5bV90IGxzeW07 CiAJRWxmX1N5bSAqc3ltLCAqbWF0Y2g7CiAJdW5zaWduZWQgbG9uZyBkaWZmOworCWNvbnN0IGNo YXIqIG5hbWU7CiAKIAlpZiAoc3ltdGFiLT5wcml2YXRlID09IE5VTEwpIHsKIAkJaWYgKCFsaW5r ZXJfZGRiX3NlYXJjaF9zeW1ib2woKGNhZGRyX3Qpb2ZmLCAmbHN5bSwgJmRpZmYpKSB7Ci0JCQkq ZGlmZnAgPSAoZGJfZXhwcl90KWRpZmY7Ci0JCQlyZXR1cm4gKChjX2RiX3N5bV90KWxzeW0pOwor CQkJWF9kYl9zeW1ib2xfdmFsdWVzKHN5bXRhYiwgKGNfZGJfc3ltX3QpbHN5bSwgJm5hbWUsIE5V TEwpOworCQkJaWYgKGRiX2lzX3ZhbGlkX25hbWUobmFtZSkpCisJCQl7CisJCQkJKmRpZmZwID0g KGRiX2V4cHJfdClkaWZmOworCQkJCXJldHVybiAoKGNfZGJfc3ltX3QpbHN5bSk7CisJCQl9CiAJ CX0KIAkJcmV0dXJuIChOVUxMKTsKIAl9CkBAIC0xMTMsOCArMTM2LDE0IEBAIFhfZGJfc2VhcmNo X3N5bWJvbChkYl9zeW10YWJfdCAqc3ltdGFiLCBkYl9hZGRyX3Qgb2ZmLCBkYl9zdHJhdGVneV90 IHN0cmF0LAogCQkgICAgRUxGX1NUX1RZUEUoc3ltLT5zdF9pbmZvKSAhPSBTVFRfRlVOQyAmJgog CQkgICAgRUxGX1NUX1RZUEUoc3ltLT5zdF9pbmZvKSAhPSBTVFRfTk9UWVBFKQogCQkJY29udGlu dWU7CisKIAkJaWYgKChvZmYgLSBzeW0tPnN0X3ZhbHVlKSA+IGRpZmYpCiAJCQljb250aW51ZTsK KworCQlYX2RiX3N5bWJvbF92YWx1ZXMoc3ltdGFiLCAoY19kYl9zeW1fdClzeW0sICZuYW1lLCBO VUxMKTsKKwkJaWYgKCFkYl9pc192YWxpZF9uYW1lKG5hbWUpKQorCQkJY29udGludWU7CisKIAkJ aWYgKChvZmYgLSBzeW0tPnN0X3ZhbHVlKSA8IGRpZmYpIHsKIAkJCWRpZmYgPSBvZmYgLSBzeW0t PnN0X3ZhbHVlOwogCQkJbWF0Y2ggPSBzeW07Cgo= --001a11c2bd3826572304ee1c7138--