<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Tue, Sep 29, 2015 at 10:09 AM Khem Raj &lt;<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
&gt; On Sep 29, 2015, at 6:27 AM, Richard Purdie &lt;<a href="mailto:richard.purdie@linuxfoundation.org" target="_blank">richard.purdie@linuxfoundation.org</a>&gt; wrote:<br>
&gt;<br>
&gt; Prelinking on x86-64 wasn&#39;t working out the box as it uses /lib and<br>
&gt; not /lib64 for libs. Prelink was refusing to link as the dynamic loader<br>
&gt; didn&#39;t match its idea of the right path. Passing in the --dyanmic-linker<br>
&gt; option avoids this.<br>
&gt;<br>
&gt; We can share code from image-mklibs so abstract that into a new class,<br>
&gt; linuxloader.bbclass.<br>
&gt;<br>
&gt; Signed-off-by: Richard Purdie &lt;<a href="mailto:richard.purdie@linuxfoundation.org" target="_blank">richard.purdie@linuxfoundation.org</a>&gt;<br>
&gt;<br>
&gt; diff --git a/meta/classes/image-mklibs.bbclass b/meta/classes/image-mklibs.bbclass<br>
&gt; index c455a8e..45a66fb 100644<br>
&gt; --- a/meta/classes/image-mklibs.bbclass<br>
&gt; +++ b/meta/classes/image-mklibs.bbclass<br>
&gt; @@ -2,6 +2,8 @@ do_rootfs[depends] += &quot;mklibs-native:do_populate_sysroot&quot;<br>
&gt;<br>
&gt; IMAGE_PREPROCESS_COMMAND += &quot;mklibs_optimize_image; &quot;<br>
&gt;<br>
&gt; +inherit linuxloader<br>
&gt; +<br>
&gt; mklibs_optimize_image_doit() {<br>
&gt;       rm -rf ${WORKDIR}/mklibs<br>
&gt;       mkdir -p ${WORKDIR}/mklibs/dest<br>
&gt; @@ -15,26 +17,8 @@ mklibs_optimize_image_doit() {<br>
&gt;               | sed &quot;s+^\./++&quot; \<br>
&gt;               &gt; ${WORKDIR}/mklibs/executables.list<br>
&gt;<br>
&gt; -     case ${TARGET_ARCH} in<br>
&gt; -             powerpc | mips | mipsel | microblaze )<br>
&gt; -                     dynamic_loader=&quot;${base_libdir}/ld.so.1&quot;<br>
&gt; -                     ;;<br>
&gt; -             powerpc64)<br>
&gt; -                     dynamic_loader=&quot;${base_libdir}/ld64.so.1&quot;<br>
&gt; -                     ;;<br>
&gt; -             x86_64)<br>
&gt; -                     dynamic_loader=&quot;${base_libdir}/ld-linux-x86-64.so.2&quot;<br>
&gt; -                     ;;<br>
&gt; -             i586 )<br>
&gt; -                     dynamic_loader=&quot;${base_libdir}/ld-linux.so.2&quot;<br>
&gt; -                     ;;<br>
&gt; -             arm )<br>
&gt; -                     dynamic_loader=&quot;${base_libdir}/ld-linux.so.3&quot;<br>
&gt; -                     ;;<br>
&gt; -             * )<br>
&gt; -                     dynamic_loader=&quot;/unknown_dynamic_linker&quot;<br>
&gt; -                     ;;<br>
&gt; -     esac<br>
&gt; +     # Set $dynamic_loader<br>
&gt; +        linuxloader<br>
&gt;<br>
&gt;       mklibs -v \<br>
&gt;               --ldlib ${dynamic_loader} \<br>
&gt; diff --git a/meta/classes/image-prelink.bbclass b/meta/classes/image-prelink.bbclass<br>
&gt; index d4bb3ae..4bb090d 100644<br>
&gt; --- a/meta/classes/image-prelink.bbclass<br>
&gt; +++ b/meta/classes/image-prelink.bbclass<br>
&gt; @@ -2,6 +2,8 @@ do_rootfs[depends] += &quot;prelink-native:do_populate_sysroot&quot;<br>
&gt;<br>
&gt; IMAGE_PREPROCESS_COMMAND += &quot;prelink_image; &quot;<br>
&gt;<br>
&gt; +inherit linuxloader<br>
&gt; +<br>
&gt; prelink_image () {<br>
&gt; #     export PSEUDO_DEBUG=4<br>
&gt; #     /bin/env | /bin/grep PSEUDO<br>
&gt; @@ -20,8 +22,11 @@ prelink_image () {<br>
&gt;               dummy_prelink_conf=false;<br>
&gt;       fi<br>
&gt;<br>
&gt; +     # Set $dynamic_loader<br>
&gt; +     linuxloader<br>
&gt; +<br>
&gt;       # prelink!<br>
&gt; -     ${STAGING_DIR_NATIVE}${sbindir_native}/prelink --root ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf<br>
&gt; +     ${STAGING_DIR_NATIVE}${sbindir_native}/prelink --root ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader<br>
&gt;<br>
&gt;       # Remove the prelink.conf if we had to add it.<br>
&gt;       if [ &quot;$dummy_prelink_conf&quot; = &quot;true&quot; ]; then<br>
&gt; diff --git a/meta/classes/linuxloader.bbclass b/meta/classes/linuxloader.bbclass<br>
&gt; new file mode 100644<br>
&gt; index 0000000..578df14<br>
&gt; --- /dev/null<br>
&gt; +++ b/meta/classes/linuxloader.bbclass<br>
&gt; @@ -0,0 +1,23 @@<br>
&gt; +<br>
&gt; +linuxloader () {<br>
&gt; +     case ${TARGET_ARCH} in<br>
&gt; +             powerpc | mips | mipsel | microblaze )<br>
&gt; +                     dynamic_loader=&quot;${base_libdir}/ld.so.1&quot;<br>
&gt; +                     ;;<br>
&gt; +             powerpc64)<br>
&gt; +                     dynamic_loader=&quot;${base_libdir}/ld64.so.1&quot;<br>
&gt; +                     ;;<br>
&gt; +             x86_64)<br>
&gt; +                     dynamic_loader=&quot;${base_libdir}/ld-linux-x86-64.so.2&quot;<br>
&gt; +                     ;;<br>
&gt; +             i586 )<br>
&gt; +                     dynamic_loader=&quot;${base_libdir}/ld-linux.so.2&quot;<br>
&gt; +                     ;;<br>
&gt; +             arm )<br>
&gt; +                     dynamic_loader=&quot;${base_libdir}/ld-linux.so.3&quot;<br>
&gt; +                     ;;<br>
&gt; +             * )<br>
&gt; +                     dynamic_loader=&quot;/unknown_dynamic_linker&quot;<br>
&gt; +                     ;;<br>
&gt; +     esac<br>
&gt; +}<br>
&gt;<br>
&gt;<br>
<br>
For readability it would have been nice if it was returning the value from function so it could be used<br>
<br>
myloader = call this function<br></blockquote><div><br></div><div>Agreed, I was just thinking this could be used for UNINATIVE_LOADER in uninative.bbclass.</div></div></div>