message: Run pre-init array before _init
diff: @@ -77,20 +77,26 @@ pub unsafe extern "C" fn relibc_start(sp: &'static Stack) -> ! {
  stdio::stdout = stdio::default_stdout.get();
  stdio::stderr = stdio::default_stderr.get();
  - // Call init section
  - _init();
  -
  - // Look for the neighbor functions in memory until the end
  + // Run preinit array
  + {
  let mut f = &__preinit_array_start as *const _;
  while f < &__preinit_array_end {
  (*f)();
  f = f.offset(1);
  }
  - f = &__init_array_start as *const _;
  + }
  +
  + // Call init section
  + _init();
  +
  + // Run init array
  + {
  + let mut f = &__init_array_start as *const _;
  while f < &__init_array_end {
  (*f)();
  f = f.offset(1);
  }
  + }
  // not argv or envp, because programs like bash try to modify this *const* pointer :|
  stdlib::exit(main(
  