[PATCH 1/2 ver 2] Fix reverse stepping multiple contiguous PC ranges over the line table.

Carl Love via Gdb-patches
2023-06-23T20:05:19Z

Simon, GDB maintainers:

Version 2, updated the compiler check and handling for gcc version 6
and earlier. Retested on Power 10.

Per the comments on version 4 for the gdb.reverse/func-map-to-same-
line.exp, I have added support to proc gdb_compile to enable or disable
generating line information as part of the debug information. The two
new options are column-info and no-column-info.

This patch implements the new options for gdb_compile.

These options have been tested with patch 2 of 2 on PowerPC with the
GCC and clang compilers.

Please let me know if the patch is acceptable for mainline. Thanks.

Carl

-----------------------------
Add gdb_compile options column-info and no-column-info

This patch adds two new options to gdb_compile to specify if the compile
should or should not generate the line table information. The
options are supported on clang and gcc version 7 and newer.

Patch has been tested on PowerPC with both gcc and clang.
---
gdb/testsuite/lib/gdb.exp | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)

diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index aed7e2d043c..5857c59a47a 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -4794,6 +4794,8 @@ proc quote_for_host { args } {
# debug information
# - text_segment=addr: Tell the linker to place the text segment at ADDR.
# - build-id: Ensure the final binary includes a build-id.
+# - no-column-info: Disable generation of column table information.
+# - column-info: Enable generation of column table information.
#
# And here are some of the not too obscure options understood by DejaGnu that
# influence the compilation:
@@ -5003,6 +5005,38 @@ proc gdb_compile {source dest type options} {
} else {
error "Don't know how to handle text_segment option."
}
+ } elseif { $opt == "column-info" } {
+ # If GCC or clang does not support column-info, compilation
+ # will fail and the usupported column-info option will be
+ # reported as such.
+ if {[test_compiler_info {gcc-*}]} {
+ lappend new_options "additional_flags=-gcolumn-info"
+
+ } elseif {[test_compiler_info {clang-*}]} {
+ lappend new_options "additional_flags=-gcolumn-info"
+
+ } else {
+ error "Don't know how to handle gcolumn-info option."
+ }
+
+ } elseif { $opt == "no-column-info" } {
+ if {[test_compiler_info {gcc-*}]} {
+ if {[test_compiler_info {gcc-[1-6]-*}]} {
+ # In this case, don't add the compile line option and
+ # the result will be the same as using no-column-info
+ # on a version that supports the option.
+ warning "gdb_compile option no-column-info not supported, ignoring."
+ } else {
+ lappend new_options "additional_flags=-gno-column-info"
+ }
+
+ } elseif {[test_compiler_info {clang-*}]} {
+ lappend new_options "additional_flags=-gno-column-info"
+
+ } else {
+ error "Don't know how to handle gno-column-info option."
+ }
+
} else {
lappend new_options $opt
}
--
2.37.2