From: Phil Blundell <pb@pbcl.net>
To: "Burton, Ross" <ross.burton@intel.com>
Cc: mcrowe@brightsign.biz, tgover@brightsign.biz,
OE-core <openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH] directfb.inc: force bfd linker for armv7a
Date: Wed, 18 Nov 2015 09:58:17 +0000 [thread overview]
Message-ID: <1447840697.4042.13.camel@pbcl.net> (raw)
In-Reply-To: <1447780178.1472.29.camel@pbcl.net>
[-- Attachment #1: Type: text/plain, Size: 2518 bytes --]
On Tue, 2015-11-17 at 17:09 +0000, Phil Blundell wrote:
> On Tue, 2015-11-17 at 16:44 +0000, Burton, Ross wrote:
> >
> >
> > On 17 November 2015 at 15:16, Phil Blundell <pb@pbcl.net> wrote:
> >
> > > Does the resulting directfb-csource binary actually work with that
> > > change? My recollection is that ld.bfd will just silently permit
> > > relocs that gold (correctly) refuses to allow.
> > >
> > >
> >
> >
> > Personally I don't use DirectFB (and am constantly surprised it's
> > still a thing) so at this point I'm not going to merge either of
> > these patches until someone can confirm that their fix *works on
> > hardware* instead of just fixing the build.
>
>
> I think that's a reasonable position. In any case, the underlying
> issue is a compiler bug and ought really to be fixed there rather than
> patching directfb or any other package that just happens to fall over
> it.
I had another look at this and my previous recollection was not quite
right. What's happening here is that we have:
movw r1, #:lower16:longjmp
mov r2, #392
movt r1, #:upper16:longjmp
bl png_set_longjmp_fn
which is not an unreasonable thing for the compiler to generate in the
circumstances and results in the assembler producing:
00000798 0000722b R_ARM_MOVW_ABS_NC 00000000 longjmp
000007a0 0000722c R_ARM_MOVT_ABS 00000000 longjmp
114: 00000000 0 NOTYPE GLOBAL DEFAULT UND longjmp
which is also fine. However gold is getting a bit mixed up and seems to
be forgetting to generate a plt entry for longjmp. Instead it tries to
produce:
0000a124 0000132b R_ARM_MOVW_ABS_NC 00000000 longjmp
0000a12c 0000132c R_ARM_MOVT_ABS 00000000 longjmp
19: 00000000 0 FUNC GLOBAL DEFAULT UND longjmp@GLIBC_2.4 (4)
104: 00000000 0 FUNC GLOBAL DEFAULT UND longjmp
which is bogus.
So, contrary to what I said before, I don't think gcc is doing anything
wrong and it seems fairly clear that the bug is in gold. That being the
case, I think switching to ld.bfd is a reasonable workaround. Adding
-fPIC also works around the problem in a different way (it replaces the
MOVx_ABS relocs with a load from the constant pool and a corresponding
GLOB_DAT reloc) but this will produce worse code. So I would be
inclined to merge Andre's patch. If someone wanted to distil a testcase
from this and file a bug against gold upstream then that would be even
better.
p.
[-- Attachment #2: Type: text/html, Size: 4076 bytes --]
next prev parent reply other threads:[~2015-11-18 9:58 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-17 5:56 [PATCH] directfb.inc: force bfd linker for armv7a Andre McCurdy
2015-11-17 13:57 ` Burton, Ross
2015-11-17 15:16 ` Phil Blundell
2015-11-17 16:44 ` Burton, Ross
2015-11-17 17:09 ` Phil Blundell
2015-11-17 19:16 ` Andre McCurdy
2015-11-17 19:34 ` Andre McCurdy
2015-11-18 2:54 ` Andre McCurdy
2015-11-18 9:58 ` Phil Blundell [this message]
2015-11-17 19:33 ` Khem Raj
2015-11-17 19:42 ` Andre McCurdy
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=1447840697.4042.13.camel@pbcl.net \
--to=pb@pbcl.net \
--cc=mcrowe@brightsign.biz \
--cc=openembedded-core@lists.openembedded.org \
--cc=ross.burton@intel.com \
--cc=tgover@brightsign.biz \
/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