From 22e7dbb82fd7c911f2e49b3ffa93704e9be77001 Mon Sep 17 00:00:00 2001 From: Slava Barinov Date: Fri, 3 Mar 2023 12:12:53 +0300 Subject: [PATCH] Separate ld.so for qemu-accel added Change-Id: I583e31bd58e9d1cc1f3dd55d13374815d826ed4e --- packaging/glibc.spec | 61 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/packaging/glibc.spec b/packaging/glibc.spec index f63bce4..eec52d2 100644 --- a/packaging/glibc.spec +++ b/packaging/glibc.spec @@ -38,6 +38,15 @@ %define glibc_dump_configure 1 %endif +# Prepare separate ld.so for qemu-accel +%define qemu_accel_arch x86_64 %ix86 + +%ifarch %qemu_accel_arch +%define glibc_build_qemu_accel_ld_so 1 +# default path in qemu +%define emul_path /emul +%endif + # This will avoid building some parts of glibc %define asan_arch x86_64 armv7l aarch64 %define hwasan_arch aarch64 @@ -283,7 +292,6 @@ ln -s --force /%{_lib}/libc-%{version}.so /%{_lib}/libc.so.6 %endif } - %{?glibc_dump_configure: %package configure-dump Summary: GNU Glibc configure dump @@ -293,6 +301,15 @@ Group: Development/Languages This package contains dump of configure variables of Glibc } +%{?glibc_build_qemu_accel_ld_so: +%package accel-ldso +Summary: ld.so file for qemu-accel +License: GPL-3.0+ +Group: Development/Languages +%description accel-ldso +This package contains an ld.so configured to run from /emul directory +} + %prep %setup -n glibc-%{version} -q cp %{SOURCE1001} . @@ -382,7 +399,9 @@ profile="--disable-profile" %{?build_profile:profile="--enable-profile"} %{?glibc_dump_configure:patch_configure.pl ..} -%{!?glibc_skip_configure: +function glibc_configure () { + local aux_options=${@:1} + CFLAGS="$conf_cflags" BUILD_CFLAGS="$conf_cflags" \ CC="$BuildCC" CXX="$BuildCCplus" \ ../configure \ @@ -408,7 +427,13 @@ profile="--disable-profile" %if 0%{?enable_static_pie} --enable-static-pie \ %endif - } + ${aux_options} + +} + +%{!?glibc_skip_configure: + glibc_configure +} %{!?glibc_skip_make: make %{?_smp_mflags} @@ -432,6 +457,19 @@ $BuildCC \ %{!?glibc_keep_build_dir: popd } + +# Prepare directory for qemu-accel ld.so +%{?glibc_build_qemu_accel_ld_so: + mkdir "qemu-accel-ldso" + pushd "qemu-accel-ldso" + + echo -e "# Begin configparms\nslibdir=%{emul_path}%{_libdir}\nsysconfdir=%{emul_path}%{_sysconfdir}\n# End configparms" > configparms + glibc_configure --sysconfdir=%{emul_path}%{_sysconfdir} libc_cv_slibdir=%{emul_path}%{_libdir} libc_cv_sysconfdir=%{emul_path}%{_sysconfdir} + + make %{?_smp_mflags} + popd +} + # # Build html documentation # @@ -516,13 +554,11 @@ popd %endif } - %{?glibc_exit_on_make_finish: echo "Glibc build is complete and environment is ready, exiting" exit 1 } - - } +} # # Build testsuite @@ -702,6 +738,12 @@ cp $ASAN_BUILD/libc.so %{buildroot}/%{_lib}/libc-%{version}-hwasan.so cp check.log testresults/ } +%{?glibc_build_qemu_accel_ld_so: + pushd qemu-accel-ldso + make -C ../elf objdir=`pwd` install_root=%{buildroot} ldso_install + popd +} + %post -p %{_sbindir}/glibc_post_upgrade %postun -p /sbin/ldconfig @@ -770,7 +812,6 @@ find %{_libdir}/gcc -name 'statx.h' -exec sed -e 's/__glibc_has_include/__has_in /%{_lib}/libnss_db.so.2 /%{_lib}/libnss_dns.so.2 /%{_lib}/libnss_files.so.2 -/%{_lib}/libnss_optfiles.so.2 /%{_lib}/libnss_hesiod.so.2 /%{_lib}/libpthread.so* /%{_lib}/libthread_db.so.1 @@ -949,4 +990,10 @@ find %{_libdir}/gcc -name 'statx.h' -exec sed -e 's/__glibc_has_include/__has_in %{_datadir}/glibc-%{version}-%{release}-%_project-%_repository.db } +%{?glibc_build_qemu_accel_ld_so: +%files accel-ldso +%manifest glibc.manifest +%{emul_path} +} + %docs_package -- 2.7.4