From: Tom de Vries Date: Mon, 24 Apr 2023 12:48:06 +0000 (+0200) Subject: [gdb/testsuite] Fix gdb.multi/multi-arch.exp on powerpc64le X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ac3c4894cfbfc876fffd193ebf6f6ff55ef62318;p=binutils-gdb.git [gdb/testsuite] Fix gdb.multi/multi-arch.exp on powerpc64le 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 ^ 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). --- 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 } {