I fixed the %fs issue and implemented the signal code. I also implemented the Elf_* type changes Jordan pointed out to me.
Dynamic binaries still seg-fault, but now they all seg-fault very consistently so the remaining issues are probably something related to ELF relocation by the RTLD. Currently the kernel is coded to kprintf the fault address and the instruction address when a user program seg-faults, to help us figure out what's wrong. --- NOTE: Issues with /usr/src/test/amd64. The Makefile will build the 64 bit image and set up and run qemu, etc. However, the boot code is built by the cross compiler and the result does not work. To fix this you can use the following sequence after you have constructed the image: cd /usr/src/test/amd64 make mount pushd /usr/src/sys/boot make clean make obj make make install DESTDIR=$QEMUDIR/root popd i.e. you build and install native-build boot code, which is 32 bits but which is perfectly capable of booting a 64 bit kernel. I would like to get the boot code to properly compile in the cross development environment. -Matt