commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

hurd-l4/laden ia32-cmain.c loader.c


From: Marcus Brinkmann
Subject: hurd-l4/laden ia32-cmain.c loader.c
Date: Sun, 07 Sep 2003 20:00:23 -0400

CVSROOT:        /cvsroot/hurd
Module name:    hurd-l4
Branch:         
Changes by:     Marcus Brinkmann <address@hidden>       03/09/07 20:00:23

Modified files:
        laden          : ia32-cmain.c loader.c 

Log message:
        Correct check for overlapping regions, make grub check finer.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/hurd/hurd-l4/laden/ia32-cmain.c.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/hurd/hurd-l4/laden/loader.c.diff?tr1=1.3&tr2=1.4&r1=text&r2=text

Patches:
Index: hurd-l4/laden/ia32-cmain.c
diff -u hurd-l4/laden/ia32-cmain.c:1.4 hurd-l4/laden/ia32-cmain.c:1.5
--- hurd-l4/laden/ia32-cmain.c:1.4      Sun Sep  7 19:35:44 2003
+++ hurd-l4/laden/ia32-cmain.c  Sun Sep  7 20:00:22 2003
@@ -127,16 +127,19 @@
 
   start = (l4_word_t) mbi;
   end = start + sizeof (*mbi) - 1;
+  loader_add_region ("grub-mbi", start, end, 1);
+  
   if (CHECK_FLAG (mbi->flags, 3))
     {
       module_t *mod = (module_t *) mbi->mods_addr;
       int nr;
 
-      if (((l4_word_t) mod) < start)
-       start = (l4_word_t) mod;
-      if (((l4_word_t) mod) + mbi->mods_count * sizeof (*mod) > end)
-       end = ((l4_word_t) mod) + mbi->mods_count * sizeof (*mod);
+      start = (l4_word_t) mod;
+      end = ((l4_word_t) mod) + mbi->mods_count * sizeof (*mod);
+      loader_add_region ("grub-mods", start, end, 1);
 
+      start = (l4_word_t) mod[0].string;
+      end = start;
       for (nr = 0; nr < mbi->mods_count; nr++)
        {
          char *str = (char *) mod[nr].string;
@@ -151,8 +154,8 @@
                end = (l4_word_t) str;
            }
        }
+      loader_add_region ("grub-mods-cmdlines", start, end, 1);
     }
-  loader_add_region ("grub-mbi", start, end, 1);
 
   /* Now invoke the main function.  */
   main (argc, argv);
Index: hurd-l4/laden/loader.c
diff -u hurd-l4/laden/loader.c:1.3 hurd-l4/laden/loader.c:1.4
--- hurd-l4/laden/loader.c:1.3  Sun Sep  7 19:35:44 2003
+++ hurd-l4/laden/loader.c      Sun Sep  7 20:00:23 2003
@@ -97,7 +97,8 @@
   for (i = 0; i < nr_regions; i++)
     {
       if ((start >= used_regions[i].start && start < used_regions[i].end)
-         || (end >= used_regions[i].start && end < used_regions[i].end))
+         || (end >= used_regions[i].start && end < used_regions[i].end)
+         || (start < used_regions[i].start && end >= used_regions[i].start))
        panic ("%s (0x%x - 0x%x) conflicts with %s (0x%x - 0x%x)",
               name, start, end, used_regions[i].name, used_regions[i].start,
               used_regions[i].end);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]