diff options
Diffstat (limited to 'stdlib')
-rw-r--r-- | stdlib/Makefile | 2 | ||||
-rw-r--r-- | stdlib/tst-bsearch.c | 18 |
2 files changed, 19 insertions, 1 deletions
diff --git a/stdlib/Makefile b/stdlib/Makefile index 5ff7dfdbc6..f882a554ef 100644 --- a/stdlib/Makefile +++ b/stdlib/Makefile @@ -96,6 +96,8 @@ ifeq (yes,$(have-protected)) CFLAGS-atexit.c = -DHAVE_DOT_HIDDEN endif +CFLAGS-tst-bsearch.c = $(stack-align-test-flags) + include ../Rules # Testdir has to be named stdlib and needs to be writable diff --git a/stdlib/tst-bsearch.c b/stdlib/tst-bsearch.c index ad80776785..8d2fd895fe 100644 --- a/stdlib/tst-bsearch.c +++ b/stdlib/tst-bsearch.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2000, 2002 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2000. @@ -19,6 +19,7 @@ #include <stdio.h> #include <stdlib.h> +#include <tst-stack-align.h> struct entry { @@ -40,6 +41,7 @@ struct entry }; #define narr (sizeof (arr) / sizeof (arr[0])) +static int align_check; static int comp (const void *p1, const void *p2) @@ -47,6 +49,9 @@ comp (const void *p1, const void *p2) struct entry *e1 = (struct entry *) p1; struct entry *e2 = (struct entry *) p2; + if (!align_check) + align_check = TEST_STACK_ALIGN () ? -1 : 1; + return e1->val - e2->val; } @@ -128,6 +133,17 @@ main (void) } } + if (align_check == 0) + { + puts ("alignment not checked"); + result = 1; + } + else if (align_check == -1) + { + puts ("stack not sufficiently aligned"); + result = 1; + } + if (result == 0) puts ("all OK"); |