Thanks, Mark. All points have been checked, prelink really works for my armhf build.
160: number of relocations: 0 160: number of relocations from cache: 157 160: number of relative relocations: 0 Regards, Qiang On Fri, Dec 12, 2014 at 11:43 PM, Mark Hatle <mark.ha...@windriver.com> wrote: > On 12/12/14, 12:57 AM, Qiang Yu wrote: > >> Hi Mark, >> >> I have used the 81bab23a4661fdaaa859325d6d3603__811ecf1849 version >> prelink to >> build my image. >> Prelink run smoothly without output like before, the image is also >> modified, so >> the prelink works. >> My application also run correctly. But how can I make sure the prelink >> take >> effect when I start an >> executable? >> >> Here attaches the do_rootfs log: >> NOTE: ###### Generate images ####### >> NOTE: Executing mklibs_optimize_image ... >> DEBUG: Executing shell function mklibs_optimize_image >> DEBUG: Shell function mklibs_optimize_image finished >> NOTE: Executing prelink_image ... >> DEBUG: Executing shell function prelink_image >> Size before prelinking 49340. >> Size after prelinking 49592. >> DEBUG: Shell function prelink_image finished >> > > You can verify the binary has been prelinked via a number of steps: > > *) Start with the size comparison, you should see it change. (It did, so > thats good) > > *) Look at a binary in your image, such as /bin/busybox, look for the > '.gnu.prelink_undo' section: > > objdump -x bin/busybox > > 29 .gnu.prelink_undo 00000900 0000000000000000 0000000000000000 > 000b1b48 2**3 > CONTENTS, READONLY > > > *) Switch to comparing a library, i.e. /lib64/libc.so.6: > > readelf -S bin/libc.so.6 > > Compare the original to the rootfs filesystem. You'll see the Address > values have changed. On the target system you can look at > "/proc/self/maps" and grep 'libc' You'll see the load range, it should > match the one from the readelf -S output. > > *) Actually gather load time statistics from ld.so: > > Probably the easiest of the methods.. but requires you to actually run > the binaries in question to check behavior. On the target: > > LD_DEBUG=statistics <binary> > > With prelink working the result will be something like: > > root@qemu12:~# LD_DEBUG=statistics /bin/busybox > 126: number of relocations: 0 > 126: number of relocations from cache: 21 > 126: number of relative relocations: 0 > > (output) > > 126: > 126: runtime linker statistics: > 126: final number of relocations: 0 > 126: final number of relocations from cache: 21 > > vs w/o prelink: > > root@qemu12:~# LD_DEBUG=statistics /bin/busybox > 174: number of relocations: 126 > 174: number of relocations from cache: 0 > 174: number of relative relocations: 0 > > (output) > > 174: > 174: runtime linker statistics: > 174: final number of relocations: 140 > 174: final number of relocations from cache: 0 > > --Mark > > > Regards, >> Qiang >> >> >> >> >> On Thu, Dec 11, 2014 at 7:09 AM, Mark Hatle <mark.ha...@windriver.com >> <mailto:mark.ha...@windriver.com>> wrote: >> >> On 12/9/14, 9:01 PM, Mark Hatle wrote: >> >> On 12/9/14, 8:41 PM, Qiang Yu wrote: >> >> I have submitted a bug here: >> https://bugzilla.yoctoproject.__org/show_bug.cgi?id=7056 >> <https://bugzilla.yoctoproject.org/show_bug.cgi?id=7056> >> >> >> (Responded in the bug as well...) I have a test version of the >> cross >> prelink >> with the ARM HF patch available, as commit: >> >> 2cde4ff118b5244f5577d9bc585c1e__e521740af0 >> >> To enable it, use the following in your local.conf: >> >> SRCREV_pn-prelink = "__2cde4ff118b5244f5577d9bc585c1e >> __e521740af0" >> >> >> That link breaks regular arm prelink, it also missed a patch for the >> prelink-rtld. >> >> Got a new one: >> >> SRCREV_pn-prelink = "__81bab23a4661fdaaa859325d6d3603__811ecf1849" >> >> --Mark >> >> >> If this works for you, I'll finish the patch and submit the >> changes. >> >> --Mark >> >> Regards, >> Qiang >> >> On Tue, Dec 9, 2014 at 11:51 PM, Mark Hatle >> <mark.ha...@windriver.com <mailto:mark.ha...@windriver.com> >> <mailto:mark.hatle@windriver.__com >> <mailto:mark.ha...@windriver.com>>> wrote: >> >> On 12/8/14, 3:55 AM, Jegan Chandru wrote: >> >> I recommend you to file a bug here >> https://bugzilla.yoctoproject.____org/ >> <https://bugzilla.__yoctoproject.org/ >> <https://bugzilla.yoctoproject.org/>> if not >> done already. You may get a proper answer on armhf >> support >> there. From >> what I >> see, (someone please correct me if I am wrong), >> there is >> no prelink >> dynamic link >> armhf patch. You can also create and submit the >> patch for >> review. AFAIK, >> you are >> gonna need to something like below, >> >> .dynamic_linker = "/lib/ld-linux-armhf.so.3" in >> arch-arm.c. >> >> This is not tested though. Please do a test >> yourselves. >> >> >> See: http://marc.info/?l=fedora-___ >> _arm&m=135417053128837&w=2 >> <http://marc.info/?l=fedora-__arm&m=135417053128837&w=2> >> >> <http://marc.info/?l=fedora-__arm&m=135417053128837&w=2 >> <http://marc.info/?l=fedora-arm&m=135417053128837&w=2>> >> >> Nobody had requested prelink support for armhf up to >> this point. >> >> Open an enhancement / bug and assign it to me. I'll do >> what I >> can to >> integrate the patch officially. >> >> I had been waiting for the prelink upstream to merge >> this, but >> they never >> bothered to, so I'll have to make it a Yocto Project >> 'cross-prelink' >> specific path. >> >> --Mark >> >> -JC >> >> On Mon, Dec 8, 2014 at 1:52 PM, Qiang Yu < >> yuq...@gmail.com >> <mailto:yuq...@gmail.com> >> <mailto:yuq...@gmail.com <mailto:yuq...@gmail.com>> >> <mailto:yuq...@gmail.com <mailto:yuq...@gmail.com> >> <mailto:yuq...@gmail.com <mailto:yuq...@gmail.com>>>> wrote: >> >> Thanks for your reply. I almost give up. >> >> You mean that current yocto build doesn't >> support >> hard float ABI >> prelink, >> and the prelink source code needs to >> be modified to use ld-linux-armhf.so.3? >> >> So this problem affect all armhf build of >> yocto, in >> other words prelink >> doesn't work for yocto armhf at all now? >> >> Regards, >> Qiang >> >> On Mon, Dec 8, 2014 at 3:28 PM, Jegan Chandru >> <pcje...@gmail.com <mailto:pcje...@gmail.com> >> <mailto:pcje...@gmail.com <mailto:pcje...@gmail.com >> >> >> <mailto:pcje...@gmail.com <mailto: >> pcje...@gmail.com> >> <mailto:pcje...@gmail.com <mailto:pcje...@gmail.com>>>> >> wrote: >> >> Hi, >> >> I think it has to do with the >> ld-linux-armhf.so.3. May be you >> should >> tell prelink that you have hard float ARM >> ABI to >> prelink for, than >> ld-linux.so.3 . It means you need to add >> ld-linux-armhf.so.3 as a >> dynamic linker. >> You should patch the prelink source to get >> this done. >> >> HTH. >> >> -JC >> >> >> >> On Fri, Dec 5, 2014 at 7:41 AM, Qiang Yu >> <yuq...@gmail.com <mailto:yuq...@gmail.com> >> <mailto:yuq...@gmail.com <mailto:yuq...@gmail.com>> >> <mailto:yuq...@gmail.com >> <mailto:yuq...@gmail.com> <mailto:yuq...@gmail.com >> <mailto:yuq...@gmail.com>>>> wrote: >> >> Hi all, >> >> I'm building a image with local.conf: >> USER_CLASSES ?= "buildstats >> image-mklibs >> image-prelink" >> >> but I think prelink does nothing on my >> image, >> because the >> MD5SUM is >> the same before and after >> the prelink stage. The mklibs stage is >> also >> strange not print >> anything. How to make prelink and >> mklibs really work? >> >> Here is the log of log.do_rootfs: >> >> NOTE: ###### Generate images ####### >> NOTE: Executing mklibs_optimize_image >> ... >> DEBUG: Executing shell function >> mklibs_optimize_image >> DEBUG: Shell function >> mklibs_optimize_image >> finished >> NOTE: Executing prelink_image ... >> DEBUG: Executing shell function >> prelink_image >> Size before prelinking 49304. >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /sbin/fstab-decode: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /sbin/bootlogd: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /sbin/killall5: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /sbin/init.sysvinit: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /sbin/halt.sysvinit: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /sbin/shutdown.sysvinit: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /sbin/runlevel.sysvinit: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /usr/sbin/dropbearmulti: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /bin/mountpoint.sysvinit: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /bin/busybox.suid: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /bin/busybox.nosuid: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /usr/bin/utmpdump.sysvinit: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /usr/bin/mesg.sysvinit: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /usr/bin/last.sysvinit: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /usr/bin/opkg-cl: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /usr/bin/bmw: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 >> as dynamic linker >> >> >> /opt/yocto/rootfs/tmp/____sysroots/x86_64-linux/usr/____ >> sbin/prelink: >> /usr/bin/wall.sysvinit: Using >> /lib/ld-linux-armhf.so.3, not >> /lib/ld-linux.so.3 as dynamic linker >> Size after prelinking 49304. >> DEBUG: Shell function prelink_image >> finished >> >> Regards, >> Qiang >> >> >> -- >> >> ___________________________________________________ >> yocto mailing list >> yocto@yoctoproject.org <mailto:yocto@yoctoproject.org> >> <mailto:yocto@yoctoproject.org <mailto:yocto@yoctoproject.org >> >__> >> <mailto:yocto@yoctoproject.org >> <mailto:yocto@yoctoproject.org> <mailto: >> yocto@yoctoproject.org >> <mailto:yocto@yoctoproject.org>__>__> >> https://lists.yoctoproject.____org/listinfo/yocto >> <https://lists.yoctoproject.__org/listinfo/yocto >> <https://lists.yoctoproject.org/listinfo/yocto>> >> >> >> >> >> -- >> JCP >> >> >> >> >> >> -- >> JCP >> >> >> >> -- >> ___________________________________________________ >> yocto mailing list >> yocto@yoctoproject.org <mailto:yocto@yoctoproject.org> >> <mailto:yocto@yoctoproject.org <mailto:yocto@yoctoproject.org >> >__> >> https://lists.yoctoproject.____org/listinfo/yocto >> <https://lists.yoctoproject.__org/listinfo/yocto >> <https://lists.yoctoproject.org/listinfo/yocto>> >> >> >> >> >> -- >> _________________________________________________ >> yocto mailing list >> yocto@yoctoproject.org <mailto:yocto@yoctoproject.org> >> https://lists.yoctoproject.__org/listinfo/yocto >> <https://lists.yoctoproject.org/listinfo/yocto> >> >> >> >
-- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto