From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd2c.google.com (mail-io1-xd2c.google.com [IPv6:2607:f8b0:4864:20::d2c]) by sourceware.org (Postfix) with ESMTPS id 9F4193851C0B for ; Mon, 1 Jun 2020 17:17:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 9F4193851C0B Received: by mail-io1-xd2c.google.com with SMTP id p20so7677637iop.11 for ; Mon, 01 Jun 2020 10:17:05 -0700 (PDT) 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=Jbvd90vVjg+/P1XQ8cSIxYIudpIDEBh1x19gwubSz3M=; b=oeQ5GzLATiSegLTc/EQNpezU6Vx0xml8/YuIGK+FMYQgj8VTNeGVzAJtaOzhZPuQs1 +Mws311EaPglbIIvdufBw2EN8V8aVwlFFXYWBqUydufIlAamAdG+fbQ23XxO57KWb55m D0ujNlXJJWhfesiG3/VNIhwFY1o21Ic8tUJCnphYQGj9eHL/sz3rasPV4T8u8dqNvT6o JihsLHpodbykZAPOJez0gfjZdNXTHCgKBKZzZiYWMm51MVifF1MAy+zkqc8GtyH268bj P3EYU2CMcSD8B+sLdKM6Q8Ehem6p3A+OgiYzbKdkCB8mAvqiZwzCav5u+48xwN9aRKto AhCg== X-Gm-Message-State: AOAM531Aepzp9PF7xbpIdra7LX0rXmYhsGJJtJlgvlO5VxBUBcSqoWU5 X+IOF51Jc+ol9xeL1PTeXMrQkbr3Yg31dPimN5Owix00Q4o= X-Google-Smtp-Source: ABdhPJy03o9gxsX0Wt0nzMxUGXAPZ4eTm7AhyKBzWm1P73OZ87a46udq/CRMywOeCtmCXYxzb0K3hGdZDrR6MUH1zWs= X-Received: by 2002:a02:c9c5:: with SMTP id c5mr10712184jap.5.1591031824586; Mon, 01 Jun 2020 10:17:04 -0700 (PDT) MIME-Version: 1.0 From: Caroline Tice Date: Mon, 1 Jun 2020 10:16:52 -0700 Message-ID: Subject: [PATCH] Fix issues with reading rnglists, especially from dwo files, for DWARF v5 To: gdb-patches@sourceware.org Cc: Caroline Tice , Eric Christopher , Stan Shebs Content-Type: multipart/mixed; boundary="000000000000bbadb705a708f6d4" X-Spam-Status: No, score=-18.8 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL, USER_IN_DEF_SPF_WL autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jun 2020 17:17:06 -0000 --000000000000bbadb705a708f6d4 Content-Type: text/plain; charset="UTF-8" While experimenting with GDB on DWARF 5 with split debug (dwo files), I discovered that GDB was not reading the rnglist index properly (it needed to be reprocessed in the same way the loclist index does), and that there was no code for reading rnglists out of dwo files at all. Also, the rnglist address reading function (dwarf2_rnglists_process) was adding the base address to all rnglist entries, when it's only supposed to add it to the DW_RLE_offset_pair entries (http://dwarfstd.org/doc/DWARF5.pdf, p. 53), and was not handling several entry types. This patch fixes these issues. I verified that it fixes the issues I saw and that it does not cause any testsuite regressions (on x86_64 ubuntu linux). Is there anything else I need to do? Is this Ok to commit? -- Caroline Tice cmtice@google.com gdb/ChangeList: 2020-06-01 Caroline Tice * dwarf2/read.c (struct dwop_section_names): Add rnglists_dwo. (dwop_section_names): Add .debug_rnglists.dwo, .zdebug_rnglists.dwo. (struct dwo_sectionds): Add rnglists field. (struct virtual_v2_dwo_sections): Add loclists_offset, loclists_size, rnglists_offset, rnglists_size. (cu_debug_rnglist_section): New function (decl & definition). (dwarf2_locate_dwo_sections): Add code to read rnglists_dwo section. (dwarf2_rnglists_process): Add cases for DW_RLE_base_addressx, DW_RLE_startx_length, DW_RLE_startx_endx. Also, update to only add the base address to DW_RLE_offset_pairs (not to all ranges). (read_full_die_1): Add code to read DW_AT_rnglists_base and assign to cu->ranges_base. (read_rnglist_index): New function. (read_attribute_reprocess): Add code for DW_FORM_rnglistx. (read_attribute_value): Mark DW_FORM_rnglistx with need_reprocess. --000000000000bbadb705a708f6d4 Content-Type: application/octet-stream; name="gdb-dwo-rnglists.patch" Content-Disposition: attachment; filename="gdb-dwo-rnglists.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kawqx7gx0 ZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKaW5kZXgg ZTY1NjZmOTY0OS4uYmNjNWQzYjkwZCAxMDA2NDQKLS0tIGEvZ2RiL2R3YXJmMi9yZWFkLmMKKysr IGIvZ2RiL2R3YXJmMi9yZWFkLmMKQEAgLTM0MCw2ICszNDAsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGR3b3Bfc2VjdGlvbl9uYW1lcwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25fbmFtZXMgbG9j bGlzdHNfZHdvOwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25fbmFtZXMgbWFjaW5mb19kd287CiAg IHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9uYW1lcyBtYWNyb19kd287CisgIHN0cnVjdCBkd2FyZjJf c2VjdGlvbl9uYW1lcyBybmdsaXN0c19kd287CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9uYW1l cyBzdHJfZHdvOwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25fbmFtZXMgc3RyX29mZnNldHNfZHdv OwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25fbmFtZXMgdHlwZXNfZHdvOwpAQCAtMzU1LDYgKzM1 Niw3IEBAIGR3b3Bfc2VjdGlvbl9uYW1lcyA9CiAgIHsgIi5kZWJ1Z19sb2NsaXN0cy5kd28iLCAi LnpkZWJ1Z19sb2NsaXN0cy5kd28iIH0sCiAgIHsgIi5kZWJ1Z19tYWNpbmZvLmR3byIsICIuemRl YnVnX21hY2luZm8uZHdvIiB9LAogICB7ICIuZGVidWdfbWFjcm8uZHdvIiwgIi56ZGVidWdfbWFj cm8uZHdvIiB9LAorICB7ICIuZGVidWdfcm5nbGlzdHMuZHdvIiwgIi56ZGVidWdfcm5nbGlzdHMu ZHdvIiB9LAogICB7ICIuZGVidWdfc3RyLmR3byIsICIuemRlYnVnX3N0ci5kd28iIH0sCiAgIHsg Ii5kZWJ1Z19zdHJfb2Zmc2V0cy5kd28iLCAiLnpkZWJ1Z19zdHJfb2Zmc2V0cy5kd28iIH0sCiAg IHsgIi5kZWJ1Z190eXBlcy5kd28iLCAiLnpkZWJ1Z190eXBlcy5kd28iIH0sCkBAIC02NTAsNiAr NjUyLDcgQEAgc3RydWN0IGR3b19zZWN0aW9ucwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5m byBsb2NsaXN0czsKICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gbWFjaW5mbzsKICAgc3Ry dWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gbWFjcm87CisgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9p bmZvIHJuZ2xpc3RzOwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBzdHI7CiAgIHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9pbmZvIHN0cl9vZmZzZXRzOwogICAvKiBJbiB0aGUgY2FzZSBvZiBh IHZpcnR1YWwgRFdPIGZpbGUsIHRoZXNlIHR3byBhcmUgdW51c2VkLiAgKi8KQEAgLTc5MywxMiAr Nzk2LDE4IEBAIHN0cnVjdCB2aXJ0dWFsX3YyX2R3b19zZWN0aW9ucwogICBiZmRfc2l6ZV90eXBl IGxvY19vZmZzZXQ7CiAgIGJmZF9zaXplX3R5cGUgbG9jX3NpemU7CiAKKyAgYmZkX3NpemVfdHlw ZSBsb2NsaXN0c19vZmZzZXQ7CisgIGJmZF9zaXplX3R5cGUgbG9jbGlzdHNfc2l6ZTsKKwogICBi ZmRfc2l6ZV90eXBlIG1hY2luZm9fb2Zmc2V0OwogICBiZmRfc2l6ZV90eXBlIG1hY2luZm9fc2l6 ZTsKIAogICBiZmRfc2l6ZV90eXBlIG1hY3JvX29mZnNldDsKICAgYmZkX3NpemVfdHlwZSBtYWNy b19zaXplOwogCisgIGJmZF9zaXplX3R5cGUgcm5nbGlzdHNfb2Zmc2V0OworICBiZmRfc2l6ZV90 eXBlIHJuZ2xpc3RzX3NpemU7CisKICAgYmZkX3NpemVfdHlwZSBzdHJfb2Zmc2V0c19vZmZzZXQ7 CiAgIGJmZF9zaXplX3R5cGUgc3RyX29mZnNldHNfc2l6ZTsKIApAQCAtMTM4NCw2ICsxMzkzLDEw IEBAIHN0YXRpYyBpbnQgZHdhcmYyX3Jhbmdlc19yZWFkICh1bnNpZ25lZCwgQ09SRV9BRERSICos IENPUkVfQUREUiAqLAogLyogUmV0dXJuIHRoZSAuZGVidWdfbG9jbGlzdHMgc2VjdGlvbiB0byB1 c2UgZm9yIGN1LiAgKi8KIHN0YXRpYyBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqY3VfZGVi dWdfbG9jX3NlY3Rpb24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKIAorLyogUmV0dXJuIHRoZSAu ZGVidWdfcm5nbGlzdHMgc2VjdGlvbiB0byB1c2UgZm9yIGN1LiAgKi8KK3N0YXRpYyBzdHJ1Y3Qg ZHdhcmYyX3NlY3Rpb25faW5mbyAqY3VfZGVidWdfcm5nbGlzdF9zZWN0aW9uIChzdHJ1Y3QKKwkJ CQkJCQkgICAgIGR3YXJmMl9jdSAqY3UpOworCiAvKiBIb3cgZHdhcmYyX2dldF9wY19ib3VuZHMg Y29uc3RydWN0ZWQgaXRzICpMT1dQQyBhbmQgKkhJR0hQQyByZXR1cm4KICAgIHZhbHVlcy4gIEtl ZXAgdGhlIGl0ZW1zIG9yZGVyZWQgd2l0aCBpbmNyZWFzaW5nIGNvbnN0cmFpbnRzIGNvbXBsaWFu Y2UuICAqLwogZW51bSBwY19ib3VuZHNfa2luZApAQCAtMTIzOTcsNiArMTI0MTAsMTEgQEAgZHdh cmYyX2xvY2F0ZV9kd29fc2VjdGlvbnMgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3RwLCB2b2lk ICpkd29fc2VjdGlvbnNfcHRyKQogICAgICAgZHdvX3NlY3Rpb25zLT5tYWNyby5zLnNlY3Rpb24g PSBzZWN0cDsKICAgICAgIGR3b19zZWN0aW9ucy0+bWFjcm8uc2l6ZSA9IGJmZF9zZWN0aW9uX3Np emUgKHNlY3RwKTsKICAgICB9CisgIGVsc2UgaWYgKHNlY3Rpb25faXNfcCAoc2VjdHAtPm5hbWUs ICZuYW1lcy0+cm5nbGlzdHNfZHdvKSkKKyAgICB7CisgICAgICBkd29fc2VjdGlvbnMtPnJuZ2xp c3RzLnMuc2VjdGlvbiA9IHNlY3RwOworICAgICAgZHdvX3NlY3Rpb25zLT5ybmdsaXN0cy5zaXpl ID0gYmZkX3NlY3Rpb25fc2l6ZSAoc2VjdHApOworICAgIH0KICAgZWxzZSBpZiAoc2VjdGlvbl9p c19wIChzZWN0cC0+bmFtZSwgJm5hbWVzLT5zdHJfZHdvKSkKICAgICB7CiAgICAgICBkd29fc2Vj dGlvbnMtPnN0ci5zLnNlY3Rpb24gPSBzZWN0cDsKQEAgLTEzNzUxLDYgKzEzNzY5LDcgQEAgZHdh cmYyX3JuZ2xpc3RzX3Byb2Nlc3MgKHVuc2lnbmVkIG9mZnNldCwgc3RydWN0IGR3YXJmMl9jdSAq Y3UsCiAgIGNvbnN0IGdkYl9ieXRlICpidWZmZXI7CiAgIENPUkVfQUREUiBiYXNlYWRkcjsKICAg Ym9vbCBvdmVyZmxvdyA9IGZhbHNlOworICBVTE9OR0VTVCBhZGRyX2luZGV4OwogCiAgIGJhc2Ug PSBjdS0+YmFzZV9hZGRyZXNzOwogCkBAIC0xMzc5Miw2ICsxMzgxMSwxMSBAQCBkd2FyZjJfcm5n bGlzdHNfcHJvY2VzcyAodW5zaWduZWQgb2Zmc2V0LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKIAkg IGJhc2UgPSBjdS0+aGVhZGVyLnJlYWRfYWRkcmVzcyAob2JmZCwgYnVmZmVyLCAmYnl0ZXNfcmVh ZCk7CiAJICBidWZmZXIgKz0gYnl0ZXNfcmVhZDsKIAkgIGJyZWFrOworICAgICAgICBjYXNlIERX X1JMRV9iYXNlX2FkZHJlc3N4OgorICAgICAgICAgIGFkZHJfaW5kZXggPSByZWFkX3Vuc2lnbmVk X2xlYjEyOCAob2JmZCwgYnVmZmVyLCAmYnl0ZXNfcmVhZCk7CisgICAgICAgICAgYnVmZmVyICs9 IGJ5dGVzX3JlYWQ7CisgICAgICAgICAgYmFzZSA9IHJlYWRfYWRkcl9pbmRleCAoY3UsIGFkZHJf aW5kZXgpOworICAgICAgICAgIGJyZWFrOwogCWNhc2UgRFdfUkxFX3N0YXJ0X2xlbmd0aDoKIAkg IGlmIChidWZmZXIgKyBjdS0+aGVhZGVyLmFkZHJfc2l6ZSA+IGJ1Zl9lbmQpCiAJICAgIHsKQEAg LTEzODEwLDYgKzEzODM0LDE5IEBAIGR3YXJmMl9ybmdsaXN0c19wcm9jZXNzICh1bnNpZ25lZCBv ZmZzZXQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogCSAgICAgIGJyZWFrOwogCSAgICB9CiAJICBi cmVhazsKKyAgICAgICAgY2FzZSBEV19STEVfc3RhcnR4X2xlbmd0aDoKKyAgICAgICAgICBhZGRy X2luZGV4ID0gcmVhZF91bnNpZ25lZF9sZWIxMjggKG9iZmQsIGJ1ZmZlciwgJmJ5dGVzX3JlYWQp OworICAgICAgICAgIGJ1ZmZlciArPSBieXRlc19yZWFkOworICAgICAgICAgIHJhbmdlX2JlZ2lu bmluZyA9IHJlYWRfYWRkcl9pbmRleCAoY3UsIGFkZHJfaW5kZXgpOworICAgICAgICAgIGlmIChi dWZmZXIgPiBidWZfZW5kKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBvdmVyZmxvdyA9 IHRydWU7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgIHJh bmdlX2VuZCA9IChyYW5nZV9iZWdpbm5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgKyByZWFk X3Vuc2lnbmVkX2xlYjEyOCAob2JmZCwgYnVmZmVyLCAmYnl0ZXNfcmVhZCkpOworICAgICAgICAg IGJ1ZmZlciArPSBieXRlc19yZWFkOworICAgICAgICAgIGJyZWFrOwogCWNhc2UgRFdfUkxFX29m ZnNldF9wYWlyOgogCSAgcmFuZ2VfYmVnaW5uaW5nID0gcmVhZF91bnNpZ25lZF9sZWIxMjggKG9i ZmQsIGJ1ZmZlciwgJmJ5dGVzX3JlYWQpOwogCSAgYnVmZmVyICs9IGJ5dGVzX3JlYWQ7CkBAIC0x MzgzOCw3ICsxMzg3NSwyMCBAQCBkd2FyZjJfcm5nbGlzdHNfcHJvY2VzcyAodW5zaWduZWQgb2Zm c2V0LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKIAkgIHJhbmdlX2VuZCA9IGN1LT5oZWFkZXIucmVh ZF9hZGRyZXNzIChvYmZkLCBidWZmZXIsICZieXRlc19yZWFkKTsKIAkgIGJ1ZmZlciArPSBieXRl c19yZWFkOwogCSAgYnJlYWs7Ci0JZGVmYXVsdDoKKyAgICAgICAgY2FzZSBEV19STEVfc3RhcnR4 X2VuZHg6CisgICAgICAgICAgYWRkcl9pbmRleCA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChvYmZk LCBidWZmZXIsICZieXRlc19yZWFkKTsKKyAgICAgICAgICBidWZmZXIgKz0gYnl0ZXNfcmVhZDsK KyAgICAgICAgICByYW5nZV9iZWdpbm5pbmcgPSByZWFkX2FkZHJfaW5kZXggKGN1LCBhZGRyX2lu ZGV4KTsKKyAgICAgICAgICBpZiAoYnVmZmVyID4gYnVmX2VuZCkKKyAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgb3ZlcmZsb3cgPSB0cnVlOworICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICBhZGRyX2luZGV4ID0gcmVhZF91bnNpZ25lZF9sZWIxMjggKG9i ZmQsIGJ1ZmZlciwgJmJ5dGVzX3JlYWQpOworICAgICAgICAgIGJ1ZmZlciArPSBieXRlc19yZWFk OworICAgICAgICAgIHJhbmdlX2VuZCA9IHJlYWRfYWRkcl9pbmRleCAoY3UsIGFkZHJfaW5kZXgp OworICAgICAgICAgIGJyZWFrOworIAlkZWZhdWx0OgogCSAgY29tcGxhaW50IChfKCJJbnZhbGlk IC5kZWJ1Z19ybmdsaXN0cyBkYXRhIChubyBiYXNlIGFkZHJlc3MpIikpOwogCSAgcmV0dXJuIGZh bHNlOwogCX0KQEAgLTEzODY2LDggKzEzOTE2LDEyIEBAIGR3YXJmMl9ybmdsaXN0c19wcm9jZXNz ICh1bnNpZ25lZCBvZmZzZXQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogICAgICAgaWYgKHJhbmdl X2JlZ2lubmluZyA9PSByYW5nZV9lbmQpCiAJY29udGludWU7CiAKLSAgICAgIHJhbmdlX2JlZ2lu bmluZyArPSAqYmFzZTsKLSAgICAgIHJhbmdlX2VuZCArPSAqYmFzZTsKKyAgICAgIC8qIE9ubHkg RFdfUkxFX29mZnNldF9wYWlyIG5lZWRzIHRoZSBiYXNlIGFkZHJlc3MgYWRkZWQuICAqLworICAg ICAgaWYgKHJsZXQgPT0gRFdfUkxFX29mZnNldF9wYWlyKQorCXsKKwkgIHJhbmdlX2JlZ2lubmlu ZyArPSAqYmFzZTsKKwkgIHJhbmdlX2VuZCArPSAqYmFzZTsKKwl9CiAKICAgICAgIC8qIEEgbm90 LXVuY29tbW9uIGNhc2Ugb2YgYmFkIGRlYnVnIGluZm8uCiAJIERvbid0IHBvbGx1dGUgdGhlIGFk ZHJtYXAgd2l0aCBiYWQgZGF0YS4gICovCkBAIC0xODExNSw2ICsxODE2OSwxMSBAQCByZWFkX2Z1 bGxfZGllXzEgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIsCiAgIGF1dG8g bWF5YmVfYWRkcl9iYXNlID0gZGllLT5hZGRyX2Jhc2UgKCk7CiAgIGlmIChtYXliZV9hZGRyX2Jh c2UuaGFzX3ZhbHVlICgpKQogICAgIGN1LT5hZGRyX2Jhc2UgPSAqbWF5YmVfYWRkcl9iYXNlOwor CisgIGF0dHIgPSAgZGllLT5hdHRyIChEV19BVF9ybmdsaXN0c19iYXNlKTsKKyAgaWYgKGF0dHIg IT0gbnVsbHB0cikKKyAgICBjdS0+cmFuZ2VzX2Jhc2UgPSBEV19VTlNORCAoYXR0cik7CisKICAg Zm9yIChpbnQgaW5kZXggOiBpbmRleGVzX3RoYXRfbmVlZF9yZXByb2Nlc3MpCiAgICAgcmVhZF9h dHRyaWJ1dGVfcmVwcm9jZXNzIChyZWFkZXIsICZkaWUtPmF0dHJzW2luZGV4XSk7CiAgICpkaWVw ID0gZGllOwpAQCAtMTkwNDMsNiArMTkxMDIsNDkgQEAgcmVhZF9sb2NsaXN0X2luZGV4IChzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSwgVUxPTkdFU1QgbG9jbGlzdF9pbmRleCkKICAgICByZXR1cm4gYmZk X2dldF82NCAoYWJmZCwgaW5mb19wdHIpICsgbG9jbGlzdF9iYXNlOwogfQogCisvKiBHaXZlbiBh IERXX0ZPUk1fcm5nbGlzdHggdmFsdWUgcm5nbGlzdF9pbmRleCwgZmV0Y2ggdGhlIG9mZnNldCBm cm9tIHRoZQorICAgYXJyYXkgb2Ygb2Zmc2V0cyBpbiB0aGUgLmRlYnVnX3JuZ2xpc3RzIHNlY3Rp b24uICAqLworc3RhdGljIENPUkVfQUREUgorcmVhZF9ybmdsaXN0X2luZGV4IChzdHJ1Y3QgZHdh cmYyX2N1ICpjdSwgVUxPTkdFU1Qgcm5nbGlzdF9pbmRleCkKK3sKKyAgc3RydWN0IGR3YXJmMl9w ZXJfb2JqZmlsZSAqZHdhcmYyX3Blcl9vYmpmaWxlID0gY3UtPnBlcl9vYmpmaWxlOworICBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZTsKKyAgYmZk ICphYmZkID0gb2JqZmlsZS0+b2JmZDsKKyAgVUxPTkdFU1Qgcm5nbGlzdF9oZWFkZXJfc2l6ZSA9 CisgICAgKGN1LT5oZWFkZXIuaW5pdGlhbF9sZW5ndGhfc2l6ZSA9PSA0ID8gTE9DTElTVF9IRUFE RVJfU0laRTMyCisgICAgIDogTE9DTElTVF9IRUFERVJfU0laRTY0KTsKKyAgVUxPTkdFU1Qgcm5n bGlzdF9iYXNlID0KKyAgICAgIChjdS0+ZHdvX3VuaXQpID8gcm5nbGlzdF9oZWFkZXJfc2l6ZSA6 IGN1LT5yYW5nZXNfYmFzZTsKKworICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlv biA9IGN1X2RlYnVnX3JuZ2xpc3Rfc2VjdGlvbiAoY3UpOworICBpZiAoc2VjdGlvbiA9PSBudWxs cHRyKQorICAgIGVycm9yKF8oIkNhbm5vdCBmaW5kIC5kZWJ1Z19ybmdsaXN0cyBzZWN0aW9uIFtp biBtb2R1bGUgJXNdIiksCisJICBvYmpmaWxlX25hbWUob2JqZmlsZSkpOworICBzZWN0aW9uLT5y ZWFkIChvYmpmaWxlKTsKKyAgaWYgKHNlY3Rpb24tPmJ1ZmZlciA9PSBOVUxMKQorICAgIGVycm9y KF8oIkRXX0ZPUk1fcm5nbGlzdHggdXNlZCB3aXRob3V0IC5kZWJ1Z19ybmdsaXN0cyBzZWN0aW9u ICIKKwkgICAgIltpbiBtb2R1bGUgJXNdIiksCisgICAgICAgb2JqZmlsZV9uYW1lIChvYmpmaWxl KSk7CisgIHN0cnVjdCBsb2NsaXN0X2hlYWRlciBoZWFkZXI7CisgIHJlYWRfbG9jbGlzdF9oZWFk ZXIgKCZoZWFkZXIsIHNlY3Rpb24pOworICBpZiAocm5nbGlzdF9pbmRleCA+PSBoZWFkZXIub2Zm c2V0X2VudHJ5X2NvdW50KQorICAgIGVycm9yKF8oIkRXX0ZPUk1fcm5nbGlzdHggaW5kZXggcG9p bnRpbmcgb3V0c2lkZSBvZiAiCisJICAgICIuZGVidWdfcm5nbGlzdHMgb2Zmc2V0IGFycmF5IFtp biBtb2R1bGUgJXNdIiksCisJICAgIG9iamZpbGVfbmFtZShvYmpmaWxlKSk7CisgIGlmIChybmds aXN0X2Jhc2UgKyBybmdsaXN0X2luZGV4ICogY3UtPmhlYWRlci5vZmZzZXRfc2l6ZQorICAgICAg ICA+PSBzZWN0aW9uLT5zaXplKQorICAgIGVycm9yKF8oIkRXX0ZPUk1fcm5nbGlzdHggcG9pbnRp bmcgb3V0c2lkZSBvZiAiCisgICAgICAgICAgICAiLmRlYnVnX3JuZ2xpc3RzIHNlY3Rpb24gW2lu IG1vZHVsZSAlc10iKSwKKyAgICAgICAgICBvYmpmaWxlX25hbWUob2JqZmlsZSkpOworICBjb25z dCBnZGJfYnl0ZSAqaW5mb19wdHIKKyAgICA9IHNlY3Rpb24tPmJ1ZmZlciArIHJuZ2xpc3RfYmFz ZSArIHJuZ2xpc3RfaW5kZXggKiBjdS0+aGVhZGVyLm9mZnNldF9zaXplOworCisgIGlmIChjdS0+ aGVhZGVyLm9mZnNldF9zaXplID09IDQpCisgICAgcmV0dXJuIHJlYWRfNF9ieXRlcyAoYWJmZCwg aW5mb19wdHIpICsgcm5nbGlzdF9iYXNlOworICBlbHNlCisgICAgcmV0dXJuIHJlYWRfOF9ieXRl cyAoYWJmZCwgaW5mb19wdHIpICsgcm5nbGlzdF9iYXNlOworfQorCiAvKiBQcm9jZXNzIHRoZSBh dHRyaWJ1dGVzIHRoYXQgaGFkIHRvIGJlIHNraXBwZWQgaW4gdGhlIGZpcnN0IHJvdW5kLiBUaGVz ZQogICAgYXR0cmlidXRlcyBhcmUgdGhlIG9uZXMgdGhhdCBuZWVkIHN0cl9vZmZzZXRzX2Jhc2Ug b3IgYWRkcl9iYXNlIGF0dHJpYnV0ZXMuCiAgICBUaGV5IGNvdWxkIG5vdCBoYXZlIGJlZW4gcHJv Y2Vzc2VkIGluIHRoZSBmaXJzdCByb3VuZCwgYmVjYXVzZSBhdCB0aGUgdGltZQpAQCAtMTkwNjEs NiArMTkxNjMsOSBAQCByZWFkX2F0dHJpYnV0ZV9yZXByb2Nlc3MgKGNvbnN0IHN0cnVjdCBkaWVf cmVhZGVyX3NwZWNzICpyZWFkZXIsCiAgICAgICBjYXNlIERXX0ZPUk1fbG9jbGlzdHg6CiAJIERX X1VOU05EIChhdHRyKSA9IHJlYWRfbG9jbGlzdF9pbmRleCAoY3UsIERXX1VOU05EIChhdHRyKSk7 CiAJIGJyZWFrOworICAgICAgY2FzZSBEV19GT1JNX3JuZ2xpc3R4OgorICAgICAgICBEV19VTlNO RCAoYXR0cikgPSByZWFkX3JuZ2xpc3RfaW5kZXggKGN1LCBEV19VTlNORCAoYXR0cikpOworICAg ICAgICBicmVhazsKICAgICAgIGNhc2UgRFdfRk9STV9zdHJ4OgogICAgICAgY2FzZSBEV19GT1JN X3N0cngxOgogICAgICAgY2FzZSBEV19GT1JNX3N0cngyOgpAQCAtMTkyNDIsOCArMTkzNDcsMTAg QEAgcmVhZF9hdHRyaWJ1dGVfdmFsdWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpy ZWFkZXIsCiAgICAgICBEV19TTkQgKGF0dHIpID0gcmVhZF9zaWduZWRfbGViMTI4IChhYmZkLCBp bmZvX3B0ciwgJmJ5dGVzX3JlYWQpOwogICAgICAgaW5mb19wdHIgKz0gYnl0ZXNfcmVhZDsKICAg ICAgIGJyZWFrOwotICAgIGNhc2UgRFdfRk9STV91ZGF0YToKICAgICBjYXNlIERXX0ZPUk1fcm5n bGlzdHg6CisgICAgICAqbmVlZF9yZXByb2Nlc3MgPSB0cnVlOworICAgICAgLyogRkFMTFRIUk9V R0ggKi8KKyAgICBjYXNlIERXX0ZPUk1fdWRhdGE6CiAgICAgICBEV19VTlNORCAoYXR0cikgPSBy ZWFkX3Vuc2lnbmVkX2xlYjEyOCAoYWJmZCwgaW5mb19wdHIsICZieXRlc19yZWFkKTsKICAgICAg IGluZm9fcHRyICs9IGJ5dGVzX3JlYWQ7CiAgICAgICBicmVhazsKQEAgLTIzMzMyLDYgKzIzNDM5 LDI0IEBAIGN1X2RlYnVnX2xvY19zZWN0aW9uIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKIAkJCQkg IDogJnBlcl9vYmpmaWxlLT5wZXJfYmZkLT5sb2MpOwogfQogCisvKiBSZXR1cm4gdGhlIC5kZWJ1 Z19ybmdsaXN0cyBzZWN0aW9uIHRvIHVzZSBmb3IgQ1UuICAqLworc3RhdGljIHN0cnVjdCBkd2Fy ZjJfc2VjdGlvbl9pbmZvICoKK2N1X2RlYnVnX3JuZ2xpc3Rfc2VjdGlvbiAoc3RydWN0IGR3YXJm Ml9jdSAqY3UpCit7CisgIGlmIChjdS0+aGVhZGVyLnZlcnNpb24gPCA1KQorICAgIGVycm9yIChf KCIuZGVidWdfcm5nbGlzdHMgc2VjdGlvbiBjYW5ub3QgYmUgdXNlZCBpbiBEV0FSRiAlZCIpLAor CSAgIGN1LT5oZWFkZXIudmVyc2lvbik7CisgIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUgKmR3 YXJmMl9wZXJfb2JqZmlsZSA9IGN1LT5wZXJfb2JqZmlsZTsKKworICBpZiAoY3UtPmR3b191bml0 KQorICAgIHsKKyAgICAgIHN0cnVjdCBkd29fc2VjdGlvbnMgKnNlY3Rpb25zID0gJmN1LT5kd29f dW5pdC0+ZHdvX2ZpbGUtPnNlY3Rpb25zOworCisgICAgICByZXR1cm4gJnNlY3Rpb25zLT5ybmds aXN0czsKKyAgICB9CisgIHJldHVybiAmZHdhcmYyX3Blcl9vYmpmaWxlLT5wZXJfYmZkLT5ybmds aXN0czsKK30KKwogLyogQSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBmaWxscyBpbiBhIGR3YXJmMl9s b2NsaXN0X2JhdG9uLiAgKi8KIAogc3RhdGljIHZvaWQK --000000000000bbadb705a708f6d4--