diff -r -bu a/xen/common/elf.c b/xen/common/elf.c --- a/xen/common/elf.c 2006-06-09 12:32:24.000000000 +0200 +++ b/xen/common/elf.c 2006-06-09 12:36:57.000000000 +0200 @@ -185,8 +185,9 @@ return; maxva = (dsi->v_kernend + ELFROUND - 1) & ~(ELFROUND - 1); - symva = maxva; - maxva += sizeof(int); + if (maxva - dsi->v_kernend < sizeof(int)) + maxva += ELFROUND; + symva = maxva - sizeof(int); dsi->symtab_addr = maxva; dsi->symtab_len = 0; maxva += sizeof(Elf_Ehdr) + ehdr->e_shnum * sizeof(Elf_Shdr);