1
0
mirror of https://git.yoctoproject.org/meta-arm synced 2026-06-06 14:50:03 +00:00

meta-arm/selftest: add test that PAC/BTI instructions are used

We enable PAC/BTI out of the box, but all of the pieces (such as gcc and
glibc) need to support it for the final binary to be protected.

Add a minimal test recipe to verify that the "Hello, World" binary is
using PAC/BTI, and add it to oe-selftest.

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
Ross Burton
2023-11-28 15:44:47 +00:00
committed by Jon Mason
parent 1dff3300fb
commit 0b61cc659a
3 changed files with 41 additions and 0 deletions
@@ -0,0 +1,11 @@
from oeqa.selftest.case import OESelftestTestCase
from oeqa.core.decorator import OETestTag
from oeqa.core.decorator.data import skipIfNotArch
from oeqa.utils.commands import bitbake
@OETestTag("meta-arm")
class PacBtiTest(OESelftestTestCase):
@skipIfNotArch(["aarch64"])
def test_pac_bti(self):
bitbake("test-pacbti")
@@ -0,0 +1,9 @@
// Copyright (C) 2023 Arm Ltd
// SPDX-License-Identifier: MIT
#include <stdio.h>
int main() {
puts("Hello, world");
return 0;
}
@@ -0,0 +1,21 @@
SUMMARY = "Test to verify that PAC/BTI is enabled"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://pacbti.c;beginline=2;endline=2;md5=6ec41034e04432ee375d0e14fba596f4"
SRC_URI = "file://pacbti.c"
S = "${WORKDIR}"
do_compile() {
# Compile with -zforce-bti with fatal warnings, so the link fails if PAC/BTI
# is requested but gcc/glibc are built without it.
${CC} ${CFLAGS} ${LDFLAGS} -z force-bti -Werror -Wl,--fatal-warnings ${S}/pacbti.c
# If we have a binary, check that the AArch64 feature list in the binary
# actually enables PAC/BTI.
${READELF} --notes a.out | grep "AArch64 feature" >notes
grep BTI notes
grep PAC notes
}
COMPATIBLE_HOST = "aarch64.*-linux"