On Mon, Feb 12, 2007 at 06:04:36PM +0100, Karel Kulhavy wrote: > 16287 yes CALL #243 (unimplemented linux_sys_set_thread_area)() > 16287 yes PSIG SIGSYS SIG_DFL code 0 > 16287 yes NAMI "yes.core" > > What does this mean? That linux_sys_set_thread_area is unimplemented in the > emulation? >
IIRC, it's like that: The linux ld-linux.so dynamic linker calls uname(), gets the version of the kernel (4.0 on OpenBSD), and based on the fact that 4.0 > 2.5.58 (or something similar) decides that you're running a 2.6.X NPTL-able kernel, and goes on to set up things for NTPL threads with set_thread_area(), etc, even if the program is a non-threaded one. The solution to that is to run the linux binary with LD_ASSUME_KERNEL=2.4.2 in the environment. (in FreeBSD, they have added a sysctl to fake a linux kernel version; that is completely unnecessary). However, fixing that won't get you too far -- there are other problems (first, the simplest one, are the PROT_GROWS{UP,DOWN} flags to linux' mmap()). And, finally, the 'shadow root' idiocy is completely unusable, mainly because of symlinks and binaries that call linux-only shell scripts.