This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH: Add and use __scandirat/__scandirat64


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)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]