There's a rather nasty bug in elf_aux.c which was uncovered by the #if/#ifdef patch in -mm2. We have the following:
#if ELF_CLASS == ELFCLASS32 typedef Elf32_auxv_t elf_auxv_t; #else typedef Elf64_auxv_t elf_auxv_t; #endif Unfortunately, ELFCLASS32 is never defined, so we end up with Elf64_aux_v_t. The patch correctly added an include of <asm/elf.h> to define it. However, with Elf32_auxv_t, never file systems don't boot. This is because UML then recognizes the presence of the vsyscall page and sets __kernel_vsyscall, vsyscall_ehdr, and vsyscall_end accordingly. These seem to end up in UML process' ELF tables, which segfault endlessly on the non-existant vsyscall page. So, what is the intent here? Do we want to map the host's vsyscall page, and just forgot to? Or do we want to tell our processes that there is no vsyscall page? In my tree, I have this disabled with this: Index: linux-2.6.12-rc3-mm2/arch/um/os-Linux/elf_aux.c =================================================================== --- linux-2.6.12-rc3-mm2.orig/arch/um/os-Linux/elf_aux.c 2005-07-27 14:56:46.000000000 -0400 +++ linux-2.6.12-rc3-mm2/arch/um/os-Linux/elf_aux.c 2005-07-28 10:12:49.000000000 -0400 @@ -57,9 +57,9 @@ break; } } - if ( ! __kernel_vsyscall || ! vsyscall_ehdr || + if (1 /* ! __kernel_vsyscall || ! vsyscall_ehdr || ! elf_aux_hwcap || ! elf_aux_platform || - ! page_size || (vsyscall_ehdr % page_size) ) { + ! page_size || (vsyscall_ehdr % page_size) */ ) { __kernel_vsyscall = 0; vsyscall_ehdr = 0; elf_aux_hwcap = 0; which works, but isn't right. Jeff ------------------------------------------------------- SF.Net email is Sponsored by the Better Software Conference & EXPO September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf _______________________________________________ User-mode-linux-user mailing list User-mode-linux-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user