On Wed, 2017-09-20 at 08:37 -0700, Steve Ellcey wrote:
> On Tue, 2017-09-19 at 09:16 -0600, Martin Sebor wrote:
> > On 09/18/2017 03:44 PM, Joseph Myers wrote:
> > > On Mon, 18 Sep 2017, Martin Sebor wrote:
> > > > It's meant as an escape hatch.  It allows declaring
> > > > compatibility
> > > > symbols, for example by the libstdc++ _GLIBCXX_3_4_SYMVER macro
> > > > defined in libstdc++-v3/src/c++98/compatibility.cc.  The macro
> > > > is
> > > > used to declare compatibility functions of all sorts of
> > > > incompatible
> > > > types.  The originally posted patch had libstdc++ disable the
> > > > warning
> > > > for the file with the symbols but Jonathan preferred this
> > > > solution.
> > > > 
> > > > It could perhaps be tightened up to detect some of the cases on
> > > > your
> > > > list but I'm not sure it's worth the effort and added
> > > > complexity.
> > > > Let me know if you feel differently (or have a different
> > > > suggestion),
> > > > otherwise I will go ahead and commit the patch as is.
> > > Please add a comment explaining this reasoning and commit the
> > > patch.
> > Done in r252976.
> > 
> > Thanks
> > Martin
> This patch is causing my gcc/glibc ToT build to fail on aarch64.  I am
> not sure if everything should be working at this point or not or if
> there is more that needs to be done.  The problem is with the memcpy,
> memmove, etc. ifuncs on aarch64.
> 
> Steve Ellcey
> sell...@cavium.com

Martin,

I think there is more fallout from this patch.  The libatomic library
can use ifuncs and right now it is not working on aarch64 (testing a
proposed patch I sent) because the ifunc check fails due to the new
warnings.  I believe this can be reproduced with ToT on x86 or arm as
they use ifuncs in the checked in sources but I have not tried that
yet.  Note that the build does not fail, it is just that the check for
ifunc support fails and thus the library is built without them.

Steve Ellcey
sell...@cavium.com

configure:14698: checking whether the target supports the ifunc attribute
configure:14720: /home/sellcey/gcc-libatomic/obj/gcc/./gcc/xgcc
-B/home/sellcey/gcc-libatomic/obj/gcc/./gcc/ -B/home/sellcey/gcc-
libatomic/install/aarch64-unknown-linux-gnu/bin/ -B/home/sellcey/gcc-
libatomic/install/aarch64-unknown-linux-gnu/lib/ -isystem
/home/sellcey/gcc-libatomic/install/aarch64-unknown-linux-gnu/include
-isystem /home/sellcey/gcc-libatomic/install/aarch64-unknown-linux-
gnu/sys-include    -o conftest -g -O2  -pthread
-Werror   conftest.c  >&5
conftest.c:68:9: error: 'foo' 'ifunc' resolver should return a function
pointer [-Werror=attributes]
     int foo(void) __attribute__((ifunc("foo_sel")));
         ^~~
conftest.c:67:11: note: resolver declaration here
     void *foo_sel(void) { return foo_alt; }
           ^~~~~~~
cc1: all warnings being treated as errors
configure:14720: $? = 1


Reply via email to