| 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 <fcntl.h> | 8 #include <fcntl.h> |
| 9 #include <sys/mman.h> | 9 #include <sys/mman.h> |
| 10 #include <sys/syscall.h> | 10 #include <sys/syscall.h> |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 #if defined(__i386__) | 47 #if defined(__i386__) |
| 48 EXPECT_EQ(0x80CDu, ((uint16_t*)Syscall::Call(-1))[-1]); // INT 0x80 | 48 EXPECT_EQ(0x80CDu, ((uint16_t*)Syscall::Call(-1))[-1]); // INT 0x80 |
| 49 #elif defined(__x86_64__) | 49 #elif defined(__x86_64__) |
| 50 EXPECT_EQ(0x050Fu, ((uint16_t*)Syscall::Call(-1))[-1]); // SYSCALL | 50 EXPECT_EQ(0x050Fu, ((uint16_t*)Syscall::Call(-1))[-1]); // SYSCALL |
| 51 #elif defined(__arm__) | 51 #elif defined(__arm__) |
| 52 #if defined(__thumb__) | 52 #if defined(__thumb__) |
| 53 EXPECT_EQ(0xDF00u, ((uint16_t*)Syscall::Call(-1))[-1]); // SWI 0 | 53 EXPECT_EQ(0xDF00u, ((uint16_t*)Syscall::Call(-1))[-1]); // SWI 0 |
| 54 #else | 54 #else |
| 55 EXPECT_EQ(0xEF000000u, ((uint32_t*)Syscall::Call(-1))[-1]); // SVC 0 | 55 EXPECT_EQ(0xEF000000u, ((uint32_t*)Syscall::Call(-1))[-1]); // SVC 0 |
| 56 #endif | 56 #endif |
| 57 #elif defined(__mips__) |
| 58 // Opcode for MIPS sycall is in the lower 16-bits |
| 59 EXPECT_EQ(0x0cu, (((uint32_t*)Syscall::Call(-1))[-1]) & 0x0000FFFF); |
| 57 #else | 60 #else |
| 58 #warning Incomplete test case; need port for target platform | 61 #warning Incomplete test case; need port for target platform |
| 59 #endif | 62 #endif |
| 60 } | 63 } |
| 61 | 64 |
| 62 TEST(Syscall, TrivialSyscallNoArgs) { | 65 TEST(Syscall, TrivialSyscallNoArgs) { |
| 63 // Test that we can do basic system calls | 66 // Test that we can do basic system calls |
| 64 EXPECT_EQ(Syscall::Call(__NR_getpid), syscall(__NR_getpid)); | 67 EXPECT_EQ(Syscall::Call(__NR_getpid), syscall(__NR_getpid)); |
| 65 } | 68 } |
| 66 | 69 |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 | 210 |
| 208 // Clean up | 211 // Clean up |
| 209 EXPECT_EQ(0, Syscall::Call(__NR_munmap, addr2, 8192L)); | 212 EXPECT_EQ(0, Syscall::Call(__NR_munmap, addr2, 8192L)); |
| 210 EXPECT_EQ(0, Syscall::Call(__NR_munmap, addr3, 4096L)); | 213 EXPECT_EQ(0, Syscall::Call(__NR_munmap, addr3, 4096L)); |
| 211 EXPECT_EQ(0, IGNORE_EINTR(Syscall::Call(__NR_close, fd))); | 214 EXPECT_EQ(0, IGNORE_EINTR(Syscall::Call(__NR_close, fd))); |
| 212 } | 215 } |
| 213 | 216 |
| 214 } // namespace | 217 } // namespace |
| 215 | 218 |
| 216 } // namespace sandbox | 219 } // namespace sandbox |
| OLD | NEW |