Re: ppp-2.2.0f doesn't compile under pre2.0.10

Tony Nugent (tonyn@sctnugen.ppp.gu.edu.au)
Mon, 3 Jun 1996 08:38:47 +1000


Todd M. Roy <salteroy@sover.net> wrote in linux-ppp:

[Crossposted to linux-kernel and linux-net.]

> Subject: ppp-2.2.0f doesn't compile under pre2.0.10

> I just tried to compile 2.2.0f under pre2.0.10 and got this
> error. The last time I tried (successfully) I think was pre2.0.5
> with 2.2.0f-beta5. beta5 also gave me the same problem with
> pre2.0.10. Thanks in advance. Fortunatly, the previously compiled
> version is still running under 2.0.10.
>
> -- todd --
>
> cc -O2 -D_linux_=1 -DHAVE_PATHS_H -c sys-linux.c -o sys-linux.o
> In file included from /usr/include/linux/netdevice.h:31,
> from /usr/include/net/if_arp.h:1,
> from sys-linux.c:70:
> /usr/include/linux/interrupt.h:9: warning: `struct pt_regs' declared inside parameter list
> /usr/include/linux/interrupt.h:9: warning: its scope is only this definition or declaration,
> /usr/include/linux/interrupt.h:9: warning: which is probably not what you want.
> /usr/include/linux/interrupt.h:23: syntax error before `void'
> /usr/include/linux/interrupt.h: In function `start_bh_atomic':
> /usr/include/linux/interrupt.h:76: `intr_count' undeclared (first use this function)
> /usr/include/linux/interrupt.h:76: (Each undeclared identifier is reported only once
> /usr/include/linux/interrupt.h:76: for each function it appears in.)
> /usr/include/linux/interrupt.h: In function `end_bh_atomic':
> /usr/include/linux/interrupt.h:83: `intr_count' undeclared (first use this function)
> make: *** [sys-linux.o] Error 1

I can confirm this with linux-1.99.10 (pre2.0.10), gcc-2.7.2,
binutils-2.6.0.14, and libc-5.3.12.

:-(

In a following message, Todd also wrote this:

> Subject: Re: previous problem, a patch, very experimental.

> Well, I answered my own question, and have a "patch"
> to sys-linux.c
>
> I added:
>
> extern unsigned long intr_count;
> #define asmlinkage
>
> to the top.
>
> It compiled (still complaints about the structure in interrupt.h tho)
> linked, and even is running, even as I type this.

I did this instead:

========8<-----------cut-here------------>8====================
diff -u ppp-2.2.0f/pppd/sys-linux.c.orig ppp-2.2.0f/pppd/sys-linux.c
--- ppp-2.2.0f/pppd/sys-linux.c.orig Sat Apr 13 15:02:53 1996
+++ ppp-2.2.0f/pppd/sys-linux.c Mon Jun 3 08:02:55 1996
@@ -56,6 +56,10 @@
#include <fcntl.h>
#include <ctype.h>

+#ifdef _linux_
+#include <linux/sched.h>
+#endif
+
/* This is in netdevice.h. However, this compile will fail miserably
if you attempt to include netdevice.h because it has so many references
to __memcpy functions which it should not attempt to do. So, since I
========8<-----------cut-here------------>8====================

This works with _no_ complaints at all.

Why did I add <linux/shed.h> ??

[/usr/src/linux-1.99.10/include/linux]/% find -type f |xargs grep -n intr_count /dev/null
include/linux/sched.h:14:extern unsigned long intr_count;
include/linux/interrupt.h:76: intr_count++;
include/linux/interrupt.h:83: intr_count--;
include/linux/modules/ksyms.ver:121:#define intr_count _set_ver(intr_count, aaedaa28)

However, in this case it might a kernel problem in that
<linux/sched.h> should be #include'd by <linux/interrupt.h>

The use of autoconf to create a configure script is badly needed for
pppd :)

Cheers .
Tony _--_|\
tony@sctnugen.ppp.gu.edu.au / *\ T.Nugent@sct.gu.edu.au
ae.nugent@student.qut.edu.au\_.--._/ tnugent@cit.gu.edu.au
Brisbane, Queensland v Australia
-=*#*=-=*#*=-=*#*=-=*#*=-=*#*=-=*#*=-=*#*=-=*#*=-=*#*=-=*#*=-
Men are seldom more innocently employed than when they are honestly
making money.
-- Samuel Johnson (1709-1784)