On 4 Mar 2016 11:23 a.m., "Christopher Larson" <clar...@kergoth.com> wrote: > > > > On Tue, Sep 29, 2015 at 10:09 AM Khem Raj <raj.k...@gmail.com> wrote: >> >> >> > On Sep 29, 2015, at 6:27 AM, Richard Purdie < richard.pur...@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. >> > >> > Signed-off-by: Richard Purdie <richard.pur...@linuxfoundation.org> >> > >> > diff --git a/meta/classes/image-mklibs.bbclass b/meta/classes/image-mklibs.bbclass >> > index c455a8e..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" >> > - ;; >> > - i586 ) >> > - 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 d4bb3ae..4bb090d 100644 >> > --- a/meta/classes/image-prelink.bbclass >> > +++ b/meta/classes/image-prelink.bbclass >> > @@ -2,6 +2,8 @@ do_rootfs[depends] += "prelink-native:do_populate_sysroot" >> > >> > IMAGE_PREPROCESS_COMMAND += "prelink_image; " >> > >> > +inherit linuxloader >> > + >> > prelink_image () { >> > # export PSEUDO_DEBUG=4 >> > # /bin/env | /bin/grep PSEUDO >> > @@ -20,8 +22,11 @@ prelink_image () { >> > dummy_prelink_conf=false; >> > fi >> > >> > + # 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..578df14 >> > --- /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" >> > + ;; >> > + i586 ) >> > + dynamic_loader="${base_libdir}/ld-linux.so.2" >> > + ;; >> > + arm ) >> > + dynamic_loader="${base_libdir}/ld-linux.so.3" >> > + ;; >> > + * ) >> > + dynamic_loader="/unknown_dynamic_linker" >> > + ;; >> > + esac >> > +} >> > >> > >> >> For readability it would have been nice if it was returning the value from function so it could be used >> >> myloader = call this function > > > Agreed, I was just thinking this could be used for UNINATIVE_LOADER in uninative.bbclass. > > -- >
This would also be handy for the go stuff I'm writing at $work.
-- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core