1 # Copyright
(C
) 2010-2022 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 # Test inferior can stop at its very first instruction
, usually
"_start".
17 # Dynamic executables have first instruction in
ld.so.
19 #
If we
're using a stub, we'll already be debugging a live
program and
20 # stopped at the entry point when we
connect, and so the runto below
21 # will issue a
"continue", which always skips any breakpoint at PC.
22 # When testing with a native target
(or some other target that supports
23 #
"run"), runto will do a "run", which first creates the process,
24 # leaving the PC at the entry point
, just like the stub case
, but
then
25 # continues the process with the equivalent of
"jump *$PC", which
26 # triggers
any breakpoint at $PC. The latter is what we want to test.
28 standard_testfile start.c
31 untested
"skipping tests due to use_gdb_stub"
35 if { [prepare_for_testing
"failed to prepare" ${testfile} $srcfile {additional_flags=-static}] } {
41 gdb_test_multiple $test $test
{
42 -re
"\r\n\[\t \]*Entry point:\[\t \]*(0x\[0-9a-f\]+)\r\n.*$gdb_prompt $" {
43 set entry $expect_out
(1,string
)
48 untested
"no entrypoint"
52 if {[istarget powerpc64
-*] && [is_lp64_target
]} {
53 set test
"convert entry point"
54 gdb_test_multiple
"p *(void(*)(void) *) $entry" $test {
55 -re
" =( \\(\[^0-9\]*\\))? (0x\[0-9a-f\]+)( <.*)?\r\n$gdb_prompt $" {
56 set entry $expect_out
(2,string
)
62 if ![runto
"*$entry"] {
65 gdb_test
{p
/x $pc
} " = $entry"
68 gdb_continue_to_breakpoint
"main" "\\.?main.*"