[llvm-bugs] [Bug 32614] New: ICF causes section ordering to segfault on ARM

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Apr 10 19:49:22 PDT 2017


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

            Bug ID: 32614
           Summary: ICF causes section ordering to segfault on ARM
           Product: lld
           Version: unspecified
          Hardware: PC
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: ELF
          Assignee: unassignedbugs at nondot.org
          Reporter: smeenai at fb.com
                CC: llvm-bugs at lists.llvm.org

% cat reduced.s
        .section        .text.f,"axG",%progbits,f,comdat
        .code   32
f:
        .fnstart
        bx      lr
        .fnend

        .section        .text.g,"axG",%progbits,g,comdat
        .code   32
g:
        .fnstart
        bx      lr
        .fnend

% clang -target armv7-linux-gnueabi -shared -nostdlib -fuse-ld=lld -Xlinker
--icf=all -o /dev/null reduced.s
(lld crashes during the link)

The assembly is reduced from a C++ source file, so it may not be 100% sensible
(I got rid of a bunch of directives), but it reproduces the segfault. It occurs
in compareByFilePosition [1] because of AOut being null.

My understanding is that, because of ICF, only one of f and g will actually be
output, hence the OutSec for the other will be null. Adding null checks before
the SectionIndex comparison should get rid of the segfault, but I'm not sure if
there's a better solution.

[1]
https://reviews.llvm.org/diffusion/L/browse/lld/trunk/ELF/OutputSections.cpp;299911$82?color=1

-- 
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/20170411/0815617d/attachment.html>


More information about the llvm-bugs mailing list