---
osname= linux
osvers= 2.4.24-benh0
arch= powerpc-linux
cc= gcc 3.2.3 20030422 (Gentoo Linux 1.4 3.2.3-r3, propolice)
---
Flags:
category=core
severity=critical
ack=no
---
Apparently the AIX and Darwin JIT fixes have broken the Linux PPC build,
which
doesn't pick up the appropriate hints file. I tried a couple of ways to
force
it to do so to no avail. Someone who knows what he's doing will have to
do it.
c++ -o parrot -L/usr/local/lib -Wl,-E -g imcc/main.o
blib/lib/libparrot.a blib/lib/libicuuc.a blib/lib/libicudata.a -lnsl
-ldl -lm -lcrypt -lutil -lpthread -lrt -lgmp
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 Nov 19 13:50:03 2004'
Platform:
osname=linux, archname=powerpc-linux
jitcapable=1, jitarchname=ppc-linux,
jitosname=LINUX, jitcpuarch=ppc
execcapable=1
perl=/usr/bin/perl
Compiler:
cc='gcc', ccflags='-DDEBUGGING -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64',
Linker and Libraries:
ld='gcc', ldflags=' -L/usr/local/lib',
cc_ldflags='',
libs='-lnsl -ldl -lm -lcrypt -lutil -lpthread -lrt -lgmp'
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
> Apparently the AIX and Darwin JIT fixes have broken the Linux PPC
> build, which doesn't pick up the appropriate hints file. I tried a
> couple of ways to force it to do so to no avail. Someone who knows
> what he's doing will have to do it.
> jitosname=LINUX, jitcpuarch=ppc
^^^
The selection of the missing helper file should be done by "jitcpuarch"
and not by IIRC platform. As it's a JIT only thingy, the proper place to
include that file is in jit.pl.
leo
Alright, poking around blindly for an hour, I made the changes in the
attached patch (not for applying) and came up with a different breakage:
as -o src/platform_asm.o src/platform_asm.s
src/platform_asm.s: Assembler messages:
src/platform_asm.s:3: Error: Unrecognized opcode: `this'
src/platform_asm.s:4: Error: Unrecognized opcode: `rather'
src/platform_asm.s:5: Error: syntax error; found `i' but expected `,'
src/platform_asm.s:5: Error: junk at end of line: `is not
currently configurable in the Parrot makefiles'
src/platform_asm.s:7: Error: unexpected end of file in macro
definition
make: *** [src/platform_asm.o] Error 1
Running 'gcc' or 'cc' on the file produces the same error, as you'd
expect.
-- c
The attached file works as the eventual src/platform_asm.s file, at
least on my architecture. I'm not sure how to plug it in to the
generated fileset cleanly, but that's a lot easier than trying to debug
assembly code on a platform you don't have.
Leo, what do you suggest to connect the dots here?
-- c
> Ah, I've made Parrot build again on Linux PPC (and make testj only has
> the expected t/library/streams.t failure present with make test too).
He he, great.
> The attached file works as the eventual src/platform_asm.s file, at
> least on my architecture. I'm not sure how to plug it in to the
> generated fileset cleanly, but that's a lot easier than trying to debug
> assembly code on a platform you don't have.
> Leo, what do you suggest to connect the dots here?
Well, we need a more generic way to include such files.
* platform_asm.s is just one file and depends on $platform.
But we have as $jitarchname:
ppc-darwin
ppc-aix
ppc-linux # AFAIK
This file is common for all PPC JIT architectures.
OTOH there is a config dispatch on $cpu in config/gen/cpu, but that is
for C files.
But as this "asm.s" is JIT-specific and needed for PPC it should be
included by jit.pl.
Where are the config hackers ;)
leo
> Well, we need a more generic way to include such files.
>
> * platform_asm.s is just one file and depends on $platform.
Here's a patch that's only a little bit ugly but makes things work
automatically for me again.
-- c