From: Julian Seward Date: Mon, 30 Apr 2007 07:43:01 +0000 (+0000) Subject: Merge r6566 (implement support for AT_FDCWD in openat()) X-Git-Tag: svn/VALGRIND_3_2_3~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a1d28b17535ac47d5de22cacd52ba29b52f5c659;p=thirdparty%2Fvalgrind.git Merge r6566 (implement support for AT_FDCWD in openat()) git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_2_BRANCH@6710 --- diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index bcb0ffc095..ea339d4626 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -2434,7 +2434,7 @@ PRE(sys_openat) int, dfd, const char *, filename, int, flags); } - if (!ML_(fd_allowed)(ARG1, "openat", tid, False)) + if (ARG1 != VKI_AT_FDCWD && !ML_(fd_allowed)(ARG1, "openat", tid, False)) SET_STATUS_Failure( VKI_EBADF ); else PRE_MEM_RASCIIZ( "openat(filename)", ARG2 ); diff --git a/include/vki-amd64-linux.h b/include/vki-amd64-linux.h index e1d05823aa..0187f0d3b5 100644 --- a/include/vki-amd64-linux.h +++ b/include/vki-amd64-linux.h @@ -240,6 +240,8 @@ struct vki_sigcontext { #define VKI_O_NONBLOCK 04000 #define VKI_O_LARGEFILE 0100000 +#define VKI_AT_FDCWD -100 + #define VKI_F_DUPFD 0 /* dup */ #define VKI_F_GETFD 1 /* get close_on_exec */ #define VKI_F_SETFD 2 /* set/clear close_on_exec */ diff --git a/include/vki-ppc32-linux.h b/include/vki-ppc32-linux.h index 3416b944b3..b6cfd2d141 100644 --- a/include/vki-ppc32-linux.h +++ b/include/vki-ppc32-linux.h @@ -300,6 +300,8 @@ struct vki_sigcontext { #define VKI_O_NONBLOCK 04000 #define VKI_O_LARGEFILE 0200000 +#define VKI_AT_FDCWD -100 + #define VKI_F_DUPFD 0 /* dup */ #define VKI_F_GETFD 1 /* get close_on_exec */ #define VKI_F_SETFD 2 /* set/clear close_on_exec */ diff --git a/include/vki-ppc64-linux.h b/include/vki-ppc64-linux.h index f05d0ae7ff..bc82811f6a 100644 --- a/include/vki-ppc64-linux.h +++ b/include/vki-ppc64-linux.h @@ -357,6 +357,8 @@ struct vki_sigcontext { #define VKI_O_NONBLOCK 04000 #define VKI_O_LARGEFILE 0200000 +#define VKI_AT_FDCWD -100 + #define VKI_F_DUPFD 0 /* dup */ #define VKI_F_GETFD 1 /* get close_on_exec */ #define VKI_F_SETFD 2 /* set/clear close_on_exec */ diff --git a/include/vki-x86-linux.h b/include/vki-x86-linux.h index 8c0184a293..05b1ed12c3 100644 --- a/include/vki-x86-linux.h +++ b/include/vki-x86-linux.h @@ -272,6 +272,8 @@ struct vki_sigcontext { #define VKI_O_NONBLOCK 04000 #define VKI_O_LARGEFILE 0100000 +#define VKI_AT_FDCWD -100 + #define VKI_F_DUPFD 0 /* dup */ #define VKI_F_GETFD 1 /* get close_on_exec */ #define VKI_F_SETFD 2 /* set/clear close_on_exec */