diff mbox series

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

Message ID 20190205170510.21984-12-peter.maydell@linaro.org
State Accepted
Commit 06bf3b153acb93a341a90fb76258d8337cbede9b
Headers show
Series target-arm queue | 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

-- 
2.20.1

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;
+}