[gwp_asan] Use __sanitizer_fast_backtrace on Fuchsia

Reviewed By: phosek, cryptoad, hctim

Differential Revision: https://reviews.llvm.org/D101407

GitOrigin-RevId: 3341324d82f1278f91b8704048aff414abeaacdb
diff --git a/optional/backtrace_fuchsia.cpp b/optional/backtrace_fuchsia.cpp
index 879312a..09b0325 100644
--- a/optional/backtrace_fuchsia.cpp
+++ b/optional/backtrace_fuchsia.cpp
@@ -8,12 +8,18 @@
 
 #include "gwp_asan/optional/backtrace.h"
 
-// GWP-ASan on Fuchsia doesn't currently support backtraces.
+#include <zircon/sanitizer.h>
 
 namespace gwp_asan {
 namespace backtrace {
 
-options::Backtrace_t getBacktraceFunction() { return nullptr; }
+// Fuchsia's C library provides safe, fast, best-effort backtraces itself.
+options::Backtrace_t getBacktraceFunction() {
+  return __sanitizer_fast_backtrace;
+}
+
+// These are only used in fatal signal handling, which is not used on Fuchsia.
+
 PrintBacktrace_t getPrintBacktraceFunction() { return nullptr; }
 SegvBacktrace_t getSegvBacktraceFunction() { return nullptr; }