NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: lib/49990: libc++ fails to build with g++ 5.1 due to the following types of errors:



On 23/06/15 15:05, Martin Husemann wrote:
The following reply was made to PR lib/49990; it has been noted by GNATS.

From: Martin Husemann <martin%duskware.de@localhost>
To: Dave Huang <khym%azeotrope.org@localhost>
Cc: gnats-bugs%NetBSD.org@localhost
Subject: Re: lib/49990: libc++ fails to build with g++ 5.1 due to the following types of errors:
Date: Tue, 23 Jun 2015 17:02:34 +0200

  On Tue, Jun 23, 2015 at 09:51:02AM -0500, Dave Huang wrote:
  > While they are consistent, I'm not sure what the intent is. If it's
  > supposed to be checking for gcc > 3.2, I'm pretty sure that's not the
  > way to do it.

  Heh, good catch!

Indeed! I feel a bit blind now. That clause was probably written by the same people who made it impossible to name anything "Windows 9"...

After having spent quite a few hours trying to figure out where to get gcc 5.1 from and finally settling on installing Manjaro Linux in VM (hint: if the Manjaro root file system mount fails, the VM has insufficient memory), I can now repeat the problem the locally. I can also confirm that the following patch (boosted with the patch from lib/49989) makes libc++ build with g++ 5.1

(I'm *guessing* it wants to check for gcc > 4.2)

Thanks, Dave!

diff --git a/external/bsd/libc++/dist/libcxxrt/src/exception.cc b/external/bsd/libc++/dist/libcxxrt/src/exception.cc
index ed5ad2b..647badb 100644
--- a/external/bsd/libc++/dist/libcxxrt/src/exception.cc
+++ b/external/bsd/libc++/dist/libcxxrt/src/exception.cc
@@ -673,7 +673,7 @@ static _Unwind_Reason_Code trace(struct _Unwind_Context *context, void *c) * If the failure happened by falling off the end of the stack without finding
  * a handler, prints a back trace before aborting.
  */
-#if __GNUC__ > 3 && __GNUC_MINOR__ > 2
+#if (__GNUC__ == 4 && __GNUC_MINOR__ > 2) || __GNUC__ > 4
 extern "C" void *__cxa_begin_catch(void *e) throw();
 #else
 extern "C" void *__cxa_begin_catch(void *e);
@@ -1189,7 +1189,7 @@ BEGIN_PERSONALITY_FUNCTION(__gxx_personality_v0)
* pointer to the caught exception, which is either the adjusted pointer (for
  * C++ exceptions) of the unadjusted pointer (for foreign exceptions).
  */
-#if __GNUC__ > 3 && __GNUC_MINOR__ > 2
+#if (__GNUC__ == 4 && __GNUC_MINOR__ > 2) || __GNUC__ > 4
 extern "C" void *__cxa_begin_catch(void *e) throw()
 #else
 extern "C" void *__cxa_begin_catch(void *e)


Home | Main Index | Thread Index | Old Index