This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

more robust get_compiler_info


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]