funkcje gcc w jądrze (__ucmpdi2 itp.)
Jakub Bogusz
qboosh w pld-linux.org
Pon, 10 Maj 2004, 22:26:22 CEST
On Mon, May 10, 2004 at 09:26:18PM +0200, Michal Moskal wrote:
> On Mon, May 10, 2004 at 09:14:03PM +0200, Jakub Bogusz wrote:
> > Czy jest jakiś sposób obejścia używania przez gcc funkcji z libgcc do
> > niektórych operacji nie obsługiwanych bezpośrednio przez procesor, czy
> > trzeba zawsze dostarczać te funkcje jeśli gcc zapragnie ich użyć?
> >
> > Konkretnie to w sterowniku cx88 z 2.4.26 jest użyty switch na typie
> > __u64 i na ppc gcc porównania chce wykonywać przez funkcję __ucmpdi2(),
> > której w arch/ppc/lib nie ma (jest tylko dla architektury arm), co
> > prowadzi oczywiście do unresolved symbols i nieużywalnego modułu.
>
> Może to:
>
> -ffreestanding Assume that standard libraries & main might not exist
Nie, to dotyczy bibliotek standardowych języka (czyli np. libc), a nie
"compiler support library", którą jest libgcc.
Jak jest tak było:
[builder2 w trumna builder2]$ cat t.c
#include <stdint.h>
uint64_t x = 0;
int main(int argc)
{
x=argc;
switch(x) {
case 1: return 0;
case 2: return 1;
}
}
[builder2 w trumna builder2]$ gcc -c t.c -ffreestanding
[builder2 w trumna builder2]$ objdump -t t.o | grep ucmp
00000000 *UND* 00000000 __ucmpdi2
(tym razem na trumnie, żeby sprawdzić, że dotyczy gcc 2.95 jak i 3.3)
--
Jakub Bogusz http://cyber.cs.net.pl/~qboosh/
Więcej informacji o liście dyskusyjnej pld-devel-pl