Subject: kdump is confused about conditionally implemented system calls
To: None <tech-kern@netbsd.org>
From: Ignatios Souvatzis <ignatios@cs.uni-bonn.de>
List: tech-kern
Date: 06/01/1999 15:19:38
Hello,

while hunting down a MIT-SHM problem, I found a kdump bug. ktracing 
a SYSVSHM test program I wrote, and kdumping, I saw this: 

 18578 shm1     CALL  #231 (unimplemented shmget)(0x4712,0x50,0x3c0)
 18578 shm1     RET   #231 (unimplemented shmget) 262144/0x40000

Note that the system call executed fine!

The system call name tables are created by running makesyscalls.sh.
It creates a #if defined(_KERNEL)  around the #include "opt_XXX" lines,
as they won't be there in userland.

As the relevant defines won't be in userland, for all conditional 
syscalls only the (#NN unimplemented xxx) strings is included in the
name table. This if fine for the SYSCALL_DEBUG kernel table, but is
wrong (IMO) for kdump.

After browsing makesyscalls and friends for a while, it occured to me, that
the easiest workaround would be to just add appropriate || !defined(_KERNEL)
in the syscalls.master files. As the #if defined()s in all the output files
will be changed: will this break anything?

Regards,
	Ignatios Souvatzis

-- 
 * Progress (n.): The process through which Usenet has evolved from
   smart people in front of dumb terminals to dumb people in front of
   smart terminals.  -- obs@burnout.demon.co.uk (obscurity)