Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Khem Raj <raj.khem@gmail.com>
To: Phil Blundell <philb@gnu.org>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH] insane: Rationalise phdrs-based QA checks
Date: Wed, 17 Oct 2012 23:19:23 -0700	[thread overview]
Message-ID: <B3573A54-6540-4CD3-9D20-7DB7CCDBD769@gmail.com> (raw)
In-Reply-To: <1350506395.4470.163.camel@x121e.pbcl.net>


On Oct 17, 2012, at 1:39 PM, Phil Blundell <philb@gnu.org> wrote:

> On Tue, 2012-10-16 at 20:14 +0100, Phil Blundell wrote:
>> On Tue, 2012-10-16 at 11:29 -0700, Saul Wold wrote:
>>> On 10/15/2012 03:32 AM, Phil Blundell wrote:
>>>> On Sun, 2012-10-14 at 14:45 -0700, Saul Wold wrote:
>>>>> On 10/01/2012 10:29 AM, Phil Blundell wrote:
>>>>>> Various different QA checks are based on essentially the same data from
>>>>>> the ELF program headers.  Calling objdump to extract it repeatedly is
>>>>>> inefficient, particularly if the shell is involved.  Instead, let's
>>>>>> cache the output from objdump inside the qa.elf object and allow it to
>>>>>> be reused by multiple tests.
>>>>>> 
>>>>>> Also, using objdump instead of scanelf to check for bad RPATHs (in the
>>>>>> same way that the useless-rpaths check was doing already) allows the
>>>>>> dependency on pax-utils-native to be dropped.
>>>>>> 
>>>>> This seems to be failing for a QemuArm build of world, specifically
>>>>> lsbsetup, quilt, sysvinit, and foomatic-filters seems like its failing
>>>>> on symlinks.
>>>> 
>>>> I wasn't able to complete a build of world successfully due to some
>>>> unrelated-looking breakage in xserver-xorg, but I did reproduce this
>>>> problem by building quilt by hand.  The attached patch fixes it for me.
>>>> 
>>> This is better, but I found another failure:
>>> 
>>>> ERROR: Error executing a python function in /intel/distro/meta/recipes-devtools/qemu/qemu_1.2.0.bb:
>>>> ExecutionError: Execution of '/intel/poky/builds/world/tmp/sysroots/x86_64-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-poky-linux-gnueabi-objdump -p /intel/poky/builds/world/tmp/work/armv5te-poky-linux-gnueabi/qemu-1.2.0-r3/packages-split/qemu/usr/share/qemu/palcode-clipper' failed with exit code 1:
>>>> /intel/poky/builds/world/tmp/sysroots/x86_64-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-poky-linux-gnueabi-objdump: /intel/poky/builds/world/tmp/work/armv5te-poky-linux-gnueabi/qemu-1.2.0-r3/packages-split/qemu/usr/share/qemu/palcode-clipper: File format not recognized
>>>> 
>>> 
>>> When I run file:
>>> /intel/poky/builds/world/tmp/work/armv5te-poky-linux-gnueabi/qemu-1.2.0-r3/packages-split/qemu/usr/share/qemu/palcode-clipper: 
>>> ELF 64-bit LSB executable, Alpha (unofficial), version 1 (SYSV), 
>>> statically linked, not stripped
>>> 
>>> I was building qemuarm, but I had a done a qemuppc build earlier also.
>> 
>> Well, that's a bit weird.  It seems as though you have somehow gotten an
>> Alpha binary installed, which isn't appropriate for either qemuarm or
>> qemuppc.  In fact I don't think we support alpha in oe-core at all so
>> it's a bit of a mystery how it would have been built in the first place.
>> 
>> On the one hand, this is a genuine problem and it's good that the QA
>> check is diagnosing it.  On the other hand, it probably oughtn't to be
>> diagnosing it by means of an objdump failure (and I think there is
>> already a dedicated check for wrong ELF arch anyway).  So probably the
>> right thing to do is just trap exceptions around running objdump and
>> ignore any files that it doesn't understand.
> 
> So, it turns out that:
> 
> a) qemu is deliberately turning off the "wrong ELF architecture" check,
> which implies that it wants to ship these foreign-architecture binaries.
> It's not clear to me why this is a useful thing to do, but still.
> 
> b) if binutils is configured for qemux86 then it is quite happy to let
> you run "objdump -p" on alpha and sparc binaries, which is what I would
> have expected.  If it is configured for qemuarm then, for reasons which
> are mysterious to me, you get "File format not recognised" in that
> situation.

we should add --enable-targets=all --with-64-bit-bfd and that should build all possible BFDs into binutils
and then it will be able to dump different architectures. 

> 
> Anyway, we clearly shouldn't get a failure in that situation.  The
> attached patch causes qa.py to trap errors from objdump and just return
> a null output, which is pretty much what the calling code will expect.
> 
> p.
> 
> <0001-qa-Trap-exceptions-when-running-objdump.patch>_______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core




  reply	other threads:[~2012-10-18  6:32 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-01 17:29 [PATCH] insane: Rationalise phdrs-based QA checks Phil Blundell
2012-10-14 21:45 ` Saul Wold
2012-10-15 10:32   ` Phil Blundell
2012-10-16 18:29     ` Saul Wold
2012-10-16 19:14       ` Phil Blundell
2012-10-17 20:39         ` Phil Blundell
2012-10-18  6:19           ` Khem Raj [this message]
2012-10-18 19:38 ` Saul Wold

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=B3573A54-6540-4CD3-9D20-7DB7CCDBD769@gmail.com \
    --to=raj.khem@gmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=philb@gnu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox