From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============7091816083450125219==" MIME-Version: 1.0 From: Mark Wielaard To: elfutils-devel@lists.fedorahosted.org Subject: Re: [PATCH 1/2] Add is_executable to Dwfl_Module. Date: Wed, 10 Sep 2014 22:15:42 +0200 Message-ID: <1410380142.27502.36.camel@bordewijk.wildebeest.org> In-Reply-To: 20140909215150.GA16300@host2.jankratochvil.net --===============7091816083450125219== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This is somewhat separate from the rest of your proposed patch, but... > + // !execlike && ET_EXEC is PIE. > + // execlike && !ET_EXEC is a static executable. > + if (mod !=3D NULL && (execlike || ehdr.e32.e_type =3D=3D ET_EXEC)) > + mod->is_executable =3D true; This made me look in the function and there are a couple more places that just use ehdr.e32 fields without checking whether we are dealing with a ELFCLASS32/Elf32_Ehdr or ELFCLASS64/Elf64_Ehdr (or worse use the e32 variants even when we just checked it is Elf64). ehdr is a union of those two types. It happens to work for the first few struct members since they have the same underlying base type (but different type names). But that makes it somewhat hard to review this code is correct. You have to double check every time the field offsets really match up. So I propose a cleanup like the attached first. Cheers, Mark --===============7091816083450125219== Content-Type: text/x-patch MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-libdwfl-dwfl_segment_report_module-use-ei_class-ei_d.patch" RnJvbSBkMjVmZjIwODUzMDM1YThhYWY3YmY1MTdkYjhlNWMwODI3NzBlODNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogTWFyayBXaWVsYWFyZCA8bWp3QHJlZGhhdC5jb20+DQpEYXRl OiBXZWQsIDEwIFNlcCAyMDE0IDIxOjU3OjM2ICswMjAwDQpTdWJqZWN0OiBbUEFUQ0hdIGxpYmR3 Zmw6IGR3Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlIHVzZSBlaV9jbGFzcywgZWlfZGF0YSBhbmQN CiBlX3R5cGUuDQoNClRvIG1ha2UgaXQgZWFzaWVyIHRvIHJldmlldyB0aGUgY29kZSBpcyB1c2lu ZyB0aGUgY29ycmVjdCBmaWVsZHMgb2YNCnRoZSBlaGRyIGUzMi9lNjQgdW5pb24gZXh0cmFjdCBl aV9jbGFzcywgZWlfZGF0YSBhbmQgZV90eXBlIGVhcmx5IGFuZCB1c2UNCnRoZW0gZGlyZWN0bHku DQoNClNpZ25lZC1vZmYtYnk6IE1hcmsgV2llbGFhcmQgPG1qd0ByZWRoYXQuY29tPg0KLS0tDQog bGliZHdmbC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwgIDUgKysrKysNCiBsaWJkd2Zs L2R3Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlLmMgfCA0MSArKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLS0tLS0NCiAyIGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDIwIGRl bGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvbGliZHdmbC9DaGFuZ2VMb2cgYi9saWJkd2ZsL0No YW5nZUxvZw0KaW5kZXggM2RlNzcyZS4uYmIwMzliNSAxMDA2NDQNCi0tLSBhL2xpYmR3ZmwvQ2hh bmdlTG9nDQorKysgYi9saWJkd2ZsL0NoYW5nZUxvZw0KQEAgLTEsMyArMSw4IEBADQorMjAxNC0w OS0xMCAgTWFyayBXaWVsYWFyZCAgPG1qd0ByZWRoYXQuY29tPg0KKw0KKwkqIGR3Zmxfc2VnbWVu dF9yZXBvcnRfbW9kdWxlLmMgKGR3Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlKToNCisJRXh0cmFj dCBlaV9jbGFzcywgZWlfZGF0YSBhbmQgZV90eXBlIGVhcmx5IGFuZCB1c2UgdGhlIHJlc3VsdC4N CisNCiAyMDE0LTA4LTI4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+DQogDQogCSogZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYyAoZmluZF9vZmZzZXRzKTogQWRkIHBh cmFtZXRlciBtYWluX2JpYXMsIHVzZQ0KZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9zZWdtZW50 X3JlcG9ydF9tb2R1bGUuYyBiL2xpYmR3ZmwvZHdmbF9zZWdtZW50X3JlcG9ydF9tb2R1bGUuYw0K aW5kZXggZGZlY2I1MS4uNTcyZjE1YiAxMDA2NDQNCi0tLSBhL2xpYmR3ZmwvZHdmbF9zZWdtZW50 X3JlcG9ydF9tb2R1bGUuYw0KKysrIGIvbGliZHdmbC9kd2ZsX3NlZ21lbnRfcmVwb3J0X21vZHVs ZS5jDQpAQCAtMSw1ICsxLDUgQEANCiAvKiBTbmlmZiBvdXQgbW9kdWxlcyBmcm9tIEVMRiBoZWFk ZXJzIHZpc2libGUgaW4gbWVtb3J5IHNlZ21lbnRzLg0KLSAgIENvcHlyaWdodCAoQykgMjAwOC0y MDEyIFJlZCBIYXQsIEluYy4NCisgICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMiwgMjAxNCBSZWQg SGF0LCBJbmMuDQogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgZWxmdXRpbHMuDQogDQogICAgVGhp cyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkNCkBAIC0xNjEsNiArMTYxLDkgQEAgZHdmbF9zZWdtZW50X3JlcG9ydF9tb2R1bGUgKER3 ZmwgKmR3ZmwsIGludCBuZHgsIGNvbnN0IGNoYXIgKm5hbWUsDQogICB9DQogDQogICAvKiBFeHRy YWN0IHRoZSBpbmZvcm1hdGlvbiB3ZSBuZWVkIGZyb20gdGhlIGZpbGUgaGVhZGVyLiAgKi8NCisg IHVuc2lnbmVkIGNoYXIgZWlfY2xhc3M7DQorICB1bnNpZ25lZCBjaGFyIGVpX2RhdGE7DQorICB1 aW50MTZfdCBlX3R5cGU7DQogICB1bmlvbg0KICAgew0KICAgICBFbGYzMl9FaGRyIGUzMjsNCkBA IC0xODMsMTMgKzE4NiwxNSBAQCBkd2ZsX3NlZ21lbnRfcmVwb3J0X21vZHVsZSAoRHdmbCAqZHdm bCwgaW50IG5keCwgY29uc3QgY2hhciAqbmFtZSwNCiAgICAgICAuZF9zaXplID0gc2l6ZW9mIGVo ZHIsDQogICAgICAgLmRfdmVyc2lvbiA9IEVWX0NVUlJFTlQsDQogICAgIH07DQotICBzd2l0Y2gg KCgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBidWZmZXIpW0VJX0NMQVNTXSkNCisgIGVpX2NsYXNz ID0gKChjb25zdCB1bnNpZ25lZCBjaGFyICopIGJ1ZmZlcilbRUlfQ0xBU1NdOw0KKyAgZWlfZGF0 YSA9ICgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBidWZmZXIpW0VJX0RBVEFdOw0KKyAgc3dpdGNo IChlaV9jbGFzcykNCiAgICAgew0KICAgICBjYXNlIEVMRkNMQVNTMzI6DQogICAgICAgeGxhdGVm cm9tLmRfc2l6ZSA9IHNpemVvZiAoRWxmMzJfRWhkcik7DQotICAgICAgaWYgKGVsZjMyX3hsYXRl dG9tICgmeGxhdGV0bywgJnhsYXRlZnJvbSwNCi0JCQkgICgoY29uc3QgdW5zaWduZWQgY2hhciAq KSBidWZmZXIpW0VJX0RBVEFdKSA9PSBOVUxMKQ0KKyAgICAgIGlmIChlbGYzMl94bGF0ZXRvbSAo JnhsYXRldG8sICZ4bGF0ZWZyb20sIGVpX2RhdGEpID09IE5VTEwpDQogCXJldHVybiBmaW5pc2gg KCk7DQorICAgICAgZV90eXBlID0gZWhkci5lMzIuZV90eXBlOw0KICAgICAgIHBob2ZmID0gZWhk ci5lMzIuZV9waG9mZjsNCiAgICAgICBwaG51bSA9IGVoZHIuZTMyLmVfcGhudW07DQogICAgICAg cGhlbnRzaXplID0gZWhkci5lMzIuZV9waGVudHNpemU7DQpAQCAtMjAwLDkgKzIwNSw5IEBAIGR3 Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlIChEd2ZsICpkd2ZsLCBpbnQgbmR4LCBjb25zdCBjaGFy ICpuYW1lLA0KIA0KICAgICBjYXNlIEVMRkNMQVNTNjQ6DQogICAgICAgeGxhdGVmcm9tLmRfc2l6 ZSA9IHNpemVvZiAoRWxmNjRfRWhkcik7DQotICAgICAgaWYgKGVsZjY0X3hsYXRldG9tICgmeGxh dGV0bywgJnhsYXRlZnJvbSwNCi0JCQkgICgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBidWZmZXIp W0VJX0RBVEFdKSA9PSBOVUxMKQ0KKyAgICAgIGlmIChlbGY2NF94bGF0ZXRvbSAoJnhsYXRldG8s ICZ4bGF0ZWZyb20sIGVpX2RhdGEpID09IE5VTEwpDQogCXJldHVybiBmaW5pc2ggKCk7DQorICAg ICAgZV90eXBlID0gZWhkci5lNjQuZV90eXBlOw0KICAgICAgIHBob2ZmID0gZWhkci5lNjQuZV9w aG9mZjsNCiAgICAgICBwaG51bSA9IGVoZHIuZTY0LmVfcGhudW07DQogICAgICAgcGhlbnRzaXpl ID0gZWhkci5lNjQuZV9waGVudHNpemU7DQpAQCAtMjgxLDcgKzI4Niw3IEBAIGR3Zmxfc2VnbWVu dF9yZXBvcnRfbW9kdWxlIChEd2ZsICpkd2ZsLCBpbnQgbmR4LCBjb25zdCBjaGFyICpuYW1lLA0K ICAgICBhc3NlcnQgKHNpemVvZiAoRWxmMzJfTmhkcikgPT0gc2l6ZW9mIChFbGY2NF9OaGRyKSk7 DQogDQogICAgIHZvaWQgKm5vdGVzOw0KLSAgICBpZiAoZWhkci5lMzIuZV9pZGVudFtFSV9EQVRB XSA9PSBNWV9FTEZEQVRBKQ0KKyAgICBpZiAoZWlfZGF0YSA9PSBNWV9FTEZEQVRBKQ0KICAgICAg IG5vdGVzID0gZGF0YTsNCiAgICAgZWxzZQ0KICAgICAgIHsNCkBAIC0zOTcsMTAgKzQwMiw5IEBA IGR3Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlIChEd2ZsICpkd2ZsLCBpbnQgbmR4LCBjb25zdCBj aGFyICpuYW1lLA0KIAlicmVhazsNCiAgICAgICB9DQogICB9DQotICBpZiAoZWhkci5lMzIuZV9p ZGVudFtFSV9DTEFTU10gPT0gRUxGQ0xBU1MzMikNCisgIGlmIChlaV9jbGFzcyA9PSBFTEZDTEFT UzMyKQ0KICAgICB7DQotICAgICAgaWYgKGVsZjMyX3hsYXRldG9tICgmeGxhdGV0bywgJnhsYXRl ZnJvbSwNCi0JCQkgIGVoZHIuZTMyLmVfaWRlbnRbRUlfREFUQV0pID09IE5VTEwpDQorICAgICAg aWYgKGVsZjMyX3hsYXRldG9tICgmeGxhdGV0bywgJnhsYXRlZnJvbSwgZWlfZGF0YSkgPT0gTlVM TCkNCiAJZm91bmRfYmlhcyA9IGZhbHNlOwkvKiBUcmlnZ2VyIGVycm9yIGNoZWNrLiAgKi8NCiAg ICAgICBlbHNlDQogCWZvciAodWludF9mYXN0MTZfdCBpID0gMDsgaSA8IHBobnVtOyArK2kpDQpA QCAtNDExLDggKzQxNSw3IEBAIGR3Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlIChEd2ZsICpkd2Zs LCBpbnQgbmR4LCBjb25zdCBjaGFyICpuYW1lLA0KICAgICB9DQogICBlbHNlDQogICAgIHsNCi0g ICAgICBpZiAoZWxmNjRfeGxhdGV0b20gKCZ4bGF0ZXRvLCAmeGxhdGVmcm9tLA0KLQkJCSAgZWhk ci5lMzIuZV9pZGVudFtFSV9EQVRBXSkgPT0gTlVMTCkNCisgICAgICBpZiAoZWxmNjRfeGxhdGV0 b20gKCZ4bGF0ZXRvLCAmeGxhdGVmcm9tLCBlaV9kYXRhKSA9PSBOVUxMKQ0KIAlmb3VuZF9iaWFz ID0gZmFsc2U7CS8qIFRyaWdnZXIgZXJyb3IgY2hlY2suICAqLw0KICAgICAgIGVsc2UNCiAJZm9y ICh1aW50X2Zhc3QxNl90IGkgPSAwOyBpIDwgcGhudW07ICsraSkNCkBAIC01NjgsNyArNTcxLDcg QEAgZHdmbF9zZWdtZW50X3JlcG9ydF9tb2R1bGUgKER3ZmwgKmR3ZmwsIGludCBuZHgsIGNvbnN0 IGNoYXIgKm5hbWUsDQogICAgIHJldHVybiBzb25hbWVfc3Ryb2ZmICE9IDAgJiYgZHluc3RyX3Zh ZGRyICE9IDAgJiYgZHluc3Ryc3ogIT0gMDsNCiAgIH0NCiANCi0gIGNvbnN0IHNpemVfdCBkeW5f ZW50c2l6ZSA9IChlaGRyLmUzMi5lX2lkZW50W0VJX0NMQVNTXSA9PSBFTEZDTEFTUzMyDQorICBj b25zdCBzaXplX3QgZHluX2VudHNpemUgPSAoZWlfY2xhc3MgPT0gRUxGQ0xBU1MzMg0KIAkJCSAg ICAgID8gc2l6ZW9mIChFbGYzMl9EeW4pIDogc2l6ZW9mIChFbGY2NF9EeW4pKTsNCiAgIHZvaWQg KmR5bl9kYXRhID0gTlVMTDsNCiAgIHNpemVfdCBkeW5fZGF0YV9zaXplID0gMDsNCkBAIC01ODcs MTggKzU5MCwxNiBAQCBkd2ZsX3NlZ21lbnRfcmVwb3J0X21vZHVsZSAoRHdmbCAqZHdmbCwgaW50 IG5keCwgY29uc3QgY2hhciAqbmFtZSwNCiAgICAgICB4bGF0ZXRvLmRfYnVmID0gJmR5bjsNCiAg ICAgICB4bGF0ZXRvLmRfc2l6ZSA9IHNpemVvZiBkeW47DQogDQotICAgICAgaWYgKGVoZHIuZTMy LmVfaWRlbnRbRUlfQ0xBU1NdID09IEVMRkNMQVNTMzIpDQorICAgICAgaWYgKGVpX2NsYXNzID09 IEVMRkNMQVNTMzIpDQogCXsNCi0JICBpZiAoZWxmMzJfeGxhdGV0b20gKCZ4bGF0ZXRvLCAmeGxh dGVmcm9tLA0KLQkJCSAgICAgIGVoZHIuZTMyLmVfaWRlbnRbRUlfREFUQV0pICE9IE5VTEwpDQor CSAgaWYgKGVsZjMyX3hsYXRldG9tICgmeGxhdGV0bywgJnhsYXRlZnJvbSwgZWlfZGF0YSkgIT0g TlVMTCkNCiAJICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZHluX2ZpbGVzeiAvIHNpemVvZiBk eW4uZDMyWzBdOyArK2kpDQogCSAgICAgIGlmIChjb25zaWRlcl9keW4gKGR5bi5kMzJbaV0uZF90 YWcsIGR5bi5kMzJbaV0uZF91bi5kX3ZhbCkpDQogCQlicmVhazsNCiAJfQ0KICAgICAgIGVsc2UN CiAJew0KLQkgIGlmIChlbGY2NF94bGF0ZXRvbSAoJnhsYXRldG8sICZ4bGF0ZWZyb20sDQotCQkJ ICAgICAgZWhkci5lMzIuZV9pZGVudFtFSV9EQVRBXSkgIT0gTlVMTCkNCisJICBpZiAoZWxmNjRf eGxhdGV0b20gKCZ4bGF0ZXRvLCAmeGxhdGVmcm9tLCBlaV9kYXRhKSAhPSBOVUxMKQ0KIAkgICAg Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBkeW5fZmlsZXN6IC8gc2l6ZW9mIGR5bi5kNjRbMF07ICsr aSkNCiAJICAgICAgaWYgKGNvbnNpZGVyX2R5biAoZHluLmQ2NFtpXS5kX3RhZywgZHluLmQ2NFtp XS5kX3VuLmRfdmFsKSkNCiAJCWJyZWFrOw0KQEAgLTYwOCw3ICs2MDksNyBAQCBkd2ZsX3NlZ21l bnRfcmVwb3J0X21vZHVsZSAoRHdmbCAqZHdmbCwgaW50IG5keCwgY29uc3QgY2hhciAqbmFtZSwN CiANCiAgIC8qIFdlJ2xsIHVzZSB0aGUgbmFtZSBwYXNzZWQgaW4gb3IgYSBzdHVwaWQgZGVmYXVs dCBpZiBub3QgRFRfU09OQU1FLiAgKi8NCiAgIGlmIChuYW1lID09IE5VTEwpDQotICAgIG5hbWUg PSBlaGRyLmUzMi5lX3R5cGUgPT0gRVRfRVhFQyA/ICJbZXhlXSIgOiBleGVjbGlrZSA/ICJbcGll XSIgOiAiW2Rzb10iOw0KKyAgICBuYW1lID0gZV90eXBlID09IEVUX0VYRUMgPyAiW2V4ZV0iIDog ZXhlY2xpa2UgPyAiW3BpZV0iIDogIltkc29dIjsNCiANCiAgIHZvaWQgKnNvbmFtZSA9IE5VTEw7 DQogICBzaXplX3Qgc29uYW1lX3NpemUgPSAwOw0KQEAgLTcxMCw3ICs3MTEsNyBAQCBkd2ZsX3Nl Z21lbnRfcmVwb3J0X21vZHVsZSAoRHdmbCAqZHdmbCwgaW50IG5keCwgY29uc3QgY2hhciAqbmFt ZSwNCiAJICAgICAgZmluYWxfcmVhZCAob2Zmc2V0LCB2YWRkciArIGJpYXMsIGZpbGVzeik7DQog CSAgfQ0KIA0KLQkgIGlmIChlaGRyLmUzMi5lX2lkZW50W0VJX0NMQVNTXSA9PSBFTEZDTEFTUzMy KQ0KKwkgIGlmIChlaV9jbGFzcyA9PSBFTEZDTEFTUzMyKQ0KIAkgICAgZm9yICh1aW50X2Zhc3Qx Nl90IGkgPSAwOyBpIDwgcGhudW07ICsraSkNCiAJICAgICAgcmVhZF9waGRyIChwaGRycy5wMzJb aV0ucF90eXBlLCBwaGRycy5wMzJbaV0ucF92YWRkciwNCiAJCQkgcGhkcnMucDMyW2ldLnBfb2Zm c2V0LCBwaGRycy5wMzJbaV0ucF9maWxlc3opOw0KLS0gDQoxLjguMy4xDQoNCg== --===============7091816083450125219==--