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