bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/30811] bfd segfault with clang LTO and OpenMP


From: du.paul136 at gmail dot com
Subject: [Bug ld/30811] bfd segfault with clang LTO and OpenMP
Date: Wed, 30 Aug 2023 14:23:31 +0000

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

--- Comment #3 from Paul Du <du.paul136 at gmail dot com> ---
To test the example, you can either:
- Run manual_build.sh
- Use the CMakeLists.txt like that: mkdir build && cd build &&
CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake -DCMAKE_BUILD_TYPE=Release -GNinja
.. && ninja -v

When I try to build this on ArchLinux or Ubuntu 23.10 (both on new installs
with a docker image), I get a segmentation fault.

The result of ./manual_build.sh is:

clang version 16.0.6
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation:
/usr/bin/../lib/gcc/x86_64-pc-linux-gnu/13.2.1
Found candidate GCC installation:
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1
Selected GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
 "/usr/bin/ld" -pie --hash-style=gnu --build-id --eh-frame-hdr -m elf_x86_64
-dynamic-linker /lib64/ld-linux-x86-64.so.2 -o out/main
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../lib64/Scrt1.o
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../lib64/crti.o
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/crtbeginS.o
-L/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1
-L/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../lib64
-L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/bin/../lib -L/lib -L/usr/lib -plugin
/usr/bin/../lib/LLVMgold.so -plugin-opt=mcpu=x86-64 -plugin-opt=thinlto
out/exec.o out/libutils.a -lstdc++ -lm -lomp -rpath /usr/lib -L/usr/lib -lgcc_s
-lgcc -lpthread -lc -lgcc_s -lgcc
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/crtendS.o
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../lib64/crtn.o
clang-16: error: unable to execute command: Segmentation fault (core dumped)
clang-16: error: linker command failed due to signal (use -v to see invocation)

coredumpctl debug gave me something like this:

Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f6cb8650e6f in elf_link_is_defined_archive_symbol
(symdef=0x559325125800, abfd=0x559325118be0) at
/usr/src/debug/binutils/binutils-gdb/bfd/elflink.c:3574
3574      if (elf_use_dt_symtab_p (abfd))                                       
(gdb) bt
#0  0x00007f6cb8650e6f in elf_link_is_defined_archive_symbol
(symdef=0x559325125800, abfd=0x559325118be0) at
/usr/src/debug/binutils/binutils-gdb/bfd/elflink.c:3574
#1  elf_link_add_archive_symbols (abfd=0x559325118940, info=0x5593246c0c40
<link_info>) at /usr/src/debug/binutils/binutils-gdb/bfd/elflink.c:6078
#2  0x00005593245dbf8f in load_symbols (entry=entry@entry=0x559325014030,
place=place@entry=0x7ffcdbec9b80) at
/usr/src/debug/binutils/binutils-gdb/ld/ldlang.c:3098
#3  0x00005593245dbcdd in open_input_bfds (s=0x559325014030,
mode=OPEN_BFD_RESCAN) at /usr/src/debug/binutils/binutils-gdb/ld/ldlang.c:3587
#4  0x00005593245b8478 in lang_process () at
/usr/src/debug/binutils/binutils-gdb/ld/ldlang.c:8196
#5  0x00005593245e2c21 in main (argc=41, argv=<optimized out>) at
/usr/src/debug/binutils/binutils-gdb/ld/ldmain.c:501


The problem disappears if I do one of the following:
- Change the compiler to GCC
- Remove #pragma omp critical from utils.cpp
- Add -fuse-ld=gold to LDFLAGS
- Don't create a static library but link with out/utils.o instead
- Run it on Ubuntu 22.04 or 23.04 (binutils < 2.41)

-- 
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]