aboutsummaryrefslogtreecommitdiffstats
path: root/src/comp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp.c')
-rw-r--r--src/comp.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/comp.c b/src/comp.c
index 80a59faa859..07c35413dde 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -3175,15 +3175,22 @@ load_comp_unit (dynlib_handle_ptr handle)
3175{ 3175{
3176 struct thread_state ***current_thread_reloc = 3176 struct thread_state ***current_thread_reloc =
3177 dynlib_sym (handle, CURRENT_THREAD_RELOC_SYM); 3177 dynlib_sym (handle, CURRENT_THREAD_RELOC_SYM);
3178 *current_thread_reloc = &current_thread; 3178 EMACS_INT ***pure_reloc = dynlib_sym (handle, PURE_RELOC_SYM);
3179 Lisp_Object *data_relocs = dynlib_sym (handle, DATA_RELOC_SYM);
3180 Lisp_Object (**f_relocs)(void) = dynlib_sym (handle, IMPORTED_FUNC_RELOC_SYM);
3181 void (*top_level_run)(void) = dynlib_sym (handle, "top_level_run");
3182
3183 if (!(current_thread_reloc
3184 && pure_reloc
3185 && data_relocs
3186 && f_relocs
3187 && top_level_run))
3188 return -1;
3179 3189
3180 EMACS_INT ***pure_reloc = 3190 *current_thread_reloc = &current_thread;
3181 dynlib_sym (handle, PURE_RELOC_SYM);
3182 *pure_reloc = (EMACS_INT **)&pure; 3191 *pure_reloc = (EMACS_INT **)&pure;
3183 3192
3184 /* Imported data. */ 3193 /* Imported data. */
3185 Lisp_Object *data_relocs = dynlib_sym (handle, DATA_RELOC_SYM);
3186
3187 Lisp_Object d_vec = load_static_obj (handle, TEXT_DATA_RELOC_SYM); 3194 Lisp_Object d_vec = load_static_obj (handle, TEXT_DATA_RELOC_SYM);
3188 EMACS_UINT d_vec_len = XFIXNUM (Flength (d_vec)); 3195 EMACS_UINT d_vec_len = XFIXNUM (Flength (d_vec));
3189 3196
@@ -3194,8 +3201,6 @@ load_comp_unit (dynlib_handle_ptr handle)
3194 } 3201 }
3195 3202
3196 /* Imported functions. */ 3203 /* Imported functions. */
3197 Lisp_Object (**f_relocs)(void) =
3198 dynlib_sym (handle, IMPORTED_FUNC_RELOC_SYM);
3199 Lisp_Object f_vec = 3204 Lisp_Object f_vec =
3200 load_static_obj (handle, TEXT_IMPORTED_FUNC_RELOC_SYM); 3205 load_static_obj (handle, TEXT_IMPORTED_FUNC_RELOC_SYM);
3201 EMACS_UINT f_vec_len = XFIXNUM (Flength (f_vec)); 3206 EMACS_UINT f_vec_len = XFIXNUM (Flength (f_vec));
@@ -3251,7 +3256,6 @@ load_comp_unit (dynlib_handle_ptr handle)
3251 } 3256 }
3252 3257
3253 /* Executing this will perform all the expected environment modification. */ 3258 /* Executing this will perform all the expected environment modification. */
3254 void (*top_level_run)(void) = dynlib_sym (handle, "top_level_run");
3255 top_level_run (); 3259 top_level_run ();
3256 3260
3257 return 0; 3261 return 0;