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

[Minios-devel] [UNIKRAFT/GCC PATCH 03/14] Port libbacktrace library



From: Charalampos Mainas <charalampos.mainas@xxxxxxxxx>

This port also adds the generated config.h and backtrace-supported.h headers.
Another option would have been to generate them during the build.

Signed-off-by: Charalampos Mainas <charalampos.mainas@xxxxxxxxx>
Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx>
---
 Config.uk                                  |   7 ++
 Makefile.uk                                |  29 +++++
 libbacktrace/exportsyms.uk                 |   6 +
 libbacktrace/include/backtrace-supported.h |  66 ++++++++++
 libbacktrace/include/config.h              | 135 +++++++++++++++++++++
 5 files changed, 243 insertions(+)
 create mode 100644 libbacktrace/exportsyms.uk
 create mode 100644 libbacktrace/include/backtrace-supported.h
 create mode 100644 libbacktrace/include/config.h

diff --git a/Config.uk b/Config.uk
index 23ab493..4fc1311 100644
--- a/Config.uk
+++ b/Config.uk
@@ -7,4 +7,11 @@ menuconfig LIBGCC
        select LIBPTHREAD_EMBEDDED
 
 if LIBGCC
+
+config LIBBACKTRACE
+       bool "libbacktrace library"
+       default n
+if LIBBACKTRACE
+endif
+
 endif
diff --git a/Makefile.uk b/Makefile.uk
index 225aba4..49b6069 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -40,6 +40,7 @@
 # Library registration
 
################################################################################
 $(eval $(call addlib_s,libgcc,$(CONFIG_LIBGCC)))
+$(eval $(call addlib_s,libbacktrace,$(CONFIG_LIBBACKTRACE)))
 
 
################################################################################
 # Original sources
@@ -55,9 +56,37 @@ $(eval $(call 
patch,libgcc,$(LIBGCC_PATCHDIR),$(LIBGCC_SUBDIR)))
 # Helpers
 
################################################################################
 LIBGCC_EXTRACTED = $(LIBGCC_ORIGIN)/gcc-$(LIBGCC_VERSION)
+LIBBACKTRACE_EXTRACTED = $(LIBGCC_EXTRACTED)/libbacktrace
 
 
################################################################################
 # Library includes
 
################################################################################
 CINCLUDES-$(CONFIG_LIBGCC)   += -I$(LIBGCC_BASE)/include
 CXXINCLUDES-$(CONFIG_LIBGCC) += -I$(LIBGCC_BASE)/include
+
+################################################################################
+# libbacktrace code
+################################################################################
+LIBBACKTRACE_CINCLUDES-y = -I$(LIBGCC_BASE)/libbacktrace/include \
+       -I$(LIBGCC_EXTRACTED)/include -I$(LIBBACKTRACE_EXTRACTED)
+
+LIBBACKTRACE_CFLAGS-y += -DHAVE_CONFIG_H \
+       -funwind-tables \
+       -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes \
+       -Wold-style-definition -Wmissing-format-attribute -Wcast-qual
+
+LIBBACKTRACE_SRCS-y += $(LIBBACKTRACE_EXTRACTED)/atomic.c
+LIBBACKTRACE_SRCS-y += $(LIBBACKTRACE_EXTRACTED)/dwarf.c
+LIBBACKTRACE_SRCS-y += $(LIBBACKTRACE_EXTRACTED)/fileline.c
+LIBBACKTRACE_SRCS-y += $(LIBBACKTRACE_EXTRACTED)/posix.c
+LIBBACKTRACE_SRCS-y += $(LIBBACKTRACE_EXTRACTED)/print.c
+LIBBACKTRACE_SRCS-y += $(LIBBACKTRACE_EXTRACTED)/sort.c
+LIBBACKTRACE_SRCS-y += $(LIBBACKTRACE_EXTRACTED)/state.c
+LIBBACKTRACE_SRCS-y += $(LIBBACKTRACE_EXTRACTED)/backtrace.c
+LIBBACKTRACE_SRCS-y += $(LIBBACKTRACE_EXTRACTED)/simple.c
+LIBBACKTRACE_SRCS-y += $(LIBBACKTRACE_EXTRACTED)/elf.c
+LIBBACKTRACE_SRCS-y += $(LIBBACKTRACE_EXTRACTED)/mmapio.c
+LIBBACKTRACE_SRCS-y += $(LIBBACKTRACE_EXTRACTED)/mmap.c
+
+LIBBACKTRACE_EXPORTS = $(LIBGCC_BASE)/libbacktrace/exportsyms.uk
+
diff --git a/libbacktrace/exportsyms.uk b/libbacktrace/exportsyms.uk
new file mode 100644
index 0000000..96f3e86
--- /dev/null
+++ b/libbacktrace/exportsyms.uk
@@ -0,0 +1,6 @@
+backtrace_create_state
+backtrace_full
+backtrace_pcinfo
+backtrace_print
+backtrace_simple
+backtrace_syminfo
diff --git a/libbacktrace/include/backtrace-supported.h 
b/libbacktrace/include/backtrace-supported.h
new file mode 100644
index 0000000..c03a98d
--- /dev/null
+++ b/libbacktrace/include/backtrace-supported.h
@@ -0,0 +1,66 @@
+/* backtrace-supported.h.in -- Whether stack backtrace is supported.
+   Copyright (C) 2012-2017 Free Software Foundation, Inc.
+   Written by Ian Lance Taylor, Google.
+
+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.
+
+    (3) The name of the author may not be used to
+    endorse or promote products derived from this software without
+    specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.  */
+
+/* The file backtrace-supported.h.in is used by configure to generate
+   the file backtrace-supported.h.  The file backtrace-supported.h may
+   be #include'd to see whether the backtrace library will be able to
+   get a backtrace and produce symbolic information.  */
+
+
+/* BACKTRACE_SUPPORTED will be #define'd as 1 if the backtrace library
+   should work, 0 if it will not.  Libraries may #include this to make
+   other arrangements.  */
+
+#define BACKTRACE_SUPPORTED 1
+
+/* BACKTRACE_USES_MALLOC will be #define'd as 1 if the backtrace
+   library will call malloc as it works, 0 if it will call mmap
+   instead.  This may be used to determine whether it is safe to call
+   the backtrace functions from a signal handler.  In general this
+   only applies to calls like backtrace and backtrace_pcinfo.  It does
+   not apply to backtrace_simple, which never calls malloc.  It does
+   not apply to backtrace_print, which always calls fprintf and
+   therefore malloc.  */
+
+#define BACKTRACE_USES_MALLOC 0
+
+/* BACKTRACE_SUPPORTS_THREADS will be #define'd as 1 if the backtrace
+   library is configured with threading support, 0 if not.  If this is
+   0, the threaded parameter to backtrace_create_state must be passed
+   as 0.  */
+
+#define BACKTRACE_SUPPORTS_THREADS 1
+
+/* BACKTRACE_SUPPORTS_DATA will be #defined'd as 1 if the backtrace_syminfo
+   will work for variables.  It will always work for functions.  */
+
+#define BACKTRACE_SUPPORTS_DATA 1
diff --git a/libbacktrace/include/config.h b/libbacktrace/include/config.h
new file mode 100644
index 0000000..5086f4d
--- /dev/null
+++ b/libbacktrace/include/config.h
@@ -0,0 +1,135 @@
+/* config.h.  Generated from config.h.in by configure.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* ELF size: 32 or 64 */
+#define BACKTRACE_ELF_SIZE 64
+
+/* Define to 1 if you have the __atomic functions */
+#define HAVE_ATOMIC_FUNCTIONS 1
+
+/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
+   don't. */
+#define HAVE_DECL_STRNLEN 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define if dl_iterate_phdr is available. */
+#define HAVE_DL_ITERATE_PHDR 1
+
+/* Define to 1 if you have the fcntl function */
+#define HAVE_FCNTL 1
+
+/* Define if getexecname is available. */
+/* #undef HAVE_GETEXECNAME */
+
+/* Define if _Unwind_GetIPInfo is available. */
+#define HAVE_GETIPINFO 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <link.h> header file. */
+#define HAVE_LINK_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the __sync functions */
+#define HAVE_SYNC_FUNCTIONS 1
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#define LT_OBJDIR ".libs/"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "package-unused"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "package-unused version-unused"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "libbacktrace"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "version-unused"
+
+/* The size of `char', as computed by sizeof. */
+/* #undef SIZEOF_CHAR */
+
+/* The size of `int', as computed by sizeof. */
+/* #undef SIZEOF_INT */
+
+/* The size of `long', as computed by sizeof. */
+/* #undef SIZEOF_LONG */
+
+/* The size of `short', as computed by sizeof. */
+/* #undef SIZEOF_SHORT */
+
+/* The size of `void *', as computed by sizeof. */
+/* #undef SIZEOF_VOID_P */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# define _ALL_SOURCE 1
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# define _POSIX_PTHREAD_SEMANTICS 1
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# define _TANDEM_SOURCE 1
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# define __EXTENSIONS__ 1
+#endif
+
+
+/* Define to 1 if on MINIX. */
+/* #undef _MINIX */
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+/* #undef _POSIX_SOURCE */
-- 
2.17.1


_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.