From patchwork Thu Oct 6 19:52:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 58754 From: hjl.tools@gmail.com (H.J. Lu) Date: Thu, 6 Oct 2022 12:52:57 -0700 List-Id: Libc-alpha mailing list Subject: [PATCH 1/2] Map ABI/VERSION of rtld to ABI/VERSION of ld [BZ #28132] In-Reply-To: References: <20210802042940.932692-1-hjl.tools@gmail.com> Message-ID: On Thu, Oct 6, 2022 at 11:46 AM H.J. Lu wrote: > > On Thu, Oct 6, 2022 at 9:39 AM Carlos O'Donell wrote: > > > > On Sun, Aug 01, 2021 at 09:29:39PM -0700, H.J. Lu via Libc-alpha wrote: > > > Since the module name of ld is rtld, map ABI/VERSION of rtld to ABI/VERSION > > > of ld. This fixes BZ #28132. > > > > Reviewing old patches that are still outstanding as part of the queue > > review in patchwork. Hopefully we catch up to the point where I'm not > > reviewing year old patches in the queue. However, some of these patches > > are interesting and valuable so I'm reviving them to review potential > > solutions. > > > > In scripts/gen-libc-modules.awk we have this code: > > 21 if (name == "ld") > > 22 name = "rtld" > > > > This means we are already handling this processing in other places. A > > clean solution needs to consider: > > > > scripts/abi-version.awk (no changes, should just use rtld) > > scripts/gen-libc-modules.awk (ld vs rtld) > > shlib-versions (ld=...) > > > > It feels like we need to refactor from the top just use rtld everywhere > > we accidentally used ld as our identifier. > > Since LD_SO is defined in lib-names.h, change ld.so to rtld.so requires > scripts/lib-names.awk change. It is a much bigger and messy change. > We change all internal usages to rtld by diff --git a/elf/dl-compat.c b/elf/dl-compat.c index 05c986a8be..6691ad1cc9 100644 --- a/elf/dl-compat.c +++ b/elf/dl-compat.c @@ -22,7 +22,7 @@ /* The GLIBC_2.35 symbol version is present naturally for later ports. Use OTHER_SHLIB_COMPAT because the module is called rtld, but the ABI version uses ld. */ -#if OTHER_SHLIB_COMPAT (ld, GLIBC_2_0, GLIBC_2_35) +#if OTHER_SHLIB_COMPAT (rtld, GLIBC_2_0, GLIBC_2_35) void attribute_compat_text_section __attribute_used__ @@ -30,6 +30,6 @@ __rtld_version_placeholder_1 (void) { } -compat_symbol (ld, __rtld_version_placeholder_1, +compat_symbol (rtld, __rtld_version_placeholder_1, __rtld_version_placeholder, GLIBC_2_34); #endif diff --git a/scripts/abi-versions.awk b/scripts/abi-versions.awk index c369793459..5d229b2977 100644 --- a/scripts/abi-versions.awk +++ b/scripts/abi-versions.awk @@ -25,6 +25,8 @@ $2 == "=" { gsub(/[^A-Za-z0-9_ ]/, "_"); oldid = $1; newid = $3; + if (libid == "ld") + libid = "rtld"; printf "#define ABI_%s_%s\tABI_%s_%s\n", libid, oldid, libid, newid; printf "#define VERSION_%s_%s\t%s\n", libid, oldid, new; @@ -36,6 +38,8 @@ $2 == "=" { gsub(/[^A-Za-z0-9_ ]/, "_"); versid = $1; + if (libid == "ld") + libid = "rtld"; printf "#define ABI_%s_%s\t%d\t/* support %s */\n", libid, versid, ++n, vers; printf "#define VERSION_%s_%s\t%s\n", libid, versid, vers; next;