PATCH: Add and use __scandirat/__scandirat64
H.J. Lu
hongjiu.lu@intel.com
Thu Aug 11 17:11:00 GMT 2011
Hi,
The current glibc failed elf/check-localplt.out:
+libc.so: scandirat
+libc.so: scandirat64
on Linux/ia32 and
+libc.so: scandirat
on Linux/x86-64. This patch adds and uses __scandirat/__scandirat64.
H.J.
---
2011-08-11 H.J. Lu <hongjiu.lu@intel.com>
* dirent/scandir.c (SCANDIRAT): Default to __scandirat.
* dirent/scandir64.c (SCANDIRAT): Changed to __scandirat64.
* dirent/scandirat.c (SCANDIRAT): Default to __scandirat.
(scandirat): Make it the alias of __scandirat.
* include/dirent.h (__scandirat): New.
* sysdeps/wordsize-64/scandirat.c (__scandirat64): New.
diff --git a/dirent/scandir.c b/dirent/scandir.c
index 3f69a8d..88a7069 100644
--- a/dirent/scandir.c
+++ b/dirent/scandir.c
@@ -22,7 +22,7 @@
#ifndef SCANDIR
# define SCANDIR scandir
-# define SCANDIRAT scandirat
+# define SCANDIRAT __scandirat
# define DIRENT_TYPE struct dirent
#endif
diff --git a/dirent/scandir64.c b/dirent/scandir64.c
index 21a936e..d0cb7b1 100644
--- a/dirent/scandir64.c
+++ b/dirent/scandir64.c
@@ -19,7 +19,7 @@
#include <dirent.h>
#define SCANDIR scandir64
-#define SCANDIRAT scandirat64
+#define SCANDIRAT __scandirat64
#define DIRENT_TYPE struct dirent64
#include <dirent/scandir.c>
diff --git a/dirent/scandirat.c b/dirent/scandirat.c
index e6f5ece..39dd3bb 100644
--- a/dirent/scandirat.c
+++ b/dirent/scandirat.c
@@ -24,9 +24,10 @@
#include <bits/libc-lock.h>
#ifndef SCANDIRAT
-# define SCANDIRAT scandirat
+# define SCANDIRAT __scandirat
# define READDIR __readdir
# define DIRENT_TYPE struct dirent
+weak_alias (__scandirat, scandirat)
#endif
#ifndef SKIP_SCANDIR_CANCEL
diff --git a/include/dirent.h b/include/dirent.h
index 9ed5876..6c50d4d 100644
--- a/include/dirent.h
+++ b/include/dirent.h
@@ -27,6 +27,11 @@ extern int __scandir64 (__const char * __dir,
int (*__selector) (__const struct dirent64 *),
int (*__cmp) (__const struct dirent64 **,
__const struct dirent64 **));
+extern int __scandirat (int __dfd, __const char * __dir,
+ struct dirent *** __namelist,
+ int (*__selector) (__const struct dirent *),
+ int (*__cmp) (__const struct dirent **,
+ __const struct dirent **));
extern int __scandirat64 (int __dfd, __const char * __dir,
struct dirent64 *** __namelist,
int (*__selector) (__const struct dirent64 *),
diff --git a/sysdeps/wordsize-64/scandirat.c b/sysdeps/wordsize-64/scandirat.c
index 02b8fde..4cbd35d 100644
--- a/sysdeps/wordsize-64/scandirat.c
+++ b/sysdeps/wordsize-64/scandirat.c
@@ -1,6 +1,9 @@
#define scandirat64 scandirat64_renamed
+#define __scandirat64 __scandirat64_renamed
#include "../../dirent/scandirat.c"
#undef scandirat64
-weak_alias (scandirat, scandirat64)
+#undef __scandirat64
+weak_alias (__scandirat, scandirat64)
+weak_alias (__scandirat, __scandirat64)
More information about the Libc-alpha
mailing list