add reloaction package

This commit is contained in:
lw 2023-08-21 21:05:19 +08:00
parent e8e89dcadb
commit 6ce9ce8271
2 changed files with 64 additions and 1 deletions

View File

@ -48,6 +48,8 @@
%undefine with_valgrind
%endif
%global ENABLE_RELOC 1
# Only some architectures have static PIE support
%define pie_arches %{ix86} x86_64 aarch64
@ -65,7 +67,7 @@
##############################################################################
Name: glibc
Version: 2.38
Release: 4
Release: 5
Summary: The GNU libc libraries
License: %{all_license}
URL: http://www.gnu.org/software/glibc/
@ -107,6 +109,10 @@ Patch9018: fix-Segmentation-fault-in-nss-module.patch
Patch9019: fix_nss_database_check_reload_and_get_memleak.patch
Patch9020: 0001-fix-glibc-build-error-on-x86.patch
%if %{ENABLE_RELOC}
Patch9021: reserve-relocation-information-for-sysboost.patch
%endif
Provides: ldconfig rtld(GNU_HASH) bundled(gnulib)
BuildRequires: audit-libs-devel >= 1.1.3, sed >= 3.95, libcap-devel, gettext
@ -377,6 +383,19 @@ Currently, provide pthread_condition function.
To keep older applications compatible, glibc-compat-2.17 provides libpthread_nonshared.a
%endif
%if %{ENABLE_RELOC}
##############################################################################
# glibc reloc sub-package
##############################################################################
%package relocation
Summary: Relocations for %{name}
Requires: %{name} = %{version}-%{release}
BuildRequires: native-turbo-tools
%description relocation
This package contains relocations for %{name}.
%endif
##############################################################################
# Prepare for the build.
##############################################################################
@ -478,6 +497,9 @@ pushd $builddir
{ cat config.log; false; }
make %{?_smp_mflags} -O -r %{glibc_make_flags}
%if %{ENABLE_RELOC}
objreloc libc.so.6
%endif
popd
##############################################################################
@ -671,6 +693,11 @@ for i in $RPM_BUILD_ROOT%{_prefix}/bin/{xtrace,memusage}; do
-i $i
done
%if %{ENABLE_RELOC}
mkdir -p ${RPM_BUILD_ROOT}/usr/lib/relocation/%{_libdir}
install -p ${RPM_BUILD_DIR}/%{name}-%{version}/build-%{target}/libc.so.6.relocation ${RPM_BUILD_ROOT}/usr/lib/relocation/%{_libdir}
%endif
touch master.filelist
touch glibc.filelist
touch common.filelist
@ -789,6 +816,7 @@ grep '%{_libdir}/lib.*\.a' < master.filelist \
| grep -v '/lib\(\(c\|pthread\|nldbl\|mvec\)_nonshared\|g\|ieee\|mcheck\)\.a$' \
>> devel.filelist
sed -i '/.relocation/d' devel.filelist
##############################################################################
# glibc "nscd" sub-package
@ -1237,6 +1265,13 @@ fi
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/db/nscd/services
%ghost %config(missingok,noreplace) /etc/sysconfig/nscd
%if %{ENABLE_RELOC}
%files relocation
%dir %attr(500, root, root) /usr/lib/relocation
%dir %attr(500, root, root) /usr/lib/relocation/%{_libdir}
%attr(400, root, root) /usr/lib/relocation/%{_libdir}/libc.so.6.relocation
%endif
%files -f nss_modules.filelist -n nss_modules
/var/db/Makefile
@ -1265,6 +1300,9 @@ fi
%endif
%changelog
* Mon Aug 21 2023 longwei<longwei27@huawei.com> - 2.38-5
- add libc.so relocation file for sysboost
* Wed Aug 16 2023 chenhaixiang<chenhaixiang3@huawei.com> - 2.38-4
- skipping test case building to fix glibc build error on x86

View File

@ -0,0 +1,25 @@
From b44dbe791e801b4ef40352849b83264e8ad9415b Mon Sep 17 00:00:00 2001
From: lw <longwei27@huawei.com>
Date: Mon, 21 Aug 2023 15:28:09 +0800
Subject: [PATCH] reserve relocation information for sysboost
---
Makerules | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makerules b/Makerules
index 018780c8..a4603f68 100644
--- a/Makerules
+++ b/Makerules
@@ -534,7 +534,7 @@ lib%.so: lib%_pic.a $(+preinit) $(+postinit) $(link-libc-deps)
$(call after-link,$@)
define build-shlib-helper
-$(LINK.o) -shared -static-libgcc -Wl,-O1 $(sysdep-LDFLAGS) \
+$(LINK.o) -shared -static-libgcc -Wl,-O1 $(sysdep-LDFLAGS) -Wl,--emit-relocs \
$(if $($(@F)-no-z-defs)$(no-z-defs),,-Wl,-z,defs) $(rtld-LDFLAGS) \
$(if $($(@F)-no-dt-relr),$(no-dt-relr-ldflag),$(dt-relr-ldflag)) \
$(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \
--
2.33.0