From dddf02dba39e6b3f59a8052ee605f31c199d27ff Mon Sep 17 00:00:00 2001 From: Martyn Capewell Date: Tue, 12 Feb 2019 10:41:17 +0000 Subject: Fix BTI support for PACIXSP All BTI types, including the authenticating variety, should accept a BTYPE of zero. Fix the simulator and add a test for falling into a BTI with BTYPE zero. Change-Id: I14931fa9ba561cd03969e96701742b173927bca6 --- test/aarch64/test-assembler-aarch64.cc | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'test/aarch64') diff --git a/test/aarch64/test-assembler-aarch64.cc b/test/aarch64/test-assembler-aarch64.cc index 49429e78..39802fd8 100644 --- a/test/aarch64/test-assembler-aarch64.cc +++ b/test/aarch64/test-assembler-aarch64.cc @@ -15700,6 +15700,33 @@ TEST(bti_call_to_j) { } #endif // VIXL_NEGATIVE_TESTING +TEST(fall_through_bti) { + SETUP_WITH_FEATURES(CPUFeatures::kBTI, CPUFeatures::kPAuth); + + START(); + Label target, target_j, target_c, target_jc; + __ Mov(x0, 0); // 'Normal' instruction sets BTYPE to zero. + __ Bind(&target, EmitBTI); + __ Add(x0, x0, 1); + __ Bind(&target_j, EmitBTI_j); + __ Add(x0, x0, 1); + __ Bind(&target_c, EmitBTI_c); + __ Add(x0, x0, 1); + __ Bind(&target_jc, EmitBTI_jc); + __ Add(x0, x0, 1); + __ Paciasp(); + END(); + +#ifdef VIXL_INCLUDE_SIMULATOR_AARCH64 + simulator.SetGuardedPages(true); +#endif // VIXL_INCLUDE_SIMULATOR_AARCH64 + RUN(); + + ASSERT_EQUAL_64(4, x0); + + TEARDOWN(); +} + TEST(zero_dest) { // RegisterDump::Dump uses NEON. SETUP_WITH_FEATURES(CPUFeatures::kNEON); -- cgit v1.2.3