* [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.