From: Paul Pluzhnikov <ppluzhnikov@google.com>
To: Pierre Muller <muller@ics.u-strasbg.fr>
Cc: Joel Brobecker <brobecker@adacore.com>,
Ulrich Weigand <Ulrich.Weigand@de.ibm.com>,
gdb-patches ml <gdb-patches@sourceware.org>,
Tom Tromey <tromey@redhat.com>,
Jan Kratochvil <jan.kratochvil@redhat.com>
Subject: Re: [patch] Speed up find_pc_section
Date: Fri, 11 Sep 2009 07:29:00 -0000 [thread overview]
Message-ID: <8ac60eac0909110029q1c88dcetdb644fa461fa545c@mail.gmail.com> (raw)
In-Reply-To: <000c01ca32ac$0ca9f8b0$25fdea10$@u-strasbg.fr>
On Thu, Sep 10, 2009 at 11:49 PM, Pierre Muller <muller@ics.u-strasbg.fr> wrote:
> The patch looks OK (not that I have any say on this),
> but I am still puzzled by what can happen if
> you have overlapping sections in the end.
At that point GDB is in a bad state, and *may* not work right.
Further, since we are now doing complaint() instead of warning(), the
fact that GDB is in a bad state is not immediately obvious.
> Is the CORE_ADDR to section mapping still
> deterministic in that case?
Depends on what you mean by that. The mapping is deterministic for a
given set of objfiles, but may change when the set changes (even if a
new objfile does not have any sections "covering" CORE_ADDR for which
the mapping will change). That is because qsort is not a stable sort.
I wonder if it makes sense to modify qsort_cmp() like this:
if (sect1_addr < sect2_addr)
return -1;
else if (sect1_addr > sect2_addr)
return 1;
- return 0;
+ if (sect1->objfile->mtime < sect2->objfile->mtime) return -1;
+ if (sect1->objfile->mtime > sect2->objfile->mtime) return 1;
+ return 0;
}
to try to make the sort order for sections starting at the same
address more stable. This attempt could still fail if the two object
files were copied together and have the same mtime.
Perhaps I should just add a sequence number to 'struct objfile'? That
looks like it would almost give exact same ordering as what GDB used
before qsort+bsearch was introduced.
> Using binary search for ill order item
> can lead to different results if you add
> items to the list, no?
All overlaps are removed in filter_overlapping_sections, before the
first binary search is performed.
> And I suspect that dynamic loading of
> library can add items to the list with running
> a debuggee, thus leading to a different result
> before and after that loading for the same CORE_ADDR.
That is correct.
> Shouldn't we by brute force shorten one of the two
> overlapping sections to remove that error?
filter_overlapping_sections simply removes one of such sections from the map.
> If I understood your patch correctly,
> it doesn't do that for now.
> Please tell me if I am wrong.
>
> Adding a simple
> obj_section_endaddr (sect1):= sect2_addr;
> after the complaint should be enough to
> be sure that the binary search is deterministic, no?
The binary search (I believe) is already deterministic, and modifying
the_bfd_section (where obj_section_endaddr comes from) "behind
libbfd's back" strikes me as very undesirable.
Cheers,
--
Paul Pluzhnikov
next prev parent reply other threads:[~2009-09-11 7:29 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-17 7:34 Paul Pluzhnikov
2009-07-17 15:59 ` Paul Pluzhnikov
2009-07-17 16:27 ` Tom Tromey
2009-07-17 17:19 ` Paul Pluzhnikov
2009-07-21 17:57 ` Tom Tromey
2009-07-21 20:51 ` Paul Pluzhnikov
2009-07-21 21:03 ` Tom Tromey
2009-07-22 15:23 ` Pedro Alves
2009-07-22 16:33 ` Tom Tromey
2009-07-22 17:02 ` Paul Pluzhnikov
2009-07-22 17:02 ` Pedro Alves
2009-07-22 17:16 ` Paul Pluzhnikov
2009-07-22 18:08 ` Paul Pluzhnikov
2009-07-22 18:10 ` Pedro Alves
2009-07-22 18:12 ` Paul Pluzhnikov
2009-07-22 19:19 ` Pedro Alves
2009-07-22 19:34 ` Paul Pluzhnikov
2009-07-22 19:54 ` Pedro Alves
2009-08-17 21:15 ` [commit] Fix reread_symbols crash (Re: [patch] Speed up find_pc_section) Ulrich Weigand
2009-08-04 14:22 ` [patch] Speed up find_pc_section Tom Tromey
2009-08-04 15:06 ` Paul Pluzhnikov
2009-08-04 15:38 ` Tom Tromey
[not found] ` <8ac60eac0908042358q4d2061d2md3c49cf4aab26398@mail.gmail.com>
[not found] ` <m34osmi5jx.fsf@fleche.redhat.com>
[not found] ` <8ac60eac0908050940we3dc478rd182f4367a650f1b@mail.gmail.com>
[not found] ` <8ac60eac0908052259l7b1c21d1t212991886a5f8b18@mail.gmail.com>
[not found] ` <m3eirofxwh.fsf@fleche.redhat.com>
[not found] ` <8ac60eac0908070030g7500a5ack3fcc81862e2a5b0a@mail.gmail.com>
2009-08-07 23:30 ` Paul Pluzhnikov
2009-08-09 21:37 ` Paul Pluzhnikov
2009-08-10 18:09 ` Tom Tromey
2009-08-10 20:39 ` Paul Pluzhnikov
2009-08-17 19:45 ` Ulrich Weigand
2009-08-17 19:57 ` Ulrich Weigand
2009-08-17 22:55 ` Paul Pluzhnikov
2009-08-18 13:48 ` Ulrich Weigand
2009-08-20 18:03 ` Paul Pluzhnikov
2009-08-20 18:39 ` Ulrich Weigand
2009-08-20 21:06 ` Paul Pluzhnikov
2009-08-20 22:34 ` Daniel Jacobowitz
2009-08-21 12:36 ` Ulrich Weigand
2009-08-23 23:25 ` Paul Pluzhnikov
2009-08-26 7:21 ` Paul Pluzhnikov
2009-08-26 14:37 ` Jan Kratochvil
2009-08-26 14:38 ` Paul Pluzhnikov
2009-08-26 15:17 ` Paul Pluzhnikov
2009-08-26 23:45 ` Jan Kratochvil
2009-08-27 2:56 ` Paul Pluzhnikov
2009-09-02 17:02 ` Paul Pluzhnikov
2009-09-08 18:37 ` What should we do re: "[patch] Speed up find_pc_section" Joel Brobecker
2009-09-08 20:16 ` Paul Pluzhnikov
2009-09-08 21:17 ` Joel Brobecker
2009-09-09 5:58 ` [patch] Speed up find_pc_section Joel Brobecker
2009-09-09 7:56 ` Tristan Gingold
2009-09-09 15:04 ` Joel Brobecker
2009-09-11 7:44 ` Tristan Gingold
2009-09-10 17:36 ` Paul Pluzhnikov
2009-09-10 18:30 ` Joel Brobecker
2009-09-11 1:30 ` Paul Pluzhnikov
2009-09-11 6:51 ` Pierre Muller
2009-09-11 7:29 ` Paul Pluzhnikov [this message]
2009-09-11 7:40 ` Mark Kettenis
2009-09-11 7:51 ` Paul Pluzhnikov
2009-09-11 7:41 ` Pierre Muller
2009-09-11 8:03 ` Paul Pluzhnikov
2009-09-11 8:41 ` Pierre Muller
2009-09-11 17:47 ` Paul Pluzhnikov
2009-09-11 21:15 ` Joel Brobecker
2009-09-13 21:47 ` Paul Pluzhnikov
2009-09-14 16:43 ` Ulrich Weigand
2009-09-14 17:19 ` Paul Pluzhnikov
2009-09-14 17:36 ` Joel Brobecker
2009-09-14 18:10 ` Paul Pluzhnikov
2009-09-14 18:21 ` Joel Brobecker
2009-09-11 20:51 ` Tom Tromey
2009-09-11 21:04 ` Paul Pluzhnikov
2009-09-11 21:14 ` Tom Tromey
2009-09-11 7:53 ` Tristan Gingold
2009-09-11 8:33 ` Paul Pluzhnikov
2009-09-11 8:39 ` Tristan Gingold
2009-09-11 16:23 ` Paul Pluzhnikov
2009-09-09 5:39 ` Joel Brobecker
2009-09-10 16:18 ` Paul Pluzhnikov
2009-09-11 21:06 ` Joel Brobecker
2009-09-14 16:41 ` Ulrich Weigand
2009-08-18 18:18 ` Michael Snyder
2009-07-17 18:56 ` Paul Pluzhnikov
2009-07-21 3:34 ` Paul Pluzhnikov
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=8ac60eac0909110029q1c88dcetdb644fa461fa545c@mail.gmail.com \
--to=ppluzhnikov@google.com \
--cc=Ulrich.Weigand@de.ibm.com \
--cc=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=jan.kratochvil@redhat.com \
--cc=muller@ics.u-strasbg.fr \
--cc=tromey@redhat.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