diff options
author | Tom Tromey <tromey@redhat.com> | 2013-04-08 20:04:42 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2013-04-08 20:04:42 +0000 |
commit | 65cf3563597713173bb688287a21666ec66e722d (patch) | |
tree | 81c99cb31198d4095c8f7aad732cc2255683225f /gdb/gdb_bfd.c | |
parent | 7cbd4a934e9cf3808e1199c62e65b4c25b24b4e5 (diff) | |
download | gdb-65cf3563597713173bb688287a21666ec66e722d.zip gdb-65cf3563597713173bb688287a21666ec66e722d.tar.gz gdb-65cf3563597713173bb688287a21666ec66e722d.tar.bz2 |
* coffread.c (cs_to_section): Use gdb_bfd_section_index.
* elfread.c (record_minimal_symbol, elf_symtab_read): Use
gdb_bfd_section_index.
* gdb_bfd.c (gdb_bfd_section_index, gdb_bfd_count_sections):
New functions.
* gdb_bfd.h (gdb_bfd_section_index, gdb_bfd_count_sections):
Declare.
* machoread.c (macho_symtab_add_minsym, macho_symfile_offsets):
Update.
* objfiles.c (add_to_objfile_sections_full): New function.
(add_to_objfile_sections): Use it.
(build_section_table): Rewrite.
(objfile_relocate1): Use gdb_bfd_section_index. Update.
* objfiles.h (obj_section_offset): Use gdb_bfd_section_index.
(struct objfile) <sections>: Update comment.
(ALL_OBJFILE_OSECTIONS): Skip sections where the_bfd_section
is NULL.
(ALL_OBJSECTIONS): Use it.
* solib-dsbt.c (dsbt_relocate_main_executable): Update.
* solib-frv.c (frv_relocate_main_executable): Update.
* solib-target.c (solib_target_relocate_section_addresses):
Use gdb_bfd_section_index.
* symfile.c (build_section_addr_info_from_section_table):
Use gdb_bfd_section_index.
(build_section_addr_info_from_bfd, place_section): Likewise.
* symtab.c (fixup_section): Update.
* xcoffread.c (find_targ_sec): Use gdb_bfd_section_index.
Diffstat (limited to 'gdb/gdb_bfd.c')
-rw-r--r-- | gdb/gdb_bfd.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/gdb/gdb_bfd.c b/gdb/gdb_bfd.c index 53c3a12..e7cd523 100644 --- a/gdb/gdb_bfd.c +++ b/gdb/gdb_bfd.c @@ -605,6 +605,36 @@ gdb_bfd_fdopenr (const char *filename, const char *target, int fd) +gdb_static_assert (ARRAY_SIZE (_bfd_std_section) == 4); + +/* See gdb_bfd.h. */ + +int +gdb_bfd_section_index (bfd *abfd, asection *section) +{ + if (section == NULL) + return -1; + else if (section == bfd_com_section_ptr) + return bfd_count_sections (abfd) + 1; + else if (section == bfd_und_section_ptr) + return bfd_count_sections (abfd) + 2; + else if (section == bfd_abs_section_ptr) + return bfd_count_sections (abfd) + 3; + else if (section == bfd_ind_section_ptr) + return bfd_count_sections (abfd) + 4; + return section->index; +} + +/* See gdb_bfd.h. */ + +int +gdb_bfd_count_sections (bfd *abfd) +{ + return bfd_count_sections (abfd) + 4; +} + + + /* A callback for htab_traverse that prints a single BFD. */ static int |