diff options
author | Jim Blandy <jimb@codesourcery.com> | 2002-11-25 21:00:51 +0000 |
---|---|---|
committer | Jim Blandy <jimb@codesourcery.com> | 2002-11-25 21:00:51 +0000 |
commit | e828957292e22a217882499ab9adf8e1374cef7e (patch) | |
tree | 4b287570074d0a4d91edf7b1b6111bddd461cce6 /gdb/symfile.c | |
parent | b29c9944faca0ff2d6434351419cc707ea974a8b (diff) | |
download | gdb-e828957292e22a217882499ab9adf8e1374cef7e.zip gdb-e828957292e22a217882499ab9adf8e1374cef7e.tar.gz gdb-e828957292e22a217882499ab9adf8e1374cef7e.tar.bz2 |
* symfile.c (init_objfile_sect_indices): New function.
(default_symfile_offsets): Move the section-index-initializing
stuff into init_objfile_sect_indices, and call that.
Diffstat (limited to 'gdb/symfile.c')
-rw-r--r-- | gdb/symfile.c | 80 |
1 files changed, 45 insertions, 35 deletions
diff --git a/gdb/symfile.c b/gdb/symfile.c index aa457b2..0ede698 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -473,43 +473,13 @@ free_section_addr_info (struct section_addr_info *sap) } -/* Parse the user's idea of an offset for dynamic linking, into our idea - of how to represent it for fast symbol reading. This is the default - version of the sym_fns.sym_offsets function for symbol readers that - don't need to do anything special. It allocates a section_offsets table - for the objectfile OBJFILE and stuffs ADDR into all of the offsets. */ - -void -default_symfile_offsets (struct objfile *objfile, - struct section_addr_info *addrs) +/* Initialize OBJFILE's sect_index_* members. */ +static void +init_objfile_sect_indices (struct objfile *objfile) { + asection *sect; int i; - asection *sect = NULL; - - objfile->num_sections = SECT_OFF_MAX; - objfile->section_offsets = (struct section_offsets *) - obstack_alloc (&objfile->psymbol_obstack, SIZEOF_SECTION_OFFSETS); - memset (objfile->section_offsets, 0, SIZEOF_SECTION_OFFSETS); - - /* Now calculate offsets for section that were specified by the - caller. */ - for (i = 0; i < MAX_SECTIONS && addrs->other[i].name; i++) - { - struct other_sections *osp ; - - osp = &addrs->other[i] ; - if (osp->addr == 0) - continue; - - /* Record all sections in offsets */ - /* The section_offsets in the objfile are here filled in using - the BFD index. */ - (objfile->section_offsets)->offsets[osp->sectindex] = osp->addr; - } - - /* Remember the bfd indexes for the .text, .data, .bss and - .rodata sections. */ - + sect = bfd_get_section_by_name (objfile->obfd, ".text"); if (sect) objfile->sect_index_text = sect->index; @@ -556,6 +526,46 @@ default_symfile_offsets (struct objfile *objfile, } } + +/* Parse the user's idea of an offset for dynamic linking, into our idea + of how to represent it for fast symbol reading. This is the default + version of the sym_fns.sym_offsets function for symbol readers that + don't need to do anything special. It allocates a section_offsets table + for the objectfile OBJFILE and stuffs ADDR into all of the offsets. */ + +void +default_symfile_offsets (struct objfile *objfile, + struct section_addr_info *addrs) +{ + int i; + + objfile->num_sections = SECT_OFF_MAX; + objfile->section_offsets = (struct section_offsets *) + obstack_alloc (&objfile->psymbol_obstack, SIZEOF_SECTION_OFFSETS); + memset (objfile->section_offsets, 0, SIZEOF_SECTION_OFFSETS); + + /* Now calculate offsets for section that were specified by the + caller. */ + for (i = 0; i < MAX_SECTIONS && addrs->other[i].name; i++) + { + struct other_sections *osp ; + + osp = &addrs->other[i] ; + if (osp->addr == 0) + continue; + + /* Record all sections in offsets */ + /* The section_offsets in the objfile are here filled in using + the BFD index. */ + (objfile->section_offsets)->offsets[osp->sectindex] = osp->addr; + } + + /* Remember the bfd indexes for the .text, .data, .bss and + .rodata sections. */ + init_objfile_sect_indices (objfile); +} + + /* Process a symbol file, as either the main file or as a dynamically loaded file. |