[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
dirfd on AIX 7.1BETA
From: |
Bruno Haible |
Subject: |
dirfd on AIX 7.1BETA |
Date: |
Fri, 30 Jul 2010 23:55:31 +0200 |
User-agent: |
KMail/1.9.9 |
> 2. dirfd
>
> xlc -g -o test-canonicalize-lgpl test-canonicalize-lgpl.o
> ../gllib/libgnu.a
> ld: 0711-317 ERROR: Undefined symbol: .dirfd
The logs say:
checking for dirfd... no
checking whether dirfd is declared... (cached) yes
checking whether dirfd is a macro... no
The m4/dirfd.m4 macro is not yet prepared for this situation.
This should fix it. (Jim, I expect you agree with this commit, since
it merely applies the common gnulib idioms?)
2010-07-30 Bruno Haible <address@hidden>
dirfd: Avoid link error on AIX 7.1.
* lib/dirent.in.h (dirfd): Use modern idiom with REPLACE_DIRFD.
* m4/dirfd.m4 (gl_FUNC_DIRFD): If the function is declared but does not
exist, set REPLACE_DIRFD.
* m4/dirent_h.m4 (gl_DIRENT_H_DEFAULTS): Initialize REPLACE_DIRFD.
* modules/dirent (Makefile.am): Substitute REPLACE_DIRFD.
* doc/posix-functions/dirfd.texi: Update.
Reported by Rainer Tammer.
--- lib/dirent.in.h.orig Fri Jul 30 23:53:06 2010
+++ lib/dirent.in.h Fri Jul 30 23:37:57 2010
@@ -50,11 +50,22 @@
_GL_CXXALIASWARN (closedir);
#if @GNULIB_DIRFD@
-# if address@hidden@ && !defined dirfd
/* Return the file descriptor associated with the given directory stream,
or -1 if none exists. */
-_GL_EXTERN_C int dirfd (DIR *dir) _GL_ARG_NONNULL ((1));
+# if @REPLACE_DIRFD@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef dirfd
+# define dirfd rpl_dirfd
+# endif
+_GL_FUNCDECL_RPL (dirfd, int, (DIR *) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (dirfd, int, (DIR *));
+# else
+# if !(@HAVE_DECL_DIRFD@ || defined dirfd)
+_GL_FUNCDECL_SYS (dirfd, int, (DIR *) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (dirfd, int, (DIR *));
# endif
+_GL_CXXALIASWARN (dirfd);
#elif defined GNULIB_POSIXCHECK
# undef dirfd
# if HAVE_RAW_DECL_DIRFD
--- m4/dirfd.m4.orig Fri Jul 30 23:53:06 2010
+++ m4/dirfd.m4 Fri Jul 30 23:45:34 2010
@@ -1,4 +1,4 @@
-# serial 17 -*- Autoconf -*-
+# serial 18 -*- Autoconf -*-
dnl Find out how to get the file descriptor associated with an open DIR*.
@@ -40,11 +40,13 @@
gl_cv_func_dirfd_macro=yes,
gl_cv_func_dirfd_macro=no)])
- # Use the replacement only if we have no function, macro,
- # or declaration with that name.
- if test $ac_cv_func_dirfd,$ac_cv_have_decl_dirfd,$gl_cv_func_dirfd_macro \
- = no,no,no; then
- AC_REPLACE_FUNCS([dirfd])
+ # Use the replacement only if we have no function or macro with that name.
+ if test $ac_cv_func_dirfd,$gl_cv_func_dirfd_macro = no,no; then
+ if test $ac_cv_have_decl_dirfd = yes; then
+ # If the system declares dirfd already, let's declare rpl_dirfd instead.
+ REPLACE_DIRFD=1
+ fi
+ AC_LIBOBJ([dirfd])
AC_CACHE_CHECK(
[how to get the file descriptor associated with an open DIR*],
gl_cv_sys_dir_fd_member_name,
--- m4/dirent_h.m4.orig Fri Jul 30 23:53:06 2010
+++ m4/dirent_h.m4 Fri Jul 30 23:39:00 2010
@@ -1,4 +1,4 @@
-# dirent_h.m4 serial 12
+# dirent_h.m4 serial 13
dnl Copyright (C) 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -51,6 +51,7 @@
HAVE_SCANDIR=1; AC_SUBST([HAVE_SCANDIR])
HAVE_ALPHASORT=1; AC_SUBST([HAVE_ALPHASORT])
REPLACE_CLOSEDIR=0; AC_SUBST([REPLACE_CLOSEDIR])
+ REPLACE_DIRFD=0; AC_SUBST([REPLACE_DIRFD])
REPLACE_FDOPENDIR=0; AC_SUBST([REPLACE_FDOPENDIR])
REPLACE_OPENDIR=0; AC_SUBST([REPLACE_OPENDIR])
])
--- modules/dirent.orig Fri Jul 30 23:53:06 2010
+++ modules/dirent Fri Jul 30 23:38:34 2010
@@ -36,6 +36,7 @@
-e 's|@''HAVE_SCANDIR''@|$(HAVE_SCANDIR)|g' \
-e 's|@''HAVE_ALPHASORT''@|$(HAVE_ALPHASORT)|g' \
-e 's|@''REPLACE_CLOSEDIR''@|$(REPLACE_CLOSEDIR)|g' \
+ -e 's|@''REPLACE_DIRFD''@|$(REPLACE_DIRFD)|g' \
-e 's|@''REPLACE_FDOPENDIR''@|$(REPLACE_FDOPENDIR)|g' \
-e 's|@''REPLACE_OPENDIR''@|$(REPLACE_OPENDIR)|g' \
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
--- doc/posix-functions/dirfd.texi.orig Fri Jul 30 23:53:06 2010
+++ doc/posix-functions/dirfd.texi Fri Jul 30 23:52:27 2010
@@ -10,7 +10,7 @@
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, OSF/1 5.1, Solaris 10, mingw.
+AIX 7.1, HP-UX 11, OSF/1 5.1, Solaris 10, mingw.
@end itemize
Portability problems not fixed by Gnulib:
- Re: M4 1.4.14 on AIX 7.1BETA, (continued)
- Re: M4 1.4.14 on AIX 7.1BETA, Rainer Tammer, 2010/07/30
- readlink on AIX 7.1BETA, Bruno Haible, 2010/07/30
- Re: readlink on AIX 7.1BETA, Rainer Tammer, 2010/07/30
- Re: readlink on AIX 7.1BETA, Eric Blake, 2010/07/30
- Re: readlink on AIX 7.1BETA, Bruno Haible, 2010/07/31
- Re: readlink on AIX 7.1BETA, Bruno Haible, 2010/07/31
- poll on AIX 7.1BETA, Bruno Haible, 2010/07/30
- dirfd on AIX 7.1BETA,
Bruno Haible <=
- Re: dirfd on AIX 7.1BETA, Rainer Tammer, 2010/07/31
- Re: dirfd on AIX 7.1BETA, Bruno Haible, 2010/07/31
- Re: dirfd on AIX 7.1BETA, Rainer Tammer, 2010/07/31
- iconv test on AIX 7.1BETA, Bruno Haible, 2010/07/30
- Re: iconv test on AIX 7.1BETA, Rainer Tammer, 2010/07/31
- Re: iconv test on AIX 7.1BETA, Bruno Haible, 2010/07/31
- Re: iconv test on AIX 7.1BETA, Rainer Tammer, 2010/07/31
- Re: iconv test on AIX 7.1BETA, Bruno Haible, 2010/07/31
- Re: iconv test on AIX 7.1BETA, Rainer Tammer, 2010/07/31
- linkat test on AIX 7.1BETA, Bruno Haible, 2010/07/30