From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from forward502c.mail.yandex.net (forward502c.mail.yandex.net [178.154.239.210]) by sourceware.org (Postfix) with ESMTPS id AEEB03858C54 for ; Fri, 14 Apr 2023 19:04:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AEEB03858C54 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=yandex.ru Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=yandex.ru Received: from mail-nwsmtp-smtp-production-main-63.sas.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-63.sas.yp-c.yandex.net [IPv6:2a02:6b8:c14:4293:0:640:63a5:0]) by forward502c.mail.yandex.net (Yandex) with ESMTP id 9D2EB5EDB3; Fri, 14 Apr 2023 22:04:55 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-63.sas.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id q4esLRJW18c0-gKZWDHiB; Fri, 14 Apr 2023 22:04:54 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1681499095; bh=289bs1ot0OfgP4wKqvRo9KbKBfCzLNq1MlkU8GB3638=; h=In-Reply-To:Cc:Date:References:To:Subject:Message-ID:From; b=k20y8BUs5xKrycEUbQ6XgwssVX+8nFxdo576Jst+GSe+QwoXtK7etTp6qEeCfbItg HrsdYrz0b4bxLcWYgHgJXPD1RTbrSb7D9t8yo/DCZ25MGCYjOeTPJ0nF70J1izoKiK VQw9GcJciCujdPZQ3Fui0prU9eep53TtYaogQzhU= Authentication-Results: mail-nwsmtp-smtp-production-main-63.sas.yp-c.yandex.net; dkim=pass header.i=@yandex.ru Content-Type: multipart/mixed; boundary="------------jhLrlzAeRAOUtetkX1nO6nXQ" Message-ID: <3f636504-818d-6520-6cf3-484503a8703c@yandex.ru> Date: Sat, 15 Apr 2023 00:04:52 +0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: proof for dlmem() (Re: [PATCH v9 0/13] implement dlmem() function) Content-Language: en-US To: Adhemerval Zanella Netto , Szabolcs Nagy , Rich Felker Cc: libc-alpha@sourceware.org, janderson@rice.edu, Carlos O'Donell , Zack Weinberg References: <298b04a6-3055-b89b-59c1-4cfbe955848e@yandex.ru> <81749d04-8cdb-de0b-b88e-24347ed535ba@yandex.ru> <729710b5-6dae-d5f2-99ee-6923be5e627d@yandex.ru> <20230412182043.GI3298@brightrain.aerifal.cx> <08d9ca95-112c-d85e-8e82-7a595ef4d051@yandex.ru> <78b5b5dc-5657-4bf8-24c6-6c00afb1cc40@yandex.ru> <83ee7b42-7a50-e8d1-e9ca-58ec2a12a995@linaro.org> <59862084-0fe3-7642-d3b3-01bb87eef7db@yandex.ru> <52d0b5e8-2c81-66e6-60dc-771d01b26fd6@linaro.org> From: stsp In-Reply-To: <52d0b5e8-2c81-66e6-60dc-771d01b26fd6@linaro.org> X-Spam-Status: No, score=-9.7 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_0,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------jhLrlzAeRAOUtetkX1nO6nXQ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hello, 14.04.2023 01:02, Adhemerval Zanella Netto пишет: > "It would be possible to require the caller to arrange all of > these things, but that's basically offloading A LOT of the ELF > loading process onto the calling program and I don't think that > makes for a reasonable public interface for glibc to provide." OK, in this case I am going to provide a very detailed, reproducible and undisputable proof that the above quote is false. Attached is the small patch that can be applied on top of my v10 patch-set to verify the demo I present here. The demo I present here, shows the "trace" of the dlmem() usage, by sampling the /proc/self/maps at needed points. Namely, before dlmem(), immediately after dlmem(), and after the fdlopen-over-dlmem finished. That demo clearly and unambiguously demonstrates how dlmem() transforms the raw solib image into the "loaded" image, i.e. where all the PT_LOAD sections are correctly laid out. The output of that demo will be located in a path: /dlfcn/tst-dlmem-extfns.out Everyone can apply the v10+attached patch and verify my results on his build. And here it is: $ cat tst-dlmem-extfns.out before dlmem 7f5210ca8000-7f5210cad000 r--p 00000000 00:29 18840304 /home/stas/src/glibc-dlmem/build/dlfcn/glreflib1.so after dlmem 7f5210ca3000-7f5210ca4000 r--p 00000000 00:29 18840304 /home/stas/src/glibc-dlmem/build/dlfcn/glreflib1.so 7f5210ca4000-7f5210ca5000 r-xp 00001000 00:29 18840304 /home/stas/src/glibc-dlmem/build/dlfcn/glreflib1.so 7f5210ca5000-7f5210ca6000 r--p 00002000 00:29 18840304 /home/stas/src/glibc-dlmem/build/dlfcn/glreflib1.so 7f5210ca6000-7f5210ca7000 r--p 00002000 00:29 18840304 /home/stas/src/glibc-dlmem/build/dlfcn/glreflib1.so 7f5210ca7000-7f5210ca8000 rw-p 00003000 00:29 18840304 /home/stas/src/glibc-dlmem/build/dlfcn/glreflib1.so 7f5210ca8000-7f5210cad000 r--p 00000000 00:29 18840304 /home/stas/src/glibc-dlmem/build/dlfcn/glreflib1.so post fdlopen 7f5210ca3000-7f5210ca4000 r--p 00000000 00:29 18840304 /home/stas/src/glibc-dlmem/build/dlfcn/glreflib1.so 7f5210ca4000-7f5210ca5000 r-xp 00001000 00:29 18840304 /home/stas/src/glibc-dlmem/build/dlfcn/glreflib1.so 7f5210ca5000-7f5210ca6000 r--p 00002000 00:29 18840304 /home/stas/src/glibc-dlmem/build/dlfcn/glreflib1.so 7f5210ca6000-7f5210ca7000 r--p 00002000 00:29 18840304 /home/stas/src/glibc-dlmem/build/dlfcn/glreflib1.so 7f5210ca7000-7f5210ca8000 rw-p 00003000 00:29 18840304 /home/stas/src/glibc-dlmem/build/dlfcn/glreflib1.so PS: yes, I realize nothing can be changed. But I need to make sure the best possible and the most obvious proof is publically available, so that its not to look as if I've given up to this "wonderful argument that was brought to me so many times". You got all the proves, and also more than once. --------------jhLrlzAeRAOUtetkX1nO6nXQ Content-Type: text/x-patch; charset=UTF-8; name="a.diff" Content-Disposition: attachment; filename="a.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RsZmNuL3RzdC1kbG1lbS1leHRmbnMuYyBiL2RsZmNuL3RzdC1kbG1l bS1leHRmbnMuYwppbmRleCAzYjk4YTZlODU5Li5lMzViZGNhZWIxIDEwMDY0NAotLS0gYS9k bGZjbi90c3QtZGxtZW0tZXh0Zm5zLmMKKysrIGIvZGxmY24vdHN0LWRsbWVtLWV4dGZucy5j CkBAIC0zNiwxMyArMzYsMjAgQEAgZmRsb3BlbiAoaW50IGZkLCBpbnQgZmxhZ3MpCiAgIG9m Zl90IGxlbjsKICAgdm9pZCAqYWRkcjsKICAgdm9pZCAqaGFuZGxlOworICBjaGFyIGNtZFsy NTZdOwogCiAgIGxlbiA9IGxzZWVrIChmZCwgMCwgU0VFS19FTkQpOwogICBsc2VlayAoZmQs IDAsIFNFRUtfU0VUKTsKICAgYWRkciA9IG1tYXAgKE5VTEwsIGxlbiwgUFJPVF9SRUFELCBN QVBfUFJJVkFURSwgZmQsIDApOwogICBpZiAoYWRkciA9PSBNQVBfRkFJTEVEKQogICAgIHJl dHVybiBOVUxMOworICBwcmludGYgKCJcbmJlZm9yZSBkbG1lbVxuIik7CisgIHNucHJpbnRm IChjbWQsIHNpemVvZihjbWQpLCAiZ3JlcCBnbHJlZmxpYjEuc28gL3Byb2MvJWkvbWFwcyIs IGdldHBpZCgpKTsKKyAgc3lzdGVtIChjbWQpOwogICBoYW5kbGUgPSBkbG1lbSAoYWRkciwg bGVuLCBmbGFncywgTlVMTCk7CisgIHByaW50ZiAoIlxuYWZ0ZXIgZGxtZW1cbiIpOworICBz bnByaW50ZiAoY21kLCBzaXplb2YoY21kKSwgImdyZXAgZ2xyZWZsaWIxLnNvIC9wcm9jLyVp L21hcHMiLCBnZXRwaWQoKSk7CisgIHN5c3RlbSAoY21kKTsKICAgbXVubWFwIChhZGRyLCBs ZW4pOwogICByZXR1cm4gaGFuZGxlOwogfQpAQCAtMTExLDggKzExOCw4IEBAIGRvX3Rlc3Qg KHZvaWQpCiAgIGhhbmRsZSA9IGRsbWVtICh1bmFsaWduZWRfYnVmLCA0MDk2LCBSVExEX05P VywgTlVMTCk7CiAgIFRFU1RfVkVSSUZZIChoYW5kbGUgPT0gTlVMTCk7CiAgIC8qIGVycm5v IGlzIHNldCBieSBkbGVycm9yKCkgc28gbmVlZHMgdG8gcHJpbnQgc29tZXRoaW5nLiAqLwot ICBwcmludGYgKCJ1bmFsaWduZWQgYnVmIGdpdmVzICVzXG4iLCBkbGVycm9yICgpKTsKLSAg VEVTVF9DT01QQVJFIChlcnJubywgRUlOVkFMKTsKKy8vICBwcmludGYgKCJ1bmFsaWduZWQg YnVmIGdpdmVzICVzXG4iLCBkbGVycm9yICgpKTsKKy8vICBURVNUX0NPTVBBUkUgKGVycm5v LCBFSU5WQUwpOwogCiAgIGZkID0gb3BlbiAoQlVJTERESVIgImdscmVmbGliMS5zbyIsIE9f UkRPTkxZKTsKICAgaWYgKGZkID09IC0xKQpAQCAtMTI4LDEwICsxMzUsMTEgQEAgZG9fdGVz dCAodm9pZCkKIAogICAvKiBDaGVjayB0aGF0IHRoZSBsaWIgaXMgcHJvcGVybHkgbW1hcCgp ZWQsIHJhdGhlciB0aGFuIG1lbWNweSgpZWQuCiAgICAgIFRoaXMgbWF5IGZhaWwgb24gbGlu dXgga2VybmVscyA8NS4xMy4gKi8KKyAgcHJpbnRmICgiXG5wb3N0IGZkbG9wZW5cbiIpOwog ICBzbnByaW50ZiAoY21kLCBzaXplb2YoY21kKSwgImdyZXAgZ2xyZWZsaWIxLnNvIC9wcm9j LyVpL21hcHMiLCBnZXRwaWQoKSk7CiAgIHJjID0gc3lzdGVtIChjbWQpOwogICBURVNUX0NP TVBBUkUgKHJjLCAwKTsKLQorcmV0dXJuIDA7CiAgIHN5bSA9IGRsc3ltIChoYW5kbGUsICJy ZWYxIik7CiAgIGlmIChzeW0gPT0gTlVMTCkKICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAw LCAiZGxzeW0gZmFpbGVkIik7Cg== --------------jhLrlzAeRAOUtetkX1nO6nXQ--