[PATCH] Add __BEGIN_DECLS and __END_DECLS for C++
H.J. Lu
hjl.tools@gmail.com
Thu May 11 15:33:00 GMT 2017
On Thu, May 11, 2017 at 8:20 AM, Zack Weinberg <zackw@panix.com> wrote:
> On Thu, May 11, 2017 at 11:10 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> On Thu, May 11, 2017 at 7:57 AM, Zack Weinberg <zackw@panix.com> wrote:
>>> On Thu, May 11, 2017 at 10:45 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>>>> On Thu, May 11, 2017 at 7:43 AM, Zack Weinberg <zackw@panix.com> wrote:
>>>>>
>>>>> This program does not appear to need ifunc-impl-list.h. Please elaborate.
>>>>
>>>> Please see hjl/x86/optimize branch in glibc git repo.
>>>
>>> I don't especially appreciate being made to dig through a bunch of
>>> code I'm unfamiliar with. It would have been easy for you to write
>>> "The existing benchtests framework uses ifunc-impl-list.h to iterate
>>> over all ifunc implementations of a particular string function. This
>>> works as long as the test program is C, but I want to integrate a
>>> third-party benchmark <url> written in C++, so I need to make
>>> ifunc-impl-list.h C++-safe". If that had accompanied the original
>>> patch it would have been better all around.
>>>
>>> It looks to me as if IFUNC_IMPL_ADD is not C++-safe and cannot easily
>>
>> IFUNC_IMPL_ADD is only used in ifunc-impl-list.c, which is the
>> part of libc and in C.
>
> Can IFUNC_IMPL_ADD be removed from ifunc-impl-list.h then? I would be
> okay with adding __BEGIN_DECLS/__END_DECLS to the header as long as
> all of the code within it -- including macros -- was safe for use from
> C++ programs, and with a comment explaining that the header may get
> used from C++ benchmarks.
IFUNC_IMPL_ADD is used in
sysdeps/arm/armv7/multiarch/ifunc-impl-list.c
sysdeps/i386/i686/multiarch/ifunc-impl-list.c
sysdeps/powerpc/powerpc32/power4/multiarch/ifunc-impl-list.c
sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
sysdeps/s390/multiarch/ifunc-impl-list.c
sysdeps/sparc/sparc64/multiarch/ifunc-impl-list.c
sysdeps/x86_64/multiarch/ifunc-impl-list.c
Removing it from include/ifunc-impl-list.h isn't appropriate. Here is
the updated patch with comments.
>>> be made so, so I don't like this change. What prevents you from
>>> rewriting the third-party benchmark in C, since you have to modify it
>>> anyway? It's not doing anything that is difficult in plain C.
>>
>> I'd to preserve the original benchmark as much as possible so that
>> little is lost, comparing with the original one.
>
> That's fair.
>
> zw
--
H.J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Add-__BEGIN_DECLS-and-__END_DECLS-for-C.patch
Type: text/x-patch
Size: 2127 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20170511/85c50d7b/attachment.bin>
More information about the Libc-alpha
mailing list