On Sat, Nov 25, 2023 at 04:32:36AM +0100, Emanuele Torre wrote:
> I've noticed that a lib/sh/compat.c file was added that still provides
> the declaration for the legacy legal_ functions.
> 
> The bash executable I was getting from building the devel branch did not
> have those symbols though.
> 
> The reason was that lib/sh/Makefile was not getting regenerated, so the
> recipe for libsh.a did not include compat.o.
> 
> Re-building bash from a clean tree correctly produces a bash with legal_
> symbols.

Actually, nevermind that message. It still does not work. I was building
master instead of devel.

Now I can see that compat.o is actually being used to create
lib/sh/libsh.a, and that libsh.a contains the legal_ symbols

    $ make -j
    [...]
    ar cr libsh.a clktck.o clock.o getenv.o oslib.o setlinebuf.o strnlen.o 
itos.o zread.o zwrite.o shtty.o shmatch.o eaccess.o netconn.o netopen.o 
timeval.o makepath.o pathcanon.o pathphys.o tmpfile.o stringlist.o stringvec.o 
spell.o shquote.o strtrans.o snprintf.o mailstat.o fmtulong.o fmtullong.o 
fmtumax.o zcatfd.o zmapfd.o winsize.o wcsdup.o fpurge.o zgetline.o mbscmp.o 
mbsncmp.o uconvert.o ufuncs.o casemod.o input_avail.o mbscasecmp.o fnxform.o 
unicode.o shmbchar.o strvis.o strscpy.o anonfile.o compat.o utf8.o random.o 
gettimeofday.o timers.o wcsnwidth.o mbschr.o
    [...]

    $ grep -abo legal_identifier lib/sh/libsh.a
    2579:legal_identifier
    567032:legal_identifier

But the bash executable still does not contain the legal_ symbols:

    $ grep -abo legal_identifier ./bash || echo nope
    nope

    $ ./bash -c 'enable -f {examples/loadables/,}mktemp; mktemp -v foo'
    ./bash: symbol lookup error: examples/loadables/mktemp: undefined symbol: 
legal_identifier

o/
 emanuele6

Reply via email to