All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Patch for the open hackware
@ 2008-06-17 15:44 Bean
  2008-06-17 16:02 ` Pavel Roskin
  2008-06-17 17:39 ` Robert Millan
  0 siblings, 2 replies; 9+ messages in thread
From: Bean @ 2008-06-17 15:44 UTC (permalink / raw)
  To: The development of GRUB 2

[-- Attachment #1: Type: text/plain, Size: 393 bytes --]

Hi,

This patch fix a few problem regarding the open hackware
implementation of qemu-ppc:

1, halts when calling grub_ieee1275_interpret
Add new flag GRUB_IEEE1275_FLAG_CANNOT_INTERPRET

2, no memory map, which cause out of memory error
Add new flag GRUB_IEEE1275_FLAG_FORCE_CLAIM, just claim what we need.

3. Can't understand ansi sequence.
Add new flag GRUB_IEEE1275_FLAG_NO_ANSI

-- 
Bean

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: ohw.diff --]
[-- Type: text/x-diff; name=ohw.diff, Size: 3561 bytes --]

diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
index 5c06025..e73c516 100644
--- a/include/grub/ieee1275/ieee1275.h
+++ b/include/grub/ieee1275/ieee1275.h
@@ -89,6 +89,15 @@ enum grub_ieee1275_flag
 
   /* Open Hack'Ware stops when trying to set colors */
   GRUB_IEEE1275_FLAG_CANNOT_SET_COLORS,
+
+  /* Open Hack'Ware stops when grub_ieee1275_interpret is used.  */
+  GRUB_IEEE1275_FLAG_CANNOT_INTERPRET,
+
+  /* Open Hack'Ware has no memory map, just claim what we need.  */
+  GRUB_IEEE1275_FLAG_FORCE_CLAIM,
+
+  /* Open Hack'Ware don't support the ANSI sequence.  */
+  GRUB_IEEE1275_FLAG_NO_ANSI,
 };
 
 extern int EXPORT_FUNC(grub_ieee1275_test_flag) (enum grub_ieee1275_flag flag);
diff --git a/kern/ieee1275/cmain.c b/kern/ieee1275/cmain.c
index 54a52b6..b5e2ba6 100644
--- a/kern/ieee1275/cmain.c
+++ b/kern/ieee1275/cmain.c
@@ -144,6 +144,9 @@ grub_ieee1275_find_options (void)
 	{
 	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_BROKEN_OUTPUT);
 	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_CANNOT_SET_COLORS);
+	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_CANNOT_INTERPRET);
+	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_FORCE_CLAIM);
+	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_NO_ANSI);
 	}
     }
 }
diff --git a/kern/ieee1275/ieee1275.c b/kern/ieee1275/ieee1275.c
index 135b30e..2605901 100644
--- a/kern/ieee1275/ieee1275.c
+++ b/kern/ieee1275/ieee1275.c
@@ -390,6 +390,9 @@ grub_ieee1275_interpret (const char *command, grub_ieee1275_cell_t *catch)
   }
   args;
 
+  if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_CANNOT_INTERPRET))
+    return -1;
+
   INIT_IEEE1275_COMMON (&args.common, "interpret", 1, 1);
   args.command = (grub_ieee1275_cell_t) command;
 
diff --git a/kern/ieee1275/init.c b/kern/ieee1275/init.c
index b8f414b..93c0e68 100644
--- a/kern/ieee1275/init.c
+++ b/kern/ieee1275/init.c
@@ -171,7 +171,23 @@ static void grub_claim_heap (void)
     return 0;
   }
 
-  grub_available_iterate (heap_init);
+  if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_CANNOT_INTERPRET))
+    {
+      grub_addr_t addr;
+      grub_uint32_t len;
+
+      addr = HEAP_MAX_ADDR - HEAP_MIN_SIZE;
+      len = HEAP_MIN_SIZE;
+
+      if (grub_claimmap (addr, len) < 0)
+        return grub_error (GRUB_ERR_OUT_OF_MEMORY,
+                           "Failed to claim heap at 0x%llx, len 0x%llx\n",
+                           addr, len);
+
+      grub_mm_init_region ((void *) addr, len);
+    }
+  else
+    grub_available_iterate (heap_init);
 }
 
 #ifdef __i386__
diff --git a/term/ieee1275/ofconsole.c b/term/ieee1275/ofconsole.c
index 3b269ce..b9206a8 100644
--- a/term/ieee1275/ofconsole.c
+++ b/term/ieee1275/ofconsole.c
@@ -287,8 +287,11 @@ grub_ofconsole_gotoxy (grub_uint8_t x, grub_uint8_t y)
   grub_curr_x = x;
   grub_curr_y = y;
 
-  grub_sprintf (s, "\e[%d;%dH", y + 1, x + 1);
-  grub_ofconsole_writeesc (s);
+  if (! grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_ANSI))
+    {
+      grub_sprintf (s, "\e[%d;%dH", y + 1, x + 1);
+      grub_ofconsole_writeesc (s);
+    }
 }
 
 static void
@@ -297,8 +300,11 @@ grub_ofconsole_cls (void)
   /* Clear the screen.  Using serial console, screen(1) only recognizes the
    * ANSI escape sequence.  Using video console, Apple Open Firmware (version
    * 3.1.1) only recognizes the literal ^L.  So use both.  */
-  grub_ofconsole_writeesc ("\f\e[2J");
-  grub_gotoxy (0, 0);
+  if (! grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_ANSI))
+    {
+      grub_ofconsole_writeesc ("\f\e[2J");
+      grub_gotoxy (0, 0);
+    }
 }
 
 static void

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] Patch for the open hackware
  2008-06-17 15:44 [PATCH] Patch for the open hackware Bean
@ 2008-06-17 16:02 ` Pavel Roskin
  2008-06-17 17:16   ` Bean
  2008-06-17 17:39 ` Robert Millan
  1 sibling, 1 reply; 9+ messages in thread
From: Pavel Roskin @ 2008-06-17 16:02 UTC (permalink / raw)
  To: The development of GRUB 2

On Tue, 2008-06-17 at 23:44 +0800, Bean wrote:
> Hi,
> 
> This patch fix a few problem regarding the open hackware
> implementation of qemu-ppc:
> 
> 1, halts when calling grub_ieee1275_interpret
> Add new flag GRUB_IEEE1275_FLAG_CANNOT_INTERPRET
> 
> 2, no memory map, which cause out of memory error
> Add new flag GRUB_IEEE1275_FLAG_FORCE_CLAIM, just claim what we need.
> 
> 3. Can't understand ansi sequence.
> Add new flag GRUB_IEEE1275_FLAG_NO_ANSI

Looks good to me!

-- 
Regards,
Pavel Roskin



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Patch for the open hackware
  2008-06-17 16:02 ` Pavel Roskin
@ 2008-06-17 17:16   ` Bean
  0 siblings, 0 replies; 9+ messages in thread
From: Bean @ 2008-06-17 17:16 UTC (permalink / raw)
  To: The development of GRUB 2

[-- Attachment #1: Type: text/plain, Size: 142 bytes --]

Hi,

This new patch uses a little trick to make the backspace key works, as
it's quite annoying not being able to delete character.

-- 
Bean

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: ohw_2.diff --]
[-- Type: text/x-diff; name=ohw_2.diff, Size: 3680 bytes --]

diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
index 5c06025..e73c516 100644
--- a/include/grub/ieee1275/ieee1275.h
+++ b/include/grub/ieee1275/ieee1275.h
@@ -89,6 +89,15 @@ enum grub_ieee1275_flag
 
   /* Open Hack'Ware stops when trying to set colors */
   GRUB_IEEE1275_FLAG_CANNOT_SET_COLORS,
+
+  /* Open Hack'Ware stops when grub_ieee1275_interpret is used.  */
+  GRUB_IEEE1275_FLAG_CANNOT_INTERPRET,
+
+  /* Open Hack'Ware has no memory map, just claim what we need.  */
+  GRUB_IEEE1275_FLAG_FORCE_CLAIM,
+
+  /* Open Hack'Ware don't support the ANSI sequence.  */
+  GRUB_IEEE1275_FLAG_NO_ANSI,
 };
 
 extern int EXPORT_FUNC(grub_ieee1275_test_flag) (enum grub_ieee1275_flag flag);
diff --git a/kern/ieee1275/cmain.c b/kern/ieee1275/cmain.c
index 54a52b6..b5e2ba6 100644
--- a/kern/ieee1275/cmain.c
+++ b/kern/ieee1275/cmain.c
@@ -144,6 +144,9 @@ grub_ieee1275_find_options (void)
 	{
 	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_BROKEN_OUTPUT);
 	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_CANNOT_SET_COLORS);
+	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_CANNOT_INTERPRET);
+	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_FORCE_CLAIM);
+	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_NO_ANSI);
 	}
     }
 }
diff --git a/kern/ieee1275/ieee1275.c b/kern/ieee1275/ieee1275.c
index 135b30e..2605901 100644
--- a/kern/ieee1275/ieee1275.c
+++ b/kern/ieee1275/ieee1275.c
@@ -390,6 +390,9 @@ grub_ieee1275_interpret (const char *command, grub_ieee1275_cell_t *catch)
   }
   args;
 
+  if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_CANNOT_INTERPRET))
+    return -1;
+
   INIT_IEEE1275_COMMON (&args.common, "interpret", 1, 1);
   args.command = (grub_ieee1275_cell_t) command;
 
diff --git a/kern/ieee1275/init.c b/kern/ieee1275/init.c
index b8f414b..dcaafa2 100644
--- a/kern/ieee1275/init.c
+++ b/kern/ieee1275/init.c
@@ -171,7 +171,26 @@ static void grub_claim_heap (void)
     return 0;
   }
 
-  grub_available_iterate (heap_init);
+  if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_CANNOT_INTERPRET))
+    {
+      grub_addr_t addr;
+      grub_uint32_t len;
+
+      addr = HEAP_MAX_ADDR - HEAP_MIN_SIZE;
+      len = HEAP_MIN_SIZE;
+
+      if (grub_claimmap (addr, len) < 0)
+        {
+          grub_error (GRUB_ERR_OUT_OF_MEMORY,
+                      "Failed to claim heap at 0x%llx, len 0x%llx\n",
+                      addr, len);
+          return;
+        }
+
+      grub_mm_init_region ((void *) addr, len);
+    }
+  else
+    grub_available_iterate (heap_init);
 }
 
 #ifdef __i386__
diff --git a/term/ieee1275/ofconsole.c b/term/ieee1275/ofconsole.c
index 3b269ce..9af4327 100644
--- a/term/ieee1275/ofconsole.c
+++ b/term/ieee1275/ofconsole.c
@@ -63,6 +63,9 @@ static int bgcolor = 0;
 static void
 grub_ofconsole_writeesc (const char *str)
 {
+  if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_ANSI))
+    return;
+
   while (*str)
     {
       char chr = *(str++);
@@ -284,11 +287,28 @@ static void
 grub_ofconsole_gotoxy (grub_uint8_t x, grub_uint8_t y)
 {
   char s[11]; /* 5 + 3 + 3.  */
-  grub_curr_x = x;
-  grub_curr_y = y;
 
-  grub_sprintf (s, "\e[%d;%dH", y + 1, x + 1);
-  grub_ofconsole_writeesc (s);
+  if (! grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_ANSI))
+    {
+      grub_curr_x = x;
+      grub_curr_y = y;
+
+      grub_sprintf (s, "\e[%d;%dH", y + 1, x + 1);
+      grub_ofconsole_writeesc (s);
+    }
+  else
+    {
+      if ((y == grub_curr_y) && (x == grub_curr_x - 1))
+        {
+          char chr;
+
+          chr = '\b';
+          grub_ieee1275_write (stdout_ihandle, &chr, 1, 0);
+        }
+
+      grub_curr_x = x;
+      grub_curr_y = y;
+    }
 }
 
 static void

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] Patch for the open hackware
  2008-06-17 15:44 [PATCH] Patch for the open hackware Bean
  2008-06-17 16:02 ` Pavel Roskin
@ 2008-06-17 17:39 ` Robert Millan
  2008-06-17 17:45   ` Bean
  1 sibling, 1 reply; 9+ messages in thread
From: Robert Millan @ 2008-06-17 17:39 UTC (permalink / raw)
  To: The development of GRUB 2

On Tue, Jun 17, 2008 at 11:44:36PM +0800, Bean wrote:
> +  if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_CANNOT_INTERPRET))
> +    {
> +      grub_addr_t addr;
> +      grub_uint32_t len;
> +
> +      addr = HEAP_MAX_ADDR - HEAP_MIN_SIZE;
> +      len = HEAP_MIN_SIZE;
> +
> +      if (grub_claimmap (addr, len) < 0)
> +        return grub_error (GRUB_ERR_OUT_OF_MEMORY,
> +                           "Failed to claim heap at 0x%llx, len 0x%llx\n",
> +                           addr, len);
> +
> +      grub_mm_init_region ((void *) addr, len);
> +    }
> +  else
> +    grub_available_iterate (heap_init);
>  }

This skips all the checks in heap_init(), which were intended for situations
that could also apply to Open Hackware.  Would be better if you call
heap_init() with the desired parameters instead.

-- 
Robert Millan

<GPLv2> I know my rights; I want my phone call!
<DRM> What good is a phone call… if you are unable to speak?
(as seen on /.)



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Patch for the open hackware
  2008-06-17 17:39 ` Robert Millan
@ 2008-06-17 17:45   ` Bean
  2008-06-30 10:08     ` Bean
  0 siblings, 1 reply; 9+ messages in thread
From: Bean @ 2008-06-17 17:45 UTC (permalink / raw)
  To: The development of GRUB 2

[-- Attachment #1: Type: text/plain, Size: 1088 bytes --]

On Wed, Jun 18, 2008 at 1:39 AM, Robert Millan <rmh@aybabtu.com> wrote:
> On Tue, Jun 17, 2008 at 11:44:36PM +0800, Bean wrote:
>> +  if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_CANNOT_INTERPRET))
>> +    {
>> +      grub_addr_t addr;
>> +      grub_uint32_t len;
>> +
>> +      addr = HEAP_MAX_ADDR - HEAP_MIN_SIZE;
>> +      len = HEAP_MIN_SIZE;
>> +
>> +      if (grub_claimmap (addr, len) < 0)
>> +        return grub_error (GRUB_ERR_OUT_OF_MEMORY,
>> +                           "Failed to claim heap at 0x%llx, len 0x%llx\n",
>> +                           addr, len);
>> +
>> +      grub_mm_init_region ((void *) addr, len);
>> +    }
>> +  else
>> +    grub_available_iterate (heap_init);
>>  }
>
> This skips all the checks in heap_init(), which were intended for situations
> that could also apply to Open Hackware.  Would be better if you call
> heap_init() with the desired parameters instead.

Hi,

You're right, this is the new patch.

btw, I also include the previous elf header patch. It's working in
linuxbios, olpc and ppc, I guess it should be all right.

-- 
Bean

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: ohw_3.diff --]
[-- Type: text/x-diff; name=ohw_3.diff, Size: 5834 bytes --]

diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
index 5c06025..e73c516 100644
--- a/include/grub/ieee1275/ieee1275.h
+++ b/include/grub/ieee1275/ieee1275.h
@@ -89,6 +89,15 @@ enum grub_ieee1275_flag
 
   /* Open Hack'Ware stops when trying to set colors */
   GRUB_IEEE1275_FLAG_CANNOT_SET_COLORS,
+
+  /* Open Hack'Ware stops when grub_ieee1275_interpret is used.  */
+  GRUB_IEEE1275_FLAG_CANNOT_INTERPRET,
+
+  /* Open Hack'Ware has no memory map, just claim what we need.  */
+  GRUB_IEEE1275_FLAG_FORCE_CLAIM,
+
+  /* Open Hack'Ware don't support the ANSI sequence.  */
+  GRUB_IEEE1275_FLAG_NO_ANSI,
 };
 
 extern int EXPORT_FUNC(grub_ieee1275_test_flag) (enum grub_ieee1275_flag flag);
diff --git a/kern/ieee1275/cmain.c b/kern/ieee1275/cmain.c
index 54a52b6..b5e2ba6 100644
--- a/kern/ieee1275/cmain.c
+++ b/kern/ieee1275/cmain.c
@@ -144,6 +144,9 @@ grub_ieee1275_find_options (void)
 	{
 	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_BROKEN_OUTPUT);
 	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_CANNOT_SET_COLORS);
+	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_CANNOT_INTERPRET);
+	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_FORCE_CLAIM);
+	  grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_NO_ANSI);
 	}
     }
 }
diff --git a/kern/ieee1275/ieee1275.c b/kern/ieee1275/ieee1275.c
index 135b30e..2605901 100644
--- a/kern/ieee1275/ieee1275.c
+++ b/kern/ieee1275/ieee1275.c
@@ -390,6 +390,9 @@ grub_ieee1275_interpret (const char *command, grub_ieee1275_cell_t *catch)
   }
   args;
 
+  if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_CANNOT_INTERPRET))
+    return -1;
+
   INIT_IEEE1275_COMMON (&args.common, "interpret", 1, 1);
   args.command = (grub_ieee1275_cell_t) command;
 
diff --git a/kern/ieee1275/init.c b/kern/ieee1275/init.c
index b8f414b..645d1bd 100644
--- a/kern/ieee1275/init.c
+++ b/kern/ieee1275/init.c
@@ -171,7 +171,10 @@ static void grub_claim_heap (void)
     return 0;
   }
 
-  grub_available_iterate (heap_init);
+  if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_CANNOT_INTERPRET))
+    heap_init (HEAP_MAX_ADDR - HEAP_MIN_SIZE,  HEAP_MIN_SIZE);
+  else
+    grub_available_iterate (heap_init);
 }
 
 #ifdef __i386__
diff --git a/term/ieee1275/ofconsole.c b/term/ieee1275/ofconsole.c
index 3b269ce..9af4327 100644
--- a/term/ieee1275/ofconsole.c
+++ b/term/ieee1275/ofconsole.c
@@ -63,6 +63,9 @@ static int bgcolor = 0;
 static void
 grub_ofconsole_writeesc (const char *str)
 {
+  if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_ANSI))
+    return;
+
   while (*str)
     {
       char chr = *(str++);
@@ -284,11 +287,28 @@ static void
 grub_ofconsole_gotoxy (grub_uint8_t x, grub_uint8_t y)
 {
   char s[11]; /* 5 + 3 + 3.  */
-  grub_curr_x = x;
-  grub_curr_y = y;
 
-  grub_sprintf (s, "\e[%d;%dH", y + 1, x + 1);
-  grub_ofconsole_writeesc (s);
+  if (! grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_ANSI))
+    {
+      grub_curr_x = x;
+      grub_curr_y = y;
+
+      grub_sprintf (s, "\e[%d;%dH", y + 1, x + 1);
+      grub_ofconsole_writeesc (s);
+    }
+  else
+    {
+      if ((y == grub_curr_y) && (x == grub_curr_x - 1))
+        {
+          char chr;
+
+          chr = '\b';
+          grub_ieee1275_write (stdout_ihandle, &chr, 1, 0);
+        }
+
+      grub_curr_x = x;
+      grub_curr_y = y;
+    }
 }
 
 static void
diff --git a/util/elf/grub-mkimage.c b/util/elf/grub-mkimage.c
index ca138dd..43c873e 100644
--- a/util/elf/grub-mkimage.c
+++ b/util/elf/grub-mkimage.c
@@ -166,8 +166,8 @@ add_segments (char *dir, FILE *out, int chrp, char *mods[])
   FILE *in;
   char *kernel_path;
   grub_addr_t grub_end = 0;
-  off_t phdroff;
-  int i;
+  off_t offset;
+  int i, phdr_size;
 
   /* Read ELF header.  */
   kernel_path = grub_util_get_path (dir, "kernel.elf");
@@ -177,8 +177,21 @@ add_segments (char *dir, FILE *out, int chrp, char *mods[])
 
   grub_util_read_at (&ehdr, sizeof (ehdr), 0, in);
   
-  phdrs = xmalloc (grub_target_to_host16 (ehdr.e_phentsize)
-		   * (grub_target_to_host16 (ehdr.e_phnum) + 2));
+  offset = ALIGN_UP (sizeof (ehdr), sizeof (long));
+  ehdr.e_phoff = grub_host_to_target32 (offset);
+
+  phdr_size = (grub_target_to_host16 (ehdr.e_phentsize) *
+               grub_target_to_host16 (ehdr.e_phnum));
+
+  if (mods[0] != NULL)
+    phdr_size += grub_target_to_host16 (ehdr.e_phentsize);
+
+  if (chrp)
+    phdr_size += grub_target_to_host16 (ehdr.e_phentsize);
+
+  phdrs = xmalloc (phdr_size);
+  offset += ALIGN_UP (phdr_size, sizeof (long));
+
   /* Copy all existing segments.  */
   for (i = 0; i < grub_target_to_host16 (ehdr.e_phnum); i++)
     {
@@ -207,8 +220,11 @@ add_segments (char *dir, FILE *out, int chrp, char *mods[])
   
       grub_util_read_at (segment_img, grub_target_to_host32 (phdr->p_filesz),
 			 grub_target_to_host32 (phdr->p_offset), in);
+
+      phdr->p_offset = grub_host_to_target32 (offset);
       grub_util_write_image_at (segment_img, grub_target_to_host32 (phdr->p_filesz),
-				grub_target_to_host32 (phdr->p_offset), out);
+				offset, out);
+      offset += ALIGN_UP (grub_target_to_host32 (phdr->p_filesz), sizeof (long));
 
       free (segment_img);
     }
@@ -249,14 +265,10 @@ add_segments (char *dir, FILE *out, int chrp, char *mods[])
   ehdr.e_shnum = 0;
   ehdr.e_shstrndx = 0;
 
-  /* Append entire segment table to the file.  */
-  phdroff = ALIGN_UP (grub_util_get_fp_size (out), sizeof (long));
-  grub_util_write_image_at (phdrs, grub_target_to_host16 (ehdr.e_phentsize)
-			    * grub_target_to_host16 (ehdr.e_phnum), phdroff,
-			    out);
+  /* Write entire segment table to the file.  */
+  grub_util_write_image_at (phdrs, phdr_size, grub_target_to_host32 (ehdr.e_phoff), out);
 
   /* Write ELF header.  */
-  ehdr.e_phoff = grub_host_to_target32 (phdroff);
   grub_util_write_image_at (&ehdr, sizeof (ehdr), 0, out);
 
   free (phdrs);

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] Patch for the open hackware
  2008-06-17 17:45   ` Bean
@ 2008-06-30 10:08     ` Bean
  2008-06-30 16:23       ` Pavel Roskin
  0 siblings, 1 reply; 9+ messages in thread
From: Bean @ 2008-06-30 10:08 UTC (permalink / raw)
  To: The development of GRUB 2

On Wed, Jun 18, 2008 at 1:45 AM, Bean <bean123ch@gmail.com> wrote:
> On Wed, Jun 18, 2008 at 1:39 AM, Robert Millan <rmh@aybabtu.com> wrote:
>> On Tue, Jun 17, 2008 at 11:44:36PM +0800, Bean wrote:
>>> +  if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_CANNOT_INTERPRET))
>>> +    {
>>> +      grub_addr_t addr;
>>> +      grub_uint32_t len;
>>> +
>>> +      addr = HEAP_MAX_ADDR - HEAP_MIN_SIZE;
>>> +      len = HEAP_MIN_SIZE;
>>> +
>>> +      if (grub_claimmap (addr, len) < 0)
>>> +        return grub_error (GRUB_ERR_OUT_OF_MEMORY,
>>> +                           "Failed to claim heap at 0x%llx, len 0x%llx\n",
>>> +                           addr, len);
>>> +
>>> +      grub_mm_init_region ((void *) addr, len);
>>> +    }
>>> +  else
>>> +    grub_available_iterate (heap_init);
>>>  }
>>
>> This skips all the checks in heap_init(), which were intended for situations
>> that could also apply to Open Hackware.  Would be better if you call
>> heap_init() with the desired parameters instead.
>
> Hi,
>
> You're right, this is the new patch.
>
> btw, I also include the previous elf header patch. It's working in
> linuxbios, olpc and ppc, I guess it should be all right.

Hi,

If no one objects, I'd like to commit this soon.

-- 
Bean



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Patch for the open hackware
  2008-06-30 10:08     ` Bean
@ 2008-06-30 16:23       ` Pavel Roskin
  2008-07-01 15:56         ` Robert Millan
  0 siblings, 1 reply; 9+ messages in thread
From: Pavel Roskin @ 2008-06-30 16:23 UTC (permalink / raw)
  To: The development of GRUB 2

On Mon, 2008-06-30 at 18:08 +0800, Bean wrote:

> If no one objects, I'd like to commit this soon.

No objection from me.  I was about to ask you to commit it.

-- 
Regards,
Pavel Roskin



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Patch for the open hackware
  2008-06-30 16:23       ` Pavel Roskin
@ 2008-07-01 15:56         ` Robert Millan
  2008-07-02  7:39           ` Bean
  0 siblings, 1 reply; 9+ messages in thread
From: Robert Millan @ 2008-07-01 15:56 UTC (permalink / raw)
  To: The development of GRUB 2

On Mon, Jun 30, 2008 at 12:23:42PM -0400, Pavel Roskin wrote:
> On Mon, 2008-06-30 at 18:08 +0800, Bean wrote:
> 
> > If no one objects, I'd like to commit this soon.
> 
> No objection from me.  I was about to ask you to commit it.

No objection either

-- 
Robert Millan

<GPLv2> I know my rights; I want my phone call!
<DRM> What good is a phone call… if you are unable to speak?
(as seen on /.)



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Patch for the open hackware
  2008-07-01 15:56         ` Robert Millan
@ 2008-07-02  7:39           ` Bean
  0 siblings, 0 replies; 9+ messages in thread
From: Bean @ 2008-07-02  7:39 UTC (permalink / raw)
  To: The development of GRUB 2

On Tue, Jul 1, 2008 at 11:56 PM, Robert Millan <rmh@aybabtu.com> wrote:
> On Mon, Jun 30, 2008 at 12:23:42PM -0400, Pavel Roskin wrote:
>> On Mon, 2008-06-30 at 18:08 +0800, Bean wrote:
>>
>> > If no one objects, I'd like to commit this soon.
>>
>> No objection from me.  I was about to ask you to commit it.
>
> No objection either

Committed.

-- 
Bean



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2008-07-02  7:39 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-17 15:44 [PATCH] Patch for the open hackware Bean
2008-06-17 16:02 ` Pavel Roskin
2008-06-17 17:16   ` Bean
2008-06-17 17:39 ` Robert Millan
2008-06-17 17:45   ` Bean
2008-06-30 10:08     ` Bean
2008-06-30 16:23       ` Pavel Roskin
2008-07-01 15:56         ` Robert Millan
2008-07-02  7:39           ` Bean

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.