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

Carl Love via Gdb-patches
2023-07-06T15:08:23Z

GDB maintainers:

I believe Simon is on parental leave now. He mentioned in a private
email before he sent the last set of comments that he was expecting to
go on parental leave shortly.

Just wondering if anyone else would be willing to take a look at my
feedback on his questions and changes per his comments to see if we can
move these two patches forward. Thanks

Carl
-------------------------------------------

On Fri, 2023-06-23 at 13:04 -0700, Carl Love wrote:
> 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
> }