All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maciej Borzecki <maciej.borzecki@open-rnd.pl>
To: Wy kevinthesun <kevinthesunwy@gmail.com>
Cc: yocto@yoctoproject.org
Subject: Re: Cannot run simple binary executable file
Date: Thu, 09 Oct 2014 00:04:38 +0200	[thread overview]
Message-ID: <1689030.f24RTAysQK@comp-006-thk> (raw)
In-Reply-To: <CAG6mzOMzmmeafkG3UFhWd=OtQ-CjDpU4nRGG86+WqPp6aMVDjw@mail.gmail.com>

On Thursday 09 of October 2014 05:34:29 Wy kevinthesun wrote:
> Hi Denys, I have tried 1.5.1 and 1.3. All of them use ld-linux.so.3.
> Actually in the /lib directory of these toolchains I only find
> ld-linux.so.3.

Try running 'readelf -a <yourbinary> |grep FP' this should give a hint on the 
setting of -mfloat-abi that was used during compilation. This post might 
explain more: https://gcc.gnu.org/ml/gcc-help/2012-02/msg00082.html

readelf will also give you the interpreter name that the binary wants to be 
run with (in your case it should be ld-linux.so.3). However, I've also seen 
ld-linux.so.3 being symlinked to proper armhf.so (and program binaries would 
use ld-linux.so as interpreter) or the other way round, so whatever readelf 
prints as the requested interpreter might not necessarily be conclusive.

Long shot, but have you tried grabbing ld-linux.so* from 1.5 and calling it on 
1.6 like this?
	./ld-linux.so.3 ./yourbinary


> 
> Thank you.
> 
> 2014-10-09 4:43 GMT+08:00 Denys Dmytriyenko <denis@denix.org>:
> > On Tue, Oct 07, 2014 at 07:05:42PM -0700, Wy kevinthesun wrote:
> > > However, a new problem occurs. Now when I tries run HelloWorld binary,
> > > after "Hello World" is printed, the terminal also prints "Segmentation
> > > fault". It seems that some memory problems occurs. I guess it comes from
> > > that the 1.5.1 yocto system on boards hopes ld-linux-armhf.so.3 as
> > 
> > dynamic
> > 
> > > linker, instead of ld-linux.so.3, which is used by toolchain. There may
> > 
> > be
> > 
> > > some memory address problem between them. How can I solve it?
> > 
> > As Nicolas suggested earlier, it seems you are trying to mix ABIs here.
> > Because ld-linux-armhf.so.3 indicates the system uses hardfp ABI, but the
> > example app you built with your toolchain wants ld-linux.so.3, which is
> > usually the old softfp ABI. You'd need to match ABIs and the easiest
> > solution
> > is to use the same toolchain that was used to build the system (1.5.1?)
> > 
> > --
> > Denys
> > 
> > > 2014-10-07 18:17 GMT-07:00 Wy kevinthesun <kevinthesunwy@gmail.com>:
> > > > Problem solved! It turns out it is the mismatch of ld-linux.so. I
> > 
> > referred
> > 
> > > > to this post
> > 
> > http://stackoverflow.com/questions/24543474/cross-compiled-gnu-arm-beagleb
> > oneblack-from-windows-runtime-error-on-elf ,
> > 
> > > > and found my problem was exactly the same: the binary needs
> > > > /lib/ld-linux.so.3 to run, but that file is missing in the 1.5.1 yocto
> > > > system on board. Then I copied ld-linux.so.3 file from Yocto toolchain
> > 
> > on
> > 
> > > > my pc. Then it works!
> > > > 
> > > > Thank you!
> > > > 
> > > > 2014-10-07 8:21 GMT-07:00 Nicolas Dechesne <
> > 
> > nicolas.dechesne@linaro.org>:
> > > > On Tue, Oct 7, 2014 at 1:07 PM, Wy kevinthesun <
> > 
> > kevinthesunwy@gmail.com>
> > 
> > > >> wrote:
> > > >> > Hi, I am new to Yocto Project and learning to develop software on
> > 
> > Atmel
> > 
> > > >> > SAMA5D3 Xplained board, on which Yocto 1.5.1 is pre-built. I
> > 
> > followed
> > 
> > > >> the
> > > >> 
> > > >> > instructions and got the 1.6.1 toolchain
> > > >> > 
> > > >> > poky-eglibc-i686-core-image-sato-armv7a-vfp-neon-toolchain-1.6.1.sh
> > 
> > .
> > 
> > > >> > I can compile the simple HelloWorld program and binary file is
> > > >> > made.
> > > >> 
> > > >> Then I
> > > >> 
> > > >> > copied the binary file
> > > >> > 
> > > >> > into board and tried to run it. However, when I changed to the file
> > > >> 
> > > >> located
> > > >> 
> > > >> > directory and type
> > > >> > 
> > > >> > "./Hello", it returned "sh: ./Hello: No such file or directory".
> > 
> > Then I
> > 
> > > >> > tried "sh Hello", it gave
> > > >> > 
> > > >> > me  "Hello: Hello: cannot execute binary file ". If I type "file
> > > >> 
> > > >> Hello", it
> > > >> 
> > > >> > gives "Hello: ELF 32-bit
> > > >> > 
> > > >> >  LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked
> > 
> > (uses
> > 
> > > >> > shared libs), for GNU/Linux 2.6.16,
> > > >> > BuildID[sha1]=9933a2d2ce212099c5f9902a8e612c1423e136da, not
> > 
> > stripped". I
> > 
> > > >> > googled and someone
> > > >> > 
> > > >> > said the problem may be the toolchain. Then I tried 1.3, 1.5.1
> > > >> 
> > > >> toolchain for
> > > >> 
> > > >> > arm, but still same
> > > >> > 
> > > >> > error. Could you please help me about this problem?
> > > >> 
> > > >> i suspect this is an armv7 soft-float vs hard-float mismatch. Either
> > > >> your prebuilt OE system is configured with soft-float and the
> > > >> toolchain you use compiled for hard-float by default, or the other
> > > >> way
> > > >> around. can you check how you've compile HelloWolrd and check the
> > > >> other ABI?
> > > 
> > > --
> > > _______________________________________________
> > > yocto mailing list
> > > yocto@yoctoproject.org
> > > https://lists.yoctoproject.org/listinfo/yocto

-- 

Maciej Borzęcki 
Senior Software Engineer Open-RnD Sp. z o.o. 
www.open-rnd.pl, Facebook, Twitter 
mobile: +48 telefon, fax: +48 42 657 9079 

Niniejsza wiadomość wraz z załącznikami może zawierać chronione prawem lub 
poufne informacje i została wysłana wyłącznie do wiadomości i użytku osób, do 
których została zaadresowana. Jeśli wiadomość została otrzymana przypadkowo 
zabrania się jej kopiowania lub rozsyłania do osób trzecich. W takim przypadku 
uprasza się o natychmiastowe zniszczenie wiadomości oraz poinformowanie 
nadawcy o zaistniałej sytuacji za pomocą wiadomości zwrotnej. Dziękujemy. 

This message, including any attachments hereto, may contain privileged or 
confidential information and is sent solely for the attention and use of the 
intended addressee(s). If you are not an intended addressee, you may neither 
use this message nor copy or deliver it to anyone. In such case, you should 
immediately destroy this message and kindly notify the sender by reply email. 
Thank you.


  reply	other threads:[~2014-10-08 22:04 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-07 11:07 Cannot run simple binary executable file Wy kevinthesun
2014-10-07 15:17 ` Khem Raj
2014-10-07 15:21 ` Nicolas Dechesne
2014-10-08  1:17   ` Wy kevinthesun
2014-10-08  2:05     ` Wy kevinthesun
2014-10-08 20:43       ` Denys Dmytriyenko
2014-10-08 21:34         ` Wy kevinthesun
2014-10-08 22:04           ` Maciej Borzecki [this message]
2014-10-09  7:10           ` Nicolas Dechesne
2014-10-09 20:27             ` Wy kevinthesun
2014-10-10  6:12               ` Nicolas Dechesne
2014-10-10 23:15                 ` Wy kevinthesun
2014-10-10 23:27                   ` Denys Dmytriyenko
2014-10-11  0:51                     ` Wy kevinthesun
2014-10-11  1:16                       ` Denys Dmytriyenko
2014-10-11  5:19                         ` Wy kevinthesun

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1689030.f24RTAysQK@comp-006-thk \
    --to=maciej.borzecki@open-rnd.pl \
    --cc=kevinthesunwy@gmail.com \
    --cc=yocto@yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.