| OLD | NEW |
| 1 #include <string.h> | 1 #include <string.h> |
| 2 #include <sys/stat.h> | 2 #include <sys/stat.h> |
| 3 #include <time.h> | 3 #include <time.h> |
| 4 #include <nacl_stat.h> | 4 #include <nacl_stat.h> |
| 5 #include <nacl_syscalls.h> | 5 #include <nacl_syscalls.h> |
| 6 #define stat nacl_abi_stat | 6 #define stat nacl_abi_stat |
| 7 #include <irt.h> | 7 #include <irt.h> |
| 8 #undef stat | 8 #undef stat |
| 9 #include <irt_syscalls.h> | 9 #include <irt_syscalls.h> |
| 10 #ifdef IS_IN_rtld | 10 #ifdef IS_IN_rtld |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 if ((uint32_t) rv > 0xffff0000u) | 138 if ((uint32_t) rv > 0xffff0000u) |
| 139 return -(int32_t) rv; | 139 return -(int32_t) rv; |
| 140 *addr = (void *) (uintptr_t) rv; | 140 *addr = (void *) (uintptr_t) rv; |
| 141 return 0; | 141 return 0; |
| 142 } | 142 } |
| 143 | 143 |
| 144 static int nacl_irt_munmap (void *addr, size_t len) { | 144 static int nacl_irt_munmap (void *addr, size_t len) { |
| 145 return -NACL_SYSCALL (munmap) (addr, len); | 145 return -NACL_SYSCALL (munmap) (addr, len); |
| 146 } | 146 } |
| 147 | 147 |
| 148 static int nacl_irt_mprotect (void *addr, size_t len, int prot) { |
| 149 return -NACL_SYSCALL (mprotect) (addr, len, prot); |
| 150 } |
| 151 |
| 148 static int nacl_irt_dyncode_create(void *dest, const void *src, size_t size) { | 152 static int nacl_irt_dyncode_create(void *dest, const void *src, size_t size) { |
| 149 return -NACL_SYSCALL(dyncode_create)(dest, src, size); | 153 return -NACL_SYSCALL(dyncode_create)(dest, src, size); |
| 150 } | 154 } |
| 151 | 155 |
| 152 static int nacl_irt_dyncode_modify(void *dest, const void *src, size_t size) { | 156 static int nacl_irt_dyncode_modify(void *dest, const void *src, size_t size) { |
| 153 return -NACL_SYSCALL(dyncode_modify)(dest, src, size); | 157 return -NACL_SYSCALL(dyncode_modify)(dest, src, size); |
| 154 } | 158 } |
| 155 | 159 |
| 156 static int nacl_irt_dyncode_delete(void *dest, size_t size) { | 160 static int nacl_irt_dyncode_delete(void *dest, size_t size) { |
| 157 return -NACL_SYSCALL(dyncode_delete)(dest, size); | 161 return -NACL_SYSCALL(dyncode_delete)(dest, size); |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 353 int (*__nacl_irt_setsockopt) (int sockfd, int level, int optname, | 357 int (*__nacl_irt_setsockopt) (int sockfd, int level, int optname, |
| 354 const void *optval, socklen_t optlen); | 358 const void *optval, socklen_t optlen); |
| 355 int (*__nacl_irt_socketpair) (int domain, int type, int protocol, int sv[2]); | 359 int (*__nacl_irt_socketpair) (int domain, int type, int protocol, int sv[2]); |
| 356 int (*__nacl_irt_shutdown) (int sockfd, int how); | 360 int (*__nacl_irt_shutdown) (int sockfd, int how); |
| 357 | 361 |
| 358 | 362 |
| 359 int (*__nacl_irt_sysbrk) (void **newbrk); | 363 int (*__nacl_irt_sysbrk) (void **newbrk); |
| 360 int (*__nacl_irt_mmap) (void **addr, size_t len, int prot, int flags, | 364 int (*__nacl_irt_mmap) (void **addr, size_t len, int prot, int flags, |
| 361 int fd, off_t off); | 365 int fd, off_t off); |
| 362 int (*__nacl_irt_munmap) (void *addr, size_t len); | 366 int (*__nacl_irt_munmap) (void *addr, size_t len); |
| 367 int (*__nacl_irt_mprotect) (void *addr, size_t len, int prot); |
| 363 | 368 |
| 364 int (*__nacl_irt_dyncode_create) (void *dest, const void *src, size_t size); | 369 int (*__nacl_irt_dyncode_create) (void *dest, const void *src, size_t size); |
| 365 int (*__nacl_irt_dyncode_modify) (void *dest, const void *src, size_t size); | 370 int (*__nacl_irt_dyncode_modify) (void *dest, const void *src, size_t size); |
| 366 int (*__nacl_irt_dyncode_delete) (void *dest, size_t size); | 371 int (*__nacl_irt_dyncode_delete) (void *dest, size_t size); |
| 367 | 372 |
| 368 int (*__nacl_irt_thread_create) (void *start_user_address, void *stack, | 373 int (*__nacl_irt_thread_create) (void *start_user_address, void *stack, |
| 369 void *thread_ptr); | 374 void *thread_ptr); |
| 370 void (*__nacl_irt_thread_exit) (int32_t *stack_flag); | 375 void (*__nacl_irt_thread_exit) (int32_t *stack_flag); |
| 371 int (*__nacl_irt_thread_nice) (const int nice); | 376 int (*__nacl_irt_thread_nice) (const int nice); |
| 372 | 377 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 392 int (*__nacl_irt_clock_getres) (clockid_t clk_id, struct timespec *res); | 397 int (*__nacl_irt_clock_getres) (clockid_t clk_id, struct timespec *res); |
| 393 int (*__nacl_irt_clock_gettime) (clockid_t clk_id, struct timespec *tp); | 398 int (*__nacl_irt_clock_gettime) (clockid_t clk_id, struct timespec *tp); |
| 394 | 399 |
| 395 void | 400 void |
| 396 init_irt_table (void) | 401 init_irt_table (void) |
| 397 { | 402 { |
| 398 union { | 403 union { |
| 399 struct nacl_irt_basic nacl_irt_basic; | 404 struct nacl_irt_basic nacl_irt_basic; |
| 400 struct nacl_irt_fdio nacl_irt_fdio; | 405 struct nacl_irt_fdio nacl_irt_fdio; |
| 401 struct nacl_irt_filename nacl_irt_filename; | 406 struct nacl_irt_filename nacl_irt_filename; |
| 402 struct nacl_irt_memory nacl_irt_memory; | 407 struct nacl_irt_memory_v0_2 nacl_irt_memory; |
| 403 struct nacl_irt_dyncode nacl_irt_dyncode; | 408 struct nacl_irt_dyncode nacl_irt_dyncode; |
| 404 struct nacl_irt_thread nacl_irt_thread; | 409 struct nacl_irt_thread nacl_irt_thread; |
| 405 struct nacl_irt_mutex nacl_irt_mutex; | 410 struct nacl_irt_mutex nacl_irt_mutex; |
| 406 struct nacl_irt_cond nacl_irt_cond; | 411 struct nacl_irt_cond nacl_irt_cond; |
| 407 struct nacl_irt_tls nacl_irt_tls; | 412 struct nacl_irt_tls nacl_irt_tls; |
| 408 struct nacl_irt_resource_open nacl_irt_resource_open; | 413 struct nacl_irt_resource_open nacl_irt_resource_open; |
| 409 struct nacl_irt_clock nacl_irt_clock; | 414 struct nacl_irt_clock nacl_irt_clock; |
| 410 } u; | 415 } u; |
| 411 | 416 |
| 412 if (__nacl_irt_query && | 417 if (__nacl_irt_query && |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 462 __nacl_irt_open = u.nacl_irt_filename.open; | 467 __nacl_irt_open = u.nacl_irt_filename.open; |
| 463 __nacl_irt_stat = u.nacl_irt_filename.nacl_abi_stat; | 468 __nacl_irt_stat = u.nacl_irt_filename.nacl_abi_stat; |
| 464 } | 469 } |
| 465 else | 470 else |
| 466 { | 471 { |
| 467 __nacl_irt_open = nacl_irt_open; | 472 __nacl_irt_open = nacl_irt_open; |
| 468 __nacl_irt_stat = nacl_irt_stat; | 473 __nacl_irt_stat = nacl_irt_stat; |
| 469 } | 474 } |
| 470 | 475 |
| 471 if (__nacl_irt_query && | 476 if (__nacl_irt_query && |
| 472 __nacl_irt_query (NACL_IRT_MEMORY_v0_1, &u.nacl_irt_memory, | 477 __nacl_irt_query (NACL_IRT_MEMORY_v0_2, &u.nacl_irt_memory, |
| 473 sizeof(u.nacl_irt_memory)) == sizeof(u.nacl_irt_memory)) | 478 sizeof(u.nacl_irt_memory)) == sizeof(u.nacl_irt_memory)) |
| 474 { | 479 { |
| 475 __nacl_irt_sysbrk = u.nacl_irt_memory.sysbrk; | 480 __nacl_irt_sysbrk = u.nacl_irt_memory.sysbrk; |
| 476 __nacl_irt_mmap = u.nacl_irt_memory.mmap; | 481 __nacl_irt_mmap = u.nacl_irt_memory.mmap; |
| 477 __nacl_irt_munmap = u.nacl_irt_memory.munmap; | 482 __nacl_irt_munmap = u.nacl_irt_memory.munmap; |
| 483 __nacl_irt_mprotect = u.nacl_irt_memory.mprotect; |
| 484 } |
| 485 else if (__nacl_irt_query && |
| 486 __nacl_irt_query (NACL_IRT_MEMORY_v0_1, &u.nacl_irt_memory, |
| 487 sizeof(struct nacl_irt_memory_v0_1)) == |
| 488 sizeof(struct nacl_irt_memory_v0_1)) |
| 489 { |
| 490 __nacl_irt_sysbrk = u.nacl_irt_memory.sysbrk; |
| 491 __nacl_irt_mmap = u.nacl_irt_memory.mmap; |
| 492 __nacl_irt_munmap = u.nacl_irt_memory.munmap; |
| 493 __nacl_irt_mprotect = not_implemented; |
| 478 } | 494 } |
| 479 else | 495 else |
| 480 { | 496 { |
| 481 __nacl_irt_sysbrk = nacl_irt_sysbrk; | 497 __nacl_irt_sysbrk = nacl_irt_sysbrk; |
| 482 __nacl_irt_mmap = nacl_irt_mmap; | 498 __nacl_irt_mmap = nacl_irt_mmap; |
| 483 __nacl_irt_munmap = nacl_irt_munmap; | 499 __nacl_irt_munmap = nacl_irt_munmap; |
| 500 __nacl_irt_mprotect = nacl_irt_mprotect; |
| 484 } | 501 } |
| 485 | 502 |
| 486 if (__nacl_irt_query && | 503 if (__nacl_irt_query && |
| 487 __nacl_irt_query (NACL_IRT_DYNCODE_v0_1, &u.nacl_irt_dyncode, | 504 __nacl_irt_query (NACL_IRT_DYNCODE_v0_1, &u.nacl_irt_dyncode, |
| 488 sizeof(u.nacl_irt_dyncode)) == sizeof(u.nacl_irt_dyncode)) | 505 sizeof(u.nacl_irt_dyncode)) == sizeof(u.nacl_irt_dyncode)) |
| 489 { | 506 { |
| 490 __nacl_irt_dyncode_create = u.nacl_irt_dyncode.dyncode_create; | 507 __nacl_irt_dyncode_create = u.nacl_irt_dyncode.dyncode_create; |
| 491 __nacl_irt_dyncode_modify = u.nacl_irt_dyncode.dyncode_modify; | 508 __nacl_irt_dyncode_modify = u.nacl_irt_dyncode.dyncode_modify; |
| 492 __nacl_irt_dyncode_delete = u.nacl_irt_dyncode.dyncode_delete; | 509 __nacl_irt_dyncode_delete = u.nacl_irt_dyncode.dyncode_delete; |
| 493 } | 510 } |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 635 __nacl_irt_getsockopt = not_implemented; | 652 __nacl_irt_getsockopt = not_implemented; |
| 636 __nacl_irt_setsockopt = not_implemented; | 653 __nacl_irt_setsockopt = not_implemented; |
| 637 __nacl_irt_socketpair = not_implemented; | 654 __nacl_irt_socketpair = not_implemented; |
| 638 __nacl_irt_shutdown = not_implemented; | 655 __nacl_irt_shutdown = not_implemented; |
| 639 } | 656 } |
| 640 | 657 |
| 641 size_t nacl_interface_query(const char *interface_ident, | 658 size_t nacl_interface_query(const char *interface_ident, |
| 642 void *table, size_t tablesize) { | 659 void *table, size_t tablesize) { |
| 643 return (*__nacl_irt_query)(interface_ident, table, tablesize); | 660 return (*__nacl_irt_query)(interface_ident, table, tablesize); |
| 644 } | 661 } |
| OLD | NEW |