Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#49779 closed defect (fixed)

libunwind @3.7.0 fails building on 10.6.8

Reported by: udbraumann Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 2.3.4
Keywords: Cc: jeremyhu (Jeremy Huddleston Sequoia)
Port: libunwind

Description

While upgrading libunwind from 3.6.0_0 to 3.7.0_0 I ran in the following error:

...
:info:build /usr/bin/llvm-gcc-4.2 -arch x86_64 -force_cpusubtype_ALL  -I../include -I/opt/local/include -DUSE_MACPORTS_LIBUNWIND -DNDEBUG  -c -o UnwindRegistersRestore.o UnwindRegistersRestore.S
:info:build /usr/bin/llvm-gcc-4.2 -arch x86_64 -force_cpusubtype_ALL  -I../include -I/opt/local/include -DUSE_MACPORTS_LIBUNWIND -DNDEBUG  -c -o UnwindRegistersSave.o UnwindRegistersSave.S
:info:build libunwind.cpp:19:17: error: tuple: No such file or directory
:info:build In file included from UnwindCursor.hpp:32,
:info:build                  from libunwind.cpp:30:
:info:build EHHeaderParser.hpp: In static member function ‘static bool libunwind::EHHeaderParser<A>::findFDE(A&, typename A::pint_t, typename A::pint_t, uint32_t, typename libunwind::CFI_Parser<A>::FDE_Info*, typename libunwind::CFI_Parser<A>::CIE_Info*)’:
:info:build EHHeaderParser.hpp:103: error: expected `;' before ‘hdrInfo’
:info:build EHHeaderParser.hpp:104: error: ‘hdrInfo’ was not declared in this scope
:info:build make: *** [libunwind.o] Error 1
...

Any ideas why some include file tuple is not being found? I experimented with macports-clang-3.* but all face similar problems.

Attachments (1)

main.log.gz (2.6 KB) - added by udbraumann 8 years ago.

Download all attachments as: .zip

Change History (4)

Changed 8 years ago by udbraumann

Attachment: main.log.gz added

comment:1 Changed 8 years ago by jeremyhu (Jeremy Huddleston Sequoia)

It was added in:

commit 16e33fad1a800924365cca09870e7250ac20000c
Author: Saleem Abdulrasool <compnerd@compnerd.org>
Date:   Wed Feb 11 05:20:53 2015 +0000

    unwind: tweak inclusion ordering to work around GCC
    
    This is a slightly convoluted workaround.  GCC does not support the
    __has_feature extension of clang, and this results in some issues with
    static_asserts.  config.h defines static_assert as a macro with a C-specific
    trickery.  This then propagates into the C++ headers included after config.h,
    which are used with C++11 mode, enabling constexpr constructors.  The macro'ed
    static_assert does not get treated as the static_assert builtin, and will cause
    an error due to a non-empty constexpr constructor.  Tweaking the include order
    permits the use of libc++ headers to build libunwind with GCC on Linux.
    
    git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@228809 91177308-0d34-0410-b5e6-96231b3b80d8

comment:2 Changed 8 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Resolution: fixed
Status: newclosed

comment:3 in reply to:  2 Changed 8 years ago by udbraumann

Thanks! Problem solved.

Please note, Xcode gcc-4.2 or llvm-gcc-4.2 (also the the variants from MacPorts) do not work on my 10.6.8 system, what works are macports-ggc-4.7 and higher as well as macports-clang-3.5 and higher as well as clang from Xcode 4.2 (it builds within seconds, so I could make a brief "survey" on compiler functionality), finally I took

$ sudo port -s upgrade libunwind configure.compiler=macports-gcc-5

Maybe you can blacklist some which do not work (as mentioned before).

BTW, just for completeness, here is the error which is issued when building failed (e.g. with llvm-gcc-4.2):

:info:build In file included from UnwindCursor.hpp:32,
:info:build                  from libunwind.cpp:27:
:info:build EHHeaderParser.hpp: In static member function ‘static bool libunwind::EHHeaderParser<A>::findFDE(A&, typename A::pint_t, typename A::pint_t, uint32_t, typename libunwind::CFI_Parser<A>::FDE_Info*, typename libunwind::CFI_Parser<A>::CIE_Info*)’:
:info:build EHHeaderParser.hpp:103: error: expected `;' before ‘hdrInfo’
:info:build EHHeaderParser.hpp:104: error: ‘hdrInfo’ was not declared in this scope
:info:build make: *** [libunwind.o] Error 1
Note: See TracTickets for help on using tickets.