aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2011-02-14 19:19:18 +0000
committerPedro Alves <palves@redhat.com>2011-02-14 19:19:18 +0000
commitc0f61f9c377a278ce83259cbf2251e178bbc0e85 (patch)
tree56db943ad02a10835fa57dfc44a20eb98b66eb88
parent602427c4af6c2c0946c40a38541d9a5243860744 (diff)
downloadgdb-c0f61f9c377a278ce83259cbf2251e178bbc0e85.zip
gdb-c0f61f9c377a278ce83259cbf2251e178bbc0e85.tar.gz
gdb-c0f61f9c377a278ce83259cbf2251e178bbc0e85.tar.bz2
gdb/
* memrange.c (compare_mem_ranges): Mention sort order in describing comment. (normalize_mem_ranges): Add comment. Fix ra->length calculation. * tracepoint.c (traceframe_available_memory): Extend comment to mention what happens to RESULT when the target does not support the query.
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/memrange.c10
-rw-r--r--gdb/tracepoint.c9
3 files changed, 22 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 03b16fd..523220c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,4 +1,13 @@
2011-02-14 Pedro Alves <pedro@codesourcery.com>
+
+ * memrange.c (compare_mem_ranges): Mention sort order in
+ describing comment.
+ (normalize_mem_ranges): Add comment. Fix ra->length calculation.
+ * tracepoint.c (traceframe_available_memory): Extend comment to
+ mention what happens to RESULT when the target does not support
+ the query.
+
+2011-02-14 Pedro Alves <pedro@codesourcery.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
* value.c (mark_value_bytes_unavailable): Fix indexing the `bef'
diff --git a/gdb/memrange.c b/gdb/memrange.c
index 4ffe6bd..dcacff6 100644
--- a/gdb/memrange.c
+++ b/gdb/memrange.c
@@ -31,7 +31,8 @@ mem_ranges_overlap (CORE_ADDR start1, int len1,
return (l < h);
}
-/* qsort comparison function, that compares mem_ranges. */
+/* qsort comparison function, that compares mem_ranges. Ranges are
+ sorted in ascending START order. */
static int
compare_mem_ranges (const void *ap, const void *bp)
@@ -50,6 +51,10 @@ compare_mem_ranges (const void *ap, const void *bp)
void
normalize_mem_ranges (VEC(mem_range_s) *ranges)
{
+ /* This function must not use any VEC operation on RANGES that
+ reallocates the memory block as that invalidates the RANGES
+ pointer, which callers expect to remain valid. */
+
if (!VEC_empty (mem_range_s, ranges))
{
struct mem_range *ra, *rb;
@@ -68,7 +73,8 @@ normalize_mem_ranges (VEC(mem_range_s) *ranges)
merge them. */
if (rb->start <= ra->start + ra->length)
{
- ra->length = (rb->start + rb->length) - ra->start;
+ ra->length = max (ra->length,
+ (rb->start - ra->start) + rb->length);
continue; /* next b, same a */
}
a++; /* next a */
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index 3eae937..4389f12 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -4635,10 +4635,11 @@ get_traceframe_info (void)
return traceframe_info;
}
-/* Return in RESULT, the set of collected memory in the current
- traceframe, found within the LEN bytes range starting at MEMADDR.
- Returns true if the target supports the query, otherwise returns
- false. */
+/* If the target supports the query, return in RESULT the set of
+ collected memory in the current traceframe, found within the LEN
+ bytes range starting at MEMADDR. Returns true if the target
+ supports the query, otherwise returns false, and RESULT is left
+ undefined. */
int
traceframe_available_memory (VEC(mem_range_s) **result,