diff options
author | Jeremie Courreges-Anglas <jca@cvs.openbsd.org> | 2021-06-10 23:40:47 +0000 |
---|---|---|
committer | Jeremie Courreges-Anglas <jca@cvs.openbsd.org> | 2021-06-10 23:40:47 +0000 |
commit | 922126470038db0e14ff5613f8a0fea105a88121 (patch) | |
tree | 336084db9dd4db1415771dac0c38f670ee46cc4f /regress/lib | |
parent | ea2328bee41937193601e1c1727b03f28890a469 (diff) |
Move libexecinfo regress tests under regress/gnu/lib
Discussed with mortimer@ and bluhm@
Diffstat (limited to 'regress/lib')
-rw-r--r-- | regress/lib/Makefile | 3 | ||||
-rw-r--r-- | regress/lib/libexecinfo/Makefile | 34 | ||||
-rw-r--r-- | regress/lib/libexecinfo/t_backtrace.c | 163 |
3 files changed, 1 insertions, 199 deletions
diff --git a/regress/lib/Makefile b/regress/lib/Makefile index fc260a64e57..25a78aac675 100644 --- a/regress/lib/Makefile +++ b/regress/lib/Makefile @@ -1,11 +1,10 @@ -# $OpenBSD: Makefile,v 1.22 2021/06/09 19:42:46 mortimer Exp $ +# $OpenBSD: Makefile,v 1.23 2021/06/10 23:40:46 jca Exp $ SUBDIR+= csu SUBDIR+= libc SUBDIR+= libcrypto SUBDIR+= libedit SUBDIR+= libevent -SUBDIR+= libexecinfo SUBDIR+= libexpat SUBDIR+= libfuse SUBDIR+= libm diff --git a/regress/lib/libexecinfo/Makefile b/regress/lib/libexecinfo/Makefile deleted file mode 100644 index a4fdbbeebb2..00000000000 --- a/regress/lib/libexecinfo/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# $OpenBSD: Makefile,v 1.1 2021/06/09 19:39:15 mortimer Exp $ - -.include <bsd.own.mk> - -.if ${COMPILER_VERSION} == "clang" -PROG= t_backtrace - -.PATH: ${SRCDIR} ${BSDSRCDIR}/regress/lib/libc/sys/ -SRCS+= t_backtrace.c atf-c.c - -.if empty(CFLAGS:M-std=*) -CFLAGS+= -std=gnu99 -.endif - -CFLAGS+= -I${BSDSRCDIR}/regress/lib/libc/sys/ -LDFLAGS+= -Wl,--export-dynamic -LDADD+= -lexecinfo -DPADD+= ${LIBEXECINFO} - -# Only needed while this lib is not installed -CFLAGS+= -I${BSDSRCDIR}/lib/libexecinfo/ -LDFLAGS+= -L${BSDOBJDIR}/lib/libexecinfo/ - -run-regress-${PROG}: ${PROG} - ./${PROG} -r 1 - -.else # Not clang arch -REGRESS_TARGETS=run-regress-skiparch -run-regress-skiparch: - # backtrace() is a noop on non-unwind arches. - @echo SKIPPED -.endif - -.include <bsd.regress.mk> diff --git a/regress/lib/libexecinfo/t_backtrace.c b/regress/lib/libexecinfo/t_backtrace.c deleted file mode 100644 index 9a3408ee6e4..00000000000 --- a/regress/lib/libexecinfo/t_backtrace.c +++ /dev/null @@ -1,163 +0,0 @@ -/* $OpenBSD: t_backtrace.c,v 1.1 2021/06/09 19:39:15 mortimer Exp $ */ - -/*- - * Copyright (c) 2012 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Christos Zoulas. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -#include <sys/cdefs.h> - -#include <atf-c.h> -#include <string.h> -#include <stdbool.h> -#include <stdio.h> -#include <stdlib.h> -#include <execinfo.h> -#include <unistd.h> - -#ifndef __arraycount -#define __arraycount(a) (sizeof(a) / sizeof(a[0])) -#endif - -void myfunc3(size_t ncalls); -void myfunc2(size_t ncalls); -void myfunc1(size_t origcalls, volatile size_t ncalls); -void myfunc(size_t ncalls); - -static volatile int prevent_inline; - -void -myfunc3(size_t ncalls) -{ - static const struct { - const char *name; - bool is_optional; - } frames[] = { - { "myfunc", false }, - { "atf_body_backtrace_fmt_basic", false }, - { "atf_test", true }, - { "main", true }, - { "_start", true }, - }; - size_t j, nptrs, min_frames, max_frames; - void *buffer[ncalls + 10]; - char **strings; - - min_frames = 0; - max_frames = 0; - for (j = 0; j < __arraycount(frames); ++j) { - if (!frames[j].is_optional) - ++min_frames; - ++max_frames; - } - nptrs = backtrace(buffer, __arraycount(buffer)); - ATF_REQUIRE(nptrs != (size_t)-1); - strings = backtrace_symbols_fmt(buffer, nptrs, "%n"); - - ATF_CHECK(strings != NULL); - - printf("got nptrs=%zu ncalls=%zu (min_frames: %zu, max_frames: %zu)\n", - nptrs, ncalls, min_frames, max_frames); - printf("backtrace is:\n"); - for (j = 0; j < nptrs; j++) { - printf("#%zu: %s\n", j, strings[j]); - } - - ATF_REQUIRE(nptrs >= ncalls + 2 + min_frames); - ATF_REQUIRE(nptrs <= ncalls + 2 + max_frames); - ATF_CHECK_STREQ(strings[0], "myfunc3"); - ATF_CHECK_STREQ(strings[1], "myfunc2"); - - for (j = 2; j < ncalls + 2; j++) - ATF_CHECK_STREQ(strings[j], "myfunc1"); - - for (size_t i = 0; j < nptrs; i++, j++) { - if (frames[i].is_optional && - strcmp(strings[j], frames[i].name)) { - --i; - continue; - } - ATF_CHECK_STREQ(strings[j], frames[i].name); - } - - free(strings); - - if (prevent_inline) - vfork(); -} - -void -myfunc2(size_t ncalls) -{ - myfunc3(ncalls); - - if (prevent_inline) - vfork(); -} - -void -myfunc1(size_t origcalls, volatile size_t ncalls) -{ - if (ncalls > 1) - myfunc1(origcalls, ncalls - 1); - else - myfunc2(origcalls); - - if (prevent_inline) - vfork(); -} - -void -myfunc(size_t ncalls) -{ - myfunc1(ncalls, ncalls); - - if (prevent_inline) - vfork(); -} - -ATF_TC(backtrace_fmt_basic); -ATF_TC_HEAD(backtrace_fmt_basic, tc) -{ - atf_tc_set_md_var(tc, "descr", "Test backtrace_fmt(3)"); - atf_tc_set_md_var(tc, "require.files", "/proc/self"); -} - -ATF_TC_BODY(backtrace_fmt_basic, tc) -{ - myfunc(12); - - if (prevent_inline) - vfork(); -} - -ATF_TP_ADD_TCS(tp) -{ - - ATF_TP_ADD_TC(tp, backtrace_fmt_basic); - - return atf_no_error(); -} |