[comp.unix.wizards] making lint libraries

mackenzi@thor.stolaf.edu (David MacKenzie) (01/06/89)

I would like to add some lint libraries to our Sys3r1 system, but I
can't find any documentation for how to do it, or what the format of
the /usr/lib/llib-*.ln files is.  They contain a lot of nulls
interspersed with ASCII function names, so I'm guessing that they're
the contents of some C structure.  I don't have the real AT&T
documentation; it's a manufacturer's rewrite.  Can someone help?

David MacKenzie
edf@rocky2.rockefeller.edu

guy@auspex.UUCP (Guy Harris) (01/07/89)

>I would like to add some lint libraries to our Sys3r1 system, but I
>can't find any documentation for how to do it,

"Sys3r1"?  As in System III, Release 1?  I know of no "Release n"
numbers for System III.  Do you mean "System III", or "System V Release
3.1", or something else?  If it's S5R3.1, check LINT(1), if you have it;
it should mention the "-c" flag for "lint".  Basically, you made a C
"lint library" file (like "/usr/lib/llib-lc"), and run "lint -c" on it,
to produce a ".ln" file.

>or what the format of the /usr/lib/llib-*.ln files is.  They
>contain a lot of nulls interspersed with ASCII function names,
>so I'm guessing that they're the contents of some C structure.

This is correct.  Basically, "lint" pass 1 is a hacked-up version of the
C compiler that reports some errors immediately, and writes information
to a file for pass 2 to process.  The information in the file is
basically the definitions and declarations of, and references to,
various external objects; this includes the types of formal and actual
arguments to procedures.  Pass 2 consumes this stuff and checks that
(among other things) the formal and actual arguments agree.

".ln" files are basically the result of running a C "lint library" file
through pass 1.  If you don't have "lint -c", check out the "lint"
command (it's just a shell script on most systems); you may be able to
figure out how to run just pass 1.