]> git.ipfire.org Git - thirdparty/elfutils.git/commit
aarch64: define struct user_pac_mask if needed
authorMarkus Mayer <mmayer@broadcom.com>
Fri, 21 Feb 2025 19:19:34 +0000 (11:19 -0800)
committerMark Wielaard <mark@klomp.org>
Sun, 23 Feb 2025 13:18:36 +0000 (14:18 +0100)
commit52a747a316042e70a22acb489df9e51bfc6bf2d5
tree5f0f4b53d890b0778e95ffff69f44eded95789e2
parente543c7f5c2b28ac2bce1e9f09fad30caebb579d5
aarch64: define struct user_pac_mask if needed

On Aarch64, Linux is using Pointer Authentication Code (PAC) for pointer
authentication.[1] The struct "user_pac_mask" has been part of the Linux
kernel since version 5.0 as part of this feature. However, older kernels
do not define it.

Therefore, we want to check if the definition is present in the kernel
headers and provide one if it isn't. This ensures two things:

* elfutils will continue to compile against kernel headers from 4.x
* binaries built against older kernel headers will still be fully
  functional if used on a newer system

For reference, the build error that is being avoided looks like this:

[...]
  CC       aarch64_initreg.o
aarch64_initreg.c: In function 'aarch64_set_initial_registers_tid':
aarch64_initreg.c:61:24: error: storage size of 'pac_mask' isn't known
   struct user_pac_mask pac_mask;
                        ^~~~~~~~
aarch64_initreg.c:61:24: warning: unused variable 'pac_mask' [-Wunused-variable]
make[4]: *** [Makefile:831: aarch64_initreg.o] Error 1
make[3]: *** [Makefile:547: all-recursive] Error 1
make[2]: *** [Makefile:463: all] Error 2

[1] https://docs.kernel.org/arch/arm64/pointer-authentication.html

https://sourceware.org/bugzilla/show_bug.cgi?id=32684

Fixes: 64e3b451ad2c ("aarch64: extend dwfl_thread_state_registers to handle PAC")
Signed-off-by: Markus Mayer <mmayer@broadcom.com>
backends/aarch64_initreg.c
configure.ac