From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============3527159148960584315==" MIME-Version: 1.0 From: Mark Wielaard To: elfutils-devel@lists.fedorahosted.org Subject: Re: [PATCH] readelf: Show set_loc argument as hexadecimal Date: Tue, 09 Feb 2016 23:35:25 +0100 Message-ID: <1455057325.7606.94.camel@redhat.com> In-Reply-To: 20160123203957.GD19390@blokker.redhat.com --===============3527159148960584315== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi hackers, On Sat, 2016-01-23 at 21:39 +0100, Mark Wielaard wrote: > On Wed, Jan 20, 2016 at 03:14:16PM -0800, Roland McGrath wrote: > > > Other addresses in this code are printed with ("%#" PRIx64). > > > (AFAIK '#' here will always give "0x", but lets keep it consistent). > > = > > %#x prints "0" for zero (not "0x0"). Indeed it is the right thing to u= se here. > > = > > > It's also curious that nothing is done with op1 after printing it. > > > Shouldn't this set pc, at least? > > = > > I think it should, but that is unrelated to this change. > > Arguably, it should be: > > = > > get_uleb128 (op1, readp, endp); > > op1 *=3D code_align; > > printf (" set_loc %#" PRIx64 " to %#" PRIx64 "\n", > > op1, pc =3D vma_base + op1); > > = > > so that it displays the literal value (like the other cases do) as well= as > > the final value (which in this case is just with VMA_BASE added in). > = > I agree with using %# for printing the address and setting the pc using > vma_base and op1. But the argument of a DW_CFA_set_loc is an address, not > a uleb128 and it should not be adjusted by code_align, which is only used > for CFA_advance operations as far as I understand it. To read an address > we need to know the FDE address encoding and use read_encoded (which > isn't defined till a bit later, so we need to move it up). So, no comments about this at all? Sounds sane, sounds insane? What if I attach a full patch and threaten to commit it? See attached. Cheers, Mark --===============3527159148960584315== Content-Type: text/x-patch MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-readelf-Read-and-print-encoded-DW_CFA_set_loc-op-and.patch" RnJvbSA3NmEyNDUyODY2YmRjOTNhODg5MTAxOGVjMzI4MWI3ZTFjNTZlMzY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIFdpZWxhYXJkIDxtandAcmVkaGF0LmNvbT4KRGF0ZTog VHVlLCA5IEZlYiAyMDE2IDIzOjI1OjU0ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gcmVhZGVsZjog UmVhZCBhbmQgcHJpbnQgKGVuY29kZWQpIERXX0NGQV9zZXRfbG9jIG9wIGFuZAogdXBkYXRlIHBj LgoKRFdfQ0ZBX3NldF9sb2MgdGFrZXMgYW4gYWRkcmVzcyBhcyBvcCwgbm90IGFuIHVsZWIxMjgu IFJlYWQgYW5kIGRlY29kZSBpdC4KUHJpbnQgdGhlIGFjdHVhbCBhZGRyZXNzIGFuZCAodXBkYXRl ZCkgcGMgKGFkZHJlc3MgcGx1cyB2bWFfYmFzZSkuCgpTaWduZWQtb2ZmLWJ5OiBNYXJrIFdpZWxh YXJkIDxtandAcmVkaGF0LmNvbT4KLS0tCiBzcmMvQ2hhbmdlTG9nIHwgICA3ICsrKysKIHNyYy9y ZWFkZWxmLmMgfCAxMjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCA2MCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvQ2hhbmdlTG9nIGIvc3JjL0NoYW5nZUxvZwpp bmRleCA3MDdjMjcxLi43MTcwOWU0IDEwMDY0NAotLS0gYS9zcmMvQ2hhbmdlTG9nCisrKyBiL3Ny Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAxNi0wMi0wOSAgTWFyayBXaWVsYWFyZCAg PG1qd0ByZWRoYXQuY29tPgorCisJKiByZWFkZWxmLmMgKHJlYWRfZW5jb2RlZCk6IE1vdmUgdXAu CisJKHByaW50X2NmYV9wcm9ncmFtKTogQWRkIGVuY29kaW5nIGFyZ3VtZW50LiBVc2UgaXQgZm9y IHJlYWRfZW5jb2RlZAorCXdoZW4gcmVhZGluZyBEV19DRkFfc2V0X2xvYyBvcC4KKwkocHJpbnRf ZGVidWdfZnJhbWVfc2VjdGlvbik6IFBhc3MgZmRlX2VuY29kaW5nIHRvIHByaW50X2NmYV9wcm9n cmFtLgorCiAyMDE2LTAxLTEzICBNYXJrIFdpZWxhYXJkICA8bWp3QHJlZGhhdC5jb20+CiAKIAkq IGVsZmxpbnQuYyAoY2hlY2tfZWxmX2hlYWRlcik6IFJlY29nbml6ZSBFTEZPU0FCSV9GUkVFQlNE LgpkaWZmIC0tZ2l0IGEvc3JjL3JlYWRlbGYuYyBiL3NyYy9yZWFkZWxmLmMKaW5kZXggMGRiMTky ZS4uYTI1ZTRhYyAxMDA2NDQKLS0tIGEvc3JjL3JlYWRlbGYuYworKysgYi9zcmMvcmVhZGVsZi5j CkBAIC01MDQ0LDExICs1MDQ0LDY4IEBAIHJlZ2lzdGVyX2luZm8gKEVibCAqZWJsLCB1bnNpZ25l ZCBpbnQgcmVnbm8sIGNvbnN0IEVibF9SZWdpc3Rlcl9Mb2NhdGlvbiAqbG9jLAogICByZXR1cm4g c2V0OwogfQogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqCityZWFkX2VuY29kZWQgKHVu c2lnbmVkIGludCBlbmNvZGluZywgY29uc3QgdW5zaWduZWQgY2hhciAqcmVhZHAsCisJICAgICAg Y29uc3QgdW5zaWduZWQgY2hhciAqY29uc3QgZW5kcCwgdWludDY0X3QgKnJlcywgRHdhcmYgKmRi ZykKK3sKKyAgaWYgKChlbmNvZGluZyAmIDB4ZikgPT0gRFdfRUhfUEVfYWJzcHRyKQorICAgIGVu Y29kaW5nID0gZ2VsZl9nZXRjbGFzcyAoZGJnLT5lbGYpID09IEVMRkNMQVNTMzIKKyAgICAgID8g RFdfRUhfUEVfdWRhdGE0IDogRFdfRUhfUEVfdWRhdGE4OworCisgIHN3aXRjaCAoZW5jb2Rpbmcg JiAweGYpCisgICAgeworICAgIGNhc2UgRFdfRUhfUEVfdWxlYjEyODoKKyAgICAgIGdldF91bGVi MTI4ICgqcmVzLCByZWFkcCwgZW5kcCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIERXX0VIX1BF X3NsZWIxMjg6CisgICAgICBnZXRfc2xlYjEyOCAoKnJlcywgcmVhZHAsIGVuZHApOworICAgICAg YnJlYWs7CisgICAgY2FzZSBEV19FSF9QRV91ZGF0YTI6CisgICAgICBpZiAocmVhZHAgKyAyID4g ZW5kcCkKKwlnb3RvIGludmFsaWQ7CisgICAgICAqcmVzID0gcmVhZF8ydWJ5dGVfdW5hbGlnbmVk X2luYyAoZGJnLCByZWFkcCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIERXX0VIX1BFX3VkYXRh NDoKKyAgICAgIGlmIChyZWFkcCArIDQgPiBlbmRwKQorCWdvdG8gaW52YWxpZDsKKyAgICAgICpy ZXMgPSByZWFkXzR1Ynl0ZV91bmFsaWduZWRfaW5jIChkYmcsIHJlYWRwKTsKKyAgICAgIGJyZWFr OworICAgIGNhc2UgRFdfRUhfUEVfdWRhdGE4OgorICAgICAgaWYgKHJlYWRwICsgOCA+IGVuZHAp CisJZ290byBpbnZhbGlkOworICAgICAgKnJlcyA9IHJlYWRfOHVieXRlX3VuYWxpZ25lZF9pbmMg KGRiZywgcmVhZHApOworICAgICAgYnJlYWs7CisgICAgY2FzZSBEV19FSF9QRV9zZGF0YTI6Cisg ICAgICBpZiAocmVhZHAgKyAyID4gZW5kcCkKKwlnb3RvIGludmFsaWQ7CisgICAgICAqcmVzID0g cmVhZF8yc2J5dGVfdW5hbGlnbmVkX2luYyAoZGJnLCByZWFkcCk7CisgICAgICBicmVhazsKKyAg ICBjYXNlIERXX0VIX1BFX3NkYXRhNDoKKyAgICAgIGlmIChyZWFkcCArIDQgPiBlbmRwKQorCWdv dG8gaW52YWxpZDsKKyAgICAgICpyZXMgPSByZWFkXzRzYnl0ZV91bmFsaWduZWRfaW5jIChkYmcs IHJlYWRwKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRFdfRUhfUEVfc2RhdGE4OgorICAgICAg aWYgKHJlYWRwICsgOCA+IGVuZHApCisJZ290byBpbnZhbGlkOworICAgICAgKnJlcyA9IHJlYWRf OHNieXRlX3VuYWxpZ25lZF9pbmMgKGRiZywgcmVhZHApOworICAgICAgYnJlYWs7CisgICAgZGVm YXVsdDoKKyAgICBpbnZhbGlkOgorICAgICAgZXJyb3IgKDEsIDAsCisJICAgICBnZXR0ZXh0ICgi aW52YWxpZCBlbmNvZGluZyIpKTsKKyAgICB9CisKKyAgcmV0dXJuIHJlYWRwOworfQorCisKIHN0 YXRpYyB2b2lkCiBwcmludF9jZmFfcHJvZ3JhbSAoY29uc3QgdW5zaWduZWQgY2hhciAqcmVhZHAs IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNvbnN0IGVuZHAsCiAJCSAgIER3YXJmX1dvcmQgdm1hX2Jh c2UsIHVuc2lnbmVkIGludCBjb2RlX2FsaWduLAogCQkgICBpbnQgZGF0YV9hbGlnbiwKIAkJICAg dW5zaWduZWQgaW50IHZlcnNpb24sIHVuc2lnbmVkIGludCBwdHJfc2l6ZSwKKwkJICAgdW5zaWdu ZWQgaW50IGVuY29kaW5nLAogCQkgICBEd2ZsX01vZHVsZSAqZHdmbG1vZCwgRWJsICplYmwsIER3 YXJmICpkYmcpCiB7CiAgIGNoYXIgcmVnbmFtZWJ1ZltSRUdOQU1FU1pdOwpAQCAtNTA3OSw5ICs1 MTM2LDkgQEAgcHJpbnRfY2ZhX3Byb2dyYW0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnJlYWRwLCBj b25zdCB1bnNpZ25lZCBjaGFyICpjb25zdCBlbmRwLAogCSAgY2FzZSBEV19DRkFfc2V0X2xvYzoK IAkgICAgaWYgKCh1aW50NjRfdCkgKGVuZHAgLSByZWFkcCkgPCAxKQogCSAgICAgIGdvdG8gaW52 YWxpZDsKLQkgICAgZ2V0X3VsZWIxMjggKG9wMSwgcmVhZHAsIGVuZHApOwotCSAgICBvcDEgKz0g dm1hX2Jhc2U7Ci0JICAgIHByaW50ZiAoIiAgICAgc2V0X2xvYyAlIiBQUkl1NjQgIlxuIiwgb3Ax ICogY29kZV9hbGlnbik7CisJICAgIHJlYWRwID0gcmVhZF9lbmNvZGVkIChlbmNvZGluZywgcmVh ZHAsIGVuZHAsICZvcDEsIGRiZyk7CisJICAgIHByaW50ZiAoIiAgICAgc2V0X2xvYyAlIyIgUFJJ eDY0ICIgdG8gJSMiIFBSSXg2NCAiXG4iLAorCQkgICAgb3AxLCBwYyA9IHZtYV9iYXNlICsgb3Ax KTsKIAkgICAgYnJlYWs7CiAJICBjYXNlIERXX0NGQV9hZHZhbmNlX2xvYzE6CiAJICAgIGlmICgo dWludDY0X3QpIChlbmRwIC0gcmVhZHApIDwgMSkKQEAgLTU0MjEsNjIgKzU0NzgsNiBAQCBwcmlu dF9lbmNvZGluZ19iYXNlIChjb25zdCBjaGFyICpwZngsIHVuc2lnbmVkIGludCBmZGVfZW5jb2Rp bmcpCiB9CiAKIAotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgKgotcmVhZF9lbmNvZGVkICh1 bnNpZ25lZCBpbnQgZW5jb2RpbmcsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnJlYWRwLAotCSAgICAg IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNvbnN0IGVuZHAsIHVpbnQ2NF90ICpyZXMsIER3YXJmICpk YmcpCi17Ci0gIGlmICgoZW5jb2RpbmcgJiAweGYpID09IERXX0VIX1BFX2Fic3B0cikKLSAgICBl bmNvZGluZyA9IGdlbGZfZ2V0Y2xhc3MgKGRiZy0+ZWxmKSA9PSBFTEZDTEFTUzMyCi0gICAgICA/ IERXX0VIX1BFX3VkYXRhNCA6IERXX0VIX1BFX3VkYXRhODsKLQotICBzd2l0Y2ggKGVuY29kaW5n ICYgMHhmKQotICAgIHsKLSAgICBjYXNlIERXX0VIX1BFX3VsZWIxMjg6Ci0gICAgICBnZXRfdWxl YjEyOCAoKnJlcywgcmVhZHAsIGVuZHApOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEV19FSF9Q RV9zbGViMTI4OgotICAgICAgZ2V0X3NsZWIxMjggKCpyZXMsIHJlYWRwLCBlbmRwKTsKLSAgICAg IGJyZWFrOwotICAgIGNhc2UgRFdfRUhfUEVfdWRhdGEyOgotICAgICAgaWYgKHJlYWRwICsgMiA+ IGVuZHApCi0JZ290byBpbnZhbGlkOwotICAgICAgKnJlcyA9IHJlYWRfMnVieXRlX3VuYWxpZ25l ZF9pbmMgKGRiZywgcmVhZHApOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEV19FSF9QRV91ZGF0 YTQ6Ci0gICAgICBpZiAocmVhZHAgKyA0ID4gZW5kcCkKLQlnb3RvIGludmFsaWQ7Ci0gICAgICAq cmVzID0gcmVhZF80dWJ5dGVfdW5hbGlnbmVkX2luYyAoZGJnLCByZWFkcCk7Ci0gICAgICBicmVh azsKLSAgICBjYXNlIERXX0VIX1BFX3VkYXRhODoKLSAgICAgIGlmIChyZWFkcCArIDggPiBlbmRw KQotCWdvdG8gaW52YWxpZDsKLSAgICAgICpyZXMgPSByZWFkXzh1Ynl0ZV91bmFsaWduZWRfaW5j IChkYmcsIHJlYWRwKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgRFdfRUhfUEVfc2RhdGEyOgot ICAgICAgaWYgKHJlYWRwICsgMiA+IGVuZHApCi0JZ290byBpbnZhbGlkOwotICAgICAgKnJlcyA9 IHJlYWRfMnNieXRlX3VuYWxpZ25lZF9pbmMgKGRiZywgcmVhZHApOwotICAgICAgYnJlYWs7Ci0g ICAgY2FzZSBEV19FSF9QRV9zZGF0YTQ6Ci0gICAgICBpZiAocmVhZHAgKyA0ID4gZW5kcCkKLQln b3RvIGludmFsaWQ7Ci0gICAgICAqcmVzID0gcmVhZF80c2J5dGVfdW5hbGlnbmVkX2luYyAoZGJn LCByZWFkcCk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIERXX0VIX1BFX3NkYXRhODoKLSAgICAg IGlmIChyZWFkcCArIDggPiBlbmRwKQotCWdvdG8gaW52YWxpZDsKLSAgICAgICpyZXMgPSByZWFk XzhzYnl0ZV91bmFsaWduZWRfaW5jIChkYmcsIHJlYWRwKTsKLSAgICAgIGJyZWFrOwotICAgIGRl ZmF1bHQ6Ci0gICAgaW52YWxpZDoKLSAgICAgIGVycm9yICgxLCAwLAotCSAgICAgZ2V0dGV4dCAo ImludmFsaWQgZW5jb2RpbmciKSk7Ci0gICAgfQotCi0gIHJldHVybiByZWFkcDsKLX0KLQotCiBz dGF0aWMgdm9pZAogcHJpbnRfZGVidWdfZnJhbWVfc2VjdGlvbiAoRHdmbF9Nb2R1bGUgKmR3Zmxt b2QsIEVibCAqZWJsLCBHRWxmX0VoZHIgKmVoZHIsCiAJCQkgICBFbGZfU2NuICpzY24sIEdFbGZf U2hkciAqc2hkciwgRHdhcmYgKmRiZykKQEAgLTU4NTEsNyArNTg1Miw3IEBAIHByaW50X2RlYnVn X2ZyYW1lX3NlY3Rpb24gKER3ZmxfTW9kdWxlICpkd2ZsbW9kLCBFYmwgKmVibCwgR0VsZl9FaGRy ICplaGRyLAogICAgICAgZWxzZQogCXByaW50X2NmYV9wcm9ncmFtIChyZWFkcCwgY2llZW5kLCB2 bWFfYmFzZSwgY29kZV9hbGlnbm1lbnRfZmFjdG9yLAogCQkJICAgZGF0YV9hbGlnbm1lbnRfZmFj dG9yLCB2ZXJzaW9uLCBwdHJfc2l6ZSwKLQkJCSAgIGR3Zmxtb2QsIGVibCwgZGJnKTsKKwkJCSAg IGZkZV9lbmNvZGluZywgZHdmbG1vZCwgZWJsLCBkYmcpOwogICAgICAgcmVhZHAgPSBjaWVlbmQ7 CiAgICAgfQogfQotLSAKMi41LjAKCg== --===============3527159148960584315==--