mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-05-30 07:49:07 +08:00
2010-02-03 Tristan Gingold <gingold@adacore.com>
* symfile.h (struct sym_fns): Add sym_relocate field. (default_symfile_relocate): New prototype. (symfile_relocate_debug_section): First argument is now an objfile. * symfile.c (default_symfile_relocate): Rename from symfile_relocate_debug_section, first argument is now an objfile. (symfile_relocate_debug_section): New function. * coffread.c (coff_sym_fns): Set sym_relocate field. * somread.c (som_sym_fns): Ditto. * mipsread.c (ecoff_sym_fns): Ditto. * machoread.c (macho_sym_fns): Ditto. * elfread.c (elf_sym_fns): Ditto. * dwarf2read.c (dwarf2_read_section): Ditto. * xcoffread.c (xcoff_sym_fns): Ditto. * dbxread.c (aout_sym_fns): Ditto. (dbx_psymtab_to_symtab): Adjust call to symfile_relocate_debug_section. (elfstab_build_psymtabs): Ditto.
This commit is contained in:
@ -1,3 +1,22 @@
|
|||||||
|
2010-02-03 Tristan Gingold <gingold@adacore.com>
|
||||||
|
|
||||||
|
* symfile.h (struct sym_fns): Add sym_relocate field.
|
||||||
|
(default_symfile_relocate): New prototype.
|
||||||
|
(symfile_relocate_debug_section): First argument is now an objfile.
|
||||||
|
* symfile.c (default_symfile_relocate): Rename from
|
||||||
|
symfile_relocate_debug_section, first argument is now an objfile.
|
||||||
|
(symfile_relocate_debug_section): New function.
|
||||||
|
* coffread.c (coff_sym_fns): Set sym_relocate field.
|
||||||
|
* somread.c (som_sym_fns): Ditto.
|
||||||
|
* mipsread.c (ecoff_sym_fns): Ditto.
|
||||||
|
* machoread.c (macho_sym_fns): Ditto.
|
||||||
|
* elfread.c (elf_sym_fns): Ditto.
|
||||||
|
* dwarf2read.c (dwarf2_read_section): Ditto.
|
||||||
|
* xcoffread.c (xcoff_sym_fns): Ditto.
|
||||||
|
* dbxread.c (aout_sym_fns): Ditto.
|
||||||
|
(dbx_psymtab_to_symtab): Adjust call to symfile_relocate_debug_section.
|
||||||
|
(elfstab_build_psymtabs): Ditto.
|
||||||
|
|
||||||
2010-02-03 H.J. Lu <hongjiu.lu@intel.com>
|
2010-02-03 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* defs.h (MAX_REGISTER_SIZE): Increase to 32.
|
* defs.h (MAX_REGISTER_SIZE): Increase to 32.
|
||||||
|
@ -2128,6 +2128,7 @@ static struct sym_fns coff_sym_fns =
|
|||||||
default_symfile_segments, /* sym_segments: Get segment information from
|
default_symfile_segments, /* sym_segments: Get segment information from
|
||||||
a file. */
|
a file. */
|
||||||
NULL, /* sym_read_linetable */
|
NULL, /* sym_read_linetable */
|
||||||
|
default_symfile_relocate, /* sym_relocate: Relocate a debug section. */
|
||||||
NULL /* next: pointer to next struct sym_fns */
|
NULL /* next: pointer to next struct sym_fns */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2473,7 +2473,7 @@ Shouldn't happen.\n",
|
|||||||
if (DBX_STAB_SECTION (pst->objfile))
|
if (DBX_STAB_SECTION (pst->objfile))
|
||||||
{
|
{
|
||||||
stabs_data
|
stabs_data
|
||||||
= symfile_relocate_debug_section (pst->objfile->obfd,
|
= symfile_relocate_debug_section (pst->objfile,
|
||||||
DBX_STAB_SECTION (pst->objfile),
|
DBX_STAB_SECTION (pst->objfile),
|
||||||
NULL);
|
NULL);
|
||||||
if (stabs_data)
|
if (stabs_data)
|
||||||
@ -3460,7 +3460,7 @@ elfstab_build_psymtabs (struct objfile *objfile, asection *stabsect,
|
|||||||
|
|
||||||
symbuf_read = 0;
|
symbuf_read = 0;
|
||||||
symbuf_left = bfd_section_size (objfile->obfd, stabsect);
|
symbuf_left = bfd_section_size (objfile->obfd, stabsect);
|
||||||
stabs_data = symfile_relocate_debug_section (objfile->obfd, stabsect, NULL);
|
stabs_data = symfile_relocate_debug_section (objfile, stabsect, NULL);
|
||||||
if (stabs_data)
|
if (stabs_data)
|
||||||
back_to = make_cleanup (free_current_contents, (void *) &stabs_data);
|
back_to = make_cleanup (free_current_contents, (void *) &stabs_data);
|
||||||
|
|
||||||
@ -3571,6 +3571,7 @@ static struct sym_fns aout_sym_fns =
|
|||||||
default_symfile_segments, /* sym_segments: Get segment information from
|
default_symfile_segments, /* sym_segments: Get segment information from
|
||||||
a file. */
|
a file. */
|
||||||
NULL, /* sym_read_linetable */
|
NULL, /* sym_read_linetable */
|
||||||
|
default_symfile_relocate, /* sym_relocate: Relocate a debug section. */
|
||||||
NULL /* next: pointer to next struct sym_fns */
|
NULL /* next: pointer to next struct sym_fns */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1412,7 +1412,7 @@ dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
|
|||||||
http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
|
http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
|
||||||
We never compress sections in .o files, so we only need to
|
We never compress sections in .o files, so we only need to
|
||||||
try this when the section is not compressed. */
|
try this when the section is not compressed. */
|
||||||
retbuf = symfile_relocate_debug_section (abfd, sectp, buf);
|
retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
|
||||||
if (retbuf != NULL)
|
if (retbuf != NULL)
|
||||||
{
|
{
|
||||||
info->buffer = retbuf;
|
info->buffer = retbuf;
|
||||||
|
@ -1057,6 +1057,7 @@ static struct sym_fns elf_sym_fns =
|
|||||||
elf_symfile_segments, /* sym_segments: Get segment information from
|
elf_symfile_segments, /* sym_segments: Get segment information from
|
||||||
a file. */
|
a file. */
|
||||||
NULL, /* sym_read_linetable */
|
NULL, /* sym_read_linetable */
|
||||||
|
default_symfile_relocate, /* sym_relocate: Relocate a debug section. */
|
||||||
NULL /* next: pointer to next struct sym_fns */
|
NULL /* next: pointer to next struct sym_fns */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -759,6 +759,9 @@ static struct sym_fns macho_sym_fns = {
|
|||||||
macho_symfile_offsets, /* sym_offsets: xlate external to internal form */
|
macho_symfile_offsets, /* sym_offsets: xlate external to internal form */
|
||||||
default_symfile_segments, /* sym_segments: Get segment information from
|
default_symfile_segments, /* sym_segments: Get segment information from
|
||||||
a file. */
|
a file. */
|
||||||
|
NULL, /* sym_read_linetable */
|
||||||
|
default_symfile_relocate, /* sym_relocate: Relocate a debug section. */
|
||||||
|
|
||||||
NULL /* next: pointer to next struct sym_fns */
|
NULL /* next: pointer to next struct sym_fns */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -399,6 +399,7 @@ static struct sym_fns ecoff_sym_fns =
|
|||||||
default_symfile_segments, /* sym_segments: Get segment information from
|
default_symfile_segments, /* sym_segments: Get segment information from
|
||||||
a file. */
|
a file. */
|
||||||
NULL, /* sym_read_linetable */
|
NULL, /* sym_read_linetable */
|
||||||
|
default_symfile_relocate, /* sym_relocate: Relocate a debug section. */
|
||||||
NULL /* next: pointer to next struct sym_fns */
|
NULL /* next: pointer to next struct sym_fns */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -437,6 +437,7 @@ static struct sym_fns som_sym_fns =
|
|||||||
default_symfile_segments, /* sym_segments: Get segment information from
|
default_symfile_segments, /* sym_segments: Get segment information from
|
||||||
a file. */
|
a file. */
|
||||||
NULL, /* sym_read_linetable */
|
NULL, /* sym_read_linetable */
|
||||||
|
default_symfile_relocate, /* sym_relocate: Relocate a debug section. */
|
||||||
NULL /* next: pointer to next struct sym_fns */
|
NULL /* next: pointer to next struct sym_fns */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3627,6 +3627,27 @@ symfile_dummy_outputs (bfd *abfd, asection *sectp, void *dummy)
|
|||||||
sectp->output_offset = 0;
|
sectp->output_offset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Default implementation for sym_relocate. */
|
||||||
|
|
||||||
|
|
||||||
|
bfd_byte *
|
||||||
|
default_symfile_relocate (struct objfile *objfile, asection *sectp,
|
||||||
|
bfd_byte *buf)
|
||||||
|
{
|
||||||
|
bfd *abfd = objfile->obfd;
|
||||||
|
|
||||||
|
/* We're only interested in sections with relocation
|
||||||
|
information. */
|
||||||
|
if ((sectp->flags & SEC_RELOC) == 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* We will handle section offsets properly elsewhere, so relocate as if
|
||||||
|
all sections begin at 0. */
|
||||||
|
bfd_map_over_sections (abfd, symfile_dummy_outputs, NULL);
|
||||||
|
|
||||||
|
return bfd_simple_get_relocated_section_contents (abfd, sectp, buf, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/* Relocate the contents of a debug section SECTP in ABFD. The
|
/* Relocate the contents of a debug section SECTP in ABFD. The
|
||||||
contents are stored in BUF if it is non-NULL, or returned in a
|
contents are stored in BUF if it is non-NULL, or returned in a
|
||||||
malloc'd buffer otherwise.
|
malloc'd buffer otherwise.
|
||||||
@ -3642,18 +3663,12 @@ symfile_dummy_outputs (bfd *abfd, asection *sectp, void *dummy)
|
|||||||
debug section. */
|
debug section. */
|
||||||
|
|
||||||
bfd_byte *
|
bfd_byte *
|
||||||
symfile_relocate_debug_section (bfd *abfd, asection *sectp, bfd_byte *buf)
|
symfile_relocate_debug_section (struct objfile *objfile,
|
||||||
|
asection *sectp, bfd_byte *buf)
|
||||||
{
|
{
|
||||||
/* We're only interested in sections with relocation
|
gdb_assert (objfile->sf->sym_relocate);
|
||||||
information. */
|
|
||||||
if ((sectp->flags & SEC_RELOC) == 0)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
/* We will handle section offsets properly elsewhere, so relocate as if
|
return (*objfile->sf->sym_relocate) (objfile, sectp, buf);
|
||||||
all sections begin at 0. */
|
|
||||||
bfd_map_over_sections (abfd, symfile_dummy_outputs, NULL);
|
|
||||||
|
|
||||||
return bfd_simple_get_relocated_section_contents (abfd, sectp, buf, NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct symfile_segment_data *
|
struct symfile_segment_data *
|
||||||
|
@ -163,8 +163,15 @@ struct sym_fns
|
|||||||
/* This function should read the linetable from the objfile when
|
/* This function should read the linetable from the objfile when
|
||||||
the line table cannot be read while processing the debugging
|
the line table cannot be read while processing the debugging
|
||||||
information. */
|
information. */
|
||||||
|
|
||||||
void (*sym_read_linetable) (void);
|
void (*sym_read_linetable) (void);
|
||||||
|
|
||||||
|
/* Relocate the contents of a debug section SECTP. The
|
||||||
|
contents are stored in BUF if it is non-NULL, or returned in a
|
||||||
|
malloc'd buffer otherwise. */
|
||||||
|
|
||||||
|
bfd_byte *(*sym_relocate) (struct objfile *, asection *sectp, bfd_byte *buf);
|
||||||
|
|
||||||
/* Finds the next struct sym_fns. They are allocated and
|
/* Finds the next struct sym_fns. They are allocated and
|
||||||
initialized in whatever module implements the functions pointed
|
initialized in whatever module implements the functions pointed
|
||||||
to; an initializer calls add_symtab_fns to add them to the global
|
to; an initializer calls add_symtab_fns to add them to the global
|
||||||
@ -195,6 +202,12 @@ extern void default_symfile_offsets (struct objfile *objfile,
|
|||||||
|
|
||||||
extern struct symfile_segment_data *default_symfile_segments (bfd *abfd);
|
extern struct symfile_segment_data *default_symfile_segments (bfd *abfd);
|
||||||
|
|
||||||
|
/* The default version of sym_fns.sym_relocate for readers that don't
|
||||||
|
do anything special. */
|
||||||
|
|
||||||
|
extern bfd_byte *default_symfile_relocate (struct objfile *objfile,
|
||||||
|
asection *sectp, bfd_byte *buf);
|
||||||
|
|
||||||
extern void extend_psymbol_list (struct psymbol_allocation_list *,
|
extern void extend_psymbol_list (struct psymbol_allocation_list *,
|
||||||
struct objfile *);
|
struct objfile *);
|
||||||
|
|
||||||
@ -374,8 +387,8 @@ extern void symbol_file_clear (int from_tty);
|
|||||||
/* Default overlay update function. */
|
/* Default overlay update function. */
|
||||||
extern void simple_overlay_update (struct obj_section *);
|
extern void simple_overlay_update (struct obj_section *);
|
||||||
|
|
||||||
extern bfd_byte *symfile_relocate_debug_section (bfd *abfd, asection *sectp,
|
extern bfd_byte *symfile_relocate_debug_section (struct objfile *, asection *,
|
||||||
bfd_byte * buf);
|
bfd_byte *);
|
||||||
|
|
||||||
extern int symfile_map_offsets_to_segments (bfd *,
|
extern int symfile_map_offsets_to_segments (bfd *,
|
||||||
struct symfile_segment_data *,
|
struct symfile_segment_data *,
|
||||||
|
@ -3035,6 +3035,7 @@ static struct sym_fns xcoff_sym_fns =
|
|||||||
default_symfile_segments, /* sym_segments: Get segment information from
|
default_symfile_segments, /* sym_segments: Get segment information from
|
||||||
a file. */
|
a file. */
|
||||||
aix_process_linenos, /* sym_read_linetable */
|
aix_process_linenos, /* sym_read_linetable */
|
||||||
|
default_symfile_relocate, /* sym_relocate: Relocate a debug section. */
|
||||||
NULL /* next: pointer to next struct sym_fns */
|
NULL /* next: pointer to next struct sym_fns */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user