From: Mike Frysinger <vapier@gentoo.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC] x86: Do no use reparm as it break libgcc linkage
Date: Thu, 10 Nov 2011 19:23:41 -0500 [thread overview]
Message-ID: <201111101923.43701.vapier@gentoo.org> (raw)
In-Reply-To: <CALButC+vQRHEmi2Uw6jFs1eSEjWL+5i3NrzvGtrb5f1C7U7pMw@mail.gmail.com>
On Thursday 10 November 2011 17:53:06 Graeme Russ wrote:
> The biggest con with wrappers is that the proposed patch only wraps four
> functions. arch/arm/lib/ has private libgcc implementations for eight
> libgcc functions - I can only assume they are used somewhere.
i don't think you can look across arches like that. arm provides a lot more
libgcc funcs because it, like most RISC/embedded cpus, do not provide
dedicated math insns in the ISA. or the number of insns is so large, that
creating a dedicated library func and emitting a function call makes more
sense than emitting them inline. x86 is a fairly "fat" ISA in that most math
operations can be accomplished in single or a few insns, and is certainly
better than emitting func calls to an external library.
in fact, building the current eNET board (the only x86 board) shows that it
doesn't use *any* calls from libgcc:
make PLATFORM_LIBGCC= eNET -j4
> The kicker
> is that if anyone uses a libgcc function which is not one of the four
> already wrapped, and they do not realise this and fail to wrap them
> themselves, no warning will be given by the compiler or linker. Now that
> unwrapped function may be in a rarely executed code path (as evidenced by
> the fact that this bug has been dormant for a year now). So you could have
> in-the-wild version of U-Boot which start exhibiting strange behaviour and
> nobody knows why
yes, but the better question is whether those funcs should be called in the
first place
> The final (trivially small) con is the overhead added to these calls
this con is insignificant when weighed against the alternatives: not using
regparm anywhere. further, these funcs are rarely used, so you're talking
about adding a minor amount of overhead to one or two call sites.
> Now if we use USE_PRIVATE_LIBGCC, unimplemented libgcc functions will
> result in link errors, so using an unimplemented libgcc will be obvious at
> build time - It may lead to a posting on the mailing list, but at least we
> won't have latent libgcc related bugs in-the-wild.
perhaps x86 should be setting PLATFORM_LIBGCC to nothing all the time. the
funcs Gabe wants to wrap are 64bit operations. u-boot should not be doing 64-
bit operations. that's why we have do_div().
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20111110/1ed27e65/attachment.pgp
next prev parent reply other threads:[~2011-11-11 0:23 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-08 9:27 [U-Boot] [PATCH] [x86] Wrap small helper functions from libgcc to avoid an ABI mismatch Gabe Black
2011-11-08 13:33 ` Mike Frysinger
2011-11-08 22:27 ` Gabe Black
2011-11-08 22:34 ` [U-Boot] [PATCH v2] x86: " Gabe Black
2011-11-08 23:14 ` Graeme Russ
2011-11-09 4:49 ` Mike Frysinger
2011-11-09 3:57 ` Graeme Russ
2011-11-09 5:34 ` Mike Frysinger
2011-11-17 9:01 ` [U-Boot] [PATCH v3] " Gabe Black
2011-11-17 9:13 ` Gabe Black
2011-11-30 11:03 ` Graeme Russ
2011-11-09 3:05 ` [U-Boot] [PATCH v2] " Graeme Russ
2011-11-09 10:32 ` [U-Boot] [RFC] x86: Do no use reparm as it break libgcc linkage Graeme Russ
2011-11-09 17:12 ` Mike Frysinger
2011-11-09 21:42 ` Graeme Russ
2011-11-10 4:13 ` Mike Frysinger
2011-11-10 4:22 ` Graeme Russ
2011-11-10 5:10 ` Graeme Russ
2011-11-10 17:15 ` Mike Frysinger
2011-11-10 22:53 ` Graeme Russ
2011-11-11 0:23 ` Mike Frysinger [this message]
2011-11-11 1:23 ` Graeme Russ
2011-11-11 1:40 ` Mike Frysinger
2011-11-11 1:51 ` Graeme Russ
2011-11-11 1:55 ` Mike Frysinger
2011-11-11 1:59 ` Graeme Russ
2011-11-11 2:10 ` Gabe Black
2011-11-11 2:22 ` Graeme Russ
2011-11-11 2:41 ` Gabe Black
2011-11-11 4:49 ` Graeme Russ
2011-11-11 5:04 ` Mike Frysinger
2011-11-11 5:16 ` Graeme Russ
2011-11-11 16:24 ` Mike Frysinger
2011-11-11 2:44 ` Mike Frysinger
2011-11-11 19:59 ` Scott Wood
2011-11-16 23:00 ` Graeme Russ
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=201111101923.43701.vapier@gentoo.org \
--to=vapier@gentoo.org \
--cc=u-boot@lists.denx.de \
/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.