[PATCH] getdents: Fix mips64 build

Atsushi Nemoto anemo at mba.ocn.ne.jp
Fri Jan 29 15:24:37 UTC 2010

On Wed, 27 Jan 2010 07:14:08 +0100, Carmelo AMOROSO <carmelo.amoroso at st.com> wrote:
> I would re-write your patch in a simpler way.
> We already have the following
> 136 #if defined __UCLIBC_HAS_LFS__ && ! defined __NR_getdents64
> 137 attribute_hidden strong_alias(__getdents,__getdents64)
> 138 #endif
> I think that it's simpler to move in the proper place this statement.

Thanks, indeed.  If we came into "#elif WORDSIZE == 32" block, above
condition never be true.  So we can just move this statement out of
"#if...#elif...#elif...#endif" block.  Here is a revised patch.

From: Atsushi Nemoto <anemo at mba.ocn.ne.jp>
Subject: [PATCH] getdents: Fix mips64 build

Some archs (such as mips64) do not have getdents64 syscall but have
getdents syscall.  Define alias for it.

This fixes regression from

This is once done by commit e8b1c674.  But after the commit 33bcf733
("Use getdents syscall if kernel provide supports for this instead of
relying upon getdents64."), if __ASSUME_GETDENTS32_D_TYPE was defined
the alias for getdents64 is not defined.  The macro
__ASSUME_GETDENTS32_D_TYPE had been effectively ignored until
but the commit 0f0f20ab ("Move kernel-features.h header from the
linuxthread directory to a common one...") really enables it.

Signed-off-by: Atsushi Nemoto <anemo at mba.ocn.ne.jp>
 libc/sysdeps/linux/common/getdents.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/libc/sysdeps/linux/common/getdents.c b/libc/sysdeps/linux/common/getdents.c
index 6a38772..5dda190 100644
--- a/libc/sysdeps/linux/common/getdents.c
+++ b/libc/sysdeps/linux/common/getdents.c
@@ -133,10 +133,6 @@ ssize_t __getdents (int fd, char *buf, size_t nbytes)
     return (char *) dp - buf;
-#if defined __UCLIBC_HAS_LFS__ && ! defined __NR_getdents64
-attribute_hidden strong_alias(__getdents,__getdents64)
 #elif __WORDSIZE == 32
 extern __typeof(__getdents) __getdents64 attribute_hidden;
@@ -167,4 +163,8 @@ ssize_t __getdents (int fd, char *buf, size_t nbytes)
+#if defined __UCLIBC_HAS_LFS__ && ! defined __NR_getdents64
+attribute_hidden strong_alias(__getdents,__getdents64)

More information about the uClibc mailing list