Commit: Fix PR 29072 test with --enable-default-execstack=no

Message ID 87352l6qjc.fsf@redhat.com
State Accepted
Headers
Series Commit: Fix PR 29072 test with --enable-default-execstack=no |

Checks

Context Check Description
snail/binutils-gdb-check success Github commit url

Commit Message

Nick Clifton June 21, 2023, 10:47 a.m. UTC
  Hi Guys,

  I noticed recently that if the linker is configured with the
  --enable-default-execstack=no option, then the
  target_defaults_to_execstack proc in the linker testsuite can return
  the wrong value for targets that enable executable stacks by default.
  
  So I am applying the patch below to add some code to the proc that
  checks the linker's config.status file for the configure option.  I
  realise that this will not work if the tests are being run on an
  installed version of the linker, but I could not think of any other
  way to perform the check.

Cheers
  Nick

ld/ChangeLog
2023-06-21  Nick Clifton  <nickc@redhat.com>

	PR 29072
	* testsuite/ld-elf/elf.exp (target_defaults_to_execstack): Always
	return false for linkers configured with the --enable-default-execstack=no
	option.
  

Patch

diff --git a/ld/testsuite/ld-elf/elf.exp b/ld/testsuite/ld-elf/elf.exp
index cf0e949a966..a367cf41e95 100644
--- a/ld/testsuite/ld-elf/elf.exp
+++ b/ld/testsuite/ld-elf/elf.exp
@@ -180,6 +180,21 @@  if { [check_gc_sections_available] && ![istarget "v850-*-*"] } {
 }
 
 proc target_defaults_to_execstack {} {
+    global base_dir
+
+    # If the linker has been configured with --enable-default-execstack=no then
+    # this proc should always return 0.
+    if { [file exists $base_dir/config.status] } {
+	set status [remote_exec host grep "enable-default-execstack=no" $base_dir/config.status]
+	if { [lindex $status 0] == 0 } {
+	    return 0
+	} else {
+	    verbose -log "$base_dir/config.status does not contain enable-default-execstack=no"
+	}
+    } else {
+	verbose -log "there is no file $base_dir/config.status"
+    }
+    
     if {   [istarget "aarch64*-*-*"]
 	|| [istarget "arc*-*-*"]
 	|| [istarget "cris*-*-*"]