bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/32241] New: Binutils can't build itself with -flto=auto -ffat-lt


From: lantw44 at gmail dot com
Subject: [Bug ld/32241] New: Binutils can't build itself with -flto=auto -ffat-lto-objects
Date: Sat, 05 Oct 2024 07:19:33 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=32241

            Bug ID: 32241
           Summary: Binutils can't build itself with -flto=auto
                    -ffat-lto-objects
           Product: binutils
           Version: 2.44 (HEAD)
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ld
          Assignee: unassigned at sourceware dot org
          Reporter: lantw44 at gmail dot com
  Target Milestone: ---

Binutils 2.43, 2.43.1, and the current master branch, can't link gprofng with
CFLAGS='-flto=auto -ffat-lto-objects' CXXFLAGS='-flto=auto -ffat-lto-objects'.
It always fails with an undefined reference to `get_prog_name' error.

To reproduce, build binutils on a system with Binutils 2.43, such as Fedora 41
and Arch Linux, or just build Binutils twice. Run the configure script with
CFLAGS='-flto=auto -ffat-lto-objects' CXXFLAGS='-flto=auto -ffat-lto-objects'
and watch it fail:

/bin/sh ../libtool  --tag=CXX   --mode=link g++ -Wall -pthread -Wno-switch
-flto=auto -ffat-lto-objects       -o gp-archive gp-archive.o ArchiveExp.o
libgprofng.la  -L../../zlib -lz
libtool: link: g++ -Wall -pthread -Wno-switch -flto=auto -ffat-lto-objects -o
gp-archive gp-archive.o ArchiveExp.o  ./.libs/libgprofng.a
-L/path/to/binutils-gdb/zlib -L/path/to/binutils-gdb/libiberty
/path/to/binutils-gdb/opcodes/.libs/libopcodes.a
/path/to/binutils-gdb/bfd/.libs/libbfd.a -lzstd
/path/to/binutils-gdb/libsframe/.libs/libsframe.a -liberty -lpthread -ldl -lz
-pthread
/path/to/prefix/bin/ld: ./.libs/libgprofng.a(dbe_memmgr.o): in function
`err_out_of_memory':
dbe_memmgr.c:(.text+0x11): undefined reference to `get_prog_name'
collect2: error: ld returned 1 exit status
make[5]: *** [Makefile:696: gp-archive] 錯誤 1
make[5]: 離開目錄「/path/to/binutils-gdb/gprofng/src」
make[4]: *** [Makefile:573: all] 錯誤 2

There are several ways known to avoid the problem:

1. Run configure with --enable-shared. This is why Fedora and Arch can
successfully build their packages.
2. Downgrade to Binutils 2.41. I haven't tested 2.42. I just found the same
version could be built on Fedora 40.
3. Don't use -flto=auto -ffat-lto-objects. But these flags are automatically
added when building packages on some distributions.
4. Link gprofng with ld.gold. Copy the link command libtool printed and add
-fuse-ld-gold. It succeeded. This issue seems to be specific to ld.bfd. ld.gold
isn't affected.

I also tried to remove util.o and dbe_memmgr.o from libgprofng.a and manually
them back on the command line. It succeeded. It seems to me that ld.bfd can
handle .o files without problem. It just has problems with .a files.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

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