summaryrefslogtreecommitdiff
path: root/regress/lib
diff options
context:
space:
mode:
authorJeremie Courreges-Anglas <jca@cvs.openbsd.org>2021-06-10 23:40:47 +0000
committerJeremie Courreges-Anglas <jca@cvs.openbsd.org>2021-06-10 23:40:47 +0000
commit922126470038db0e14ff5613f8a0fea105a88121 (patch)
tree336084db9dd4db1415771dac0c38f670ee46cc4f /regress/lib
parentea2328bee41937193601e1c1727b03f28890a469 (diff)
Move libexecinfo regress tests under regress/gnu/lib
Discussed with mortimer@ and bluhm@
Diffstat (limited to 'regress/lib')
-rw-r--r--regress/lib/Makefile3
-rw-r--r--regress/lib/libexecinfo/Makefile34
-rw-r--r--regress/lib/libexecinfo/t_backtrace.c163
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();
-}