]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
implement support for AT_FDCWD in openat()
authorDirk Mueller <daywalker@users.sourceforge.net>
Wed, 31 Jan 2007 23:06:08 +0000 (23:06 +0000)
committerDirk Mueller <daywalker@users.sourceforge.net>
Wed, 31 Jan 2007 23:06:08 +0000 (23:06 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6566

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

index d8cbf878293aa091f3ddce2fa0f7a66e2326d9a3..c34ca68f3691e176671dd018c71975a00cd8e1f3 100644 (file)
@@ -2435,7 +2435,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 63a2c3f48a10cd103f4774bf2a00593417ae3a3f..a5a14d382aa1897826403294b6705b13a09497a0 100644 (file)
@@ -301,6 +301,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 90446c3265fa83fc5173b345454abe45f0bf9a34..5dfde3bf0712f15aefab098bd1046b0465eeb324 100644 (file)
@@ -358,6 +358,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 */