[OE-core] [PATCH] linuxloader/image-prelink/image-mklibs: Fix non-standard path prelinking

Khem Raj raj.khem at gmail.com
Fri Mar 4 22:26:37 UTC 2016


This looks good to me
On Mar 5, 2016 12:28 AM, "Richard Purdie" <
richard.purdie at linuxfoundation.org> wrote:

> Prelinking on x86-64 wasn't working out the box as it uses /lib and
> not /lib64 for libs. Prelink was refusing to link as the dynamic loader
> didn't match its idea of the right path. Passing in the --dyanmic-linker
> option avoids this.
>
> We can share code from image-mklibs so abstract that into a new class,
> linuxloader.bbclass.
>
> This does break prelinking of multilib images, I've opened a bug so we
> can loop back and fix that problem, the code would need to iterate the
> dynamic loaders (and setup ld.so.conf files for it).
>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
>
> diff --git a/meta/classes/image-mklibs.bbclass
> b/meta/classes/image-mklibs.bbclass
> index cfb3ffc..45a66fb 100644
> --- a/meta/classes/image-mklibs.bbclass
> +++ b/meta/classes/image-mklibs.bbclass
> @@ -2,6 +2,8 @@ do_rootfs[depends] += "mklibs-native:do_populate_sysroot"
>
>  IMAGE_PREPROCESS_COMMAND += "mklibs_optimize_image; "
>
> +inherit linuxloader
> +
>  mklibs_optimize_image_doit() {
>         rm -rf ${WORKDIR}/mklibs
>         mkdir -p ${WORKDIR}/mklibs/dest
> @@ -15,26 +17,8 @@ mklibs_optimize_image_doit() {
>                 | sed "s+^\./++" \
>                 > ${WORKDIR}/mklibs/executables.list
>
> -       case ${TARGET_ARCH} in
> -               powerpc | mips | mipsel | microblaze )
> -                       dynamic_loader="${base_libdir}/ld.so.1"
> -                       ;;
> -               powerpc64)
> -                       dynamic_loader="${base_libdir}/ld64.so.1"
> -                       ;;
> -               x86_64)
> -
>  dynamic_loader="${base_libdir}/ld-linux-x86-64.so.2"
> -                       ;;
> -               i*86 )
> -                       dynamic_loader="${base_libdir}/ld-linux.so.2"
> -                       ;;
> -               arm )
> -                       dynamic_loader="${base_libdir}/ld-linux.so.3"
> -                       ;;
> -               * )
> -                       dynamic_loader="/unknown_dynamic_linker"
> -                       ;;
> -       esac
> +       # Set $dynamic_loader
> +        linuxloader
>
>         mklibs -v \
>                 --ldlib ${dynamic_loader} \
> diff --git a/meta/classes/image-prelink.bbclass
> b/meta/classes/image-prelink.bbclass
> index 53c4b0b..3fe097b 100644
> --- a/meta/classes/image-prelink.bbclass
> +++ b/meta/classes/image-prelink.bbclass
> @@ -6,6 +6,8 @@ python prelink_setup () {
>      oe.utils.write_ld_so_conf(d)
>  }
>
> +inherit linuxloader
> +
>  prelink_image () {
>  #      export PSEUDO_DEBUG=4
>  #      /bin/env | /bin/grep PSEUDO
> @@ -31,8 +33,11 @@ prelink_image () {
>         fi
>         cat ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf >> $ldsoconf
>
> +       # Set $dynamic_loader
> +       linuxloader
> +
>         # prelink!
> -       ${STAGING_DIR_NATIVE}${sbindir_native}/prelink --root
> ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf
> +       ${STAGING_DIR_NATIVE}${sbindir_native}/prelink --root
> ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf --dynamic-linker
> $dynamic_loader
>
>         # Remove the prelink.conf if we had to add it.
>         if [ "$dummy_prelink_conf" = "true" ]; then
> diff --git a/meta/classes/linuxloader.bbclass
> b/meta/classes/linuxloader.bbclass
> new file mode 100644
> index 0000000..af649cc
> --- /dev/null
> +++ b/meta/classes/linuxloader.bbclass
> @@ -0,0 +1,23 @@
> +
> +linuxloader () {
> +       case ${TARGET_ARCH} in
> +               powerpc | mips | mipsel | microblaze )
> +                       dynamic_loader="${base_libdir}/ld.so.1"
> +                       ;;
> +               powerpc64)
> +                       dynamic_loader="${base_libdir}/ld64.so.1"
> +                       ;;
> +               x86_64)
> +
>  dynamic_loader="${base_libdir}/ld-linux-x86-64.so.2"
> +                       ;;
> +               i*86 )
> +                       dynamic_loader="${base_libdir}/ld-linux.so.2"
> +                       ;;
> +               arm )
> +                       dynamic_loader="${base_libdir}/ld-linux.so.3"
> +                       ;;
> +               * )
> +                       dynamic_loader="/unknown_dynamic_linker"
> +                       ;;
> +       esac
> +}
>
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20160304/dc400bbc/attachment-0002.html>


More information about the Openembedded-core mailing list