Closed Bug 850689 Opened 12 years ago Closed 5 years ago

Breakpad fails to build with Clang on Linux x86-64

Categories

(Toolkit :: Crash Reporting, defect)

x86_64
Linux
defect
Not set
critical

Tracking

()

RESOLVED FIXED

People

(Reporter: jcranmer, Unassigned)

References

Details

Marking this as critical because it is stopping DXR from updating.

In file included from /builds/slave/dxr-mozilla-central/dxr-build-env/src/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.cc:34:
In file included from /builds/slave/dxr-mozilla-central/dxr-build-env/src/toolkit/crashreporter/google-breakpad/src/common/../common/dwarf/dwarf2reader.h:43:
In file included from ../../../../../dist/stl_wrappers/list:54:
In file included from ../../../../../dist/system_wrappers/list:2:
In file included from /tools/gcc-4.5-0moz3/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/list:65:
/tools/gcc-4.5-0moz3/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/list.tcc:143:16: error: overload resolution selected implicitly-deleted copy assignment operator
            *__first1 = *__first2;
                      ^
/builds/slave/dxr-mozilla-central/dxr-build-env/src/toolkit/crashreporter/google-breakpad/src/common/../common/dwarf/dwarf2reader.h:244:10: note: in instantiation of member function 'std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::operator=' requested here
  struct Abbrev {
         ^
/tools/gcc-4.5-0moz3/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_algobase.h:742:7: note: in instantiation of function template specialization 'std::__fill_a<dwarf2reader::CompilationUnit::Abbrev *, dwarf2reader::CompilationUnit::Abbrev>' requested here
      std::__fill_a(std::__niter_base(__first), std::__niter_base(__last),
      ^
/tools/gcc-4.5-0moz3/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/vector.tcc:392:5: note: in instantiation of function template specialization 'std::fill<dwarf2reader::CompilationUnit::Abbrev *, dwarf2reader::CompilationUnit::Abbrev>' requested here
                  std::fill(__position.base(), __position.base() + __n,
                  ^
/tools/gcc-4.5-0moz3/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_vector.h:859:9: note: in instantiation of member function 'std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::_M_fill_insert' requested here
      { _M_fill_insert(__position, __n, __x); }
        ^
/tools/gcc-4.5-0moz3/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_vector.h:558:4: note: in instantiation of member function 'std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::insert' requested here
          insert(end(), __new_size - size(), __x);
          ^
/builds/slave/dxr-mozilla-central/dxr-build-env/src/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.cc:81:13: note: in instantiation of member function 'std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::resize' requested here
  abbrevs_->resize(1);
            ^
/tools/gcc-4.5-0moz3/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_pair.h:127:7: note: copy assignment operator is implicitly deleted because 'pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>' has a user-declared move assignment operator
      operator=(pair&& __p)
      ^
In file included from /builds/slave/dxr-mozilla-central/dxr-build-env/src/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.cc:34:
/builds/slave/dxr-mozilla-central/dxr-build-env/src/toolkit/crashreporter/google-breakpad/src/common/../common/dwarf/dwarf2reader.h:143:10: warning: private field 'buffer_length_' is not used [-Wunused-private-field]
  uint64 buffer_length_;
         ^
1 warning and 1 error generated.
My belief is that it's a libstdc++ headers problem, and that building with gcc 4.7 libstdc++ ought to work. It will require rebuilding clang with build/unix/build-clang/build-clang.py, in an environment where our gcc 4.7 (bug 850689) is installed, and with a modification to --with-gcc-toolchain in build-clang.py.
Depends on: 850829
Depends on: 852745
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.