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.
This commit is contained in:
parent
a8654e7d78
commit
331733cd4e
2 changed files with 24 additions and 1 deletions
|
@ -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>
|
2020-06-23 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||||
|
|
||||||
* gdb.xml/tdesc-reload.c: New file.
|
* gdb.xml/tdesc-reload.c: New file.
|
||||||
|
|
|
@ -3826,7 +3826,8 @@ set gdb_saved_set_unbuffered_mode_obj ""
|
||||||
# - ldflags=flag: Add FLAG to the linker flags.
|
# - ldflags=flag: Add FLAG to the linker flags.
|
||||||
# - incdir=path: Add PATH to the searched include directories.
|
# - incdir=path: Add PATH to the searched include directories.
|
||||||
# - libdir=path: Add PATH to the linker searched 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.
|
# - debug: Build with debug information.
|
||||||
# - optimize: Build with optimization.
|
# - optimize: Build with optimization.
|
||||||
|
|
||||||
|
@ -3850,6 +3851,23 @@ proc gdb_compile {source dest type options} {
|
||||||
set new_options [universal_compile_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
|
# Place (and look for) Fortran `.mod` files in the output
|
||||||
# directory for this specific test.
|
# directory for this specific test.
|
||||||
if {[lsearch -exact $options f77] != -1 \
|
if {[lsearch -exact $options f77] != -1 \
|
||||||
|
|
Loading…
Add table
Reference in a new issue