Commit Graph

24252 Commits

Author SHA1 Message Date
cgd 46b90748f5 * Ignore the size of integer arguments when trying to automatically
convert them to pointers.  If they're zero, they're converted (to
  NULL pointers) regardless of size.  If they're non-zero, they can't
  be converted (without a cast).  This matches the behavior of other
  version of lint, e.g. the lints on Digital UNIX and HP-UX.

* recognize that pointers to identical unnamed and untyped structs,
  unions, and enums are, in fact, identical.  This is done by tagging
  each of unnamed and untyped structure, union and enum with a unique
  position of creation, which is used as a unique identifier that
  when determine whether or not a pair of structures, unions, or enums
  are identical.
1996-12-22 11:31:37 +00:00
cgd 06fa442b12 * recognize that pointers to identical unnamed and untyped structs,
unions, and enums are, in fact, identical.  This is done by tagging
  each of unnamed and untyped structure, union and enum with a unique
  position of creation, which is used as a unique identifier that
  when determine whether or not a pair of structures, unions, or enums
  are identical.

* accept the file name '-' to indicate that standard input is to be
  used as lint1 input.  That involves having lint pass the '-' through
  to the cpp which preprocesses the lint1 input, and having lint1's
  scanner recognize a cpp filename "" as "{standard input}".
1996-12-22 11:31:24 +00:00
cgd 0cde55a411 * recognize that pointers to identical unnamed and untyped structs,
unions, and enums are, in fact, identical.  This is done by tagging
  each of unnamed and untyped structure, union and enum with a unique
  position of creation, which is used as a unique identifier that
  when determine whether or not a pair of structures, unions, or enums
  are identical.
1996-12-22 11:31:05 +00:00
cgd e8685ee836 * Accept asm statements at any place where you could see a function or
variable declaration, in addition to within function & variable
  declarations and function bodies.  I think this comes close enough
  to what gcc does to be considered "correct enough."  Certainly, it
  fixes the problem for the couple of cases where this is a problem
  in our tree.
1996-12-22 11:30:49 +00:00
cgd 4a62cd93f8 explicitly cast __syscall() returns to (int) so that lint knows
that we know what we're doing.
1996-12-22 10:40:27 +00:00
cgd 675052764f fix bogon: <sys/shm.h>, not <sys/msg.h>, should be included to use this. 1996-12-22 10:35:20 +00:00
cgd 73f996ef33 note in a comment (XXX) that strchr() (what's it doing here, anyway?)
causes 'const' to be discarded.
1996-12-22 10:35:08 +00:00
cgd 145233fa6e Change the second and third args to struct vfsops' (*vfs_mount)() to
'const char *', and 'void *', respectively.  The second arg is taken directly
from user arguments, and is const there, so must be const in the prototypes
and functions.  The third arg is also taken directly from user arguments.
It doesn't have to be changed, but since it's cleaner to keep the type
the same as the user arg's type, and I'm already making the 'const char *'
change...
1996-12-22 10:31:41 +00:00
cgd e7af2a8237 * catch up with system call argument type fixups/const poisoning.
* Fix arguments to various copyin()/copyout() invocations, to avoid
  gratuitous casts.
* Some KNF formatting fixes
1996-12-22 10:21:06 +00:00
cgd b8cb96e094 make struct exec_package's ep_name field be a _const_ char *. It's set
directly from the syscall's program name argument, which is const, so must be
const itself to preserve const-ness.
1996-12-22 10:19:16 +00:00
cgd c60b7587ab * catch up with system call argument type fixups/const poisoning.
* Fix arguments to various copyin()/copyout() invocations, to avoid
  gratuitous casts.
* Some KNF formatting fixes
* Change sockargs()'s second argument to be a const void *, to help
  with dealing with the syscall argument type fixups/const poisoning.
1996-12-22 10:16:54 +00:00
cgd b1a10f6f23 change sockargs()'s second argument to be a const void *. It used
to be a caddr_t, but since it's being passed constant user argument pointers
it needs to be const, and since it's being passed a variety of argument
pointer types it makes sense to change it to void *.  That argument is
simply being handed to copyin().
1996-12-22 10:14:06 +00:00
cgd 90688fce27 Change the second and third args to struct vfsops' (*vfs_mount)() to
'const char *', and 'void *', respectively.  The second arg is taken directly
from user arguments, and is const there, so must be const in the prototypes
and functions.  The third arg is also taken directly from user arguments.
It doesn't have to be changed, but since it's cleaner to keep the type
the same as the user arg's type, and I'm already making the 'const char *'
change...
1996-12-22 10:10:12 +00:00
cgd 0396cad668 if __lint__ is defined, #define __builtin_saveregs() and
__builtin_classify_type() into harmless values, so that lint doesn't
get confused, think they're real functions, and that they're being
invoked in the wrong ways.
1996-12-22 08:57:23 +00:00
cjs 5678a13f1b Re-introduce some code from 1.14 (with modifications) to make the
shell's idea of the current working directory match reality when
symlinks (or anything else we can't stat) are traversed with the
cd command. However, this does not print out the cwd after cd
traverses symlinks, as it used to, though the capability is still
there should one want to use it.
1996-12-22 08:34:34 +00:00
cgd 50cb6df652 for now, -Wcast-qual is just not practical in the kernel 1996-12-22 08:33:19 +00:00
cgd 7e31391b10 update for new syscalls.master 1996-12-22 08:05:47 +00:00
cgd acad90d846 * (slight) general cleanup
* change in-kernel syscall prototypes to match user-land prototypes in
  the following ways:
    + add 'const' where appropriate.
    + make the following "safe" type changes where appropriate:
	caddr_t -> struct msghdr *
	caddr_t -> struct sockaddr *
	caddr_t -> void *
	char * -> void *
	int -> uid_t (safe because uid_t not used as index/count)
	int -> gid_t (safe because gid_t not used as index/count)
	u_int -> size_t
    + change "int" to "u_long" in flags arguments to chflags() and
      fchflags().  This is safe because the arguments are used as
      flag bits and there's nothing that would cause the top bit
      of the int to be set yet, and because the user-land definitions
      already specified u_long, so a u_long's worth of argument was
      already being passed in.
1996-12-22 08:04:06 +00:00
cgd 997ec138ad change ntp_gettime's struct ntptimeval *'s name to match kern_ntptime.c 1996-12-22 07:47:43 +00:00
cgd c99936a735 * fix return types. previously, most things returned 'int.' which was
wrong for a bunch of functions:
	void:		sys_exit, sys_sync
	ssize_t:	sys_read, sys_write, sys_recvmsg, sys_sendmsg,
			sys_recvfrom, sys_readv, sys_writev, sys_sendto
	long:		sys_pathconf, sys_fpathconf
	void *:		sys_shmat

* Note that sys_open, sys_ioctl, and sys_fcntl are defined such that their
  last argument is optional.

These changes should not have any real effect, because right now this
information is not actually used for anything.
1996-12-22 07:00:57 +00:00
cgd 8fac03afc3 regen for syscalls.master and makesyscalls.sh changes 1996-12-22 06:48:18 +00:00
cgd 747448fc3e mark syscall() and __syscall() as INDIR syscalls 1996-12-22 06:46:50 +00:00
cgd 0e9ddb9039 * Don't actually output args structure definitions for INDIR syscalls (typo).
* Don't output prototypes for INDIR syscalls (since they always show up as
  sys_nosys() in the syscall table).
* Add "indir" to the comment for INDIR syscalls in the syscalls table, so
  it's more obvious why they call sys_nosys().
1996-12-22 06:45:14 +00:00
cgd ba32ea9a68 update copyright date 1996-12-22 06:33:46 +00:00
cgd 286395d1b3 * remember (i.e. don't throw away) system call return types.
* Deal with multi-word system call return types (i.e. foo *, or
  struct foo *, or struct foo, etc.).
* Add a new class of system calls "INDIR" (for "indirect"), which
  is to be used to represent indirect syscalls like syscall() and
  __syscall() which are implemented in MD code and which don't want
  args structures defined.  (The old way of declaring this type of
  syscalls still works.)
* Allow system calls to be marked as having a variable number of
  arguments, by inserting "..." (no trailing comma) before the
  first hf the optional arguments in the syscall definition.  Because
  of the way syscall arguments are handled by MI code, _ALL_ syscall
  arguments must actually be included in the definition, i.e.
  "optional" arguments are either "are there or aren't," i.e. these
  aren't really varargs functions.  Therefore, for normal syscalls,
  there _must_ be arguments listed after the "...".  For INDIR
  syscalls, which really do have a variable number of arguments and
  which aren't handled via the normal mechanism, that requirement is
  not in force.
* output primitive (machine-parsable) syscall descriptions as comments
  in <sys/syscall.h>.  These can be used to easily build real function
  prototypes, or to build stub functions for use by lint.
1996-12-22 06:33:16 +00:00
cgd e9a07759c9 ntp_gettime()'s argument is a struct ntptimeval *, not a struct timex * 1996-12-22 06:23:38 +00:00
pk f867c23217 Don't include indirect symbols in global counter if imported from a
shared library (problem noticed by Thorsten Lockert).

Also, make sure not to overwrite predefined _DYNAMIC symbol type.
1996-12-22 01:10:37 +00:00
pk 49dc4d2fe7 Deal with weak symbols when looking up in shared libraries. 1996-12-21 21:53:16 +00:00
pk 85993bcea4 Set EXTERNAL bit on `.weak' declarations. 1996-12-21 21:48:20 +00:00
thorpej e2c6ed87ec Fix several semantic bugs:
- Always allow RAW_PART to be opened, regardless of the partition table.
- Never do partition translation on RAW_PART; it's always offset 0.
- Always make sure the disklabel is read from RAW_PART.
- Make *strategy() return values consistent.

This fixes a condition where a bogus partition table could be written
to the disk from SYS_INST, and the user had no way to rewrite with
a correct partition table, since RAW_PART would be invalid.
1996-12-21 21:34:40 +00:00
thorpej 0d58626f72 This wasn't just a spelling error... I invented a whole new word! 1996-12-21 21:23:43 +00:00
matthias a6c08e93f9 * revert broken handling of subcommands to the (working) 4.4Lite version. 1996-12-21 09:16:35 +00:00
thorpej e34f47039d XXX Stop-gap for larger MAXBSIZE: limit nbuf to 128, so we don't chew
XXX up all of the available pmegs lower-model SPARC CPUs.
1996-12-21 06:21:56 +00:00
cgd 1d8e0e8fda note that __syscall() is prototyped to return a quad_t 1996-12-21 01:38:56 +00:00
cgd 1530406723 __syscall() should return quad_t, not int; what was i thinking? 1996-12-21 01:30:48 +00:00
thorpej fca7fce17e Deal with targets > 7 on wide Buslogic controllers. Remember the "wide"
bit from the extended setup inquiry and key off it to:
- Force synchronous negotiation on targs > 7.
- Read additional information returned by wide cards on inquire setup.
- Read sync period on targs > 7.
- Display sync period/offset on targs > 7.
- Set scsi_link.max_target to 15.
cvs: ----------------------------------------------------------------------
1996-12-20 21:35:10 +00:00
cgd 77dab094a0 pull in netdb.h and arpa/inet.h, kill local decls. add interpret() proto 1996-12-20 20:49:47 +00:00
cgd 9fc875ff77 unistd.h for prototypes 1996-12-20 20:48:17 +00:00
cgd ebd5bdf6d5 string.h for prototypes 1996-12-20 20:47:53 +00:00
cgd 22eee680d6 ifdef YP, needs rpcsvc/ypclnt.h for protos 1996-12-20 20:46:19 +00:00
cgd c97004a9b9 string.h for prototypes 1996-12-20 20:44:55 +00:00
cgd f4b5c163ef __asm rather than asm, for lint 1996-12-20 20:35:48 +00:00
cgd 4bf7fe6145 const poisoning: __findenv()'s first arg should be const char * (lint) 1996-12-20 20:32:54 +00:00
cgd 54c7614104 don't confuse long and int; pointed out by lint 1996-12-20 20:32:02 +00:00
cgd 58f52170c8 args for _fmt(), _secs(), and _add() should all be const (!!) 1996-12-20 20:27:22 +00:00
cgd 316aac5b98 pull in local.h for prototypes. first arg to __sflags() is const char * 1996-12-20 20:26:00 +00:00
cgd 8d3c8a8f7c string.h for prototypes, replace K&R declarations with __P protos 1996-12-20 20:25:12 +00:00
cgd e8cd914914 unistd.h for prototypes, fix a couple of bogus casts to select()'s args 1996-12-20 20:24:36 +00:00
cgd 018a568c63 pull in rpc/pmap_clnt.h for protos 1996-12-20 20:23:22 +00:00
sommerfe cf49662b0f Longer login name support: increase MAXLOGNAME to 16 1996-12-20 20:18:53 +00:00