diff options
author | Pedro Alves <palves@redhat.com> | 2020-06-24 23:18:19 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2020-06-24 23:18:19 +0100 |
commit | 331733cd4e2f2fe76c0b7b6fdd81e54724572354 (patch) | |
tree | 4a86f24cb20610f3934dcac2409a1cd5a049b11e | |
parent | a8654e7d784980cb4596f685964200fcc1164c78 (diff) | |
download | gdb-331733cd4e2f2fe76c0b7b6fdd81e54724572354.zip gdb-331733cd4e2f2fe76c0b7b6fdd81e54724572354.tar.gz gdb-331733cd4e2f2fe76c0b7b6fdd81e54724572354.tar.bz2 |
W/ Clang, compile C/C++ testcases with -Wno-unknown-warning-option
Some C/C++ testcases unconditionally pass -Wno-foo as additional
options to disable some warning. That is OK with GCC, because GCC
accepts -Wno-foo silently even if it doesn't support -Wfoo. This is a
feature which allows disabling warnings with newer compilers without
breaking builds with older compilers. Clang however warns about
unknown -Wno-foo by default, unless you pass
-Wno-unknown-warning-option as well:
$ gcc -Wno-foo test.c
* nothing, compiles successfuly *
$ clang -Wno-foo test.c
warning: unknown warning option '-Wno-foo [-Wunknown-warning-option]
This commit adds -Wunknown-warning-option centrally in gdb_compile, so
that individual testcases don't have to worry about breaking older
Clangs.
IOW, this avoids this problematic scenario:
#1 - A testcase compiles successfully with Clang version X.
#2 - Clang version "X + 1" adds a new warning, enabled by default,
which breaks the test.
#3 - We add -Wno-newwarning to the testcase, fixing the testcase with
clang "X + 1".
#4 - Now building the test with Clang version X no longer works, due
to "unknown warning option".
gdb/testsuite/ChangeLog:
2020-06-24 Pedro Alves <palves@redhat.com>
* lib/gdb.exp (gdb_compile): Update intro comment. If C/C++ with
Clang, add "-Wno-unknown-warning-option" to the options.
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 20 |
2 files changed, 24 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 26284da..6f4d99d 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-06-24 Pedro Alves <palves@redhat.com> + + * lib/gdb.exp (gdb_compile): Update intro comment. If C/C++ with + Clang, add "-Wno-unknown-warning-option" to the options. + 2020-06-23 Andrew Burgess <andrew.burgess@embecosm.com> * gdb.xml/tdesc-reload.c: New file. diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 7b243f5..6b4f71b 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -3826,7 +3826,8 @@ set gdb_saved_set_unbuffered_mode_obj "" # - ldflags=flag: Add FLAG to the linker flags. # - incdir=path: Add PATH to the searched include directories. # - libdir=path: Add PATH to the linker searched directories. -# - ada, c++, f77: Compile the file as Ada, C++ or Fortran. +# - ada, c++, f77, f90, go, rust: Compile the file as Ada, C++, +# Fortran 77, Fortran 90, Go or Rust. # - debug: Build with debug information. # - optimize: Build with optimization. @@ -3850,6 +3851,23 @@ proc gdb_compile {source dest type options} { set new_options [universal_compile_options] } + # Some C/C++ testcases unconditionally pass -Wno-foo as additional + # options to disable some warning. That is OK with GCC, because + # by design, GCC accepts any -Wno-foo option, even if it doesn't + # support -Wfoo. Clang however warns about unknown -Wno-foo by + # default, unless you pass -Wno-unknown-warning-option as well. + # We do that here, so that individual testcases don't have to + # worry about it. + if {[lsearch -exact $options getting_compiler_info] == -1 + && [lsearch -exact $options rust] == -1 + && [lsearch -exact $options ada] == -1 + && [lsearch -exact $options f77] == -1 + && [lsearch -exact $options f90] == -1 + && [lsearch -exact $options go] == -1 + && [test_compiler_info "clang-*"]} { + lappend new_options "additional_flags=-Wno-unknown-warning-option" + } + # Place (and look for) Fortran `.mod` files in the output # directory for this specific test. if {[lsearch -exact $options f77] != -1 \ |