]> git.ipfire.org Git - thirdparty/gcc.git/blob - libphobos/testsuite/libphobos.shared/shared.exp
Update copyright years.
[thirdparty/gcc.git] / libphobos / testsuite / libphobos.shared / shared.exp
1 # Copyright (C) 2017-2024 Free Software Foundation, Inc.
2 #
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 3 of the License, or
6 # (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with GCC; see the file COPYING3. If not see
15 # <http://www.gnu.org/licenses/>.
16
17 load_lib libphobos-dg.exp
18
19 # Immediately exit if target doesn't support shared.
20 if { ![is-effective-target shared] } {
21 return
22 }
23
24 # If a testcase doesn't have special options, use these.
25 if ![info exists DEFAULT_CFLAGS] then {
26 set DEFAULT_CFLAGS "-g"
27 }
28
29 #
30 # Build all shared libraries, used as dependencies for other tests.
31 #
32
33 proc shared_library { source destfile options } {
34 global DEFAULT_DFLAGS
35 global all_libraries
36
37 # Compiling with -fno-gnu-unique as tests call dlopen/dlclose multiple times on the same library.
38 lappend options "additional_flags=$DEFAULT_DFLAGS -fno-gnu-unique -fpic -shared -shared-libphobos"
39
40 set comp_output [libphobos_target_compile "$source" "$destfile" "executable" $options]
41 if ![ string match "" $comp_output ] {
42 fail "libphobos.shared/[file tail $source]"
43 verbose -log $comp_output
44 return 1
45 }
46
47 lappend all_libraries $destfile
48 }
49
50 # lib.so
51 shared_library "$srcdir/$subdir/lib.d" "lib.so" ""
52
53 # liblinkdep.so
54 shared_library "$srcdir/$subdir/liblinkdep.d" "liblinkdep.so" \
55 [list "additional_flags=-I$srcdir/$subdir lib.so"]
56
57 # libloaddep.so
58 shared_library "$srcdir/$subdir/libloaddep.d" "libloaddep.so" ""
59
60 # lib_13414.so
61 shared_library "$srcdir/$subdir/lib_13414.d" "lib_13414.so" ""
62
63 # plugin.so
64 shared_library "$srcdir/$subdir/plugin.d" "plugin1.so" ""
65 shared_library "$srcdir/$subdir/plugin.d" "plugin2.so" ""
66
67 # Initialize dg.
68 dg-init
69
70 # Main loop.
71 dg-runtest "$srcdir/$subdir/link.d" "-I$srcdir/$subdir lib.so -shared-libphobos" \
72 "$DEFAULT_DFLAGS"
73
74 dg-runtest "$srcdir/$subdir/link_linkdep.d" \
75 "-I$srcdir/$subdir liblinkdep.so lib.so -shared-libphobos" \
76 "$DEFAULT_DFLAGS"
77
78 dg-runtest "$srcdir/$subdir/link_loaddep.d" \
79 "-I$srcdir/$subdir libloaddep.so -shared-libphobos" "$DEFAULT_DFLAGS"
80
81 # dlopen() tests.
82 if [is-effective-target dlopen] {
83 dg-runtest "$srcdir/$subdir/load.d" "-shared-libphobos -ldl" "$DEFAULT_DFLAGS"
84 dg-runtest "$srcdir/$subdir/load_linkdep.d" "-shared-libphobos -ldl" "$DEFAULT_DFLAGS"
85 dg-runtest "$srcdir/$subdir/load_loaddep.d" "-shared-libphobos -ldl" "$DEFAULT_DFLAGS"
86 dg-runtest "$srcdir/$subdir/load_13414.d" "-shared-libphobos -ldl" "$DEFAULT_DFLAGS"
87 dg-runtest "$srcdir/$subdir/finalize.d" "-shared-libphobos -ldl" "$DEFAULT_DFLAGS"
88 }
89
90 # C program link tests.
91 if { [is-effective-target dlopen] && [is-effective-target pthread] } {
92 dg-runtest "$srcdir/$subdir/linkD.c" "lib.so -ldl -pthread" "$DEFAULT_CFLAGS"
93 dg-runtest "$srcdir/$subdir/linkDR.c" "-shared-libphobos -ldl -pthread" "$DEFAULT_CFLAGS"
94 dg-runtest "$srcdir/$subdir/host.c" "-ldl -pthread" "$DEFAULT_CFLAGS"
95
96 # Test requires a command line argument to be passed to the program.
97 set libphobos_run_args "${blddir}/src/.libs/libgphobos.${shlib_ext}"
98 dg-runtest "$srcdir/$subdir/loadDR.c" "-ldl -pthread -g" "$DEFAULT_CFLAGS"
99 set libphobos_run_args ""
100 }
101
102 # All done.
103 dg-finish
104
105 # Remove all libraries built before running tests.
106 foreach lib $all_libraries {
107 catch "file delete -force -- $lib"
108 }