This is the mail archive of the
mailing list for the glibc project.
Re: [PATCH] BZ #19590: Fixed build of shared objects that use libmvec.so functions
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Joseph Myers <joseph at codesourcery dot com>
- Cc: Andrew Senkevich <andrew dot n dot senkevich at gmail dot com>, Florian Weimer <fweimer at redhat dot com>, libc-alpha <libc-alpha at sourceware dot org>
- Date: Wed, 10 Feb 2016 08:44:23 -0800
- Subject: Re: [PATCH] BZ #19590: Fixed build of shared objects that use libmvec.so functions
- Authentication-results: sourceware.org; auth=none
- References: <CAMXFM3tML81iuKQMKRU-T4Fw0+=sYk0q_BNavMGagt21VcYvzQ at mail dot gmail dot com> <56BB2835 dot 4050907 at redhat dot com> <CAMXFM3s=W79Wp=os1w0FuybqO8ygpQEz0mT=Q0-NDnX3wZTiPQ at mail dot gmail dot com> <56BB3610 dot 4040907 at redhat dot com> <CAMXFM3tzMWSMF-daxnwsFrMA8HyJ6J7k_WZvYciAGzAMusRBhg at mail dot gmail dot com> <CAMe9rOpu141Y_OLPtc8pXVzQqhik6EkQPfk=2PPX7CZ5AmhdLQ at mail dot gmail dot com> <CAMXFM3vUtxBHCCtZJn-fm1V5cObkyEo8Ow-i3FdLeZs8_BB5xQ at mail dot gmail dot com> <CAMe9rOocQG9Kc6iVL33rzM7=Xi9CjVSwDc673ophdUuOSS8KJw at mail dot gmail dot com> <alpine dot DEB dot 2 dot 10 dot 1602101631590 dot 20541 at digraph dot polyomino dot org dot uk>
On Wed, Feb 10, 2016 at 8:33 AM, Joseph Myers <email@example.com> wrote:
> On Wed, 10 Feb 2016, H.J. Lu wrote:
>> >> I don't think we should put a GCC bug workaround in glibc. It should
>> >> be fixed or worked around it in GCC.
>> > Since GCC 4.9 vector function name is formed based on asm declaration
>> > name, to support that GCC versions we need to have such workaround.
>> So it is the part of ABI, isn't it?
> It is deliberately only part of the static library ABI, not part of the
> shared library ABI, because the shared libraries should not need more than
> one internal-namespace exported name for the same interface (and it's a
> compiler limitation that the other name exists at all).
Let me try to understand the problem:
1. GCC should generate an alias, foo, which points to bar defined
2. But the alias foo may be removed by GCC sometimes (LTO?).
3. As a workaround, we put an alias foo, in libmvec_nonshared.a which
points to bar defined in libmvec.so.
Am I correct?