mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-22 09:58:09 +00:00
aarch64/crtools: fix define for missing constants
Building CRIU package on Debian 11 aarch64 fails with criu/arch/aarch64/crtools.c: In function 'save_pac_keys': criu/arch/aarch64/crtools.c:32:31: error: storage size of 'paca' isn't known struct user_pac_address_keys paca; ^~~~ criu/arch/aarch64/crtools.c:33:31: error: storage size of 'pacg' isn't known struct user_pac_generic_keys pacg; ^~~~ criu/arch/aarch64/crtools.c:47:15: error: 'HWCAP_PACA' undeclared (first use in this function); did you mean 'HWCAP_FCMA'? if (hwcaps & HWCAP_PACA) { ^~~~~~~~~~ HWCAP_FCMA criu/arch/aarch64/crtools.c:47:15: note: each undeclared identifier is reported only once for each function it appears in criu/arch/aarch64/crtools.c:53:44: error: 'NT_ARM_PACA_KEYS' undeclared (first use in this function); did you mean 'NT_ARM_SVE'? if ((ret = ptrace(PTRACE_GETREGSET, pid, NT_ARM_PACA_KEYS, &iov))) { ^~~~~~~~~~~~~~~~ NT_ARM_SVE criu/arch/aarch64/crtools.c:73:39: error: 'NT_ARM_PAC_ENABLED_KEYS' undeclared (first use in this function) ret = ptrace(PTRACE_GETREGSET, pid, NT_ARM_PAC_ENABLED_KEYS, &iov); ^~~~~~~~~~~~~~~~~~~~~~~ criu/arch/aarch64/crtools.c:82:15: error: 'HWCAP_PACG' undeclared (first use in this function); did you mean 'HWCAP_AES'? if (hwcaps & HWCAP_PACG) { ^~~~~~~~~~ HWCAP_AES criu/arch/aarch64/crtools.c:88:44: error: 'NT_ARM_PACG_KEYS' undeclared (first use in this function); did you mean 'NT_ARM_SVE'? if ((ret = ptrace(PTRACE_GETREGSET, pid, NT_ARM_PACG_KEYS, &iov))) { ^~~~~~~~~~~~~~~~ NT_ARM_SVE criu/arch/aarch64/crtools.c:33:31: error: unused variable 'pacg' [-Werror=unused-variable] struct user_pac_generic_keys pacg; ^~~~ criu/arch/aarch64/crtools.c:32:31: error: unused variable 'paca' [-Werror=unused-variable] struct user_pac_address_keys paca; ^~~~ criu/arch/aarch64/crtools.c: In function 'arch_ptrace_restore': criu/arch/aarch64/crtools.c:227:31: error: storage size of 'upaca' isn't known struct user_pac_address_keys upaca; ^~~~~ criu/arch/aarch64/crtools.c:228:31: error: storage size of 'upacg' isn't known struct user_pac_generic_keys upacg; ^~~~~ criu/arch/aarch64/crtools.c:241:18: error: 'HWCAP_PACA' undeclared (first use in this function); did you mean 'HWCAP_FCMA'? if (!(hwcaps & HWCAP_PACA)) { ^~~~~~~~~~ HWCAP_FCMA criu/arch/aarch64/crtools.c:255:44: error: 'NT_ARM_PACA_KEYS' undeclared (first use in this function); did you mean 'NT_ARM_SVE'? if ((ret = ptrace(PTRACE_SETREGSET, pid, NT_ARM_PACA_KEYS, &iov))) { ^~~~~~~~~~~~~~~~ NT_ARM_SVE criu/arch/aarch64/crtools.c:261:44: error: 'NT_ARM_PAC_ENABLED_KEYS' undeclared (first use in this function) if ((ret = ptrace(PTRACE_SETREGSET, pid, NT_ARM_PAC_ENABLED_KEYS, &iov))) { ^~~~~~~~~~~~~~~~~~~~~~~ criu/arch/aarch64/crtools.c:268:18: error: 'HWCAP_PACG' undeclared (first use in this function); did you mean 'HWCAP_AES'? if (!(hwcaps & HWCAP_PACG)) { ^~~~~~~~~~ HWCAP_AES criu/arch/aarch64/crtools.c:275:44: error: 'NT_ARM_PACG_KEYS' undeclared (first use in this function); did you mean 'NT_ARM_SVE'? if ((ret = ptrace(PTRACE_SETREGSET, pid, NT_ARM_PACG_KEYS, &iov))) { ^~~~~~~~~~~~~~~~ NT_ARM_SVE criu/arch/aarch64/crtools.c:233:6: error: variable 'ret' set but not used [-Werror=unused-but-set-variable] int ret; ^~~ criu/arch/aarch64/crtools.c:228:31: error: unused variable 'upacg' [-Werror=unused-variable] struct user_pac_generic_keys upacg; ^~~~~ criu/arch/aarch64/crtools.c:227:31: error: unused variable 'upaca' [-Werror=unused-variable] struct user_pac_address_keys upaca; ^~~~~ This patch adds the missing constants and structs if undefined. Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
This commit is contained in:
parent
75eaa65f81
commit
799504d9ff
@ -23,6 +23,45 @@
|
|||||||
#include "compel/infect.h"
|
#include "compel/infect.h"
|
||||||
#include "pstree.h"
|
#include "pstree.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* cr_user_pac_* are a copy of the corresponding uapi structs
|
||||||
|
* in arch/arm64/include/uapi/asm/ptrace.h
|
||||||
|
*/
|
||||||
|
struct cr_user_pac_address_keys {
|
||||||
|
__uint128_t apiakey;
|
||||||
|
__uint128_t apibkey;
|
||||||
|
__uint128_t apdakey;
|
||||||
|
__uint128_t apdbkey;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct cr_user_pac_generic_keys {
|
||||||
|
__uint128_t apgakey;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following HWCAP constants are copied from
|
||||||
|
* arch/arm64/include/uapi/asm/hwcap.h
|
||||||
|
*/
|
||||||
|
#ifndef HWCAP_PACA
|
||||||
|
#define HWCAP_PACA (1 << 30)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HWCAP_PACG
|
||||||
|
#define HWCAP_PACG (1UL << 31)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following NT_ARM_PAC constants are copied from
|
||||||
|
* include/uapi/linux/elf.h
|
||||||
|
*/
|
||||||
|
#ifndef NT_ARM_PACA_KEYS
|
||||||
|
#define NT_ARM_PACA_KEYS 0x407 /* ARM pointer authentication address keys */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NT_ARM_PACG_KEYS
|
||||||
|
#define NT_ARM_PACG_KEYS 0x408
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef NT_ARM_PAC_ENABLED_KEYS
|
#ifndef NT_ARM_PAC_ENABLED_KEYS
|
||||||
#define NT_ARM_PAC_ENABLED_KEYS 0x40a /* AArch64 pointer authentication enabled keys. */
|
#define NT_ARM_PAC_ENABLED_KEYS 0x40a /* AArch64 pointer authentication enabled keys. */
|
||||||
#endif
|
#endif
|
||||||
@ -33,8 +72,8 @@ extern unsigned long getauxval(unsigned long type);
|
|||||||
|
|
||||||
static int save_pac_keys(int pid, CoreEntry *core)
|
static int save_pac_keys(int pid, CoreEntry *core)
|
||||||
{
|
{
|
||||||
struct user_pac_address_keys paca;
|
struct cr_user_pac_address_keys paca;
|
||||||
struct user_pac_generic_keys pacg;
|
struct cr_user_pac_generic_keys pacg;
|
||||||
PacKeys *pac_entry;
|
PacKeys *pac_entry;
|
||||||
long pac_enabled_key;
|
long pac_enabled_key;
|
||||||
struct iovec iov;
|
struct iovec iov;
|
||||||
@ -228,8 +267,8 @@ int restore_gpregs(struct rt_sigframe *f, UserRegsEntry *r)
|
|||||||
int arch_ptrace_restore(int pid, struct pstree_item *item)
|
int arch_ptrace_restore(int pid, struct pstree_item *item)
|
||||||
{
|
{
|
||||||
unsigned long hwcaps = getauxval(AT_HWCAP);
|
unsigned long hwcaps = getauxval(AT_HWCAP);
|
||||||
struct user_pac_address_keys upaca;
|
struct cr_user_pac_address_keys upaca;
|
||||||
struct user_pac_generic_keys upacg;
|
struct cr_user_pac_generic_keys upacg;
|
||||||
PacAddressKeys *paca;
|
PacAddressKeys *paca;
|
||||||
PacGenericKeys *pacg;
|
PacGenericKeys *pacg;
|
||||||
long pac_enabled_keys;
|
long pac_enabled_keys;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user