Bug 30729 - Build failure with upcoming LLD 17 (elf_scncnt: undefined version: ELFUTILS_1.0 during linking phase of libelf.so)
Summary: Build failure with upcoming LLD 17 (elf_scncnt: undefined version: ELFUTILS_1...
Status: RESOLVED FIXED
Alias: None
Product: elfutils
Classification: Unclassified
Component: libelf (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-08-06 18:13 UTC by Kostadin Shishmanov
Modified: 2023-08-28 18:35 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Kostadin Shishmanov 2023-08-06 18:13:28 UTC
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
Comment 1 Sam James 2023-08-06 23:48:26 UTC
(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.
Comment 2 Mark Wielaard 2023-08-28 16:10:00 UTC
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?
Comment 3 Kostadin Shishmanov 2023-08-28 16:26:07 UTC
(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.
Comment 4 Mark Wielaard 2023-08-28 18:35:53 UTC
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>