[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#996598: marked as done ([ld][glibc]: Adopt SHT_RELR/DT_RELR to decrease PIE and shared object size)



Your message dated Thu, 22 Sep 2022 23:13:51 +0000
with message-id <E1obVOB-00ExA9-68@fasolo.debian.org>
and subject line Bug#996598: fixed in glibc 2.36-1
has caused the Debian Bug report #996598,
regarding [ld][glibc]: Adopt SHT_RELR/DT_RELR to decrease PIE and shared object size
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
996598: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=996598
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Source: glibc
Severity: wishlist
Tags: upstream
X-Debbugs-Cc: sylvestre@debian.org

The SHT_RELR/DT_RELR format encodes relative relocations in a very efficient way (quite usually takes just 3% or smaller space).
The size optimization can greatly decrease the virtual memory size of PIE and shared objects with many R_*_RELATIVE relocations.

E.g. The clang executable's virtual memory size is 8.2% smaller with SHT_RELR/DT_RELR. The size varies across projects, but I anticipate at least 5% decrease for most projects.

% ~/projects/bloaty/Release/bloaty clang.pie.relr -- clang.pie
    FILE SIZE        VM SIZE    
 --------------  -------------- 
  [NEW]  +163Ki  [NEW]  +163Ki    .relr.dyn
  +4.9%     +32  +5.4%     +32    .dynamic
  +2.5%      +8  [ = ]       0    .shstrtab
 -99.5% -13.8Mi -99.5% -13.8Mi    .rela.dyn
  -8.3% -13.6Mi  -8.2% -13.6Mi    TOTAL

The SHT_RELR/DT_RELR relocation format requires linker and loader support.

* On the linkder side, ld.lld has supported .relr.dyn/SHT_RELR/DT_RELR (`--pack-dyn-relocs=relr`) for a long time and the support has been stable since 2019-09 (after I fixed an address oscillating bug).
* On the loader (glibc ld.so) side, a patch exists https://sourceware.org/pipermail/libc-alpha/2021-October/131768.html
  but lack of GNU ld support may impede its adoption among Linux distributions.
  User support is also important to push the patch forward. (ia64 according to folks isn't an issue. glibc doesn't implement ELFCLASS32 for ia64 AFAICT.)

(
Worth noting that the Linux kernel's arm64 port supports SHT_RELR/DT_RELR since 2019.
ChromeOS has maintained a local glibc patch since around 2018.)

So I file this ticket seeking for support (comment on https://sourceware.org/bugzilla/show_bug.cgi?id=27924). I hope that with sufficient attention from users,
someone (e.g. a GNU ld maintainer) will eventually stand up and implement `--pack-dyn-relocs=relr` for GNU ld (https://sourceware.org/bugzilla/show_bug.cgi?id=27923).
Even in the absence of GNU ld support, I hope glibc can accept the DT_RELR patch, so that ld.lld users can use `--pack-dyn-relocs=relr`.

See also Gentoo: https://bugs.gentoo.org/818376 Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=2014699 Arch Linux: https://bugs.archlinux.org/task/72433

--- End Message ---
--- Begin Message ---
Source: glibc
Source-Version: 2.36-1
Done: Aurelien Jarno <aurel32@debian.org>

We believe that the bug you reported is fixed in the latest version of
glibc, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 996598@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Aurelien Jarno <aurel32@debian.org> (supplier of updated glibc package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Thu, 22 Sep 2022 22:23:11 +0200
Source: glibc
Architecture: source
Version: 2.36-1
Distribution: experimental
Urgency: medium
Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
Changed-By: Aurelien Jarno <aurel32@debian.org>
Closes: 781715 996598 1004577
Changes:
 glibc (2.36-1) experimental; urgency=medium
 .
   [ Aurelien Jarno ]
   * New upstream release:
     - Support for DT_RELR relative relocation format has been added.  Closes:
       #996598.
     - The Linux kernel version check has been removed.  Closes: #781715, #1004577.
     - debian/symbols.wildcard: add 2.36 and GLIBC_ABI_DT_RELR.
     - debian/patches/localedata/sort-UTF8-first.diff: rebased.
     - debian/patches/localedata/supported.diff: rebased.
     - debian/patches/arm/unsubmitted-ldso-multilib.diff: rebased.
     - debian/patches/hurd-i386/git-spawni-reauth.diff: upstreamed.
     - debian/patches/hurd-i386/pthread_key.diff: upstreamed.
     - debian/patches/kfreebsd/submitted-waitid.diff: dropped. kfreebsd
       specific changes moved to debian/patches/kfreebsd/local-sysdeps.diff.
     - debian/patches/kfreebsd/local-config_h_in.patch: rebased.
     - debian/patches/kfreebsd/local-getaddrinfo-freebsd-kernel.diff: rebased.
     - debian/patches/all/local-remove-manual.diff: rebased.
     - debian/patches/any/local-ldso-disable-hwcap.diff: rebased.
     - debian/patches/any/unsubmitted-ldso-machine-mismatch.diff: rebased.
     - debian/patches/any/submitted-resolv-unaligned.diff: upstreamed.
     - debian/patches/hurd-i386/local-fix-nss.diff: rebased.
     - debian/patches/hurd-i386/local-no-bootstrap-fs-access.2.diff: rebased.
 .
   [ Samuel Thibault ]
   * debian/testsuite-xfail-debian.mk: Update tests results for hurd-i386.
Checksums-Sha1:
 42153796cedd3511957ea5621a9ab89fd5301b4d 9679 glibc_2.36-1.dsc
 d034128a6116dcf9e76c92f898ec63f4f4e65786 19363988 glibc_2.36.orig.tar.xz
 27a822a7c20d1e9c534ef43f259dbd50c9192348 807616 glibc_2.36-1.debian.tar.xz
 8331b65015d31d73d7a7ad102e1f7667dc43662a 9567 glibc_2.36-1_source.buildinfo
Checksums-Sha256:
 a3ef663a56bdf3fa3a0c07ce665edd650e4c7d5897e201eba775ceeffa93fab1 9679 glibc_2.36-1.dsc
 a543c02070d46ccaf866957efd13f10c924daa74c86a90a0254db09a92a708ee 19363988 glibc_2.36.orig.tar.xz
 b19408b4f8780ee9c40e1ba6ba17e0b6bfc1007fb4a668784dce77d6bc87f516 807616 glibc_2.36-1.debian.tar.xz
 bd1df4ee606e46ba5b67230eced1a93bec5ca278a558c77f162a9edde44aceee 9567 glibc_2.36-1_source.buildinfo
Files:
 dbf98687737cd10090ab5d3567bc1733 9679 libs required glibc_2.36-1.dsc
 b2b0246bc50781a2243f8141feeb1bf4 19363988 libs required glibc_2.36.orig.tar.xz
 5935c135f2ac1afe0bbec46a3c758acf 807616 libs required glibc_2.36-1.debian.tar.xz
 74d6e6af9a8c71bc4df15256cba215c9 9567 libs required glibc_2.36-1_source.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEUryGlb40+QrX1Ay4E4jA+JnoM2sFAmMsx7kACgkQE4jA+Jno
M2szmQ/9GKpKoy+w73uz7jJl9gxxtKjFZo1q103jjRXMviFgX3KbbmWZl2wNOM5N
gPflh/5gLS6cBmEJhRoOXR42uldBiNkLigYGdfDul9+lX0PckcoIYC0pE/a+5/dC
+iCTus22eLq412vWvKipxwXaisSnt1RNg7UwtLosnlDJehvQFGC3SzANMw8RgQPr
GpUQaSYHJJnx0bx9gZUgcNJzMNUzFVaealQID18I0vWqS3Ui1szTva/esLL6iFN0
yMuYTYdYTjhkul6X8Wz00OaWLwkPrS3H2A7Wywm1myNih+e6PRILkMrgFvMzpPaK
OJhjhh4cAO2+v3lDKGWPugsUGPGPzd2OixHU9Lb6vwO/GAHx9Gw0b5+cik7tYkHF
wmZSHudqntfF8kuJQ0P2jkeH8J0yKX+tTg+jhaR0tYZNvcxnZla0IZhygXZUVQWj
LKb4yW/8BpeVQlvvD+M6GeMvRal9iX1Ci0afFb/TBNeCgg3um9UiCYzaaLWGoEkO
e1x1bgQY7thxmAoQec5DCDKo1tYIMZeU4cvc6ojfbEdGejPDVlMSDu1A4BbMLsdQ
z9n6nH6OVy0SNikZUhdTzI5JwqwItpd4GdCX8XKZj5GKdhKLnGcGgPfjojDgwYg3
hgS6D8/nUeJ1ElW2waQRt2FFlvkUCBjYZn1n4+CRGX+4/AeHy1s=
=jG2P
-----END PGP SIGNATURE-----

--- End Message ---

Reply to: