[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GNU poke 3.90.1 and pokefmt
|
From: |
Bruno Haible |
|
Subject: |
Re: GNU poke 3.90.1 and pokefmt |
|
Date: |
Mon, 22 Jan 2024 21:42:29 +0100 |
The pokefmt saga is not solved. When I
- take poke 3.90.1,
- build it with CC and CXX values that use clang with ASAN and UBSAN,
- do "make install" of these binaries,
- build it again, this time with CC="clang" and CXX="clang++",
I again get test failures related to pokefmt:
================================================================================
Making a new site.exp file ...
Using ../../testsuite/lib/poke.exp as tool init file.
Test run by bruno on Mon Jan 22 18:39:52 2024
Native configuration is x86_64-pc-linux-gnu
=== poke tests ===
Schedule of variations:
unix
Running target unix
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for
target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using /build/poke-3.90.1/testsuite/config/unix.exp as tool-and-target-specific
interface file.
Running /build/poke-3.90.1/testsuite/poke.cmd/cmd.exp ...
Running /build/poke-3.90.1/testsuite/poke.libpoke/libpoke.exp ...
Running /build/poke-3.90.1/testsuite/poke.map/map.exp ...
Running /build/poke-3.90.1/testsuite/poke.pickles/pickles.exp ...
Running /build/poke-3.90.1/testsuite/poke.pkl/pkl.exp ...
Running /build/poke-3.90.1/testsuite/poke.pktest/pktest.exp ...
Running /build/poke-3.90.1/testsuite/poke.pokefmt/pokefmt.exp ...
ERROR: tcl error sourcing /build/poke-3.90.1/testsuite/poke.pokefmt/pokefmt.exp.
ERROR: /build/poke-3.90.1/build-64-clang/pokefmt/.libs/pokefmt: symbol lookup
error: /inst-x86_64-64/lib/libpoke.so.1: undefined symbol:
__asan_option_detect_stack_use_after_return
while executing
"exec $POKEFMT < $fin > $fout"
(procedure "pokefmt_run" line 12)
invoked from within
"pokefmt_run 1 "Hi" "Hi""
(file "/build/poke-3.90.1/testsuite/poke.pokefmt/pokefmt.exp" line 62)
invoked from within
"source /build/poke-3.90.1/testsuite/poke.pokefmt/pokefmt.exp"
("uplevel" body line 1)
invoked from within
"uplevel #0 source /build/poke-3.90.1/testsuite/poke.pokefmt/pokefmt.exp"
invoked from within
"catch "uplevel #0 source $test_file_name""
Running /build/poke-3.90.1/testsuite/poke.pvm/pvm.exp ...
Running /build/poke-3.90.1/testsuite/poke.repl/repl.exp ...
Running /build/poke-3.90.1/testsuite/poke.std/std.exp ...
Running /build/poke-3.90.1/testsuite/poke.time/time.exp ...
=== poke Summary ===
# of expected passes 7971
# of expected failures 3
# of unsupported tests 3
make[4]: *** [Makefile:5896: check-DEJAGNU] Error 2
make[4]: Leaving directory '/build/poke-3.90.1/build-64-clang/testsuite'
make[3]: *** [Makefile:5774: check-am] Error 2
make[3]: Leaving directory '/build/poke-3.90.1/build-64-clang/testsuite'
make[2]: *** [Makefile:5594: check-recursive] Error 1
make[2]: Leaving directory '/build/poke-3.90.1/build-64-clang/testsuite'
make[1]: *** [Makefile:2860: check-recursive] Error 1
make[1]: Leaving directory '/build/poke-3.90.1/build-64-clang'
make: *** [Makefile:3160: check] Error 2
================================================================================
The unit tests reference both 'poke' and 'pokefmt'. The use of 'poke' does
not access 'libpoke' in the installation directory, but the use of 'pokefmt'
does. How come?
We have libtool wrappers for 3 programs:
-rwxrwxr-x 1 bruno bruno 155992 Jan 22 18:39 poked/.libs/poked
-rwxrwxr-x 1 bruno bruno 132504 Jan 22 18:39 pokefmt/.libs/pokefmt
-rwxrwxr-x 1 bruno bruno 437128 Jan 22 18:39 poke/.libs/poke
Look at the line that sets LD_LIBRARY_PATH in these wrappers:
poke/poke:
LD_LIBRARY_PATH="/build/poke-3.90.1/build-64-clang/libpoke/.libs:/inst-x86_64-64/lib:$LD_LIBRARY_PATH"
pokefmt/pokefmt:
LD_LIBRARY_PATH="/inst-x86_64-64/lib:/build/poke-3.90.1/build-64-clang/libpoke/.libs:$LD_LIBRARY_PATH"
poked/poked:
LD_LIBRARY_PATH="/inst-x86_64-64/lib:/build/poke-3.90.1/build-64-clang/libpoke/.libs:$LD_LIBRARY_PATH"
The one in poke/poke is good. In it, the build dir overrides any global dirs.
The other two are not good.
The cause is that libgnu.la needs the /inst-x86_64-64/lib directory (for
libtextstyle, libreadline, etc.) and is passed to libtool *first*!
The following patch fixes this problem. (But no need to revert the LTV_* bump;
that was useful in any case.)
Bruno
0001-pokefmt-poked-In-the-build-dir-don-t-access-a-previo.patch
Description: Text Data
- Re: GNU poke 3.90.1 and pokefmt,
Bruno Haible <=