lkml.org 
[lkml]   [2004]   [May]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: 2.6.6-rc3: gcc 2.95: cx88 __ucmpdi2 error

On Sat, 1 May 2004, Adrian Bunk wrote:
> >...
> > WARNING: /lib/modules/2.6.6-rc3/kernel/drivers/media/video/cx88/cx8800.ko
> > needs unknown symbol __ucmpdi2
>
> I'm also seeing this, but only with gcc 2.95, not with gcc 3.3.3 .
>
> It comes from drivers/media/video/cx88/cx88-video.c, more exactly from
> the switch in set_tvaudio.

I don't see that set_tvaudio() uses any 64-bit comparisons at all, so I
have this suspicion that the linker reports the wrong function or
something.

It might help to use "objdump" to disassemble the object file and see
where the call to __ucmpdi2 really is - or just build the file as an asm
file in the first place ("make drivers/media/video/cx88/cx88-video.s") and
see if you see anything interesting there.

> But I have to admit I don't understand why exactly it does happen.

I'm susprised too. gcc has historically done all the "simple" 64-bit ops
in-line, since they usually are just two instructions or so, and doing
them out-of-line tends to be _more_ work with argument setup etc.

Also, most of the time when this happens, we didn't really want 64-bit
arithmetic in the first place ("long long" arithmetic generates not only
slower and bigger code, it's historically been pretty buggy in gcc, so
most of the kernel is pretty careful about minimizing it). I suspect that
this will end up being the same thing (ie we wanted a 64-bit temporary
result to avoid overflows, but didn't actually need to propagate it all
the way).

Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2009-11-18 23:46    [from the cache]
©2003-2011 Jasper Spaans