On Sat, Oct 31, 2009 at 07:04:33PM +0000, Daniël W. Crompton wrote: > Happy Halloween, > > I was getting a error (below) while compiling a new kernel, I found out that > a patch (also below) was required for linux/include/time.h as part of the > code is being optimized away losing the references. > > I check the vserver mailing list and didn't see any post about this issue, > so I am posting it here so we now have a record of it. > > Ciao, > Daniel > > > *ERROR:* > make bzImage > ... > LD .tmp_vmlinux1 > kernel/built-in.o: In function `getnstimeofday': > (.text+0x22bdc): undefined reference to `__umoddi3' > kernel/built-in.o: In function `getnstimeofday': > (.text+0x22bfc): undefined reference to `__udivdi3' > kernel/built-in.o: In function `do_gettimeofday': > (.text+0x22d0e): undefined reference to `__udivdi3' > kernel/built-in.o: In function `do_gettimeofday': > (.text+0x22d2c): undefined reference to `__umoddi3' > kernel/built-in.o: In function `timekeeping_resume': > timekeeping.c:(.text+0x22fd4): undefined reference to `__umoddi3' > timekeeping.c:(.text+0x22ff4): undefined reference to `__udivdi3' > kernel/built-in.o: In function `update_wall_time': > (.text+0x23306): undefined reference to `__umoddi3' > kernel/built-in.o: In function `update_wall_time': > (.text+0x23326): undefined reference to `__udivdi3' > kernel/built-in.o: In function `update_wall_time': > (.text+0x23796): undefined reference to `__umoddi3' > kernel/built-in.o: In function `update_wall_time': > (.text+0x237b6): undefined reference to `__udivdi3' > make: *** [.tmp_vmlinux1] Error 1 what kernel and Linux-VServer patch is that? and what compiler do you use? TIA, Herbert > *PATCH:* > > diff --git a/include/linux/time.h b/include/linux/time.h > index 2091a19..d32ef0a 100644 > --- a/include/linux/time.h > +++ b/include/linux/time.h > > @@ -174,6 +174,10 @@ static inline void timespec_add_ns(struct > timespec *a, u64 ns) > { > ns += a->tv_nsec; > while(unlikely(ns >= NSEC_PER_SEC)) { > + /* The following asm() prevents the compiler from > > + * optimising this loop into a modulo operation. */ > + asm("" : "+r"(ns)); > + > ns -= NSEC_PER_SEC; > a->tv_sec++; > } > > > > > blaze your trail > > -- > redhat > > http://feeds.feedburner.com/GeneralMusing