Files
oldlinux-files/bin-src/README.FIRST
2024-02-19 00:21:55 -05:00

90 lines
4.1 KiB
Plaintext

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