| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #define SYS_SYSCALL_ENTRYPOINT "playground$syscallEntryPoint" | 5 #define SYS_SYSCALL_ENTRYPOINT "playground$syscallEntryPoint" |
| 6 #include "linux_syscall_support.h" | 6 #include "linux_syscall_support.h" |
| 7 | 7 |
| 8 #include "sandbox_impl.h" | 8 #include "sandbox_impl.h" |
| 9 #include <dirent.h> | 9 #include <dirent.h> |
| 10 #include <dlfcn.h> | 10 #include <dlfcn.h> |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 printf("TSC: %llx\n", tsc()); | 157 printf("TSC: %llx\n", tsc()); |
| 158 printf("TSC: %llx\n", tsc()); | 158 printf("TSC: %llx\n", tsc()); |
| 159 | 159 |
| 160 #if defined(__x86_64__) | 160 #if defined(__x86_64__) |
| 161 asm volatile("mov $2, %%edi\n" | 161 asm volatile("mov $2, %%edi\n" |
| 162 "lea 100f(%%rip), %%rsi\n" | 162 "lea 100f(%%rip), %%rsi\n" |
| 163 "mov $101f-100f, %%edx\n" | 163 "mov $101f-100f, %%edx\n" |
| 164 "mov $1, %%eax\n" | 164 "mov $1, %%eax\n" |
| 165 "int $0\n" | 165 "int $0\n" |
| 166 "jmp 101f\n" | 166 "jmp 101f\n" |
| 167 "100:.ascii \"Hello world (INT $0 worked)\\n\"\n" | 167 "100:.ascii \"Hello world (INT $0 worked)\\n\"\n" |
| 168 "101:\n" | 168 "101:\n" |
| 169 : | 169 : |
| 170 : | 170 : |
| 171 : "rax", "rdi", "rsi", "rdx"); | 171 : "rax", "rdi", "rsi", "rdx"); |
| 172 #elif defined(__i386__) | 172 #elif defined(__i386__) |
| 173 asm volatile("mov $2, %%ebx\n" | 173 asm volatile("push %%ebx\n" |
| 174 "mov $2, %%ebx\n" |
| 174 "lea 100f, %%ecx\n" | 175 "lea 100f, %%ecx\n" |
| 175 "mov $101f-100f, %%edx\n" | 176 "mov $101f-100f, %%edx\n" |
| 176 "mov $4, %%eax\n" | 177 "mov $4, %%eax\n" |
| 177 "int $0\n" | 178 "int $0\n" |
| 178 "jmp 101f\n" | 179 "jmp 101f\n" |
| 179 "100:.ascii \"Hello world (INT $0 worked)\\n\"\n" | 180 "100:.ascii \"Hello world (INT $0 worked)\\n\"\n" |
| 180 "101:\n" | 181 "101:pop %%ebx\n" |
| 181 : | 182 : |
| 182 : | 183 : |
| 183 : "eax", "ebx", "ecx", "edx"); | 184 : "eax", "ecx", "edx"); |
| 184 #endif | 185 #endif |
| 185 | 186 |
| 186 int pair[2]; | 187 int pair[2]; |
| 187 socketpair(AF_UNIX, SOCK_STREAM, 0, pair); | 188 socketpair(AF_UNIX, SOCK_STREAM, 0, pair); |
| 188 | 189 |
| 189 printf("uid: %d\n", getuid()); | 190 printf("uid: %d\n", getuid()); |
| 190 dlopen("libncurses.so.5", RTLD_LAZY); | 191 dlopen("libncurses.so.5", RTLD_LAZY); |
| 191 | 192 |
| 192 if (gettimeofday(&tv, 0)) { | 193 if (gettimeofday(&tv, 0)) { |
| 193 printf("gettimeofday() failed\n"); | 194 printf("gettimeofday() failed\n"); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 } | 231 } |
| 231 if (!pthread_create(&threads[0], NULL, fnc, NULL)) { | 232 if (!pthread_create(&threads[0], NULL, fnc, NULL)) { |
| 232 pthread_join(threads[0], NULL); | 233 pthread_join(threads[0], NULL); |
| 233 } | 234 } |
| 234 #endif | 235 #endif |
| 235 | 236 |
| 236 puts("Done"); | 237 puts("Done"); |
| 237 exit(0); | 238 exit(0); |
| 238 return 0; | 239 return 0; |
| 239 } | 240 } |
| OLD | NEW |