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); }
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); }