[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: link error on Alpine Linux

From: Reuben Thomas
Subject: Re: link error on Alpine Linux
Date: Sat, 4 Feb 2023 23:45:51 +0000

On Wed, 1 Feb 2023 at 19:43, Bruno Haible <bruno@clisp.org> wrote:
On Alpine Linux, the compilation produces warnings:

gcc -DHAVE_CONFIG_H -I. -I../../liba2ps -I..  -I.. -I../../liba2ps -I../../lib -I../lib -DLOCALEDIR=\"/home/bruno/inst-x86_64-64/share/locale\" -DSYSCONFFILE=\"/home/bruno/inst-x86_64-64/etc/a2ps.cfg\" -DHAVE_CONFIG_H -I/home/bruno/inst-x86_64-64/include -Wall  -g -O2 -MT libnowarnings_a-regex.o -MD -MP -MF .deps/libnowarnings_a-regex.Tpo -c -o libnowarnings_a-regex.o `test -f 'regex.c' || echo '../../liba2ps/'`regex.c
../../liba2ps/regex.c: In function 'regerror':
../../liba2ps/regex.c:5785:22: warning: implicit declaration of function '__mempcpy'; did you mean 'mempcpy'? [-Wimplicit-function-declaration]
 5785 |           *((char *) __mempcpy (errbuf, msg, errbuf_size - 1)) = '\0';
      |                      ^~~~~~~~~
      |                      mempcpy
../../liba2ps/regex.c:5785:13: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
 5785 |           *((char *) __mempcpy (errbuf, msg, errbuf_size - 1)) = '\0';
      |             ^

and later fails with a link error:

libtool: link: gcc -g -O2 -o a2ps main.o read.o sshread.o ssheet.o select.o generate.o delegate.o buffer.o versions.o ffaces.o  -L/home/bruno/inst-x86_64-64/lib ../liba2ps/.libs/liba2ps.a ../liba2ps/libnowarnings.a libparse.a ../lib/.libs/libgnu.a -lm /home/bruno/inst-x86_64-64/lib/libgc.so -lpthread -ldl /home/bruno/inst-x86_64-64/lib/libpaper.so -Wl,-rpath -Wl,/home/bruno/inst-x86_64-64/lib -Wl,-rpath -Wl,/home/bruno/inst-x86_64-64/lib
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: ../liba2ps/libnowarnings.a(libnowarnings_a-regex.o): in function `regerror':
/home/bruno/a2ps-4.14.94/build-64/liba2ps/../../liba2ps/regex.c:5785: undefined reference to `__mempcpy'
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:1576: a2ps] Error 1

The cause is in the file liba2ps/regex.c. This is a completely, hopelessly
outdated regex code. It's highly recommended to use to gnulib 'regex' module,
which is not only well tested, but also POSIX compliant!

Unfortunately, as previously discussed on the gnulib list, the regex module does not support syntax tables, which a2ps uses.
I have tried to clean up the code a bit, removing dead code and assuming a >= C89 system.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]