Source-Changes-HG archive

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

[src/trunk]: src Install gcc's unwind.h instead of libexecinfo's



details:   https://anonhg.NetBSD.org/src/rev/ca29abbafcfe
branches:  trunk
changeset: 848254:ca29abbafcfe
user:      mgorny <mgorny%NetBSD.org@localhost>
date:      Wed Jan 22 15:10:31 2020 +0000

description:
Install gcc's unwind.h instead of libexecinfo's

The prototypes in libexecinfo's unwind.h do not match those commonly
used (e.g. by gcc, clang, GNU libunwind, LLVM libunwind...), causing
C++ programs to fail to build on type mismatches (e.g. compiler-rt,
libc++abi).  Rather than providing our own header, reuse the one
included in gcc.

diffstat:

 external/gpl3/gcc.old/lib/libgcc/Makefile.inc |   6 +-
 external/gpl3/gcc/lib/libgcc/Makefile.inc     |   6 +-
 lib/libexecinfo/Makefile                      |   6 +-
 lib/libexecinfo/unwind.h                      |  96 ---------------------------
 4 files changed, 11 insertions(+), 103 deletions(-)

diffs (160 lines):

diff -r b155cf7e6c8b -r ca29abbafcfe external/gpl3/gcc.old/lib/libgcc/Makefile.inc
--- a/external/gpl3/gcc.old/lib/libgcc/Makefile.inc     Wed Jan 22 14:01:50 2020 +0000
+++ b/external/gpl3/gcc.old/lib/libgcc/Makefile.inc     Wed Jan 22 15:10:31 2020 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile.inc,v 1.12 2019/09/26 08:03:26 mrg Exp $
+#      $NetBSD: Makefile.inc,v 1.13 2020/01/22 15:10:31 mgorny Exp $
 
 LIBGCC_MACHINE_ARCH?=${MACHINE_ARCH:S/earmv5/earm/}
 GCC_MACHINE_SUBDIR=${MACHINE_CPU:C/powerpc.*/rs6000/:C/x86_64/i386/}
@@ -111,6 +111,10 @@
 .else
 LIB2_EH=       ${G_LIB2ADDEH:M*.c:T}
 LIB2_EHASM=    ${G_LIB2ADDEH:M*.S:T}
+
+INCSDIR=       /usr/include
+# originally copied from unwind-*.h
+INCS+=         unwind.h
 .endif
 
 # We have to weed out any existing func.S file that may exist
diff -r b155cf7e6c8b -r ca29abbafcfe external/gpl3/gcc/lib/libgcc/Makefile.inc
--- a/external/gpl3/gcc/lib/libgcc/Makefile.inc Wed Jan 22 14:01:50 2020 +0000
+++ b/external/gpl3/gcc/lib/libgcc/Makefile.inc Wed Jan 22 15:10:31 2020 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile.inc,v 1.43 2019/05/11 02:39:32 christos Exp $
+#      $NetBSD: Makefile.inc,v 1.44 2020/01/22 15:10:31 mgorny Exp $
 
 LIBGCC_MACHINE_ARCH?=${MACHINE_ARCH:S/earmv5/earm/}
 GCC_MACHINE_SUBDIR=${MACHINE_CPU:C/powerpc.*/rs6000/:C/x86_64/i386/}
@@ -111,6 +111,10 @@
 .else
 LIB2_EH=       ${G_LIB2ADDEH:M*.c:T}
 LIB2_EHASM=    ${G_LIB2ADDEH:M*.S:T}
+
+INCSDIR=       /usr/include
+# originally copied from unwind-*.h
+INCS+=         unwind.h
 .endif
 
 # We have to weed out any existing func.S file that may exist
diff -r b155cf7e6c8b -r ca29abbafcfe lib/libexecinfo/Makefile
--- a/lib/libexecinfo/Makefile  Wed Jan 22 14:01:50 2020 +0000
+++ b/lib/libexecinfo/Makefile  Wed Jan 22 15:10:31 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.8 2014/10/24 22:42:16 joerg Exp $
+# $NetBSD: Makefile,v 1.9 2020/01/22 15:10:32 mgorny Exp $
 
 .include <bsd.own.mk>
 
@@ -8,10 +8,6 @@
 INCSDIR=/usr/include
 INCS=execinfo.h
 
-.if ${HAVE_LIBGCC_EH} == "yes"
-INCS+= unwind.h
-.endif
-
 #CPPFLAGS+='-D__RCSID(a)=' -D_GNU_SOURCE '-D__printflike(a,b)='
 #CPPFLAGS+=-I/usr/include/libelf
 #COPTS+=-std=gnu99
diff -r b155cf7e6c8b -r ca29abbafcfe lib/libexecinfo/unwind.h
--- a/lib/libexecinfo/unwind.h  Wed Jan 22 14:01:50 2020 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*     $NetBSD: unwind.h,v 1.5 2016/12/19 01:24:40 christos Exp $      */
-
-/*-
- * Copyright (c) 2012 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _UNWIND_H_
-#define _UNWIND_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-__BEGIN_DECLS
-struct _Unwind_Context;
-struct _Unwind_Exception;
-typedef int _Unwind_Reason_Code;
-typedef int _Unwind_Action;
-typedef void *_Unwind_Ptr;
-typedef long _Unwind_Word;
-
-#define        _UA_SEARCH_PHASE        0x01
-#define        _UA_CLEANUP_PHASE       0x02
-#define        _UA_HANDLER_FRAME       0x04
-#define        _UA_FORCE_UNWIND        0x08
-#define        _UA_END_OF_STACK        0x10
-
-#define        _URC_NO_REASON                  0
-#define        _URC_FOREIGN_EXCEPTION_CAUGHT   1
-#define        _URC_FATAL_PHASE2_ERROR         2
-#define        _URC_FATAL_PHASE1_ERROR         3
-#define        _URC_NORMAL_STOP                4
-#define        _URC_END_OF_STACK               5
-#define        _URC_HANDLER_FOUND              6
-#define        _URC_INSTALL_CONTEXT            7
-#define        _URC_CONTINUE_UNWIND            8
-
-struct _Unwind_Exception {
-       uint64_t exception_class;
-       void (*exception_cleanup)(_Unwind_Reason_Code,
-           struct _Unwind_Exception *);
-       uintptr_t private_1;
-       uintptr_t private_2;
-} __attribute__((__aligned__));
-
-typedef _Unwind_Reason_Code
-    (*_Unwind_Trace_Fn)(struct _Unwind_Context *, void *);
-#ifdef notyet
-typedef _Unwind_Reason_Code
-    (*_Unwind_Stop_Fn)(struct _Unwind_Context *, void *);
-#endif
-
-_Unwind_Reason_Code     _Unwind_Backtrace(_Unwind_Trace_Fn, void *);
-void                    _Unwind_DeleteException(struct _Unwind_Exception *);
-void                   *_Unwind_FindEnclosingFunction(void *);
-#ifdef notyet
-_Unwind_Reason_Code     _Unwind_ForcedUnwind(struct _Unwind_Exception *,
-    _Unwind_Stop_fn, void *);
-#endif
-_Unwind_Word            _Unwind_GetCFA(struct _Unwind_Context *);
-_Unwind_Ptr             _Unwind_GetDataRelBase(struct _Unwind_Context *);
-_Unwind_Word            _Unwind_GetGR(struct _Unwind_Context *, int);
-_Unwind_Ptr             _Unwind_GetIP(struct _Unwind_Context *);
-_Unwind_Ptr             _Unwind_GetIPInfo(struct _Unwind_Context *, int *);
-_Unwind_Ptr             _Unwind_GetLanguageSpecificData(
-    struct _Unwind_Context *);
-_Unwind_Ptr             _Unwind_GetRegionStart(struct _Unwind_Context *);
-_Unwind_Ptr             _Unwind_GetTextRelBase(struct _Unwind_Context *);
-_Unwind_Reason_Code     _Unwind_RaiseException(struct _Unwind_Exception *);
-void                    _Unwind_Resume(struct _Unwind_Exception *);
-_Unwind_Reason_Code     _Unwind_Resume_or_Rethrow(struct _Unwind_Exception *);
-void                    _Unwind_SetGR(struct _Unwind_Context *, int,
-    _Unwind_Ptr);
-void                    _Unwind_SetIP(struct _Unwind_Context *, _Unwind_Ptr);
-__END_DECLS
-#endif /* _UNWIND_H_ */



Home | Main Index | Thread Index | Old Index