diff --git a/criu/arch/x86/crtools.c b/criu/arch/x86/crtools.c index 672e6db3e3..5b85eb1da7 100644 --- a/criu/arch/x86/crtools.c +++ b/criu/arch/x86/crtools.c @@ -198,7 +198,7 @@ int get_task_regs(pid_t pid, user_regs_struct_t regs, CoreEntry *core) assign_reg(r64, regs.native, es); assign_reg(r64, regs.native, fs); assign_reg(r64, regs.native, gs); - gpregs->gpregs_case = USER_X86_REGS_ENTRY__GPREGS_NATIVE; + gpregs->gpregs_case = USER_X86_REGS_CASE_T__NATIVE; } else { UserX86Regs32 *r32 = gpregs->compat; @@ -219,7 +219,7 @@ int get_task_regs(pid_t pid, user_regs_struct_t regs, CoreEntry *core) assign_reg(r32, regs.compat, flags); assign_reg(r32, regs.compat, sp); assign_reg(r32, regs.compat, ss); - gpregs->gpregs_case = USER_X86_REGS_ENTRY__GPREGS_COMPAT; + gpregs->gpregs_case = USER_X86_REGS_CASE_T__COMPAT; } #ifndef PTRACE_GETREGSET @@ -558,7 +558,7 @@ void *mmap_seized(struct parasite_ctl *ctl, int restore_gpregs(struct rt_sigframe *f, UserX86RegsEntry *r) { /* FIXME: rt_sigcontext for compatible tasks */ - if (r->gpregs_case != USER_X86_REGS_ENTRY__GPREGS_NATIVE) { + if (r->gpregs_case != USER_X86_REGS_CASE_T__NATIVE) { pr_err("Can't prepare rt_sigframe for compatible task restore\n"); return -1; } diff --git a/images/core-x86.proto b/images/core-x86.proto index 84c89f585f..fc1e8849ab 100644 --- a/images/core-x86.proto +++ b/images/core-x86.proto @@ -50,11 +50,15 @@ message user_x86_regs_32 { required uint32 ss = 17; } +enum user_x86_regs_case_t { + NATIVE = 1; + COMPAT = 2; +} + message user_x86_regs_entry { - oneof gpregs { - user_x86_regs_64 native = 1[(criu).hex = true]; - user_x86_regs_32 compat = 2[(criu).hex = true]; - } + required user_x86_regs_case_t gpregs_case = 1; + optional user_x86_regs_64 native = 2[(criu).hex = true]; + optional user_x86_regs_32 compat = 3[(criu).hex = true]; } message user_x86_xsave_entry {