OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "sandbox/linux/seccomp-bpf/syscall.h" | 5 #include "sandbox/linux/seccomp-bpf/syscall.h" |
6 | 6 |
7 #include <asm/unistd.h> | 7 #include <asm/unistd.h> |
8 #include <errno.h> | 8 #include <errno.h> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 intptr_t p5, | 272 intptr_t p5, |
273 intptr_t p6, | 273 intptr_t p6, |
274 intptr_t p7) { | 274 intptr_t p7) { |
275 // We rely on "intptr_t" to be the exact size as a "void *". This is | 275 // We rely on "intptr_t" to be the exact size as a "void *". This is |
276 // typically true, but just in case, we add a check. The language | 276 // typically true, but just in case, we add a check. The language |
277 // specification allows platforms some leeway in cases, where | 277 // specification allows platforms some leeway in cases, where |
278 // "sizeof(void *)" is not the same as "sizeof(void (*)())". We expect | 278 // "sizeof(void *)" is not the same as "sizeof(void (*)())". We expect |
279 // that this would only be an issue for IA64, which we are currently not | 279 // that this would only be an issue for IA64, which we are currently not |
280 // planning on supporting. And it is even possible that this would work | 280 // planning on supporting. And it is even possible that this would work |
281 // on IA64, but for lack of actual hardware, I cannot test. | 281 // on IA64, but for lack of actual hardware, I cannot test. |
282 COMPILE_ASSERT(sizeof(void*) == sizeof(intptr_t), | 282 static_assert(sizeof(void*) == sizeof(intptr_t), |
283 pointer_types_and_intptr_must_be_exactly_the_same_size); | 283 "pointer types and intptr_t must be exactly the same size"); |
284 | 284 |
285 // TODO(nedeljko): Enable use of more than six parameters on architectures | 285 // TODO(nedeljko): Enable use of more than six parameters on architectures |
286 // where that makes sense. | 286 // where that makes sense. |
287 #if defined(__mips__) | 287 #if defined(__mips__) |
288 const intptr_t args[8] = {p0, p1, p2, p3, p4, p5, p6, p7}; | 288 const intptr_t args[8] = {p0, p1, p2, p3, p4, p5, p6, p7}; |
289 #else | 289 #else |
290 DCHECK_EQ(p6, 0) << " Support for syscalls with more than six arguments not " | 290 DCHECK_EQ(p6, 0) << " Support for syscalls with more than six arguments not " |
291 "added for this architecture"; | 291 "added for this architecture"; |
292 DCHECK_EQ(p7, 0) << " Support for syscalls with more than six arguments not " | 292 DCHECK_EQ(p7, 0) << " Support for syscalls with more than six arguments not " |
293 "added for this architecture"; | 293 "added for this architecture"; |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
404 } | 404 } |
405 | 405 |
406 // Set an error status so it can be used outside of this function | 406 // Set an error status so it can be used outside of this function |
407 *err_ret = err_stat; | 407 *err_ret = err_stat; |
408 | 408 |
409 return ret; | 409 return ret; |
410 } | 410 } |
411 #endif // defined(__mips__) | 411 #endif // defined(__mips__) |
412 | 412 |
413 } // namespace sandbox | 413 } // namespace sandbox |
OLD | NEW |