diff mbox series

[PULL,11/22] tests/tcg/aarch64: Add pauth smoke test

Message ID 20190205170510.21984-12-peter.maydell@linaro.org
State New
Headers show
Series [PULL,01/22] target/arm: Introduce isar_feature_aa64_bti | expand

Commit Message

Peter Maydell Feb. 5, 2019, 5:04 p.m. UTC
From: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20190201195404.30486-3-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 tests/tcg/aarch64/Makefile.target |  6 +++++-
 tests/tcg/aarch64/pauth-1.c       | 23 +++++++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletion(-)
 create mode 100644 tests/tcg/aarch64/pauth-1.c

Comments

Philippe Mathieu-Daudé Feb. 11, 2019, 3:52 p.m. UTC | #1
On Tue, Feb 5, 2019 at 6:28 PM Peter Maydell <peter.maydell@linaro.org> wrote:
>
> From: Richard Henderson <richard.henderson@linaro.org>
>
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> Message-id: 20190201195404.30486-3-richard.henderson@linaro.org
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
>  tests/tcg/aarch64/Makefile.target |  6 +++++-
>  tests/tcg/aarch64/pauth-1.c       | 23 +++++++++++++++++++++++
>  2 files changed, 28 insertions(+), 1 deletion(-)
>  create mode 100644 tests/tcg/aarch64/pauth-1.c
>
> diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target
> index 08c45b8470c..2bb914975be 100644
> --- a/tests/tcg/aarch64/Makefile.target
> +++ b/tests/tcg/aarch64/Makefile.target
> @@ -8,10 +8,14 @@ VPATH                 += $(AARCH64_SRC)
>  # we don't build any of the ARM tests
>  AARCH64_TESTS=$(filter-out $(ARM_TESTS), $(TESTS))
>  AARCH64_TESTS+=fcvt
> -TESTS:=$(AARCH64_TESTS)
>
>  fcvt: LDFLAGS+=-lm
>
>  run-fcvt: fcvt
>         $(call run-test,$<,$(QEMU) $<, "$< on $(TARGET_NAME)")
>         $(call diff-out,$<,$(AARCH64_SRC)/fcvt.ref)
> +
> +AARCH64_TESTS += pauth-1
> +run-pauth-%: QEMU += -cpu max
> +
> +TESTS:=$(AARCH64_TESTS)
> diff --git a/tests/tcg/aarch64/pauth-1.c b/tests/tcg/aarch64/pauth-1.c
> new file mode 100644
> index 00000000000..ae6dc05c2b1
> --- /dev/null
> +++ b/tests/tcg/aarch64/pauth-1.c
> @@ -0,0 +1,23 @@
> +#include <assert.h>
> +#include <sys/prctl.h>
> +
> +asm(".arch armv8.4-a");
> +
> +#ifndef PR_PAC_RESET_KEYS
> +#define PR_PAC_RESET_KEYS  54
> +#define PR_PAC_APDAKEY     (1 << 2)
> +#endif
> +
> +int main()
> +{
> +    int x;
> +    void *p0 = &x, *p1, *p2;
> +
> +    asm volatile("pacdza %0" : "=r"(p1) : "0"(p0));
> +    prctl(PR_PAC_RESET_KEYS, PR_PAC_APDAKEY, 0, 0, 0);
> +    asm volatile("pacdza %0" : "=r"(p2) : "0"(p0));
> +
> +    assert(p1 != p0);
> +    assert(p1 != p2);
> +    return 0;
> +}
> --
> 2.20.1

Travis-CI is getting an error with this test:

tests/docker/docker.py cc --user 2000 --cc aarch64-linux-gnu-gcc -i
qemu:debian-arm64-cross -s . --   -Wall -O0 -g -fno-strict-aliasing
tests/tcg/aarch64/pauth-1.c -o pauth-1  -static
/tmp/ccHrAqV2.s: Assembler messages:
/tmp/ccHrAqV2.s:7: Error: unknown architecture `armv8.4-a'
/tmp/ccHrAqV2.s:41: Error: selected processor does not support `pacdza x0'
/tmp/ccHrAqV2.s:56: Error: selected processor does not support `pacdza x0'
tests/tcg/Makefile:79: recipe for target 'pauth-1' failed
make[2]: *** [pauth-1] Error 1
make[2]: Leaving directory 'aarch64-linux-user/tests'
tests/tcg/Makefile.include:52: recipe for target
'docker-build-guest-tests' failed
make[1]: *** [docker-build-guest-tests] Error 2
make[1]: Leaving directory 'aarch64-linux-user'
tests/Makefile.include:1030: recipe for target
'build-tcg-tests-aarch64-linux-user' failed
make: *** [build-tcg-tests-aarch64-linux-user] Error 2
Alex Bennée Feb. 11, 2019, 4:04 p.m. UTC | #2
Philippe Mathieu-Daudé <philmd@redhat.com> writes:

> On Tue, Feb 5, 2019 at 6:28 PM Peter Maydell <peter.maydell@linaro.org> wrote:
>>
>> From: Richard Henderson <richard.henderson@linaro.org>
>>
>> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>> Message-id: 20190201195404.30486-3-richard.henderson@linaro.org
>> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
>> ---
>>  tests/tcg/aarch64/Makefile.target |  6 +++++-
>>  tests/tcg/aarch64/pauth-1.c       | 23 +++++++++++++++++++++++
>>  2 files changed, 28 insertions(+), 1 deletion(-)
>>  create mode 100644 tests/tcg/aarch64/pauth-1.c
>>
>> diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target
>> index 08c45b8470c..2bb914975be 100644
>> --- a/tests/tcg/aarch64/Makefile.target
>> +++ b/tests/tcg/aarch64/Makefile.target
>> @@ -8,10 +8,14 @@ VPATH                 += $(AARCH64_SRC)
>>  # we don't build any of the ARM tests
>>  AARCH64_TESTS=$(filter-out $(ARM_TESTS), $(TESTS))
>>  AARCH64_TESTS+=fcvt
>> -TESTS:=$(AARCH64_TESTS)
>>
>>  fcvt: LDFLAGS+=-lm
>>
>>  run-fcvt: fcvt
>>         $(call run-test,$<,$(QEMU) $<, "$< on $(TARGET_NAME)")
>>         $(call diff-out,$<,$(AARCH64_SRC)/fcvt.ref)
>> +
>> +AARCH64_TESTS += pauth-1
>> +run-pauth-%: QEMU += -cpu max
>> +
>> +TESTS:=$(AARCH64_TESTS)
>> diff --git a/tests/tcg/aarch64/pauth-1.c b/tests/tcg/aarch64/pauth-1.c
>> new file mode 100644
>> index 00000000000..ae6dc05c2b1
>> --- /dev/null
>> +++ b/tests/tcg/aarch64/pauth-1.c
>> @@ -0,0 +1,23 @@
>> +#include <assert.h>
>> +#include <sys/prctl.h>
>> +
>> +asm(".arch armv8.4-a");
>> +
>> +#ifndef PR_PAC_RESET_KEYS
>> +#define PR_PAC_RESET_KEYS  54
>> +#define PR_PAC_APDAKEY     (1 << 2)
>> +#endif
>> +
>> +int main()
>> +{
>> +    int x;
>> +    void *p0 = &x, *p1, *p2;
>> +
>> +    asm volatile("pacdza %0" : "=r"(p1) : "0"(p0));
>> +    prctl(PR_PAC_RESET_KEYS, PR_PAC_APDAKEY, 0, 0, 0);
>> +    asm volatile("pacdza %0" : "=r"(p2) : "0"(p0));
>> +
>> +    assert(p1 != p0);
>> +    assert(p1 != p2);
>> +    return 0;
>> +}
>> --
>> 2.20.1
>
> Travis-CI is getting an error with this test:
>
> tests/docker/docker.py cc --user 2000 --cc aarch64-linux-gnu-gcc -i
> qemu:debian-arm64-cross -s . --   -Wall -O0 -g -fno-strict-aliasing
> tests/tcg/aarch64/pauth-1.c -o pauth-1  -static
> /tmp/ccHrAqV2.s: Assembler messages:
> /tmp/ccHrAqV2.s:7: Error: unknown architecture `armv8.4-a'
> /tmp/ccHrAqV2.s:41: Error: selected processor does not support `pacdza x0'
> /tmp/ccHrAqV2.s:56: Error: selected processor does not support `pacdza x0'
> tests/tcg/Makefile:79: recipe for target 'pauth-1' failed
> make[2]: *** [pauth-1] Error 1
> make[2]: Leaving directory 'aarch64-linux-user/tests'
> tests/tcg/Makefile.include:52: recipe for target
> 'docker-build-guest-tests' failed
> make[1]: *** [docker-build-guest-tests] Error 2
> make[1]: Leaving directory 'aarch64-linux-user'
> tests/Makefile.include:1030: recipe for target
> 'build-tcg-tests-aarch64-linux-user' failed
> make: *** [build-tcg-tests-aarch64-linux-user] Error 2

The fix for that is in my latest PR.

--
Alex Bennée
Philippe Mathieu-Daudé Feb. 11, 2019, 4:05 p.m. UTC | #3
On Mon, Feb 11, 2019 at 5:04 PM Alex Bennée <alex.bennee@linaro.org> wrote:
> Philippe Mathieu-Daudé <philmd@redhat.com> writes:
> >
> > Travis-CI is getting an error with this test:
> >
> > tests/docker/docker.py cc --user 2000 --cc aarch64-linux-gnu-gcc -i
> > qemu:debian-arm64-cross -s . --   -Wall -O0 -g -fno-strict-aliasing
> > tests/tcg/aarch64/pauth-1.c -o pauth-1  -static
> > /tmp/ccHrAqV2.s: Assembler messages:
> > /tmp/ccHrAqV2.s:7: Error: unknown architecture `armv8.4-a'
> > /tmp/ccHrAqV2.s:41: Error: selected processor does not support `pacdza x0'
> > /tmp/ccHrAqV2.s:56: Error: selected processor does not support `pacdza x0'
> > tests/tcg/Makefile:79: recipe for target 'pauth-1' failed
> > make[2]: *** [pauth-1] Error 1
> > make[2]: Leaving directory 'aarch64-linux-user/tests'
> > tests/tcg/Makefile.include:52: recipe for target
> > 'docker-build-guest-tests' failed
> > make[1]: *** [docker-build-guest-tests] Error 2
> > make[1]: Leaving directory 'aarch64-linux-user'
> > tests/Makefile.include:1030: recipe for target
> > 'build-tcg-tests-aarch64-linux-user' failed
> > make: *** [build-tcg-tests-aarch64-linux-user] Error 2
>
> The fix for that is in my latest PR.

Thanks Alex!
diff mbox series

Patch

diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target
index 08c45b8470c..2bb914975be 100644
--- a/tests/tcg/aarch64/Makefile.target
+++ b/tests/tcg/aarch64/Makefile.target
@@ -8,10 +8,14 @@  VPATH 		+= $(AARCH64_SRC)
 # we don't build any of the ARM tests
 AARCH64_TESTS=$(filter-out $(ARM_TESTS), $(TESTS))
 AARCH64_TESTS+=fcvt
-TESTS:=$(AARCH64_TESTS)
 
 fcvt: LDFLAGS+=-lm
 
 run-fcvt: fcvt
 	$(call run-test,$<,$(QEMU) $<, "$< on $(TARGET_NAME)")
 	$(call diff-out,$<,$(AARCH64_SRC)/fcvt.ref)
+
+AARCH64_TESTS += pauth-1
+run-pauth-%: QEMU += -cpu max
+
+TESTS:=$(AARCH64_TESTS)
diff --git a/tests/tcg/aarch64/pauth-1.c b/tests/tcg/aarch64/pauth-1.c
new file mode 100644
index 00000000000..ae6dc05c2b1
--- /dev/null
+++ b/tests/tcg/aarch64/pauth-1.c
@@ -0,0 +1,23 @@ 
+#include <assert.h>
+#include <sys/prctl.h>
+
+asm(".arch armv8.4-a");
+
+#ifndef PR_PAC_RESET_KEYS
+#define PR_PAC_RESET_KEYS  54
+#define PR_PAC_APDAKEY     (1 << 2)
+#endif
+
+int main()
+{
+    int x;
+    void *p0 = &x, *p1, *p2;
+
+    asm volatile("pacdza %0" : "=r"(p1) : "0"(p0));
+    prctl(PR_PAC_RESET_KEYS, PR_PAC_APDAKEY, 0, 0, 0);
+    asm volatile("pacdza %0" : "=r"(p2) : "0"(p0));
+
+    assert(p1 != p0);
+    assert(p1 != p2);
+    return 0;
+}