more robust get_compiler_info

Michael Elizabeth Chastain
2004-02-05T12:34:40Z

Joel, can you try this patch?

It works for me on native i686-pc-linux-gnu and native
hppa2.0w-hp-hpux11.11. I also gaffed my hpux machine so that the test
suite finds a C compiler but not a C++ compiler, to exercise the
"unknown" path. That works too.

If you don't have any problems with this patch, then I will submit it
in a day or two.

Michael C

2004-02-05 Michael Chastain <mec.gnu@mindspring.com>

* lib/gdb.exp (get_compiler_info): Eval lines only if they are
'set' commands. Log diagnostics for other lines.

Index: gdb.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v
retrieving revision 1.45
diff -c -3 -p -r1.45 gdb.exp
*** gdb.exp 2 Feb 2004 21:14:33 -0000 1.45
--- gdb.exp 5 Feb 2004 09:25:04 -0000
*************** proc get_compiler_info {binfile args} {
*** 1186,1200 ****
set cppout [ gdb_compile "${ifile}" "" preprocess [list "$args" quiet] ]
log_file -a "$outdir/$tool.log"

! # Source the output.
foreach cppline [ split "$cppout" "\n" ] {
! if { ! [ regexp "^#" "$cppline" ] } {
! if { ! [ regexp "^\[\n\r\t \]*$" "$cppline" ] } {
! verbose "get_compiler_info: $cppline" 2
! eval "$cppline"
! }
}
}
verbose -log "get_compiler_info: $compiler_info"

# Most compilers will evaluate comparisons and other boolean
--- 1186,1219 ----
set cppout [ gdb_compile "${ifile}" "" preprocess [list "$args" quiet] ]
log_file -a "$outdir/$tool.log"

! # Eval the output.
! set unknown 0
foreach cppline [ split "$cppout" "\n" ] {
! if { [ regexp "^#" "$cppline" ] } {
! # line marker
! } elseif { [ regexp "^\[\n\r\t \]*$" "$cppline" ] } {
! # blank line
! } elseif { [ regexp "^\[\n\r\t \]*set\[\n\r\t \]" "$cppline" ] } {
! # eval this line
! verbose "get_compiler_info: $cppline" 2
! eval "$cppline"
! } else {
! # unknown line
! verbose -log "get_compiler_info: $cppline"
! set unknown 1
}
}
+
+ # Reset to unknown compiler if any diagnostics happened.
+ if { $unknown } {
+ set compiler_info "unknown"
+ set gcc_compiled 0
+ set hp_cc_compiler 0
+ set hp_ACC_compiler 0
+ set signed_keyword_not_used 0
+ }
+
+ # Log what happened.
verbose -log "get_compiler_info: $compiler_info"

# Most compilers will evaluate comparisons and other boolean