gdb/testsuite: remove global gcc_compiled from gdb.exp
authorAndrew Burgess <aburgess@redhat.com>
Thu, 9 Jun 2022 14:21:37 +0000 (15:21 +0100)
committerAndrew Burgess <aburgess@redhat.com>
Fri, 24 Jun 2022 14:07:28 +0000 (15:07 +0100)
After this commit the gcc_compiled global is no longer exported from
lib/gdb.exp.  In theory we could switch over all uses of gcc_compiled
to instead call test_compiler_info directly, however, I have instead
added a new proc to gdb.exp: 'is_c_compiler_gcc'.  I've then updated
the testsuite to call this proc instead of using the global.

Having a new proc specifically for this task means that we have a
single consistent pattern for detecting gcc.  By wrapping this logic
within a proc that calls test_compiler_info, rather than using the
global, means that test scripts don't need to call get_compiler_info
before they read the global, simply calling the new proc does
everything in one go.

As a result I've been able to remove the get_compiler_info calls from
all the test scripts that I've touched in this commit.

In some of the tests e.g. gdb.dwarf2/*.exp, the $gcc_compiled flag was
being checked at the top of the script to decide if the whole script
should be skipped or not.  In these cases I've called the new proc
directly and removed all uses of gcc_compiled.

In other cases, e.g. most of the gdb.base scripts, there were many
uses of gcc_compiled.  In these cases I set a new global gcc_compiled
near the top of the script, and leave the rest of the script
unchanged.

There should be no changes in what is tested after this commit.

37 files changed:
gdb/testsuite/gdb.base/ctf-ptype.exp
gdb/testsuite/gdb.base/funcargs.exp
gdb/testsuite/gdb.base/gdb1555.exp
gdb/testsuite/gdb.base/langs.exp
gdb/testsuite/gdb.base/morestack.exp
gdb/testsuite/gdb.base/opaque.exp
gdb/testsuite/gdb.base/prelink.exp
gdb/testsuite/gdb.base/ptype.exp
gdb/testsuite/gdb.base/setvar.exp
gdb/testsuite/gdb.base/type-opaque.exp
gdb/testsuite/gdb.base/until-trailing-insns.exp
gdb/testsuite/gdb.base/whatis.exp
gdb/testsuite/gdb.ctf/funcreturn.exp
gdb/testsuite/gdb.dwarf2/dw2-disasm-over-non-stmt.exp
gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp
gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp
gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp
gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.exp
gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp
gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.exp
gdb/testsuite/gdb.dwarf2/dw2-is-stmt-2.exp
gdb/testsuite/gdb.dwarf2/dw2-is-stmt.exp
gdb/testsuite/gdb.dwarf2/dw2-line-number-zero.exp
gdb/testsuite/gdb.dwarf2/dw2-main-no-line-number.exp
gdb/testsuite/gdb.dwarf2/dw2-out-of-range-end-of-seq.exp
gdb/testsuite/gdb.dwarf2/dw2-ranges-base.exp
gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp
gdb/testsuite/gdb.dwarf2/dw2-ranges-overlap.exp
gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.exp
gdb/testsuite/gdb.dwarf2/dw2-ranges.exp
gdb/testsuite/gdb.dwarf2/dw2-step-out-of-function-no-stmt.exp
gdb/testsuite/gdb.dwarf2/dw2-vendor-extended-opcode.exp
gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp.tcl
gdb/testsuite/gdb.threads/tls-shared.exp
gdb/testsuite/gdb.threads/tls-so_extern.exp
gdb/testsuite/lib/compiler.c
gdb/testsuite/lib/gdb.exp

index c8d91814f0ef87a022bac3736827b48604b9ec2a..48d39e56c7bdf5a836dc449676a84ece46593c13 100644 (file)
@@ -20,6 +20,9 @@ if [skip_ctf_tests] {
     return 0
 }
 
+# Some tests require GCC.
+set gcc_compiled [is_c_compiler_gcc]
+
 standard_testfile .c
 
 # Using `-gctf` generates full-fledged CTF debug information.
@@ -30,12 +33,6 @@ if { [prepare_for_testing "failed to prepare" ${testfile} \
     return 0
 }
 
-# Create and source the file that provides information about the compiler
-# used to compile the test case.
-if [get_compiler_info] {
-    return -1
-}
-
 # Test ptype of unnamed enumeration members before any action causes
 # the partial symbol table to be expanded to full symbols.  This fails
 # with stabs compilers which fail to use a nameless stab (such as
index 96448dc2c9a123eeb97717630ac8e130f70505ab..483fbd9426367f4b67e298f2af4d9cf40fe8f96b 100644 (file)
 
 standard_testfile
 
+set gcc_compiled [is_c_compiler_gcc]
+
 set compile_flags {debug nowarnings quiet}
 if [support_complex_tests] {
     lappend compile_flags "additional_flags=-DTEST_COMPLEX"
 }
 
-# Create and source the file that provides information about the compiler
-# used to compile the test case.
-if [get_compiler_info] {
-    return -1
-}
-
 set skip_float_test [gdb_skip_float_test]
 
 if {[prepare_for_testing "failed to prepare" $testfile $srcfile $compile_flags]} {
index 958cca1a63ed69377a4eb2ce4b8e78eae60850ab..c8c86edbc23fb98017af16afeffa946a0ed6eaf1 100644 (file)
@@ -30,11 +30,6 @@ set execsrc "${srcdir}/${subdir}/${srcfile}"
 
 remote_exec build "rm -f ${binfile}"
 
-# get the value of gcc_compiled
-if [get_compiler_info] {
-    return -1
-}
-
 if { [gdb_compile_shlib $libsrc $libobj {debug}] != ""
      || [gdb_compile $execsrc ${binfile} executable \
             [list debug shlib=${libobj}]] != "" } {
index 9c78a8a439713d657ac1f6757b6aad4a500c83d7..a21ce5ce3c42a8d3943765a2c1470f48ea8666ce 100644 (file)
@@ -30,13 +30,8 @@ if {[prepare_for_testing "failed to prepare" ${testfile} \
 set oldtimeout $timeout
 set timeout 10
 
-
-
-# Create and source the file that provides information about the compiler
-# used to compile the test case.
-if [get_compiler_info] {
-    return -1
-}
+# Some tests require GCC.
+set gcc_compiled [is_c_compiler_gcc]
 
 gdb_test_multiple "b -qualified langs0" "break on nonexistent function in langs.exp" {
        -re "Function \"langs0\" not defined\..*Make breakpoint pending on future shared library load.*y or .n.. $" {
index 13c7ed1c1fcb1a2d2d4578f44d808fa10e998509..31f7d1a72d045dc2870297f3eeb2a6f16d4f35be 100644 (file)
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-if [get_compiler_info] {
-    return -1
-}
-
-if {$gcc_compiled == 0} {
-    return -1
+if {![is_c_compiler_gcc]} {
+    unsupported "gcc compiler is required"
+    return
 }
 
 standard_testfile
index c3e760ca36821513264f30bb708d4a78f1a8f9b4..4d7a325788061453a2c96cf5c5675f1a1f1f43fe 100644 (file)
 
 # This file was written by Fred Fish. (fnf@cygnus.com)
 
-
-# Create and source the file that provides information about the compiler
-# used to compile the test case.
-if [get_compiler_info] {
-    return -1
-}
-
 standard_testfile opaque0.c opaque1.c
 
+# Some tests require GCC.
+set gcc_compiled [is_c_compiler_gcc]
+
 if {[prepare_for_testing "failed to prepare" $testfile \
         [list $srcfile $srcfile2] debug]} {
     return -1
index e0a090e3b78cd965d66250ba1c0a4be09e580c21..8145a5b8a68f2b75393b2704e6d0ff0e5c30ae86 100644 (file)
@@ -23,11 +23,8 @@ if { ![isnative] || [is_remote host] || [skip_shlib_tests]} {
     return
 }
 
-if [get_compiler_info] {
-    return -1
-}
-
-if {$gcc_compiled == 0} {
+if {![is_c_compiler_gcc]} {
+    unsupported "gcc compiler is required"
     return -1
 }
 
index 854acc9c457e3f728d95e494aabec2e41532871b..0fee624d1dbdde869641317d3e4a1b6ca01abb52 100644 (file)
@@ -26,11 +26,8 @@ if {[prepare_for_testing "failed to prepare" ${testfile} \
     return -1
 }
 
-# Create and source the file that provides information about the compiler
-# used to compile the test case.
-if [get_compiler_info] {
-    return -1
-}
+# Some tests require GCC.
+set gcc_compiled [is_c_compiler_gcc]
 
 # Test ptype of unnamed enumeration members before any action causes
 # the partial symbol table to be expanded to full symbols.  This fails
index 576df2a066c4605649aa6ff62aa5e200376f1b7e..3d6c5700a490b92290f710c3f302e0acfa3a1ec5 100644 (file)
 
 standard_testfile
 
-# Create and source the file that provides information about the compiler
-# used to compile the test case.
-if [get_compiler_info] {
-    return -1
-}
-
 if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
     return -1
 }
@@ -395,7 +389,7 @@ set timeout $prev_timeout
 # Test printing of enumeration bitfields.
 # GNU C supports them, some other compilers don't.
 
-if {$gcc_compiled} then {
+if {[is_c_compiler_gcc]} then {
     gdb_test "print sef.field=sm1" ".*.\[0-9\]* = sm1"
     gdb_test "print sef.field" ".*.\[0-9\]* = sm1" "print sef.field (sm1)"
     gdb_test "print sef.field=s1" ".*.\[0-9\]* = s1"
index 4608bec1e8984b471faf8b569a63674b657a26b9..6370c99565780037307f79952c07fc43f721d4b9 100644 (file)
@@ -28,11 +28,6 @@ set execsrc "${srcdir}/${subdir}/${srcfile}"
 
 remote_exec build "rm -f ${binfile}"
 
-# get the value of gcc_compiled
-if [get_compiler_info] {
-    return -1
-}
-
 if { [gdb_compile_shlib $libsrc $libobj {debug}] != ""
      || [gdb_compile $execsrc ${binfile} executable \
             [list debug shlib=${libobj}]] != "" } {
index ca5b388c0a6632f37b6ab60046b45e8fbd129430..6396b6650c1ce0a413f38b2f922051ef173a3ab7 100644 (file)
@@ -84,12 +84,8 @@ if {![dwarf2_support]} {
     return 0
 }
 
-if [get_compiler_info] {
-    return -1
-}
-
 # The DWARF assembler requires the gcc compiler.
-if {!$gcc_compiled} {
+if {![is_c_compiler_gcc]} {
     unsupported "gcc is required for this test"
     return 0
 }
index d856e336c217f5d3ec01395c2585bf4a5a313475..2bce3f5cdcb413743403c04aa0bc9e79b12d3f3f 100644 (file)
@@ -25,6 +25,9 @@ if [target_info exists no_long_long] {
     set exec_opts [list debug]
 }
 
+# Some tests require GCC.
+set gcc_compiled [is_c_compiler_gcc]
+
 standard_testfile .c
 
 # Define a procedure to set up an xfail for all targets that put out a
index fe4e045d0cee2813e360170ebcfce8a7360b8112..ea01e860a849e1c820d75b1a92612b47f98301ee 100644 (file)
@@ -24,6 +24,9 @@ if [target_info exists no_long_long] {
     set exec_opts [list debug]
 }
 
+# Some tests require GCC.
+set gcc_compiled [is_c_compiler_gcc]
+
 standard_testfile whatis.c
 
 # Using `-gctf` generates full-fledged CTF debug information.
@@ -34,12 +37,6 @@ if { [prepare_for_testing "failed to prepare" ${testfile} \
     return 0
 }
 
-# Create and source the file that provides information about the compiler
-# used to compile the test case.
-if [get_compiler_info] {
-    return -1
-}
-
 # test print command with functions return type
 set void "(void|)"
 gdb_test "print v_char_func" \
index 5311dd61a4c72962b6aec4252616faa660ba0b41..11cc347570ab6c27561fdcf1f182c4218c34c9ad 100644 (file)
@@ -30,10 +30,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     return 0
 }
 
index 19f06adef7b2b5190e6a65d912967ea7c82e7d86..de33da9d8d4b1cdcc5785e54eff08796271681b1 100644 (file)
@@ -58,10 +58,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     return 0
 }
 
index 198f355399796632285292b6b70252c74f8b05b2..25d77263c0a7a2001e76b06d0417c65539d83160 100644 (file)
@@ -53,10 +53,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     return 0
 }
 
index 68261aa78b0a90bf4b46a7dc6372a282a979cbce..fc4b228d5b66a315f7ed7fd9e09d3a18051137fd 100644 (file)
@@ -42,10 +42,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     return 0
 }
 
index 9055244979db176096f45008572f7684a067531e..e4f6b278aea7053d84b67060842e0b4a632ac91e 100644 (file)
@@ -31,10 +31,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     return 0
 }
 
index 05286ad6d2fb5c79de1908fa9eff6a24a1df2438..a61f1625499422c6d272b0af21ec07338be1860c 100644 (file)
@@ -32,10 +32,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     return 0
 }
 
index bd90715c198249f85f382cf063416b43230797c6..b5e8957f1077e4b8bdc4a91e31d6850fef814664 100644 (file)
@@ -31,10 +31,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     return 0
 }
 
index 239f5f1d9e9677848ea1027470f842866e92db4a..5176bd34b209d8c007c0804864327dd9f7dc845e 100644 (file)
@@ -31,10 +31,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     return 0
 }
 
index c449757becb499805a6638b1d1009f9827729372..48dae27fa75e565bf68ad93b6ed6db05e4a2368e 100644 (file)
@@ -31,10 +31,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     return 0
 }
 
index 0c5eed9814f448c2bd380a031bd58458744dbac3..4af702ecc4a445ea9002596f2939b4097ba6db1d 100644 (file)
@@ -21,10 +21,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     verbose "Skipping $gdb_test_file_name."
     return 0
 }
index c8fd729120e3d896e9e59efb09e3e787802b5a28..75d85d2a582731808103d32c8f7d63b045733bec 100644 (file)
@@ -25,10 +25,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     verbose "Skipping $gdb_test_file_name."
     return 0
 }
index f030e1edc1f4dd0c4e5411287a685d50af81e5d2..170500b6045ebbc3f549d1391084f456c96358a4 100644 (file)
@@ -25,10 +25,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     verbose "Skipping $gdb_test_file_name."
     return 0
 }
index 17530c8cc4b93b40c328b055abe4cfeb0331b936..78962d562900f12ee85111a11ac14ea311ab1305 100644 (file)
@@ -24,10 +24,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     verbose "Skipping $gdb_test_file_name."
     return 0
 }
index aa95dae6bfcd83fce8cee21e9f97ce7c549441ce..11f19f141a114d2751125ff4737bfab961a4486d 100644 (file)
@@ -22,10 +22,7 @@ if {![dwarf2_support]} {
     return 0
 }
 
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     unsupported "gcc required for this test"
     return 0
 }
index 7ef4f5e5b1e89f17b69686b5229ebe9e2f87e236..830258d315474ad1ed58c294870f77154f821354 100644 (file)
@@ -28,10 +28,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     verbose "Skipping $gdb_test_file_name."
     return 0
 }
index 132f1e9f7382d140d8b97ce1121497f6ae2746a1..824d7ba8085a5e6c3581c242dd91c87a301f0e23 100644 (file)
@@ -23,10 +23,7 @@ if {![dwarf2_support]} {
     return 0
 }
 
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     unsupported "gcc required for this test"
     return 0
 }
index 4c3ae6bbf0aa36e534f6c9518df94f26866d2dae..e2d6d75044caecc8878be768b03680915e5eafac 100644 (file)
@@ -24,10 +24,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     verbose "Skipping $gdb_test_file_name."
     return 0  
 }
index 29e6858e04b9c2192ebb0d562e3e617729306584..b2d5763c539211599bca9178f297c22eca341eeb 100644 (file)
@@ -34,10 +34,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     verbose "Skipping $gdb_test_file_name."
     return 0
 }
index de8c82bb40cac7b499f66cd7487704133467e74a..24299d45459afc87df9d25af14fef51037449b4e 100644 (file)
@@ -21,10 +21,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     verbose "Skipping $gdb_test_file_name."
     return 0
 }
index fe92c530888d43656672cd2eee29d29f147aa0e4..aea04be1d6c6c0c566282d12a5e0f2f9da045e17 100644 (file)
@@ -23,10 +23,7 @@ if {![dwarf2_support]} {
 }
 
 # The .c files use __attribute__.
-if [get_compiler_info] {
-    return -1
-}
-if !$gcc_compiled {
+if ![is_c_compiler_gcc] {
     return 0
 }
 
index fb34677f8748587b5e91dbe63cc5e94b7326da30..cff80f86049712b24f59f6939bed4f8808274240 100644 (file)
@@ -23,12 +23,6 @@ set binfile_lib [standard_output_file ${libfile}.so]
 
 remote_exec build "rm -f ${binfile}"
 
-# get the value of gcc_compiled
-if [get_compiler_info] {
-    return -1
-}
-
-
 if { [gdb_compile_shlib_pthreads ${srcdir}/${subdir}/${srcfile_lib} ${binfile_lib} {debug}] != ""
      || [gdb_compile_pthreads ${srcdir}/${subdir}/${srcfile} ${binfile} executable [list debug shlib=${binfile_lib}]] != ""} {
     return -1
index be6e03fd88dc95bad34b1316029a41f35268af3c..e6783175904c79802de2ad28301f79ff6b183aed 100644 (file)
@@ -22,12 +22,6 @@ set srcfile_lib ${libfile}.c
 set binfile_lib [standard_output_file ${libfile}.so]
 
 
-# get the value of gcc_compiled
-if [get_compiler_info] {
-    return -1
-}
-
-
 if { [gdb_compile_shlib_pthreads ${srcdir}/${subdir}/${srcfile_lib} ${binfile_lib} {debug}] != ""
      || [gdb_compile_pthreads ${srcdir}/${subdir}/${srcfile} ${binfile} executable [list debug shlib=${binfile_lib}]] != ""} {
     return -1
index 86140f8c0e74c037800c32bd7e90126406eb5a3d..25316abb4072e7a4677ef54f4df9b9b26fa9bf61 100644 (file)
@@ -27,9 +27,6 @@
    TODO: make compiler_info a local variable for get_compiler_info and
    test_compiler_info.
 
-   TODO: all clients should use test_compiler_info and should not
-   use gcc_compiled.
-
    */
 
 set compiler_info "unknown"
index 975e861b0f62a8b3c9a67fbfca40170b6f72fc10..efbe393f72a964caeb80643844a18e26e0fe4543 100644 (file)
@@ -4043,8 +4043,6 @@ if [info exists compiler_info] {
     unset compiler_info
 }
 
-set gcc_compiled               0
-
 # Figure out what compiler I am using.
 # The result is cached so only the first invocation runs the compiler.
 #
@@ -4178,16 +4176,6 @@ proc get_compiler_info {{language "c"}} {
 
     set compiler_info_cache($language) $compiler_info
 
-    # Set the legacy symbol gcc_compiled.
-    if { $language == "c" } {
-       # Legacy global data symbols.
-       gdb_persistent_global gcc_compiled
-
-       set gcc_compiled 0
-
-       regexp "^gcc-(\[0-9\]+)-" "$compiler_info" matchall gcc_compiled
-    }
-
     # Log what happened.
     verbose -log "get_compiler_info: $compiler_info"
 
@@ -4220,6 +4208,15 @@ proc test_compiler_info { {compiler ""} {language "c"} } {
     return [string match $compiler $compiler_info_cache($language)]
 }
 
+# Return true if the C compiler is GCC, otherwise, return false.
+
+proc is_c_compiler_gcc {} {
+    set compiler_info [test_compiler_info]
+    set gcc_compiled false
+    regexp "^gcc-(\[0-9\]+)-" "$compiler_info" matchall gcc_compiled
+    return $gcc_compiled
+}
+
 # Return the gcc major version, or -1.
 # For gcc 4.8.5, the major version is 4.8.
 # For gcc 7.5.0, the major version 7.