Commit f86bbe6a authored by Pavel Emelyanov's avatar Pavel Emelyanov

restore: Introduce a macro to get restorer symbol address

This makes code more readable, saves one ptr on stack and
lets us jump into restorer code using tags.
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 23bf4faa
...@@ -1325,7 +1325,6 @@ static int sigreturn_restore(pid_t pid, CoreEntry *core, struct list_head *tgt_v ...@@ -1325,7 +1325,6 @@ static int sigreturn_restore(pid_t pid, CoreEntry *core, struct list_head *tgt_v
void *mem = MAP_FAILED; void *mem = MAP_FAILED;
void *restore_thread_exec_start; void *restore_thread_exec_start;
void *restore_task_exec_start; void *restore_task_exec_start;
void *restore_code_start;
long new_sp, exec_mem_hint; long new_sp, exec_mem_hint;
long ret; long ret;
...@@ -1399,9 +1398,8 @@ static int sigreturn_restore(pid_t pid, CoreEntry *core, struct list_head *tgt_v ...@@ -1399,9 +1398,8 @@ static int sigreturn_restore(pid_t pid, CoreEntry *core, struct list_head *tgt_v
* Prepare a memory map for restorer. Note a thread space * Prepare a memory map for restorer. Note a thread space
* might be completely unused so it's here just for convenience. * might be completely unused so it's here just for convenience.
*/ */
restore_code_start = (void *)exec_mem_hint; restore_thread_exec_start = restorer_sym(exec_mem_hint, __export_restore_thread);
restore_thread_exec_start = restore_code_start + restorer_blob_offset____export_restore_thread; restore_task_exec_start = restorer_sym(exec_mem_hint, __export_restore_task);
restore_task_exec_start = restore_code_start + restorer_blob_offset____export_restore_task;
exec_mem_hint += restorer_len; exec_mem_hint += restorer_len;
......
...@@ -273,4 +273,7 @@ find_shmem(struct shmems *shmems, unsigned long shmid) ...@@ -273,4 +273,7 @@ find_shmem(struct shmems *shmems, unsigned long shmid)
return NULL; return NULL;
} }
/* the restorer_blob_offset__ prefix is added by gen_offsets.sh */
#define restorer_sym(rblob, name) ((void *)(rblob) + restorer_blob_offset__##name)
#endif /* CR_RESTORER_H__ */ #endif /* CR_RESTORER_H__ */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment