diff --git a/libc/bionic/strsignal.cpp b/libc/bionic/strsignal.cpp
index 1cdfec1..5637431 100644
--- a/libc/bionic/strsignal.cpp
+++ b/libc/bionic/strsignal.cpp
@@ -26,20 +26,43 @@
  * SUCH DAMAGE.
  */
 
+#include <signal.h>
 #include <string.h>
 
 #include "bionic/pthread_internal.h"
 
-extern "C" const char* __strsignal_lookup(int);
-extern "C" const char* __strsignal(int, char*, size_t);
+const char* const sys_siglist[NSIG] = {
+#define __BIONIC_SIGDEF(signal_number, signal_description) [ signal_number ] = signal_description,
+#include "private/bionic_sigdefs.h"
+};
 
-char* strsignal(int signal_number) {
-  // Just return the original constant in the easy cases.
-  char* result = const_cast<char*>(__strsignal_lookup(signal_number));
-  if (result != nullptr) {
-    return result;
+const char* const sys_signame[NSIG] = {
+#define __BIONIC_SIGDEF(signal_number, unused) [ signal_number ] = #signal_number + 3,
+#include "private/bionic_sigdefs.h"
+};
+
+extern "C" __LIBC_HIDDEN__ const char* __strsignal(int signal_number, char* buf, size_t buf_len) {
+  const char* signal_name = nullptr;
+  if (signal_number >= 0 && signal_number < NSIG) {
+    signal_name = sys_siglist[signal_number];
+  }
+  if (signal_name != nullptr) {
+    return signal_name;
   }
 
+  const char* prefix = "Unknown";
+  if (signal_number >= SIGRTMIN && signal_number <= SIGRTMAX) {
+    prefix = "Real-time";
+    signal_number -= SIGRTMIN;
+  }
+  size_t length = snprintf(buf, buf_len, "%s signal %d", prefix, signal_number);
+  if (length >= buf_len) {
+    return nullptr;
+  }
+  return buf;
+}
+
+char* strsignal(int signal_number) {
   bionic_tls& tls = __get_bionic_tls();
   return const_cast<char*>(__strsignal(signal_number, tls.strsignal_buf, sizeof(tls.strsignal_buf)));
 }
