[llvm-bugs] [Bug 33821] New: After r307100, segfaults when linking FreeBSD aarch64 kernel

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Jul 17 11:42:51 PDT 2017


https://bugs.llvm.org/show_bug.cgi?id=33821

            Bug ID: 33821
           Summary: After r307100, segfaults when linking FreeBSD aarch64
                    kernel
           Product: lld
           Version: unspecified
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: ELF
          Assignee: unassignedbugs at nondot.org
          Reporter: dimitry at andric.com
                CC: llvm-bugs at lists.llvm.org

As reported on https://reviews.llvm.org/rL307100, after this change linking the
FreeBSD aarch64 kernel results in lld segfaulting:

Thread 1 received signal SIGSEGV, Segmentation fault.
lld::elf::OutputSection::addSection (this=0x0, S=0x813b2d008)
    at /home/dim/src/llvm-trunk/tools/lld/ELF/OutputSections.cpp:84
84        Sections.push_back(S);
(gdb) bt
#0  lld::elf::OutputSection::addSection (this=0x0, S=0x813b2d008) at
/home/dim/src/llvm-trunk/tools/lld/ELF/OutputSections.cpp:84
#1  0x00000000009506eb in (anonymous
namespace)::Writer<llvm::object::ELFType<(llvm::support::endianness)1, true>
>::addPredefinedSections (this=0x7fffffff6e30) at
/home/dim/src/llvm-trunk/tools/lld/ELF/Writer.cpp:1338
#2  0x0000000000949423 in (anonymous
namespace)::Writer<llvm::object::ELFType<(llvm::support::endianness)1, true>
>::finalizeSections (this=0x7fffffff6e30) at
/home/dim/src/llvm-trunk/tools/lld/ELF/Writer.cpp:1243
#3  0x0000000000914495 in (anonymous
namespace)::Writer<llvm::object::ELFType<(llvm::support::endianness)1, true>
>::run (this=0x7fffffff6e30) at
/home/dim/src/llvm-trunk/tools/lld/ELF/Writer.cpp:207
#4  0x0000000000973192 in
lld::elf::writeResult<llvm::object::ELFType<(llvm::support::endianness)1, true>
> () at /home/dim/src/llvm-trunk/tools/lld/ELF/Writer.cpp:126
#5  0x000000000066c7ff in
lld::elf::LinkerDriver::link<llvm::object::ELFType<(llvm::support::endianness)1,
true> > (this=0x805ce2000, Args=...) at
/home/dim/src/llvm-trunk/tools/lld/ELF/Driver.cpp:1056
#6  0x0000000000655585 in lld::elf::LinkerDriver::main (this=0x805ce2000,
ArgsArr=..., CanExitEarly=true) at
/home/dim/src/llvm-trunk/tools/lld/ELF/Driver.cpp:386
#7  0x00000000006547a3 in lld::elf::link (Args=..., CanExitEarly=true,
Error=...) at /home/dim/src/llvm-trunk/tools/lld/ELF/Driver.cpp:85
#8  0x0000000000457809 in main (Argc=1245, Argv=0x7fffffff8580) at
/home/dim/src/llvm-trunk/tools/lld/tools/lld/lld.cpp:104
(gdb) up
#1  0x00000000009506eb in (anonymous
namespace)::Writer<llvm::object::ELFType<(llvm::support::endianness)1, true>
>::addPredefinedSections (this=0x7fffffff6e30) at
/home/dim/src/llvm-trunk/tools/lld/ELF/Writer.cpp:1338
1338      Cmd->Sec->addSection(Sentinel);
(gdb) print Cmd->Sec
$5 = (lld::elf::OutputSection *) 0x0

At this point findSectionCommand() was looping through Script->Opt.Commands,
found a not-completely initialized .ARM.exidx section, which still had its null
Sec member.

Reverting the findSectionCommand() implementation to its previous version
prevents crashing, but it may not be the correct solution

The reproduction test case is unfortunately too large to be attached, find it
here:
http://www.andric.com/freebsd/clang/lld-arm64-segfault.tar.xz  (18 MiB)

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20170717/3296b3de/attachment.html>


More information about the llvm-bugs mailing list