+ stack_frame = calloc(argc + envc + 3, sizeof(stack_frame[0]));
+ if (stack_frame == NULL) {
+ fprintf(stderr, "stack_frame OOM\n");
+ return 1;
+ }
+
+ sfp = 0;
+ stack_frame[sfp++] = argc - 1;
+ for (i = 1; i < argc; i++)
+ stack_frame[sfp++] = (long)argv[i];
+ stack_frame[sfp++] = 0;
+ for (i = 0; i < envc; i++)
+ stack_frame[sfp++] = (long)environ[i];
+ stack_frame[sfp++] = 0;
+
+ log("entering %08x, %d stack entries\n", hdr.e_entry, sfp);
+ do_entry(hdr.e_entry, stack_frame, sfp, NULL);
+
+ fprintf(stderr, "do_entry failed!\n");
+ return 1;