Before I forget! This code, binaries, etc. all fall under the GNU software license. I have included a copy of it in this directory, for your reading pleasure. The sources are also covered by additional copyrights. This is a preliminary port of libc-4.6.27 for the Alpha. The code has been taken from several sources, including the original Linux libc, the version of 4.x that was released for the 32-bit port of Linux to the Alpha, and glibc-1.0.9. In particular, the math routines are the generic version found in glibc, and much of the system-specific code was taken from the 32-bit Alpha libc. Much credit goes to Jim Paradis for making gcc available & putting up the source to the 1.0 libc! The library has been tested fairly extensively; all of the tests included with the library have passed, and it has been used to successfully build many small and large apps, including emacs and gcc; perl needs to be tested, not because it's useful but because it's evil. You'll need to be using at least kernel version 1.3.1 for this to work properly, and preferably the latest 1.3.x kernel release. Several system calls are still non-functional because they are missing from the kernel. These calls currently invoke the appropriate syscall in the kernel, but if it's not currently implemented you will see a message on the console containing a string like sc<num,x,x> where num is the number of the syscall. A few others have been emulated a la the OSF/1 way: time, stime, alarm, times, nice and creat. pause() has been faked with a while loop and a long sleep(). utimes and utime do the correct things. I/O calls (outb, outw, inb, inw, ioperm) have been implemented by David Mosberger-Tang (davidm@cs.arizona.edu). They currently only work on the Noname systems, and any programs compiled with this library will also only work on a Noname system. We hope to eventually have this issue resolved, however, with runtime detection of the machine & doing the appropriate thing depending on what platform the program is running on. Probably the biggest lack is that the IEEE FPU code doesn't work, because I haven't been able to come up with a fpu_control.h header with the appropriate defines. I haven't noticed any problems, but... Most of the necessary changes to the library made were because stabs aren't working, so a lot of the aliasing had to be redone (and unfortunately, there is some overhead because many of the calls are being done with an additional level of indirection). Many of the makefiles had to be altered to accomodate the new configuration issues. And not a few bugs got fixed in the process. INSTALLATION You'll need to install a copy of gcc-2.7.0 from grocne.enc.org in /pub/alpha. Grab the gcc-2.7.0-bins.tar.gz file, su to root, and extract it from /. If you installed Jim Paradis' gcc-2.6.0, you'll need to remove it first, along with gas and ld. Once gcc is installed, su to root and untar this file from /. It'll put includes in /usr/include & libraries in /usr/lib. In theory, you now have a working "linux" development environment. 99% of the headers are unchanged from the standard libc-4.6.27 installation, and the libraries work almost the same, so configuring software for linux will *usually* allow it to build without any problems. The biggest difficulty I've run into is software that tries to work with both OSF/1 and Linux. Many programs also assume that if __alpha__ or __alpha is defined it's on a box running OSF/1, but they also see that linux is defined. So the programs try to configure themselves for both OSes, with varying degrees of success. Emacs requires a little bit of mangling to work correctly, as well as tcsh; I can make diffs available if desired. Most of the linux-specific programs (such as util-linux) require no changes. And GNU textutils, shellutils, and fileutils built right out of the box for me--no changes were needed at all. The networking code is very similar to the Linux one currently. This will probably be changing in the near future to be as fully BSD compatible as possible--gratuitous changes for the sake of Linux seem foolish to me. Good luck! If you find problems, or fix things, please let me know. Bob manson@magnus.acs.ohio-state.edu