1 // { dg-require-sharedlib "" }
2 // { dg-options "-g -O2 -pthread -ldl" { target *-*-linux* } }
4 // Copyright (C) 2004, 2005 Free Software Foundation, Inc.
6 // This file is part of the GNU ISO C++ Library. This library is free
7 // software; you can redistribute it and/or modify it under the
8 // terms of the GNU General Public License as published by the
9 // Free Software Foundation; either version 2, or (at your option)
12 // This library is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
17 // You should have received a copy of the GNU General Public License along
18 // with this library; see the file COPYING. If not, write to the Free
19 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
28 check_dlopen(void*& h
)
31 void* tmp
= dlopen("./testsuite_shared.so", RTLD_LAZY
);
36 // Throws std::logic_error on NULL string.
37 std::string
error(dlerror());
38 throw std::runtime_error(error
);
40 catch (const std::logic_error
&)
51 typedef void (*function_type
) (void);
53 fn
= reinterpret_cast<function_type
>(dlsym(h
, "try_allocation"));
57 std::string
error(dlerror());
58 throw std::runtime_error(error
);
60 catch (const std::logic_error
&)
67 check_dlclose(void*& h
)
74 std::string
error(dlerror());
75 throw std::runtime_error(error
);
77 catch (const std::logic_error
&)
97 pthread_create(&th
, NULL
, tf
, NULL
);
98 pthread_join(th
, NULL
);