[OE-core] [PATCH] linuxloader/image-prelink/image-mklibs: Fix non-standard path prelinking
Dan McGregor
danismostlikely at gmail.com
Fri Mar 4 22:09:29 UTC 2016
On 4 Mar 2016 11:23 a.m., "Christopher Larson" <clarson at kergoth.com> wrote:
>
>
>
> On Tue, Sep 29, 2015 at 10:09 AM Khem Raj <raj.khem at gmail.com> wrote:
>>
>>
>> > On Sep 29, 2015, at 6:27 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.
>> >
>> > 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 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20160304/17c0f515/attachment-0002.html>
More information about the Openembedded-core
mailing list