Commit 96956188 by Eric Botcazou Committed by Eric Botcazou

asan_oob_test.cc: Skip OOB_int on SPARC.

	* g++.dg/asan/asan_oob_test.cc: Skip OOB_int on SPARC.
	* g++.dg/asan/function-argument-3.C: Tweak for 32-bit SPARC.

From-SVN: r268951
parent 34c5627c
2019-02-15 Eric Botcazou <ebotcazou@adacore.com>
* g++.dg/asan/asan_oob_test.cc: Skip OOB_int on SPARC.
* g++.dg/asan/function-argument-3.C: Tweak for 32-bit SPARC.
2019-02-15 Tamar Christina <tamar.christina@arm.com> 2019-02-15 Tamar Christina <tamar.christina@arm.com>
* lib/target-supports.exp * lib/target-supports.exp
......
...@@ -68,9 +68,13 @@ TEST(AddressSanitizer, OOB_char) { ...@@ -68,9 +68,13 @@ TEST(AddressSanitizer, OOB_char) {
OOBTest<U1>(); OOBTest<U1>();
} }
// The following test uses unaligned memory accesses
#if !defined(__sparc__)
TEST(AddressSanitizer, OOB_int) { TEST(AddressSanitizer, OOB_int) {
OOBTest<U4>(); OOBTest<U4>();
} }
#endif
TEST(AddressSanitizer, OOBRightTest) { TEST(AddressSanitizer, OOBRightTest) {
for (size_t access_size = 1; access_size <= 8; access_size *= 2) { for (size_t access_size = 1; access_size <= 8; access_size *= 2) {
......
...@@ -2,7 +2,16 @@ ...@@ -2,7 +2,16 @@
// { dg-shouldfail "asan" } // { dg-shouldfail "asan" }
// { dg-additional-options "-Wno-psabi" } // { dg-additional-options "-Wno-psabi" }
// On SPARC 32-bit, only vectors up to 8 bytes are passed in registers
#if defined(__sparc__) && !defined(__sparcv9) && !defined(__arch64__)
#define SMALL_VECTOR
#endif
#ifdef SMALL_VECTOR
typedef int v4si __attribute__ ((vector_size (8)));
#else
typedef int v4si __attribute__ ((vector_size (16))); typedef int v4si __attribute__ ((vector_size (16)));
#endif
static __attribute__ ((noinline)) int static __attribute__ ((noinline)) int
goo (v4si *a) goo (v4si *a)
...@@ -19,10 +28,14 @@ foo (v4si arg) ...@@ -19,10 +28,14 @@ foo (v4si arg)
int int
main () main ()
{ {
#ifdef SMALL_VECTOR
v4si v = {1,2};
#else
v4si v = {1,2,3,4}; v4si v = {1,2,3,4};
#endif
return foo (v); return foo (v);
} }
// { dg-output "ERROR: AddressSanitizer: stack-buffer-overflow on address.*(\n|\r\n|\r)" } // { dg-output "ERROR: AddressSanitizer: stack-buffer-overflow on address.*(\n|\r\n|\r)" }
// { dg-output "READ of size . at.*" } // { dg-output "READ of size . at.*" }
// { dg-output ".*'arg' \\(line 14\\) <== Memory access at offset \[0-9\]* overflows this variable.*" } // { dg-output ".*'arg' \\(line 23\\) <== Memory access at offset \[0-9\]* overflows this variable.*" }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment