This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH][AArch64] Add rawmemchr
- From: Alexander Cherepanov <ch3root at openwall dot com>
- To: Wilco Dijkstra <Wilco dot Dijkstra at arm dot com>, 'GNU C Library' <libc-alpha at sourceware dot org>
- Cc: nd <nd at arm dot com>
- Date: Thu, 2 Jun 2016 16:08:24 +0300
- Subject: Re: [PATCH][AArch64] Add rawmemchr
- Authentication-results: sourceware.org; auth=none
- References: <AM3PR08MB00888F05E81BE0117C6876AB83420 at AM3PR08MB0088 dot eurprd08 dot prod dot outlook dot com>
On 2016-05-27 16:29, Wilco Dijkstra wrote:
Add a simple rawmemchr implementation. Use strlen for rawmemchr(s, '\0') as
it is the fastest way to search for '\0'. Otherwise use memchr with an infinite size.
This is 3x faster on benchtests for large sizes.
Is memchr on your arch guaranteed to work with an infinite size?
In theory, it's guaranteed by C11 and POSIX (e.g. see
http://open-std.org/jtc1/sc22/wg14/www/docs/n1533.htm ) but IIUC there
is a sentiment in the glibc community that passing to a library function
a size greater than the real size of an object is an error. (Would be
glad to find out I misunderstood something here.)
In practice, memchr with an infinite size is broken at least on x86-64
and i386 -- https://sourceware.org/bugzilla/show_bug.cgi?id=19387 .
--
Alexander Cherepanov