From: tree@midget.towson.edu (Denise Tree)
Subject: Linux News #10
Followup-To: comp.os.linux
         
Keywords: Linux News #10
Organization: University of Helsinki
Date: Sun, 10 Jan 1993 21:34:02 GMT


                          L i n u x  N e w s 

           A summary of the goings-on in the Linux community
		
	             Issue #10 Jan 1 to Jan 10

                  Unser Motto: "Hacken und Helfen"




***** Contents

  - My Two Cents    .......  blah blah woof woof from the editor
  - Announcements   .......  the week++ in c.o.l. and c.o.l.a.
  - How Jump Tables Work ..  Eric Youngdale
  - Good Answers    .......  to questions in and out of the FAQ 


***** My Two Cents

Well, it's been ~one week since my first issue of Linux News and I've
received no exploding binaries or redirected output from "worms" or
"rain" in my mailbox .. so here is another issue. In fact, all the
mail I received was helpful and encouraging, particularly that from
Arnd Gehrmann, who provided the German translation of "our motto", and
Bernie, another German Linux Activist. Thanks guys and thanks to Eric
for his short tutorial on jump tables. Because there are now many
channels available for Announcements, I would like to include useful
and informative "articles" in Linux News. If you have written, or
would like to write, anything on the technical, theoretical, or
practical nature of Linux ... send me mail! Success stories, porting
sagas, interviews, "Where Were You When 0.10 Was Released", "How
Hacking Made My Girl/Boy Friend Leave/Marry Me" ... all are welcome.
 
I've also started a little section for answers to questions posted
which seem as though they would be worth repeating; either because
they are in the FAQ and are _STILL_ posted or because they are
interesting and not answered in the FAQ.

Special Request: Would readers in non-English speaking countries (like
Denmark, Finland, Italy and Baltimore) please send me translations of
"Our Motto: To hack and to serve"?

                         - Denise Tree
                         tree@midget.towson.edu
                         tree@cs.jhu.edu ( a real special thank you to
                         hometown Activist Bill Bogstad, at J.H.U.,
                         for this account, no more will "less" be my
                         news reader)! 


***** Announcements

- Linux-0.99 patchlevel 2 kernel ready
- Settime source and binary at sunsite
- XpoolTable-1.2 at export.lcs.mit.edu
- ANNOUNCE channel: New at Linux-Activists
- New extended file system programs efsck and mkefs released
- Dmalloc.taz (debugging malloc package) uploaded
- New SLS expected soon
- Seyon 1.7
- Glib and adagio (patch editor and score player for Soundblaster) at tsx-11
- Mailpak-1.4 is available
- Lilo 0.8 released
- Zip 1.9pl1 and Unzip 5.0 binaries at sunsite and tsx-11
- Ncurses ... new BETA curses library available for use
- New alt newsgroup - alt.uu.comp.os.linux.questions
- QIC -02 driver release 2d is out
- Binary of Seyon 1.7 is available 
- Linux FAQ now in a Latex version!
- Network suite new at sunsite
- New curses lib expected soon from Ed Carp
- BSD C shell for Linux
- SUIT works with Linux!
- SUIT is explained!  

***** Announcements

- January 1 Linus sent out the 0.99pl2 kernel today with the request:
  "Please try out 0.99.2: the more feedback (hopefully positive) I get
  on it, the faster 1.0 will be out".

  Linus lists the following changes:
   - pretty much rewritten low-level keyboard handling IO - this time
   actually trying to do it by the book.  It now handles resend requests
   from the keyboard etc. 
   - you can run executables from filesystems without bmap support.  This
   mainly means NFS and msdos.  Note that while it's possible, it's
   slower and less memory-efficient than using a "normal" linux
   filesystem, and should generally be avoided. 
   - /proc filesystem changes: /proc/kmsg can be used to log the kernel
   messages under X11 (instead of using the older system call to do the
   same), and there are changes to the statistics routines (WCHAN). 

   + various minor fixes (non-existent devices are handled better, some
   changes to socket bind behaviour etc). 

                Linus



- January 1 John Turnbull announced binaries and source for
  settime, a utility to set the system clock with the NIST clock in
  Boulder, CO. and display the time. Binaries compiled with jump
  tables and tested with libc 4.2.
  FTP:sunsite.unc.edu: pub/Linux/Incoming/settime.tar.Z  

- January 1 Arit Ismail has uploaded version 1.2 od XpoolTable 
  to export.lcs.mit.edu and notes that it will compile out of the box
  for Linux
  FTP:export.lcs.mit.edu:/contrib/XPoolTable-1.2.tar.Z

- January 2 Matt Welsh has created the ANNOUNCE channel on
  Linux-Activists to mirror comp.os.linux.announce. To join the
  channel send mail to linux-activists-request@niksula.hut.fi and put
  "X-Mn-Admin: join ANNOUNCE"  in the message body.

- January 2 Remy Card will make new versions of the  extended file
  system utilities, efsck and mkefs, available at tsx-11. These
  versions are compatible with gcc 2.3.3 and libc 4.2.
  FTP: to be released soon as:
        efsprogs12.tar.Z - source and binaries  
        efsprogs12.bin.tar.Z - binaries
        efsprogs12.src.tar.Z - source
        efsprogs.p12.Z - patch against ver. 11

- January 4 Peter MacDonald says that is "ironing out a few last
  wrinkles before I can cut a set of disks for a new version of SLS". 
  From Peter's post:

  First though, I have had some reports of people with some SCSI drives
  still having to use an older kernel to boot, because they can not boot
  .99p[012] successfully.   Anybody else?

  Now to the serial ttys.  Unless someone comes up with the equivalant
  of a grand unified forces theory to explain why I can't, I plan
  on renaming the serial devices in the next SLS release to 
  ttyS0, ttyS1 and ttyS2.  This because between Xwindows, emacs,
  screen, and tcpip, psuedo ttys are getting pretty much in 
  demand.  I am not worried about running out of them, so much
  as I am about applications trying to grab ttys0, and do 
  funny things with it.

  This came clear to me when I was revising the MAKEDEV script to 
  generate the 64 pty pairs.  No can do using pqrs.

  The ps2 mouse device will also be renamed back to ps2aux (as
  it is not a busmouse) from bmouseps2.  I hate changing device
  names, but can't be helped.

  I also want to have a post install script in place, to be
  run after logging in the first time.  This can set things
  to be a bit more generic.  Like /dev/mouse.

  I noticed that the uugetty program in getty_ps2.04 does lose 
  chars, but it does it for me sporadically.  If I am using
  kermit, for example, I can usually fix it by exiting,
  and restarting kermit a few times.  Also, when I am 
  dialing from kermit, the first char is not echoed (ie, the
  'a' from 'atdt').

  There will be a very large number of changes to the next
  release, all of it in series 'a', 'b', and 'c'.
  So much so, that upgrading will not be practical.  You
  will have to download the entire three series (16 disks).
  This will include the new compiler and libraries, and
  a number of new packages, as well as many fixed binaries
  and new versions.

  This upgrade will go smoother, because I will not release
  it until I am satisfied.  So don't ask when.  I will 
  give a days notice (more if possible).

  Peter.
      
- January 4 Muhammad Saggaf has updated Seyon, the X based
  communications package, to version 1.7. There are many changes,
  including: updated man page (note: FAQ is outdated), revised popup
  window location - no more "dangling" windows, new resource
  dialAutoClose - closes the dialing directory window after a succesful
  connection, case sensitive script commands and keywords, new
  configuration script, and much more.
  FTP:sipb.mit.edu:/pub/seyon/

- January 5 Greg Lee has made sound tools for the Soundblaster or
  compatible available at tsx-11. They are glib, a patch editor, and
  adagio, a music score player.
  FTP:tsx-11.mit.edu:/incoming/glib18.tar.Z and adagio01.tar.Z

- January 7 Ed Carp has uploaded an abbreviated version of mailpak to
  sunsite which contains taylor-uucp-gamma 1.04,elm-2.4pl17 patches,
  uustatus, and sample uucp system files. As Ed explains, much of the
  functionality of mailpak-1.3 is now included in newspak-1.2.
  FTP:sunsite.unc.edu:/pub/Linux/Incoming/mailpak-1.4

- January 7 Werner Almsberger has announced the latest release of Lilo
  for Linux which includes: quick installation script, serial line
  operation, scsi disk parameter detection (except for Seagate and
  Ultrastore controllers).
  FTP:sunsite.unc.edu:/pub/Linux/Incoming/ and
      tsx-11.mit.edu:/pub/linux/packages/lilo:lilo.8.tar.Z and
      lilo.8.ps.Z (postscript docs)

- January 7 Rick Sladkey has uploaded new networking programs to
  sunsite. New versions of ftp, ftpd, rshd, rlogin, rlogind, finger,
  fingerd, talk, ntalkd, tftp and tftpd are included. Libc 4.2 must be
  present to utilize these binaries and rlogind will only work with
  0.99pl2 kernel.
  FTP:sunsite.unc.edu:/pub/Linux/Incoming/net-0.2README
                                          net-src-0.2.tar.Z
                                          net-bin-0.2.tar.Z

- January 7 Greg Naber has put newest versions of Zip and Unzip at
  tsx-11 and sunsite
  FTP:tsx-11.mit.edu and sunsite.unc.edu: unzip50.tar.Z (source)
                                          unzip50.zip (source?)

- January 7 A new BETA version of Curtis Pavel's ncurses has been
  uploaded to sunsite by Zeyd M. Ben-Halim. Ncurses is a SYSV com-
  patible curses which supports keypad and terminfo; Zeyd has also
  added ALPHA color support! This is a testing release and it is
  requested that people tinker, test, and make bugs and comments
  available for improvements. Docs are there too.
  FTP:sunsite.unc.edu:/pub/Linux/Incoming/ncurses.lzh

- January 8 Jyrki Kuoppala announced the new Usenet University
  newsgroup alt.uu.comp.os.linux.questions - the Q&A column.
  For more info see the FAQ in alt.uu.announce and alt.uu.future

- January 8 Hennus Bergman has uploaded the new QIC-02 tape driver.
  It requires ~0.99pl1 kernel to run.
  FTP:tsx-11.mit.edu:/pub/linux/ALPHA/QIC-02/tpqic02-2d.tar.Z

- January 8 In order to make Seyon a little more accessable for those
  who are unfamiliar with X compilation/configuration, Muhammad Saggaf
  has put together a binary distribution with an install script for
  his version 1.7pl2 of the X comms program. The binaries are made
  with libc4.2 and X libs 2.1: these must be installed correctly on
  your system in order to use the binary.
  FTP:sunsite.unc.edu:/pub/Linux/Incoming/Seyon-1.7-linux-bin-tar.Z

- January 8 Pepe Flores Peters has uploaded Latex source and .dvi file
  for the Linux FAQ. It's the most beautiful FAQ he's ever seen :).
  FTP:tsx-11.mit.edu:/pub/linux/docs/linux-faq.tex.Z 
                                     linux-faq.dvi.Z

- January 8 Ed Carp has announced that he is working on a pre-ALPHA
  release of the Linux curses library with support for function and
  arrow keys (hooray!) and ACS support (???). Send mail to Ed at
  erc@apple.com if you would like a source copy ( ~100k compressed).

- January 8 Robert Chen has ported the standard BSD C shell to Linux
  for those who don't like bash, tcsh, zsh, rc, pdksh or ...
  FTP:sunsite.unc.edu:/pub/Linux/Incoming/csh526a.tar.Z

- January 9 Bradley E. Smith announced that he was able to get SUIT up
  and running under Linux and asks if anyone is interested in having
  him upload it to a Linux site.

- January 9 Bradley E. Smith posts README for SUIT - The Simple User
  Interface Toolkit (thanks Bradley!)
   
  "SUIT is a library of interface tools developed at the University of
  Virginia to help C programmers create sophisticated mouse based
  interfaces without the lengthy learning period associated with
  traditional user interface toolkits. Ease of learning and fast ramp up
  time is central to SUIT's design. The SUIT tutorial is designed to
  make the user productive in under two hours".



        /* ---- How Jump Tables Work, by Eric Youngdale ----- */



Question:
  What's the business with jump tables? I think jump tables refer to
  indirect addressing so that you can have fixed entry points to libraries
  while still be able to change the implementation. Why is there the other
  alternative, and is it still supported?

The kernel reserves the address space from 0x60000000 to 0xc0000000 for shared
libraries and each library is assigned an address ahead of time.  At the start
of each shared library is basically a series of jump instructions and these
jump off to each of the routines within libc.  When there is an upgrade to
libc, the jump instructions remain at the same address even though the actual
functions move around as required.

Before we had the jump tables, programs were linked in such a way that you
would call the function directly.  The problem with this was that with each new
version of the library the functions would be at different addresses, and you
had to relink when you went to a new version of the library.  These are called
"Classic" libraries, and are still supported and used (X11 libraries for
example).  X was too hard to jumpify with the old library building tools, and
the libraries change fairly infrequently so at the time it was decided that X
remain a classic library.


Question:
  What is the shared library resolution mechanism? I would think that at
  run time the the library with matching major number and highest minor
  number would be selected. Seeing people link and copy the libraries to
  different names and having had problems with programs that required 4.1,
  not 4.2, it seems this isn't the case. Why? What's the use of jump
  tables, if you cannot use old programs with newer libraries? How do I
  know, if a new library is compatible with an older one (modulo bugs)? Is
  there some internal version number in the library, or is it all in the
  name?

        Each library reference contains a couple of bits of info.
First of all there is a filename that will be opened and is assumed to
contain the library.  Secondly, the version number of the library that
the program was linked to is also stored.  At startup time, kernel
maps the image of the sharable library into your address space, and
then it compares the version numbers to make sure that everything is
compatible.  For a jump table library, the startup code verifies that
the major number is the same, and that the minor number is >= the
minor number of the library that the program was linked to.  If there
are changes in the jump table library library that would make it
impossible to have binary compatibility, then the major number should
have been incremented and the minor number should be reset to 1 (0?).
The filename to be opened is usually in the form /lib/libc.so.4 in the
case of libc, and standard usage is that libc.so.4 be a symlink or a
copy of the version of libc that you want to use.

        In the case of classic libraries the version number matching
is a little different.  Since there is no binary compatibility from
one version to the next, both the major and number of the versions
must match.

        If there are images out there that explicitly ask for /lib/libc.so.4.1
instead of /lib/libc.so.4, then I think that this is in error.  The image was
probably linked to some prototype version of libc before the final release.

        It turned out that there were some changes in libc 4.2 to regex which
broke sed, recompiling sed seemed to fix the problem.

        The future of sharable libraries under linux looks rosy indeed.  A new
set of tools has been developed which makes the generation of a sharable
library pretty foolproof, and it is possible that these will be used to jumpify
the next version of the X libraries.  Once this has been done you will simply
be able to slip in a new version of the shared X library and you will still be
able to run your old programs, except this time using the new library.

        Consideration is also being given to some form of dynamic linking, and
It is possible that at some point in the future this will be a part of the
standard linux libraries.  There is a working prototype which is currently
being evaluated which may be used, or it may take the form of some other scheme
that has yet to be developed.  With the prototype of dynamicly linked
libraries, the changes are piggybacked on top of the existing jump table
libraries, so it may be possible for old binaries to run with the new libraries
(without any dynamic linking, however).


***** Good Answers

I think that the MOST FREQUENTLY ASKED FREQUENTLY ASKED QUESTION is
probably "Where is /usr/include/linux and /usr/include/asm?"  or "Why
won't my new kernel source compile without errors?", etc. 

Answer: These directories exist as symbolic links to the online linux
kernel source found (usually) in /usr/src/linux/include/linux/* and
/usr/src/linux/include/asm/*. Do:
  
   ln -fs /usr/src/linux/include/linux /usr/include/linux
   ln -fs /usr/src/linux/include/asm /usr/include/asm

to create the symlinks. OR ELSE! It's a good idea to keep kernel
source on  your system because the header files are needed for
compilations other than the kernel.
Newsgroups: comp.os.linux.announce,comp.os.linux