<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - segfault"
   href="https://llvm.org/bugs/show_bug.cgi?id=31277">31277</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>segfault
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>lld
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>FreeBSD
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>ELF
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>emaste@freebsd.org
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Blocks</th>
          <td>23214
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Created <span class=""><a href="attachment.cgi?id=17712" name="attach_17712" title="crash reproducer">attachment 17712</a> <a href="attachment.cgi?id=17712&action=edit" title="crash reproducer">[details]</a></span>
crash reproducer

Found while building FreeBSD HEAD with lld at r288670, crash is compiling the
32-bit compat version of ldd. The host is ~= FreeBSD 10.3.

Excerpt from build log:

--- ldd32.full ---
cc -m32 -DCOMPAT_32BIT -march=i686 -mmmx -msse -msse2
-L/tank/emaste/obj/tank/emaste/src/freebsd-xlld/lib32/usr/lib32
--sysroot=/tank/emaste/obj/tank/emaste/src/freebsd-xlld/lib32
-B/tank/emaste/obj/tank/emaste/src/freebsd-xlld/tmp/usr/bin
-B/tank/emaste/obj/tank/emaste/src/freebsd-xlld/lib32/usr/lib32 -O2 -pipe -g
-std=gnu99 -fstack-protector-strong -Wsystem-headers -Werror -Wall
-Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes
-Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings
-Wswitch -Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition -Wno-pointer-sign
-Wmissing-variable-declarations -Wthread-safety -Wno-empty-body
-Wno-string-plus-int -Wno-unused-const-variable -Qunused-arguments  -o
ldd32.full ldd.o sods.o  
0  ld          0x0000000000af130f llvm::raw_null_ostream::~raw_null_ostream() +
146783
1  ld          0x0000000000af1769 llvm::raw_null_ostream::~raw_null_ostream() +
147897
2  ld          0x0000000000aee5c7 llvm::raw_null_ostream::~raw_null_ostream() +
135191
3  ld          0x0000000000af1c6c llvm::raw_null_ostream::~raw_null_ostream() +
149180
4  libthr.so.3 0x0000000805327a3a pthread_sigmask + 1306
5  libthr.so.3 0x000000080532711c pthread_getspecific + 3580
cc: error: unable to execute command: Segmentation fault (core dumped)
cc: error: linker command failed due to signal (use -v to see invocation)
*** [ldd32.full] Error code 254



(lldb) Process 16354 stopped
* thread #6: tid = 101141, 0x00000000005f538d ld.lld`unsigned int
llvm::support::endian::read<unsigned int, (memory=0x0000000000000014)1,
2ul>(void const*) + 61 at Endian.h:52, stop reason = invalid address (fault
address: 0x14)
    frame #0: 0x00000000005f538d ld.lld`unsigned int
llvm::support::endian::read<unsigned int, (memory=0x0000000000000014)1,
2ul>(void const*) + 61 at Endian.h:52
   49     value_type ret;
   50  
   51     memcpy(&ret,
-> 52            LLVM_ASSUME_ALIGNED(memory,
   53              (detail::PickAlignment<value_type, alignment>::value)),
   54            sizeof(value_type));
   55     return byte_swap<value_type, endian>(ret);
(lldb) bt
* thread #6: tid = 101141, 0x00000000005f538d ld.lld`unsigned int
llvm::support::endian::read<unsigned int, (memory=0x0000000000000014)1,
2ul>(void const*) + 61 at Endian.h:52, stop reason = invalid address (fault
address: 0x14)
  * frame #0: 0x00000000005f538d ld.lld`unsigned int
llvm::support::endian::read<unsigned int, (memory=0x0000000000000014)1,
2ul>(void const*) + 61 at Endian.h:52
    frame #1: 0x00000000005f5345
ld.lld`llvm::support::detail::packed_endian_specific_integral<unsigned int,
(this=0x0000000000000014)1, 2ul>::operator unsigned int() const + 21 at
Endian.h:180
    frame #2: 0x00000000006786f6 ld.lld`llvm::object::ELFType<(Type=14, A=0,
P=86204, Body=0x0000000807559258, Expr=R_TLS)1, false>::uint
getSymVA<llvm::object::ELFType<(llvm::support::endianness)1, false> >(unsigned
int, llvm::object::ELFType<(llvm::support::endianness)1, false>::uint,
llvm::object::ELFType<(llvm::support::endianness)1, false>::uint,
lld::elf::SymbolBody const&, lld::elf::RelExpr) + 1158 at InputSection.cpp:412
    frame #3: 0x0000000000680381
ld.lld`lld::elf::InputSectionBase<llvm::object::ELFType<(this=0x0000000807621008,
Buf=0x0000000806c870bc, BufEnd=0x0000000806c870c0)1, false>
<span class="quote">>::relocate(unsigned char*, unsigned char*) + 801 at InputSection.cpp:540</span >
    frame #4: 0x0000000000886c0c
ld.lld`lld::elf::GotSection<llvm::object::ELFType<(this=0x0000000807621000,
Buf=0x0000000806c870bc)1, false> >::writeTo(unsigned char*) + 60 at
SyntheticSections.h:427
    frame #5: 0x000000000068ceea
ld.lld`lld::elf::InputSection<llvm::object::ELFType<(this=0x0000000807621008,
Buf=0x0000000806c870bc)1, false> >::writeTo(unsigned char*) + 106 at
InputSection.cpp:580
    frame #6: 0x0000000000819ca0 ld.lld`operator(this=0x00007fffdf9fabd8,
IS=0x0000000807621008) + 32 at OutputSections.cpp:256
    frame #7: 0x000000000081b9cc ld.lld`operator() [inlined]
lld::elf::OutputSection<llvm::object::ELFType<(__first=__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<1,
false> > **> at 0x00007fffdf9fabe8,
__last=__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<1, false> > **>
at 0x00007fffdf9fabe0,
__f=lld::elf::OutputSection<llvm::object::ELFType<llvm::support::endianness,
false> >::<anonymous class> at 0x00007fffdf9fabd8)1, false> >::writeTo(unsigned
char*)::'lambda'(lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >*)
std::__1::for_each<std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >**>,
lld::elf::OutputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >::writeTo(unsigned
char*)::'lambda'(lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false>
<span class="quote">>*)>(std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,</span >
false> >**>,
std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >**>,
lld::elf::OutputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >::writeTo(unsigned
char*)::'lambda'(lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >*)) + 93 at algorithm:853
    frame #8: 0x000000000081b96f ld.lld`operator(this=0x0000000808410078) + 191
at Parallel.h:307
    frame #9: 0x000000000081b89c ld.lld`std::__1::__function::__func<void
lld::parallel_for_each<std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >**>,
lld::elf::OutputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >::writeTo(unsigned
char*)::'lambda'(lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false>
<span class="quote">>*)>(std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,</span >
false> >**>,
std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >**>,
lld::elf::OutputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >::writeTo(unsigned
char*)::'lambda'(lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >*))::'lambda'(), std::__1::allocator<void
lld::parallel_for_each<std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >**>,
lld::elf::OutputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >::writeTo(unsigned
char*)::'lambda'(lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false>
<span class="quote">>*)>(std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,</span >
false> >**>,
std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >**>,
lld::elf::OutputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >::writeTo(unsigned
char*)::'lambda'(lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >*))::'lambda'()>, void ()>::operator()() [inlined]
decltype(this=0x0000000808410078, __f=0x0000000808410078)1, false> >**>
<span class="quote">>(fp)(std::__1::forward<>(fp0))) std::__1::__invoke<void</span >
lld::parallel_for_each<std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >**>,
lld::elf::OutputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >::writeTo(unsigned
char*)::'lambda'(lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false>
<span class="quote">>*)>(std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,</span >
false> >**>,
std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >**>,
lld::elf::OutputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >::writeTo(unsigned
char*)::'lambda'(lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false>
<span class="quote">>*))::'lambda'()&>(std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,</span >
false> >**>&&) + 60 at __functional_base:413
    frame #10: 0x000000000081b88b ld.lld`std::__1::__function::__func<void
lld::parallel_for_each<std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(this=0x0000000808410070)1,
false> >**>,
lld::elf::OutputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >::writeTo(unsigned
char*)::'lambda'(lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false>
<span class="quote">>*)>(std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,</span >
false> >**>,
std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >**>,
lld::elf::OutputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >::writeTo(unsigned
char*)::'lambda'(lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >*))::'lambda'(), std::__1::allocator<void
lld::parallel_for_each<std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >**>,
lld::elf::OutputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >::writeTo(unsigned
char*)::'lambda'(lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false>
<span class="quote">>*)>(std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,</span >
false> >**>,
std::__1::__wrap_iter<lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >**>,
lld::elf::OutputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >::writeTo(unsigned
char*)::'lambda'(lld::elf::InputSection<llvm::object::ELFType<(llvm::support::endianness)1,
false> >*))::'lambda'()>, void ()>::operator()() + 43 at functional:1370
    frame #11: 0x00000000004e2bba ld.lld`std::__1::function<void
(this=0x0000000808410070)>::operator()() const + 26 at functional:1756
    frame #12: 0x00000000004e2b8d ld.lld`operator(this=0x0000000808410070) + 29
at Parallel.h:189
    frame #13: 0x00000000004e2b5c
ld.lld`std::__1::__function::__func<lld::TaskGroup::spawn(std::__1::function<void
()>)::'lambda'(),
std::__1::allocator<lld::TaskGroup::spawn(std::__1::function<void
()>)::'lambda'()>, void ()>::operator()() [inlined]
decltype(this=0x0000000808410070,
__f=0x0000000808410070)>)::'lambda'()&>(fp)(std::__1::forward<>(fp0)))
std::__1::__invoke<lld::TaskGroup::spawn(std::__1::function<void
()>)::'lambda'()&>(lld::TaskGroup::spawn(std::__1::function<void
()>)::'lambda'()&&&) + 60 at __functional_base:413
    frame #14: 0x00000000004e2b4b
ld.lld`std::__1::__function::__func<lld::TaskGroup::spawn(this=0x0000000808410060)>)::'lambda'(),
std::__1::allocator<lld::TaskGroup::spawn(std::__1::function<void
()>)::'lambda'()>, void ()>::operator()() + 43 at functional:1370
    frame #15: 0x00000000004e2bba ld.lld`std::__1::function<void
(this=0x00007fffdf9fad70)>::operator()() const + 26 at functional:1756
    frame #16: 0x00000000004e849f
ld.lld`lld::internal::ThreadPoolExecutor::work(this=0x00000000054bba90) + 527
at Parallel.h:160
    frame #17: 0x00000000004e8cf8 ld.lld`operator(this=0x000000080780e070) + 24
at Parallel.h:126
    frame #18: 0x00000000004e8be7
ld.lld`std::__1::__thread_proxy<std::__1::tuple<lld::internal::ThreadPoolExecutor::ThreadPoolExecutor(unsigned
int)::'lambda'()::operator()() const::'lambda'()> >(void*, void*) [inlined]
std::__1::__invoke<lld::internal::ThreadPoolExecutor::ThreadPoolExecutor(__f=0x000000080780e070)::'lambda'()::operator()()
const::'lambda'()>(decltype(std::__1::forward<lld::internal::ThreadPoolExecutor::ThreadPoolExecutor(unsigned
int)::'lambda'()::operator()()
const::'lambda'()>(fp)(std::__1::forward<>(fp0))),
lld::internal::ThreadPoolExecutor::ThreadPoolExecutor(unsigned
int)::'lambda'()::operator()() const::'lambda'()&&) + 17 at
__functional_base:413
    frame #19: 0x00000000004e8bd6
ld.lld`std::__1::__thread_proxy<std::__1::tuple<lld::internal::ThreadPoolExecutor::ThreadPoolExecutor(unsigned
int)::'lambda'()::operator()() const::'lambda'()> >(void*, void*) [inlined]
_ZNSt3__116__thread_executeIZZN3lld8internal18ThreadPoolExecutorC1EjENKUlvE_clEvEUlvE_JEJEEEvRNS_5tupleIJT_DpT0_EEENS_15__tuple_indicesIJXspT1_EEEE(__t=0x000000080780e070,
(null)=__tuple_indices<> at 0x00007fffdf9faf78) + 32 at thread:337
    frame #20: 0x00000000004e8bb6
ld.lld`std::__1::__thread_proxy<std::__1::tuple<lld::internal::ThreadPoolExecutor::ThreadPoolExecutor(__vp=0x000000080780e070)::'lambda'()::operator()()
const::'lambda'()> >(void*, void*) + 262 at thread:347
    frame #21: 0x0000000805322755
libthr.so.3`thread_start(curthread=0x0000000807810c00) + 293 at
thr_create.c:288</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>