diff options
author | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2013-08-20 20:30:05 +0000 |
---|---|---|
committer | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2013-08-20 20:30:05 +0000 |
commit | a4dcdbcd5b2fc886a934227de81a12419879d3c9 (patch) | |
tree | 7da71a8b0923741313e638f84bbbe1c9f6a4b283 | |
parent | b4a4c38b54ec1734893153adba657bcd443a0175 (diff) | |
download | eglibc2-a4dcdbcd5b2fc886a934227de81a12419879d3c9.tar.gz |
* debug/tst-backtrace6.c: Remove.
* debug/Makefile (CFLAGS-tst-backtrace6.c): Remove variable.
(LDFLAGS-tst-backtrace6): Likewise.
(tests-$(OPTION_EGLIBC_BACKTRACE)): Remove tst-backtrace6.
git-svn-id: svn://svn.eglibc.org/trunk@23798 7b3dc134-2b1b-0410-93df-9e9f96275f8d
-rw-r--r-- | libc/ChangeLog.eglibc | 7 | ||||
-rw-r--r-- | libc/debug/Makefile | 4 | ||||
-rw-r--r-- | libc/debug/tst-backtrace6.c | 152 |
3 files changed, 8 insertions, 155 deletions
diff --git a/libc/ChangeLog.eglibc b/libc/ChangeLog.eglibc index b0804550e..442ffd4ef 100644 --- a/libc/ChangeLog.eglibc +++ b/libc/ChangeLog.eglibc @@ -1,3 +1,10 @@ +2013-08-20 Joseph Myers <joseph@codesourcery.com> + + * debug/tst-backtrace6.c: Remove. + * debug/Makefile (CFLAGS-tst-backtrace6.c): Remove variable. + (LDFLAGS-tst-backtrace6): Likewise. + (tests-$(OPTION_EGLIBC_BACKTRACE)): Remove tst-backtrace6. + 2013-05-17 Joseph Myers <joseph@codesourcery.com> * configure.in, math/Makefile, math/gen-libm-test.pl, diff --git a/libc/debug/Makefile b/libc/debug/Makefile index 626d18f2c..cd8289a15 100644 --- a/libc/debug/Makefile +++ b/libc/debug/Makefile @@ -139,19 +139,17 @@ CFLAGS-tst-backtrace2.c += -funwind-tables CFLAGS-tst-backtrace3.c += -funwind-tables CFLAGS-tst-backtrace4.c += -funwind-tables CFLAGS-tst-backtrace5.c += -funwind-tables -CFLAGS-tst-backtrace6.c += -funwind-tables LDFLAGS-tst-backtrace2 = -rdynamic LDFLAGS-tst-backtrace3 = -rdynamic LDFLAGS-tst-backtrace4 = -rdynamic LDFLAGS-tst-backtrace5 = -rdynamic -LDFLAGS-tst-backtrace6 = -rdynamic tests = tst-longjmp_chk test-strcpy_chk test-stpcpy_chk tst-longjmp_chk2 tests-$(OPTION_EGLIBC_LOCALE_CODE) \ += tst-chk1 tst-chk2 tst-chk3 tst-lfschk1 tst-lfschk2 tst-lfschk3 tests-$(OPTION_EGLIBC_BACKTRACE) \ += backtrace-tst tst-backtrace2 tst-backtrace3 tst-backtrace4 \ - tst-backtrace5 tst-backtrace6 + tst-backtrace5 ifeq (yy,$(OPTION_EGLIBC_LOCALE_CODE)$(OPTION_EGLIBC_CXX_TESTS)) tests += tst-chk4 tst-chk5 tst-chk6 tst-lfschk4 tst-lfschk5 tst-lfschk6 endif diff --git a/libc/debug/tst-backtrace6.c b/libc/debug/tst-backtrace6.c deleted file mode 100644 index b9d8bbdbe..000000000 --- a/libc/debug/tst-backtrace6.c +++ /dev/null @@ -1,152 +0,0 @@ -/* Copyright (C) 2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by CodeSourcery. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <execinfo.h> -#include <search.h> -#include <setjmp.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/types.h> -#include <signal.h> -#include <unistd.h> - -static int do_test (void); -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" - -/* Set to a non-zero value if the test fails. */ -volatile int ret; - -/* Accesses to X are used to prevent optimization. */ -volatile int x; - -/* Called if the test fails. */ -#define FAIL() \ - do { printf ("Failure on line %d\n", __LINE__); ret = 1; } while (0) - -/* The backtrace should include at least handle_signal, a signal - trampoline, noreturn_func, 3 * fn, and do_test. */ -#define NUM_FUNCTIONS 7 - -/* Use this attribute to prevent inlining, so that all expected frames - are present. */ -#define NO_INLINE __attribute__((noinline)) - -jmp_buf b; - -void -handle_signal (int signum) -{ - void *addresses[NUM_FUNCTIONS]; - char **symbols; - int n; - int i; - - /* Get the backtrace addresses. */ - n = backtrace (addresses, sizeof (addresses) / sizeof (addresses[0])); - printf ("Obtained backtrace with %d functions\n", n); - /* Check that there are at least seven functions. */ - if (n < NUM_FUNCTIONS) - { - FAIL (); - longjmp (b, 1); - } - /* Convert them to symbols. */ - symbols = backtrace_symbols (addresses, n); - /* Check that symbols were obtained. */ - if (symbols == NULL) - { - FAIL (); - longjmp (b, 1); - } - for (i = 0; i < n; ++i) - printf ("Function %d: %s\n", i, symbols[i]); - /* Check that the function names obtained are accurate. */ - if (strstr (symbols[0], "handle_signal") == NULL) - { - FAIL (); - longjmp (b, 1); - } - /* Do not check name for signal trampoline. */ - if (strstr (symbols[2], "noreturn_func") == NULL) - { - FAIL (); - longjmp (b, 1); - } - for (i = 3; i < n - 1; i++) - if (strstr (symbols[i], "fn") == NULL) - { - FAIL (); - longjmp (b, 1); - } - /* Symbol names are not available for static functions, so we do not - check do_test. */ - - longjmp (b, 1); -} - -NO_INLINE __attribute__((noreturn)) void -noreturn_func (void) -{ - while (1) - ; -} - -NO_INLINE int -fn (int c) -{ - pid_t parent_pid, child_pid; - struct sigaction act; - - if (c > 0) - { - fn (c - 1); - return x; - } - - memset (&act, 0, sizeof (act)); - act.sa_handler = handle_signal; - sigemptyset (&act.sa_mask); - sigaction (SIGUSR1, &act, NULL); - parent_pid = getpid (); - - child_pid = fork (); - if (child_pid == (pid_t) -1) - abort (); - else if (child_pid == 0) - { - sleep (1); - kill (parent_pid, SIGUSR1); - _exit (0); - } - - /* In the parent. */ - if (setjmp (b)) - return 0; - else - noreturn_func (); -} - -NO_INLINE static int -do_test (void) -{ - fn (2); - return ret; -} |