* [rfa/testsuite/lib/ping] get_compiler_info: tighten up
@ 2004-06-11 21:25 Michael Elizabeth Chastain
2004-06-14 13:44 ` Andrew Cagney
0 siblings, 1 reply; 2+ messages in thread
From: Michael Elizabeth Chastain @ 2004-06-11 21:25 UTC (permalink / raw)
To: gdb-patches
This patch has been pending for four months. Time for another go-round.
This patch does two things to get_compiler_info.
First, I tweaked the "eval" mechanism to eval only the "set lines".
This stops get_compiler_info from eval'ing random compiler diagnostics.
This fixes a problem reported by Joel B.
Second, as requested by Andrew C, this patch changes the implementation
of gcc_compiled, hp_cc_compiler, and hp_aCC_compiler to be more local
to gdb.exp, with no trace of these symbols in compiler.c and
compiler.cc.
Testing: I tested this on native i686-pc-linux-gnu with gcc 2.95.3
and gcc 3.3.3. I also tested on native hppa2.0w-hp-hpux11.11
with HP ansi-c and HP aCC. Joel B also tested an earlier version of
this and says that it works for him.
Ok to commit?
Michael C
2004-06-11 Michael Chastain <mec.gnu@mindspring.com>
* lib/compiler.c: Remove gcc_compiled, hp_cc_compiler,
hp_aCC_compiler.
* lib/compiler.cc: Likewise.
* lib/gdb.exp (get_compiler_info): Eval lines only if they are
'set' commands. Log diagnostics for other lines. Set
gcc_compiled, hp_cc_compiler, and hp_aCC_compiler.
Index: lib/compiler.c
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/compiler.c,v
retrieving revision 1.4
diff -c -3 -p -r1.4 compiler.c
*** lib/compiler.c 10 Jun 2004 21:38:03 -0000 1.4
--- lib/compiler.c 11 Jun 2004 18:39:31 -0000
***************
*** 34,40 ****
TODO: purge signed_keyword_not_used. */
! set compiler_info ""
#if defined (__GNUC__)
#if defined (__GNUC_PATCHLEVEL__)
--- 34,40 ----
TODO: purge signed_keyword_not_used. */
! set compiler_info "unknown"
#if defined (__GNUC__)
#if defined (__GNUC_PATCHLEVEL__)
*************** set compiler_info [join {gcc __GNUC__ __
*** 43,65 ****
#else
set compiler_info [join {gcc __GNUC__ __GNUC_MINOR__ "unknown"} -]
#endif
- set gcc_compiled __GNUC__
- #else
- set gcc_compiled 0
#endif
#if defined (__HP_cc)
set compiler_info [join {hpcc __HP_cc} -]
- set hp_cc_compiler __HP_cc
- #else
- set hp_cc_compiler 0
#endif
#if defined (__HP_aCC)
set compiler_info [join {hpacc __HP_aCC} -]
- set hp_aCC_compiler __HP_aCC
- #else
- set hp_aCC_compiler 0
#endif
/* gdb.base/whatis.exp still uses this */
--- 43,56 ----
Index: lib/compiler.cc
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/compiler.cc,v
retrieving revision 1.6
diff -c -3 -p -r1.6 compiler.cc
*** lib/compiler.cc 10 Jun 2004 21:38:03 -0000 1.6
--- lib/compiler.cc 11 Jun 2004 18:39:31 -0000
***************
*** 22,28 ****
/* This file is exactly like compiler.c. I could just use compiler.c if
I could be sure that every C++ compiler accepted extensions of ".c". */
! set compiler_info ""
#if defined (__GNUC__)
#if defined (__GNUC_PATCHLEVEL__)
--- 22,28 ----
/* This file is exactly like compiler.c. I could just use compiler.c if
I could be sure that every C++ compiler accepted extensions of ".c". */
! set compiler_info "unknown"
#if defined (__GNUC__)
#if defined (__GNUC_PATCHLEVEL__)
*************** set compiler_info [join {gcc __GNUC__ __
*** 31,53 ****
#else
set compiler_info [join {gcc __GNUC__ __GNUC_MINOR__ "unknown"} -]
#endif
- set gcc_compiled __GNUC__
- #else
- set gcc_compiled 0
#endif
#if defined (__HP_cc)
set compiler_info [join {hpcc __HP_cc} -]
- set hp_cc_compiler __HP_cc
- #else
- set hp_cc_compiler 0
#endif
#if defined (__HP_aCC)
set compiler_info [join {hpacc __HP_aCC} -]
- set hp_aCC_compiler __HP_aCC
- #else
- set hp_aCC_compiler 0
#endif
/* gdb.base/whatis.exp still uses this */
--- 31,44 ----
Index: lib/gdb.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v
retrieving revision 1.51
diff -c -3 -p -r1.51 gdb.exp
*** lib/gdb.exp 21 May 2004 17:26:57 -0000 1.51
--- lib/gdb.exp 11 Jun 2004 18:39:32 -0000
*************** proc get_compiler_info {binfile args} {
*** 1190,1199 ****
# These come from compiler.c or compiler.cc
global compiler_info
global gcc_compiled
global hp_cc_compiler
global hp_aCC_compiler
- global signed_keyword_not_used
# Choose which file to preprocess.
set ifile "${srcdir}/lib/compiler.c"
--- 1190,1201 ----
# These come from compiler.c or compiler.cc
global compiler_info
+ global signed_keyword_not_used
+
+ # Legacy global data symbols.
global gcc_compiled
global hp_cc_compiler
global hp_aCC_compiler
# Choose which file to preprocess.
set ifile "${srcdir}/lib/compiler.c"
*************** proc get_compiler_info {binfile args} {
*** 1207,1221 ****
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
--- 1209,1251 ----
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 signed_keyword_not_used 0
+ }
+
+ # Set the legacy symbols.
+ set gcc_compiled 0
+ set hp_cc_compiler 0
+ set hp_aCC_compiler 0
+ if { [regexp "^gcc-1-" "$compiler_info" ] } { set gcc_compiled 1 }
+ if { [regexp "^gcc-2-" "$compiler_info" ] } { set gcc_compiled 2 }
+ if { [regexp "^gcc-3-" "$compiler_info" ] } { set gcc_compiled 3 }
+ if { [regexp "^gcc-4-" "$compiler_info" ] } { set gcc_compiled 4 }
+ if { [regexp "^gcc-5-" "$compiler_info" ] } { set gcc_compiled 5 }
+ if { [regexp "^hpcc-" "$compiler_info" ] } { set hp_cc_compiler 1 }
+ if { [regexp "^hpacc-" "$compiler_info" ] } { set hp_aCC_compiler 1 }
+
+ # Log what happened.
verbose -log "get_compiler_info: $compiler_info"
# Most compilers will evaluate comparisons and other boolean
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [rfa/testsuite/lib/ping] get_compiler_info: tighten up
2004-06-11 21:25 [rfa/testsuite/lib/ping] get_compiler_info: tighten up Michael Elizabeth Chastain
@ 2004-06-14 13:44 ` Andrew Cagney
0 siblings, 0 replies; 2+ messages in thread
From: Andrew Cagney @ 2004-06-14 13:44 UTC (permalink / raw)
To: Michael Elizabeth Chastain; +Cc: gdb-patches
> This patch has been pending for four months. Time for another go-round.
(I thought it was on hold pending further testing, oops)
> This patch does two things to get_compiler_info.
>
> First, I tweaked the "eval" mechanism to eval only the "set lines".
> This stops get_compiler_info from eval'ing random compiler diagnostics.
> This fixes a problem reported by Joel B.
>
> Second, as requested by Andrew C, this patch changes the implementation
> of gcc_compiled, hp_cc_compiler, and hp_aCC_compiler to be more local
> to gdb.exp, with no trace of these symbols in compiler.c and
> compiler.cc.
>
> Testing: I tested this on native i686-pc-linux-gnu with gcc 2.95.3
> and gcc 3.3.3. I also tested on native hppa2.0w-hp-hpux11.11
> with HP ansi-c and HP aCC. Joel B also tested an earlier version of
> this and says that it works for him.
Just so that there's no transition confusion here, yes, ok by me to
commit :-)
Andrew
> Michael C
>
> 2004-06-11 Michael Chastain <mec.gnu@mindspring.com>
>
> * lib/compiler.c: Remove gcc_compiled, hp_cc_compiler,
> hp_aCC_compiler.
> * lib/compiler.cc: Likewise.
> * lib/gdb.exp (get_compiler_info): Eval lines only if they are
> 'set' commands. Log diagnostics for other lines. Set
> gcc_compiled, hp_cc_compiler, and hp_aCC_compiler.
>
> Index: lib/compiler.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/testsuite/lib/compiler.c,v
> retrieving revision 1.4
> diff -c -3 -p -r1.4 compiler.c
> *** lib/compiler.c 10 Jun 2004 21:38:03 -0000 1.4
> --- lib/compiler.c 11 Jun 2004 18:39:31 -0000
> ***************
> *** 34,40 ****
>
> TODO: purge signed_keyword_not_used. */
>
> ! set compiler_info ""
>
> #if defined (__GNUC__)
> #if defined (__GNUC_PATCHLEVEL__)
> --- 34,40 ----
>
> TODO: purge signed_keyword_not_used. */
>
> ! set compiler_info "unknown"
>
> #if defined (__GNUC__)
> #if defined (__GNUC_PATCHLEVEL__)
> *************** set compiler_info [join {gcc __GNUC__ __
> *** 43,65 ****
> #else
> set compiler_info [join {gcc __GNUC__ __GNUC_MINOR__ "unknown"} -]
> #endif
> - set gcc_compiled __GNUC__
> - #else
> - set gcc_compiled 0
> #endif
>
> #if defined (__HP_cc)
> set compiler_info [join {hpcc __HP_cc} -]
> - set hp_cc_compiler __HP_cc
> - #else
> - set hp_cc_compiler 0
> #endif
>
> #if defined (__HP_aCC)
> set compiler_info [join {hpacc __HP_aCC} -]
> - set hp_aCC_compiler __HP_aCC
> - #else
> - set hp_aCC_compiler 0
> #endif
>
> /* gdb.base/whatis.exp still uses this */
> --- 43,56 ----
> Index: lib/compiler.cc
> ===================================================================
> RCS file: /cvs/src/src/gdb/testsuite/lib/compiler.cc,v
> retrieving revision 1.6
> diff -c -3 -p -r1.6 compiler.cc
> *** lib/compiler.cc 10 Jun 2004 21:38:03 -0000 1.6
> --- lib/compiler.cc 11 Jun 2004 18:39:31 -0000
> ***************
> *** 22,28 ****
> /* This file is exactly like compiler.c. I could just use compiler.c if
> I could be sure that every C++ compiler accepted extensions of ".c". */
>
> ! set compiler_info ""
>
> #if defined (__GNUC__)
> #if defined (__GNUC_PATCHLEVEL__)
> --- 22,28 ----
> /* This file is exactly like compiler.c. I could just use compiler.c if
> I could be sure that every C++ compiler accepted extensions of ".c". */
>
> ! set compiler_info "unknown"
>
> #if defined (__GNUC__)
> #if defined (__GNUC_PATCHLEVEL__)
> *************** set compiler_info [join {gcc __GNUC__ __
> *** 31,53 ****
> #else
> set compiler_info [join {gcc __GNUC__ __GNUC_MINOR__ "unknown"} -]
> #endif
> - set gcc_compiled __GNUC__
> - #else
> - set gcc_compiled 0
> #endif
>
> #if defined (__HP_cc)
> set compiler_info [join {hpcc __HP_cc} -]
> - set hp_cc_compiler __HP_cc
> - #else
> - set hp_cc_compiler 0
> #endif
>
> #if defined (__HP_aCC)
> set compiler_info [join {hpacc __HP_aCC} -]
> - set hp_aCC_compiler __HP_aCC
> - #else
> - set hp_aCC_compiler 0
> #endif
>
> /* gdb.base/whatis.exp still uses this */
> --- 31,44 ----
> Index: lib/gdb.exp
> ===================================================================
> RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v
> retrieving revision 1.51
> diff -c -3 -p -r1.51 gdb.exp
> *** lib/gdb.exp 21 May 2004 17:26:57 -0000 1.51
> --- lib/gdb.exp 11 Jun 2004 18:39:32 -0000
> *************** proc get_compiler_info {binfile args} {
> *** 1190,1199 ****
>
> # These come from compiler.c or compiler.cc
> global compiler_info
> global gcc_compiled
> global hp_cc_compiler
> global hp_aCC_compiler
> - global signed_keyword_not_used
>
> # Choose which file to preprocess.
> set ifile "${srcdir}/lib/compiler.c"
> --- 1190,1201 ----
>
> # These come from compiler.c or compiler.cc
> global compiler_info
> + global signed_keyword_not_used
> +
> + # Legacy global data symbols.
> global gcc_compiled
> global hp_cc_compiler
> global hp_aCC_compiler
>
> # Choose which file to preprocess.
> set ifile "${srcdir}/lib/compiler.c"
> *************** proc get_compiler_info {binfile args} {
> *** 1207,1221 ****
> 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
> --- 1209,1251 ----
> 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 signed_keyword_not_used 0
> + }
> +
> + # Set the legacy symbols.
> + set gcc_compiled 0
> + set hp_cc_compiler 0
> + set hp_aCC_compiler 0
> + if { [regexp "^gcc-1-" "$compiler_info" ] } { set gcc_compiled 1 }
> + if { [regexp "^gcc-2-" "$compiler_info" ] } { set gcc_compiled 2 }
> + if { [regexp "^gcc-3-" "$compiler_info" ] } { set gcc_compiled 3 }
> + if { [regexp "^gcc-4-" "$compiler_info" ] } { set gcc_compiled 4 }
> + if { [regexp "^gcc-5-" "$compiler_info" ] } { set gcc_compiled 5 }
> + if { [regexp "^hpcc-" "$compiler_info" ] } { set hp_cc_compiler 1 }
> + if { [regexp "^hpacc-" "$compiler_info" ] } { set hp_aCC_compiler 1 }
> +
> + # Log what happened.
> verbose -log "get_compiler_info: $compiler_info"
>
> # Most compilers will evaluate comparisons and other boolean
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-06-14 13:44 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-06-11 21:25 [rfa/testsuite/lib/ping] get_compiler_info: tighten up Michael Elizabeth Chastain
2004-06-14 13:44 ` Andrew Cagney
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox