mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 22:07:58 +08:00
Detect and report incompatible gdb_compile options
In commits 221db974e653659edb280787af1b3efdd1615083 and 68d654afdfcff840ebb3ae432ed72dca0521d670, these patches: 2020-06-24 Pedro Alves <palves@redhat.com> * lib/gdb.exp (gdb_compile): Pass "-x c++" explicitly when compiling C++ programs. 2020-09-25 Gary Benson <gbenson@redhat.com> * lib/gdb.exp (gdb_compile): Pass "-x c++" earlier, and only for .c files. attempted to fix problems with testcases that compile .c files using the C++ compiler. These patches cause gdb_compile to add "-x c++" to the compiler options when using Clang. This fix does not work for gdb.base/print-file-var.exp, however, which attempts to compile a .c input file to an executable linked with shared libraries: the resulting command caused the compiler to attempt to parse the .so files as C++. This commit causes gdb_compile to reject this combination of options. gdb/testsuite/ChangeLog: * lib/gdb.exp (gdb_compile): Inhibit passing "-x c++" for .c files compiled as C++ with Clang if any shared libraries are specified.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2020-11-02 Gary Benson <gbenson@redhat.com>
|
||||||
|
|
||||||
|
* lib/gdb.exp (gdb_compile): Inhibit passing "-x c++"
|
||||||
|
for .c files compiled as C++ with Clang if any shared
|
||||||
|
libraries are specified.
|
||||||
|
|
||||||
2020-11-02 Gary Benson <gbenson@redhat.com>
|
2020-11-02 Gary Benson <gbenson@redhat.com>
|
||||||
|
|
||||||
* lib/attributes.h: New header.
|
* lib/attributes.h: New header.
|
||||||
|
@ -3960,9 +3960,20 @@ proc gdb_compile {source dest type options} {
|
|||||||
# explicitly force C++ language.
|
# explicitly force C++ language.
|
||||||
if { [lsearch -exact $options getting_compiler_info] == -1
|
if { [lsearch -exact $options getting_compiler_info] == -1
|
||||||
&& [lsearch -exact $options c++] != -1
|
&& [lsearch -exact $options c++] != -1
|
||||||
&& [string match *.c $source] != 0
|
&& [string match *.c $source] != 0 } {
|
||||||
&& [test_compiler_info "clang-*"] } {
|
|
||||||
lappend new_options early_flags=-x\ c++
|
# gdb_compile cannot handle this combination of options, the
|
||||||
|
# result is a command like "clang -x c++ foo.c bar.so -o baz"
|
||||||
|
# which tells Clang to treat bar.so as C++. The solution is
|
||||||
|
# to call gdb_compile twice--once to compile, once to link--
|
||||||
|
# either directly, or via build_executable_from_specs.
|
||||||
|
if { [lsearch $options shlib=*] != -1 } {
|
||||||
|
error "incompatible gdb_compile options"
|
||||||
|
}
|
||||||
|
|
||||||
|
if {[test_compiler_info "clang-*"]} {
|
||||||
|
lappend new_options early_flags=-x\ c++
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Place (and look for) Fortran `.mod` files in the output
|
# Place (and look for) Fortran `.mod` files in the output
|
||||||
|
Reference in New Issue
Block a user