From: Zoran Zaric via Gdb-patches <gdb-patches@sourceware.org>
To: Simon Marchi <simon.marchi@polymtl.ca>, gdb-patches@sourceware.org
Cc: Simon Marchi <simon.marchi@efficios.com>
Subject: Re: [PATCH 05/13] gdb/dwarf: few fixes for handling DW_FORM_{rng,loc}listx
Date: Thu, 28 Jan 2021 15:30:28 +0000 [thread overview]
Message-ID: <33417afd-2642-cde5-12a7-00faac00bdd1@amd.com> (raw)
In-Reply-To: <20210120053925.142862-6-simon.marchi@polymtl.ca>
> From: Simon Marchi <simon.marchi@efficios.com>
>
> We hit an assertion when loading the binary from PR 26813. When fixing
> it, execution goes a up bit further but then hits another assert, and
> another, and another. With these fours fixes, I am able to load the
> binary and get to the prompt. An error is shown (index pointing outside
> of the section), because the DW_FORM_rnglistx attribute is not read
> correctly, but that one is taken care of by the next patch.
>
> The four fixes are:
>
> - attribute::form_requires_reprocessing needs to handle forms
> DW_FORM_rnglistx and DW_FORM_loclistx, because set_unsigned_reprocess
> is called for them in read_attribute_value.
>
> - read_attribute_reprocess must call set_unsigned for them, not
> set_address. The parameter of set_address is a CORE_ADDR, meaning
> it's for program addresses. Post-reprocess, DW_FORM_rnglistx and
> DW_FORM_loclistx are offsets into their respective sections
> (.debug_rnglists and .debug_loclists). set_unsigned is the current
> attribute value setter that fits the best. But perhaps we should have
> a setter that takes a sect_offset?
>
> - read_attribute_process must call as_unsigned_reprocess instead of
> as_unsigned to get the pre-reprocess value, otherwise we hit the
> assert inside as_unsigned that makes sure the attribute doesn't need
> reprocessing.
>
> - attribute::set_unsigned needs to clear the requires_reprocessing flag,
> otherwise it stays set when reprocessing DW_FORM_rnglistx and
> DW_FORM_loclistx attributes.
>
> There's another assert that we hit once the next patch is applied, but
> since it's in the same vein as the changes in this patch, I included it
> in this patch:
>
> - attribute::form_is_unsigned must handle form DW_FORM_loclistx,
> otherwise we hit the assert when trying to call set_unsigned for an
> attribute of this form. DW_FORM_rnglistx is already handled.
>
Agreed.
I came to the same conclusion while investigating this issue, but
unfortunately, didn't have the time to figure out how to fix the
following asserts.
Zoran
next prev parent reply other threads:[~2021-01-28 15:30 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-20 5:39 [PATCH 00/13] DWARF 5 rnglists & loclists fixes (PR 26813) Simon Marchi via Gdb-patches
2021-01-20 5:39 ` [PATCH 01/13] gdb/dwarf: change read_loclist_index complaints into errors Simon Marchi via Gdb-patches
2021-01-28 15:17 ` Zoran Zaric via Gdb-patches
2021-01-28 15:42 ` Simon Marchi via Gdb-patches
2021-02-25 19:20 ` Tom Tromey
2021-01-20 5:39 ` [PATCH 02/13] gdb/dwarf: fix bound check in read_rnglist_index Simon Marchi via Gdb-patches
2021-01-28 15:22 ` Zoran Zaric via Gdb-patches
2021-01-20 5:39 ` [PATCH 03/13] gdb/dwarf: add missing bound check to read_loclist_index Simon Marchi via Gdb-patches
2021-01-20 5:39 ` [PATCH 04/13] gdb/dwarf: remove unnecessary check in read_{rng, loc}list_index Simon Marchi via Gdb-patches
2021-01-20 5:39 ` [PATCH 05/13] gdb/dwarf: few fixes for handling DW_FORM_{rng, loc}listx Simon Marchi via Gdb-patches
2021-01-28 15:30 ` Zoran Zaric via Gdb-patches [this message]
2021-01-20 5:39 ` [PATCH 06/13] gdb/dwarf: read correct rnglist/loclist header in read_{rng, loc}list_index Simon Marchi via Gdb-patches
2021-01-28 15:39 ` [PATCH 06/13] gdb/dwarf: read correct rnglist/loclist header in read_{rng,loc}list_index Zoran Zaric via Gdb-patches
2021-01-28 15:49 ` Simon Marchi via Gdb-patches
2021-01-28 15:54 ` Zoran Zaric via Gdb-patches
2021-01-20 5:39 ` [PATCH 07/13] gdb/dwarf: read DW_AT_ranges value as unsigned in partial_die_info::read Simon Marchi via Gdb-patches
2021-01-28 15:41 ` Zoran Zaric via Gdb-patches
2021-01-28 15:51 ` Simon Marchi via Gdb-patches
2021-01-20 5:39 ` [PATCH 08/13] gdb/testsuite: add .debug_rnglists tests Simon Marchi via Gdb-patches
2021-01-28 16:24 ` Zoran Zaric via Gdb-patches
2021-01-20 5:39 ` [PATCH 09/13] gdb/testsuite: DWARF assembler: add context parameters to _location Simon Marchi via Gdb-patches
2021-01-28 16:30 ` Zoran Zaric via Gdb-patches
2021-01-20 5:39 ` [PATCH 10/13] gdb/testsuite: add .debug_loclists tests Simon Marchi via Gdb-patches
2021-01-28 16:52 ` Zoran Zaric via Gdb-patches
2021-01-28 17:47 ` Simon Marchi via Gdb-patches
2021-01-29 10:13 ` Zoran Zaric via Gdb-patches
2021-01-29 15:57 ` Simon Marchi via Gdb-patches
2021-01-29 16:58 ` Zoran Zaric via Gdb-patches
2021-01-29 17:37 ` Simon Marchi via Gdb-patches
2021-01-20 5:39 ` [PATCH 11/13] gdb/dwarf: split dwarf2_cu::ranges_base in two Simon Marchi via Gdb-patches
2021-01-20 5:39 ` [PATCH 12/13] gdb/dwarf: make read_{loc, rng}list_index return sect_offset Simon Marchi via Gdb-patches
2021-02-25 19:26 ` Tom Tromey
2021-01-20 5:39 ` [PATCH 13/13] gdb/testsuite: add test for .debug_{rng, loc}lists section without offset array Simon Marchi via Gdb-patches
2021-02-02 15:43 ` [PATCH 00/13] DWARF 5 rnglists & loclists fixes (PR 26813) Simon Marchi via Gdb-patches
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=33417afd-2642-cde5-12a7-00faac00bdd1@amd.com \
--to=gdb-patches@sourceware.org \
--cc=Zoran.Zaric@amd.com \
--cc=simon.marchi@efficios.com \
--cc=simon.marchi@polymtl.ca \
/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