diff options
author | Tom Tromey <tromey@redhat.com> | 2013-03-21 16:18:48 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2013-03-21 16:18:48 +0000 |
commit | d76488d84eb95326e157d8deca0f626914036667 (patch) | |
tree | 392adf35e3043814a077bf3b6fd3243d0632e6c9 /gdb/symfile.c | |
parent | a72e5169d65104858d32f9090406a072b0fbf5fd (diff) | |
download | gdb-d76488d84eb95326e157d8deca0f626914036667.zip gdb-d76488d84eb95326e157d8deca0f626914036667.tar.gz gdb-d76488d84eb95326e157d8deca0f626914036667.tar.bz2 |
* symfile.c (alloc_section_addr_info): Update header. Don't set
'num_sections' field.
(build_section_addr_info_from_section_table): Set 'num_sections'.
(build_section_addr_info_from_bfd): Likewise.
(build_section_addr_info_from_objfile): Remove dead loop
condition.
(free_section_addr_info): Unconditionally call xfree.
(relative_addr_info_to_section_offsets, addrs_section_sort)
(addr_info_make_relative, syms_from_objfile_1): Remove dead loop
condition.
(syms_from_objfile_1): Remove dead 'if' condition. Check
'num_sections'.
(add_symbol_file_command): Set 'num_sections'.
* symfile-mem.c (symbol_file_add_from_memory): Set
'num_sections'.
* somread.c (som_symfile_offsets): Remove dead loop condition.
* machoread.c (macho_symfile_offsets): Remove dead 'if'.
* jit.c (jit_bfd_try_read_symtab): Set 'num_sections'.
Diffstat (limited to 'gdb/symfile.c')
-rw-r--r-- | gdb/symfile.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/gdb/symfile.c b/gdb/symfile.c index 2abe3f8..d8fabb1 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -197,7 +197,9 @@ find_lowest_section (bfd *abfd, asection *sect, void *obj) *lowest = sect; } -/* Create a new section_addr_info, with room for NUM_SECTIONS. */ +/* Create a new section_addr_info, with room for NUM_SECTIONS. The + new object's 'num_sections' field is set to 0; it must be updated + by the caller. */ struct section_addr_info * alloc_section_addr_info (size_t num_sections) @@ -209,7 +211,6 @@ alloc_section_addr_info (size_t num_sections) + sizeof (struct other_sections) * (num_sections - 1)); sap = (struct section_addr_info *) xmalloc (size); memset (sap, 0, size); - sap->num_sections = num_sections; return sap; } @@ -241,6 +242,8 @@ build_section_addr_info_from_section_table (const struct target_section *start, } } + sap->num_sections = oidx; + return sap; } @@ -262,6 +265,9 @@ build_section_addr_info_from_bfd (bfd *abfd) sap->other[i].sectindex = sec->index; i++; } + + sap->num_sections = i; + return sap; } @@ -277,7 +283,7 @@ build_section_addr_info_from_objfile (const struct objfile *objfile) gdb_assert (objfile->num_sections == bfd_count_sections (objfile->obfd)); */ sap = build_section_addr_info_from_bfd (objfile->obfd); - for (i = 0; i < sap->num_sections && sap->other[i].name; i++) + for (i = 0; i < sap->num_sections; i++) { int sectindex = sap->other[i].sectindex; @@ -294,8 +300,7 @@ free_section_addr_info (struct section_addr_info *sap) int idx; for (idx = 0; idx < sap->num_sections; idx++) - if (sap->other[idx].name) - xfree (sap->other[idx].name); + xfree (sap->other[idx].name); xfree (sap); } @@ -446,7 +451,7 @@ relative_addr_info_to_section_offsets (struct section_offsets *section_offsets, memset (section_offsets, 0, SIZEOF_N_SECTION_OFFSETS (num_sections)); /* Now calculate offsets for section that were specified by the caller. */ - for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++) + for (i = 0; i < addrs->num_sections; i++) { struct other_sections *osp; @@ -506,7 +511,7 @@ addrs_section_sort (struct section_addr_info *addrs) /* `+ 1' for the NULL terminator. */ array = xmalloc (sizeof (*array) * (addrs->num_sections + 1)); - for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++) + for (i = 0; i < addrs->num_sections; i++) array[i] = &addrs->other[i]; array[i] = NULL; @@ -605,7 +610,7 @@ addr_info_make_relative (struct section_addr_info *addrs, bfd *abfd) (the loadable section directly below it in memory). this_offset = lower_offset = lower_addr - lower_orig_addr */ - for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++) + for (i = 0; i < addrs->num_sections; i++) { struct other_sections *sect = addrs_to_abfd_addrs[i]; @@ -997,7 +1002,7 @@ syms_from_objfile_1 (struct objfile *objfile, We no longer warn if the lowest section is not a text segment (as happens for the PA64 port. */ - if (addrs && addrs->other[0].name) + if (addrs && addrs->num_sections > 0) addr_info_make_relative (addrs, objfile->obfd); /* Initialize symbol reading routines for this objfile, allow complaints to @@ -2341,6 +2346,7 @@ add_symbol_file_command (char *args, int from_tty) At this point, we don't know what file type this is, so we can't determine what section names are valid. */ } + section_addrs->num_sections = sec_num; if (from_tty && (!query ("%s", ""))) error (_("Not confirmed.")); |