This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Speed up find_pc_section


On Fri, Sep 11, 2009 at 2:14 PM, Joel Brobecker <brobecker@adacore.com> wrote:
>> 2009-09-11 ?Paul Pluzhnikov ?<ppluzhnikov@google.com>
>>
>> ? ? ?* objfiles.c (qsort_cmp): Remove asserts.
>> ? ? ?(insert_section_p, filter_debuginfo_sections): New function.
>> ? ? ?(filter_overlapping_sections): Likewise.
>> ? ? ?(update_section_map): Adjust.
>
> Looks great to me. Please go ahead and commit.

Additional testing revealed an off-by-one bug :-( Now fixed.

> Just one question: Do you think it might be advantageous to split
> this complaint in multiple lines? Something like:

Good idea. Done.

This also implements ordering of sections (by objfile sequence, and by
section sequence within a single objfile), just to make deterministic
which sections are discarded.

Tested: Linux/x86_64 (no regressions), Fedora 11/i386 (no regressions)
Also tested Darwin/i386 (can't run a testsuite, but internal assert is
gone from the java test case by Christian Thalinger).
Also tested Solaris 10/i386, no assertions in objfiles.c [1], can't
really tell regressions because running GDB tests causes kernel panic
:(
Also tested Solaris 11/i386 (aka OpenSolaris), no regressions [2].

I think this is ready to commit :-)

Ulrich?

Thanks,

[1] There is an unrelated assert:
UNRESOLVED: gdb.mi/mi-var-cmd.exp: update all vars: i changed
-var-update *
n
-exec-step
~"Please answer y or n.\n"
~"../../src/gdb/thread.c:575: internal-error: is_thread_state:
Assertion `tp' failed.\nA problem internal to GDB has been
detected,\nfurther debugging may pro
ve unreliable.\nCreate a core file of GDB? "


[2] Also unrelated asserts:

Starting program:
/export/home/paul/gdb-cvs/build/gdb/testsuite/gdb.objc/objcdecode ^M
../../src/gdb/breakpoint.c:7939: internal-error:
breakpoint_re_set_one: Assertion `sals.nelts == 1' failed.^M
A problem internal to GDB has been detected,^M
further debugging may prove unreliable.^M
Quit this debugging session? (y or n) FAIL: gdb.objc/objcdecode.exp:
continue after break on multiply defined symbol (GDB internal error)

(gdb) PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand
call, thread 1
call hand_call()^M
../../src/gdb/inline-frame.c:322: internal-error: skip_inline_frames:
Assertion `find_inline_frame_state (ptid) == NULL' failed.^M
A problem internal to GDB has been detected,^M
further debugging may prove unreliable.^M
Quit this debugging session? FAIL:
gdb.threads/hand-call-in-threads.exp: hand call, thread 1 (GDB
internal error)


-- 
Paul Pluzhnikov


2009-09-13  Paul Pluzhnikov  <ppluzhnikov@google.com>

    * objfiles.c (qsort_cmp): Remove asserts.
    (insert_section_p, filter_debuginfo_sections): New function.
    (filter_overlapping_sections): Likewise.
    (update_section_map): Adjust.

Attachment: gdb-find_pc_section-20090912.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]