mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 19:00:07 +00:00
Fix scandir scandirat namespace (bug 17999).
The POSIX function scandir calls scandirat, which is not a POSIX function. This patch fixes this by making it use __scandirat and making scandirat a weak alias. There are no changes for scandir64 / scandirat64 because those are both _GNU_SOURCE-only functions so no namespace issue arises for them. Tested for x86_64 that the disassembly of installed shared libraries is unchanged by this patch. [BZ #17999] * dirent/scandir.c [!SCANDIR] (SCANDIRAT): Define to __scandirat instead of scandirat. * dirent/scandirat.c [!SCANDIRAT] (SCANDIRAT): Likewise. [!SCANDIRAT] (SCANDIRAT_WEAK_ALIAS): Define. [SCANDIRAT_WEAK_ALIAS] (scandirat): Define as weak alias of __scandirat. * include/dirent.h (scandirat): Do not use libc_hidden_proto. (__scandirat): Declare. Use libc_hidden_proto. * conform/Makefile (test-xfail-POSIX2008/dirent.h/linknamespace): Remove variable. (test-xfail-XOPEN2K8/dirent.h/linknamespace): Likewise.
This commit is contained in:
parent
4629c866ad
commit
40176158f1
15
ChangeLog
15
ChangeLog
@ -1,3 +1,18 @@
|
||||
2015-02-19 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #17999]
|
||||
* dirent/scandir.c [!SCANDIR] (SCANDIRAT): Define to __scandirat
|
||||
instead of scandirat.
|
||||
* dirent/scandirat.c [!SCANDIRAT] (SCANDIRAT): Likewise.
|
||||
[!SCANDIRAT] (SCANDIRAT_WEAK_ALIAS): Define.
|
||||
[SCANDIRAT_WEAK_ALIAS] (scandirat): Define as weak alias of
|
||||
__scandirat.
|
||||
* include/dirent.h (scandirat): Do not use libc_hidden_proto.
|
||||
(__scandirat): Declare. Use libc_hidden_proto.
|
||||
* conform/Makefile (test-xfail-POSIX2008/dirent.h/linknamespace):
|
||||
Remove variable.
|
||||
(test-xfail-XOPEN2K8/dirent.h/linknamespace): Likewise.
|
||||
|
||||
2015-02-18 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #15319]
|
||||
|
2
NEWS
2
NEWS
@ -10,7 +10,7 @@ Version 2.22
|
||||
* The following bugs are resolved with this release:
|
||||
|
||||
4719, 15319, 15467, 15790, 16560, 17569, 17792, 17912, 17932, 17944,
|
||||
17949, 17964, 17965, 17967, 17969, 17978, 17987, 17991, 17996.
|
||||
17949, 17964, 17965, 17967, 17969, 17978, 17987, 17991, 17996, 17999.
|
||||
|
||||
Version 2.21
|
||||
|
||||
|
@ -393,13 +393,11 @@ test-xfail-XOPEN2K/syslog.h/linknamespace = yes
|
||||
test-xfail-XOPEN2K/ucontext.h/linknamespace = yes
|
||||
test-xfail-XOPEN2K/unistd.h/linknamespace = yes
|
||||
test-xfail-XOPEN2K/wordexp.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/dirent.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/grp.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/netdb.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/regex.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/semaphore.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/unistd.h/linknamespace = yes
|
||||
test-xfail-XOPEN2K8/dirent.h/linknamespace = yes
|
||||
test-xfail-XOPEN2K8/fmtmsg.h/linknamespace = yes
|
||||
test-xfail-XOPEN2K8/grp.h/linknamespace = yes
|
||||
test-xfail-XOPEN2K8/netdb.h/linknamespace = yes
|
||||
|
@ -28,7 +28,7 @@
|
||||
|
||||
#ifndef SCANDIR
|
||||
# define SCANDIR scandir
|
||||
# define SCANDIRAT scandirat
|
||||
# define SCANDIRAT __scandirat
|
||||
# define DIRENT_TYPE struct dirent
|
||||
#endif
|
||||
|
||||
|
@ -30,9 +30,10 @@
|
||||
#include <bits/libc-lock.h>
|
||||
|
||||
#ifndef SCANDIRAT
|
||||
# define SCANDIRAT scandirat
|
||||
# define SCANDIRAT __scandirat
|
||||
# define READDIR __readdir
|
||||
# define DIRENT_TYPE struct dirent
|
||||
# define SCANDIRAT_WEAK_ALIAS
|
||||
#endif
|
||||
|
||||
#ifndef SKIP_SCANDIR_CANCEL
|
||||
@ -148,6 +149,9 @@ SCANDIRAT (dfd, dir, namelist, select, cmp)
|
||||
return c.cnt;
|
||||
}
|
||||
libc_hidden_def (SCANDIRAT)
|
||||
#ifdef SCANDIRAT_WEAK_ALIAS
|
||||
weak_alias (__scandirat, scandirat)
|
||||
#endif
|
||||
|
||||
#ifdef _DIRENT_MATCHES_DIRENT64
|
||||
weak_alias (scandirat, scandirat64)
|
||||
|
@ -50,7 +50,8 @@ extern void __scandir_cancel_handler (void *arg);
|
||||
extern __typeof (rewinddir) __rewinddir;
|
||||
|
||||
libc_hidden_proto (__rewinddir)
|
||||
libc_hidden_proto (scandirat)
|
||||
extern __typeof (scandirat) __scandirat;
|
||||
libc_hidden_proto (__scandirat)
|
||||
libc_hidden_proto (scandirat64)
|
||||
# endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user