]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/testsuite/gdb.base/pie-execl.exp
Update copyright year range in header of all files managed by GDB
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.base / pie-execl.exp
index b9c74ae55358344889baf488f89e8f9d2b629c98..cbcb3ac5e7e67289f92cacf8af72dad621c61b32 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2010 Free Software Foundation, Inc.
+# Copyright 2010-2024 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
 # The problem was due to amd64_skip_prologue attempting to access inferior
 # memory before the PIE (Position Independent Executable) gets relocated.
 
-if ![istarget *-linux*] {
-    continue
-}
+global inferior_spawn_id
+global gdb_spawn_id
 
-# Remote protocol does not support follow-exec notifications.
+require {istarget *-linux*}
 
-if [is_remote target] {
-    continue
+# In remote mode we cannot use the 'set args' command, and this
+# test requires it.
+if {[target_info exists gdb_protocol]} {
+    if {[target_info gdb_protocol] == "remote"} {
+       return
+    }
 }
 
-set testfile "pie-execl"
-set srcfile ${testfile}.c
+standard_testfile .c
 set executable1 ${testfile}1
 set executable2 ${testfile}2
-set binfile1 ${objdir}/${subdir}/${executable1}
-set binfile2 ${objdir}/${subdir}/${executable2}
+set binfile1 ${binfile}1
+set binfile2 ${binfile}2
+set binfile2_test_msg OBJDIR/${subdir}/${executable2}
 
 # Use conditional compilation according to `BIN' as GDB remembers the source
 # file name of the breakpoint.
 
-set opts [list debug {additional_flags=-fPIE -pie}]
-if {[build_executable ${testfile}.exp $executable1 $srcfile [concat $opts {additional_flags=-DBIN=1}]] == ""
-    || [build_executable ${testfile}.exp $executable2 $srcfile [concat $opts {additional_flags=-DBIN=2}]] == ""} {
+set opts [list debug pie]
+if {[build_executable ${testfile}.exp $executable1 $srcfile [concat $opts {additional_flags=-DBIN=1}]] == -1
+    || [build_executable ${testfile}.exp $executable2 $srcfile [concat $opts {additional_flags=-DBIN=2}]] == -1} {
     return -1
 }
 
 clean_restart ${executable1}
 
-gdb_test_no_output "set args ${binfile2}"
+gdb_test_no_output "set args ${binfile2}" "set args ${binfile2_test_msg}"
 
 if ![runto_main] {
     return -1
@@ -54,7 +57,7 @@ if ![runto_main] {
 delete_breakpoints
 
 gdb_breakpoint "pie_execl_marker"
-gdb_test "info breakpoints" ".*" ""
+gdb_test "info breakpoints" "" "info breakpoints first"
 
 set addr1 ""
 set test "pie_execl_marker address first"
@@ -67,6 +70,7 @@ gdb_test_multiple "p/x &pie_execl_marker" $test {
 verbose -log "addr1 is $addr1"
 
 set test "continue"
+set matches_found 0
 gdb_test_multiple $test $test {
     -re "Error in re-setting breakpoint" {
        fail $test
@@ -74,12 +78,28 @@ gdb_test_multiple $test $test {
     -re "Cannot access memory" {
        fail $test
     }
-    -re "pie-execl: re-exec.*executing new program.*\r\nBreakpoint \[0-9\]+,\[^\r\n\]* pie_execl_marker .*\r\n$gdb_prompt $" {
-       pass $test
+    -i "$inferior_spawn_id" -re "pie-execl: re-exec" {
+       # output from inferior
+        incr matches_found
+       if { $matches_found == 2 } {
+           pass $test
+       } else {
+           exp_continue
+       }
+    }
+    -i "$gdb_spawn_id"
+    -re "executing new program.*\r\nBreakpoint \[0-9\]+,\[^\r\n\]* pie_execl_marker .*\r\n$gdb_prompt $" {
+       # output from gdb
+        incr matches_found
+       if { $matches_found == 2 } {
+           pass $test
+       } else {
+           exp_continue
+       }
     }
 }
 
-gdb_test "info breakpoints" ".*" ""
+gdb_test "info breakpoints" "" "info breakpoints second"
 
 set addr2 ""
 set test "pie_execl_marker address second"