-# Copyright 2010 Free Software Foundation, Inc.
+# Copyright 2010-2016 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.
+global inferior_spawn_id
+global gdb_spawn_id
+
if ![istarget *-linux*] {
continue
}
-# Remote protocol does not support follow-exec notifications.
-
-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] } then {
+ if { [target_info gdb_protocol] == "remote" } then {
+ continue
+ }
}
-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 additional_flags=-fPIE ldflags=-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
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
-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
+ }
}
}