__libc_start_main.c 604 B

1234567891011121314151617181920212223242526
  1. #include "libc.h"
  2. void __init_security(size_t *);
  3. int __libc_start_main(
  4. int (*main)(int, char **, char **), int argc, char **argv,
  5. int (*init)(int, char **, char **), void (*fini)(void),
  6. void (*ldso_fini)(void))
  7. {
  8. char **envp = argv+argc+1, **auxv = envp;
  9. __environ = envp;
  10. do auxv++; while (*auxv);
  11. libc.auxv = (void *)++auxv;
  12. libc.ldso_fini = ldso_fini;
  13. libc.fini = fini;
  14. __init_security((void *)auxv);
  15. /* Execute constructors (static) linked into the application */
  16. if (init) init(argc, argv, envp);
  17. /* Pass control to to application */
  18. exit(main(argc, argv, envp));
  19. return 0;
  20. }