All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] Fix userland ELF load failure when no .bss is present
@ 2006-12-12 18:38 Thiemo Seufer
  0 siblings, 0 replies; only message in thread
From: Thiemo Seufer @ 2006-12-12 18:38 UTC (permalink / raw)
  To: qemu-devel

Hello All,

the appended patch fixes the case where a ELF Linux binary has a
zero-sized .bss, or none at all.


Thiemo


Index: qemu-work/linux-user/elfload.c
===================================================================
--- qemu-work.orig/linux-user/elfload.c	2006-12-12 18:25:00.000000000 +0000
+++ qemu-work/linux-user/elfload.c	2006-12-12 18:33:08.000000000 +0000
@@ -553,10 +553,13 @@
 /* We need to explicitly zero any fractional pages after the data
    section (i.e. bss).  This would contain the junk from the file that
    should not be in memory. */
-static void padzero(unsigned long elf_bss)
+static void padzero(unsigned long elf_bss, unsigned long last_bss)
 {
         unsigned long nbyte;
 
+	if (elf_bss >= last_bss)
+		return;
+
         /* XXX: this is really a hack : if the real host page size is
            smaller than the target page size, some pages after the end
            of the file may not be mapped. A better fix would be to
@@ -798,7 +801,7 @@
 	 * that there are zeromapped pages up to and including the last
 	 * bss page.
 	 */
-	padzero(elf_bss);
+	padzero(elf_bss, last_bss);
 	elf_bss = TARGET_ELF_PAGESTART(elf_bss + qemu_host_page_size - 1); /* What we have mapped so far */
 
 	/* Map the last of the bss segment */
@@ -1227,7 +1230,7 @@
        sections */
     set_brk(elf_bss, elf_brk);
 
-    padzero(elf_bss);
+    padzero(elf_bss, elf_brk);
 
 #if 0
     printf("(start_brk) %x\n" , info->start_brk);

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-12-12 18:45 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-12-12 18:38 [Qemu-devel] [PATCH] Fix userland ELF load failure when no .bss is present Thiemo Seufer

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.