{
struct thread_state ***current_thread_reloc =
dynlib_sym (handle, CURRENT_THREAD_RELOC_SYM);
- *current_thread_reloc = ¤t_thread;
+ EMACS_INT ***pure_reloc = dynlib_sym (handle, PURE_RELOC_SYM);
+ Lisp_Object *data_relocs = dynlib_sym (handle, DATA_RELOC_SYM);
+ Lisp_Object (**f_relocs)(void) = dynlib_sym (handle, IMPORTED_FUNC_RELOC_SYM);
+ void (*top_level_run)(void) = dynlib_sym (handle, "top_level_run");
+
+ if (!(current_thread_reloc
+ && pure_reloc
+ && data_relocs
+ && f_relocs
+ && top_level_run))
+ return -1;
- EMACS_INT ***pure_reloc =
- dynlib_sym (handle, PURE_RELOC_SYM);
+ *current_thread_reloc = ¤t_thread;
*pure_reloc = (EMACS_INT **)&pure;
/* Imported data. */
- Lisp_Object *data_relocs = dynlib_sym (handle, DATA_RELOC_SYM);
-
Lisp_Object d_vec = load_static_obj (handle, TEXT_DATA_RELOC_SYM);
EMACS_UINT d_vec_len = XFIXNUM (Flength (d_vec));
}
/* Imported functions. */
- Lisp_Object (**f_relocs)(void) =
- dynlib_sym (handle, IMPORTED_FUNC_RELOC_SYM);
Lisp_Object f_vec =
load_static_obj (handle, TEXT_IMPORTED_FUNC_RELOC_SYM);
EMACS_UINT f_vec_len = XFIXNUM (Flength (f_vec));
}
/* Executing this will perform all the expected environment modification. */
- void (*top_level_run)(void) = dynlib_sym (handle, "top_level_run");
top_level_run ();
return 0;