[committed/darwin]: Set section size of dsymfile bfd
Tristan Gingold
gingold@adacore.com
Tue Dec 15 09:56:00 GMT 2009
Hi,
contrary to ELF .gnu_debuglink files, the section size of dsymfile are set to 0 (because there is no
notion of filesize vs memsize in a section). As a consequence no obj_section was created for these sections
and there was no offset for them. But offsets are required for shared libraries.
This patch simply copy section size from the bfd to the dsym bfd.
Tristan.
2009-12-14 Tristan Gingold <gingold@adacore.com>
* machoread.c (macho_symfile_read): Set section size of dsym bfd
from main bfd.
---
gdb/machoread.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/gdb/machoread.c b/gdb/machoread.c
index 0194ee5..12fefaf 100644
--- a/gdb/machoread.c
+++ b/gdb/machoread.c
@@ -626,6 +626,7 @@ macho_symfile_read (struct objfile *objfile, int symfile_flags)
{
int ix;
oso_el *oso;
+ struct bfd_section *asect, *dsect;
if (mach_o_debug_level > 0)
printf_unfiltered (_("dsym file found\n"));
@@ -639,6 +640,17 @@ macho_symfile_read (struct objfile *objfile, int symfile_flags)
VEC_free (oso_el, oso_vector);
oso_vector = NULL;
+ /* Set dsym section size. */
+ for (asect = objfile->obfd->sections, dsect = dsym_bfd->sections;
+ asect && dsect;
+ asect = asect->next, dsect = dsect->next)
+ {
+ if (strcmp (asect->name, dsect->name) != 0)
+ break;
+ bfd_set_section_size (dsym_bfd, dsect,
+ bfd_get_section_size (asect));
+ }
+
/* Add the dsym file as a separate file. */
symbol_file_add_separate (dsym_bfd, symfile_flags, objfile);
--
1.6.2
More information about the Gdb-patches
mailing list