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 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.