[pushed,3/4,gdb/testsuite] Fix gdb.multi/multi-arch.exp on powerpc64le

Message ID 20230424124846.29580-3-tdevries@suse.de
State Committed
Headers
Series [pushed,1/4,gdb/testsuite] Don't use string cat in gdb.dwarf2/dw2-abs-hi-pc.exp |

Commit Message

Tom de Vries April 24, 2023, 12:48 p.m. UTC
  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 | 8 ++++++++
 gdb/testsuite/lib/gdb.exp              | 8 ++++++++
 2 files changed, 16 insertions(+)
  

Patch

diff --git a/gdb/testsuite/gdb.multi/multi-arch.exp b/gdb/testsuite/gdb.multi/multi-arch.exp
index f2c8a282a61..e1fbe1bcab1 100644
--- a/gdb/testsuite/gdb.multi/multi-arch.exp
+++ b/gdb/testsuite/gdb.multi/multi-arch.exp
@@ -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
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 9d711e8aa66..45588d85aea 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -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 } {