Steps to reproduce: 1. autoreconf -vfi 2. ./configure --enable-maintainer-mode --disable-debuginfod 3. export LDFLAGS="-Wl,--no-undefined-version" 4. make gcc -std=gnu99 -Wall -Wshadow -Wformat=2 -Wold-style-definition -Wstrict-prototypes -Wtrampolines -Wlogical-op -Wduplicated-cond -Wnull-dereference -Wimplicit-fallthrough=5 -Wuse-after-free=3 -Werror -Wunused -Wextra -Wstack-usage=262144 -D_FORTIFY_SOURCE=3 -g -O2 -Wl,--no-undefined-version -Wl,--build-id -o libelf.so -shared -Wl,-z,defs -Wl,-z,relro -o libelf.so \ -Wl,--soname,libelf.so.1 \ -Wl,--version-script,libelf.map \ -Wl,--no-undefined \ -Wl,--whole-archive libelf_pic.a -Wl,--no-whole-archive \ ../lib/libeu.a -lz -lzstd -llzma -lbz2 /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: elf_scncnt: undefined version: ELFUTILS_1.0 /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: failed to set dynamic section sizes: bad value collect2: error: ld returned 1 exit status
(In reply to Kostadin Shishmanov from comment #0) > Steps to reproduce: > > 1. autoreconf -vfi > 2. ./configure --enable-maintainer-mode --disable-debuginfod > 3. export LDFLAGS="-Wl,--no-undefined-version" > 4. make > To be clear, the reason that this is an interesting flag (and why OP is testing this) is because LLD 16 made it default for a bit (then reverted it) and LLD 17 will be setting it too.
So just to be clear, the issue is that elf_scncnt is only mentioned in the libelf.map but doesn't actually exist (it never seems to have been)? Does simply removing it from libelf.map resolve this issue?
(In reply to Mark Wielaard from comment #2) > So just to be clear, the issue is that elf_scncnt is only mentioned in the > libelf.map but doesn't actually exist (it never seems to have been)? > > Does simply removing it from libelf.map resolve this issue? I removed it from the libelf.map file, built elfutils with the mentioned LDFLAGS, it built with no issues, then I ran the testsuite, and everything passed fine.
Thanks for testing. Pushed that fix: commit 09e61a65953ed814d9e970f7f9ffb9c2d8cda477 Author: Mark Wielaard <mark@klomp.org> Date: Mon Aug 28 20:23:41 2023 +0200 libelf: Remove elf_scncnt from libelf.map elf_scncnt was never implemented. It was probably an old name for elf_getshnum (which was the deprecated name of the elf_getshdrnum alias). Just remove it from the map file * libelf/libelf.map (ELFUTILS_1.0): Remove elf_scncnt. https://sourceware.org/bugzilla/show_bug.cgi?id=30729 Reported-by: Kostadin Shishmanov <kocelfc@tutanota.com> Signed-off-by: Mark Wielaard <mark@klomp.org>