Path: blob/main/libexec/rtld-elf/tests/dlopen_test.c
34923 views
/*-1*2* Copyright (C) 2024 Kyle Evans <[email protected]>3*4* SPDX-License-Identifier: BSD-2-Clause5*6*/78#include <dlfcn.h>910#include <atf-c.h>1112ATF_TC_WITHOUT_HEAD(dlopen_basic);13ATF_TC_BODY(dlopen_basic, tc)14{15void *hdl, *sym;1617hdl = dlopen("libthr.so", RTLD_NOW);18ATF_REQUIRE(hdl != NULL);1920sym = dlsym(hdl, "pthread_create");21ATF_REQUIRE(sym != NULL);2223dlclose(hdl);2425sym = dlsym(hdl, "pthread_create");26ATF_REQUIRE(sym == NULL);27}2829ATF_TC_WITHOUT_HEAD(dlopen_recursing);30ATF_TC_BODY(dlopen_recursing, tc)31{32void *hdl;3334/*35* If this doesn't crash, we're OK; a regression at one point caused36* some infinite recursion here.37*/38hdl = dlopen("libthr.so", RTLD_NOW | RTLD_GLOBAL);39ATF_REQUIRE(hdl != NULL);4041dlclose(hdl);42}4344ATF_TP_ADD_TCS(tp)45{4647ATF_TP_ADD_TC(tp, dlopen_basic);48ATF_TP_ADD_TC(tp, dlopen_recursing);4950return atf_no_error();51}525354