[patch 2/7] Change how we do nosegneg

Mark McLoughlin markmc at redhat.com
Thu Jul 24 08:26:12 UTC 2008


On Thu, 2008-07-24 at 09:12 +0100, Mark McLoughlin wrote:
> On Wed, 2008-07-23 at 17:41 -0700, Roland McGrath wrote:

> > For simplicity and consistency in the .spec file, we'll install a file for
> > all variants even when it's an empty placeholder.  For the magic, the diff
> > below probably covers it (wholly untested).  Then it's up to BuildKernel
> > just to add/remove ldconfig-kernelcap.conf as part of the build (perhaps
> > eventually done by the upstream makefiles).

So, for Xen, we'll want something like this until it's done upstream:

> Index: devel/kernel.spec
> ===================================================================
> --- devel.orig/kernel.spec	2008-07-24 08:49:22.000000000 +0100
> +++ devel.orig/kernel.spec	2008-07-24 08:49:22.000000000 +0100
> @@ -1312,6 +1312,13 @@ BuildKernel() {
>      make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=$KernelVer mod-fw=
>  %ifarch %{vdso_arches}
>      make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install KERNELRELEASE=$KernelVer
+    if grep '^CONFIG_XEN=y$' .config >/dev/null; then
+      echo > ldconfig-kernelcap.conf "\
+# This directive teaches ldconfig to search in nosegneg subdirectories
+# and cache the DSOs there with extra bit 0 set in their hwcap match
+# fields.  In Xen guest kernels, the vDSO tells the dynamic linker to
+# search in nosegneg subdirectories and to match this extra hwcap bit
+# in the ld.so.cache file.
+hwcap 0 nosegneg"
+    fi
> +    if [ ! -s ldconfig-kernelcap.conf ]; then
> +      echo > ldconfig-kernelcap.conf "\
> +# Placeholder file, no vDSO hwcap entries used in this kernel."
> +    fi
> +    %{__install} -D -m 444 ldconfig-kernelcap.conf \
> +        $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernel-$KernelVer.conf
>  %endif 

Cheers,
Mark.




More information about the kernel mailing list