This is the mail archive of the
mailing list for the glibc project.
Re: e500 port: the port itself
- From: Adhemerval Zanella <azanella at linux dot vnet dot ibm dot com>
- To: "Joseph S. Myers" <joseph at codesourcery dot com>
- Cc: libc-alpha at sourceware dot org
- Date: Fri, 18 Oct 2013 17:42:56 -0300
- Subject: Re: e500 port: the port itself
- Authentication-results: sourceware.org; auth=none
- References: <Pine dot LNX dot 4 dot 64 dot 1310042321150 dot 27874 at digraph dot polyomino dot org dot uk> <Pine dot LNX dot 4 dot 64 dot 1310102055470 dot 11458 at digraph dot polyomino dot org dot uk> <5261717F dot 1040305 at linux dot vnet dot ibm dot com> <Pine dot LNX dot 4 dot 64 dot 1310181954040 dot 21066 at digraph dot polyomino dot org dot uk>
On 18-10-2013 17:03, Joseph S. Myers wrote:
> On Fri, 18 Oct 2013, Adhemerval Zanella wrote:
>> Hi Joseph, thanks for the patch. As you suggested, I'll focus the review
>> in the non-e500 specific parts. Aside to the Copysights nits, the patch
>> looks ok. Any reason in particular to the missing copysignl PLT?
> The copysignl PLT for soft-float results from use of __builtin_copysignl
> in libgcc's complex multiplication / division, which then get linked into
> glibc (copysignl uses directly in glibc's source code of course use the
> hidden_* tricks to avoid going through PLT entries, but that doesn't help
> for calls from libgcc, or calls generated by GCC to libgcc functions that
> glibc also exports). For e500v2, GCC has abstf2/negtf2 patterns, which
> suffice to get __builtin_copysignl expanded inline and so the PLT entry
> isn't needed.
> The ideal state would be appropriate GCC insn patterns to expand copysignl
> inline for soft-float / e500v1, so that the PLT entry never appeared.
> (In glibc, copysignl is in libc as well as libm, meaning the use of it in
> libgcc doesn't generally cause problems. But people using other C
> libraries with GCC have run into the issue of libgcc using copysignl,
> which they don't have in their libc, several times.)
This is ok, thanks for the explanation.
>>> diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fclrexcpt.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fclrexcpt.c
>>> new file mode 100644
>>> index 0000000..92a7dd1
>>> --- /dev/null
>>> +++ b/sysdeps/powerpc/powerpc32/e500/nofpu/fclrexcpt.c
>>> @@ -0,0 +1,53 @@
>>> +/* Clear given exceptions in current floating-point environment. e500 version.
>>> + Copyright (C) 2004-2013 Free Software Foundation, Inc.
>> Shouldn't be just 2013? This is also applies for other Copyright dates
>> for new files.
> These files are based on Aldy's old spe add-on for glibc 2.3, which was
> released in 2004. Copyright dates reflect files being based on other
> files or having been previously released.
Fair enought, this is ok then.