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.