aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2011-05-11 04:56:08 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2011-05-11 04:56:08 +0000
commit5488dafb5a9528b7381ea2a0d6218504fce92b68 (patch)
tree043545375d78e295485ee951fe2222227f825390
parent403676b5704d576dfc3a663e4d55d6525053ce3f (diff)
downloadgdb-5488dafb5a9528b7381ea2a0d6218504fce92b68.zip
gdb-5488dafb5a9528b7381ea2a0d6218504fce92b68.tar.gz
gdb-5488dafb5a9528b7381ea2a0d6218504fce92b68.tar.bz2
gdb/
Make addrs->SECTINDEX always defined. * symfile.c (relative_addr_info_to_section_offsets): Check for SECTINDEX -1, not for zero ADDR. (addrs_section_compar): Remove checking for invalid SECTINDEX. (addr_info_make_relative): Set SECTINDEX to -1 for unmatched entries. * symfile.h (struct section_addr_info) <sectindex>: Update the comment on its validity.
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/symfile.c10
-rw-r--r--gdb/symfile.h2
3 files changed, 14 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 30c4078..b98297c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+2011-05-11 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Make addrs->SECTINDEX always defined.
+ * symfile.c (relative_addr_info_to_section_offsets): Check for
+ SECTINDEX -1, not for zero ADDR.
+ (addrs_section_compar): Remove checking for invalid SECTINDEX.
+ (addr_info_make_relative): Set SECTINDEX to -1 for unmatched entries.
+ * symfile.h (struct section_addr_info) <sectindex>: Update the comment
+ on its validity.
+
2011-05-10 Doug Evans <dje@google.com>
* linux-thread-db.c: Whitespace cleanup.
diff --git a/gdb/symfile.c b/gdb/symfile.c
index cec6870..4689e0e 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -527,7 +527,7 @@ relative_addr_info_to_section_offsets (struct section_offsets *section_offsets,
struct other_sections *osp;
osp = &addrs->other[i];
- if (osp->addr == 0)
+ if (osp->sectindex == -1)
continue;
/* Record all sections in offsets. */
@@ -568,10 +568,7 @@ addrs_section_compar (const void *ap, const void *bp)
if (retval)
return retval;
- /* SECTINDEX is undefined iff ADDR is zero. */
- a_idx = a->addr == 0 ? 0 : a->sectindex;
- b_idx = b->addr == 0 ? 0 : b->sectindex;
- return a_idx - b_idx;
+ return a->sectindex - b->sectindex;
}
/* Provide sorted array of pointers to sections of ADDRS. The array is
@@ -734,8 +731,7 @@ addr_info_make_relative (struct section_addr_info *addrs, bfd *abfd)
bfd_get_filename (abfd));
addrs->other[i].addr = 0;
-
- /* SECTINDEX is invalid if ADDR is zero. */
+ addrs->other[i].sectindex = -1;
}
}
diff --git a/gdb/symfile.h b/gdb/symfile.h
index 4dfd4d3..3544475 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -86,7 +86,7 @@ struct section_addr_info
CORE_ADDR addr;
char *name;
- /* SECTINDEX must be valid for associated BFD if ADDR is not zero. */
+ /* SECTINDEX must be valid for associated BFD or set to -1. */
int sectindex;
} other[1];
};