From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gnu.wildebeest.org (wildebeest.demon.nl [212.238.236.112]) by sourceware.org (Postfix) with ESMTPS id B3EB73857C5C for ; Fri, 25 Sep 2020 16:35:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B3EB73857C5C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=klomp.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mark@klomp.org Received: from tarox.wildebeest.org (tarox.wildebeest.org [172.31.17.39]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by gnu.wildebeest.org (Postfix) with ESMTPSA id B87F13002033; Fri, 25 Sep 2020 18:35:43 +0200 (CEST) Received: by tarox.wildebeest.org (Postfix, from userid 1000) id 552DE40006CA; Fri, 25 Sep 2020 18:35:43 +0200 (CEST) Message-ID: <0cad96489340d16298a27c8e9971606e6c53084a.camel@klomp.org> Subject: Re: [PATCH 1/4] Calculate size and write correct DWARF5 header From: Mark Wielaard To: Jakub Jelinek Cc: dwz@sourceware.org Date: Fri, 25 Sep 2020 18:35:43 +0200 In-Reply-To: <20200924193935.GO2176@tucnak> References: <20200924162557.15870-1-mark@klomp.org> <20200924162557.15870-2-mark@klomp.org> <20200924193935.GO2176@tucnak> Content-Type: multipart/mixed; boundary="=-9lbtYkkMv4UIhFIPZUtL" X-Mailer: Evolution 3.28.5 (3.28.5-8.el7) Mime-Version: 1.0 X-Spam-Status: No, score=-10.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: dwz@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Dwz mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Sep 2020 16:35:47 -0000 --=-9lbtYkkMv4UIhFIPZUtL Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Jakub, On Thu, 2020-09-24 at 21:39 +0200, Jakub Jelinek wrote: > On Thu, Sep 24, 2020 at 06:25:54PM +0200, Mark Wielaard wrote: > > @@ -7209,6 +7225,8 @@ partition_dups_1 (dw_die_ref *arr, size_t > > vec_size, > > /* CU Header: address_size (ubyte). > > 1 byte. */ > > + 1 > > + /* DWARF5 CU header: unit_type (ubyte). */ > > + + die_cu (arr[i])->cu_version >=3D 5 ? 1 : 0 > > /* CU Root DIE: abbreviation code (unsigned LEB128). > > 1 or more bytes. Optimistically assume 1. */ > > + 1 >=20 > The above looks incorrect. > 4 + 2 + 4 + 1 + x >=3D 5 ? 1 : 0 + 1 + 4 + 4 > is (11 + x >=3D 5) ? 1 : (0 + 1 + 4 + 4) > rather than > 4 + 2 + 4 + 1 + (x >=3D 5 ? 1 : 0) + 1 + 4 + 4 > we need there. So, please add ()s around. Groan, how embarrassing. Fixed. > > @@ -10451,7 +10473,8 @@ compute_abbrevs (DSO *dso) > > dw_die_ref *intracuarr, *intracuvec; > > enum dwarf_form intracuform =3D DW_FORM_ref4; > > dw_die_ref child, *lastotr, child_next, *last; > > - unsigned int headersz =3D cu->cu_kind =3D=3D CU_TYPES ? 23 : 11; > > + unsigned int headersz =3D (cu->cu_kind =3D=3D CU_TYPES > > + ? 23 : (cu->cu_version >=3D 5 ? 12 : 11)); >=20 > Is the DWARF 5 .debug_info types header also 23 bytes long? DW_UT_type units are length (4) + version (2) + unit_type (1) + ptr_size (1) + abbrev_off (4) + signature (8) + type_off (4) =3D 28 bytes long. But we don't support those yet. When we do we need to distinguish between CU_TYPES_4 and CU_TYPES_5 because they can be both present. For my first pass of adding DWARF5 support I was not planning on doing CU_TYPES_5 because as far as I know nothing produces it at the moment. But it shouldn't be too hard to add it at the same level that dwz supports CU_TYPES_4. Is the patch (with the above fix) as attached for just compile and partial DWARF5 unit headers OK for now? Cheers, Mark --=-9lbtYkkMv4UIhFIPZUtL Content-Description: Content-Disposition: inline; filename*0=0001-Calculate-size-and-write-correct-DWARF5-compile-and-.pat; filename*1=ch Content-Type: text/x-patch; name="0001-Calculate-size-and-write-correct-DWARF5-compile-and-.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBjMmNmNzdlMGNkZjA1NjExYmIwYWE2ZWU2MjYxYWNiMTNkZmY1NjM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIFdpZWxhYXJkIDxtYXJrQGtsb21wLm9yZz4KRGF0ZTog V2VkLCAyMyBTZXAgMjAyMCAwMTo0ODozOSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIENhbGN1bGF0 ZSBzaXplIGFuZCB3cml0ZSBjb3JyZWN0IERXQVJGNSBjb21waWxlIGFuZCBwYXJ0aWFsCiB1bml0 IGhlYWRlcnMuCgoJKiBkd3ouYyAodHJ5X2RlYnVnX2luZm8pOiBBZGQgaGVhZGVyIHNpemUgY2hl Y2sgZm9yIGN1X3ZlcnNpb24gNS4KCShyZWFkX2RlYnVnX2luZm8pOiBMaWtld2lzZS4KCShwYXJ0 aXRpb25fZHVwc18xKTogQWRkIDEgdG8gcHVfc2l6ZSBmb3IgY3VfdmVyc2lvbiA1LgoJKGNyZWF0 ZV9pbXBvcnRfdHJlZSk6IEluY2x1ZGUgaGVhZGVyX3NpemUsIDEzIG9yIDE0IGRlcGVuZGluZyBv bgoJY3VfdmVyc2lvbiwgaW4gY29zdCBjb21wYXJpc2lvbi4KCShjb21wdXRlX2FiYnJldnMpOiBB ZGp1c3QgaGVhZGVyc3ogZGVwZW5kaW5nIG9uIGN1X3ZlcnNpb24uCgkocmVjb21wdXRlX2FiYnJl dnMpOiBMaWtld2lzZS4KCSh3cml0ZV9pbmZvKTogV3JpdGUgY3VfdmVyc2lvbiA1IHVuaXQgdHlw ZS4KLS0tCiBkd3ouYyB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHd6LmMgYi9kd3ouYwppbmRleCAxODBmOWRjLi5jODUwM2E3IDEwMDY0 NAotLS0gYS9kd3ouYworKysgYi9kd3ouYwpAQCAtNTYwNSw2ICs1NjA1LDcgQEAgdHJ5X2RlYnVn X2luZm8gKERTTyAqZHNvKQogICAgICAgdW5zaWduZWQgaW50IGN1bGVuOwogICAgICAgaW50IGN1 X3ZlcnNpb247CiAKKyAgICAgIC8qIE5vdGUgaGVhZGVyIGlzIG9uZSBiaWdnZXIgd2l0aCBEV0FS RiB2ZXJzaW9uIDUuICAqLwogICAgICAgaWYgKHB0ciArIChraW5kID09IERFQlVHX1RZUEVTID8g MjMgOiAxMSkgPiBlbmRzZWMpCiAJewogCSAgZXJyb3IgKDAsIDAsICIlczogJXMgQ1UgaGVhZGVy IHRvbyBzbWFsbCIsIGRzby0+ZmlsZW5hbWUsCkBAIC01NjgyLDYgKzU2ODMsMTMgQEAgdHJ5X2Rl YnVnX2luZm8gKERTTyAqZHNvKQogCiAgICAgICBpZiAoY3VfdmVyc2lvbiA9PSA1KQogCXsKKwkg IC8qIEFib3ZlIHdlIG9ubHkgY2hlY2tlZCBmb3IgdGhlIHNtYWxsZXIgdmVyc2lvbiA0IGhlYWRl ciBzaXplLiAgKi8KKwkgIGlmIChwdHIgKyA0ID4gZW5kc2VjKQorCSAgICB7CisJICAgICAgZXJy b3IgKDAsIDAsICIlczogJXMgQ1UgdmVyc2lvbiA1IGhlYWRlciB0b28gc21hbGwiLAorCQkgICAg IGRzby0+ZmlsZW5hbWUsIGRlYnVnX3NlY3Rpb25zW2tpbmRdLm5hbWUpOworCSAgICAgIGdvdG8g ZmFpbDsKKwkgICAgfQogCSAgdmFsdWUgPSByZWFkXzMyIChwdHIpOwogCSAgaWYgKHZhbHVlID49 IGRlYnVnX3NlY3Rpb25zW0RFQlVHX0FCQlJFVl0uc2l6ZSkKIAkgICAgewpAQCAtNTg2Nyw2ICs1 ODc1LDcgQEAgcmVhZF9kZWJ1Z19pbmZvIChEU08gKmRzbywgaW50IGtpbmQsIHVuc2lnbmVkIGlu dCAqZGllX2NvdW50KQogICAgICAgdW5zaWduZWQgaW50IGRlYnVnX2xpbmVfb2ZmOwogICAgICAg dW5zaWduZWQgaW50IHR5cGVfb2Zmc2V0ID0gMDsKIAorICAgICAgLyogTm90ZSBoZWFkZXIgaXMg b25lIGJpZ2dlciB3aXRoIERXQVJGIHZlcnNpb24gNS4gICovCiAgICAgICBpZiAocHRyICsgKGtp bmQgPT0gREVCVUdfVFlQRVMgPyAyMyA6IDExKSA+IGVuZHNlYykKIAl7CiAJICBlcnJvciAoMCwg MCwgIiVzOiAlcyBDVSBoZWFkZXIgdG9vIHNtYWxsIiwgZHNvLT5maWxlbmFtZSwKQEAgLTU5NDUs NiArNTk1NCwxMyBAQCByZWFkX2RlYnVnX2luZm8gKERTTyAqZHNvLCBpbnQga2luZCwgdW5zaWdu ZWQgaW50ICpkaWVfY291bnQpCiAKICAgICAgIGlmIChjdV92ZXJzaW9uID09IDUpCiAJeworCSAg LyogQWJvdmUgd2Ugb25seSBjaGVja2VkIGZvciB0aGUgc21hbGxlciB2ZXJzaW9uIDQgaGVhZGVy IHNpemUuICAqLworCSAgaWYgKHB0ciArIDQgPiBlbmRzZWMpCisJICAgIHsKKwkgICAgICBlcnJv ciAoMCwgMCwgIiVzOiAlcyBDVSB2ZXJzaW9uIDUgaGVhZGVyIHRvbyBzbWFsbCIsCisJCSAgICAg ZHNvLT5maWxlbmFtZSwgZGVidWdfc2VjdGlvbnNba2luZF0ubmFtZSk7CisJICAgICAgZ290byBm YWlsOworCSAgICB9CiAJICB2YWx1ZSA9IHJlYWRfMzIgKHB0cik7CiAJICBpZiAodmFsdWUgPj0g ZGVidWdfc2VjdGlvbnNbREVCVUdfQUJCUkVWXS5zaXplKQogCSAgICB7CkBAIC03MjA5LDYgKzcy MjUsOCBAQCBwYXJ0aXRpb25fZHVwc18xIChkd19kaWVfcmVmICphcnIsIHNpemVfdCB2ZWNfc2l6 ZSwKIAkgICAvKiBDVSBIZWFkZXI6IGFkZHJlc3Nfc2l6ZSAodWJ5dGUpLgogCSAgICAgIDEgYnl0 ZS4gICovCiAJICAgKyAxCisJICAgLyogRFdBUkY1IENVIGhlYWRlcjogdW5pdF90eXBlICh1Ynl0 ZSkuICAqLworCSAgICsgKGRpZV9jdSAoYXJyW2ldKS0+Y3VfdmVyc2lvbiA+PSA1ID8gMSA6IDAp CiAJICAgLyogQ1UgUm9vdCBESUU6IGFiYnJldmlhdGlvbiBjb2RlICh1bnNpZ25lZCBMRUIxMjgp LgogCSAgICAgIDEgb3IgbW9yZSBieXRlcy4gIE9wdGltaXN0aWNhbGx5IGFzc3VtZSAxLiAgKi8K IAkgICArIDEKQEAgLTgwNTIsOCArODA3MCw4IEBAIGNyZWF0ZV9pbXBvcnRfdHJlZSAodm9pZCkK ICAgICAgdGhhdCB3b3VsZCBuZWVkIHRvIGJlIGFkZGVkLCBhbmQgaWYgc29tZSBuZXcgRFdfVEFH X3BhcnRpYWxfdW5pdAogICAgICBDVXMgYXJlIGdvaW5nIHRvIGJlIGNyZWF0ZWQgYXMgYSByZXN1 bHQgb2YgdGhpcyByb3V0aW5lLCB0aGF0IHNpemUKICAgICAgdG9vLiAgRFdfVEFHX2ltcG9ydGVk X3VuaXQgaGFzIHNpemUgNSAoZm9yIERXQVJGMyspIG9yIDEgKyBwdHJfc2l6ZQotICAgICAoRFdB UkYyKSwgRFdfVEFHX3BhcnRpYWxfdW5pdCBoYXMgc2l6ZSAxMyAoMTEgQ1UgaGVhZGVyICsgMSBi eXRlCi0gICAgIGFiYnJldiBudW1iZXIgKyAxIGJ5dGUgY2hpbGQgZW5kKS4gICovCisgICAgIChE V0FSRjIpLCBEV19UQUdfcGFydGlhbF91bml0IGhhcyBzaXplIDEzLzE0ICgxMSBDVSBoZWFkZXIg KyAxIGJ5dGUKKyAgICAgYWJicmV2IG51bWJlciArIDEgYnl0ZSBjaGlsZCBlbmQgKyAxIGJ5dGUg Zm9yIERXQVJGNSB1bml0X3R5cGUpLiAgKi8KICAgdW5zaWduZWQgaW50IHNpemUgPSAwOwogICAv KiBTaXplIG9mIERXX1RBR19pbXBvcnRlZF91bml0IGlmIHRoZSBzYW1lIGV2ZXJ5d2hlcmUsIG90 aGVyd2lzZQogICAgICAobWl4aW5nIERXQVJGMiBhbmQgRFdBUkYzKyB3aXRoIHB0cl9zaXplICE9 IDQpIDAuICAqLwpAQCAtODMwNiwxNCArODMyNCwxOCBAQCBjcmVhdGVfaW1wb3J0X3RyZWUgKHZv aWQpCiAJCSAgICBjb250aW51ZTsKIAkJICBpZiAobnB1ID09IE5VTEwpCiAJCSAgICB7CisJCSAg ICAgIHVuc2lnbmVkIGludCBoZWFkZXJfc2l6ZTsKIAkJICAgICAgcHVzcmNbc3JjY291bnRdID0g ZTMtPmljdTsKKwkJICAgICAgaGVhZGVyX3NpemUgPSAocHVzcmNbc3JjY291bnRdLT5jdS0+Y3Vf dmVyc2lvbiA+PSA1CisJCQkJICAgICA/IDE0IDogMTMpOyAvKiBEV0FSRjUgdW5pdF90eXBlIGJ5 dGUuICAqLwogCQkgICAgICBjb3N0ICs9IGVkZ2VfY29zdDsKIAkJICAgICAgaWYgKCFlZGdlX2Nv c3QpCiAJCQljb3N0ICs9IHB1c3JjW3NyY2NvdW50XS0+Y3UtPmN1X3ZlcnNpb24gPT0gMgogCQkJ CT8gMSArIHB0cl9zaXplIDogNTsKIAkJICAgICAgc3JjY291bnQrKzsKIAkJICAgICAgaWYgKGln bm9yZV9zaXplIHx8ICgoZHN0Y291bnQgLSAxKSAqIGNvc3QKLQkJCQkJICA+IDEzICsgZHN0Y291 bnQgKiBuZXdfZWRnZV9jb3N0KSkKKwkJCQkJICA+IChoZWFkZXJfc2l6ZQorCQkJCQkgICAgICsg ZHN0Y291bnQgKiBuZXdfZWRnZV9jb3N0KSkpCiAJCQl7CiAJCQkgIHVuc2lnbmVkIGludCBqOwog CkBAIC0xMDQ1MSw3ICsxMDQ3Myw4IEBAIGNvbXB1dGVfYWJicmV2cyAoRFNPICpkc28pCiAgICAg ICBkd19kaWVfcmVmICppbnRyYWN1YXJyLCAqaW50cmFjdXZlYzsKICAgICAgIGVudW0gZHdhcmZf Zm9ybSBpbnRyYWN1Zm9ybSA9IERXX0ZPUk1fcmVmNDsKICAgICAgIGR3X2RpZV9yZWYgY2hpbGQs ICpsYXN0b3RyLCBjaGlsZF9uZXh0LCAqbGFzdDsKLSAgICAgIHVuc2lnbmVkIGludCBoZWFkZXJz eiA9IGN1LT5jdV9raW5kID09IENVX1RZUEVTID8gMjMgOiAxMTsKKyAgICAgIHVuc2lnbmVkIGlu dCBoZWFkZXJzeiA9IChjdS0+Y3Vfa2luZCA9PSBDVV9UWVBFUworCQkJICAgICAgID8gMjMgOiAo Y3UtPmN1X3ZlcnNpb24gPj0gNSA/IDEyIDogMTEpKTsKIAogICAgICAgaWYgKHVubGlrZWx5IChm aV9tdWx0aWZpbGUpICYmIGN1LT5jdV9kaWUtPmRpZV9yZW1vdmUpCiAJY29udGludWU7CkBAIC0x MDYyNyw3ICsxMDY1MCw3IEBAIGNvbXB1dGVfYWJicmV2cyAoRFNPICpkc28pCiAJY29sbGFwc2Vf Y2hpbGRyZW4gKGN1LCBjdS0+Y3VfZGllKTsKICAgICB9CiAgIGlmICh3cl9tdWx0aWZpbGUpCi0g ICAgdG90YWxfc2l6ZSArPSAxMTsKKyAgICB0b3RhbF9zaXplICs9IDExOyAvKiBTZWUgdGhlIGVu ZCBvZiB3cml0ZV9pbmZvLiAgKi8KICAgb2JzdGFja19mcmVlICgmb2IyLCAodm9pZCAqKSB0KTsK ICAgY3VhcnIgPSAoZHdfY3VfcmVmICopIG9ic3RhY2tfYWxsb2MgKCZvYjIsIG5jdXMgKiBzaXpl b2YgKGR3X2N1X3JlZikpOwogICBmb3IgKGN1ID0gZmlyc3RfY3UsIGkgPSAwOyBjdTsgY3UgPSBj dS0+Y3VfbmV4dCkKQEAgLTExNzIxLDcgKzExNzQ0LDggQEAgd3JpdGVfZGllICh1bnNpZ25lZCBj aGFyICpwdHIsIGR3X2N1X3JlZiBjdSwgZHdfZGllX3JlZiBkaWUsCiBzdGF0aWMgdm9pZAogcmVj b21wdXRlX2FiYnJldnMgKGR3X2N1X3JlZiBjdSwgdW5zaWduZWQgaW50IGN1X3NpemUpCiB7Ci0g IHVuc2lnbmVkIGludCBoZWFkZXJzeiA9IGN1LT5jdV9raW5kID09IENVX1RZUEVTID8gMjMgOiAx MTsKKyAgdW5zaWduZWQgaW50IGhlYWRlcnN6ID0gKGN1LT5jdV9raW5kID09IENVX1RZUEVTCisJ CQkgICA/IDIzIDogKGN1LT5jdV92ZXJzaW9uID49IDUgPyAxMiA6IDExKSk7CiAgIHN0cnVjdCBh YmJyZXZfdGFnICp0OwogICB1bnNpZ25lZCBpbnQgbmRpZXMgPSAwLCBpbnRyYWN1c2l6ZSwgb2Zm LCBpOwogICBkd19kaWVfcmVmICppbnRyYWN1YXJyLCAqaW50cmFjdXZlYzsKQEAgLTExODI2LDgg KzExODUwLDE1IEBAIHdyaXRlX2luZm8gKHVuc2lnbmVkIGludCAqZGllX2NvdW50KQogICAgICAg LyogV3JpdGUgQ1UgaGVhZGVyLiAgKi8KICAgICAgIHdyaXRlXzMyIChwdHIsIG5leHRfb2ZmIC0g Y3UtPmN1X25ld19vZmZzZXQgLSA0KTsKICAgICAgIHdyaXRlXzE2IChwdHIsIGN1LT5jdV92ZXJz aW9uKTsKKyAgICAgIGlmIChjdS0+Y3VfdmVyc2lvbiA+PSA1KQorCXsKKwkgICpwdHIrKyA9IChj dS0+Y3VfZGllLT5kaWVfdGFnID09IERXX1RBR19jb21waWxlX3VuaXQKKwkJICAgID8gRFdfVVRf Y29tcGlsZSA6IERXX1VUX3BhcnRpYWwpOworCSAgd3JpdGVfOCAocHRyLCBwdHJfc2l6ZSk7CisJ fQogICAgICAgd3JpdGVfMzIgKHB0ciwgY3UtPnUyLmN1X25ld19hYmJyZXZfb2Zmc2V0KTsKLSAg ICAgIHdyaXRlXzggKHB0ciwgcHRyX3NpemUpOworICAgICAgaWYgKGN1LT5jdV92ZXJzaW9uIDwg NSkKKwl3cml0ZV84IChwdHIsIHB0cl9zaXplKTsKICAgICAgIHB0ciA9IHdyaXRlX2RpZSAocHRy LCBjdSwgY3UtPmN1X2RpZSwgTlVMTCwgTlVMTCwgZGllX2NvdW50KTsKICAgICAgIGFzc2VydCAo aW5mbyArIChuZXh0X29mZiAtICh3cl9tdWx0aWZpbGUgPyBtdWx0aV9pbmZvX29mZiA6IDApKSA9 PSBwdHIpOwogICAgICAgaWYgKHVubGlrZWx5IChsb3dfbWVtKSAmJiBjdS0+Y3Vfa2luZCAhPSBD VV9QVSkKLS0gCjIuMTguNAoK --=-9lbtYkkMv4UIhFIPZUtL--