summaryrefslogtreecommitdiff
path: root/Ports/backward-cpp
diff options
context:
space:
mode:
authorAndrew Kaster <akaster@serenityos.org>2023-03-11 14:01:19 -0700
committerLinus Groh <mail@linusgroh.de>2023-03-13 07:23:53 +0000
commit3219ecbdc07ce4669300ab80300e41d7b7e9ce6f (patch)
treedc5f501eb61ddf9b2791a1390d2d2eab8f5bac80 /Ports/backward-cpp
parente690b35fdc5ef4f42ab61a41da1866f926f985c2 (diff)
downloadserenity-3219ecbdc07ce4669300ab80300e41d7b7e9ce6f.zip
Ports: Add port of backward-cpp, a pretty backtrace library
Diffstat (limited to 'Ports/backward-cpp')
-rwxr-xr-xPorts/backward-cpp/package.sh23
-rw-r--r--Ports/backward-cpp/patches/0001-test-Don-t-use-program_invocation_name-on-Serenity.patch22
-rw-r--r--Ports/backward-cpp/patches/0002-backward-Pretend-to-be-Linux-with-some-modifications.patch69
-rw-r--r--Ports/backward-cpp/patches/ReadMe.md12
4 files changed, 126 insertions, 0 deletions
diff --git a/Ports/backward-cpp/package.sh b/Ports/backward-cpp/package.sh
new file mode 100755
index 0000000000..bb15e045bb
--- /dev/null
+++ b/Ports/backward-cpp/package.sh
@@ -0,0 +1,23 @@
+#!/usr/bin/env -S bash ../.port_include.sh
+port='backward-cpp'
+version='1.6'
+files="https://github.com/bombela/backward-cpp/archive/refs/tags/v${version}.tar.gz backward-cpp-${version}.tar.gz c654d0923d43f1cea23d086729673498e4741fb2457e806cfaeaea7b20c97c10"
+auth_type='sha256'
+useconfigure='true'
+configopts=(
+ "-DCMAKE_TOOLCHAIN_FILE=${SERENITY_BUILD_DIR}/CMakeToolchain.txt"
+)
+depends=(
+ 'binutils'
+ 'zlib'
+)
+
+configure() {
+ run cmake "${configopts[@]}"
+}
+
+install() {
+ run make install
+ run mkdir -p ${SERENITY_INSTALL_ROOT}/usr/local/bin/backtrace_tests
+ run_nocd cp -r ${workdir}/test_* ${SERENITY_INSTALL_ROOT}/usr/local/bin/backtrace_tests
+}
diff --git a/Ports/backward-cpp/patches/0001-test-Don-t-use-program_invocation_name-on-Serenity.patch b/Ports/backward-cpp/patches/0001-test-Don-t-use-program_invocation_name-on-Serenity.patch
new file mode 100644
index 0000000000..5bc9bad0aa
--- /dev/null
+++ b/Ports/backward-cpp/patches/0001-test-Don-t-use-program_invocation_name-on-Serenity.patch
@@ -0,0 +1,22 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Andrew Kaster <andrewdkaster@gmail.com>
+Date: Sat, 11 Mar 2023 13:57:17 -0700
+Subject: [PATCH] test: Don't use program_invocation_name on Serenity
+
+---
+ test/_test_main.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/_test_main.cpp b/test/_test_main.cpp
+index 68211e030fd2984f291b412e2298a5359806c211..8cd458ab95b4b23d0935270eb6b5b63a63ee4da9 100644
+--- a/test/_test_main.cpp
++++ b/test/_test_main.cpp
+@@ -43,7 +43,7 @@ char argv0[MAX_PATH];
+ inline const char *getprogname() {
+ return GetModuleFileName(NULL, argv0, sizeof(argv0)) ? argv0 : NULL;
+ }
+-#elif !defined(__APPLE__)
++#elif !defined(__APPLE__) && !defined(__serenity__)
+ // N.B. getprogname() is an Apple/BSD-ism.
+ // program_invocation_name is a GLIBC-ism, but it's also
+ // supported by libmusl.
diff --git a/Ports/backward-cpp/patches/0002-backward-Pretend-to-be-Linux-with-some-modifications.patch b/Ports/backward-cpp/patches/0002-backward-Pretend-to-be-Linux-with-some-modifications.patch
new file mode 100644
index 0000000000..de5abcb105
--- /dev/null
+++ b/Ports/backward-cpp/patches/0002-backward-Pretend-to-be-Linux-with-some-modifications.patch
@@ -0,0 +1,69 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Andrew Kaster <andrewdkaster@gmail.com>
+Date: Sat, 11 Mar 2023 15:17:34 -0700
+Subject: [PATCH] backward: Pretend to be Linux, with some modifications
+
+---
+ backward.hpp | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/backward.hpp b/backward.hpp
+index ac7ad51738f8d13f07a6162d421b191696c9f84a..03f4f7546c4e59f3b17529c61a0f387e09e3731c 100644
+--- a/backward.hpp
++++ b/backward.hpp
+@@ -63,7 +63,7 @@
+ #elif defined(BACKWARD_SYSTEM_UNKNOWN)
+ #elif defined(BACKWARD_SYSTEM_WINDOWS)
+ #else
+-#if defined(__linux) || defined(__linux__)
++#if defined(__linux) || defined(__linux__) || defined(__serenity__)
+ #define BACKWARD_SYSTEM_LINUX
+ #elif defined(__APPLE__)
+ #define BACKWARD_SYSTEM_DARWIN
+@@ -213,7 +213,9 @@
+ #endif
+ #include <signal.h>
+ #include <sys/stat.h>
++#ifndef __serenity__
+ #include <syscall.h>
++#endif
+ #include <unistd.h>
+
+ #if BACKWARD_HAS_BFD == 1
+@@ -737,7 +739,7 @@ public:
+ protected:
+ void load_thread_info() {
+ #ifdef BACKWARD_SYSTEM_LINUX
+-#ifndef __ANDROID__
++#if !defined(__ANDROID__) && !defined(__serenity__)
+ _thread_id = static_cast<size_t>(syscall(SYS_gettid));
+ #else
+ _thread_id = static_cast<size_t>(gettid());
+@@ -4140,7 +4142,9 @@ public:
+ SIGBUS, // Bus error (bad memory access)
+ SIGFPE, // Floating point exception
+ SIGILL, // Illegal Instruction
++#if !defined(__serenity__)
+ SIGIOT, // IOT trap. A synonym for SIGABRT
++#endif
+ SIGQUIT, // Quit from keyboard
+ SIGSEGV, // Invalid memory reference
+ SIGSYS, // Bad argument to routine (SVr4)
+@@ -4231,6 +4235,8 @@ public:
+ error_addr = reinterpret_cast<void *>(uctx->uc_mcontext->__ss.__rip);
+ #elif defined(__APPLE__)
+ error_addr = reinterpret_cast<void *>(uctx->uc_mcontext->__ss.__eip);
++#elif defined(__serenity__) && defined(__x86_64__)
++ error_addr = reinterpret_cast<void*>(uctx->uc_mcontext.rip);
+ #else
+ #warning ":/ sorry, ain't know no nothing none not of your architecture!"
+ #endif
+@@ -4245,7 +4251,7 @@ public:
+ printer.address = true;
+ printer.print(st, stderr);
+
+-#if _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
++#if (_XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L) && !defined(__serenity__)
+ psiginfo(info, nullptr);
+ #else
+ (void)info;
diff --git a/Ports/backward-cpp/patches/ReadMe.md b/Ports/backward-cpp/patches/ReadMe.md
new file mode 100644
index 0000000000..55e1b03561
--- /dev/null
+++ b/Ports/backward-cpp/patches/ReadMe.md
@@ -0,0 +1,12 @@
+# Patches for backward-cpp on SerenityOS
+
+## `0001-test-Don-t-use-program_invocation_name-on-Serenity.patch`
+
+test: Don't use program_invocation_name on Serenity
+
+
+## `0002-backward-Pretend-to-be-Linux-with-some-modifications.patch`
+
+backward: Pretend to be Linux, with some modifications
+
+