---
osname= linux
osvers= 2.6.9-gentoo-r9
arch= powerpc-linux-thread-multi
cc= gcc 3.4.3 20041125 (Gentoo Linux 3.4.3-r1, ssp-3.4.3-0, pie-8.7.7)
---
Flags:
category=core
severity=critical
ack=no
---
trying to compile parrot (cvs) in a linux ppc machine I get the following error. It looks like the configure process gets confused and does not compile the ppc jit code when it is under linux:
c++ -o parrot -L/usr/local/lib -Wl,-E -g imcc/main.o blib/lib/libparrot.a -lpthread -lnsl -ldl -lm -lcrypt -lutil -lrt -lpthread -lm -L/usr/lib -licuuc -licudata -lpthread -lm
blib/lib/libparrot.a(jit_cpu.o)(.text+0x2722): In function `Parrot_end_jit':
src/jit_cpu.c:74: undefined reference to `Parrot_ppc_jit_restore_nonvolatile_registers'
blib/lib/libparrot.a(jit_cpu.o)(.text+0x2726):src/jit_cpu.c:74: undefined reference to `Parrot_ppc_jit_restore_nonvolatile_registers'
blib/lib/libparrot.a(jit_cpu.o)(.text+0x274e):src/jit_cpu.c:74: undefined reference to `Parrot_ppc_jit_restore_nonvolatile_registers'
blib/lib/libparrot.a(jit_cpu.o)(.text+0x2752):src/jit_cpu.c:74: undefined reference to `Parrot_ppc_jit_restore_nonvolatile_registers'
blib/lib/libparrot.a(jit_cpu.o)(.text+0x2772):src/jit_cpu.c:74: undefined reference to `Parrot_ppc_jit_restore_nonvolatile_registers'
blib/lib/libparrot.a(jit_cpu.o)(.text+0x2776):src/jit_cpu.c:74: more undefined references to `Parrot_ppc_jit_restore_nonvolatile_registers' follow
collect2: ld returned 1 exit status
make: *** [parrot] Error 1
---
Summary of my parrot 0.1.1 configuration:
configdate='Fri Dec 10 15:28:20 2004'
Platform:
osname=linux, archname=powerpc-linux-thread-multi
jitcapable=1, jitarchname=ppc-linux,
jitosname=LINUX, jitcpuarch=ppc
execcapable=1
perl=/usr/bin/perl5.8.6
Compiler:
cc='gcc', ccflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
Linker and Libraries:
ld='gcc', ldflags=' -L/usr/local/lib',
cc_ldflags='',
libs='-lpthread -lnsl -ldl -lm -lcrypt -lutil -lrt -lpthread -lm -L/usr/lib -licuuc -licudata -lpthread -lm'
Dynamic Linking:
share_ext='.so', ld_share_flags='-shared -L/usr/local/lib -fPIC',
load_ext='.so', ld_load_flags='-shared -L/usr/local/lib -fPIC'
Types:
iv=long, intvalsize=4, intsize=4, opcode_t=long, opcode_t_size=4,
ptrsize=4, ptr_alignment=1 byteorder=4321,
nv=double, numvalsize=8, doublesize=8
---
Environment:
HOME LANG LANGUAGE LC_ALL LD_LIBRARY_PATH LOGDIR PATH SHELL
> trying to compile parrot (cvs) in a linux ppc machine I get the following error. It looks like the configure process gets confused and does not compile the ppc jit code when it is under linux:
This is a duplicate of #32514, which still awaits the gentle touch of a
Configure hacker.
-- c
> ---
> osname= linux
> osvers= 2.6.9-gentoo-r9
> arch= powerpc-linux-thread-multi
> trying to compile parrot (cvs) in a linux ppc machine I get the
> following error. It looks like the configure process gets confused and
> does not compile the ppc jit code when it is under linux:
> src/jit_cpu.c:74: undefined reference to `Parrot_ppc_jit_restore_nonvolatile_registers'
> jitcapable=1, jitarchname=ppc-linux,
I've now tried to fix that too long lasting problem.
1) attach the patch below
2) mv config/gen/platform/darwin/asm.s jit/ppc
3) perl Configure.pl --nomanicheck # or fix MANIFEST
This might cause trouble for ppc-aix, because the asm function is
included via a different mechanism too.
Tested on OS X only. If that works, cleanup (MANIFEST, aix) can follow.
leo
--- parrot/config/auto/jit.pl Wed Feb 2 13:23:59 2005
+++ parrot-leo/config/auto/jit.pl Mon Feb 14 18:02:32 2005
@@ -79,10 +79,13 @@
}
}
- if (-e "config/gen/platform/$cpuarch.s") {
- copy_if_diff("config/gen/platform/$cpuarch.s", "asmfun.s");
-
- Configure::Data->set(asmfun_o => 'asmfun$(O)');
+ if (-e "jit/$cpuarch/$jitarchname.s") {
+ copy_if_diff("jit/$cpuarch/$jitarchname.s", "src/asmfun.s");
+ Configure::Data->set(asmfun_o => 'src/asmfun$(O)');
+ }
+ elsif (-e "jit/$cpuarch/asm.s") {
+ copy_if_diff("jit/$cpuarch/asm.s", "src/asmfun.s");
+ Configure::Data->set(asmfun_o => 'src/asmfun$(O)');
} else {
Configure::Data->set(asmfun_o => '');
}
I'm still waiting for confirmation that the recipe below works for
ppc-linux.
Thanks,
leo
> I'm still waiting for confirmation that the recipe below works for
> ppc-linux.
Nope, the assembler here doesn't understand the code. Here's what
worked for me.
-- c