2009-12-15 Tristan Gingold <gingold@adacore.com>
* machoread.c (macho_symtab_read): Add comments. Always set first_offset.
This commit is contained in:
parent
8462aec76d
commit
3188d986e9
2 changed files with 24 additions and 5 deletions
|
@ -1,3 +1,8 @@
|
|||
2009-12-15 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* machoread.c (macho_symtab_read): Add comments. Always set
|
||||
first_offset.
|
||||
|
||||
2009-12-14 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* symfile.h (find_separate_debug_file_by_buildid): Remove prototype.
|
||||
|
|
|
@ -69,7 +69,9 @@ typedef struct oso_el
|
|||
int num_sections;
|
||||
|
||||
/* Each seaction of the object file is represented by a symbol and its
|
||||
offset. */
|
||||
offset. If the offset is 0, we assume that the symbol is at offset 0
|
||||
in the OSO object file and a symbol lookup in the main file is
|
||||
required to get the offset. */
|
||||
asymbol **symbols;
|
||||
bfd_vma *offsets;
|
||||
}
|
||||
|
@ -124,14 +126,17 @@ macho_symtab_read (struct objfile *objfile,
|
|||
{
|
||||
bfd_vma addr;
|
||||
|
||||
/* Debugging symbols are used to collect OSO file names as well
|
||||
as section offsets. */
|
||||
|
||||
switch (mach_o_sym->n_type)
|
||||
{
|
||||
case N_SO:
|
||||
if ((sym->name == NULL || sym->name[0] == 0)
|
||||
&& oso_file != NULL)
|
||||
/* An empty SO entry terminates a chunk for an OSO file. */
|
||||
if ((sym->name == NULL || sym->name[0] == 0) && oso_file != NULL)
|
||||
{
|
||||
macho_add_oso (oso_file, nbr_sections,
|
||||
first_symbol, first_offset);
|
||||
first_symbol, first_offset);
|
||||
first_symbol = NULL;
|
||||
first_offset = NULL;
|
||||
oso_file = NULL;
|
||||
|
@ -149,6 +154,7 @@ macho_symtab_read (struct objfile *objfile,
|
|||
if (addr != 0
|
||||
&& first_symbol[sym->section->index] == NULL)
|
||||
{
|
||||
/* These STAB entries can directly relocate a section. */
|
||||
first_symbol[sym->section->index] = sym;
|
||||
first_offset[sym->section->index] = addr + offset;
|
||||
}
|
||||
|
@ -156,9 +162,15 @@ macho_symtab_read (struct objfile *objfile,
|
|||
case N_GSYM:
|
||||
gdb_assert (oso_file != NULL);
|
||||
if (first_symbol[sym->section->index] == NULL)
|
||||
first_symbol[sym->section->index] = sym;
|
||||
{
|
||||
/* This STAB entry needs a symbol look-up to relocate
|
||||
the section. */
|
||||
first_symbol[sym->section->index] = sym;
|
||||
first_offset[sym->section->index] = 0;
|
||||
}
|
||||
break;
|
||||
case N_OSO:
|
||||
/* New OSO file. */
|
||||
gdb_assert (oso_file == NULL);
|
||||
first_symbol = (asymbol **)xmalloc (nbr_sections
|
||||
* sizeof (asymbol *));
|
||||
|
@ -233,6 +245,7 @@ macho_symtab_read (struct objfile *objfile,
|
|||
if (oso_file != NULL
|
||||
&& first_symbol[sym->section->index] == NULL)
|
||||
{
|
||||
/* Standard symbols can directly relocate sections. */
|
||||
first_symbol[sym->section->index] = sym;
|
||||
first_offset[sym->section->index] = symaddr;
|
||||
}
|
||||
|
@ -243,6 +256,7 @@ macho_symtab_read (struct objfile *objfile,
|
|||
}
|
||||
}
|
||||
|
||||
/* Just in case there is no trailing SO entry. */
|
||||
if (oso_file != NULL)
|
||||
macho_add_oso (oso_file, nbr_sections, first_symbol, first_offset);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue