From: Paul Pluzhnikov <ppluzhnikov@google.com>
To: Joel Brobecker <brobecker@adacore.com>
Cc: Ulrich Weigand <uweigand@de.ibm.com>,
Pierre Muller <muller@ics.u-strasbg.fr>,
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>,
Christian Thalinger <Christian.Thalinger@sun.com>
Subject: Re: [patch] Speed up find_pc_section
Date: Mon, 14 Sep 2009 18:10:00 -0000 [thread overview]
Message-ID: <8ac60eac0909141110h18959c04r2a08269296909db9@mail.gmail.com> (raw)
In-Reply-To: <20090914173554.GK8327@adacore.com>
[-- Attachment #1: Type: text/plain, Size: 1584 bytes --]
On Mon, Sep 14, 2009 at 10:35 AM, Joel Brobecker <brobecker@adacore.com> wrote:
>> I've just checked in both patches. Hopefully this thread will end here,
>> it's been long enough :-)
>
> There is still the OBJF_NOT_MAPPED patch.
Given this subthread:
http://sourceware.org/ml/gdb-patches/2009-09/msg00307.html
I don't believe OBJF_NOT_MAPPED is the right way to go.
I agree with Tristan that we should separate the 'read objfile for symbols,
sections, etc.' from read an object file just for its debug bits.
This would allow:
- Darwin "dwarf debug is found in the separate *.o files",
- Solaris cc/CC without '-xs' (dwarf or stabs debug is found in original
*.o files -- very similar to Darwin),
- We could then use the same on Linux and drop the
separate_debug_objfile/separate_debug_objfile_backlink objfile members,
as well as filter_debuginfo_sections().
Note that current checked in code on Darwin does not fail any asserts,
it just doesn't work correctly and issues bazillion of complaints.
Given above, I don't think committing/testing the OBJF_NOT_MAPPED patch
is the right way to go -- it's more of a hack then a solution.
However, if someone needs a hack, attached is the current state of the
patch. Christian Thalinger tested essentially this version on his Darwin/Java
build, and reported success.
Cheers,
--
Paul Pluzhnikov
2009-09-14 Paul Pluzhnikov <ppluzhnikov@google.com>
* objfiles.h (OBJF_NOT_MAPPED): New define.
* objfiles.c (update_section_map): Ignore not mapped objfiles.
* machoread.c (macho_oso_symfile, macho_oso_symfile): Adjust.
[-- Attachment #2: gdb-macho-bp-reset-20090914.txt --]
[-- Type: text/plain, Size: 3113 bytes --]
Index: objfiles.h
===================================================================
RCS file: /cvs/src/src/gdb/objfiles.h,v
retrieving revision 1.64
diff -u -p -u -r1.64 objfiles.h
--- objfiles.h 11 Sep 2009 18:51:31 -0000 1.64
+++ objfiles.h 14 Sep 2009 18:04:54 -0000
@@ -414,6 +414,12 @@ struct objfile
#define OBJF_USERLOADED (1 << 3) /* User loaded */
+/* This objfile is not mapped into the process address space. We only have it
+ for its debug bits. One example is MACH-O ("other source") object
+ files. */
+
+#define OBJF_NOT_MAPPED (1 << 4) /* Not mapped */
+
/* The object file that the main symbol table was loaded from (e.g. the
argument to the "symbol-file" or "file" command). */
Index: objfiles.c
===================================================================
RCS file: /cvs/src/src/gdb/objfiles.c,v
retrieving revision 1.96
diff -u -p -u -r1.96 objfiles.c
--- objfiles.c 14 Sep 2009 17:12:07 -0000 1.96
+++ objfiles.c 14 Sep 2009 18:04:54 -0000
@@ -1041,16 +1041,21 @@ update_section_map (struct obj_section *
xfree (map);
alloc_size = 0;
- ALL_OBJSECTIONS (objfile, s)
- if (insert_section_p (objfile->obfd, s->the_bfd_section))
- alloc_size += 1;
+
+ ALL_OBJFILES (objfile)
+ if ((objfile->flags & OBJF_NOT_MAPPED) == 0)
+ ALL_OBJFILE_OSECTIONS (objfile, s)
+ if (insert_section_p (objfile->obfd, s->the_bfd_section))
+ alloc_size += 1;
map = xmalloc (alloc_size * sizeof (*map));
i = 0;
- ALL_OBJSECTIONS (objfile, s)
- if (insert_section_p (objfile->obfd, s->the_bfd_section))
- map[i++] = s;
+ ALL_OBJFILES (objfile)
+ if ((objfile->flags & OBJF_NOT_MAPPED) == 0)
+ ALL_OBJFILE_OSECTIONS (objfile, s)
+ if (insert_section_p (objfile->obfd, s->the_bfd_section))
+ map[i++] = s;
qsort (map, alloc_size, sizeof (*map), qsort_cmp);
map_size = filter_debuginfo_sections(map, alloc_size);
Index: machoread.c
===================================================================
RCS file: /cvs/src/src/gdb/machoread.c,v
retrieving revision 1.5
diff -u -p -u -r1.5 machoread.c
--- machoread.c 19 Jun 2009 14:30:30 -0000 1.5
+++ machoread.c 14 Sep 2009 18:04:54 -0000
@@ -406,7 +406,8 @@ macho_oso_symfile (struct objfile *main_
bfd_close (member_bfd);
}
else
- symbol_file_add_from_bfd (member_bfd, 0, addrs, 0);
+ symbol_file_add_from_bfd (member_bfd, SYMFILE_DEFER_BP_RESET,
+ addrs, OBJF_NOT_MAPPED);
}
else
{
@@ -429,7 +430,8 @@ macho_oso_symfile (struct objfile *main_
continue;
}
- symbol_file_add_from_bfd (abfd, 0, addrs, 0);
+ symbol_file_add_from_bfd (abfd, SYMFILE_DEFER_BP_RESET, addrs,
+ OBJF_NOT_MAPPED);
}
xfree (oso->symbols);
xfree (oso->offsets);
@@ -592,7 +594,7 @@ macho_symfile_read (struct objfile *objf
oso_vector = NULL;
/* Now recurse: read dwarf from dsym. */
- symbol_file_add_from_bfd (dsym_bfd, 0, NULL, 0);
+ symbol_file_add_from_bfd (dsym_bfd, 0, NULL, OBJF_NOT_MAPPED);
/* Don't try to read dwarf2 from main file or shared libraries. */
return;
next prev parent reply other threads:[~2009-09-14 18:10 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
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 [this message]
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=8ac60eac0909141110h18959c04r2a08269296909db9@mail.gmail.com \
--to=ppluzhnikov@google.com \
--cc=Christian.Thalinger@sun.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 \
--cc=uweigand@de.ibm.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