2015-06-25 23:29:51

by Vinson Lee

[permalink] [raw]
Subject: [PATCH] selftests/exec: Fix build on older distros.

From: Vinson Lee <[email protected]>

This patch fixes this build error on CentOS 5.

execveat.c: In function ‘check_execveat_pathmax’:
execveat.c:185: error: ‘AT_EMPTY_PATH’ undeclared (first use in this function)
execveat.c:185: error: (Each undeclared identifier is reported only once
execveat.c:185: error: for each function it appears in.)
execveat.c: In function ‘run_tests’:
execveat.c:221: error: ‘O_PATH’ undeclared (first use in this function)
execveat.c:222: error: ‘O_CLOEXEC’ undeclared (first use in this function)
execveat.c:258: error: ‘AT_EMPTY_PATH’ undeclared (first use in this function)

Cc: [email protected] # 3.19+
Signed-off-by: Vinson Lee <[email protected]>
---
tools/testing/selftests/exec/execveat.c | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/tools/testing/selftests/exec/execveat.c b/tools/testing/selftests/exec/execveat.c
index 8d5d1d2..170148d 100644
--- a/tools/testing/selftests/exec/execveat.c
+++ b/tools/testing/selftests/exec/execveat.c
@@ -20,6 +20,16 @@
#include <string.h>
#include <unistd.h>

+#ifndef AT_EMPTY_PATH
+# define AT_EMPTY_PATH 0x1000
+#endif
+#ifndef O_PATH
+# define O_PATH 010000000
+#endif
+#ifndef O_CLOEXEC
+# define O_CLOEXEC 02000000
+#endif
+
static char longpath[2 * PATH_MAX] = "";
static char *envp[] = { "IN_TEST=yes", NULL, NULL };
static char *argv[] = { "execveat", "99", NULL };
--
1.8.2.1


2015-06-26 06:18:15

by David Drysdale

[permalink] [raw]
Subject: Re: [PATCH] selftests/exec: Fix build on older distros.

On Fri, Jun 26, 2015 at 12:29 AM, Vinson Lee <[email protected]> wrote:
> From: Vinson Lee <[email protected]>
>
> This patch fixes this build error on CentOS 5.
>
> execveat.c: In function ‘check_execveat_pathmax’:
> execveat.c:185: error: ‘AT_EMPTY_PATH’ undeclared (first use in this function)
> execveat.c:185: error: (Each undeclared identifier is reported only once
> execveat.c:185: error: for each function it appears in.)
> execveat.c: In function ‘run_tests’:
> execveat.c:221: error: ‘O_PATH’ undeclared (first use in this function)
> execveat.c:222: error: ‘O_CLOEXEC’ undeclared (first use in this function)
> execveat.c:258: error: ‘AT_EMPTY_PATH’ undeclared (first use in this function)
>
> Cc: [email protected] # 3.19+
> Signed-off-by: Vinson Lee <[email protected]>
> ---
> tools/testing/selftests/exec/execveat.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/tools/testing/selftests/exec/execveat.c b/tools/testing/selftests/exec/execveat.c
> index 8d5d1d2..170148d 100644
> --- a/tools/testing/selftests/exec/execveat.c
> +++ b/tools/testing/selftests/exec/execveat.c
> @@ -20,6 +20,16 @@
> #include <string.h>
> #include <unistd.h>
>
> +#ifndef AT_EMPTY_PATH
> +# define AT_EMPTY_PATH 0x1000
> +#endif
> +#ifndef O_PATH
> +# define O_PATH 010000000
> +#endif
> +#ifndef O_CLOEXEC
> +# define O_CLOEXEC 02000000
> +#endif
> +

Won't those definitions affect the arch-independence of the test?

(The O_* constants are sadly arch-specific:
http://lxr.free-electrons.com/ident?i=O_PATH)

> static char longpath[2 * PATH_MAX] = "";
> static char *envp[] = { "IN_TEST=yes", NULL, NULL };
> static char *argv[] = { "execveat", "99", NULL };
> --
> 1.8.2.1
>

2015-06-26 23:11:42

by Vinson Lee

[permalink] [raw]
Subject: [PATCH v2] selftests/exec: Fix build on older distros.

From: Vinson Lee <[email protected]>

This patch fixes this build error on CentOS 5.

execveat.c: In function ‘check_execveat_pathmax’:
execveat.c:185: error: ‘AT_EMPTY_PATH’ undeclared (first use in this function)
execveat.c:185: error: (Each undeclared identifier is reported only once
execveat.c:185: error: for each function it appears in.)
execveat.c: In function ‘run_tests’:
execveat.c:221: error: ‘O_PATH’ undeclared (first use in this function)
execveat.c:222: error: ‘O_CLOEXEC’ undeclared (first use in this function)
execveat.c:258: error: ‘AT_EMPTY_PATH’ undeclared (first use in this function)

Cc: [email protected] # 3.19+
Signed-off-by: Vinson Lee <[email protected]>
---
tools/testing/selftests/exec/execveat.c | 34 +++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)

diff --git a/tools/testing/selftests/exec/execveat.c b/tools/testing/selftests/exec/execveat.c
index 8d5d1d2..30d2555 100644
--- a/tools/testing/selftests/exec/execveat.c
+++ b/tools/testing/selftests/exec/execveat.c
@@ -20,6 +20,40 @@
#include <string.h>
#include <unistd.h>

+#if defined( __alpha__)
+# ifndef O_CLOEXEC
+# define O_CLOEXEC 010000000
+# endif
+# ifndef O_PATH
+# define O_PATH 040000000
+# endif
+#elif defined(__hppa__)
+# ifndef O_CLOEXEC
+# define O_CLOEXEC 010000000
+# endif
+# ifndef O_PATH
+# define O_PATH 020000000
+# endif
+#elif defined(__sparc__)
+# ifndef O_CLOEXEC
+# define O_CLOEXEC 0x400000
+# endif
+# ifndef O_PATH
+# define O_PATH 0x1000000
+# endif
+#else
+# ifndef O_CLOEXEC
+# define O_CLOEXEC 02000000
+# endif
+# ifndef O_PATH
+# define O_PATH 010000000
+# endif
+#endif
+
+#ifndef AT_EMPTY_PATH
+# define AT_EMPTY_PATH 0x1000
+#endif
+
static char longpath[2 * PATH_MAX] = "";
static char *envp[] = { "IN_TEST=yes", NULL, NULL };
static char *argv[] = { "execveat", "99", NULL };
--
1.8.2.1