scsh-users
[Top] [All Lists]

Scsh doesn't compile on libc6 system w/egcs.

To: scsh-bugs@martigny.ai.mit.edu
Subject: Scsh doesn't compile on libc6 system w/egcs.
From: Hannu Koivisto <Hannu.Koivisto@vvf.fi>
Date: 14 Mar 1998 23:29:41 +0200
Greetings,

Scsh version: 0.5.1
System: Debian GNU Linux 2.0 (unstable) / libc6 / 2.1.76 kernel
Compiler:
"""
Reading specs from
/usr/local/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.04/specs
gcc version egcs-2.91.04 980115 (gcc-2.8.0 release)
"""

>From GLIBC FAQ:
"""
3.5.    On Linux I've got problems with the declarations in
Linux
        kernel headers.

{UD,AJ} On Linux, the use of kernel headers is reduced to the
minimum.
This gives Linus the ability to change the headers more freely.
Also,
user programs are now insulated from changes in the size of
kernel
data structures.

For example, the sigset_t type is 32 or 64 bits wide in the
kernel.
In glibc it is 1024 bits wide.  This guarantees that when the
kernel
gets a bigger sigset_t (for POSIX.1e realtime support, say) user
programs will not have to be recompiled.  Consult the header
files for
more information about the changes.

Therefore you shouldn't include Linux kernel header files
directly if
glibc has defined a replacement. Otherwise you might get
undefined
results because of type conflicts.
"""

Exactly because of sigset_t change, scsh/signalhandlers1.c and
the macros in scsh/machine/sigset.h, which sighandlers1.c uses,
are broken.

Compiler says:
"""
scsh/sighandlers1.c: In function `set_procmask':
scsh/sighandlers1.c:44: incompatible types in assignment
scsh/sighandlers1.c:47: invalid operands to binary >>
scsh/sighandlers1.c:47: invalid operands to binary &
scsh/sighandlers1.c: In function `get_procmask':
scsh/sighandlers1.c:58: invalid operands to binary >>
scsh/sighandlers1.c:58: invalid operands to binary &
"""

A more minor problem is extern listen() prototype declared
in scsh/network.c. I removed the declaration and network.c
compiled just fine.

Compiler says:
"""
scsh/network.c: In function `df_listen':
scsh/network.c:60: conflicting types for `listen'
/usr/include/sys/socket.h:169: previous declaration of `listen'
scsh/network.c:60: warning: extern declaration of `listen'
doesn't match global one
"""

HTH,
//Hannu

<Prev in Thread] Current Thread [Next in Thread>
  • Scsh doesn't compile on libc6 system w/egcs., Hannu Koivisto <=