Move memory tracing libraries to glibc-utils (RHEL-2283)

libc_malloc_debug.so.0 and libmemusage.so are memory tracing libraries
and therefore should not be installed by default.  Since they need to
be preloaded in order to use memory tracing tools in glibc-utils, they
belong alongside them.

On x86_64, glibc-utils will now only contain the 64-bit version of these
libraries but still need the 32-bit version (in order to support tracing
i686 applications).  Therefore, on i686 the libraries remain in the main
glibc package.

rawhide commits:
* 2d5af83031edfa8191254814609961e4e57766fc
* e9d072eb64a251e09a121122941605f4a22d170a

Resolves: RHEL-2283
Related: RHEL-35602

Fedora 40 commit: 2c1b0f092c
This commit is contained in:
Arjun Shankar 2024-06-07 15:39:06 +02:00
parent 13116ab92d
commit 53900028ae

View File

@ -170,7 +170,7 @@ Version: %{glibcversion}
# - It allows using the Release number without the %%dist tag in the dependency
# generator to make the generated requires interchangeable between Rawhide
# and ELN (.elnYY < .fcXX).
%global baserelease 12
%global baserelease 13
Release: %{baserelease}%{?dist}
# Licenses:
@ -299,6 +299,18 @@ rpm.define("__debug_install_post bash " .. wrapper
%global _no_recompute_build_ids 1
%undefine _unique_build_ids
%ifarch %{ix86}
# The memory tracing tools (like mtrace, memusage) in glibc-utils only work
# when the corresponding memory tracing libraries are preloaded. So we ship
# memory allocation tracing/checking libraries in glibc-utils, except on
# i686 where we need to ship them in glibc.i686. This is because
# glibc-utils.x86_64 will contain only the 64-bit version of these
# libraries.
%global glibc_ship_tracelibs_in_utils 0
%else
%global glibc_ship_tracelibs_in_utils 1
%endif
##############################################################################
# Patches:
# - See each individual patch file for origin and upstream status.
@ -1928,6 +1940,7 @@ chmod 0444 master.filelist
# a double negation of -v and [^i] so it removes all files in
# sbin *but* iconvconfig.
# - All the libnss files (we add back the ones we want later).
# - libc_malloc_debug.so, since it is a debugging library.
# - All bench test binaries.
# - The aux-cache, since it's handled specially in the files section.
# - Extra gconv modules. We add the required modules later.
@ -1948,6 +1961,9 @@ cat master.filelist \
-e '/var/db/Makefile' \
-e '/libnss_.*\.so[0-9.]*$' \
-e '/libnsl' \
%if %{glibc_ship_tracelibs_in_utils}
-e 'libc_malloc_debug\.so' \
%endif
-e 'glibc-benchtests' \
-e 'aux-cache' \
%ifarch x86_64
@ -1971,7 +1987,12 @@ for module in compat files dns; do
%endif
>> glibc.filelist
done
grep -e "libmemusage.so" -e "libpcprofile.so" master.filelist \
grep \
%if ! %{glibc_ship_tracelibs_in_utils}
-e "libmemusage.so" \
%endif
-e "libpcprofile.so" \
master.filelist \
%ifarch x86_64
%dnl Exclude 32-bit libraries built for glibc32.
| grep -v -e /lib/lib \
@ -2027,6 +2048,7 @@ grep '%{_libdir}/lib.*\.a' master.filelist \
# devel package.
grep '%{_libdir}/.*\.o' < master.filelist >> devel.filelist
grep '%{_libdir}/lib.*\.so' < master.filelist >> devel.filelist
# The exceptions are:
# - libmemusage.so and libpcprofile.so in glibc used by utils.
# - libnss_*.so which are in nss-devel.
@ -2146,6 +2168,13 @@ cat > utils.filelist <<EOF
%{_prefix}/bin/xtrace
EOF
%if %{glibc_ship_tracelibs_in_utils}
grep \
-e '%{_lib}/libc_malloc_debug\.so' \
-e '%{_lib}/libmemusage.so' \
< master.filelist >> utils.filelist
%endif
###############################################################################
# nss_db, nss_hesiod
###############################################################################
@ -2572,6 +2601,9 @@ update_gconv_modules_cache ()
%endif
%changelog
* Wed May 15 2024 Arjun Shankar <arjun@redhat.com> - 2.39-13
- Move memory tracing libraries to glibc-utils
* Fri May 10 2024 Florian Weimer <fweimer@redhat.com> - 2.39-12
- Use unsigned types in <utmp.h>/<utmpx.h> (RHEL-22226)