[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
poke-1.0+ on AIX
From: |
Bruno Haible |
Subject: |
poke-1.0+ on AIX |
Date: |
Mon, 01 Mar 2021 01:39:03 +0100 |
User-agent: |
KMail/5.1.3 (Linux/4.4.0-203-generic; KDE/5.18.0; x86_64; ; ) |
With the submitted patches applied, the built poke crashes on AIX 7.1:
$ ./run poke
Illegal instruction (core dumped)
Let me debug it:
$ ./run bash
$ dbx poke/poke
...
Illegal instruction in . at 0x0 ($t1)
0x0000000000000000 00000000 Invalid opcode.
(dbx) where
.() at 0x0
pvm_alloc_initialize(), line 67 in "pvm-alloc.c"
pvm_init(), line 107 in "pvm.c"
unnamed block in pk_compiler_new(term_if = 0x0000000110000e28), line 69 in
"libpoke.c"
pk_compiler_new(term_if = 0x0000000110000e28), line 69 in "libpoke.c"
initialize(argc = 1, argv = 0x0ffffffffffff898), line 549 in "poke.c"
main(argc = 1, argv = 0x0ffffffffffff898), line 684 in "poke.c"
pvm_alloc_initialize ()
{
/* Initialize the Boehm Garbage Collector. */
GC_INIT (); // <======= line 67
}
Hmm, so it means that GC_INIT() jumps to address 0.
Setting BDW_GC_LIBS="-lc" and recompiling everything fixes the problem.
We ought to get a link error, not a runtime error, in this situation.
The way to do this is to pass the option '-no-undefined' to libtool.
Documentation:
<https://www.gnu.org/software/libtool/manual/html_node/Link-mode.html>
This option also needs '-lc', otherwise a link error occurs on some platforms.
So, here's a proposed fix. With this change, and without BDW_GC_LIBS="-lc",
we get this link error with xlc:
libtool: link: xlc -q64 -qthreaded -qtls -Wl,-bM:SRE -o
.libs/libpoke.a.d/libpoke.so.0 .libs/libpoke_la-libpoke.o
.libs/libpoke_la-pk-val.o .libs/libpoke_la-pkl.o .libs/libpoke_la-pkl-ast.o
.libs/libpoke_la-pkl-env.o .libs/libpoke_la-pkl-pass.o
.libs/libpoke_la-pkl-promo.o .libs/libpoke_la-pkl-fold.o
.libs/libpoke_la-pkl-typify.o .libs/libpoke_la-pkl-anal.o
.libs/libpoke_la-pkl-trans.o .libs/libpoke_la-pkl-tab.o
.libs/libpoke_la-pkl-lex.o .libs/libpoke_la-pkl-gen.o
.libs/libpoke_la-pkl-asm.o .libs/libpoke_la-pkl-diag.o
.libs/libpoke_la-pkl-parser.o .libs/libpoke_la-pvm.o .libs/libpoke_la-pvm-val.o
.libs/libpoke_la-pvm-env.o .libs/libpoke_la-pvm-alloc.o
.libs/libpoke_la-pvm-program.o .libs/libpoke_la-ios.o
.libs/libpoke_la-ios-dev-file.o .libs/libpoke_la-ios-dev-mem.o
.libs/libpoke_la-ios-buffer.o .libs/libpoke_la-ios-dev-stream.o
../common/.libs/libpoke_la-pk-utils.o ../gl-libpoke/.libs/libgnu.a
./.libs/libpvmjitter.a
-Wl,-blibpath:/home/haible/prefix64/lib:/home/haible/prefix64/lib:/usr/vac/lib:/usr/lib:/lib
-lc -L/home/haible/prefix64/lib -lintl -lpthread
-L/home/haible/poke-1.0b/build-64-xlc/jitter/lib -liconv -lm -lc -Wl,-bnoentry
`func_echo_all " -q64 -qthreaded -qtls -g " | /usr/bin/sed -e "s%-brtl\\([,
]\\)%-berok\\1%g"`-Wl,-bE:.libs/libpoke.exp -Wl,-bernotok
ld: 0711-317 ERROR: Undefined symbol: .GC_remove_roots
ld: 0711-317 ERROR: Undefined symbol: .GC_malloc
ld: 0711-317 ERROR: Undefined symbol: .GC_realloc
ld: 0711-317 ERROR: Undefined symbol: .GC_strdup
ld: 0711-317 ERROR: Undefined symbol: .GC_register_finalizer_no_order
ld: 0711-317 ERROR: Undefined symbol: .GC_init
ld: 0711-317 ERROR: Undefined symbol: .GC_add_roots
ld: 0711-317 ERROR: Undefined symbol: .GC_gcollect
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
make: The error code from the last command is 8.
and this link error with gcc:
libtool: link: gcc -maix64 -shared -o .libs/libpoke.a.d/libpoke.so.0
.libs/libpoke_la-libpoke.o .libs/libpoke_la-pk-val.o .libs/libpoke_la-pkl.o
.libs/libpoke_la-pkl-ast.o .libs/libpoke_la-pkl-env.o
.libs/libpoke_la-pkl-pass.o .libs/libpoke_la-pkl-promo.o
.libs/libpoke_la-pkl-fold.o .libs/libpoke_la-pkl-typify.o
.libs/libpoke_la-pkl-anal.o .libs/libpoke_la-pkl-trans.o
.libs/libpoke_la-pkl-tab.o .libs/libpoke_la-pkl-lex.o
.libs/libpoke_la-pkl-gen.o .libs/libpoke_la-pkl-asm.o
.libs/libpoke_la-pkl-diag.o .libs/libpoke_la-pkl-parser.o
.libs/libpoke_la-pvm.o .libs/libpoke_la-pvm-val.o .libs/libpoke_la-pvm-env.o
.libs/libpoke_la-pvm-alloc.o .libs/libpoke_la-pvm-program.o
.libs/libpoke_la-ios.o .libs/libpoke_la-ios-dev-file.o
.libs/libpoke_la-ios-dev-mem.o .libs/libpoke_la-ios-buffer.o
.libs/libpoke_la-ios-dev-stream.o ../common/.libs/libpoke_la-pk-utils.o
../gl-libpoke/.libs/libgnu.a ./.libs/libpvmjitter.a
-Wl,-blibpath:/home/haible/prefix64/lib:/home/haible/prefix64/lib:/opt/freeware/lib/gcc/powerpc-ibm-aix7.1.0.0/8.3.0/ppc64:/opt/freeware/lib/gcc/powerpc-ibm-aix7.1.0.0/8.3.0:/opt/freeware/lib/gcc/powerpc-ibm-aix7.1.0.0/8.3.0/../../..:/usr/lib:/lib
-lc -L/home/haible/prefix64/lib -lintl -lpthread
-L/home/haible/poke-1.0b/build-64-gcc/jitter/lib -liconv -lncurses -lm -lc
-Wl,-bnoentry `func_echo_all " -maix64 -g -O2 " | /usr/bin/sed -e
"s%-brtl\\([, ]\\)%-berok\\1%g"`-Wl,-bE:.libs/libpoke.exp -Wl,-bernotok
ld: 0711-317 ERROR: Undefined symbol: .GC_malloc
ld: 0711-317 ERROR: Undefined symbol: .GC_realloc
ld: 0711-317 ERROR: Undefined symbol: .GC_strdup
ld: 0711-317 ERROR: Undefined symbol: .GC_register_finalizer_no_order
ld: 0711-317 ERROR: Undefined symbol: .GC_init
ld: 0711-317 ERROR: Undefined symbol: _end
ld: 0711-317 ERROR: Undefined symbol: _data
ld: 0711-317 ERROR: Undefined symbol: .GC_add_roots
ld: 0711-317 ERROR: Undefined symbol: .GC_gcollect
ld: 0711-317 ERROR: Undefined symbol: .GC_remove_roots
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
collect2: error: ld returned 8 exit status
make: 1254-004 The error code from the last command is 1.
0002-Enforce-link-error-when-not-linking-with-lgc-on-AIX.patch
Description: Text Data
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- poke-1.0+ on AIX,
Bruno Haible <=