| /* Copyright (c) 2014 Google Inc., All Rights Reserved. |
| * Kevin Klues <klueska@google.com> |
| * See LICENSE for details. */ |
| |
| #include <parlib/serialize.h> |
| #include <stdint.h> |
| #include <stdio.h> |
| |
| int main(int argc, char **argv, char **envp) |
| { |
| struct serialized_data *sd = serialize_argv_envp(argv, envp); |
| size_t *kargc = (size_t*)sd->buf; |
| size_t *kenvc = (size_t*)(sd->buf + sizeof(size_t)); |
| char **kargv = (char**)(sd->buf + 2*sizeof(size_t)); |
| char **kenvp = (char**)(kargv + *kargc); |
| uintptr_t bufbase = (uintptr_t)(kenvp + *kenvc); |
| |
| printf("argc: %lu\n", *kargc); |
| printf("envc: %lu\n", *kenvc); |
| for (int i = 0; i < *kargc; i++) |
| printf("argv[%d]: %s\n", i, kargv[i] + bufbase); |
| for (int i = 0; i < *kenvc; i++) |
| printf("envp[%d]: %s\n", i, kenvp[i] + bufbase); |
| free_serialized_data(sd); |
| return 0; |
| } |