[gdb/testsuite] Fix gdb.multi/multi-arch.exp on powerpc64le
authorTom de Vries <tdevries@suse.de>
Mon, 24 Apr 2023 12:48:06 +0000 (14:48 +0200)
committerTom de Vries <tdevries@suse.de>
Mon, 24 Apr 2023 12:48:06 +0000 (14:48 +0200)
When running test-case gdb.multi/multi-arch.exp on powerpc64le-linux, I run into:
...
Running gdb/testsuite/gdb.multi/multi-arch.exp ...
gdb compile failed, In file included from /usr/include/features.h:399:0,
                 from /usr/include/stdio.h:27,
                 from gdb/testsuite/gdb.multi/hangout.c:18:
/usr/include/gnu/stubs.h:8:27: fatal error: gnu/stubs-32.h: \
  No such file or directory
 # include <gnu/stubs-32.h>
                           ^
compilation terminated.
...

The problem is that the test-case attempts to use gcc -m32 to produce an
executable while that's not available.

Fix this by:
- introduce a new caching proc have_compile_and_link_flag, and
- using have_compile_and_link_flag in test-case gdb.multi/multi-arch.exp.

Tested on:
- x86_64-linux (openSUSE Leap 15.4), and
- powerpc64le-linux (CentOS-7).

gdb/testsuite/gdb.multi/multi-arch.exp
gdb/testsuite/lib/gdb.exp

index f2c8a282a61bbf05f5541f6e0c59495389805775..e1fbe1bcab102f8039ee8e5788ed640269426af6 100644 (file)
@@ -50,6 +50,14 @@ if [istarget "s390*-*-*"] {
     set march2 "-m32"
 }
 
+if { $march1 != "" } {
+    require "have_compile_and_link_flag $march1"
+}
+
+if { $march2 != "" } {
+    require "have_compile_and_link_flag $march2"
+}
+
 if { [build_executable "failed to prepare" ${exec1} "${srcfile1}" \
          [list debug additional_flags=${march1}]] } {
     return -1
index 9d711e8aa661579e4e06e0653cdbcc944ded9e1f..45588d85aea320bba24a278d043748cbd629f53d 100644 (file)
@@ -9668,6 +9668,14 @@ gdb_caching_proc have_compile_flag { flag } {
                additional_flags=$flag]
 }
 
+# Return 1 if we can create an executable using compile and link flag FLAG.
+
+gdb_caching_proc have_compile_and_link_flag { flag } {
+    set src { int main () { return 0; } }
+    return [gdb_can_simple_compile have_compile_and_link_flag_$flag $src executable \
+               additional_flags=$flag]
+}
+
 # Handle include file $srcdir/$subdir/FILE.
 
 proc include_file { file } {