Add basic support for AArch64.
[deliverable/binutils-gdb.git] / gdb / memrange.c
index 4ffe6bdd6dda5d2035cebee3d70222e9fbc44553..53275a9238b440d1aba8608fb5da50078bd1e79b 100644 (file)
@@ -1,6 +1,6 @@
 /* Memory ranges
 
-   Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 2010-2013 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -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 */
This page took 0.038685 seconds and 4 git commands to generate.