]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
Skip C tests if test flags include C++ options
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 18_support / bad_exception / 23591_thread-1.c
CommitLineData
cddfb1c7 1// { dg-require-sharedlib "" }
807bd096 2// { dg-skip-if "invalid options for C" { *-*-* } { "-std=c++??" "-std=gnu++??" } }
4ed6e524 3// { dg-options "-g -O2 -pthread -ldl -x c -fvtable-verify=none -Wno-pedantic" { target *-*-linux* *-*-gnu* *-*-solaris2.1[2-9]* } }
cddfb1c7 4
818ab71a 5// Copyright (C) 2005-2016 Free Software Foundation, Inc.
cddfb1c7
BK
6//
7// This file is part of the GNU ISO C++ Library. This library is free
8// software; you can redistribute it and/or modify it under the
9// terms of the GNU General Public License as published by the
748086b7 10// Free Software Foundation; either version 3, or (at your option)
cddfb1c7
BK
11// any later version.
12//
13// This library is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16// GNU General Public License for more details.
17//
18// You should have received a copy of the GNU General Public License along
748086b7
JJ
19// with this library; see the file COPYING3. If not see
20// <http://www.gnu.org/licenses/>.
cddfb1c7
BK
21
22#include <pthread.h>
23#include <dlfcn.h>
24#include <errno.h>
25#include <stdio.h>
26#include <string.h>
27
28// NB: This must be compiled and linked as a "C" executable.
29static void* run(void* arg)
30{
31 typedef void (*function_type) (void);
32 void* lib;
33 void (*cb)();
34
35 lib = dlopen("./testsuite_shared.so", RTLD_NOW);
8fc81078 36 if (!lib)
cddfb1c7
BK
37 {
38 printf("dlopen failed: %s\n", strerror(errno));
8fc81078 39 return 0;
cddfb1c7
BK
40 }
41 cb = (function_type) dlsym(lib, "try_throw_exception");
8fc81078 42 if (!cb)
cddfb1c7
BK
43 {
44 printf("dlsym failed: %s\n", strerror(errno));
8fc81078 45 return 0;
cddfb1c7
BK
46 }
47 cb();
48 dlclose(lib);
8fc81078 49 return 0;
cddfb1c7
BK
50}
51
52// libstdc++/23591
53int main(void)
54{
55 pthread_t pt;
56
8fc81078 57 if (pthread_create(&pt, 0, &run, 0) != 0)
cddfb1c7 58 return 1;
8fc81078 59 if (pthread_join(pt, 0) != 0)
cddfb1c7
BK
60 return 1;
61
62 return 0;
63}