From: Rob Landley <rob@landley.net>
To: linux-sh@vger.kernel.org
Subject: Re: [musl] SH sigcontext ABI is broken
Date: Wed, 24 Jun 2015 09:14:45 +0000 [thread overview]
Message-ID: <558A7505.6020503@landley.net> (raw)
In-Reply-To: <20150619070912.GA15025@brightrain.aerifal.cx>
On 06/24/2015 01:12 PM, Rich Felker wrote:
> On Wed, Jun 24, 2015 at 02:10:06PM +0000, Joseph Myers wrote:
>> On Wed, 24 Jun 2015, Rich Felker wrote:
>>
>>> Nominally SH3 support remains in both the kernel and glibc. If it can
>>> be established that multiple parties agree that there's really no one
>>> left who cares about the old no-FPU sigcontext ABI on SH3, I will be
>>> all for dropping it and unifying sigcontext.
>>
>> Note that right now we have BE and LE versions of *three* ABIs for SH in
>> glibc (SH3 soft-float, SH4 soft-float, SH4 hard-float) (and as noted in
>> this discussion, right now each would only work properly on a kernel with
>> the corresponding configuration). See
>> <https://sourceware.org/glibc/wiki/ABIList>.
>
> Is your understanding that SH4 soft-float is using the SH4 ucontext_t
> layout? I don't think it's even working at all.
I never bothered to test floating point on it. It doesn't come up much
with anything I do, and qemu's floating point emulation is notoriously
dicey.
If I do an x86-64 linux from scratch build the perl build dies with:
https://twitter.com/landley/status/571883794279493633
Of course it doesn't happen in a chroot or using distcc to call out to
the cross compiler, only when gcc does those floating point calculations
under qemu-system-x86_64. (Presumably it wouldn't happen if I was using
kvm instead of qemu either...) Given that, trying to prove anything
about qemu-system-sh4's floating point seemed like a waste of time.
> Glibc uses the layout
> with fpu registers only if __SH4__ or __SH4A__ is defined,
I've never built glibc for sh4. I could try installing the old debian
sh4 chroot? (What release was that, squiggy? I tried installing Debian's
alpha lenny chroot yesterday and "apt-get update" in the chroot is
failing trying to hand off the wget data to gzip. Something with pipes
in qemu-alpha application emulation, I think. It's on the todo list.)
If you're curious, I was following the qemu-debootstrap instructions on
https://wiki.debian.org/ArmHardFloatChroot substituting in info from
https://www.debian.org/ports/ (hence the ping on #musl about whether
musl debian ports would be interesting). Also there's a debian sh4 page
at https://wiki.debian.org/SH4 so if I needed to poke at glibc for sh4,
that would probably be my starting point.
> but GCC
> does not define these macros when -m4-nofpu is used. Instead it
> defines both __SH3__ and __SH4_NOFPU__.
I hack around that sort of thing in builds all the time. Various bits of
gnu software only ever agree with each other (or anything else) by
coincidence.
> On the other hand, the kernel uses:
>
> #if defined(__SH4__) || defined(CONFIG_CPU_SH4) || \
> defined(__SH2A__) || defined(CONFIG_CPU_SH2A) || 1
>
> to determine whether to include the FPU regs in the struct.
> CONFIG_CPU_SH4 is presumably defined whenever the kernel is built for
> the SH4 entry point code. So I don't think it's even possible to build
> a kernel that's compatible with glibc's SH4 soft-float.
You think this is in any way unusual?
http://landley.net/hg/aboriginal/file/tip/sources/patches
Patching stuff to make this kind of thing match up during a build is
_normal_. It's means you're not on x86 (or these days, arm).
> This seems to have been a silent ABI regression in glibc when the sh
> sys/* sysdep headers were merged. Back when there were separate
> versions in the sh3 and sh4 dirs, it _should_ have worked with the
> kernel's definitions.
Embedded development 101: first time the package broke most of the
userbase just didn't upgrade to the broken version. If they're stuck on
2.4 (or 2.0!) as a result, and the device wasn't connected to the
internet, they did not care. (The sad parts are where the device IS
connected to the internet and they _still_ don't care.)
> I think this level of breakage (that nobody seems to have noticed or
> cared about) is sufficient to say let's just throw out the old no-fpu
> ucontext_t and use the same struct everywhere for now. We can always
> add a personality to get the old one back if anyone ever needs it.
Seriously, the person you should be talking to is either Jeff (founder
of uclinux.org) or Kawasaki-san (original superh architect). I can
forward questions to 'em, but we've established than I'm a very
inefficient intermediary. :)
>> I think the next glibc change likely to require action from each
>> architecture's maintainer to avoid breaking the build may be Adhemerval's
>> cancellation changes - so if no-one comes forward as SH maintainer to at
>> least update SH for those changes when they are ready to go in, the build
>> for SH will be broken and that will indicate, as per
>> <https://sourceware.org/ml/libc-alpha/2015-06/msg00424.html>, that it may
>> be time to remove the port from glibc.
>
> I may be available to do the cancellation changes (it's my design, so
> I'm familiar with the requirements), but I'll probably have to get
> copyright assignment paperwork taken care of first.
Ah right, copyright assignment. Rich is a much better choice to do this
then.
> Rich
Rob
next prev parent reply other threads:[~2015-06-24 9:14 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-19 7:09 SH sigcontext ABI is broken Rich Felker
2015-06-19 7:41 ` Andreas Schwab
2015-06-19 19:12 ` [musl] " Rich Felker
2015-06-19 19:57 ` Andreas Schwab
2015-06-19 20:32 ` Rich Felker
2015-06-20 8:10 ` Geert Uytterhoeven
2015-06-20 18:06 ` [musl] " Rich Felker
2015-06-20 19:59 ` [musl] " Rob Landley
2015-06-24 4:25 ` [musl] " Rob Landley
2015-06-24 4:52 ` Rich Felker
2015-06-24 7:12 ` Rob Landley
2015-06-24 8:23 ` Rob Landley
2015-06-24 8:40 ` Rob Landley
2015-06-24 9:14 ` Rob Landley [this message]
2015-06-24 14:10 ` Joseph Myers
2015-06-24 18:03 ` Rich Felker
2015-06-24 18:12 ` Rich Felker
2015-06-24 19:37 ` Joseph Myers
2015-06-24 20:08 ` Rich Felker
2015-06-24 21:34 ` Rich Felker
2015-06-24 22:02 ` Rich Felker
2015-06-25 6:24 ` Geert Uytterhoeven
2015-07-02 19:23 ` [musl] " Maciej W. Rozycki
2015-07-02 22:51 ` Rob Landley
2015-07-03 6:43 ` Andreas Schwab
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=558A7505.6020503@landley.net \
--to=rob@landley.net \
--cc=linux-sh@vger.kernel.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;
as well as URLs for NNTP newsgroup(s).