Separate ld.so for qemu-accel added
authorSlava Barinov <v.barinov@samsung.com>
Fri, 3 Mar 2023 09:12:53 +0000 (12:12 +0300)
committerDongkyun Son <dongkyun.s@samsung.com>
Wed, 3 May 2023 11:12:42 +0000 (20:12 +0900)
Change-Id: I583e31bd58e9d1cc1f3dd55d13374815d826ed4e

packaging/glibc.spec

index f63bce4..eec52d2 100644 (file)
 %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