From b1e2ca04a016b1ea24344d3cfb2eb3370863eb5e Mon Sep 17 00:00:00 2001
From: Zach DeCook <zachdecook@librem.one>
Date: Tue, 5 Mar 2024 17:51:34 -0500
Subject: [PATCH] CrashReporter: Fix compilation with musl libc (#4805)

It can be assumed this doesn't function correctly:
my 'configuration does not support execinfo.h', so I have no backtrace to test against
---
 src/debug/CrashReporter.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/debug/CrashReporter.cpp b/src/debug/CrashReporter.cpp
index cf648191..a4bdc761 100644
--- a/src/debug/CrashReporter.cpp
+++ b/src/debug/CrashReporter.cpp
@@ -108,18 +108,23 @@ void CrashReporter::createAndSaveCrash(int sig) {
 
     std::string addrs = "";
     for (size_t i = 0; i < CALLSTACK.size(); ++i) {
+#ifdef __GLIBC__
         // convert in memory address to VMA address
         Dl_info          info;
         struct link_map* linkMap;
         dladdr1((void*)CALLSTACK[i].adr, &info, (void**)&linkMap, RTLD_DL_LINKMAP);
         size_t vmaAddr = (size_t)CALLSTACK[i].adr - linkMap->l_addr;
+#else
+        // musl doesn't define dladdr1
+        size_t vmaAddr = (size_t)CALLSTACK[i].adr;
+#endif
 
         addrs += std::format("0x{:x} ", vmaAddr);
     }
 #ifdef __clang__
     const auto CMD = std::format("llvm-addr2line -e {} -Cf {}", FPATH.c_str(), addrs);
 #else
-    const auto CMD   = std::format("addr2line -e {} -Cf {}", FPATH.c_str(), addrs);
+    const auto CMD = std::format("addr2line -e {} -Cf {}", FPATH.c_str(), addrs);
 #endif
 
     const auto        ADDR2LINE = execAndGet(CMD.c_str());