]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Merge r6566 (implement support for AT_FDCWD in openat())
authorJulian Seward <jseward@acm.org>
Mon, 30 Apr 2007 07:43:01 +0000 (07:43 +0000)
committerJulian Seward <jseward@acm.org>
Mon, 30 Apr 2007 07:43:01 +0000 (07:43 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_2_BRANCH@6710

coregrind/m_syswrap/syswrap-linux.c
include/vki-amd64-linux.h
include/vki-ppc32-linux.h
include/vki-ppc64-linux.h
include/vki-x86-linux.h

index bcb0ffc095b25d029bfc1ae719472d7833d61f5b..ea339d46268c3130b05af961bca6aaf46070ec11 100644 (file)
@@ -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 );
index e1d05823aa77dca93091dabef4f3a75ec00af723..0187f0d3b5fd2f9785e795e861d606aff124bfab 100644 (file)
@@ -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 */
index 3416b944b3a48edf57f8d30c09c3c8238c235a05..b6cfd2d1411da2aaae2e563bcc035b5a816ac909 100644 (file)
@@ -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 */
index f05d0ae7fffe575999b2a2ae442bbbf6bee3bb3d..bc82811f6a9f56ec7229a181e8c41a4b4329194b 100644 (file)
@@ -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 */
index 8c0184a29349d72bf641dfd43b1eb0f057d418d5..05b1ed12c3be47193dae09e07a0fcf91c1b85444 100644 (file)
@@ -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 */