+2015-02-18 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #17996]
+ * include/search.h (hcreate_r): Don't use libc_hidden_proto.
+ (hdestroy_r): Likewise.
+ (hsearch_r): Likewise.
+ (__hcreate_r): Declare and use libc_hidden_proto.
+ (__hdestroy_r): Likewise.
+ (__hsearch_r): Likewise.
+ * misc/hsearch.c (hsearch): Call __hsearch_r instead of hsearch_r.
+ (hcreate): Call __hcreate_r instead of hcreate_r.
+ (__hdestroy): Call __hdestroy_r instead of hdestroy_r.
+ * misc/hsearch_r.c (hcreate_r): Rename to __hcreate_r and define
+ as weak alias of __hcreate_r.
+ (hdestroy_r): Rename to __hdestroy_r and define as weak alias of
+ __hdestroy_r.
+ (hsearch_r): Rename to __hsearch_r and define as weak alias of
+ __hsearch_r.
+ * conform/Makefile (test-xfail-XPG3/search.h/linknamespace):
+ Remove variable.
+ (test-xfail-XPG4/search.h/linknamespace): Likewise.
+ (test-xfail-UNIX98/search.h/linknamespace): Likewise.
+ (test-xfail-XOPEN2K/search.h/linknamespace): Likewise.
+ (test-xfail-XOPEN2K8/search.h/linknamespace): Likewise.
+
2015-02-18 Siddhesh Poyarekar <siddhesh@redhat.com>
* malloc/malloc.c (__libc_malloc): Consolidate arena_lookup and
* The following bugs are resolved with this release:
4719, 15467, 15790, 16560, 17569, 17792, 17912, 17932, 17944, 17949,
- 17964, 17965, 17967, 17969, 17978, 17987, 17991.
+ 17964, 17965, 17967, 17969, 17978, 17987, 17991, 17996.
\f
Version 2.21
test-xfail-XPG3/fnmatch.h/linknamespace = yes
test-xfail-XPG3/glob.h/linknamespace = yes
test-xfail-XPG3/regex.h/linknamespace = yes
-test-xfail-XPG3/search.h/linknamespace = yes
test-xfail-XPG3/stdio.h/linknamespace = yes
test-xfail-XPG3/unistd.h/linknamespace = yes
test-xfail-XPG3/wordexp.h/linknamespace = yes
test-xfail-XPG4/glob.h/linknamespace = yes
test-xfail-XPG4/netdb.h/linknamespace = yes
test-xfail-XPG4/regex.h/linknamespace = yes
-test-xfail-XPG4/search.h/linknamespace = yes
test-xfail-XPG4/stdio.h/linknamespace = yes
test-xfail-XPG4/stdlib.h/linknamespace = yes
test-xfail-XPG4/syslog.h/linknamespace = yes
test-xfail-UNIX98/mqueue.h/linknamespace = yes
test-xfail-UNIX98/netdb.h/linknamespace = yes
test-xfail-UNIX98/regex.h/linknamespace = yes
-test-xfail-UNIX98/search.h/linknamespace = yes
test-xfail-UNIX98/stdio.h/linknamespace = yes
test-xfail-UNIX98/stdlib.h/linknamespace = yes
test-xfail-UNIX98/syslog.h/linknamespace = yes
test-xfail-XOPEN2K/glob.h/linknamespace = yes
test-xfail-XOPEN2K/netdb.h/linknamespace = yes
test-xfail-XOPEN2K/regex.h/linknamespace = yes
-test-xfail-XOPEN2K/search.h/linknamespace = yes
test-xfail-XOPEN2K/signal.h/linknamespace = yes
test-xfail-XOPEN2K/stdlib.h/linknamespace = yes
test-xfail-XOPEN2K/sys/wait.h/linknamespace = yes
test-xfail-XOPEN2K8/netdb.h/linknamespace = yes
test-xfail-XOPEN2K8/pwd.h/linknamespace = yes
test-xfail-XOPEN2K8/regex.h/linknamespace = yes
-test-xfail-XOPEN2K8/search.h/linknamespace = yes
test-xfail-XOPEN2K8/syslog.h/linknamespace = yes
test-xfail-XOPEN2K8/unistd.h/linknamespace = yes
#include <misc/search.h>
#ifndef _ISOMAC
-libc_hidden_proto (hcreate_r)
-libc_hidden_proto (hdestroy_r)
-libc_hidden_proto (hsearch_r)
+extern __typeof (hcreate_r) __hcreate_r;
+libc_hidden_proto (__hcreate_r)
+extern __typeof (hdestroy_r) __hdestroy_r;
+libc_hidden_proto (__hdestroy_r)
+extern __typeof (hsearch_r) __hsearch_r;
+libc_hidden_proto (__hsearch_r)
libc_hidden_proto (lfind)
/* Now define the internal interfaces. */
{
ENTRY *result;
- (void) hsearch_r (item, action, &result, &htab);
+ (void) __hsearch_r (item, action, &result, &htab);
return result;
}
hcreate (nel)
size_t nel;
{
- return hcreate_r (nel, &htab);
+ return __hcreate_r (nel, &htab);
}
void
__hdestroy (void)
{
- hdestroy_r (&htab);
+ __hdestroy_r (&htab);
}
weak_alias (__hdestroy, hdestroy)
The contents of the table is zeroed, especially the field used
becomes zero. */
int
-hcreate_r (nel, htab)
+__hcreate_r (nel, htab)
size_t nel;
struct hsearch_data *htab;
{
/* everything went alright */
return 1;
}
-libc_hidden_def (hcreate_r)
+libc_hidden_def (__hcreate_r)
+weak_alias (__hcreate_r, hcreate_r)
/* After using the hash table it has to be destroyed. The used memory can
be freed and the local static variable can be marked as not used. */
void
-hdestroy_r (htab)
+__hdestroy_r (htab)
struct hsearch_data *htab;
{
/* Test for correct arguments. */
/* the sign for an existing table is an value != NULL in htable */
htab->table = NULL;
}
-libc_hidden_def (hdestroy_r)
+libc_hidden_def (__hdestroy_r)
+weak_alias (__hdestroy_r, hdestroy_r)
/* This is the search function. It uses double hashing with open addressing.
equality of the stored and the parameter value. This helps to prevent
unnecessary expensive calls of strcmp. */
int
-hsearch_r (item, action, retval, htab)
+__hsearch_r (item, action, retval, htab)
ENTRY item;
ACTION action;
ENTRY **retval;
*retval = NULL;
return 0;
}
-libc_hidden_def (hsearch_r)
+libc_hidden_def (__hsearch_r)
+weak_alias (__hsearch_r, hsearch_r)