]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Add DEBUG_RELOCATOR parts
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 28 Aug 2010 09:34:33 +0000 (11:34 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 28 Aug 2010 09:34:33 +0000 (11:34 +0200)
grub-core/lib/relocator.c

index 9f9927929508d8399a9bfe05c33975dcedb1d78b..0acd59b947596abbe60fdd9004beb57883d031c3 100644 (file)
@@ -1283,6 +1283,25 @@ grub_relocator_alloc_chunk_addr (struct grub_relocator *rel,
 
   chunk->srcv = grub_map_memory (chunk->src, chunk->size);
   *out = chunk;
+#ifdef DEBUG_RELOCATOR
+  {
+    grub_mm_region_t r;
+    grub_mm_header_t p;
+    grub_memset (chunk->srcv, 0xfa, chunk->size);
+    for (r = grub_mm_base; r; r = r->next)
+      {
+       p = r->first;
+       do
+         {
+           if ((grub_addr_t) p < (grub_addr_t) (r + 1)
+               || (grub_addr_t) p >= (grub_addr_t) (r + 1) + r->size)
+             grub_fatal (__FILE__ ":%d: out of range pointer: %p\n", __LINE__, p);
+           p = p->next;
+         }
+       while (p != r->first);
+      }
+  }
+#endif
   return GRUB_ERR_NONE;
 }
 
@@ -1416,6 +1435,26 @@ grub_relocator_alloc_chunk_align (struct grub_relocator *rel,
                rel->chunks->next);
   chunk->srcv = grub_map_memory (chunk->src, chunk->size);
   *out = chunk;
+#ifdef DEBUG_RELOCATOR
+  {
+    grub_mm_region_t r;
+    grub_mm_header_t p;
+
+    grub_memset (chunk->srcv, 0xfa, chunk->size);
+    for (r = grub_mm_base; r; r = r->next)
+      {
+       p = r->first;
+       do
+         {
+           if ((grub_addr_t) p < (grub_addr_t) (r + 1)
+               || (grub_addr_t) p >= (grub_addr_t) (r + 1) + r->size)
+             grub_fatal (__FILE__ "%d: out of range pointer: %p\n", __LINE__, p);
+           p = p->next;
+         }
+       while (p != r->first);
+      }
+  }
+#endif
   return GRUB_ERR_NONE;
 }