예제 #1
0
int main(int argc, char **argv, char **environ) {
  nacl_irt_nonsfi_allow_dev_interfaces();
  if (argc < 2) {
    fprintf(stderr, "Usage: %s <executable> <args...>\n", argv[0]);
    return 1;
  }
  const char *nexe_filename = argv[1];
  int fd = open(nexe_filename, O_RDONLY);
  if (fd < 0) {
    fprintf(stderr, "Failed to open %s: %s\n", nexe_filename, strerror(errno));
    return 1;
  }
  uintptr_t entry = NaClLoadElfFile(fd);
  return nacl_irt_nonsfi_entry(argc - 1, argv + 1, environ,
                               (nacl_entry_func_t) entry);
}
예제 #2
0
int main(int argc, char **argv, char **environ) {
  /*
   * On Linux, we rename _start() to _user_start() to avoid a clash
   * with the "_start" routine in the host toolchain.  On Mac OS X,
   * lacking objcopy, doing the symbol renaming is trickier, but also
   * unnecessary, because the host toolchain doesn't have a "_start"
   * routine.
   */
  nacl_entry_func_t entry_func =
#if defined(__APPLE__)
    _start;
#else
    _user_start;
#endif

  return nacl_irt_nonsfi_entry(argc, argv, environ, entry_func);
}