1 # Copyright
2012-2019 Free Software Foundation
, Inc.
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.
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.
13 # You should have received a copy of the GNU General Public License
14 # along with this
program.
If not
, see
<http
://www.gnu.org
/licenses
/>.
*/
16 if {[skip_shlib_tests
]} {
20 set executable print
-file
-var
-main
22 set lib1
"print-file-var-lib1"
23 set lib2
"print-file-var-lib2"
25 set libobj1
[standard_output_file $
{lib1
}.so
]
26 set libobj2
[standard_output_file $
{lib2
}.so
]
28 set lib_opts
{ debug additional_flags
=-fPIC
}
30 if { [gdb_compile_shlib $
{srcdir
}/$
{subdir
}/$
{lib1
}.c \
32 $
{lib_opts
} ] != "" } {
35 if { [gdb_compile_shlib $
{srcdir
}/$
{subdir
}/$
{lib2
}.c \
37 $
{lib_opts
} ] != "" } {
40 if { [gdb_compile
"${srcdir}/${subdir}/${executable}.c" \
41 [standard_output_file $
{executable
}] \
43 [list debug shlib
=$
{libobj1
} shlib
=$
{libobj2
}]]
48 clean_restart $executable
49 gdb_load_shlib $libobj1
50 gdb_load_shlib $libobj2
53 untested
"could not run to main"
57 # Try printing
"this_version_num" qualified with the name of the file
58 # where the variables are defined. There are two global variables
59 # with that
name, and some systems such as GNU
/Linux merge them
60 # into one single entity
, while some other systems such as Windows
61 # keep them separate. In the first situation
, we have to verify
62 # that GDB does not randomly select the wrong instance
, even when
63 # a specific filename is used to qualified the lookup. And in the
64 # second case
, we have to verify that GDB does select the instance
65 # defined in the given filename.
67 # To avoid adding target
-specific code in this testcase
, the
program
68 # sets two local
variable named
'v1' and
'v2' with the value of
69 # our global variables. This allows us to compare the value that
70 # GDB returns
for each query against the actual value seen by
73 #
Get past the initialization of variables
'v1' and
'v2'.
76 [gdb_get_line_number
"STOP" "${executable}.c"]
77 gdb_test
"break $executable.c:$bp_location" \
78 "Breakpoint \[0-9\]+ at 0x\[0-9a-fA-F\]+: .*" \
79 "breapoint past v1 & v2 initialization"
82 "Breakpoint \[0-9\]+, main \\(\\) at.*STOP.*" \
83 "continue to STOP marker"
85 # Now check the value of this_version_id in both print
-file
-var
-lib1.c
86 # and print
-file
-var
-lib2.c.
88 gdb_test
"print 'print-file-var-lib1.c'::this_version_id == v1" \
91 gdb_test
"print 'print-file-var-lib2.c'::this_version_id == v2" \