gdb/python: don't allow the user to delete window title attributes
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / reread.exp
index dca25f89b5e8a4754915ef43ff424590d719bee9..c74caf43dfc475c34b23edf76ccff825c4cc92fd 100644 (file)
@@ -1,5 +1,4 @@
-# Copyright 1998, 2000, 2001, 2007, 2008, 2009, 2010, 2011
-# Free Software Foundation, Inc.
+# Copyright 1998-2021 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-if $tracelevel then {
-       strace $tracelevel
-}
-
-set prototypes 1
+# Build programs in PIE mode, to reproduce PR 21555.
+foreach_with_prefix opts {
+    { "" "" }
+    { "-fPIE" "ldflags=-pie" } } {
+
+       # build the first test case
+
+       set testfile1 "reread1"
+       set srcfile1 ${testfile1}.c
+       # Cygwin needs $EXEEXT.
+       set binfile1 [standard_output_file ${testfile1}$EXEEXT]
+
+       set testfile1_opt [list debug nowarnings \
+                              additional_flags=[lindex $opts 0] \
+                              [lindex $opts 1] ]
+       if  { [gdb_compile "${srcdir}/${subdir}/${srcfile1}" "${binfile1}" \
+                  executable ${testfile1_opt}] != "" } {
+           untested "failed to compile first testcase"
+           return -1
+       }
 
-# build the first test case
+       # build the second test case
+
+       set testfile2 "reread2"
+       set srcfile2 ${testfile2}.c
+       set binfile2 [standard_output_file ${testfile2}$EXEEXT]
+
+       set testfile2_opt1 [list debug nowarnings \
+                               additional_flags=[lindex $opts 0] \
+                               [lindex $opts 1]]
+       set testfile2_op2 [list debug nowarnings \
+                              "additional_flags=-DNO_SECTIONS [lindex $opts 0]" \
+                              [lindex $opts 1]]
+       if  { [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" \
+                  executable ${testfile2_opt1}] != ""
+             && [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" \
+                     executable ${testfile2_opt2}] != ""} {
+           untested "failed to compile second testcase"
+           return -1
+       }
 
-set testfile1 "reread1"
-set srcfile1 ${testfile1}.c
-# Cygwin needs $EXEEXT.
-set binfile1 ${objdir}/${subdir}/${testfile1}$EXEEXT
+       # Start with a fresh gdb.
 
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile1}" "${binfile1}" executable {debug nowarnings}] != "" } {
-    untested reread.exp
-    return -1
-}
+       set testfile "reread"
+       set binfile [standard_output_file ${testfile}$EXEEXT]
 
-# build the second test case
+       gdb_start
+       gdb_reinitialize_dir $srcdir/$subdir
 
-set testfile2 "reread2"
-set srcfile2 ${testfile2}.c
-set binfile2 ${objdir}/${subdir}/${testfile2}$EXEEXT
+       # Load the first executable.
 
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" executable {debug nowarnings}] != ""
-      && [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" executable {debug nowarnings additional_flags=-DNO_SECTIONS}] != ""} {
-    untested reread.exp
-    return -1
-}
+       gdb_rename_execfile ${binfile1} ${binfile}
+       gdb_load ${binfile}
 
-# Start with a fresh gdb.
+       set readnow_p [readnow ${binfile}]
+       
+       # Set a breakpoint at foo
 
-set testfile "reread"
-set binfile ${objdir}/${subdir}/${testfile}$EXEEXT
+       gdb_test "break foo" \
+           "Breakpoint.*at.* file .*$srcfile1, line 14.*" \
+           "breakpoint foo in first file"
 
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
 
-# Load the first executable.
+       # Run, should see "Breakpoint 1, foo () at hello1.c:14"
 
-gdb_rename_execfile ${binfile1} ${binfile}
-gdb_load ${binfile}
+       gdb_run_cmd
+       gdb_test "" "Breakpoint.* foo .* at .*$srcfile1:14.*" "run to foo()"
 
-# Set a breakpoint at foo
+       # Restore first executable to its original name, and move
+       # second executable into its place.  Ensure that the new
+       # executable is at least a second newer than the old.
 
-gdb_test "break foo" \
-    "Breakpoint.*at.* file .*$srcfile1, line 14.*" \
-    "breakpoint foo in first file"
+       gdb_rename_execfile ${binfile} ${binfile1}
+       gdb_rename_execfile ${binfile2} ${binfile}
+       gdb_test "shell sleep 1" ".*" ""
+       gdb_touch_execfile ${binfile}
 
+       # Run a second time; GDB should detect that the executable has changed
+       # and reset the breakpoints correctly.
+       # Should see "Breakpoint 1, foo () at reread2.c:9"
 
-# Run, should see "Breakpoint 1, foo () at hello1.c:14"
+       set test "run to foo() second time"
+       if [is_remote target] {
+           unsupported $test
+       } else {
+           gdb_run_cmd
+           if { $readnow_p } {
+               setup_kfail "gdb/26800" *-*-*
+           }
+           gdb_test "" "Breakpoint.* foo .* at .*:9.*" $test
+       }
 
-gdb_run_cmd
 
-gdb_expect {
-    -re ".*Breakpoint.* foo .* at .*$srcfile1:14.*$gdb_prompt $"  {
-       pass "run to foo()";
-    }
-    -re ".*$gdb_prompt $" {
-       fail "run to foo()";
-       gdb_suppress_tests;
-    }
-    timeout { fail "run to foo() (timeout)" ; gdb_suppress_tests }
-}
-
-# Restore first executable to its original name, and move
-# second executable into its place.  Ensure that the new
-# executable is at least a second newer than the old.
-
-gdb_rename_execfile ${binfile} ${binfile1}
-gdb_rename_execfile ${binfile2} ${binfile}
-gdb_test "shell sleep 1" ".*" ""
-gdb_touch_execfile ${binfile}
-
-# Run a second time; GDB should detect that the executable has changed
-# and reset the breakpoints correctly.
-# Should see "Breakpoint 1, foo () at reread2.c:9"
-
-if [is_remote target] {
-    unsupported "run to foo() second time ";
-} else {
-    gdb_run_cmd
-    gdb_expect {
-       #    -re ".*re-reading symbols.*Breakpoint.* foo .* at .*$srcfile2:9.*$gdb_prompt $" {}
-       -re ".*Breakpoint.* foo .* at .*:9.*$gdb_prompt $" {
-           pass "run to foo() second time ";
-       }
-       -re ".*$gdb_prompt $" {
-           fail "run to foo() second time";
-           gdb_suppress_tests;
-       }
-       timeout { 
-           fail "run to foo() second time (timeout)" ; 
-           gdb_suppress_tests 
+       ### Second pass: verify that GDB checks the executable file's
+       ### timestamp when the program is *restarted*, not just when it exits.
+
+       if [is_remote target] {
+           unsupported "second pass: GDB should check for changes before running"
+       } else {
+
+           # Put the older executable back in place.
+           gdb_rename_execfile ${binfile} ${binfile2}
+           gdb_rename_execfile ${binfile1} ${binfile}
+
+           # Restart GDB entirely.
+           clean_restart ${binfile}
+
+           # Set a breakpoint on foo and run to it.
+           gdb_test "break foo" \
+               "Breakpoint.*at.* file .*$srcfile1, line 14.*" \
+               "second pass: breakpoint foo in first file"
+           gdb_run_cmd
+           gdb_test "" "Breakpoint.* foo .* at .*$srcfile1:14.*" \
+               "second pass: run to foo()"
+
+           # This time, let the program run to completion.  If GDB checks the
+           # executable file's timestamp now, it won't notice any change.
+           gdb_continue_to_end "second pass"
+
+           # Now move the newer executable into place, and re-run.  GDB
+           # should still notice that the executable file has changed,
+           # and still re-set the breakpoint appropriately.
+           gdb_rename_execfile ${binfile} ${binfile1}
+           gdb_rename_execfile ${binfile2} ${binfile}
+           gdb_run_cmd
+           if { $readnow_p } {
+               setup_kfail "gdb/26800" *-*-*
+           }
+           gdb_test "" "Breakpoint.* foo .* at .*:9.*" \
+               "second pass: run to foo() second time"
        }
-    }
-}
-
-
-### Second pass: verify that GDB checks the executable file's
-### timestamp when the program is *restarted*, not just when it exits.
-
-if [is_remote target] {
-    unsupported "second pass: GDB should check for changes before running"
-} else {
-
-    # Put the older executable back in place.
-    gdb_rename_execfile ${binfile} ${binfile2}
-    gdb_rename_execfile ${binfile1} ${binfile}
-
-    # Restart GDB entirely.
-    gdb_start
-    gdb_reinitialize_dir $srcdir/$subdir
-    gdb_load ${binfile}
-
-    # Set a breakpoint on foo and run to it.
-    gdb_test "break foo" \
-            "Breakpoint.*at.* file .*$srcfile1, line 14.*" \
-            "second pass: breakpoint foo in first file"
-    gdb_run_cmd
-    gdb_expect {
-        -re ".*Breakpoint.* foo .* at .*$srcfile1:14.*$gdb_prompt $"  {
-            pass "second pass: run to foo()";
-        }
-        -re ".*$gdb_prompt $" {
-            fail "second pass: run to foo()";
-            gdb_suppress_tests;
-        }
-        timeout {
-            fail "second pass: run to foo() (timeout)"
-            gdb_suppress_tests
-        }
-    }
 
-    # This time, let the program run to completion.  If GDB checks the
-    # executable file's timestamp now, it won't notice any change.
-    gdb_continue_to_end "second pass"
-    
-    # Now move the newer executable into place, and re-run.  GDB
-    # should still notice that the executable file has changed,
-    # and still re-set the breakpoint appropriately.
-    gdb_rename_execfile ${binfile} ${binfile1}
-    gdb_rename_execfile ${binfile2} ${binfile}
-    gdb_run_cmd
-    gdb_expect {
-       -re ".*Breakpoint.* foo .* at .*:9.*$gdb_prompt $" {
-           pass "second pass: run to foo() second time ";
-       }
-       -re ".*$gdb_prompt $" {
-           fail "second pass: run to foo() second time";
-           gdb_suppress_tests;
-       }
-       timeout { 
-           fail "second pass: run to foo() second time (timeout)" ; 
-           gdb_suppress_tests 
-       }
     }
-}
-
 # End of tests.
 
-gdb_stop_suppressing_tests
-
 return 0
This page took 0.027852 seconds and 4 git commands to generate.