1 # Copyright
2012-2019 Free Software Foundation
, Inc.
2 # This
program is free software
; you can redistribute it and
/or modify
3 # it under the terms of the GNU General Public License as published by
4 # the Free Software Foundation
; either version
3 of the License
, or
5 #
(at your option
) any later version.
7 # This
program is distributed in the hope that it will be useful
,
8 # but WITHOUT
ANY WARRANTY
; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the
10 # GNU General Public License
for more details.
12 # You should have received a copy of the GNU General Public License
13 # along with this
program.
If not
, see
<http
://www.gnu.org
/licenses
/>.
15 if { [skip_shlib_tests
] ||
[is_remote target
] } {
20 set libname
"info-fun-solib"
21 set srcfile_lib $
{srcdir
}/$
{subdir
}/$
{libname
}.c
22 set binfile_lib
[standard_output_file $
{libname
}.so
]
26 set executable $
{testfile
}
27 set bin_flags
[list debug shlib
=$
{binfile_lib
}]
29 if [get_compiler_info
] {
33 # SEP must be last
for the possible `unsupported
' error path.
34 foreach libsepdebug {NO IN SEP} { with_test_prefix "$libsepdebug" {
36 set sep_lib_flags $lib_flags
37 if {$libsepdebug != "NO"} {
38 lappend sep_lib_flags {debug}
40 if { [gdb_compile_shlib ${srcfile_lib} ${binfile_lib} $sep_lib_flags] != ""
41 || [gdb_compile $srcdir/$subdir/${srcfile} ${binfile} \
42 executable $bin_flags] != "" } {
43 untested "failed to compile"
47 if {$libsepdebug == "SEP"} {
48 if {[gdb_gnu_strip_debug $binfile_lib] != 0} {
49 unsupported "could not split debug of $binfile_lib."
56 clean_restart $executable
58 if ![runto_main] then {
59 fail "can't run to main
"
63 set match_str
{All functions matching regular expression
"foo":[\r\n]*}
64 if { "$libsepdebug" != "NO" } {
65 append match_str
{File .
*/info-fun
-solib
[.
]c
:[\r\n]*}
66 append match_str
{\d
+:\tint foo\
(void\
);[\r\n]*}
68 append match_str
{Non
-debugging symbols
:[\r\n]*}
69 # Note
: Targets like
{m68k
,ppc64
,s390x
}-linux also have
, e.g.
,
70 #
00000011.plt_call.foo
+0 (m68k
).
71 set plt_foo_match
"($hex \[^\r\n\]*plt\[^\r\n\]*foo\[^\r\n\]*\[\r\n\]*)?"
72 append match_str $plt_foo_match
73 # This
text we want to match precisely.
74 append match_str
"$hex *foo(@plt)?\[\r\n\]*"
75 #
Watch for again to not have to worry about the order of appearance.
76 append match_str $plt_foo_match
77 if { "$libsepdebug" == "NO" } {
78 # Note
: The
".?" is for targets like m68k-linux that have ".foo" here.
79 append match_str
"$hex *.?foo\[\r\n\]*"
82 gdb_test
"info fun foo" "$match_str"