| Index: sandbox/linux/seccomp-bpf/syscall.h
|
| diff --git a/sandbox/linux/seccomp-bpf/syscall.h b/sandbox/linux/seccomp-bpf/syscall.h
|
| index 39b1bcaa4a54686a72956baedfcc3e9542f0a261..f63516ba1c8695faf53bcb28c143da40d8be29d5 100644
|
| --- a/sandbox/linux/seccomp-bpf/syscall.h
|
| +++ b/sandbox/linux/seccomp-bpf/syscall.h
|
| @@ -16,9 +16,12 @@ namespace playground2 {
|
| // Passing "nr" as "-1" computes the "magic" return address. Passing any
|
| // other value invokes the appropriate system call.
|
| intptr_t SandboxSyscall(int nr,
|
| - intptr_t p0, intptr_t p1, intptr_t p2,
|
| - intptr_t p3, intptr_t p4, intptr_t p5);
|
| -
|
| + intptr_t p0,
|
| + intptr_t p1,
|
| + intptr_t p2,
|
| + intptr_t p3,
|
| + intptr_t p4,
|
| + intptr_t p5);
|
|
|
| // System calls can take up to six parameters. Traditionally, glibc
|
| // implements this property by using variadic argument lists. This works, but
|
| @@ -37,19 +40,30 @@ intptr_t SandboxSyscall(int nr,
|
| // easier to read as it hides implementation details.
|
| #if __cplusplus >= 201103 // C++11
|
|
|
| -template<class T0 = intptr_t, class T1 = intptr_t, class T2 = intptr_t,
|
| - class T3 = intptr_t, class T4 = intptr_t, class T5 = intptr_t>
|
| -inline intptr_t SandboxSyscall(int nr,
|
| - T0 p0 = 0, T1 p1 = 0, T2 p2 = 0,
|
| - T3 p3 = 0, T4 p4 = 0, T5 p5 = 0)
|
| - __attribute__((always_inline));
|
| -
|
| -template<class T0, class T1, class T2, class T3, class T4, class T5>
|
| +template <class T0 = intptr_t,
|
| + class T1 = intptr_t,
|
| + class T2 = intptr_t,
|
| + class T3 = intptr_t,
|
| + class T4 = intptr_t,
|
| + class T5 = intptr_t>
|
| inline intptr_t SandboxSyscall(int nr,
|
| - T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) {
|
| + T0 p0 = 0,
|
| + T1 p1 = 0,
|
| + T2 p2 = 0,
|
| + T3 p3 = 0,
|
| + T4 p4 = 0,
|
| + T5 p5 = 0) __attribute__((always_inline));
|
| +
|
| +template <class T0, class T1, class T2, class T3, class T4, class T5>
|
| +inline intptr_t
|
| +SandboxSyscall(int nr, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) {
|
| return SandboxSyscall(nr,
|
| - (intptr_t)p0, (intptr_t)p1, (intptr_t)p2,
|
| - (intptr_t)p3, (intptr_t)p4, (intptr_t)p5);
|
| + (intptr_t)p0,
|
| + (intptr_t)p1,
|
| + (intptr_t)p2,
|
| + (intptr_t)p3,
|
| + (intptr_t)p4,
|
| + (intptr_t)p5);
|
| }
|
|
|
| #else // Pre-C++11
|
| @@ -58,60 +72,61 @@ inline intptr_t SandboxSyscall(int nr,
|
| // expressing what we are doing here. Delete the fall-back code for older
|
| // compilers as soon as we have fully switched to C++11
|
|
|
| -template<class T0, class T1, class T2, class T3, class T4, class T5>
|
| -inline intptr_t SandboxSyscall(int nr,
|
| - T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5)
|
| - __attribute__((always_inline));
|
| -template<class T0, class T1, class T2, class T3, class T4, class T5>
|
| -inline intptr_t SandboxSyscall(int nr,
|
| - T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) {
|
| +template <class T0, class T1, class T2, class T3, class T4, class T5>
|
| +inline intptr_t SandboxSyscall(int nr, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5)
|
| + __attribute__((always_inline));
|
| +template <class T0, class T1, class T2, class T3, class T4, class T5>
|
| +inline intptr_t
|
| +SandboxSyscall(int nr, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) {
|
| return SandboxSyscall(nr,
|
| - (intptr_t)p0, (intptr_t)p1, (intptr_t)p2,
|
| - (intptr_t)p3, (intptr_t)p4, (intptr_t)p5);
|
| + (intptr_t)p0,
|
| + (intptr_t)p1,
|
| + (intptr_t)p2,
|
| + (intptr_t)p3,
|
| + (intptr_t)p4,
|
| + (intptr_t)p5);
|
| }
|
|
|
| -template<class T0, class T1, class T2, class T3, class T4>
|
| +template <class T0, class T1, class T2, class T3, class T4>
|
| inline intptr_t SandboxSyscall(int nr, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4)
|
| - __attribute__((always_inline));
|
| -template<class T0, class T1, class T2, class T3, class T4>
|
| + __attribute__((always_inline));
|
| +template <class T0, class T1, class T2, class T3, class T4>
|
| inline intptr_t SandboxSyscall(int nr, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4) {
|
| return SandboxSyscall(nr, p0, p1, p2, p3, p4, 0);
|
| }
|
|
|
| -template<class T0, class T1, class T2, class T3>
|
| +template <class T0, class T1, class T2, class T3>
|
| inline intptr_t SandboxSyscall(int nr, T0 p0, T1 p1, T2 p2, T3 p3)
|
| - __attribute__((always_inline));
|
| -template<class T0, class T1, class T2, class T3>
|
| + __attribute__((always_inline));
|
| +template <class T0, class T1, class T2, class T3>
|
| inline intptr_t SandboxSyscall(int nr, T0 p0, T1 p1, T2 p2, T3 p3) {
|
| return SandboxSyscall(nr, p0, p1, p2, p3, 0, 0);
|
| }
|
|
|
| -template<class T0, class T1, class T2>
|
| +template <class T0, class T1, class T2>
|
| inline intptr_t SandboxSyscall(int nr, T0 p0, T1 p1, T2 p2)
|
| - __attribute__((always_inline));
|
| -template<class T0, class T1, class T2>
|
| + __attribute__((always_inline));
|
| +template <class T0, class T1, class T2>
|
| inline intptr_t SandboxSyscall(int nr, T0 p0, T1 p1, T2 p2) {
|
| return SandboxSyscall(nr, p0, p1, p2, 0, 0, 0);
|
| }
|
|
|
| -template<class T0, class T1>
|
| +template <class T0, class T1>
|
| inline intptr_t SandboxSyscall(int nr, T0 p0, T1 p1)
|
| - __attribute__((always_inline));
|
| -template<class T0, class T1>
|
| + __attribute__((always_inline));
|
| +template <class T0, class T1>
|
| inline intptr_t SandboxSyscall(int nr, T0 p0, T1 p1) {
|
| return SandboxSyscall(nr, p0, p1, 0, 0, 0, 0);
|
| }
|
|
|
| -template<class T0>
|
| -inline intptr_t SandboxSyscall(int nr, T0 p0)
|
| - __attribute__((always_inline));
|
| -template<class T0>
|
| +template <class T0>
|
| +inline intptr_t SandboxSyscall(int nr, T0 p0) __attribute__((always_inline));
|
| +template <class T0>
|
| inline intptr_t SandboxSyscall(int nr, T0 p0) {
|
| return SandboxSyscall(nr, p0, 0, 0, 0, 0, 0);
|
| }
|
|
|
| -inline intptr_t SandboxSyscall(int nr)
|
| - __attribute__((always_inline));
|
| +inline intptr_t SandboxSyscall(int nr) __attribute__((always_inline));
|
| inline intptr_t SandboxSyscall(int nr) {
|
| return SandboxSyscall(nr, 0, 0, 0, 0, 0, 0);
|
| }
|
|
|