Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 Jun 2000 05:13:39 -0700 (PDT)
From:      mhenry@speednet.com.au
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   kern/19485: Syscall module example fails to compile
Message-ID:  <20000624121339.03E0F37B6B1@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         19485
>Category:       kern
>Synopsis:       Syscall module example fails to compile
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jun 24 05:20:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Michael Henry
>Release:        FreeBSD 4.0-STABLE i386
>Organization:
>Environment:
FreeBSD playground.foonet 4.0-STABLE FreeBSD 4.0-STABLE #0: Thu Jun 15 20:54:58 EST 2000     root@playground.foonet:/usr/obj/usr/src/sys/PLAYGROUND  i386
>Description:

I'm getting errors when trying to compile the example system
call in /usr/share/examples/kld/syscall/module/syscall.c.
The version of the file is 1.2.

The errors are as follows:

*** In file included from syscall.c:35:
*** /usr/include/sys/systm.h:327: syntax error before `int'
*** /usr/include/sys/systm.h:328: syntax error before `int'
*** /usr/include/sys/systm.h:329: syntax error before `('

The corresponding lines from the header are:

*** int major(dev_t x);
*** int minor(dev_t x);
*** dev_t makedev(int x, int y);

There is a comment above these lines: "Common `dev_t'
stuff are declared here to avoid #include poisoning".
But these lines are getting mangled by the following
macros defined in <sys/types.h>:

*** #define major(x)        ((int)(((u_int)(x) >> 8)&0xff)) /* major number */
*** #define minor(x)        ((int)((x)&0xffff00ff))         /* minor number */
*** #define makedev(x,y)    ((dev_t)(((x) << 8) | (y)))     /* create dev_t */

which, after pre-processing, results in the following:

*** int ((int)(((u_int)( dev_t x ) >> 8)&0xff)) ;
*** int ((int)(( dev_t x )&0xffff00ff)) ;
*** dev_t ((dev_t)((( int x ) << 8) | (  int y ))) ;

Clearly this is nonsense.


>How-To-Repeat:
cd /usr/share/examples/kld/syscall/module/
gcc -c syscall.c

>Fix:
Remove offending lines from <sys/systm.h>


>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000624121339.03E0F37B6B1>