]>
Commit | Line | Data |
---|---|---|
7237d704 | 1 | /* Derived from a test case in |
a306c790 | 2 | https://sourceware.org/bugzilla/show_bug.cgi?id=1158. */ |
7237d704 UD |
3 | #include <dlfcn.h> |
4 | #include <stdlib.h> | |
5 | #include <stdio.h> | |
6 | #include <unistd.h> | |
7 | ||
8 | static int next = 3; | |
9 | ||
10 | static void | |
11 | f1 (void) | |
12 | { | |
13 | puts ("f1"); | |
14 | if (next-- != 1) | |
15 | _exit (1); | |
16 | } | |
17 | ||
18 | static void | |
19 | f2 (void) | |
20 | { | |
21 | puts ("f2"); | |
22 | if (next-- != 2) | |
23 | _exit (1); | |
24 | } | |
25 | ||
26 | static void | |
27 | f3 (void) | |
28 | { | |
29 | puts ("f3"); | |
30 | if (next-- != 3) | |
31 | _exit (1); | |
32 | } | |
33 | ||
34 | static int | |
35 | do_test (void) | |
36 | { | |
37 | atexit (f1); | |
38 | ||
39 | void *dso = dlopen ("$ORIGIN/bug-atexit2-lib.so", RTLD_NOW); | |
40 | void (*fn) (void) = (void (*) (void)) dlsym (dso, "foo"); | |
41 | fn (); | |
42 | ||
43 | atexit (f2); | |
44 | ||
45 | dlclose (dso); | |
46 | ||
47 | atexit (f3); | |
48 | ||
49 | return 0; | |
50 | } | |
51 | ||
52 | #define TEST_FUNCTION do_test () | |
53 | #include "../test-skeleton.c" |