From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by sourceware.org (Postfix) with ESMTPS id 117583858D35; Fri, 10 Dec 2021 05:03:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 117583858D35 Received: by mail-pj1-x1032.google.com with SMTP id n15-20020a17090a160f00b001a75089daa3so8606075pja.1; Thu, 09 Dec 2021 21:03:28 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=/4fscAnXmHpTbXtYVB4svPzIdGMP0IbpM0cnfqd1Xic=; b=LY70VEJv1oAVmPD3kPRzhf9nnMyRNy2nzNIo0ao1ksc91UDsjJzLvouW1PP+1bg33d OQ1nNedPQ9hsPc9wE5C6v+UVJpusoMf05ZMgl9BOKoM+yydX3HXrJQ/Ql3INsUJS8Tln RwIgnH5ayimxeNF63qBlTiQl/vmjfeZFdgSfLh74rjjzk+KEAkqwqH+AKzsUWMF61Uhc oQ952vqUHpmrzfpciov1EOAKICADDmq5BqTuwFn8Qje0O1eC12hgqfPA0sqi/Y+bnrwW SaY9RzzmA4XuwBloEQOknXD1eDG6gYBxUvnIlT2YUhYChxVKbeX6KXjhcXrZQDS/F8Yb 62Vw== X-Gm-Message-State: AOAM5323tCs8B6WryV5VLkcndAnMxfOU6GQaRYVA4evCFl0jDXHY0EzZ 5p7ULWShWNLhTwRyBhXcHyOi6RaF2EdtdfqsDWpCEo2o X-Google-Smtp-Source: ABdhPJwQ6yxwYB/xqQhnPpMNu1hnHdd5GXqB7xxa6Qzmyb1TcJHdcaWBVWsFVMf6mO6dhP1VcGZLRHhTXQWFaEFecE4= X-Received: by 2002:a17:902:904b:b0:143:73ff:eb7d with SMTP id w11-20020a170902904b00b0014373ffeb7dmr71231066plz.85.1639112606964; Thu, 09 Dec 2021 21:03:26 -0800 (PST) MIME-Version: 1.0 References: <20211210023106.3564447-1-hjl.tools@gmail.com> <877dcddr60.fsf@oldenburg.str.redhat.com> In-Reply-To: <877dcddr60.fsf@oldenburg.str.redhat.com> From: "H.J. Lu" Date: Thu, 9 Dec 2021 21:02:51 -0800 Message-ID: Subject: [PATCH v3] elf: Stop with zero entry point value [BZ #28453] To: Florian Weimer , Siddhesh Poyarekar Cc: "H.J. Lu via Libc-alpha" Content-Type: multipart/mixed; boundary="000000000000af70aa05d2c3a4fa" X-Spam-Status: No, score=-3028.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Dec 2021 05:03:30 -0000 --000000000000af70aa05d2c3a4fa Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 9, 2021 at 8:23 PM Florian Weimer wrote: > > * H. J. Lu via Libc-alpha: > > > Stop with zero entry point value unless we are tracing shared objects > > since a zero entry point value in the ELF header indicates there is no > > associated entry point. Now we get > > > > $ ./elf/ld.so /lib64/libstdc++.so.6.0.29 > > ./elf/ld.so: cannot execute '/lib64/libstdc++.so.6.0.29' without entry = point > > $ > > > > instead of > > > > $ /lib64/ld-linux-x86-64.so.2 /lib64/libstdc++.so.6.0.29 > > Segmentation fault (core dumped) > > $ > > > > This fixes [BZ #28453]. > > Hah. We recently had a downstream request to fix this. > > > +$(objpfx)tst-rtld-run-dso.out: tst-rtld-run-dso.sh $(objpfx)ld.so \ > > + $(objpfx)testobj1.so > > + $(SHELL) tst-rtld-run-dso.sh $(objpfx)ld.so $(objpfx)testobj1.so = \ > > + '$(test-wrapper-env)' '$(run_program_env)' > $@ > > + $(evaluate-test) > > + > > > > > diff --git a/elf/rtld.c b/elf/rtld.c > > index 6ce1e07dc0..77bcdf8e29 100644 > > --- a/elf/rtld.c > > +++ b/elf/rtld.c > > @@ -1424,6 +1424,14 @@ dl_main (const ElfW(Phdr) *phdr, > > implementations which has no real free() function it does not > > makes sense to free the old string first. */ > > main_map->l_name =3D (char *) ""; > > + > > + /* Stop if there is no associated entry point and we are not > > + tracing shared objects. */ > > + if (main_map->l_entry =3D=3D main_map->l_addr > > + && state.mode !=3D rtld_mode_trace) > > + _dl_fatal_printf("%s: cannot execute '%s' without entry point\n", > > + ld_so_name, _dl_argv[_dl_argc -1]); > > Missing space before 1. > > Should we say =E2=80=9Ccannot execute shared object=E2=80=9D or =E2=80=9C= cannot exe[cute a] > shared library directly=E2=80=9D? execve should fail with ELIBEXEC, and = the > error messages should match. Fixed. > Should this check come later, after we have run ELF constructors, to > maximize backwards compatibility? ELF constructors might never return. Fixed. > Thanks, > Florian > Here is the v3 patch. --=20 H.J. --000000000000af70aa05d2c3a4fa Content-Type: application/x-patch; name="v3-0001-elf-Stop-with-zero-entry-point-value-BZ-28453.patch" Content-Disposition: attachment; filename="v3-0001-elf-Stop-with-zero-entry-point-value-BZ-28453.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kwzx9hbt0 RnJvbSAwYzUzZjdiMzIyNmFhNmQyZDc0NjlmNjRiNzJmMTllNjEwMmExYjQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFRodSwgOSBEZWMgMjAyMSAxODoyNDozNyAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjNdIGVsZjog U3RvcCB3aXRoIHplcm8gZW50cnkgcG9pbnQgdmFsdWUgW0JaICMyODQ1M10KCkNoYW5nZXMgaW4g dGhlIHYzIHBhdGNoOgoKMS4gRGVsYXkgemVybyBlbnRyeSBwb2ludCB2YWx1ZSBjaGVjay4KMi4g QnVpbGQgdGVzdG9iajEuc28gd2l0aCAtV2wsLS1lbnRyeT0wCgpDaGFuZ2VzIGluIHRoZSB2MiBw YXRjaDoKCjEuIFVzZSBydGxkX3Byb2duYW1lIGluIHRoZSBlcnJvciBtZXNzYWdlLgoKU3RvcCB3 aXRoIHplcm8gZW50cnkgcG9pbnQgdmFsdWUgc2luY2UgYSB6ZXJvIGVudHJ5IHBvaW50IHZhbHVl IGluIHRoZQpFTEYgaGVhZGVyIGluZGljYXRlcyB0aGVyZSBpcyBubyBhc3NvY2lhdGVkIGVudHJ5 IHBvaW50LiAgTm93IHdlIGdldAoKJCAuL2VsZi9sZC5zbyAvbGliNjQvbGlic3RkYysrLnNvLjYu MC4yOQouL2VsZi9sZC5zbzogY2Fubm90IGV4ZWN1dGUgJy9saWI2NC9saWJzdGRjKysuc28uNi4w LjI5JyB3aXRob3V0IGVudHJ5IHBvaW50CiQKCmluc3RlYWQgb2YKCiQgL2xpYjY0L2xkLWxpbnV4 LXg4Ni02NC5zby4yIC9saWI2NC9saWJzdGRjKysuc28uNi4wLjI5ClNlZ21lbnRhdGlvbiBmYXVs dCAoY29yZSBkdW1wZWQpCiQKClRoaXMgZml4ZXMgW0JaICMyODQ1M10uCi0tLQogZWxmL01ha2Vm aWxlICAgICAgICAgICAgfCAxMSArKysrKysrKysrKwogZWxmL3J0bGQuYyAgICAgICAgICAgICAg fCAgNiArKysrKysKIGVsZi90c3QtcnRsZC1ydW4tZHNvLnNoIHwgMzMgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDc1NSBlbGYvdHN0LXJ0bGQtcnVuLWRzby5zaAoKZGlmZiAtLWdpdCBhL2Vs Zi9NYWtlZmlsZSBiL2VsZi9NYWtlZmlsZQppbmRleCBlZjM2MDA4NjczLi5jYmQ2NDA4MjEyIDEw MDY0NAotLS0gYS9lbGYvTWFrZWZpbGUKKysrIGIvZWxmL01ha2VmaWxlCkBAIC01MCw2ICs1MCwx MCBAQCBpZmVxICh5ZXN5ZXMsJChidWlsZC1zaGFyZWQpJChydW4tYnVpbHQtdGVzdHMpKQogdGVz dHMtc3BlY2lhbCArPSAkKG9ianBmeClsaXN0LXR1bmFibGVzLm91dAogZW5kaWYKIAoraWZlcSAo eWVzLCQoYnVpbGQtc2hhcmVkKSkKK3Rlc3RzLXNwZWNpYWwgKz0gJChvYmpwZngpdHN0LXJ0bGQt cnVuLWRzby5vdXQKK2VuZGlmCisKICMgTWFrZSBzdXJlIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXMg bm90IGluc2VydCBhbnkgbGlicmFyeSBjYWxscyBpbiB0dW5hYmxlcwogIyBjb2RlIHBhdGhzLgog aWZlcSAoeWVzLCQoaGF2ZS1sb29wLXRvLWZ1bmN0aW9uKSkKQEAgLTgyNSw2ICs4MjksNyBAQCBM REZMQUdTLXRzdC1pbml0b3JkZXJhNC5zbyA9IC1XbCwtLW5vLWFzLW5lZWRlZAogTERGTEFHUy10 c3QtaW5pdG9yZGVyYjIuc28gPSAtV2wsLS1uby1hcy1uZWVkZWQKIExERkxBR1MtdHN0LXRsc21v ZDUuc28gPSAtbm9zdGRsaWIgLVdsLC0tbm8tYXMtbmVlZGVkCiBMREZMQUdTLXRzdC10bHNtb2Q2 LnNvID0gLW5vc3RkbGliIC1XbCwtLW5vLWFzLW5lZWRlZAorTERGTEFHUy10ZXN0b2JqMS5zbyA9 IC1XbCwtLWVudHJ5PTAKIAogdGVzdG9iajEuc28tbm8tei1kZWZzID0geWVzCiB0ZXN0b2JqMy5z by1uby16LWRlZnMgPSB5ZXMKQEAgLTE4NzcsNiArMTg4MiwxMiBAQCAkKG9ianBmeClsaXN0LXR1 bmFibGVzLm91dDogdHN0LXJ0bGQtbGlzdC10dW5hYmxlcy5zaCAkKG9ianBmeClsZC5zbwogCSAg ICAkKG9ianBmeCkvdHN0LXJ0bGQtbGlzdC10dW5hYmxlcy5vdXQgPiAkQDsgXAogCSQoZXZhbHVh dGUtdGVzdCkKIAorJChvYmpwZngpdHN0LXJ0bGQtcnVuLWRzby5vdXQ6IHRzdC1ydGxkLXJ1bi1k c28uc2ggJChvYmpwZngpbGQuc28gXAorCQkJICAgICQob2JqcGZ4KXRlc3RvYmoxLnNvCisJJChT SEVMTCkgdHN0LXJ0bGQtcnVuLWRzby5zaCAkKG9ianBmeClsZC5zbyAkKG9ianBmeCl0ZXN0b2Jq MS5zbyBcCisJICAgICckKHRlc3Qtd3JhcHBlci1lbnYpJyAnJChydW5fcHJvZ3JhbV9lbnYpJyA+ ICRACisJJChldmFsdWF0ZS10ZXN0KQorCiB0c3QtZHN0LXN0YXRpYy1FTlYgPSBMRF9MSUJSQVJZ X1BBVEg9JyQkT1JJR0lOJwogCiAkKG9ianBmeCl0c3QtcnRsZC1oZWxwLm91dDogJChvYmpwZngp bGQuc28KZGlmZiAtLWdpdCBhL2VsZi9ydGxkLmMgYi9lbGYvcnRsZC5jCmluZGV4IDZjZTFlMDdk YzAuLjdkMTgwMWM1MWMgMTAwNjQ0Ci0tLSBhL2VsZi9ydGxkLmMKKysrIGIvZWxmL3J0bGQuYwpA QCAtMjQ5MSw2ICsyNDkxLDEyIEBAIGRsX21haW4gKGNvbnN0IEVsZlcoUGhkcikgKnBoZHIsCiAg ICAgICBydGxkX3RpbWVyX2FjY3VtICgmcmVsb2NhdGVfdGltZSwgc3RhcnQpOwogICAgIH0KIAor ICAvKiBTdG9wIGlmIHRoZXJlIGlzIG5vIGFzc29jaWF0ZWQgZW50cnkgcG9pbnQuICAqLworICBp ZiAocnRsZF9pc19tYWluICYmIG1haW5fbWFwLT5sX2VudHJ5ID09IG1haW5fbWFwLT5sX2FkZHIp CisgICAgX2RsX2ZhdGFsX3ByaW50ZigiJXM6IGNhbm5vdCBleGVjdXRlIHNoYXJlZCBvYmplY3Qg JyVzJyBkaXJlY3RseSAiCisJCSAgICAgIndpdGhvdXQgZW50cnkgcG9pbnRcbiIsCisJCSAgICAg bGRfc29fbmFtZSwgcnRsZF9wcm9nbmFtZSk7CisKICAgLyogUmVsb2NhdGlvbiBpcyBjb21wbGV0 ZS4gIFBlcmZvcm0gZWFybHkgbGliYyBpbml0aWFsaXphdGlvbi4gIFRoaXMKICAgICAgaXMgdGhl IGluaXRpYWwgbGliYywgZXZlbiBpZiBhdWRpdCBtb2R1bGVzIGhhdmUgYmVlbiBsb2FkZWQgd2l0 aAogICAgICBvdGhlciBsaWJjcy4gICovCmRpZmYgLS1naXQgYS9lbGYvdHN0LXJ0bGQtcnVuLWRz by5zaCBiL2VsZi90c3QtcnRsZC1ydW4tZHNvLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4 IDAwMDAwMDAwMDAuLjUxOTJmNjQyMTAKLS0tIC9kZXYvbnVsbAorKysgYi9lbGYvdHN0LXJ0bGQt cnVuLWRzby5zaApAQCAtMCwwICsxLDMzIEBACisjIS9iaW4vc2gKKyMgVGVzdCBmb3IgbGQuc28g b24gYSBzaGFyZWQgbGlicmFyeSB3aXRoIG5vIGFzc29jaWF0ZWQgZW50cnkgcG9pbnQuCisjIENv cHlyaWdodCAoQykgMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisjCisjIFRoZSBHTlUgQyBMaWJyYXJ5 IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlcgorIyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK KyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwg c2VlCisjIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKK3NldCAtZQorCitydGxk PSQxCitkc289JDIKK3Rlc3Rfd3JhcHBlcl9lbnY9JDMKK3J1bl9wcm9ncmFtX2Vudj0kNAorCitM Q19BTEw9QworZXhwb3J0IExDX0FMTAorCiske3Rlc3Rfd3JhcHBlcl9lbnZ9IFwKKyR7cnVuX3By b2dyYW1fZW52fSBcCiskcnRsZCAkZHNvIDI+JjEgXAorfCBncmVwICJjYW5ub3QgZXhlY3V0ZSIK LS0gCjIuMzMuMQoK --000000000000af70aa05d2c3a4fa--