From: Doug Evans <dje@google.com>
To: Yao Qi <yao@codesourcery.com>
Cc: <gdb-patches@sourceware.org>
Subject: Re: [PATCH 2/2] Check function is GC'ed
Date: Fri, 15 Aug 2014 04:40:00 -0000 [thread overview]
Message-ID: <21485.36660.648927.89507@ruffy.mtv.corp.google.com> (raw)
In-Reply-To: <1407307813-5321-2-git-send-email-yao@codesourcery.com>
Yao Qi writes:
> I see the following fail on arm-none-eabi target,
>
> (gdb) b 24^M
> Breakpoint 1 at 0x4: file
> ../../../../git/gdb/testsuite/gdb.base/break-on-linker-gcd-function.cc,
> line 24.^M
> (gdb) FAIL: gdb.base/break-on-linker-gcd-function.exp: b 24
>
> Currently, we are using flag has_section_at_zero to determine whether
> address zero in debug info means the corresponding code has been
> GC'ed, like this:
>
> case DW_LNE_set_address:
> address = read_address (abfd, line_ptr, cu, &bytes_read);
>
> if (address == 0 && !dwarf2_per_objfile->has_section_at_zero)
> {
> /* This line table is for a function which has been
> GCd by the linker. Ignore it. PR gdb/12528 */
>
> However, this is incorrect on some bare metal targets, as .text
> section is located at 0x0. In this patch, we choose 'textlow' field
> of partial symtabl. This patch fixes the fail above. It is
> regression tested on x86_64-linux, arm-none-eabi,
> arm-none-linux-gnueabi. OK to apply?
Something in this explanation doesn't feel right.
If .text is at zero then has_section_at_zero should be true.
Perhaps the explanation just needs more elaboration,
but looking at break-on-linker-gcd-function.exp
the problem seems to be more that the test is invalid
when .text begins at 0x0.
If the testcase is invalid in this context (and
we can discuss ways in which to cope with that),
is there still a real bug here?
>
> gdb:
>
> 2014-08-06 Yao Qi <yao@codesourcery.com>
>
> * dwarf2read.c (dwarf_decode_lines_1): Skip the line table if
> PST->textlow is greater than zero.
> ---
> gdb/dwarf2read.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
> index 8011e4e..5e292f2 100644
> --- a/gdb/dwarf2read.c
> +++ b/gdb/dwarf2read.c
> @@ -17229,6 +17229,8 @@ dwarf_decode_lines_1 (struct line_header *lh, const char *comp_dir,
> /* Decode the table. */
> while (!end_sequence)
> {
> + struct partial_symtab *pst = NULL;
> +
> op_code = read_1_byte (abfd, line_ptr);
> line_ptr += 1;
> if (line_ptr > line_end)
> @@ -17291,7 +17293,12 @@ dwarf_decode_lines_1 (struct line_header *lh, const char *comp_dir,
> case DW_LNE_set_address:
> address = read_address (abfd, line_ptr, cu, &bytes_read);
>
> - if (address == 0 && !dwarf2_per_objfile->has_section_at_zero)
> + if (!decode_for_pst_p)
> + pst = cu->per_cu->v.psymtab;
I believe this is incorrect: .gdb_index may be in use and thus we're not using partial syms.
> +
> + if (address == 0
> + && (!dwarf2_per_objfile->has_section_at_zero
> + || (pst != NULL && pst->textlow > address)))
> {
> /* This line table is for a function which has been
> GCd by the linker. Ignore it. PR gdb/12528 */
next prev parent reply other threads:[~2014-08-15 4:40 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-30 8:21 Revisit gdb/12528 for bare metal targets Yao Qi
2014-08-01 13:29 ` Yao Qi
2014-08-06 6:54 ` [PATCH 1/2] Remove pst from dwarf_decode_lines_1 Yao Qi
2014-08-06 6:54 ` [PATCH 2/2] Check function is GC'ed Yao Qi
2014-08-15 4:40 ` Doug Evans [this message]
2014-08-15 6:19 ` Yao Qi
2014-08-20 15:40 ` Pedro Alves
2014-08-13 12:01 ` [PATCH 1/2] Remove pst from dwarf_decode_lines_1 Yao Qi
2014-08-13 18:58 ` Doug Evans
2014-08-14 23:53 ` Yao Qi
2014-08-15 2:04 ` Yao Qi
2014-08-21 8:26 ` [PATCH 1/3] Check function is GC'ed Yao Qi
2014-08-21 8:26 ` [PATCH 2/3] Check data " Yao Qi
2014-08-22 18:02 ` Doug Evans
2014-08-29 13:32 ` Yao Qi
2014-08-21 8:26 ` [PATCH 3/3] Run dw2-var-zero-addr.exp with --readnow Yao Qi
2014-08-22 18:06 ` Doug Evans
2014-09-19 9:09 ` Yao Qi
2014-08-22 17:40 ` [PATCH 1/3] Check function is GC'ed Doug Evans
2014-08-28 10:50 ` Yao Qi
2014-09-15 8:06 ` Yao Qi
2014-09-15 18:53 ` Doug Evans
2014-09-16 2:40 ` Yao Qi
2014-09-18 16:42 ` Doug Evans
2014-09-19 9:08 ` Yao Qi
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=21485.36660.648927.89507@ruffy.mtv.corp.google.com \
--to=dje@google.com \
--cc=gdb-patches@sourceware.org \
--cc=yao@codesourcery.com \
/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