[lld] Error on unsupported split stack (#88063)

Targets with no `-fstack-split` support now emit `ld.lld: error: target
doesn't support split stacks` instead of `UNREACHABLE executed` with a
backtrace asking the user to report a bug.

Resolves #88061

GitOrigin-RevId: 96aac6798bf6addcedebbb893669cc9c61fcf9c7
diff --git a/ELF/Target.cpp b/ELF/Target.cpp
index d879a42..3e22164 100644
--- a/ELF/Target.cpp
+++ b/ELF/Target.cpp
@@ -141,7 +141,7 @@
 
 bool TargetInfo::adjustPrologueForCrossSplitStack(uint8_t *loc, uint8_t *end,
                                                   uint8_t stOther) const {
-  llvm_unreachable("Target doesn't support split stacks.");
+  fatal("target doesn't support split stacks");
 }
 
 bool TargetInfo::inBranchRange(RelType type, uint64_t src, uint64_t dst) const {
diff --git a/test/ELF/riscv-split-stack.s b/test/ELF/riscv-split-stack.s
new file mode 100644
index 0000000..e6ebf9f
--- /dev/null
+++ b/test/ELF/riscv-split-stack.s
@@ -0,0 +1,24 @@
+# REQUIRES: riscv
+
+# RUN: split-file %s %t
+# RUN: llvm-mc -filetype=obj -triple=riscv64 %t/main.s -o %t.64.o
+# RUN: llvm-mc -filetype=obj -triple=riscv64 %t/callee.s -o %t.64.2.o
+# RUN: not ld.lld %t.64.o %t.64.2.o -o %t.64 2>&1 | FileCheck %s
+# CHECK: error: target doesn't support split stacks
+
+#--- main.s
+        .globl  _start
+        .type   _start,@function
+_start:
+        call    test
+	ret
+end:
+        .size   _start, end-_start
+        .section        ".note.GNU-split-stack","",@progbits
+
+
+#--- callee.s
+        .globl  test
+        .type   test,@function
+test:
+	ret