From: Keith Seitz <keiths@redhat.com>
To: "Alexandra Hájková" <ahajkova@redhat.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH] Add dw2-aranges.exp
Date: Wed, 6 Nov 2024 09:58:21 -0800 [thread overview]
Message-ID: <ca07dfad-3ec3-496c-a5c9-7384b895a399@redhat.com> (raw)
In-Reply-To: <20241106163255.2619114-1-ahajkova@redhat.com>
On 11/6/24 8:32 AM, Alexandra Hájková wrote:
>
> I modified the DWARF assembler to make it possible
> to set the Addres size to zero in a .debug_aranges section
> and used a DWARF assembler to produce the assembly file.
Nice. I've only had a quick glance at this, but something
obvious did grab my attention. Please make change locally.
You don't need a v2 just for this.
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-aranges.exp b/gdb/testsuite/gdb.dwarf2/dw2-aranges.exp
> new file mode 100644
> index 00000000000..59e7e27ac96
> --- /dev/null
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-aranges.exp
> @@ -0,0 +1,44 @@
> +# Copyright 2004-2024 Free Software Foundation, Inc.
> +
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 3 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program. If not, see <http://www.gnu.org/licenses/>.
> +
> +# Test .debug_aranges containing zero address_size.
> +
> +# This test can only be run on targets which support DWARF-2 and use gas.
> +# For now pick a sampling of likely targets.
> +load_lib dwarf.exp
> +
> +if {![dwarf2_support]} {
> + verbose "Skipping $gdb_test_file_name."
> + return 0
> +}
Nowadays, we use "require dwarf2_support".
Keith
> +
> +standard_testfile .c -2.S
> +set asm_file [standard_output_file $srcfile2]
> +
> +Dwarf::assemble $asm_file {
> + cu { label cu_start } {
> + compile_unit {{language @DW_LANG_C}} {
> + }
> + }
> + aranges { addr_zero true } cu_start {
> + }
> +}
> +
> +if { [prepare_for_testing "failed to prepare" $binfile [list $asm_file $srcfile ]] } {
> + return -1
> +}
> +
> +# Failed gdb_load would abort the testcase execution earlier.
> +pass "file loaded"
> diff --git a/gdb/testsuite/lib/dwarf.exp b/gdb/testsuite/lib/dwarf.exp
> index 6a5afec3fc8..1002c75dd09 100644
> --- a/gdb/testsuite/lib/dwarf.exp
> +++ b/gdb/testsuite/lib/dwarf.exp
> @@ -2759,8 +2759,11 @@ namespace eval Dwarf {
> set addr_op .4byte
> }
>
> - _op $addr_op $arange_start "Address range start$comment"
> - _op $addr_op $arange_length "Address range length$comment"
> + # Do not emit address ranges when the Address size is set to 0.
> + if { $_addr_size > 0 } {
> + _op $addr_op $arange_start "Address range start$comment"
> + _op $addr_op $arange_length "Address range length$comment"
> + }
> }
>
> # Emit a DWARF .debug_aranges unit.
> @@ -2797,6 +2800,7 @@ namespace eval Dwarf {
> { cu_is_64 0 }
> { section_version 2 }
> { seg_size 0 }
> + { addr_zero false }
> }
> set _seg_size $seg_size
>
> @@ -2806,6 +2810,10 @@ namespace eval Dwarf {
> set _addr_size 4
> }
>
> + if { $addr_zero } {
> + set _addr_size 0
> + }
> +
> # Switch to .debug_aranges section.
> _section .debug_aranges
>
> @@ -2853,6 +2861,9 @@ namespace eval Dwarf {
>
> # Padding.
> set tuple_size [expr 2 * $_addr_size + $_seg_size]
> + if {$tuple_size == 0} {
> + set tuple_size 1
> + }
> while { 1 } {
> if { [expr $offset % $tuple_size] == 0 } {
> break
next prev parent reply other threads:[~2024-11-06 17:58 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-06 16:32 Alexandra Hájková
2024-11-06 17:58 ` Keith Seitz [this message]
2024-11-06 18:58 ` Kevin Buettner
-- strict thread matches above, loose matches on Subject: below --
2024-11-06 16:31 Alexandra Hájková
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ca07dfad-3ec3-496c-a5c9-7384b895a399@redhat.com \
--to=keiths@redhat.com \
--cc=ahajkova@redhat.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox