git: b2127b6f1ae2 - stable/13 - Install unwind.h into /usr/include

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Sun, 20 Feb 2022 12:31:05 UTC
The branch stable/13 has been updated by dim:

URL: https://cgit.FreeBSD.org/src/commit/?id=b2127b6f1ae2b92eba1892e6f5257e3f6795fed5

commit b2127b6f1ae2b92eba1892e6f5257e3f6795fed5
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2022-02-10 17:57:49 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2022-02-20 12:29:44 +0000

    Install unwind.h into /usr/include
    
    Install headers from LLVM's libunwind in place of the headers from
    libcxxrt and allow C applications to use the library.
    
    As part of this, remove include/unwind.h and switch libthr over to
    using the installed unwind.h.
    
    Reviewed by:    dim, emaste
    MFC after:      10 days
    Differential Revision: https://reviews.freebsd.org/D34065
    
    (cherry picked from commit c00d345665366a89aaba7244d6f078dc756f4c53)
---
 ObsoleteFiles.inc                        |   5 +
 include/unwind.h                         | 160 -------------------------------
 lib/libc++/Makefile                      |   3 -
 lib/libgcc_eh/Makefile                   |   4 +
 lib/libgcc_eh/Makefile.inc               |   1 -
 lib/libthr/Makefile                      |   1 -
 tools/build/mk/OptionalObsoleteFiles.inc |   3 -
 7 files changed, 9 insertions(+), 168 deletions(-)

diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index d57309df174b..aa2923bb1b12 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -36,6 +36,11 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20220220: unwind.h moved to /usr/include
+OLD_FILES+=usr/include/c++/v1/unwind-arm.h
+OLD_FILES+=usr/include/c++/v1/unwind-itanium.h
+OLD_FILES+=usr/include/c++/v1/unwind.h
+
 # 20211221 efi_set_variables_supported.3 should be efi_variables_supported.3
 OLD_FILES+=usr/share/man/man3/efi_set_variables_supported.3.gz
 
diff --git a/include/unwind.h b/include/unwind.h
deleted file mode 100644
index a872c0a094ba..000000000000
--- a/include/unwind.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/* $FreeBSD$ */
-
-/*-
-   libunwind - a platform-independent unwind library
-
-   SPDX-License-Identifier: ISC
-
-   Copyright (C) 2003 Hewlett-Packard Co
-	Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-
-This file is part of libunwind.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-
-#ifndef _UNWIND_H
-#define _UNWIND_H
-
-#include <sys/_types.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Minimal interface as per C++ ABI draft standard:
-
-	http://www.codesourcery.com/cxx-abi/abi-eh.html */
-
-typedef enum
-  {
-    _URC_NO_REASON = 0,
-    _URC_FOREIGN_EXCEPTION_CAUGHT = 1,
-    _URC_FATAL_PHASE2_ERROR = 2,
-    _URC_FATAL_PHASE1_ERROR = 3,
-    _URC_NORMAL_STOP = 4,
-    _URC_END_OF_STACK = 5,
-    _URC_HANDLER_FOUND = 6,
-    _URC_INSTALL_CONTEXT = 7,
-    _URC_CONTINUE_UNWIND = 8
-  }
-_Unwind_Reason_Code;
-
-typedef int _Unwind_Action;
-
-#define _UA_SEARCH_PHASE	1
-#define _UA_CLEANUP_PHASE	2
-#define _UA_HANDLER_FRAME	4
-#define _UA_FORCE_UNWIND	8
-
-struct _Unwind_Context;		/* opaque data-structure */
-struct _Unwind_Exception;	/* forward-declaration */
-
-typedef void (*_Unwind_Exception_Cleanup_Fn) (_Unwind_Reason_Code,
-					      struct _Unwind_Exception *);
-
-typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn) (int, _Unwind_Action,
-						__uint64_t,
-						struct _Unwind_Exception *,
-						struct _Unwind_Context *,
-						void *);
-
-/* The C++ ABI requires exception_class, private_1, and private_2 to
-   be of type uint64 and the entire structure to be
-   double-word-aligned, but that seems a bit overly IA-64-specific.
-   Using "unsigned long" instead should give us the desired effect on
-   IA-64, while being more general.  */
-struct _Unwind_Exception
-  {
-    __uint64_t exception_class;
-    _Unwind_Exception_Cleanup_Fn exception_cleanup;
-    unsigned long private_1;
-    unsigned long private_2;
-  };
-
-extern _Unwind_Reason_Code _Unwind_RaiseException (struct _Unwind_Exception *);
-extern _Unwind_Reason_Code _Unwind_ForcedUnwind (struct _Unwind_Exception *,
-						 _Unwind_Stop_Fn, void *);
-extern void _Unwind_Resume (struct _Unwind_Exception *);
-extern void _Unwind_DeleteException (struct _Unwind_Exception *);
-extern unsigned long _Unwind_GetGR (struct _Unwind_Context *, int);
-extern void _Unwind_SetGR (struct _Unwind_Context *, int, unsigned long);
-extern unsigned long _Unwind_GetIP (struct _Unwind_Context *);
-extern unsigned long _Unwind_GetIPInfo (struct _Unwind_Context *, int *);
-extern void _Unwind_SetIP (struct _Unwind_Context *, unsigned long);
-extern unsigned long _Unwind_GetLanguageSpecificData (struct _Unwind_Context*);
-extern unsigned long _Unwind_GetRegionStart (struct _Unwind_Context *);
-
-#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-
-/* Callback for _Unwind_Backtrace().  The backtrace stops immediately
-   if the callback returns any value other than _URC_NO_REASON. */
-typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn) (struct _Unwind_Context *,
-						 void *);
-
-/* See http://gcc.gnu.org/ml/gcc-patches/2001-09/msg00082.html for why
-   _UA_END_OF_STACK exists.  */
-# define _UA_END_OF_STACK	16
-
-/* If the unwind was initiated due to a forced unwind, resume that
-   operation, else re-raise the exception.  This is used by
-   __cxa_rethrow().  */
-extern _Unwind_Reason_Code
-	  _Unwind_Resume_or_Rethrow (struct _Unwind_Exception *);
-
-/* See http://gcc.gnu.org/ml/gcc-patches/2003-09/msg00154.html for why
-   _Unwind_GetBSP() exists.  */
-extern unsigned long _Unwind_GetBSP (struct _Unwind_Context *);
-
-/* Return the "canonical frame address" for the given context.
-   This is used by NPTL... */
-extern uintptr_t _Unwind_GetCFA (struct _Unwind_Context *);
-
-/* Return the base-address for data references.  */
-extern unsigned long _Unwind_GetDataRelBase (struct _Unwind_Context *);
-
-/* Return the base-address for text references.  */
-extern unsigned long _Unwind_GetTextRelBase (struct _Unwind_Context *);
-
-/* Call _Unwind_Trace_Fn once for each stack-frame, without doing any
-   cleanup.  The first frame for which the callback is invoked is the
-   one for the caller of _Unwind_Backtrace().  _Unwind_Backtrace()
-   returns _URC_END_OF_STACK when the backtrace stopped due to
-   reaching the end of the call-chain or _URC_FATAL_PHASE1_ERROR if it
-   stops for any other reason.  */
-extern _Unwind_Reason_Code _Unwind_Backtrace (_Unwind_Trace_Fn, void *);
-
-/* Find the start-address of the procedure containing the specified IP
-   or NULL if it cannot be found (e.g., because the function has no
-   unwind info).  Note: there is not necessarily a one-to-one
-   correspondence between source-level functions and procedures: some
-   functions don't have unwind-info and others are split into multiple
-   procedures.  */
-extern void *_Unwind_FindEnclosingFunction (void *);
-
-/* See also Linux Standard Base Spec:
-    http://www.linuxbase.org/spec/refspecs/LSB_1.3.0/gLSB/gLSB/libgcc-s.html */
-
-#endif /* _GNU_SOURCE || _BSD_SOURCE */
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif /* _UNWIND_H */
diff --git a/lib/libc++/Makefile b/lib/libc++/Makefile
index 2bc1bf40eccd..6c00aa398ee0 100644
--- a/lib/libc++/Makefile
+++ b/lib/libc++/Makefile
@@ -237,9 +237,6 @@ STD+=		${HDRDIR}/${hdr}
 STD+=		${.CURDIR}/__config_site
 
 RT_HEADERS+=	cxxabi.h
-RT_HEADERS+=	unwind-arm.h
-RT_HEADERS+=	unwind-itanium.h
-RT_HEADERS+=	unwind.h
 .for hdr in ${RT_HEADERS}
 STD+=		${_LIBCXXRTDIR}/${hdr}
 .endfor
diff --git a/lib/libgcc_eh/Makefile b/lib/libgcc_eh/Makefile
index ecffbf9cfd6a..6f2deda1adf0 100644
--- a/lib/libgcc_eh/Makefile
+++ b/lib/libgcc_eh/Makefile
@@ -11,6 +11,10 @@ WARNS?=	2
 SRCS_EXC+=	int_util.c
 .include "Makefile.inc"
 
+INCS+=		${UNWINDINCDIR}/__libunwind_config.h
+INCS+=		${UNWINDINCDIR}/libunwind.h
+INCS+=		${UNWINDINCDIR}/unwind.h
+
 .if ${.MAKE.LEVEL} > 0
 # avoid circular dependencies
 GENDIRDEPS_FILTER+= Nlib/msun
diff --git a/lib/libgcc_eh/Makefile.inc b/lib/libgcc_eh/Makefile.inc
index 4fe1eff406e1..20535a5d0bbc 100644
--- a/lib/libgcc_eh/Makefile.inc
+++ b/lib/libgcc_eh/Makefile.inc
@@ -26,7 +26,6 @@ CXXFLAGS.${file}+=	-fno-exceptions -funwind-tables
 .endfor
 
 CFLAGS+=	-I${UNWINDINCDIR}
-CFLAGS+=	-I${.CURDIR}
 CFLAGS+=	-D_LIBUNWIND_IS_NATIVE_ONLY
 CFLAGS+=	-D_LIBUNWIND_USE_FRAME_HEADER_CACHE
 CXXFLAGS+=	-fno-rtti
diff --git a/lib/libthr/Makefile b/lib/libthr/Makefile
index 1a5dfa18dca7..fab83d98ebe0 100644
--- a/lib/libthr/Makefile
+++ b/lib/libthr/Makefile
@@ -19,7 +19,6 @@ CFLAGS+=-DPTHREAD_KERNEL
 CFLAGS+=-I${SRCTOP}/lib/libc/include
 CFLAGS+=-I${SRCTOP}/lib/libc/${MACHINE_CPUARCH}
 CFLAGS+=-I${.CURDIR}/thread
-CFLAGS+=-I${SRCTOP}/include
 CFLAGS+=-I${.CURDIR}/arch/${MACHINE_CPUARCH}/include
 CFLAGS+=-I${.CURDIR}/sys
 CFLAGS+=-I${SRCTOP}/libexec/rtld-elf
diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc
index 21336b55fb89..70b7574040e0 100644
--- a/tools/build/mk/OptionalObsoleteFiles.inc
+++ b/tools/build/mk/OptionalObsoleteFiles.inc
@@ -4189,9 +4189,6 @@ OLD_FILES+=usr/include/c++/v1/typeindex
 OLD_FILES+=usr/include/c++/v1/typeinfo
 OLD_FILES+=usr/include/c++/v1/unordered_map
 OLD_FILES+=usr/include/c++/v1/unordered_set
-OLD_FILES+=usr/include/c++/v1/unwind-arm.h
-OLD_FILES+=usr/include/c++/v1/unwind-itanium.h
-OLD_FILES+=usr/include/c++/v1/unwind.h
 OLD_FILES+=usr/include/c++/v1/utility
 OLD_FILES+=usr/include/c++/v1/valarray
 OLD_FILES+=usr/include/c++/v1/variant